From e6a5fe8cb9e8063d9da4a51ae0d196473d930de8 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sun, 24 Jan 2021 19:28:22 +1300 Subject: [PATCH 01/37] Test case for awl-fix_abookquery_paramtextmatch --- .../2038-REPORT-addressbook-query.result | 606 ++++++++++++++++++ .../2038-REPORT-addressbook-query.test | 34 + 2 files changed, 640 insertions(+) create mode 100644 testing/tests/carddav/2038-REPORT-addressbook-query.result create mode 100644 testing/tests/carddav/2038-REPORT-addressbook-query.test diff --git a/testing/tests/carddav/2038-REPORT-addressbook-query.result b/testing/tests/carddav/2038-REPORT-addressbook-query.result new file mode 100644 index 00000000..99000cae --- /dev/null +++ b/testing/tests/carddav/2038-REPORT-addressbook-query.result @@ -0,0 +1,606 @@ + + + + /caldav.php/user1/addressbook/andrew_mcmillan.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +UID:a nice UID +X-SKYPE;X-EVOLUTION-UI-SLOT=1;TYPE=HOME:karora__ +X-JABBER;X-EVOLUTION-UI-SLOT=3;TYPE=HOME:karora@irc.oftc.net +TEL;X-EVOLUTION-UI-SLOT=3;TYPE=CELL:+64 22 123 4567 +TEL;X-EVOLUTION-UI-SLOT=2;TYPE=HOME,VOICE:+64 4 123 4567 +TEL;X-EVOLUTION-UI-SLOT=1;TYPE=WORK,VOICE:+64 22 123 4567 +EMAIL;X-EVOLUTION-UI-SLOT=2;TYPE=HOME:andrew@mcmillan.net.nz +EMAIL;X-EVOLUTION-UI-SLOT=1;TYPE=WORK:andrew@morphoss.com +LABEL;TYPE=HOME:16 Kaka Place\nPorikana\n4173\nNew Zealand +ADR;TYPE=HOME:;;16 Kaka Place;Porikana;;4173;New Zealand +X-MOZILLA-HTML:FALSE +X-EVOLUTION-VIDEO-URL: +FBURL:https://davical.morphoss.com/freebusy.php/andrew@morphoss.com +CALADRURI:mailto:andrew@morphoss.com +CALURI:https://dotcal.com/karora +X-EVOLUTION-BLOG-URL:http://andrew.mcmillan.net.nz/ +CATEGORIES:Developer,Personal,Debian, +X-EVOLUTION-FILE-AS:McMillan\, Andrew +N:McMillan;Andrew;Watson;; +FN:Andrew Watson McMillan +NOTE:Primary author of DAViCal CalDAV Server. +X-EVOLUTION-SPOUSE:Heather Buchanan +X-EVOLUTION-ANNIVERSARY:1989-04-22 +BDAY:1958-07-26 +NICKNAME:karora +X-EVOLUTION-ASSISTANT: +X-EVOLUTION-MANAGER: +ROLE:Geek +ORG:dotCal;;Porirua +TITLE:Chief Technology Officer +URL:http://andrew.mcmillan.net.nz/ +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/donald_kelly.vcf + + + some valid etag + BEGIN:VCARD +FN:Donald Kelly +N:Kelly;Donald;;; +ORG:Esposo Designs Ltd +ADR:;;25 Rintoul St;Newtown;Wellington;;New Zealand +EMAIL;TYPE=internet:donald@example.co.nz +TITLE:Proprietor +TEL;TYPE=work:+64 4 347 4747 +TEL;TYPE=cell:+64 2 1234-4321 +X-MOZILLA-HTML:TRUE +URL:www.example.co.nz +VERSION:2.1 +UID:a nice UID +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/van_houtte.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +PROFILE:VCARD +FN:Vincent VAN HOUTTE +N:VAN HOUTTE;Vincent;;Dhr.; +BDAY:1978-12-31 +TEL;TYPE=CELL,VOICE:0486 11 22 33 +ADR;TYPE=HOME:;;Brusselsestraat 108;DENDERMONDE;;B-9200 +LABEL;TYPE=HOME:Brusselsestraat 108\nB-9200 DENDERMONDE +TEL;TYPE=HOME,VOICE:052 11 22 33 +TEL;TYPE=HOME,FAX:052 44 55 66 +EMAIL;TYPE=HOME:vvh@gmail.no +ORG:Advocatenkantoor Suy\, Van Baeveghem & Van Houtte;; +TITLE:Advocaat +ADR;TYPE=WORK:;;Brusselsestraat 108;DENDERMONDE;;B-9200 +LABEL;TYPE=WORK:Brusselsestraat 108\nB-9200 DENDERMONDE +TEL;TYPE=WORK,VOICE:052 11 22 33 +TEL;TYPE=WORK,FAX:052 44 55 66 +EMAIL;TYPE=WORK:vvh@gmail.no +UID:a nice UID +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/andresenesq.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//ALAB//NOSGML Version 0.9//DE +UID:a nice UID +X-ABUID:ADDEEFEF-162A-260A-DEA3-1DA8-8A913187:ABPerson +FN:Sven Joseph Klaus Michael Andresen\, Esq. +SORT-STRING:Andresen\, Esq.\, Sven Joseph Klaus Michael +N:Andresen\,Esq.;Sven;Joseph\,Klaus\,Michael;;Dr.\,Prof.;Esq. +X-DISPLAYNAME:Svenni +X-INITIALS:SA +X-INITIALS:SHA +NICKNAME:Svenny\,Sveny +PHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHB + wcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zN + DL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM + jIyMjIyMjIyMjIyMjIyMjL/wAARCAFQATYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAA + AAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxF + DKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW + mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDx + MXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAA + AAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiM + oEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYW + VpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w + sPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiig + AooooAKKKKACiiigAooooAKKKKACiiigAoorM17xBpnhnSZdT1a7S2tY/4m6seyqOpJ9BQBp + 1zuvePPC/hkMNW1q1glXrCrb5f++Fy36V5Hf+L/ABr8SXkj0hz4d8PMSFnOfPnX6jn8FwO2T + U2i/DfwxpKq89r/AGjc9WluzuBP+7938wfrQBr3X7Q+gGRotK0XVr+QdPkVA305J/Ssyb45e + KWbdb/D67WI9PMMrE/iIxXXQSQWsKxW8UcMS9EjUKB+AqT7b70AeeXP7Q3iGxkUXnhKKDP8M + ryIT+Yq/Y/tLWDlRf8Ahu5hHcwXKyfoVX+ddk9ykiFHCsp6qwyDXJa54B8Ma4Hd7BbS4b/lt + a/uzn1IHyn8RQB3WgfFzwX4iZI7fWI7a4fgQXo8ls+mT8pP0Jrt6+K/FngLUvCxM5YXVgWwt + xGMbfQMP4f1HvWt4F+LniDwbPDbyTvqGkKcNZzNnav/AEzY8r9OntQB9fUVjeGPFOk+L9Gj1 + PSLkSwsdrqRh4m7qw7H/IyK2aACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK + KACiiigAooooAKKKKACiiigAooooArahf22l6dcX95KIra3jaWV26KoGSa+fbm6n+I2vr4j1 + pGTSYSRpmnP02Z++47k4z78dgM9b8Ztba6u9L8HwPiO6/0zUMHnyUPyr9GYH/vkVzC3Soiom + FVRgAcACgDohdhQAMADgAUfbPeue+2+9H2z3oA6H7Z70fbfeue+2e9H233oA6D7b70fbPeue + +2+9H233oA3pp4riF4ZkWSJ1KsjDIYHsRXhXjPw6PD+sEQZNlcZeA/3fVfwz+RFer/bPeuW8 + fKl34d80jLwSqyn0B4P8x+VAHN/D7x1feA/ESXsBaSylIS8ts8Sp6j/AGhyQf6E19lWN9ban + YW99ZyrLbXEayxSL0ZSMg18EV9Gfs7eLWutOvfC91KWe1/0i0DH/lmTh1HsGIP/AAM0Ae50U + UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFVd + TvBp+lXl62NtvA8pz6KpP8ASgD5h1nXf7a+J/ibUDJuSOX7NDzx5aEqMex25/GpPtvvXneh3 + rRX8m9iTMDknuev+NdH9t96AOg+2+9H2z3rn/tvvSfbfegDoftnvR9t96577Z70fbfegDoPt + vvR9s965/7b70n233oA6H7Z71ieK7//AIkbxZ/1rqv5HP8ASoftnvXNa1qH225VFOY4+B7nu + aAMyuq+G+vf8I38QdG1Fn2wicRTHt5b/IxP0Bz+FcrRQB9/0VkeFdU/trwlpGpk5a6s4pX/A + N4qN365rXoAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo + ooAK5v4gzeR8OfEj/8AUNnUfihH9a6SuW+JIz8NPEY/6cJT/wCO0AfFSsVYMpwRyDXe+FPCO + s+Krf7TCqW9qDt8+bIDEddoHJ/l71yWhaVLrmu2WmQ53XMyxkj+Edz+Ayfwr6us9PgsLOG0t + YljghQJGi9AB0oA8P174ea3oto93E0d7BGMv5OQ6j12nqPpmuI+2+9fVvlV85/FLwz/AMI54 + paW3QJZXwM0QXgK38aj6E5+jCgDnvtnvV3Sba81vUobCxjMk8pwB2A7knsBXN5PrXvHwY8OL + a+HpNblQG4vWKRseqxKcfqwP5CgDT0T4b6Pp0Ctfp9uuiPmaQkID7L/AI5rSvvA/h2+hMbab + HCT0eD92w/Lj862NX1jTdCt1n1K6WBHJCDBZnI5OFAJP4Co9D17SfEds0+k3sdyiEBwAQyE+ + qkAii4WPBvHnhbUPCcy7XM1hOcR3IGCD/db0P8AP88cNX1p4g0G38QaHd6ZcKNs6EKxH3G/h + YfQ4NfKFzbyWl1NbTLtlido3HoQcGgCKiiigD7D+DN39r+E+hsTlo1kiPttkYD9MV3leUfs9 + XJn+GskZ6QahLGP++Ub/wBmr1egAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi + iigAooooAKKKKACiiigArmviGhf4ceJAP8AoGzn8kJrpax/FkP2jwbrkGM+Zp9wn5xsKAPlX + 4Owed8R7I/884pn/wDHCP61658QdcOn3OmaUszxJd+ZLO0blGKJjChhyAS3OOykd68S+GepJ + pXxF0a4kcJG8xhck4GHUpz+LCvSPj9ZXFtJoerQ7hGvmwMwHCk4I/MbvyqW/eKWxo+C/Egj8 + WDQvOkks72FpLZZHLmKROWUEnO0rzjsRx1qr8ebBT4b0u943xXZiH0dCT/6AK4L4aRajd+Nd + P1UxO9rZMxkkHAGVIwPUnI4r2zXNLTxhFFbahZrJbxSeakQJ4bBGTgjPBNctfF06MrPV9kdF + HC1KsbrRHyrX1r4HtVg8CaCiAAGxhfj1ZAx/UmsGX4b6ME+fRbcDHURD+lb2m3M2j2VvZQwo + 9pboI40BO5VAwBn6Vh/adJu0k0bf2fO14tM851HxUs/iTU7ksN0c72sXOdscZ24H1ILfj7Vz + Wi66NL+Ldjc2mFi1B0guUU4VvMO3J/HDfUVieKtE1rRNUvZzBIbGW4eSOZfmADMSM+h571U8 + EWU+teP9FgAZ2a8jkfHZEO5j+Cqa9CM4zjeLujilCUZWkrH1h5VfKfxGt1tfiHrcaYwbkvx6 + sAx/U19c+VXxz4x1JNX8ZaxfxMGimupDGw7oDhT+QFKDuElYxKKKK0IPp39nB8+AtST01Nz+ + cUf+FexV4v+zdn/AIQ3VvT+0P8A2mle0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB + RRRQAUUUUAFFFFABRRRQAUUUUAFU9VTzNHvk/vW8g/8dNXKo61crZaFqF0/3YbaSQ59ApP9K + APg8EggjrX0rpWtQePvhlBYa5ps0l1Igjdn+XcygbZlb36/XI6dfLvhf4Og1yeTUr1BJBC+y + ONhlWYDJJHcDI4759q92htY4Iwsa4FeHmeZqi/Zw+I9PCYRSXPPbsVdA8O2um2cVvBEsNvGM + BV/z+tdNGUiQKgCqOwqlDJhAvQipPMryqeLivevqzsqJy06Fzzaq3FrDcZONr/3hTfMo8yrl + i4yVpExi4u6Me709clJVDAjGfUVk6P4d07w7rb6vp2nWwunQxsQCuFJycDOAeOuK6WdvNIHY + VDsriWNlSk/ZvQ6Wo1I++rmN4/8XX0Hgu9TStPuDqEy+USoz5SEfM47njgYHBOe1fLJGDzX1 + 40UU6FTtYdOO1eBfFTw9Do+uR3VumxLvcXA6bxjJ9sgg/nX0GWZl7eXsprU8vGYVRXPA4Cii + ivbPNPpn9m4f8UTqh/6iJ/9FpXs1eIfs13G7w5rdtn/AFd2kmP95Mf+y17fQAUUUUAFFFFAB + RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVyfxOvPsHwy8RTZxusn + iz/AL/yf+zV1leP/tEa0LHwPa6Ur4l1G6GV9Y4/mP8A49soA4f4L6vALK5052AljlL4PdWA5 + /MfqK9XeCS2JkiBeM8tH3HuP8K+TtK1W70bUYr6zk2SxnvyGHcEdwa+ofD2rXVz4d07UruAi + C6gWQMp3bMjofavlc6wFVTdemrp7o9fCYhSgoPdGxEUmQPGwZT6VJtNMNpHN+/tZdjNzuXkN + 9RRm9j4a3SX/aR8foa+Wc9fdf3nVzD9ppNnrTfNuj92yI/3pAP5UfZbqb/XTCNf7sX+Jpc7X + xMXMRSzxxtsUF5T0ReT+PpTBayz83DYX/nmh4/E96vxWsUC7Y0Cjv6moJr63hfy1Jll6BIxk + 1UKkpvlpK7Hz9hvlxW8ROFRBycDFfP3xd1lb/xDFYoCPsqlnz6uAQP++Qv519AxWNxfSCS9X + yoFORB3P1rxH48aMLPxPY6pGgWO9t9jYH8cfH/oJT8q+uyXL6lKXtau5w4uunDkR5RRRRX0h + 5h7V+zhrItfFGqaO7ALe2wlTPd4z0/75dj+FfStfDfg/wAQy+FPFum63EC32WYF1H8SH5XH4 + qSK+37W5hvbSG6tpBJBPGskbr0ZSMgj8DQBLRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ + AUUUUAFFFFABRRRQAUUUUAFFFFABXyR8bvFC+I/iDPBbvutNMX7IhB4ZwSXP/fXH/ARX0H8U + fGieCfB1xdxOP7QuMwWan++R97Hoo5+uB3r41ZmdyzMWZjkknJJoASvs/wlphtPDGl2U6D/A + EeziidSOrBADXyR4U006x4t0qw27lmukDj/AGAct+gNfZ9owFuPcmpkk9GUtDHu9Lm02U3On + IZIG5kt/T3WnWt7bXY+RwH7o3DD8K3d9UbvS7C9YvPbqXP8a/Kf0r5zMuH6WKfPTfLI7KeK0 + tP7yLYKp3Oo2tsdpffJ0CR8k1N/wjmn9/OI9DIcVetLCzsf+PeBEP8Ae6n8zzXmUOFZ8372e + ho8RTW12ZUOn32qHfclrS2PSNfvt9fStqz0+1sE228Kp6t1J+pqXzKN9fU4TAUMLHlpo5ale + c9NkRXceV8wdR1ry740aOdU8BS3KJul0+VbgYHO37rfhhs/8Br1SR8xOPUGsS8tob6yns7hd + 8M8bRSL6qwwR+Rrr2dzLofF9FXtZ0ybRdavdMn/ANZazNETjrg8H8Rz+NUa0ICvpP4A+OxqW + lN4Uv5R9qslL2bMf9ZDnlfqpP5H2r5srV8N3OqWXiC0u9Fdl1GBjLDt6sVBJGO+RkY79O9AH + 3VRXM+BfGVl448NQ6pbYjnH7u6t88wyDqPp3B9PxrpqACiiigAooooAKKKKACiiigAooooAK + KKKACiiigAooooAKKKKACiiigAqtqF/a6Xp89/fTpBa26GSWV+iqOpqzXgnjbxDN8SvET6Dp + 07J4W06X/S7iM/8fko/hB7qO3b+Ln5aAPLfiR4zvvHPiI6rJFNFpilorCNxgKgPJ9NxyCcZ6 + gdAK42uj8Z6tb6nrQhsESPT7JPs9sqfdIB5b8T+mK5ygD1P4G6P9r8UXequuUsYNqH0kfgf+ + Oh/zr6LtpP3ZHoa83+E2h/2L4GtpJF23F+ftT564P3B/wB8gH8TXeRybG68Goe5XQ0vMo8yq + fm0eb70AXPMo8yqfm+9J5tAFzzKPMqn5tHm0AWpJcRtz2qjuokl3DGajzQB4J8cdC+x+I7XW + YkxHfRbJCP+eiYH6qV/I15XX1L8RfD/APwkngy9tY03XMI+0W/rvXsPqMj8a+WqpCYVPZ3c1 + hewXdu22aFxIh9wc1BRTEey6V4gl8K6nbeOtEjaTSr4BdWsUPvywHqDnn19mNfR+l6nZa1pd + tqWnXCXFpcoJIpE6EH+R7EHkEEGvkb4da0kVxPod3hra7BKK/I3Y5H4j+XvXe+A/FMnw18U/ + wBgalMT4Z1KTdbTSHi1kPqf7vQH8G45yAfQ9FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA + BRRRQAUUUUAFFFYHjPxVa+DfDNzq9yPMZPkghBwZpT91R/M+wNAHHfFjxfcwJF4P0KXbq2pJ + m4mX/l1t+jNnszcgd8Z6Eqa8p8ValbeEfCsWi6adk8yFAQfmC/xOfc/19q0bR5LCC/8Q67P5 + mpXZM93Kf4fSNfYcAD8PSvOLlpPED6r4g1FmS2hXy4lB6yNkRxj6csfZT3NAHOVs+FNDfxH4 + msdLXOyaQeaw/hjHLH8gfxxWNXtnwS8P+RZXevzJ885+z25P9wHLH8Tgf8AATQB67GqRRJHG + oVEAVVHQAdBTs1Huqzb2NxcgFVwp/ibgVNhke8+tG8+tasWjxKMyuzH24FW0sraMcQof94Z/ + nTsFzn959aN59a6QRRL0jQfRRQYYm6xIfqoosFzm959aN59a3pLC1k6wqP93iqk2jqRmGQg+ + jc0WC5l5ozTp7aa2P7xCB2Yciod1KwXJN1fMHxG8P8A/CO+M7yCNNttcH7RBjptY8gfQ5H4V + 9N7q89+Lvhv+2fC/wDaMCZu9OzJwOWiP3x+GA34H1poDwKxtTfX0FqJooTM4QSTNtRSe5PYU + uoafdaXfTWV7A0NxE210bt/iPeq1drptzH400qPQ77b/bVshGm3THBmUc+Q5/8AQSfp9WI42 + GaS3njmiYpJGwZWHUEcg165utfGfhZPNwrSL1HWKUf5/EGvI5YpIJnhlRkkRirIwwVI6giuo + 8D6ybHUWsZWxDc/dz2ft+fT8qAPcvgx48uLgP4K15wup2C4tJGPM0QH3fcqOR6r9CT7FXyh4 + jt7mGa21/SpGi1LT2EiunUgHP44/lmvorwJ4utvG3hS11eHakxHl3MQ/wCWco+8Pp0I9iKAO + looooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvnfxb4i/wCE68ctLE+7Q9FcxW2CC + s8/8UnuB29gD3Nei/GDxdJ4c8KCwsXI1XVmNtb4PKKeHf2wDge7A9q8Ykmg8OeHjswRBHhc/ + wAbn1+pNAGL411abU9Qg0KxDSNvUOqdXkP3V/DP5n2rN8YvFpv2TwzaOrRaapNy69Jblsbz7 + 44UfQ1d8Gj+zrXVvGV4vmNZqUtd4/1ly/APvjOT9c1xcsjzSvLIxeR2LMxOSSepoAn0+xn1P + Ubextl3T3EixoPcnFfV+jaZFpOk2el2ikx28axrgcsR1P1Jyfxrxr4M+HvtOp3GvTpmO1HlQ + ZHWQj5j+CnH/Aq+h9MtRDGJnHzsOPYUAS2WmJEA84Dv/d7D/GtLIqHdRuoAn3Ubqg3UbqAJ9 + 1G6oN9G+gCfdSbqh30b6AJm2spVgCD1BrIvtMABkth9U/wrR30b6AOYzTXCyIyOoZGGGUjII + 9K0dUtdp+0IOCfnHv61mZosB8v+NPDreGPFF3YbT9nJ8y3Y9426flyPqKwopZIJkmidkkjYM + jqcFSOQRXvfxc8OjVfDX9pwpm60/LkgctEfvD8OD+B9a8BoA7rxLbR+KPDMPi+0iVbuNhb6r + GnA38YlA7A5Gfcj3NcMrMjBlJDA5BHY12fw11iGz199Jvfm0/V0+yzITxuPCn8yR/wKuf8AE + WjS+H9fvNLmOTA+Fb+8p5U/iCDQB3+j6qNS0uG4ON5G2Qf7Q6/4/jVz4f8AiX/hAPiEtvK4T + Q9XISTJwsTZ+VvbaT/3y1cJ4SvjFcy2jH5ZBvX/AHh/9b+VbmuWo1DTXUD97H88ZHXI7fjQB + 9f0V578HPGJ8W+B4RcybtQ08i2uMnJYAfI5+o4yepU16FQAUUUUAFFFFABRRRQAUUUUAFFFF + ABRRRQAUUVw3xc8S/8ACM/DvUZ4323V2PskH+84IJ9sKGOfUCgDxbxLr48Z/Ea/1hW36fYf6 + JY+hAzlh9SSf+BD0rkfGd80j21gh/6aMPU9B/WtLR4fsWlwRHhiu5vqeaq+GdPPiL4nW8bDd + DDN5knGRtj5wfYkAfjQBN49jHh/Q9D8KR4DQxfbLvH8Uz5HP0+YfQiuFijeaVIo1LSOwVVHU + k9BXQ+P9QbUvHWrzE8RzmBfonyf0z+Nafwp0P8AtjxtbyyLmCxU3L5/vDhB/wB9EH8DQB7v4 + O8PRaFomn6SuCY1zKw/ic8sfzz+GK7fNZFiMXIPsa080ASbqN1R7qN1AEm6jdUe6jdQBJuo3 + VHuo3UASbqN1R7qN1AEm6jdUe6jdQA6RRLGyN0YYrnmQqxU9QcVv7qx7gZuJD/tGi4FSWGOe + F4pUDxupVlPQg8EV8seKNFbw94lvtLbJWGQ+WT/ABIeVP5EV9Xba8Z+N+h7J9P1yNeHBtpiP + UZZP03fkKAPIo5HilSSNiroQysOoI6GvTvijbLquh6D4riUA3UCxT46Biu4fjnePwFeX17DY + wf2x8ApYtoeW0DupPbZIW/9BJFAHk1jOba+hmBxscE/Tv8ApXd+d7155XX21wXtYmJ5KAn8q + AOq+EniD/hFfigtg7FbHVsQFecB2OYzj/e+X6Ma+pq+H9XkeGe1vYWKSxONrKcEEcj+VfZfh + rWY/EPhrTdXiK7bu3SUhTkKxHzL+ByPwoA1aKKKACiiigAooooAKKKKACiiigAooooAK+cf2 + gdY/tHxnpHh9JAYbSMSyqOzyHof+Aqp/wCBV9HV8Z+KtWbXPijrGoM+9TdSLGf9hfkT9AKAL + /m+9bfwSsxNq+taiT8yIsQH++xY/wDoArlvNruvgcq/Ztex98Txg/TDY/rQB43qc5utVvLg9 + ZZ3f82Jr234IaT9n8O32psuGu5xGp9UQf4s35V4trVq1lruoWrfehuZIz+DEV9OeAtP/s7wJ + otvjBNsspHu/wA5/VqTGjo7Y7Z1P4Vo5rOAIOR2q6rblBHelcCTNGaZmjNMB+aM0zNGaAH5o + zTM0ZoAfmjNMzRmgB2aM03NGaAHFsDJrLb5mLepzV6Z8R47mqm2lcCPbXK/EfSv7V8BapEFz + JDH9oT2KHcf0BH41122mywpNC8UihkdSrKe4PBouB8a17r4Etnb4OXikcTxXW33GGX+YNeV6 + r4K8Q6Zd3CNo2oNBFIyrMtuxVlBIByBjnrXukGnt4d+FElo52S2+mSF88YkKFiP++iaoR81V + vWcuLSIei1g1pxSbYUX0AoAsai3mWbj0IIr6R+AGqG++Gq2rkbrG6khAHXacOP1dvyr5lmk3 + QuPavcP2Z5v3XiOAsfvW7hf+/gJ/lQB77RRRQAUUUUAFFFFABRRRQAUUUUAFFFFAFXU71dO0 + q8vnGVtoHmI9lUn+lfDFhLnUGkPVtx5r7X8YHb4J18+mnXB/wDIbV8P2z7LhG98UAdD5td98 + FrxYfEOtadgf6RElwp/3SQR/wCP/pXmfm1f0DXH8PeJbDWEBIt5MSqvVozww/ImkBt/Fzw9J + p3jlrmOPEGpgSxkdN/CuPrnB/4FX0XDAlvBHDGMJGoRR6ADArnvEGg6f420OyljkVwkkd3az + r+Bx9COPy9K6jFS2UkMxUkTY+U0m2jFK47E1FMB9aWi4rDqKbRRcLDqKbRRcLDqKbRRcdh1I + TgZpM01st9KLhYjc7mzSYp+2jbRcLDNtcp4w8f6N4NVI7syT3kg3JbQ4LY/vMT90f5ANdeFr + wHw7dQ654u1vxLeATSG5KW2/ny17Y9wu0D8aa1E9DYb45yxMGn8KzRwnoxuj/WPFa0XxM8Fe + L9Pl0rVjPZJcLsdbnKqec8Op4/HFTPqiSIUfayMMFWGQa5PW/CWhasjNDCtjcdpIBhT9V6fl + iqsK5V8TfBu4hg/tHwtcjUrJhvEJcGTHqrDhx+R+teaTCW2meGeN4pUO1kdSrKfQg9K6e01j + xP8OtR2Wl4fs7HcEOXglH+6eh+mD713yT+HvjJpjwyRJpviiCMmNs8OB7/xL7Hle3ubAeKtL + lSM17Z+zV5n9u67j/VfZo93+9uOP614vf2NzpmoXFjdxmO4t5DHIh7EHFe8/szw/u/Ek5U9b + dA3/fwkfypiPfaKKKACiiigAooooAKKKKACiiigAoopGZUUsxAUDJJ7UAUNdW2k0K+gu3CQT + QPE5Poylf618/8Ah34Z6XYxK95EL656s0n+rU+gXv8Aj+lem67qz61feTCSLSI/L/tH+9/hV + vS9MR4xJKvyfwr6+9eHisZUq1PZUXoexh8NCjD2lVanHSeE9LkjKNplgQRjAgUfriuM8RfDO + 3ljaTSSbaYDPkuxZH+hPI/l9K94aytWXaYE/AYrG1LSxEhZctF+q1zXxGH99Suje9Ct7so2P + Ffh149m8I3p8Oa+HisA5CM45tmJ6H/ZPX8c173DLHPCk0MiSROoZHQ5DA9CCOorx34g+DhrF + k11bJ/xMLdSUIH+tUfw/X0/LvXBeC/iRq/g6QQA/a9NJ+a0kb7vuh/hP6e1e1h68cRDmW55W + IoOhPlex9R4pcVheF/F+jeLbPz9LuQZFH723f5ZI/qPT3GRW+K1MRuKMVJto20XCxHRUm2jb + RcZHRUm2jbRcCOipNtG2i4EeKMVJto20XAjxTJHSGNpJCFVRkk1PtrC8Q3BAitEP3/mb+lY1 + 6vsqbka0KXtJqJQur241J2RCY4B2H9fWvn/AMLXxsY7y1b5XWXJH6f0r6LsLMPhT9xevua+e + PiBpMvhbx7foiFbe5Y3EPoUc5wPo2R+FceWVp1JSc+p1ZhTjGMVHobn9r/7VJ/a/wDtVwn9q + t6mkOqt717B5Z0nibUI7jRnjfBYupT2Of8ADNcxoV9c6Zr1he2bEXEM6MmO5z0/Hp+NVbi6k + uXBc8DoPSu8+HHgi61W/h1i7QxWNu4eIsOZXHTHsD1P4euMq1aNKDnM0pUpVZKMQ+NEcKfEW + 4MQG5oImlwP4tuP5Ba9u+Auk/2d8M4Llsb7+4kuOnIAOwD/AMcJ/Gs288P2d8Wa6tba4Zupl + iDE/iRXSeHNdGi29vpc0CR2USiOLYuPLUdPqP1+tcNHNKU3yvQ7auXVILmi7ne0UisrqGUgq + RkEd6WvTPOCiiigAooooAKKKKACimu6xozuQqqMknsK4XVvEl3qMzQWLNFbjjcOGb3z2HtXP + iMTChG8jehh51pWidde6xYWGRcXKKw/gHLfkK5DWfEsuqqbSzRo4D94nqw/oKyUtFBy5LGtS + x08SDew2x+g714lXMatf3IKx61PBUqHvz1ZDptgZGC4+Qcu3rXSLhVCjgAYFQoqxqFQAKOwp + 26nRpqkvMmrN1H5Em6kbDKVYZB4INR7qN1auRnynOalZ7HZAOnKH2rwH4keGv7K1X+0raPFp + dsSwA4STuPx6/n6V9K6hEJYNwHzJz+FcL4r0SPWtIubJ8DzlyjH+FxyD+f9a5sPV+rV7fZZ0 + 1af1ijbqj5303U73R9QhvtPuZLe5ibckiHBH+I9u9fRfw6+KVr4sC6bqQS11dRwAcJcD1X0b + 1X8R6D5tngktriSCZCkkbFHU9QRwRSRSyQSpLC7RyIwZXU4KkdCDX0jSkjwLtM+2wKdtrzX4 + VfEdfFVoNJ1SQLrMC5DHj7Sg/iH+0O4/H1x6aBWL0NFqM20bafto20rjGbaNtP20baLgM20b + afto20XAZto20/bRtouAzbXJ6k3m69J3CYH5D/Guv21xQbzdSuZD3dv515uZztTSPRy6N5tm + 3aAJbr6nmub8d+CrXxppKwl1hvoMtbzkZxnqrf7J/Tr7Ho0OEUegp+6uOlUdOzj0OipBTumf + KmreB/Emi3DRXekXRA6SRRmRGHqGXI/rS6Z4F8T6vIEtdFu8H+OWMxJ/wB9NgV9V7qXdXof2 + lK22pxfUY33PLPB/wAGLPTpUvfEUkd7OvK2qZ8pT/tE8t9OB9a9GubJIIwYVCxjjYOij2q8D + TZzmB8+lefiqzrJuZ10YKk/dMkCmTwCWEjHzAZFWAtOC14vtLO53uR0Hg++a50toHbL27bR/ + unp/UfhXRVwnhab7J4glticLMpAHuOR+ma7uvtMBV9rQTPncbT5Kzt11Ciiiu05QooooAKKK + KAOf8YXLW+i7FODM4Qn25J/lXIW6BIV9SMmuq8bJu0iFv7sw/ka5uIboIz6qK+ZzibVWzPey + 2yo38xK30wqKo4AHFYZWtK1m8yIKT8y8GuPCVEm0dGIV0mW91G6os0m6u7nOXlJd1JuqPdSb + qOYfKSFsjFYd9bYLx491rX3VDcxiZOPvDpWFZcy03RrSfKz55+KHh82eprq8KYhufllwPuyD + /ED8wa8+r6c8QaNb6rp89pcoTDMNrY6qexHuDXzprmjXOg6rNYXS/Mhyr44dezCvZy7FKrT5 + Hujzcfh+SfOtmRaVqd3o2q22o2UpjubeQSIw9R2PqD0Ir7F8N61D4k8OWGrwABLqIOVBzsbo + y/gwI/Cvi6vpv4Dec3w6bzc7BfSiLP93C9Px3V3VFpc4oPWx6ZijFSYoxWFzUjxRipMUYouF + iPFGKkxRii4WI8UYqTFGKLhYjIwCa4KzO55W9TXd3TiKzmkP8EbN+QrhrEfIx9TivJzSWiR6 + eXL4mbAbil3VCDTwa872ljraJQacDUYp4qXVIaJBUdw3yBfWng1A53vnt2rnrV7RsKK1IgtP + C04LTwtedKZo5GdPI1hqdteqMhWBI9cdR+Ir0WCaO4gSaJgyOAykdxXEzW63ELRv0Pf0p3h3 + VZNLvP7Nuz+5dvkY9FJ/oa+iyTMIr91I4sZR9rHmjujuKKKK+rPGCiiigAooooAxfFcXmeH5 + zjJQqw/MVyVl89nGfTj9a6/xPMsWgXOerAKB7kiuU06MixQnvk/rXy2ftRkmezl7apP1HFaF + LRtuXg1OUppSvn41bao7ua5YjlEi5HXuKcaqAFTkcGpkl3cNwa76eLvozJxtsPNNyacaaa6V + WBCbqN1IaaaftENIr3UQYFgOD94VwfjTwhF4hsBECsd1HzBMw4Hqrex/wDr16Eao3EIYFCOD + 0PpSjVdKanA15VUi4SPMdD/AGfNSuZ4pdW1e0jszhiLTc7uPQEgAZ9efpXvWkaRZaHpNtpmn + xCK1tk2Iv8AMn1JOST6muf8Pao1pP8AYLhvkY/uyex9Poa6zdX0NLEe3gpHiVaHsZcouKXFN + 3Ubq0Mx2KMU3dRuoAdijFN3UbqAHYoxTd1IzhFLMQqgZJPAAoAzPEc/2fRpQDhpCEH49f0zX + MWce2BPfmjU/Elh4im8jS7hbmC3lMbzJyjPgcKe4Geo45q0qAAAdBXz2aVf3nL2PYwceWlfu + OFPFNC04CvIdU3Y8U8UwCngVk6xmxWPGKQLTgtOC1zzq3ZN7DQtPC04LTgtYSmS5DQtUtVtB + NamRR88Yz+HetILUN9KlvZyu5H3SAPU0UaslVi47iUnfQ2/DWoNqGjxtI2ZYz5bk9yO/wCWK + 165rwVC8elSyNkLJKSvuAAM/wCfSulr9RwspSoxct7HjYiKjVko7BRRRW5iFFFBOKAOQ8bTs + xs7NT95i5Hv0H8zUUcIjjVB0UYFN8V8eILKRvubV5PThjmre2vguIqr+sWZ7VD3aMbFcpTSl + WClNKV4SqmqkVylNKVZKU0pWqqlKRCGK8HkU7IPSnFKaVrohiGh3QhFMNP5pCK3WIGiMiopV + yKnIpjDNX7a6NEzNvLffHvA+Zf1Fc4PilceD9ZGm+I4pbrTZhvtb2MZkQd1cfxY9euMZyTXZ + FK8v+K2kJP4ekuAP3llIHU/7LEAj9Qfwr1spxNqvI9mYYyHPSbW6PZ9E8SaP4jtftOkahBdx + /xeW3zL/vKeV/EVqZr4ctL260+4W4srma2nX7skMhRh9COa7bSfjH400oBW1FL6MdEvIw//A + I8MMfzr6d0ux4an3Pq3NGa+d7b9oXWlx9q0Wwl9fKd0/mWqSX9ofVD/AKrQbNf9+Zm/oKn2b + Hzo+g91I8qRozyMqooyWY4AFfMeofHXxheZFsbGxHYwwbj/AOPlh+lcVrPinXfEL7tW1W6uh + nIR5DsH0UcD8BVKkwc0fSXif4x+FvDoeKC4/tS8HSK0YMoP+0/3R+GT7V4X4y+KHiDxkWgml + +x6celnbkhT/vnq348e1cVViwtzd6hbWw6yyqn5nFWoqKuTdydj6E+H2mCx8OadEVw3k+c/+ + 83P9cfhXahaz9HhVYnKgADCgegFaoWvgcdWc60mfRL3YqK6DAtPC04LTwtedKZLkNC04LTgt + PC1jKZDkNC04LTgtPC1lKZDkNC07GKo3uqQWeVB8yX+6p6fU1Uis9U1kgyN5FufXgEew6muz + CZdXxT91aA1Zc0nZFi71m3t8rF+9k/2TwPxpbDRL/W51uL4tDbA8LjBI9h/U1r6bollYEOE8 + 2Yf8tH5x9B2rbR6+vy/IaVC0p6s46uMS0pfeSQwx28KQxKFRBhQOwqSmq2adX0KVlZHnN3Ci + iimAU1qdSEZFAGD4h0k6paDy8CeIkpnv6iubg1eWzP2a/hcMnG7HP4+v1rvHWqdzaQ3K7Z4U + kHYMucV5OYZVSxmstzsoYrkjySV0c8mq2MnSdQf9oEVOs0En3JY2+jA1JN4b0587YWQ/wCy5 + /rVCTwtb/8ALOeVf94A/wCFfO1OGJr4JHUsRQfVovFaaVrKbw/dQ8wXnP4r/LNMKa3a9/NUe + 4b/AOvXHUyDFQ21NYzpy+GSNYpTStZsWuFH2XcBQ9yo/oa1IZ4bld0MiuPY9K8urRrUX76La + lHcYVppWrBWmlKzVUFIrlKaUqwUppStVVKUiuUrzv4oXCxeF9TzjLCOMe5LL/8AXr0W6mS2h + aR/wHqa8/8AFHhs+K7SO3mu3giEvmvsUEucEDr06mvdyWnKpWUuiFWny0pM+eKK9og+FGhQk + GWS8nPcPIAP0ArWtvBOgWePK0q3JHeQeZ/6Fmvt3UR4XKzwGp1srpl3LbTFfURnFfRMWl21v + /qbeKP/AHEC/wAqm+y+1T7TyHyHzbJBNF/rInT/AHlIqOvpb7KCCCoIPYiqs3hzSrn/AF+mW + khPdoFJ/PFHtPIOQ+c61vDGB4r0jIyPtkX/AKGK9ok+H/hqc5fSYx/uO6fyIp9v8PPDdtcRX + EOmlJYnDowuJOGByD96iU04tDgrSTO40gZtG/3z/IVpBayNHm2TPbucbuV+tbYWvzfGp06zT + PenLW40LTwtOC04LXnymZOQ0LTgtPC07GBk1i5kOQ3GKxLzUZruf7JYAnPBcd/8B70ahfyXs + 32Ky5B4Zh3/APrVpadpyWUW0cufvN6//Wr6TJ8ndZ+1qrQVSoqMby36Ij07RILbEk2JZevPQ + fQVtLUaLU6LX3FKlCnHlgrHl1KsqjvJkiGrCVEi1Mi1sZkyVKKjRakpiCiiigAooooAQqDUT + R1NRQBSeOoWirRKg0xoc0rDMtovaoWirVaH2qFoPalYLmNcWUU6bZY1ce46Vjz6E8beZZzMj + DoCf611jQe1RNB7Vz1sNTqq00b08RUp/CzlBf6pZjFxB5ij+Ij+o4qVPEFuQPMhkU+2DXQtb + +1VpNOgkJLwRsfUqDXiVuHcPN3jodSxkH8UfuMs65Z4ziQ+22q0uu7vlt4GLH+9/gK1jpFqD + kW8f/fNOWyjj+5Gq/7oxWNPhulF3kyvrlNbROdNvdXknmXJIHZf/rdqmNrgYA4rcNt7Uw23t + Xu4fCU6EeWCOWriJVXrsYZtvamm19q3Da+1N+y+1dHKY3MQ2vtSfZfatv7L7UfZfajlC5i/Z + fanC19q2Ra+1L9l9qLBcyBbe1PW29q1hbe1OFt7UWC5g3NlIMTQ53rzx1q/YarFOoSYiOX34 + BrSFt7VWudEgustgxyH+Je/1FeNmWURxS5o6M7aGKSjyVPvLgFPArFGg6hH8sF7he3zMv8AK + lGg6nNxPejb/vM36V80+HMS5WOjnpfzmhc6ja2YIkkBb+4vJrIe4vdbkMVupjtx94/4n+lal + p4YtojumLTH0PA/KtmO1WNQqIFUdABgCvYwHDkKTU6urMZ4qnD4NWZen6XFYx4T5nP3nPU1o + rF7VaWD2qVYPavqIU4wXLFaHBObm+aRWWKpljqwsNSiMCrsQQrHUypingYopiCiiigAooooA + //Z +X-SPOUSE:Manuela Graf +X-EVOLUTION-SPOUSE:Manuela Graf +ITEM1.X-ABRELATEDNAMES:Manuela Graf +ITEM1.X-ABLABEL:_$!<Spouse>!$_ +ITEM2.X-ABRELATEDNAMES:Manager +ITEM2.X-ABLABEL:_$!<Manager>!$_ +ITEM3.X-ABRELATEDNAMES:Aufsichtsrat +ITEM3.X-ABLABEL:_$!<Manager>!$_ +ITEM4.X-ABRELATEDNAMES:Barbara Jonas +ITEM4.X-ABLABEL:_$!<Assistant>!$_ +ITEM5.X-ABRELATEDNAMES:Dominik Maller +ITEM5.X-ABLABEL:_$!<Assistant>!$_ +ROLE:CTO +ROLE:Vorstand +X-MANAGER:Manager +X-MANAGER:Aufsichtsrat +X-EVOLUTION-MANAGER:Manager +X-EVOLUTION-MANAGER:Aufsichtsrat +X-ASSISTANT:Babsi +X-ASSISTANT:Dominik +X-EVOLUTION-ASSISTANT:Barbara Jonas +X-EVOLUTION-ASSISTANT:Dominik Müller +BDAY;VALUE=date:1971-06-21 +X-ANNIVERSARY:2000-01-01\, Testfeier +X-ANNIVERSARY:2003-2-2\, Blafeier +X-EVOLUTION-ANNIVERSARY:2000-01-01\, Testfeier +X-EVOLUTION-ANNIVERSARY:2003-2-2\, Blafeier +IMPP:aim:balbala +IMPP:aim:hakunamatata +X-AIM:balbala +X-AIM:hakunamatata +EMAIL;TYPE=INTERNET:sven@andresen.de +EMAIL;TYPE=INTERNET:andresen@andresen.de +TEL;TYPE=WORK,VOICE:+49 89 11 11 111 +TEL;TYPE=WORK,VOICE:+49 234 222 222 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 160 073 727 272 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 39292 82 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,VOICE:+49 7272 7282 +TEL;TYPE=HOME,FAX:+49 1010 1 +ITEM6.TEL;TYPE=VOICE:+49 8373 6262 +ITEM6.X-ABLABEL:_$!<Other>!$_ +ITEM7.TEL;TYPE=VOICE:+61 27 28 73 246 +ITEM7.X-ABLABEL:_$!<Other>!$_ +ITEM8.TEL;TYPE=FAX:+49 9382 3424 +ITEM8.X-ABLABEL:_$!<Other>!$_ +TEL;TYPE=ISDN:8797 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 88 298 723 498 32 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 2763 382 882 28 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;X-EVOLUTION-CALLBACK:+49 7363 6363 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;TYPE=MODEM:+49 7363 6363 +TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +TEL;X-QUICKDIAL:13355 +ADR;TYPE=WORK;CHARSET=utf-8: + PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Bayern;94036;Deutschland +ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung; + Weisenstraße 13;Irgendwo;Niedersachsen;34332 +ADR;TYPE=HOME;CHARSET=utf-8:;;Weisenstraße 13 ;Irgendwo;;34332 +ADR;TYPE=X-OTHER:;;Irgendwo;Nirgendwo;Sonstwo;0000;Antarktis +ORG:andresen AG;R&D;;XXX\, 033 +ORG;CHARSET=utf-8:andresen Holding;Geschäftsleitung;;-\, 0223 +X-HOUSE;TYPE=WORK:XXX +X-HOUSE;TYPE=WORK:- +X-ROOM;TYPE=WORK:033 +X-ROOM;TYPE=WORK:0223 +LABEL;TYPE=WORK:1. Stock\, links +LABEL;TYPE=WORK:oder rechts +URL;TYPE=WORK:http://www.andresen.de +URL;TYPE=WORK:http://www.andresens.de +ITEM9.URL;TYPE=HOME:http://www.zuhause.de +ITEM9.X-ABLABEL:_$!<HomePage>!$_ +ITEM10.URL;TYPE=HOME:http://www.andresen.de/~andresen +ITEM10.X-ABLABEL:_$!<HomePage>!$_ +X-BUSINESS-CATEGORY:IT +X-BUSINESS-CATEGORY:Development +KEY;ENCODING=b;TYPE=X-CERT:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2R + ENDQXlXZ0F3SUJBZ0lKQUpUeXNHNDV0V3BZTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdiTVFzd + 0NRWUQKVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFTk1Bc0dBMVVFQ + nhNRVEybDBlVEVoTUI4RwpBMVVFQ2hNWVNXNTBaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUS + FJrTVF3d0NnWURWUVFMRkFOU0prUXhGakFVCkJnTlZCQU1URFZOMlpXNGdRVzVrY21WelpXN + HhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjJaVzVBWVc1a2NtVnoKWlc0dVpHVXdIaGNOTVRBd + 05qSXpNRGd5T0RFNFdoY05NVEV3TmpJek1EZ3lPREU0V2pDQm16RUxNQWtHQTFVRQpCaE1DU + VZVeEV6QVJCZ05WQkFnVENsTnZiV1V0VTNSaGRHVXhEVEFMQmdOVkJBY1RCRU5wZEhreElUQ + WZCZ05WCkJBb1RHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU1NQW9HQTFVR + UN4UURVaVpFTVJZd0ZBWUQKVlFRREV3MVRkbVZ1SUVGdVpISmxjMlZ1TVI4d0hRWUpLb1pJa + HZjTkFRa0JGaEJ6ZG1WdVFHRnVaSEpsYzJWdQpMbVJsTUlHZk1BMEdDU3FHU0liM0RRRUJBU + VVBQTRHTkFEQ0JpUUtCZ1FDdEtPWnJBOXBjdjJWUVpkSEg4YmhhCmZqMlZWMW9HakxjTkt3M + ktWVkJ6anphQVlyaU9HcnBNWDdhcW1oL3pjNHhBMTVDc1JJYjJoQXpPcDlTeldvQ00KbXhZc + FN5eG8rbUJHUGRYOVcvTStYcStSYUtGSURpdHZyL0xBb2I5N0oveWp5R0JDYU4vdExvdG9ZN + 3F5TjAxUQpWTkRYNkJkcS9GZTFjcUdhcnFvdzNRSURBUUFCbzRJQkJEQ0NBUUF3SFFZRFZSM + E9CQllFRkhNaFBPR255aENtCmxWcHlCZHhCTVczZ2drbS9NSUhRQmdOVkhTTUVnY2d3Z2NXQ + UZITWhQT0dueWhDbWxWcHlCZHhCTVczZ2drbS8Kb1lHaHBJR2VNSUdiTVFzd0NRWURWUVFHR + XdKQlZURVRNQkVHQTFVRUNCTUtVMjl0WlMxVGRHRjBaVEVOTUFzRwpBMVVFQnhNRVEybDBlV + EVoTUI4R0ExVUVDaE1ZU1c1MFpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNUXd3CkNnW + URWUVFMRkFOU0prUXhGakFVQmdOVkJBTVREVk4yWlc0Z1FXNWtjbVZ6Wlc0eEh6QWRCZ2txa + GtpRzl3MEIKQ1FFV0VITjJaVzVBWVc1a2NtVnpaVzR1WkdXQ0NRQ1U4ckJ1T2JWcVdEQU1CZ + 05WSFJNRUJUQURBUUgvTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRHQkFGcnVidGpoWVB1RERHV + VpQRTQraUo2a3FmdEtXWDFJVzdmTXdtc3BRUWt5CitXUThSL3AxbURrc3ZEQ3hDYWp2YVduS + VI2dGIwbmtCMTFFNmQ0dDhkMkxWTTE4M3dDUWJtMDRJS05mdkRKOXQKUE4vdHBVTkJrc0Vka + XBlMEM1SEgyMnY0RitSSzVUK1lqM1J6VHZmOTdROVMzTzF3eE5lZkt0NXVUNFFxNUZtdAotL + S0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== +CALURI:http://caldav.andresen.local/sja +FBURL:http://caldav.andresen.local/freebusy +CAPURI:http://caldav.andresen.local/access +CALADRURI:http://caldav.andresen.local/access +X-DESCRIPTION:Beschreibung +X-DESCRIPTION;CHARSET=utf-8:außerdem +NOTE:Nur so ein Test! +CATEGORIES:bla,blubb,test,hihi,oops +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/hans_dieter.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//ALAB//NOSGML Version 0.9//DE +UID:a nice UID +X-ABUID:A93F52CB-C15F-1F34-2C49-7A67-0971277F:ABPerson +FN:Hans Dieter Schmidt +SORT-STRING:Schmidt\, Hans Dieter +N:Schmidt;Hans Dieter;;Dr.;Esq. +X-DISPLAYNAME:HaDi Schmidt +X-INITIALS:HW +NICKNAME:HaWe +X-SPOUSE:Maja Schultze +X-EVOLUTION-SPOUSE:Maja Schultze +ITEM1.X-ABRELATEDNAMES:Maja Schultze +ITEM1.X-ABLABEL:_$!<Spouse>!$_ +ITEM2.X-ABRELATEDNAMES:Barbara Jonas +ITEM2.X-ABLABEL:_$!<Assistant>!$_ +ITEM3.X-ABRELATEDNAMES:Klaus Timm +ITEM3.X-ABLABEL:_$!<Assistant>!$_ +ROLE:Projektleiter +X-ASSISTANT:Barbara Jonas +X-ASSISTANT:Klaus Timm +X-EVOLUTION-ASSISTANT:Barbara Jonas +X-EVOLUTION-ASSISTANT:Klaus Timm +BDAY;VALUE=date:1977-12-10 +BDAY;VALUE=date:1975-11-11 +DDAY;VALUE=date:2007-01-02 +X-DDAY;VALUE=date:2007-01-02 +X-ANNIVERSARY:2000-02-01\, +X-ANNIVERSARY:2001-02-02\, +X-EVOLUTION-ANNIVERSARY:2000-02-01\, +X-EVOLUTION-ANNIVERSARY:2001-02-02\, +X-EVOLUTION-BLOG-URL:blog.diesistmeineip.de +ITEM4.URL:blog.diesistmeineip.de +ITEM4.X-ABLABEL:_$!<Other>!$_ +URL;TYPE=WORK:http://www.tu-hh.de +URL;TYPE=WORK:http://www.telekom.de +ITEM5.URL;TYPE=HOME:http://www.hadi-schmidt.de +ITEM5.X-ABLABEL:_$!<HomePage>!$_ +IMPP:aim:477826262 +IMPP:aim:aaab3ttebb3 +IMPP:icq:972398472394 +IMPP:icq:8972364872634 +IMPP:ymsgr:mailaddr@yahoo.co.uk +IMPP:ymsgr:yahoo@yahootar.bla +IMPP:xmpp:jabjab187383 +IMPP:xmpp:jabberwookie@starwahrs.co.com +IMPP:msn:blablubb@langedomain.org +IMPP:msn:738246832746 +IMPP:skype:hadi.schmidt-skype +IMPP:skype:askjdhasd +IMPP:ichat:ichatichat +IMPP:ichat:second-ichat +IMPP:nm:netnetmeetings +IMPP:nm:vielleicht@eine.email.de +IMPP:gtalk:gooogletalk +IMPP:gtalk:googletalk2 +IMPP:sip:ipphon-addr.woauchimmer.de +X-AIM:balbala +X-AIM:hakunamatata +X-AIM;TYPE=WORK:972398472394 +X-AIM;TYPE=WORK:8972364872634 +X-ICQ:972398472394 +X-ICQ:8972364872634 +X-JABBER:jabjab187383 +X-JABBER:jabberwookie@starwahrs.co.com +X-MSN:blablubb@langedomain.org +X-MSN:738246832746 +X-SKYPE-USERNAME:hadi.schmidt-skype +X-SKYPE-USERNAME:askjdhasd +EMAIL;TYPE=INTERNET:ich@hadi-schmidt.de +EMAIL;TYPE=INTERNET:hadi@telekom-d.de +TEL;TYPE=WORK,VOICE:+49 9823 9084 +TEL;TYPE=WORK,VOICE:+49 234 234 234 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,FAX:+49 40 812 387 21 +ITEM6.TEL;TYPE=VOICE:+49 8373 6262 +ITEM6.X-ABLABEL:_$!<Other>!$_ +ITEM7.TEL;TYPE=VOICE:+49 7272 72 +ITEM7.X-ABLABEL:_$!<Other>!$_ +TEL;TYPE=ISDN:4234234235 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 38 288 228 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;X-EVOLUTION-TTYTDD:+49 7373 73 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +ADR;TYPE=WORK;CHARSET=utf-8: + ;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg;Hamburg;21373;Deutschland +ADR;TYPE=HOME;CHARSET=utf-8:;;Weisestraße 13 ;Irgendwo;;33443 +ADR;TYPE=X-OTHER:;;Nirgendwo +ORG:Uni Harburg;;;033 +X-ROOM;TYPE=WORK:033 +LABEL;TYPE=WORK:1. Stock\, links +LABEL;TYPE=WORK:oder rechts +X-BUSINESS-CATEGORY:IT +X-BUSINESS-CATEGORY:Development +CALURI:http://davical.hadi-schmist.home/hadi +FBURL:http://davical.hadi-schmist.home/freebusy +CAPURI:http://davical.hadi-schmist.home/cap +CALADRURI:http://davical.hadi-schmist.home/access +X-DESCRIPTION:Beschreibung +X-DESCRIPTION;CHARSET=utf-8:außerdem +CATEGORIES:uni +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2038-REPORT-addressbook-query.test b/testing/tests/carddav/2038-REPORT-addressbook-query.test new file mode 100644 index 00000000..e5a5fc59 --- /dev/null +++ b/testing/tests/carddav/2038-REPORT-addressbook-query.test @@ -0,0 +1,34 @@ +# +# Request a REPORT +# +# param--filter should filter on parameter value. +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user1/addressbook/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +# HEAD + +BEGINDATA + + + + + + + + + + WORK + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ +REPLACE=/^UID:.*$/UID:a nice UID/ From 696426bc818ab909c62a5940d342cef4b5e3c920 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sun, 24 Jan 2021 20:59:42 +1300 Subject: [PATCH 02/37] Test case for awl-fix_abookquery_negated_propnotdef --- .../2041-REPORT-addressbook-query.result | 504 ++++++++++++++++++ .../2041-REPORT-addressbook-query.test | 46 ++ .../0230-Moz-REPORT-Tasks-Completed.result | 28 +- 3 files changed, 552 insertions(+), 26 deletions(-) create mode 100644 testing/tests/carddav/2041-REPORT-addressbook-query.result create mode 100644 testing/tests/carddav/2041-REPORT-addressbook-query.test diff --git a/testing/tests/carddav/2041-REPORT-addressbook-query.result b/testing/tests/carddav/2041-REPORT-addressbook-query.result new file mode 100644 index 00000000..19f38610 --- /dev/null +++ b/testing/tests/carddav/2041-REPORT-addressbook-query.result @@ -0,0 +1,504 @@ + + + + /caldav.php/user1/addressbook/andresenesq.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//ALAB//NOSGML Version 0.9//DE +UID:a nice UID +X-ABUID:ADDEEFEF-162A-260A-DEA3-1DA8-8A913187:ABPerson +FN:Sven Joseph Klaus Michael Andresen\, Esq. +SORT-STRING:Andresen\, Esq.\, Sven Joseph Klaus Michael +N:Andresen\,Esq.;Sven;Joseph\,Klaus\,Michael;;Dr.\,Prof.;Esq. +X-DISPLAYNAME:Svenni +X-INITIALS:SA +X-INITIALS:SHA +NICKNAME:Svenny\,Sveny +PHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHB + wcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zN + DL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM + jIyMjIyMjIyMjIyMjIyMjL/wAARCAFQATYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAA + AAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxF + DKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW + mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDx + MXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAA + AAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiM + oEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYW + VpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w + sPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiig + AooooAKKKKACiiigAooooAKKKKACiiigAoorM17xBpnhnSZdT1a7S2tY/4m6seyqOpJ9BQBp + 1zuvePPC/hkMNW1q1glXrCrb5f++Fy36V5Hf+L/ABr8SXkj0hz4d8PMSFnOfPnX6jn8FwO2T + U2i/DfwxpKq89r/AGjc9WluzuBP+7938wfrQBr3X7Q+gGRotK0XVr+QdPkVA305J/Ssyb45e + KWbdb/D67WI9PMMrE/iIxXXQSQWsKxW8UcMS9EjUKB+AqT7b70AeeXP7Q3iGxkUXnhKKDP8M + ryIT+Yq/Y/tLWDlRf8Ahu5hHcwXKyfoVX+ddk9ykiFHCsp6qwyDXJa54B8Ma4Hd7BbS4b/lt + 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 + //Z +X-SPOUSE:Manuela Graf +X-EVOLUTION-SPOUSE:Manuela Graf +ITEM1.X-ABRELATEDNAMES:Manuela Graf +ITEM1.X-ABLABEL:_$!<Spouse>!$_ +ITEM2.X-ABRELATEDNAMES:Manager +ITEM2.X-ABLABEL:_$!<Manager>!$_ +ITEM3.X-ABRELATEDNAMES:Aufsichtsrat +ITEM3.X-ABLABEL:_$!<Manager>!$_ +ITEM4.X-ABRELATEDNAMES:Barbara Jonas +ITEM4.X-ABLABEL:_$!<Assistant>!$_ +ITEM5.X-ABRELATEDNAMES:Dominik Maller +ITEM5.X-ABLABEL:_$!<Assistant>!$_ +ROLE:CTO +ROLE:Vorstand +X-MANAGER:Manager +X-MANAGER:Aufsichtsrat +X-EVOLUTION-MANAGER:Manager +X-EVOLUTION-MANAGER:Aufsichtsrat +X-ASSISTANT:Babsi +X-ASSISTANT:Dominik +X-EVOLUTION-ASSISTANT:Barbara Jonas +X-EVOLUTION-ASSISTANT:Dominik Müller +BDAY;VALUE=date:1971-06-21 +X-ANNIVERSARY:2000-01-01\, Testfeier +X-ANNIVERSARY:2003-2-2\, Blafeier +X-EVOLUTION-ANNIVERSARY:2000-01-01\, Testfeier +X-EVOLUTION-ANNIVERSARY:2003-2-2\, Blafeier +IMPP:aim:balbala +IMPP:aim:hakunamatata +X-AIM:balbala +X-AIM:hakunamatata +EMAIL;TYPE=INTERNET:sven@andresen.de +EMAIL;TYPE=INTERNET:andresen@andresen.de +TEL;TYPE=WORK,VOICE:+49 89 11 11 111 +TEL;TYPE=WORK,VOICE:+49 234 222 222 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 160 073 727 272 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 39292 82 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,VOICE:+49 7272 7282 +TEL;TYPE=HOME,FAX:+49 1010 1 +ITEM6.TEL;TYPE=VOICE:+49 8373 6262 +ITEM6.X-ABLABEL:_$!<Other>!$_ +ITEM7.TEL;TYPE=VOICE:+61 27 28 73 246 +ITEM7.X-ABLABEL:_$!<Other>!$_ +ITEM8.TEL;TYPE=FAX:+49 9382 3424 +ITEM8.X-ABLABEL:_$!<Other>!$_ +TEL;TYPE=ISDN:8797 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 88 298 723 498 32 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 2763 382 882 28 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;X-EVOLUTION-CALLBACK:+49 7363 6363 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;TYPE=MODEM:+49 7363 6363 +TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +TEL;X-QUICKDIAL:13355 +ADR;TYPE=WORK;CHARSET=utf-8: + PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Bayern;94036;Deutschland +ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung; + Weisenstraße 13;Irgendwo;Niedersachsen;34332 +ADR;TYPE=HOME;CHARSET=utf-8:;;Weisenstraße 13 ;Irgendwo;;34332 +ADR;TYPE=X-OTHER:;;Irgendwo;Nirgendwo;Sonstwo;0000;Antarktis +ORG:andresen AG;R&D;;XXX\, 033 +ORG;CHARSET=utf-8:andresen Holding;Geschäftsleitung;;-\, 0223 +X-HOUSE;TYPE=WORK:XXX +X-HOUSE;TYPE=WORK:- +X-ROOM;TYPE=WORK:033 +X-ROOM;TYPE=WORK:0223 +LABEL;TYPE=WORK:1. Stock\, links +LABEL;TYPE=WORK:oder rechts +URL;TYPE=WORK:http://www.andresen.de +URL;TYPE=WORK:http://www.andresens.de +ITEM9.URL;TYPE=HOME:http://www.zuhause.de +ITEM9.X-ABLABEL:_$!<HomePage>!$_ +ITEM10.URL;TYPE=HOME:http://www.andresen.de/~andresen +ITEM10.X-ABLABEL:_$!<HomePage>!$_ +X-BUSINESS-CATEGORY:IT +X-BUSINESS-CATEGORY:Development +KEY;ENCODING=b;TYPE=X-CERT:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2R + ENDQXlXZ0F3SUJBZ0lKQUpUeXNHNDV0V3BZTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdiTVFzd + 0NRWUQKVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFTk1Bc0dBMVVFQ + nhNRVEybDBlVEVoTUI4RwpBMVVFQ2hNWVNXNTBaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUS + FJrTVF3d0NnWURWUVFMRkFOU0prUXhGakFVCkJnTlZCQU1URFZOMlpXNGdRVzVrY21WelpXN + HhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjJaVzVBWVc1a2NtVnoKWlc0dVpHVXdIaGNOTVRBd + 05qSXpNRGd5T0RFNFdoY05NVEV3TmpJek1EZ3lPREU0V2pDQm16RUxNQWtHQTFVRQpCaE1DU + VZVeEV6QVJCZ05WQkFnVENsTnZiV1V0VTNSaGRHVXhEVEFMQmdOVkJBY1RCRU5wZEhreElUQ + WZCZ05WCkJBb1RHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU1NQW9HQTFVR + UN4UURVaVpFTVJZd0ZBWUQKVlFRREV3MVRkbVZ1SUVGdVpISmxjMlZ1TVI4d0hRWUpLb1pJa + HZjTkFRa0JGaEJ6ZG1WdVFHRnVaSEpsYzJWdQpMbVJsTUlHZk1BMEdDU3FHU0liM0RRRUJBU + VVBQTRHTkFEQ0JpUUtCZ1FDdEtPWnJBOXBjdjJWUVpkSEg4YmhhCmZqMlZWMW9HakxjTkt3M + ktWVkJ6anphQVlyaU9HcnBNWDdhcW1oL3pjNHhBMTVDc1JJYjJoQXpPcDlTeldvQ00KbXhZc + FN5eG8rbUJHUGRYOVcvTStYcStSYUtGSURpdHZyL0xBb2I5N0oveWp5R0JDYU4vdExvdG9ZN + 3F5TjAxUQpWTkRYNkJkcS9GZTFjcUdhcnFvdzNRSURBUUFCbzRJQkJEQ0NBUUF3SFFZRFZSM + E9CQllFRkhNaFBPR255aENtCmxWcHlCZHhCTVczZ2drbS9NSUhRQmdOVkhTTUVnY2d3Z2NXQ + UZITWhQT0dueWhDbWxWcHlCZHhCTVczZ2drbS8Kb1lHaHBJR2VNSUdiTVFzd0NRWURWUVFHR + XdKQlZURVRNQkVHQTFVRUNCTUtVMjl0WlMxVGRHRjBaVEVOTUFzRwpBMVVFQnhNRVEybDBlV + EVoTUI4R0ExVUVDaE1ZU1c1MFpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNUXd3CkNnW + URWUVFMRkFOU0prUXhGakFVQmdOVkJBTVREVk4yWlc0Z1FXNWtjbVZ6Wlc0eEh6QWRCZ2txa + GtpRzl3MEIKQ1FFV0VITjJaVzVBWVc1a2NtVnpaVzR1WkdXQ0NRQ1U4ckJ1T2JWcVdEQU1CZ + 05WSFJNRUJUQURBUUgvTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRHQkFGcnVidGpoWVB1RERHV + VpQRTQraUo2a3FmdEtXWDFJVzdmTXdtc3BRUWt5CitXUThSL3AxbURrc3ZEQ3hDYWp2YVduS + VI2dGIwbmtCMTFFNmQ0dDhkMkxWTTE4M3dDUWJtMDRJS05mdkRKOXQKUE4vdHBVTkJrc0Vka + XBlMEM1SEgyMnY0RitSSzVUK1lqM1J6VHZmOTdROVMzTzF3eE5lZkt0NXVUNFFxNUZtdAotL + S0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== +CALURI:http://caldav.andresen.local/sja +FBURL:http://caldav.andresen.local/freebusy +CAPURI:http://caldav.andresen.local/access +CALADRURI:http://caldav.andresen.local/access +X-DESCRIPTION:Beschreibung +X-DESCRIPTION;CHARSET=utf-8:außerdem +NOTE:Nur so ein Test! +CATEGORIES:bla,blubb,test,hihi,oops +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/hans_dieter.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//ALAB//NOSGML Version 0.9//DE +UID:a nice UID +X-ABUID:A93F52CB-C15F-1F34-2C49-7A67-0971277F:ABPerson +FN:Hans Dieter Schmidt +SORT-STRING:Schmidt\, Hans Dieter +N:Schmidt;Hans Dieter;;Dr.;Esq. +X-DISPLAYNAME:HaDi Schmidt +X-INITIALS:HW +NICKNAME:HaWe +X-SPOUSE:Maja Schultze +X-EVOLUTION-SPOUSE:Maja Schultze +ITEM1.X-ABRELATEDNAMES:Maja Schultze +ITEM1.X-ABLABEL:_$!<Spouse>!$_ +ITEM2.X-ABRELATEDNAMES:Barbara Jonas +ITEM2.X-ABLABEL:_$!<Assistant>!$_ +ITEM3.X-ABRELATEDNAMES:Klaus Timm +ITEM3.X-ABLABEL:_$!<Assistant>!$_ +ROLE:Projektleiter +X-ASSISTANT:Barbara Jonas +X-ASSISTANT:Klaus Timm +X-EVOLUTION-ASSISTANT:Barbara Jonas +X-EVOLUTION-ASSISTANT:Klaus Timm +BDAY;VALUE=date:1977-12-10 +BDAY;VALUE=date:1975-11-11 +DDAY;VALUE=date:2007-01-02 +X-DDAY;VALUE=date:2007-01-02 +X-ANNIVERSARY:2000-02-01\, +X-ANNIVERSARY:2001-02-02\, +X-EVOLUTION-ANNIVERSARY:2000-02-01\, +X-EVOLUTION-ANNIVERSARY:2001-02-02\, +X-EVOLUTION-BLOG-URL:blog.diesistmeineip.de +ITEM4.URL:blog.diesistmeineip.de +ITEM4.X-ABLABEL:_$!<Other>!$_ +URL;TYPE=WORK:http://www.tu-hh.de +URL;TYPE=WORK:http://www.telekom.de +ITEM5.URL;TYPE=HOME:http://www.hadi-schmidt.de +ITEM5.X-ABLABEL:_$!<HomePage>!$_ +IMPP:aim:477826262 +IMPP:aim:aaab3ttebb3 +IMPP:icq:972398472394 +IMPP:icq:8972364872634 +IMPP:ymsgr:mailaddr@yahoo.co.uk +IMPP:ymsgr:yahoo@yahootar.bla +IMPP:xmpp:jabjab187383 +IMPP:xmpp:jabberwookie@starwahrs.co.com +IMPP:msn:blablubb@langedomain.org +IMPP:msn:738246832746 +IMPP:skype:hadi.schmidt-skype +IMPP:skype:askjdhasd +IMPP:ichat:ichatichat +IMPP:ichat:second-ichat +IMPP:nm:netnetmeetings +IMPP:nm:vielleicht@eine.email.de +IMPP:gtalk:gooogletalk +IMPP:gtalk:googletalk2 +IMPP:sip:ipphon-addr.woauchimmer.de +X-AIM:balbala +X-AIM:hakunamatata +X-AIM;TYPE=WORK:972398472394 +X-AIM;TYPE=WORK:8972364872634 +X-ICQ:972398472394 +X-ICQ:8972364872634 +X-JABBER:jabjab187383 +X-JABBER:jabberwookie@starwahrs.co.com +X-MSN:blablubb@langedomain.org +X-MSN:738246832746 +X-SKYPE-USERNAME:hadi.schmidt-skype +X-SKYPE-USERNAME:askjdhasd +EMAIL;TYPE=INTERNET:ich@hadi-schmidt.de +EMAIL;TYPE=INTERNET:hadi@telekom-d.de +TEL;TYPE=WORK,VOICE:+49 9823 9084 +TEL;TYPE=WORK,VOICE:+49 234 234 234 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,FAX:+49 40 812 387 21 +ITEM6.TEL;TYPE=VOICE:+49 8373 6262 +ITEM6.X-ABLABEL:_$!<Other>!$_ +ITEM7.TEL;TYPE=VOICE:+49 7272 72 +ITEM7.X-ABLABEL:_$!<Other>!$_ +TEL;TYPE=ISDN:4234234235 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 38 288 228 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;X-EVOLUTION-TTYTDD:+49 7373 73 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +ADR;TYPE=WORK;CHARSET=utf-8: + ;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg;Hamburg;21373;Deutschland +ADR;TYPE=HOME;CHARSET=utf-8:;;Weisestraße 13 ;Irgendwo;;33443 +ADR;TYPE=X-OTHER:;;Nirgendwo +ORG:Uni Harburg;;;033 +X-ROOM;TYPE=WORK:033 +LABEL;TYPE=WORK:1. Stock\, links +LABEL;TYPE=WORK:oder rechts +X-BUSINESS-CATEGORY:IT +X-BUSINESS-CATEGORY:Development +CALURI:http://davical.hadi-schmist.home/hadi +FBURL:http://davical.hadi-schmist.home/freebusy +CAPURI:http://davical.hadi-schmist.home/cap +CALADRURI:http://davical.hadi-schmist.home/access +X-DESCRIPTION:Beschreibung +X-DESCRIPTION;CHARSET=utf-8:außerdem +CATEGORIES:uni +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2041-REPORT-addressbook-query.test b/testing/tests/carddav/2041-REPORT-addressbook-query.test new file mode 100644 index 00000000..65e78ba9 --- /dev/null +++ b/testing/tests/carddav/2041-REPORT-addressbook-query.test @@ -0,0 +1,46 @@ +# +# Request a REPORT +# +# negate-condition should only return a result if the +# property exists on the vCard, and doesn't match. +# +# RFC 6352, section 10.5.1: +# +# ... +# A vCard property of the type specified by the "name" attribute +# exists, and the CARDDAV:prop-filter is empty, or it matches any +# specified CARDDAV:text-match or CARDDAV:param-filter +# conditions. +# ... +# +# This test should return all vCards with a FBURL property, except +# for Andrew McMillan. Currently there are two vCards which meet +# this restriction. +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user1/addressbook/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +# HEAD + +BEGINDATA + + + + + + + + + andrew@morphoss.com + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ +REPLACE=/^UID:.*$/UID:a nice UID/ diff --git a/testing/tests/regression-suite/0230-Moz-REPORT-Tasks-Completed.result b/testing/tests/regression-suite/0230-Moz-REPORT-Tasks-Completed.result index a6102620..df6302ec 100644 --- a/testing/tests/regression-suite/0230-Moz-REPORT-Tasks-Completed.result +++ b/testing/tests/regression-suite/0230-Moz-REPORT-Tasks-Completed.result @@ -2,36 +2,12 @@ HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy -ETag: "8bfa1d55385dd1c0d877ba64358b56d4" -Content-Length: 1574 +ETag: "ad7855a9510df25e6c23b501a47f38ff" +Content-Length: 865 Content-Type: text/xml; charset="utf-8" - - /davical/caldav.php/user1/home/2178279a-aec2-471f-832d-1f6df6203f2f.ics - - - "509b0f0d8a3363379f9f5727f5dd74a0" - BEGIN:VCALENDAR -PRODID:-//Mozilla Calendar//NONSGML Sunbird//EN -VERSION:2.0 -BEGIN:VTODO -CREATED:20070805T200215Z -LAST-MODIFIED:20070805T201531Z -DTSTAMP:20070805T200215Z -UID:2178279a-aec2-471f-832d-1f6df6203f2f -SUMMARY:Incomplete\, uncancelled -X-MOZ-LOCATIONPATH:2178279a-aec2-471f-832d-1f6df6203f2f.ics -DESCRIPTION:This task is incomplete and has not been cancelled (has no - status at all) -END:VTODO -END:VCALENDAR - - - HTTP/1.1 200 OK - - /davical/caldav.php/user1/home/917b9e47-b748-4550-a566-657fbe672447.ics From f250d2deb5fb526de8f34c6a2d867a86900bf9bb Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Mon, 1 Feb 2021 23:27:42 +1300 Subject: [PATCH 03/37] Test case for negated values in awl-fix_abookquery_paramtextmatch --- .../2042-REPORT-addressbook-query.result | 1146 +++++++++++++++++ .../2042-REPORT-addressbook-query.test | 36 + 2 files changed, 1182 insertions(+) create mode 100644 testing/tests/carddav/2042-REPORT-addressbook-query.result create mode 100644 testing/tests/carddav/2042-REPORT-addressbook-query.test diff --git a/testing/tests/carddav/2042-REPORT-addressbook-query.result b/testing/tests/carddav/2042-REPORT-addressbook-query.result new file mode 100644 index 00000000..154df3bc --- /dev/null +++ b/testing/tests/carddav/2042-REPORT-addressbook-query.result @@ -0,0 +1,1146 @@ + + + + /caldav.php/user1/addressbook/andrew_mcmillan.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +UID:a nice UID +X-SKYPE;X-EVOLUTION-UI-SLOT=1;TYPE=HOME:karora__ +X-JABBER;X-EVOLUTION-UI-SLOT=3;TYPE=HOME:karora@irc.oftc.net +TEL;X-EVOLUTION-UI-SLOT=3;TYPE=CELL:+64 22 123 4567 +TEL;X-EVOLUTION-UI-SLOT=2;TYPE=HOME,VOICE:+64 4 123 4567 +TEL;X-EVOLUTION-UI-SLOT=1;TYPE=WORK,VOICE:+64 22 123 4567 +EMAIL;X-EVOLUTION-UI-SLOT=2;TYPE=HOME:andrew@mcmillan.net.nz +EMAIL;X-EVOLUTION-UI-SLOT=1;TYPE=WORK:andrew@morphoss.com +LABEL;TYPE=HOME:16 Kaka Place\nPorikana\n4173\nNew Zealand +ADR;TYPE=HOME:;;16 Kaka Place;Porikana;;4173;New Zealand +X-MOZILLA-HTML:FALSE +X-EVOLUTION-VIDEO-URL: +FBURL:https://davical.morphoss.com/freebusy.php/andrew@morphoss.com +CALADRURI:mailto:andrew@morphoss.com +CALURI:https://dotcal.com/karora +X-EVOLUTION-BLOG-URL:http://andrew.mcmillan.net.nz/ +CATEGORIES:Developer,Personal,Debian, +X-EVOLUTION-FILE-AS:McMillan\, Andrew +N:McMillan;Andrew;Watson;; +FN:Andrew Watson McMillan +NOTE:Primary author of DAViCal CalDAV Server. +X-EVOLUTION-SPOUSE:Heather Buchanan +X-EVOLUTION-ANNIVERSARY:1989-04-22 +BDAY:1958-07-26 +NICKNAME:karora +X-EVOLUTION-ASSISTANT: +X-EVOLUTION-MANAGER: +ROLE:Geek +ORG:dotCal;;Porirua +TITLE:Chief Technology Officer +URL:http://andrew.mcmillan.net.nz/ +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/donald_kelly.vcf + + + some valid etag + BEGIN:VCARD +FN:Donald Kelly +N:Kelly;Donald;;; +ORG:Esposo Designs Ltd +ADR:;;25 Rintoul St;Newtown;Wellington;;New Zealand +EMAIL;TYPE=internet:donald@example.co.nz +TITLE:Proprietor +TEL;TYPE=work:+64 4 347 4747 +TEL;TYPE=cell:+64 2 1234-4321 +X-MOZILLA-HTML:TRUE +URL:www.example.co.nz +VERSION:2.1 +UID:a nice UID +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/F06EC844-EACD-4ADF-8823-588603991E04-ABSPlugin.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +N:McMillan;Andrew;;; +FN:Morphoss Ltd +ORG:Morphoss Ltd; +EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref:andrew+davical@morphoss.com +TEL;TYPE=WORK;TYPE=pref:+64272332426 +PHOTO;BASE64: /9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAA + QAAAABAAAAGgAAAAAA AqACAAQAAAABAAAA2qADAAQAAAABAAAA2gAAAAD/2wBDAAIBAQIBA + QICAQICAgICAwUDAwMDAwYE BAMFBwYHBwcGBgYHCAsJBwgKCAYGCQ0JCgsLDAwMBwkNDg0M + DgsMDAv/2wBDAQICAgMCAwUDAwUL CAYICwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws + LCwsLCwsLCwsLCwsLCwsLCwsLCwv/wAAR CADaANoDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQ + EAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE + 1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol JicoKSo0NTY3ODk6Q0RFRkdISUpT + VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW l5iZmqKjpKWmp6ipqrKztLW + 2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3 +Pn6/8QAHwEAAwEBAQ + EBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3 AAECAxEEBSExB + hJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 OkNERUZH + SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan qKm + qsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAI + R AxEAPwD6Nuf2mfHfju2aDwb488cWzx/6uf8At+6AY+/7zJFR2fxp+IXhvwg7a18U/Gmoar + 5x3+R4 kuXWL0UjzOOPXBr5s+FF9c/EnUp9GfUptK0bSxC2rtA5S5uWlz5dsjj7gKqWcj5sY + A6mvdE/Zo8F eD7iGf4TW82lXd1bnzw0ZKSknuScsepyfwruhR5IObdj1YzVWoqcUi6/7TPx + JzgfEHxx/wCD66/+ OUwftMfErP8AyULxz/4Pbr/45XOa3oF94akxrEOIz0nj5jP1/u/jVIR + 7lyvO78qyjKMlc3qYdxvd HdaN+1f8StJug7eO/F9yp6pNrNy4P5yV5t8eNG+LvxjuZtX/AG + df2gfjF4U8QyAltGn8b6mdNu2/ uxHz/wByT2xxWjHHnHr2q/o9jNdX0EdgG86RwECjkkmui + KUnoTQrTwdT2lPR+mn4mJ/wSb8eftBS a/8AFHUP2iviL8Ur650RY9MttP1nxTfXsUM+Gd3R + ZZWCnhBkdj719g6b8VvGlhpdrBP4u8TzTIix s76pOS7dyTvye9VNC8OQ+HPDkjiKOO+1N42 + vJFHM8ioAWb1OEUUxIPMu0DAYUFzj/PvUVYq6ujqq VvrlWeIlFJvolotDWf4t+Ln+VvFniZ + WB4xqk/P8A4/Ug+MXi9WVp/FPiJGXgMNRmKN/vLu/WsWS3 8wncAcfpQLd05ALr6d6zi+Rid + GEuh0bfFnxVdFQfFPiOCU/dxqc2x/od9Zmp/EbxvExNv4u8Uq2f unVZ8H6HfVBLcoD9mIIP + WNvun/CrNrNkeVKpcH/lk/3h/unvW6cJoydFRW2hRb41eNoXKTeLfFAY dc6pP/8AF1Inxt8 + ZZw3i3xP/AODWf/4up7/w9DqcZa3+bHVejpWBfaDJZFiQWQHrjkfUU+VLoR7J PVI34fjV4w + 7+LPEx/wC4pOf/AGerEXxp8X8Z8V+JD/3E5v8A4uuNCkdPpUsUhU80WRm6S7Hbw/GP xaw+b + xT4jz/2E5v/AIqrEPxf8WHk+KfEJ+upTf8AxVcRFcDHB5q7a3fQtzVLl7Gcqa7HaRfFrxUe + vifxCf8AuJTf/FVZi+K/ik9fEviD/wAGE3/xVclBIp+7VuCQE/N+dXyx7GMoHVR/FLxPj/kZ + Nf8A /BhN/wDFVYh+KPiZ/wDmYtd9P+P+X/4quYj6DPSrERyevWqjGNjNxTOoi+JviQn5vEG + t/X7fL/8A FVdtviV4hB/ea9rR/wC32X/4quWgPTPrV2AZaq5Y9jNrodXB8RdfOM65q5/7fJ + P/AIqr9t491xvv 6zq343kn/wAVXMWw5BxzWhaL0zVKMX0IsdFB441pz/yF9UP/AG9Sf41dH + jDWMf8AIW1P/wACn/xr DtFwcVc2j0rVQj2GnY/OHVP2YdL8S+K9X1fwlqV3obaldRy3EMKg + xTPEuI5MdmCtjivUPC3hFPDO mpF58t1MFAaaQ5Zq+dP+CbPxj8bfFjwdf/8AC2rGSwmsHEZ + SY5dyABkd8GvqWKIk5HcdK8HFe0pS dKTvY+mwcKbgqkI2Kc9ms6lZVDAjBBGQa5HXfhTBNK + 0uhk2kpySnWNj9O34V3XkEnLUNB5gOBXKp OOx6TSkrNHjd7oN7os23VoWT+645U/Q16d+zx + 4Xh1DVbi7lQSS2ygcjiInoPrjn2zWpdWMX2Vjcq rKoJIIyK7L9n7w4tv4PF15YWTUJWnOBj + IJ4/SvSwdR1JO62PLx1CNFKUXubmux+UbaH/AJ5xmRh7 scD9BVG0hy87nsFQfz/wpbXV28S + atq8xCiC3vntICP4liAUn/vsP+VXbe3H2BWI5lZm/XA/lVVZc zuYULOKt1Kiwk47U9bc9+l + Wktznnr0p4t+fasWdKKTWYPQEHsRSSW2VxcqWBPDDtWkLbdinfZwRg jr2qLlLYzdkkBBfdK + qjhwf3i/j/EPrU4Md9HuusMBx5qDAHsw7VZax7xnn0PSoXtlMv7tjDORgEf xfh3FWqzjuQ6 + S6GTq/hMffhCoTyCPun/AArDudPktZNtwpUn9a662vXiupYHAjZAGOeYnB6e6Hg+ 1Sz6XDq + SFCoWQjPlN391P+FbxkpK6MXE4kRnrTo5Cg4Na2p+HZbJ8wgso7H7w/xrNKYb09qG7EOH cf + FetGPmq5a6wA2HNZjdajdypOKpTM5UvI6u01RXxzxWjBOGHymuCjvGjbIY8e9XLPxRJbt8+S + B3 rRTMHQfQ723lGcVo2pyRj1rjdP8AF8MoxI20j1rX0fxlY3GrW9nFMrXFw21FHOTWikcs4 + NdDsLUE 4FaVmmG96q29o6kAjB/lV61gKkE1Sepm4GhZrk1dC8dTUFlEABV8R8VvF32Iasfi + n4F+Mviz4KeG NGk+H6x+IIZbqSDUPPP+lS7chTGf4x8jNj0ZcZJr6y+Dn7QmifFDwVYajcX + EOmXt1K1q1ncOEl89 eGRVPJ618XeJLa5l1vwzofhNngmskikiGcOssxQw5PYiMWIP/XRq9A + +GusmPxHqt34Us7Fl8PJLN Y30sQeYqWSKIZPeQ/Zj/ANtmrPHYenWjzJa738r2V/Xp1sZ5b + mtWg+WWq2/C/wArep9qIgYZ7HpT lgBA7V4X4C/bIiuLaYeM7Tb5MHnrJEcb0yApIPdt0Z/4 + GK7o/tSeB9K0ywn8a+INM0Ga+IUW19Os csTEKcOP4eHXk4HzCvCq0J03aUT7Khj6FZXU0dT + 4oZotNaOHO+4IiXHqxx/WvbPBmmp4f8O2yHCp Zwbj+AzXjHhyW28c+NNCTRrm3vLORzdCWG + QSI6qOCGBIIya941Rfsfh6bYELTAQqGGQc9f0BrtwU eWm5PqcmYz55qKfQ4/S9HXSNHWGyX + H3pCOu53Jdj+LMavwxr9miSM58tAv6VmrFdaTwrEoP4JGLI fo/Vfo2frV2z1CK6lEcwaCY/ + wPwW/wB09G/CokiadtEWRDzzUq2xxU0cZ/j+Ye3Wp0jDdOahnQkV RbZ+7Tzb46iraRYwAPx + p6w57VDKSKYtSBk44rPurbzPEFqP7kbsf0H9a3GiwORXLeJvHOl+D9cNz 4ou4rS3WDYHc9W + znAHU9KiWhVuhctbbN/ftIMhSi/kuf601rMqn+j42/e8tugPqD1U/SrOg39vrl hNeaRKJ4L + li0bjIBGAO/0q7NYrJz0Ydx1ojJrVCSUlqZf2oSjZdo0g9D/rU+n94frWfqnh2O8iMt kQ4/ + vKOR9RWvdWIYf6Qu4Kchh1FU5kkt28xSx/6aJ97/AIEOjfzreNW/xESpNbHGajZS2Tfvhlex + HQ1nTXOMktiut17UopoSJlQMeN68o31HY/WuG8QWcltuaJsL125/kacpWBUXJXHT6moB3NV + KfXVQ nJFc5qWvi3cqzfN0x3rLudVMsJk1GQRxDnk4/OodRomVFHTXXiySQlLQjjqx7f41q/ + CHxhZ6b8UN J+3O00gnyyj5mYYNeSan4vkv3MGhkxx9DLjk/wC6K2/g8v2H4g6Q7kkm6QMxO + c5OOv41yyx3K+WJ r/Z/uuU9D74tLa18RWS3GjSK6n07exHaozYNDJtkXDVyOkzXOjXXnaVI + Y37gj5XHoRXeaB4ks/FK rDeKLe8A+6T191PevTw+LhiFyvSR5OKwUqGq1RFbQlT7VcGcd6l + n017A/P8AMh6MOn4+lHk/Wu5X WjR50j8kdH8T/Dj4va02rarDL4T8SSROq3cTb7fzWjKLIV + PdSVYdOUX0q7c/s9at4G+GV4vhWW31 UareoBdWJ3rFAikRFsdMPJGx9BbD1FfKUvh3xF4P+ + PieA9A+0a3eSaWmprmLaVBRJPKPPLBZYsnj lj6V6Z8Kv2mNT8E6jHFYXl3p1ypAe1mBAI90 + Pak17WOj00+7p6Hnxw0FLnirPXbbXd22v59ToTpE N8jxuDDBf3KwjcMeXbQqGc/grj8bc+l + fLPxE8L6v+0J8TfE+tw38tuxuTGtu0IljfZl2DDrwZNnB H+rHpX3lF8WvBvxn057T4macdM + vpYZLddS08BSgkVlYlehyHYf8AAjXndn+xHrvw5tJtQ+EWo2vj HTpvMkeS3G26G9izF4ick + 5P8Oa7MG17VuTtppfv6/wDDGeLpclDkaum1e2rUVe+nm30PO/2I/iHr /wCzJNa3HgXVXvrq + 3R1u9PnkY20pZiflQ8x44AxxgfjX6wW3iLUfF1j4EfXbQadeXemNrN/ao5dY HaNEWPdgZwZ + H7fw1+fn7GnwktvFnxxbRtcgCXWryRwuHj+ZERi8gwRw3A/I1+m2vWytr8/kooW3R LZOPuh + Rkj82P5Us2jy8seTll18/61N8jptuShV56d9PLuvyMSSIlm2oXVU3Ed+uP8aqHSLe+RhAQ A + TkxsuVz9O31GK3I7YpHKx6swUfgM/1qCewSc5cYYdGHBFeFdp6H1qSluZEX2rSXAB3Rj+GVi + Vx7 SdR9G/OtO11GO4kCNmKYj7j8E/T1HuKjlml0xHN0BNEP4h97H071yni/4haZpVkDFdwQ + vJIUW2kX JY4znacbfqMUpW6jV4bHb31/DpFlLc6pNFBbQKXkkdgFQAZJJPQVx2h/tLeDfEO + rrYaTqqy3EpIh JgkRJ8dTGzKA4A5yCa+Ov2t/245hpmr6KmV02yeGK9dwZVILKZArj+Hy88 + EEnJ9K8W8a/tpTvpmn DwO9nYOBvjvrhzJ5mekrL0XGfU5z2qGmmS6rufoV8X/2xfBHw8e7s + LzxDp39o2S77i3WYGWBcEkk Dp06V8I/FL/gojH8Q/Gd5DpKxX1lbzRyC3dWdn43Abh04+nP + rXwT8cf2ttQ8K/EvVYvFN4ur3l4j JNNHhI5VLMygBc8EuxOf6V4NN+07rei3k62Ny9rDOAC + I3OSoOVBPfHvV+yja8tjOWJSXxWufvR+y r+1Nc/EbxPFENRl02xihE0Vi0gJmLMCxYjgjB6 + HHJB7V9gaB4lsfEtuW02aOR1JV1DAlSOxxX83f wf8A25byw02wNxqE9pc2S7VklzjHbkc49 + vevtP8AZc/4KKeIW1bTyusWZ3EbjaQlVfngMp+979Kz lh/ZJtbGscRe3+W6P17ltwVyAD71 + QvLTZkxcZ7V4R4G/bot/FWmWokSFbl5PLkEf7wg9ztyOPzr3 Lwz4ih8W6LHdWjI6yruBUEB + h6gHkVDi46s6ozUjkfE0eLolD5Uh68ZDfUd643xBftBG0cwEe7sT+ 7b6H+H6Hiu/8TW4ac+ + YM/WuB8WWhIZc5Ujoa5XNwZ3xgpRPLfHviy00m9UbWe4wQI9vP5+lcrJe3 fiObdqTAIOViX + IVf8TW78Q9OV3tGAztkdCfTpxVHTbbaBtyccVx4qtJy5U9Dow9GKjzLclsbMRqM D61veFGN + j4jsJo+PKuEb6YYVn28JA5XNXbRjDcowAypB/KsqOjQq12mfbkMO4ZxwwzTmstxVo8qy nKk + HBB9Qak0c/adKtZRyJIlYe+QDVsR4H0rqSsea1ojY8LeOntALbxKPNiPyiXGf++h/WurSw0y + V AyTJtYZGJeMV555IYncKT7IO3HtnpXo0swnTXLLU82tl8KkuaDsfjt+zxqsnxU/aP+JPiy + X91JbG LQoXA/1ElwxklVT/ALEc8i+32celW774IaD8Tf22fF2teJDJFpXhrTLeG+USfItw2 + JJOv3QkZlGO P9Sa+gf2bvgx8OvDWmy/8Kr1c6gt/q82t3iXTATzySH5l/75eZR0++PSvKV+ + Gfifwr8CvFf/AAsW wnsfGnxX8Tz2rw4yYxez+UoUrn5Vga7bI7MK75c1NtR00SPnOV72PP8 + A4Y/A7xj43+F1r428AWkV 1p2qvLc2+lpNm9gtS7eUxRuWDJtYYycEVteAfinrXgrWgIZL3T + L2BsNGwKMD6Mpr6J0fwJeeBdDs oLW3ls4LSNY7eSL7iKoAADA4HQcZB9q0dRi0zxqkafFLR + 7LVmiIKXuzZcRqP9scn8ciu1Jvrc6lQ a2Z7R+yF4Ai+MOu+HPinrmlxadqtla3NndTImxdS + OFWObb/eCmUFu/HpXsUcZuY2ncEG4dpjn/aJ I/QgUfCLxOuu/AeK80uwTS7J4zZ6dGihA8I + IiR9oPGTuIHoAe9XbuMQwFY8AAbR/KssS72X9ehvg KMaTk4rr+JmG3K26D+9lvzqhq95FpF + q812dqKMk1uXUW18L/AAjA/CvFf2zviJN4E+FV7/YiySah Iu6IxttaIDktn6ZFcTV9j1XLl + Vzzj9qf9tuD4TweXplncXUkMu2cx4PljB4/3uOlflX+2J/wUa+I +seNNZv/AAT4uuItFd2W + 2gi0+JWgQ4+QyFSSeOSD1H0r6H+Jsmr6zoWoQ65NqH2+4GYYZYSY8MnS Qjq3OSRmvjH42Q6 + NoPg29efVFEMCPm1aZZSk4bBL9O44XnpnnIqoW5tjCs1zas8/+GX7XviW+8Wy x+OtUlv7a4 + cSyQ3LkoeMHgnk4x+Vc38Xfj63hq6vLf4d6kXtnMkawyR5EKsQTsbPTsOOlef+DPAO pfEPW + JrjSVeC08wlZNuAR7V39p+yrNqcDfblm8wnhvWtJuC6HoYXLcZmFO9OHo3+Z4TrPiC48Q3s + s93IXlf5yx/lULIbpPOib5j95T2r3Zf2MrkM7tKY1Xr8pxipNO/Ywvb19sDuT3OzrzWN01ds + S4Qz B3cl+J5tompQad9meaIXS4ACbiN3HTjtX0h4G8R6Kh0d9ImS0uvIZJlQ8BvlwPfv1xj + ArD0v9iTU dPzLZShZkX92JV3oT7is/wAOfATxT4M103N9pjRy26yOMy7ophg8KMdec1q60Z + WRU8lxeFsqkfuP tf8AZ98U3hlsJtF1HyNQmcQoYmyQmQDx64yc+2O9fXPwB/aG8Q/DTxpba + LqGvDWrC8Ls0d7AElic EAhWXrnp3HBr8sfgX8VvEvwo8X2qzRCOSbDB2G5kU9NpzgDmvq3w + H+0Zp194zsZ9eivNtmPN3uAZ EbI7gYxjPH+NZSiptKxzSUqV0/kfqdc6umqFCHQtLGH2g/M + n1/Oua8U2u7JHoa4n4U/G/SfiHaWt 5pWoWzyugTarhW/EZ/T2rv8AW0JiUsOSK8qrFp6ntU + JKUVZni3jrSPscEW9ifNuZnHsCRxWbaL5e 0LXT/EyLNlZMcE+fMufyrnrZMgZAzXDiF+8+R + 1YXWl95YjJB+Xj1qZPvjp+FNVdp7D8acMbz14NT DdNBUR9v/Dhv7T8AaLOOfNsoW/8AHBW2 + bQha5v8AZ8uvt/wd0Bic7bYJ/wB8kj+ldutvvU8V22ue Yo+6jMW2/P3pfJx2rR+xkrkDmmm + 1bPQ0WMZKx+A2mX/jv4WRWF9cWd9LZ3lst7FcW5LOkbM4Uvt6 E+WxA9CD3Fe5fCD/AIKH6n + or20fiV4dTjt3DpHeIPMjYcZUnow55616bDYR2WkW7RwpNYRqLi2iI 4a2tUHkD/gf2K3Hv9 + p968X/4KIfDXRfBPws0i30azT/hIrk2mnW86JiQzyMXkk46ny7aU8/89s19 GsSp2jKP9f12 + Z8ZHSV1ofXnwy/bN8D/FKJYdRmGi6hMNp34COffsw+tdr468DaInhN9WWezitHG2 O5t3ESu + 5HyrtPyFj2AKk9ga/Kz4W+ANfbxjouh+G7s3f2+8uIhPMScxRSLEHGPVzx7MK/S39hz4f a5 + Jd3fh3xFEmteF5ozDqcU+WgO1soyk9G3KGXHIxmtuRN+49dzoVWfLe3kfVWquPB2jeCvDemx + Ig dT5ijpHHbwgE4/32Srkv7yaNXA5bJ+gGab4o0k3nxJS/lkLfYtNFoqH+FpJPMdvxCxinR + YN028/d j49SSf8A61c1Z3k/uO/Cq0SvK3zYY/Svjb9s/wCLhvNTvoPDmp6TEunCWKYSHzJG + 5wy4+6OmOa+z Lq3Ei4cZ9a/Fj/gq58R/EH7L/iPxdp3gvxTPZxX12b9o5lWWKQSMfkUEZDg + jkZIJ578YqPM7I6qk mle2h5b+3x/wUv1Hwbpq6P4VuI/t7ECaMWrxowwQDuLYxjHCnnvXwz + 4MPiH9qf4kPc+L7uSSxifz Jwo2RL6KqDAz7+leffE3xtf+PvFEt3rV/d6jcztlnmfc2T29v + wr6s/Zq8CQeCvBNrEqqLmVd8x7s 5/zitHJUV7u5tk+GeYYr3vgjv59j0XwN4I03w9aw21hb + KiRLtA28Cu1stJiZM26qMnnArDsm+zRI zHORjGOldDoVwWQgnv27159Rtn67l9KLSS6Ej2k + CIwlQN2PHFdN8PNDtZrxVu4kCdeBWVBpHmlTK uVfnGeldX4Wsi17CsKgpjDc4K1F0j6KlKn + CJ6XpPgHTdQsszW8TuThTjoK15v2b7DxFphjlhB342 sAMqfasPw1rn2W+WMlkBO1RnvX0t8 + HPBEviAQlA8nmAEhRn9KuPvaI4cVGl7N+0St5nyD4+/4Jxy eI/C14loxt9Qs1aSzcIdr9Tt + 9gTXx58Pfi1c6B8RLzQ/HhuLKaycwSxOv+qdDjbj3P5g1+/OmfDl YNKeO5hV14XDivxL/wC + C8HwIj/Z8/ai0/wASeHbVrW18XWLFwowrXMLAN+JV0P4V2Qbtys/LuIcJ Spr29NaXs/8AP9 + D1L4U/En/hHvEEjaB4nSxv9SgGLZosAtnAzv8Aug+tfbn7PXxv1jxoq6f8QXga /Vf4F2grj + Ckc98c5r8cP2Y/G8nifWreC0sby+uJmBu2aQMwA6DJ+6o49q/U/9hp5bjw/qs+oLE81 sUSN + WkDPbwgk7F7/AHhnP0FY14JwfNujw8LWm6istD1z4ihZtMtyjZ2Xcqn6+lc3bR8DvW54ztjb + 6QxY5WXUZXU56ggGsS2YZG2vDxK9/wCR9Bgr+yu+7LCLjhiaeOW5HOeTTUUk8fnSoTkjoRW + KKqO5 9h/snXP2v4Kabg58mSWP8nP+Nep2q7+2K8Z/Ys1AT/COWPvb38ox9Qp/rXtNkcqN3N + d55mys+7LM MOcAVN9gB7fpSQD5uRxVsNgU0jJ6H5x3Hw4uf+EztLEWMtrYReTbW6yLx5MI8 + 3H1P2bTk+rsPWvk f9vHxoPEn7SWi6Pp7ebH4cs7nXiBypI/cW2T/tC1jIH/AE3961vgj/wV + B13RkhtPEdxFqsKYXy7l dsgH41315c/BX9o7X7jV9UjvfCHii9hht2vIm82BliZGjUxk7do + MadCMhRmvoHhJRlZ6/wBfefEU 5X/qxyn7JHgR7H4l3lxJEzReGbCLTUJHPnKglk/EvND+Vf + q78DfACeBfAekaesapMsCNOQOXkIyx PvnNfI/7Hv7Lf/COTpGviDTPE6ahqpv7m7gHlvIrS + GVt0ZPBJEa4GQAor7tCCws5ZXOBFGSSe3Fd OFg4OU5eh1yklCMV5s4e/wDF2kaj4z1Gy0jU + 7OTUIpR59oZR5sZ2rjjOR8u386fdTCJsX0bRejMP l/766V+WvxZ+KV34k+NXiTxBpl3NBLe + 6nNLFLE5VggfamCP9lVr0L4Yf8FBfHXgWNbbWruLxBYgA NFfAmTHtIOfzzUzpRqa9S6OM5N + JLQ+3/AIg/EFPBrWMEbxPd6nP9ntEkfCu2xmPPsEJ9+B3r+cH/ AILVfG6++KP7ZfieM6ot9 + o1hdNbWrx/6vcoHmAAddrEqD3xnvX6Kf8FRP+CmsXh/4M6B4j8D6Ze2 eq6feSRtCHAEEkke + ElVwMEAqwIKjO6vxT+M/7QeqfGG0tbbxHDYA6fPcSx3EUGyZ/Ok3srkfeAbO OmMmsacHSbk + /Q0r4pSjo9DkvCWnrqHjCyjPCvMpOTyBnrX2z8PiFsYVUZCgAc9RXyH8A9AbxL8SL SPqq5d + ++AP8AIr7H8IRQ2wRnLKiMBXNXezsfUcLQtSlLuztIZkuLbGM7cZOOtbXhyMCZWj3HecAe l + cxDqlvJcEWU0ZPQgHGa3vDc88dwAVJSTkcg4NcUr2ufpOB/dJOWzPR9F0P7R+9fkR8le5q94 + fv1 tb6aSQkAAgDH86zNF8RL9jLuQoC/Mc+1Q+GLs6zeSR4ByxYkdwK57NJntdLt6HrPw80F + dZ1QPcnK jawPevtH4K3h0PRVihi+YqqqwHOTXy7+zjoUeqZChdh43E56da+qPhtd20SwKpH + lxHO/d9444I+l duHukeZmlSM4ci1sfQXw7tf+EliWPbmKBAc471+UX/B0/wCDUX4a/Di9g2 + I1rrd0Ax+9tMKgj9Af wr9eP2cdOXWzP9j+6FAGP4q/MX/g6J8Lz33hHwBodjB59zeXN3dLt + XeYyFABxXpOnzcrW5+cZxXX s5Um+x+W37Jt9FqUMdqsn2K9sD9qstQjH7xeu63fjDoxGQD0 + Nfqj+wv4lvfFrXMPiC0hivo7YFZo ovKjvIA3Lbf4Tlun86/Pj4Efs6PCNBl8KLcww3YSSaQ + j5Y7xAwKj1RgM/ifSv04/YN0tNS+G0erX dt5Vy6vEjHkqu750J74ZePbFcmISim2eFhXzyj + Fd/wCvM7f4kRpFoFusYchLpgcnPODmuUhAA7c8 Vv8Aja5mm0a58wkrFqkir7DBrnoDnH0rw + MUrzXofTYP+F82W4+Op7UPKF6dKjBJGfzpC27gnpWMY 9WVNn0/+wbc/avCGuwZOYrxHx6bk + /wDsa+g7aEgZ7Gvmv/gnveCW88S2rHjZBL+rj+tfUlvZbkBF dyWh5j+0vNkdswEnzdKvADH + Sq72JRjjNJ+8HrVpGLPxLtvg/4D+JerfE/wAe+OdPiHh7RJ5jZi3J h22ljbSSuVK4wWWK0j + z/ANNz3rzz4MfA/Vte8E+DtQhv/KvNf0w6rc28gwtpEWmZBnr/AKq3kc59 vWu//aehf4T/A + LBmh+EtJhkGsfEnUbDw5DHg73a8kF9cfiLaKzQ/XFeqeGNCttIvdSygW3gt7bw9 Zqg42Fha + jH1isrtv+2+e9fQYeUnonu7L8O/rf5bnwtRtWS6l/wDZg8K+LE8Y6fZ/DKS8k1MMrjym ICj + g7n7BR3Jr9BP2iPH178MP2W/Ees+JpoW1W10lw8kfyo85TauPq7LXN/sS+BNP8KfDUXmmWqR + 3 OosWlmI+eQA8ZPp7VwX/AAV18cnQ/wBnSz0S1YibXtRijYDqY48yt+qIPxr0cRZJpbGibS + 956n5s fayAVLZ24GSetMkvjHHuRuR2qoztGSsgPB5zVe6nfqn3T2rj5uoJM8m/bW1LS9Y+C + +s2fi8ExCHf F/eRwflYfjX5fXqeXdOFfeATz61+pP7UHwTb45/DufSY7qWynJDpLGu48c7S + MjIPpmvzb+Kfwrvv hV4qudL1lhI0bfI4UrvXPUg8qeOlZSvPbcubvoemfsXaHDI2salKy+d + EUgUHqAQSf1Fev6j4k8yb yIJNuXwyg8n8a8c+A/hK9sfAE+q+Hr+S1uGlZZo9u5ZYxjIHcN + 1wRXZ+OfAc99qbp4etoLUOq7pX UOwGOozyT71zpK75mfc5NOdHDw5I7a/edvfxXttatNoU1 + oZ9o+SV8FfeqnhT4zeI/Duqbbq1F2iH BMcqsvucZzXAXvwO1iSGx/sh5pCFKSiQuUcZJzlf + r0rR17wVNpFlYQ2vkxtbxlbh1BQzEk5IPt0G fShxp9X/AF956tPHY2pN/u+W3no/wPdvCPx + j/wCEwaS3tlZHYhJEU/dOea9Gm1C78FWklyI5NksK lcDGctg18s/swfb5viDNa+GY0uIojg + mQEEsDg59K+8vjF4yv5/2a7PTNf8Nafo+tWzgw6i1ySl1G wKgLHs5bdwDuxuxmuepStU5Fs + e5SzWpHB+2n1dr9DjfAP7bdt8NlS3vY5toOAFPXsc5r6V+Bf7Xm mfEPWbKHTGk2zEKybuF9 + s1+ZPiG41iCS4fbNK9oRtT7PGfNHcnKkg17f+xf8TfEF3erd+HvDwuBb SrF5JQJLPIT92Nc + jd1HOO9bU6SWt9Ec7z2Sm4VYtf9u3/FXP6Jf2KtPW60cTmI+S9uHVuhU5wVP5 gg+h9q/M7/ + g5pmGhfEv4e20bj7RPDLLChXPmRrMpPT0B5PpX15+y5/wULtPh18E9CHiHQnklvLh7 aSG3m + JuYGQcpJAyK6Nk8DLA84Jr47/4L863aftE/tM/ASTQ7qztbCbQ7rUA0U/nTSQTzIiytGB+7 + RtpUB8HIbgba3hze15ls/wBEz4DH4idavUqfZlovl2/4B8XfBzU5dR1DTYtbu30+xjja5SFD + tMMi qygDHsAPq3vX39+w9BewfB/Gs7VCzHygF253IrsSPXLn9a+d/Cv7NulfHj4zQRaLBJY + WtxPE0cSY SSPAIdicEKCVU9OrHAr7h8OfCzT/AITaJHpegQNDHGMsWdneRu5LMSSTisswXs + 6fLbVjy6Lq1ebo jj/ibb7dAJUAFrzcf++TXDW7kgZyO1d58VDt8Ose32ofqDXBRNxkda+fx + Wkl6H1GHfuP1ZZ34Ppi mucnOTk881xfxb+LC/CaxsL68s3vLW4uDDN5bfPGoUtuA78A8e1a + OmfEXTdZ8QLp2jzNczG1S7Zk HyRo/Kbj6kc4qOSVlKxlKpHmcE9f6/zPp/8A4J63234maxb + Mf9fp+7HrtkX/AOKNfY9ooQDOOtfD v7BWofZ/j9DESMXNhPHweuAG/wDZa+1tZmktLNngJD + LzXXT+FM4J/FI09gaUDsR1p32FT1zXzf4G /az8W+M/27dd+EOgaPo80ej+F4/EsEs9w0Mt8 + hmWJ40OCoZS+eRggdRXup8caxEdtz4J8XiReGCW qOoPfDB8Ee4610xi2tDzJ4+jCTjKVmu5 + +ZPx6/Zq1T9oD47fC3xX4C1fw/q/hj4dDU9XNik4W4ut Tm2+QVjIxtSOC3iBzkc8YrY8MfB + 3WPDun6FZ+ILK7SVbma5uWljPUIttAM9OizSf9tfevlDw74Z+ Kfwh1toLlJ5vJcgT2UpdXC + lwWGOcfunPI6DNfVfwO/aV8Z+GmtF8TN/aMSEGS3u03fhzX0lOEcO4 7W/4f5dT5L2fM73dl + b87n3z8JvDaeGvA+m2cahTHEuQB6ivi/wD4KseKT4h+KWkaNCS0Wk2LTN6B 5Wx+e2MfnX27 + 8OfHlp8RPAthremWUmniWAmSFjwGHGVz2OK+Jf2g7u28efFPXJ9SijuYhcNChYZ4 T5ev4H8 + 6WLnZXaKT50fFd7pPzHCkFiazrvTSDheDX0VrvwY0vU9zWDyWzen3l/I81wniT4I6jZMz WQ + julH9zr+RrznU8zoVN9Dxq+t2jJ9hjnpXw9/wUA0Jrjxmt08Dy7IAqPj7oySfw4/Wv0E17QX + sZ JI7yJkkU8qwwePavjX9sbwnN4z+JsGmRTi2t7i0dp5GXKwopHp3J/nWlKaclc0S11PJ/2 + X2/4oq4 juf9XJcPgn69Pxr0mXzrGywiQXaocAuTHIfYkAg/XivM/gfLHZaNNaWmd1rKQfqa + 9Bg1HzrkK3Qn p71z1ad6jufp3D+GhVowUux1Ona5Ppelri2nCkHIS4Rxn2Bxn8a4rxPqk9z + dSTXdk8xI/dK8qbQf U7c/lXaabbx3UQClVQjkZ9q5rxfdpFqC2OlKklyx4Xsvqax5XF2PoM + RlEKFO6k/w/wAjr/2UNCNj raXFzGBdXcgaTA/L8q/S7xh8DIPib+zJp9xNaR3934e23yR7Q + 5aIf6xAO525YDuQK/O34E6XMt1G wf51wTg96/Xf9mzR7rTPgVb3ktq9y6WxYxqM+aNucfyH + 40Jc05dzsxFGksBCC010/r1Pz7+L3wH8 OeHPGL3ngW7jvtHvsTiJx5dzbhucbHAYiveP2Tf + AvhnwtLbaqbG0nli/ebpI2DJ9FzjNef8Axl+M GhfEXxpJB4atTZpBK0XkSJyhBwVKn0IIru + P2bvgTYeK9ci+02Ns3mnlGiU4z+FEIvntE5JZLV+rq cpJq3mtPlc+mQNN8VlJ9Igt7fVVZV + s4VwJbu6Y4RQpJ3Z+X5uwBJOBxJ+3h+zT8KvAvxQ8KeB/DG iaLpGsQ+HFvdQvbeFI7zUZZJ + mG93I3SOXDSEZ6Oexr61/Zf/AGbvDfg3TdMXQ9G0+zu5Yi0ssNqi NtGMgsBmvnj/AIKffDX + SvGH7Qk1x4jZY54raKG0kV/LkTCb9yv8A7Jweo6e9ddOMqdSzlrbp9x+a Zq+fEKC+zd2X9L + +vU4T4IfAy4+Grw/YbxkhkUymURASysfViDgduDxXoXiK5e5cG4YuwULk9SAMf 0rL8Gatea + jo2mT38gRPsyxqUHykjKsfxK7uefmFXNcLYy2CPUV5uLqSnL3jswNKEKalDqedfFO4W Twlc + bCCY7tMgc9q85FwAo9veuv8AiAkseh61uUgNexOn+0No6fjmuBW6H/1q4MRFcyO/Bz5oz9Wc + z8dvB93468PWNvpEZnMV2GkUPsbYyMhIPsWBPsDTfgl8MW+GOhTw6hKbieWXarsdzLEowi5 + PXHJx 2ziuoF/ubH5EVKkxf3qVJqPJ0BxUZOXf+v0PXf2L9SFl+0j4cycee8kJ/wCBRN/9av + vzWId9jKG/ u1+cP7M2q/2f8fvCcxO0DUolP/Ajt/rX6V6jbbrd+v3a7KELwOCo/wB40fEtn + df8K+/4LkfCK+z5 UPjTwdrGhykf8tGiH2hAfxjFfpDz71+ZH7b10Ph9+3X+yt4vz5aWfjoa + RM+cfJdp5JBPp8xr9OGO 1iOePenK8UrHx2aw5a7ufkL4egTUdamtbUeZPcL9lhYDqrkRFv8 + Avzbzt/22r0z9mL4L2Pj34oap qPjmE3H2Kbd9n/5Zljgjd6gDHFeT/st/F/wh438VXa6Xq1 + ms+mxO8dvO3lTnKrGpAb7wEcecju5r 6/8A2WPCg0zw7dag6kS6jMZWOPU5r36ELV+VrZXMo + pKjzPe56F8QPEVv4F+GmqXsaxwxWVsxRQAq gKpOB2HSvzduviwjarJH4lguNOvJWLstyhTc + WOcgnqDnrX2j+3Zr76T8F10yF8Ta7eQWKgdSHkG7 /wAdD18n+NPjHrOoeI72z1xNO1zS45T + DHaalarOiIpwArEbl/A1vVh7V8q/r8DJSjCKcupltq39r WrnRriASkfKThgD71TsL3Upp3+ + 2xR+SnBfo3AGTj65xU9p4c8H6zN5ek6RqPhTUsNIn2G6Mtm+0b m+RwWXgHocVjeMNA8TWNm + l9oDO2mXCsF8yPGBnGd2MHNcdWjys6Kburp3Ll54etta0PZqUUU6yKZ PnUH7xz/AFr4q/bu + 8IeHfhZHqmsapugW8szbKinq2ScLnnnNfYR8eR6JpQh8QNGlwihCY/mjJxxg 9+K/L3/grh8 + cf+E1+IOm+HdDdjb6fEZ7hzxvdj8oA9AAx/GueEE3obcyW6PBPhDr/wBmv7qMsyLO wcjPP0 + /WvS9P1ZGycbUyeQOfyrwbwfqBs9SGWwe3vXq+neK7W1tIvOl2kL0Y9/StHPmvJH3WQ4qU a + as9j0mXxJbaFo/n3cuFUAY7k15T4t+LP2PXpdTwRIU2CMNzj1+tcv8AE/4kG/lEdizeWp7Nk + NXG y3P9pSrG7ACcYLnOFb/P86yle19zuzXiH2i9lTd2j6L/AGdf2gZ1Mja7dR2fnNtSWUNs + TnqQoJ/I V+gGg/8ABYnUPg/4H8IaB4MkstR0SyQtqt0ysbiYg/djUkBF24+Zs9+BX5GafLB + bW0UF3OsVxG25 8kkBcDGMdx/WvQ/heYb/AFiyzcmCcAlt7fISuSOT0J7Z45rN6K7Wp5tLNJ + ySp1KjaVvv/M+i/wDh ou68RfHTWfEUZigTX9Qm1BI0I2RGWQsVH03V+hX7CHxDbUdXsJXYN + 5rBTnkZr83vBPwgh8VWV81k Vt5EEctqA+dpMe4ggdBkdsYAr69/4Ju/FGPSpHtdcdIb3TnK + yRSMBlweik9aVKoozTeh9dgs4p18 J7FK3KkkvK2n3H78/BZ7VPBdtfvLGALYPITx5Y7kn0w + K/OX/AIKefEhdf8Xa3qDXBexwlqoAysKu +Cw+o8sn2Fe7/DP9pc2HwevJxdwiPUFWBInbO3 + apDjHpk18Tftg36+I9B1YX95I0EiPceSjZLSrH 8uR3Hy89sL+fVZKpJ3u3+B+aYuhKFepUk + 9W/6RwOqftZeIv2b9X0vR/COsJq1gtjHdSi6USxTNJk 7V5yqj7vB5xnuK9F8H/8FFvDHjC3 + jj8b2NzoNw3BmhPmwE+uOo/Kvhi8km1bU5WvJZDjCKgPCqOA B7DFbfh7Q1llXcOO+azqQhU + 0ZnSxFWkrJn354216z8RfDafUdAu4720uWjkjmj+643Yry8ahufmt b4cEQ/sv28S4CRRn/w + BHsf61xkeo5k6/WvIxULTse/gKznSvLds6GO824wanjvSW4Pb61hW95vXI PJ6VcguyRg9qw + UTeUjtfhZrB034l6BdJ8ph1GBsj08wV+r93H5tsxHda/H7Q9SNlq9rKpx5UyPn6 MDX7GaNA + NU0OynTlbi3jkz67lB/rXfhdInl4qpyTTPzp/wCC0sLeH/gv4Y8UW+Vl8HeMtM1UOOqh Jx/ + iK/UWwnj1WxhurVt0VzGsqEd1YZH6Gvjf/gpr+xxrX7Sn7Lvinw14IWNtS1BEltvMOAHSRXH + P /Aa0Phn+3t4n8C/Dfw/onif4SeM7vUtH022sbueKWAxzTRRKjuuT0LKSPY1vDDTqK0e/dH + zuaQVW opJXR+CGgeMPtV1DdWMpguoGykiNhgp6rkfnX1l+zJ/wVR8c/s5yW2m6vMniPw+rc + 2l4cyIvfy5f vL9DkV8F/DjWd00JJLKXOc+legT6kl8oLDIHy59D2r6lU3B2ep83SxEnFXP1 + M+KP7b/hL9rC/wDC F94SuXsLLR5H1DU4L0hGs2RMIC2cMMs3I/SvB3+Pfgm68XajbnxHphk + s7aTUZ5Ek8xPKX75BXOdo 5OO3NfDHi/XtOtdDvtO8U36WlpewmNn83YUBHUHPBHX8K+aNC/ + acT4S6jrdrHMmsNJpN5osEoPyg XEZheUe+xmwPU1hKHLdxZ1JqtZNaL+v61P2C8JftWfCDV + tQlDfETSre8FtILOOS2m23TnHyBwh2k jOMjGepFe16N+3d8Gfhz8KbSPxj428OI1ral5YJL + hd+dx+Xae/PSv5ttU+K2o3FyJ7C6a2xwojJD L+Nc5feJbvU5d9/cTTuerO5JrCfspvVs7MN + iPY3VtD9bP21/+C2vwzj8RR2PwK8FWetRwyE3GoSk 26SH0RV+99SK/M749/F2P4x/FjWvE0 + EL2serSh4bZ38z7OoULt3YGehPTvXnUlwZ5Mhsgc4PapYf 33zgtn19K45xjO6iilVlUdnuX + 9P1No7wmRsuc7SOxrR1HXZUhCp80uMDPIGe1c3HPiQbcnb0q/p7 s98kc2TIflC4yV7/AJ1z + JtO6Ouji5U4OMWTzWOpXJVpoiwzxk4LeuBV7QdGvNQv0hWP5ydwUD86n 0vzNNEFzqRfegZU + TPPJ457d+fpUkHiqSK7jbTI5USJs7ZHyFA68kfzrb2adlexVKrBTUmaUnh20D xrf3ESyhtv + zK2QK9F+G/gizntY7vT5ZbpbQFpGVfRSdvPPQV5zq/iSHUdWOoWax4DCTaw5Y8dMdQ PSu88 + LfF+DwndGzW1mQSr57xR8bmPTI6Dt9PenUpSULRPc+v0lH4I83fU9C8K/FbVNEjiudEt5ZY + 7Z0VygJ3KMgrgnn7xHHY17P8I/GdvJ8QbvU7Kf5pyrNGG27WCjcMD0I6182+CvH8mra9ZrHH + PY/Y 51MaTIBHIf4g+Bzk8c9a9b+Hs0+n6pJdaFbeUl8yGbYo+XHAJ7AE1y1KbvqOlilSmpx + 2P0S8A/HK 8j8IadaGcTW0jPHKjn54flBVj7E45z61Fr9/fWlwup6k0F5C8bQshOd28EDI9C + A3P4V4x8JNYuvi BpsQ0+WS4vLKIiKNEA8zYpJBI6k7SPXgV6l4WZvGWhw2ksw/tEkeV5qna + /yk4PoR/M9KvDrmqbE4 2tGULSZ4z8RPBMei61LLpkTrDI67k6hNwzj8wR+FT6BpskYQmNv3 + gyMDrWN+2rY+OtC0qe98JXUu nXCt5s+yMAsoiRWKnGOkYb8a+Hrn9rXxp4a8SPHLrurF45p + AySzsdo4x7Z69K6nRs7s8ZVmk3LdH 7K+AJWX9m3DKQQr8fSU152l0TJhs9a+Rv2WP+Ci/iI + rFp2r6kZlkygWb5o1zn7wNeq+C/wDgoN4a n8cf2H8Z9E+x75zCNRsW2hBnG5oz1H5Vz1sul + Ud4vU9DDZrGgvZzjt1Wp7pa3GBtJz9BV+G4yBnm quv6OmjywTaZOt3p99ELi0uV5SeM9CKj + tbgkcnJ+leVKm4PlZ7EK0asVKLumbdtcksCG4/Wv2h+B d0ut/BvwlerhvtGlWz5/7ZrX4p2 + dxsOa/Yv9ijVv7a/ZR8Czltx/stIyf90lf6VadoaHh51U5IRl HzPT2iVlwygj0IrNk8H2Tu + xMEJyc/drUp26iMpQ2Z85RxEo394/jY8IeNIdFsxPeTRxRAbxlsYXG c1w/xT/bQur65ls/A + X7i0U484/fcjuPSvHdU8VX+pabb2LzEwxrt68t9awTYOkhB5I5619dXrpfA jihQgnzM3vE3 + xH1XxbdtL4hvJ7tnPO5zwPYViz7Zw7x5OPWoyS3Ocn+VAkVMliR2OK5JVJNXZ0W7 EYYjrzz + TCSxye9KxG4nt2pmfmP6Vxvey3NEhrt5bcGr1oxFucnhuvY4qtY2TahfJDCVDyHA3HAp4 uf + 3RC9+PwqYvl36mkdyS0AF1HuG4M2cHvW1ocmy6nlusRvKAobPzJk5P5jI/GsITmCdXQcpgj6 + 1u G5juo0k2JE0jHDqM7uOeOxHH50Qi5aMpS02NRbZ7aRLnzY7pGHykRkR/7ozya2YdIitor + ybWbaSQ FAURDjaxGST+n51tfDXTrWfQSLy1DpbxSSJM65ZicDgegJJPet3wtpV94pujYXIh + mtLkBZJEA8sl ckcdcYyOO9dFrrbQ7KTaV5fLqeY6laQ2lzts42BjcCJmP31ZjtYjsa6X4co + fEevf2fdyC3e52QAx 8kDIPPfA54rpfF/w8TVVnOmCET6evluQvXCkgDHsMDPOa5b4drep4w + Fxa2a+YjAKCdroT7dT1yK0 irK97F8zpO70PZT8H49KiljhAMrSZMomJlPoSvTk844PNdx4B + lv/AA1plzba8PNW4tjBDcxPhGII Iyex9jU3w2nf4gW8DkpHdQLGswjbO4su1uOh7MD9fw9X + +H3gC20q6/s/xKEMcLAOx+68LAjJI4B4 6fSs6kOfVot12o8tyx+z74gufB8LPo10ReLG3nq + MhUByu7ce/wAy5Gf4vTNew/CzxTeX6Q6iha2Y TK6rI3ILZXIP4fhmvJtI0bTrXwrqz3NqPt + kTLHD5CeX5y7lJDgEDIAH19a7m18drp3gTw8ttEZpk tmhKp8pSRnJLkH0DhRn0rJ0ZwfNEu + NeM1GMo79/62PYodUX4ueBPEFhpkCXl8trJEJLlN4ilbgDG OQQGB9jX5f8A7VX7P+meE9fh + uLoTWNpqEaS2zv8AfiyoZ0JH3grEjPtX6P8Aw18Zt4fiuTay26Tg JciUNtaTK7cfgSx985r + 5i/bf8IWFpo3iPU7VX1GxguHneCOI4wDnCnHCMzqMjGAtdT96PP8A1fQ4 nFwm/wCXz7Hw54 + UNx4H8TWcgkDJNiSJgwO9SxAyOx4/zmuy+MV9LYePLS8tnfF5Akob+Ek9SM+4r zK81e4v/A + BJ9p1pkHmvvjRB8sajsB2AxivVfiPMur+FPDN3cRAhcxYwfkUjdye+Tmrpt6af1uVez 5lts + fo/+wp4yf4v/ALJ/2RpXnvPCOJFU8uIXOCPwIB/Ou0tbnawySBXhn/BGT4xW2har4u0qJYJV + fS3ncOMhljZGKn6jP5V9R/F/wVZ6Iljrng5hJour5aIqSRG45ZD9M1zZlhHJ+2R1ZPjoxnL + Cy7u3 52MK0n6Z578V+uf/AATa1U6r+x34X3tuNs1xAfbbK2P0Ir8gLKff3r9WP+CSeqjUP2 + TFhySbPV7m P6ZCN/WvFatFnRnS/cfM+nKKKKk+UP4HzMwPBPAwOaVrkj7pI9ajU5BDZoA3n + 2HPvX0PM+Tsb2QB 8HK96aZDyFyc03JR+DS54znmuVzve+5VrDt+7ORx3ppXLfL9KQfKc/hT + mGGJB5PepcdL9h7DD8kg 25GOfpU0UgZzI3GOo96gkG49c4pVPTJx3rFKWxXoTRL50wDdWPX + tWhFBKFEahxzhARwc+lVLGMSM DkAL3NT6dc3IuVW0dlfPyjPAP4100Y2SBHuPh23l846XpM + 0SLZWcQbfF9xigLEnHqx49q9N+Gvhs Jo+oNdNC0jRuY3jBCFwowqgjjNeY+Gbu30Lwu73Fx + FFO0Q8133MpLL6V6x8N/E1lfaTBdWV0sUEK CExuCF3Dknbjrk10zg1H3f62/M7o2Sut+pmx + yzS2D22qWoikv4wZC6FGkZWAyOOnI5964pPBqeA/ iPBZThp5J5DP9oZsKgXnC88NgHnrXrO + qeHrnSIkeeQ3Xmv54lySY+/B9CO1QeIfBVr4pujfyr89o RIqBiGcdPlPuTz7elEHZ3T0KnK + 7v2G/C+S08KeMGjnf7MLkBYzI/DqeQw/E/pX0hp2mrNY/6VuWa 4nK253AmUBRnHqrKenqPr + XhOueHbTxFNHcJFCbi1MYkQjZk7RgKfT5T+de1aRZRa7oNkNSmxHbEy W8gP3WU4KE5oi7yV + 2ZvVJs7PxD4Ku9V8Cx2GliJbm1mExQ8tKj7d5B9uOBzxXFDwtr/hj4kSaZPC ptLHU3e6Erj + y5U5yVb+FSpOB/hXouj60+q2to9i8kd9axMZVzhZVUkHPrnKkfWsnW9YE2g2msyMi XF/K9n + IpGBNFtz847MGJAPPFbWV72JUmtJdTZj1x9C0GCRbe3kexbyi0+Wea2c74Wb3Afbnvtpb3 Q + 28Z+HriC6hgtmuLK4syjODC6z4Q/iMg57VxHhpZbvTp7DWrpY72BURJgCYrkR5IBz0IU9uOK + 9J8 F6YukjTYIjMbi+mQxtcHj7y7kKdMA/Nu7g1k6dlYbqe7Zv8A4PU/Mn9oT4A3fgKK51W0 + EK2Vrqr2 kcK7t8YYSEYJHzL+5fn1qOO8e6+AEzzM0ptZUAyeYixYAD2619rf8FIPglfavZa + Xf+GrQS2c5e8n sUjJLPE8iSMNuGJCgk4zwTivjWe3Ft8MdVs2iNtFdXSqMHchxJgAE88Zro + inL3r9iH7yUlu7Hrn/ AATb8fr8LYPGusagiTxS6FPbDe2F3NgAeueT/k19y/sMftKf8Lq0V + PAPiYGaw1TC2b/x2TgcMPb1 9q/MnQb1vCXwt1OG2uf9IluhaL5Ywsi7uSPXOOtfQf8AwTm8 + Sy6F8S9EneWWNo5F3MvOFzxnHfIx +NdlOKmnCWz0+5HLiIunerHdar5I+3PF3hifwR4pvNL + vyfMtJChOOuO9fpR/wRc1Rr74C+JrRjn7 LrAcc/34V/8Aia+Fv2j/ABD4W8ZfEFHivY9L1e + +gjKPIw+z3UmAPLJ/gfjHPFfZ//BFK2vNC8PeP tL1qGWCaK4tJtkgweVkGfpwOa+cxmFdFS + utND2KuNhjsInfXS6Pt8gqeaSp3TeKgryvh0PBnTcWf wOsvzEdfcUqEBhkZ/pSyjGcVFn5m + +tfQvZF7oV05PIphHHSpB9+mt/rT9TWNaXI7FbCHG0Bs+tOP TrSN/Wm56/SlG62AG9R+NIv + zjA5NJL96pLHm4XPrUWUpKJV7K5f0yMIpEqgpgZ55zWx4e0hdV1Sb yy3lxqGOxCCASAcntx + 3rIJwiY710ehOU8JXJUkFmUMQeSMjrXdTSUkOk7y19TuoZIr9Ht7NYfIim UAE58wbcDPsoG + a9R+DNlazaQrTsjK11JGo+9yBggfXIOfavJvhzGr2zl1BJmbkj2FelfApinh692 EjbfNjHb + KnNbVF+75l5fidEaj0a6ux6LpGp3bmf+1IWMEkXkBCMqjLldynvkEce1anhBFi06KVH8 6Wx + zBIf4kRm657kcf5zXOLO41i5QO+0yxEjPB5I6fTitbwMc+MNRQ/cMI+XtznPFcvKloa03eSN + l IFsvEwsbdTPHqTnZlcIH2k/UA449DXR+HGfwj4TitYy19BaqdpVssxyxIPr1/SuasJGH9k + MGO4Sq Ac89DXS6KojtpPLAX9/J0470Qlr9w5SvLbuekfDPxFHFoEsV3M5nYjDlfmUEc/X6V + H8Q9NGn6Npd xcSzQxJeMI3UbwdwDqeOg4Ye2KqRoI7awZAFLRqSQOTz3q/4xjWTwzLHIoaM + SK4UjI3DocevvXXC Xutoycrsx5pBqOh6imqB5LiSIH5G+XduAVgR0yMjFeieDdXk1Twvp7r + NG15pBCxB1zlSp53dsHAz /wDWrznwSxk0OcOSwNlMSDzz8h/qa3LmVoNM0wQMyB7WQsFON3 + 3evrWtSSavYydR6pHbfFn7Vr3h bT7jSNQkjfSI5bmOK4OchsrJg9cbXP1r4/8Ajp8NrT/hD + Nei8OiO1FhcXWo2jScJMvkiSROeVKeW 5Ud8e9fbllZxT/CkvNFG7/a/K3MoJ2HqufT2r5X+ + Ocanwn4wjKjZHbTFVxwp2SLkDtwxH0JFYyl7 PVL+tC1FSSPlP4g3B0jwZ4fgsm3vcwecV/u + HO3/69epfsweLG8OzJNFctHdJGDxwFxzn868b8Ykv JpYc5CcLn+EccCuv+GsjBuGI+Yjr2x + XcpNRsVJ3iovrdnufxy+Od/wCIdASeC9lEsUu8lWO786/T b/g31/4KiR6n4vt/AHxbuPtFx + qUC21nqDnL4UkojHuBk49AcV+Nfi+Rns2DsxGehPtXrv/BLe5kt v2mPCrW8jxsL+PBViD19 + qujCOLg6dRXUrr0IqUVDDuot1qj+t+k2g1Q8KSNL4W01pWLM1rESSckn YK0K+GkrOxC95XP + /2Q== +X-ABSHOWAS:COMPANY +CATEGORIES:My Contacts +X-ABUID:685FC9B6-8446-45B8-89AF-3F3BC70CA03A:ABPerson +UID:a nice UID +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/van_houtte.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +PROFILE:VCARD +FN:Vincent VAN HOUTTE +N:VAN HOUTTE;Vincent;;Dhr.; +BDAY:1978-12-31 +TEL;TYPE=CELL,VOICE:0486 11 22 33 +ADR;TYPE=HOME:;;Brusselsestraat 108;DENDERMONDE;;B-9200 +LABEL;TYPE=HOME:Brusselsestraat 108\nB-9200 DENDERMONDE +TEL;TYPE=HOME,VOICE:052 11 22 33 +TEL;TYPE=HOME,FAX:052 44 55 66 +EMAIL;TYPE=HOME:vvh@gmail.no +ORG:Advocatenkantoor Suy\, Van Baeveghem & Van Houtte;; +TITLE:Advocaat +ADR;TYPE=WORK:;;Brusselsestraat 108;DENDERMONDE;;B-9200 +LABEL;TYPE=WORK:Brusselsestraat 108\nB-9200 DENDERMONDE +TEL;TYPE=WORK,VOICE:052 11 22 33 +TEL;TYPE=WORK,FAX:052 44 55 66 +EMAIL;TYPE=WORK:vvh@gmail.no +UID:a nice UID +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/mustrmahn.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +N:Mustermann;Anton;Karl;Dr.; +FN:Überwerbung GmbH +NICKNAME:Boss +X-MAIDENNAME:Müller +X-PHONETIC-FIRST-NAME:Anto +X-PHONETIC-MIDDLE-NAME:Carl +X-PHONETIC-LAST-NAME:Mustrmahn +ORG:Überwerbung GmbH;Marketing +TITLE:CEO +EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref:karl@mustermann.de +TEL;TYPE=WORK;TYPE=pref:+49 30 1234567 +TEL;TYPE=CELL:+49 172 1234567 +ITEM1.ADR;TYPE=WORK;TYPE=pref:;;Musterweg 1a;Musterhausen;;12345;DE +ITEM1.X-ABADR:de +NOTE:Test vCard +ITEM2.URL;TYPE=pref:mustermann.de +ITEM2.X-ABLABEL:_$!<HomePage>!$_ +BDAY;VALUE=date:1969-08-16 +X-AIM;TYPE=WORK;TYPE=pref:bethel69 +X-JABBER;TYPE=HOME;TYPE=pref:bethel69@foo.com +PHOTO;BASE64: /9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAA + QAAAABAAAAGgAAAAAA AqACAAQAAAABAAAAS6ADAAQAAAABAAAASwAAAAD/2wBDAAIBAQIBA + QICAQICAgICAwUDAwMDAwYE BAMFBwYHBwcGBgYHCAsJBwgKCAYGCQ0JCgsLDAwMBwkNDg0M + DgsMDAv/2wBDAQICAgMCAwUDAwUL CAYICwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws + LCwsLCwsLCwsLCwsLCwsLCwsLCwv/wAAR CABLAEsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQ + EAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE + 1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol JicoKSo0NTY3ODk6Q0RFRkdISUpT + VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW l5iZmqKjpKWmp6ipqrKztLW + 2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3 +Pn6/8QAHwEAAwEBAQ + EBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3 AAECAxEEBSExB + hJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 OkNERUZH + SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan qKm + qsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAI + R AxEAPwDmrj9qzxB4q8F3MniG/uYdSubhYYxa+U9zJGkYJQQNMpbgKwZV4KeormNe+MXiG9 + 0sWN/d 6Zql/qN1NcTzRW6EMXAVV2sg3SKwfPHGW5PU/NXgq90/xwJo9KS61eSaGSUyWqMGj + KqQs8kxJWDG TydpcEqo5yf11/4Ji/8ABJXw38XP2d9J+In7SN94qkuvFVlLceHdJhvjB/wj + 1pKCIrre0Yk+0FPm G8lIw6jYWBY/u9XinDYCEXtFaJRtt2SWiPiaeRYjHSc5Xb6uTf66s8/ + /AOCc37dE3wl+P1t4X8Tv byeB/H17a2d5Yr5cENlLegRwyxRgbV/eyRIyqACkgJ6V3f8AwV + Q/4Ja+FfjN4Pvrn4F6nL8NdY04 Y1WDR1EVjrFsALjDWzHZBOB5bCQFFycMGFfKv/BTD/gnv + 47/AGEfiLYv8B9Q8ReOfB2qrBa6ZqUM fm6noV1BKk8VrflFwCbdNyXRCBwjZAIWvXfiB+2P + b+A/Duup4N1e9Hh+9n86S7vbybUNQuSURRDD NcO5jDFGG4scbSVTawr53G5vg54qONg2lOP + vJdWu6vvbT5I9illmIp0fYJWs9G9jz34JfG/4c/sr fCK60rTtP8Q6x4V0tDfX+vaRYlNaSV + UZ3h1C0mI8uQkvP58D7JI7hXhjYJKU8x/Z2+NGvftT/tDe Evhx+zv4LvdMXVtWj1CHSYIpL + a00m1VjNc3Ny8iARxKhLPIByzhUBMsYLtX/AGpEstYuLnRLSz0X TnhWeC00yFYINUgMkrlm + ZcHzlkklIduI2kkwF3kV9V/8Et/+Chvhb4WfEQ+DfFt5frB49lgms9Vu L15okIAWOBQ5xCr + O3zgYVnkU45NfL8RY1cQ06dDncYRafLZa+r3Vrnt5Vl0sJX9pJpy73Z+mXwM/ Z70T4DaYl0 + n2bVPEbQeRc6rMu1wDtLRxK2TFFlF+TPJQFsnms342ftC2Fl4ZA0LU9Jg1G6uTp3l3 F3DBI + rgB8RtK4TOzc4z/AAhvQVyP7Yvxqv8A4S/sv/EDXvCMkQ1TQtEnubFrltsfmgqEMn96PLYG + PvHg1/N7+2f8V/iN8UvElhoX7U/j2W40HxVfm8xZwSx2kl0EMRieGVikLR5K7gPujjg15tHC + 1MNB 4ijR54Qdm+idtLndmc4yt9Yn+8lt/wAA/e/9k/8AaB079ofTLjxPptzp17b60S8Nzpl + wbmxvVt2a 3MsErcshdJR/tcnoa0PFmiJrniS9uo3nZJJSFZXIDAfKD+IGa+ff+CWvw+8VeA + P2Jf2e9d8UXYuU 8Q+DLcAmNTsgR5BZJkdSLKO359c19c+HLSFtFgMyxu2DlnQbjyetffYR/ + u1NrXb7m0fN4iSp1OVb Dda/4KE+Cvgzby2/iTwv4x8EWcL+WG1HwtJptupHQK4TY/XtwK82 + 1T/gr94O8R6tFo/geeHVdZ1t nttEgs3+0S6rdDGLYQg8kqpbII2bdx4VhXu/g742Q6hZm3u + 7hrceXsdCG2jtjJ+U1xHiv9lD4VfF nxveXet+EdE0zxJDaxyWesaXaRw3ce5jsukeJRtuIp + VVklTEi4GW8suD+Z4vK8YqfNQraLyV38/0 t8z6vA5rhfaf7TR+ab/I8K/4LBfETxl8Hv2LN + H0q10wXkPi/XoZfHeq27iT+x7WL/TG2xn5nLPHH CJT8qLETjL1+MfxN/a3tfEDSyST2sUcy + NG0JYsgh2/djYHCAAcHGCBuxgMD+qn7VfxOuj8KLjQf2 ifF2i23iMajceDdanuRBBp9xcpF + G4ZxLlUW5iaGZAoXBkG0jAr4Q1r9j/wCA3wFuoZPFF38OP7Tm uJp0g1e7jmkZFxwyzuwUBg + cyEBT0LV81VzqpQfJCm3/wD2MZllV83LHmW91trsfFl/8AHqa+04W+ h3s89xYuZbdLUedgN + jKsiqdxIC54zwM5IzW9ongr44fE+HzPhR8OPiRqYf8Ae+ZbaHdKquAWcLvj +bh0bAK45wa+ + x/Cv/BQjUPAHhDVYfhP8KfDsem6JI9jFq6+IZIvC8BkHmRBUsFSA3EuJWSJ503fN txsctle + Ev+Cy3xE8Z/C69YJ4S0Z7ixuLK+u9K0IvqWkxyq0R+xSXU8qS7Hj3/OjttDfNuZTSp4/F Yl + +7C3rJX+655To16TSdO3rp+Vz9DP2s/HvijX/+COuo2d9A3i74iXvgrS9L1fSdMK6jqY1WT7 + It xBJbW++QOsjsrLw3BJPFfk38ItK0j4p/tIaX8Mfi74bsfEs+tasPDM+ieITJYmz1S7X7P + byRvC6S RYkZIGY4eNt25T5YY/d2h/ts+G/28f8Agmn8SY/HJ0Lwx+0J4R0GTXFufD1vHpOp + 362ZM/2zSbzA l3GGBkePLSJghlPmHP5L6h+07ZfGeS58U/ErTru18b6vAJrzVNLmWGDU7tS + omurm2kjISSZN7yTQ uB56RuIxvOP0jhbF+0o1cPXceWT9Xtb7tjzuJqTqeyrNarsf1N638H + 7X4T/Afwt4W8H2UVpZfDnT LHT7G3iZpYoobO2S12IWJZlEanBb5iACecivG9N/ap8G2tr5V + 9rAhmid0eOd3jkQhiCCo6D09sV8 Ufsof8HJY8B+B/DGkfto6DqfifRooF0u88V6M3m39gpU + Ilxc2hbF1G6nLSRFZF8tvlY/KPqnT/ij +zZ8U9OtvENp47+Fetw6vDHcRXw8U2cDXKFRtZ4 + pXWSN8AbkdVZWDBgCCK+hwcZYJPC1baWaa2af Y+UlONV+0a3Ifhx8Z73+2bO21qeJYbskQN + cBm8xPTyVyWf6K2PavWPjR8a9R+G2jaDfeCtEiku70 fZDcanqCW1vabyqb5UiQuFPykAn+F + sgHIHyr4W+KukaRqrvYiKNvODPJGxEjuQBnJ5PQjPpXpX7Q 37Q2if8ADPus/FXVpJLKD4QD + b4htVCrDqljcQmS1HLKglFyyIhYhf3kisSHxXysKyjScr7Hvzpvn SaPD/wBrDx7ceA9bk0r + Q0sPEVh47sb298RaPdSi4j1+WKSG2uLYLMrIzoL6xntmZVSL7Iof5JmZc r9oK/wBH/Z90vV + ND+L/wV/4Wdpnifw2tpomuaYotdb0/W7S3EKzSSwyLcfZJIvs8rPbFmgkhbbCw nUJ4N4B8E + 3Xx3vYr/wCL3j3w9Z3XhXTry41Tw7aak8N5bmQxPPFfagBItohWGJSkaNI27hirZq7o 3x60 + a4+IetXPwqv/AA7JqFxc/Yrq31ia7ub63fzDgNbIvlqjISsbpIjFUOADvFfndZYrB0PrVSNl + dq/XXX0/G/kfouWPLc2rPL+a8+VO17fD0v8AoR/tE/GqXwN+wZpWn/GPR10m7EEqabpMWkw + xwf2j Kju11LZW4Cm8k3yPNO48w/MGIA2j8rPCvxck8L6VdWejRyWf2u2uIjL5h3qHfaCe4P + 3yfbiv1Q/a t8XXHxJ+Ekq6Dp0lzqmnea9tE0WdzvFJExHZgwZ1z/EvXOa+Ik/4JLeLfEHhK + 61Sx1vRNNvo5Jrm 4t7vdBHb2qx/PKWTd84JC7SANpB6mufCYunL45auxWeYapFxWFjaMen5 + /wDBPN/A/wARNVv73wvo fwue2uPEWp6pFFYwblSGN2EkTv8A9MI1IiYvwm1CSMK2ej/aF/Y + n+Jnww8c+Nr2y+H+uX/hzQ9dv 9NuNY0LTZrjR/tFq8a3DxOqH9yskmFfhDuZR9w12f7EHwo + i8PePpPHNpbafFaWDSrayxx74JLeG3 eANHuJLG5ncgDPIT3xX2xovxd8VJ4rudQ8O3d7YC2 + sfIJEsc1wXilEs0kYkYnKiTygf3e7bIVYEH P3mTZdGMY1pSak+lloflOccRSpzlh4wUkut3 + o/8Agn5geEfFMmoaFcxaYzTTWuJCYlZ5IW+bcCpO fm2sTnjDMuAGxXc6P+zn4Z+IWnprTwT + acdQLS/ZorqIpH8xHGITjOM4ycZxX3H4++MnwJ/a+17Wt K+PXw312CfQpEttS+J3h3w+bq9 + tT5asuozXFmkSyIsqvDLE0VzuePIlRDuT4y+LH7JfxA/Z48fX3 hHSfDWv+N9P0wRS2Ov8Ah + vWjDpesWs8SXEFxDGYWMe+KaNmQklXLA9K+1w+Z0KdNQqrnS8jyaU/r Ert+zdr6tar+vmfX + 3w++Lnib4n3V8fh1pFzqEenAySu08cNpYKpOGuJ952YHRWxkdOtekfBP9t/Q /hXrl/qHxw0 + zwx4gi04Rajpk0Wo2c9v4f1C0VpF1N7eWWX7WbeITSxI0RaOSPzIkLqrL1vh/9kC7 8Tazps + H7Rc+t2vgW5uFt4LTSNItrjT7SRw7LKp0x5LO7iXCgqXQgdlbICW/7Vnw9+AOq3cJ8O6L/ A + MKt1ELaaR8QfDOmmbUL1ysvmWzaOiGSFN8Uqbg5BG1vvMa/Nfr0cI4xqTS5tubZ9fTp3Pq61 + ZSf JbX7vz6ng37Vf7ct94/8U69eXlzrZ8OaPaQ3Fva3qSwXWrXl2m23a7LYMzyxb5zPycKW + znFfEXw0 +OXjr4W6/wCIvGXwk18W+qa9rRtLmJ41ktNRWLOyPyWGAI1kO1h0BIFfbX/BXfw + TrXxY8LeFfiB8 NZ1uvCdtZJCyWkBhnslnBaGZ967ijJJtww/c8g/eFfJ2i+BrPRvBej6faR + SR21szklgPnYtuLMRz tLseD0wAeldTxbziHvWt2X9eR5NXDyyDEOpCT5pWs3vY+hP2RvB3x + Q/bD8OTeKvH2rre6fa6nPaX Ftp8T2c0flOu2QtITkEs42r24q5+3Np83h650v4OfD13lu/F + bWy+JdQIeSa3sZZPMis1kzwZRG8r EcAKAetfWX/BG/wJbaL+yPpOq/KZ9dmuNRuV+8GdrqV + wRnvtUDNfOf7c2v2tj/wUK8eQ6ne6Z4Zj ENhAuoahKkVnYq2nWq72Zm2hiWfgr2rxsDk1CW + LVSWy18tD7bNM5rUsnUr/vJJa97/qca1xbXXxX 8B/D74fWqwWcV3FdX0UJCLBa2EfmJEB90 + OZfK5PACe9cb+1t8Stf+CPxVv49C1S1srix0a6WO4lQ YWC5uNsAEX3GJkjJKgYG0N2zWX8e + vCOlfCGxtdH8IeJTrPirxvbT6asenSC7kMNyYmuJYViAzvRX +Yv/ABAdsDJ8afsMfFT4lXJ + 8f+M9OjuNNQWmm6XFd3gl3W4EdqkkoQnHyuSwz1znnNfSY3MYYWLi 3Z36P/I/NsBlVbMmpU + 4N730/zPoD9lme3+CHhrw82oa82gazLYAS6e97HLJZRzItxPcvcKdsAWV3 cg4bEx5YsFHrH + g3/AIK7eFPC/hq1sNC1b4lala2wZUuobOK2inyxJaKOa4WQRkk7d6hiu0kc1u/s /f8ABule + 6n8Ira/8efEK+t/Eh23Mdvp9pFNpKyhi6vJFOn79gcfeY4IOMcVynif/AIJb/teeHNfu rLw + t4F+H/ibT7d8QapBcG0S8U87vJyQjckMAcbgcYHFdVLN3FJSjZdLxcr/cddfg/Ey96VnfopJ + W 9dV+Z+o/hr9n74XfDP4SP4j/AGE4rfNx5cNpY3us3iWVp5j70W5gMgkZVbG1SwxuOSydeC + /a+/Yq 1r49x2etfCSHTZrnStFXS9Q8Nx6VBptzDH5yTLPpt3bJGruJIm24ffGHbynQuwf4M + 1f4w+IPBf7S Og+HvDV1bW+kX+qNFcwGwt5DOvkyS/NI8ZcneAck56jOCRX2Z4t+OvjD4O/s + yazd/DTxDqWkzvf2 0QMUm5YldV3eWrZWMnJBZADjjOOK8auoVMP7KrH7nY9TEUFjLxm2103 + 0/Fo+a/B0t/4Z+HuoaV8U H1S41S2uLjSpm1m2CXbRoybVuFCIwYIwR3dQXZGbGDXzjrfgnw + 3+0L4m1b4XWF9p/hPx5ZD+1fCX iCKyilg8Q2iL++sbqLbmTy8krs/eFfKKn91Jn0n4v+MNW + 8QXF3rPiPU7/U9W1LVpLi7u724e5muX TyUQu0hJYKgCgHgKAAMCvnzwb/pn7T3w7up8+eni + GyCsvy7fkc8AcA/Owz1wcdABX59LMHgMV7Gk 3ZO2+uuuve1z9MynKaeKyymq9paW1R+m/wD + wT6/Z/T4M/s7aJ4fub6O5mtLaNBceWUMgKFshWJKZ 3fd7ZxX5Zf8ABfz4V3a/t0XOoaTcxR + 6d4i0LTLqQTymKKQpB5Dt83y7g0OcgdTk81+tHwZvZbCx8 qzby44Y2aNVAwmBxj0HJ46du1 + fAX/By7otq3hP4Ya00KnVLS9OkxXHO5bWSJZGix0I3ksCRlSzFS Nxz9tRq89BSkjwc4wvuu + nB2Stb8jwr/gi18KNJ1Xxh4v8SeILV7x9NvLaK2e6mVmDrE0kmGHX59o 47AZr9R/jt8V/AP + hb4I6jpN/fWMF1Fp3mBHOyN9rFo44iQBIwdFO0ZYZ4IHFfnh+yR4ftPBX7M3g PU/Csb2Woe + I7ZLzUp45W33cpdgXbJ64AHGOAB0r7Q8N3kknga484iQm3dcyKHIB3ZAJ6Z9q8atiW lJJan + pZTho0qUFJtrfsfor+z/wCKLfW/hno1ygB+1WUUyue4dQ3QgEDnof1616IbLzsMZbJcgcPa + F2/E7xn8q8D/AGLYwPBvhi3O4wvZQgoSSAAqYAz0HJ4FeH+Pfjl4suPGWotLrd2T5xHAUAAc + AAAc AACv0nhTLKvEkZWmoqKW6ueHxPmdLh5Qm4uXO3s7H//Z +ITEM3.X-ABDATE;TYPE=pref:2000-12-31 +ITEM3.X-ABLABEL:_$!<Anniversary>!$_ +X-ABSHOWAS:COMPANY +X-ABUID:73FD0F46-DE18-4F1F-AA2C-59E8738B4249:ABPerson +UID:a nice UID +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/andresenesq.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//ALAB//NOSGML Version 0.9//DE +UID:a nice UID +X-ABUID:ADDEEFEF-162A-260A-DEA3-1DA8-8A913187:ABPerson +FN:Sven Joseph Klaus Michael Andresen\, Esq. +SORT-STRING:Andresen\, Esq.\, Sven Joseph Klaus Michael +N:Andresen\,Esq.;Sven;Joseph\,Klaus\,Michael;;Dr.\,Prof.;Esq. +X-DISPLAYNAME:Svenni +X-INITIALS:SA +X-INITIALS:SHA +NICKNAME:Svenny\,Sveny +PHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHB + wcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zN + DL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM + jIyMjIyMjIyMjIyMjIyMjL/wAARCAFQATYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAA + AAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxF + DKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW + mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDx + MXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAA + AAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiM + oEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYW + VpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w + sPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiig + AooooAKKKKACiiigAooooAKKKKACiiigAoorM17xBpnhnSZdT1a7S2tY/4m6seyqOpJ9BQBp + 1zuvePPC/hkMNW1q1glXrCrb5f++Fy36V5Hf+L/ABr8SXkj0hz4d8PMSFnOfPnX6jn8FwO2T + U2i/DfwxpKq89r/AGjc9WluzuBP+7938wfrQBr3X7Q+gGRotK0XVr+QdPkVA305J/Ssyb45e + KWbdb/D67WI9PMMrE/iIxXXQSQWsKxW8UcMS9EjUKB+AqT7b70AeeXP7Q3iGxkUXnhKKDP8M + ryIT+Yq/Y/tLWDlRf8Ahu5hHcwXKyfoVX+ddk9ykiFHCsp6qwyDXJa54B8Ma4Hd7BbS4b/lt + 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 + //Z +X-SPOUSE:Manuela Graf +X-EVOLUTION-SPOUSE:Manuela Graf +ITEM1.X-ABRELATEDNAMES:Manuela Graf +ITEM1.X-ABLABEL:_$!<Spouse>!$_ +ITEM2.X-ABRELATEDNAMES:Manager +ITEM2.X-ABLABEL:_$!<Manager>!$_ +ITEM3.X-ABRELATEDNAMES:Aufsichtsrat +ITEM3.X-ABLABEL:_$!<Manager>!$_ +ITEM4.X-ABRELATEDNAMES:Barbara Jonas +ITEM4.X-ABLABEL:_$!<Assistant>!$_ +ITEM5.X-ABRELATEDNAMES:Dominik Maller +ITEM5.X-ABLABEL:_$!<Assistant>!$_ +ROLE:CTO +ROLE:Vorstand +X-MANAGER:Manager +X-MANAGER:Aufsichtsrat +X-EVOLUTION-MANAGER:Manager +X-EVOLUTION-MANAGER:Aufsichtsrat +X-ASSISTANT:Babsi +X-ASSISTANT:Dominik +X-EVOLUTION-ASSISTANT:Barbara Jonas +X-EVOLUTION-ASSISTANT:Dominik Müller +BDAY;VALUE=date:1971-06-21 +X-ANNIVERSARY:2000-01-01\, Testfeier +X-ANNIVERSARY:2003-2-2\, Blafeier +X-EVOLUTION-ANNIVERSARY:2000-01-01\, Testfeier +X-EVOLUTION-ANNIVERSARY:2003-2-2\, Blafeier +IMPP:aim:balbala +IMPP:aim:hakunamatata +X-AIM:balbala +X-AIM:hakunamatata +EMAIL;TYPE=INTERNET:sven@andresen.de +EMAIL;TYPE=INTERNET:andresen@andresen.de +TEL;TYPE=WORK,VOICE:+49 89 11 11 111 +TEL;TYPE=WORK,VOICE:+49 234 222 222 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 160 073 727 272 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 39292 82 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,VOICE:+49 7272 7282 +TEL;TYPE=HOME,FAX:+49 1010 1 +ITEM6.TEL;TYPE=VOICE:+49 8373 6262 +ITEM6.X-ABLABEL:_$!<Other>!$_ +ITEM7.TEL;TYPE=VOICE:+61 27 28 73 246 +ITEM7.X-ABLABEL:_$!<Other>!$_ +ITEM8.TEL;TYPE=FAX:+49 9382 3424 +ITEM8.X-ABLABEL:_$!<Other>!$_ +TEL;TYPE=ISDN:8797 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 88 298 723 498 32 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 2763 382 882 28 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;X-EVOLUTION-CALLBACK:+49 7363 6363 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;TYPE=MODEM:+49 7363 6363 +TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +TEL;X-QUICKDIAL:13355 +ADR;TYPE=WORK;CHARSET=utf-8: + PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Bayern;94036;Deutschland +ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung; + Weisenstraße 13;Irgendwo;Niedersachsen;34332 +ADR;TYPE=HOME;CHARSET=utf-8:;;Weisenstraße 13 ;Irgendwo;;34332 +ADR;TYPE=X-OTHER:;;Irgendwo;Nirgendwo;Sonstwo;0000;Antarktis +ORG:andresen AG;R&D;;XXX\, 033 +ORG;CHARSET=utf-8:andresen Holding;Geschäftsleitung;;-\, 0223 +X-HOUSE;TYPE=WORK:XXX +X-HOUSE;TYPE=WORK:- +X-ROOM;TYPE=WORK:033 +X-ROOM;TYPE=WORK:0223 +LABEL;TYPE=WORK:1. Stock\, links +LABEL;TYPE=WORK:oder rechts +URL;TYPE=WORK:http://www.andresen.de +URL;TYPE=WORK:http://www.andresens.de +ITEM9.URL;TYPE=HOME:http://www.zuhause.de +ITEM9.X-ABLABEL:_$!<HomePage>!$_ +ITEM10.URL;TYPE=HOME:http://www.andresen.de/~andresen +ITEM10.X-ABLABEL:_$!<HomePage>!$_ +X-BUSINESS-CATEGORY:IT +X-BUSINESS-CATEGORY:Development +KEY;ENCODING=b;TYPE=X-CERT:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2R + ENDQXlXZ0F3SUJBZ0lKQUpUeXNHNDV0V3BZTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdiTVFzd + 0NRWUQKVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFTk1Bc0dBMVVFQ + nhNRVEybDBlVEVoTUI4RwpBMVVFQ2hNWVNXNTBaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUS + FJrTVF3d0NnWURWUVFMRkFOU0prUXhGakFVCkJnTlZCQU1URFZOMlpXNGdRVzVrY21WelpXN + HhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjJaVzVBWVc1a2NtVnoKWlc0dVpHVXdIaGNOTVRBd + 05qSXpNRGd5T0RFNFdoY05NVEV3TmpJek1EZ3lPREU0V2pDQm16RUxNQWtHQTFVRQpCaE1DU + VZVeEV6QVJCZ05WQkFnVENsTnZiV1V0VTNSaGRHVXhEVEFMQmdOVkJBY1RCRU5wZEhreElUQ + WZCZ05WCkJBb1RHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU1NQW9HQTFVR + UN4UURVaVpFTVJZd0ZBWUQKVlFRREV3MVRkbVZ1SUVGdVpISmxjMlZ1TVI4d0hRWUpLb1pJa + HZjTkFRa0JGaEJ6ZG1WdVFHRnVaSEpsYzJWdQpMbVJsTUlHZk1BMEdDU3FHU0liM0RRRUJBU + VVBQTRHTkFEQ0JpUUtCZ1FDdEtPWnJBOXBjdjJWUVpkSEg4YmhhCmZqMlZWMW9HakxjTkt3M + ktWVkJ6anphQVlyaU9HcnBNWDdhcW1oL3pjNHhBMTVDc1JJYjJoQXpPcDlTeldvQ00KbXhZc + FN5eG8rbUJHUGRYOVcvTStYcStSYUtGSURpdHZyL0xBb2I5N0oveWp5R0JDYU4vdExvdG9ZN + 3F5TjAxUQpWTkRYNkJkcS9GZTFjcUdhcnFvdzNRSURBUUFCbzRJQkJEQ0NBUUF3SFFZRFZSM + E9CQllFRkhNaFBPR255aENtCmxWcHlCZHhCTVczZ2drbS9NSUhRQmdOVkhTTUVnY2d3Z2NXQ + UZITWhQT0dueWhDbWxWcHlCZHhCTVczZ2drbS8Kb1lHaHBJR2VNSUdiTVFzd0NRWURWUVFHR + XdKQlZURVRNQkVHQTFVRUNCTUtVMjl0WlMxVGRHRjBaVEVOTUFzRwpBMVVFQnhNRVEybDBlV + EVoTUI4R0ExVUVDaE1ZU1c1MFpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNUXd3CkNnW + URWUVFMRkFOU0prUXhGakFVQmdOVkJBTVREVk4yWlc0Z1FXNWtjbVZ6Wlc0eEh6QWRCZ2txa + GtpRzl3MEIKQ1FFV0VITjJaVzVBWVc1a2NtVnpaVzR1WkdXQ0NRQ1U4ckJ1T2JWcVdEQU1CZ + 05WSFJNRUJUQURBUUgvTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRHQkFGcnVidGpoWVB1RERHV + VpQRTQraUo2a3FmdEtXWDFJVzdmTXdtc3BRUWt5CitXUThSL3AxbURrc3ZEQ3hDYWp2YVduS + VI2dGIwbmtCMTFFNmQ0dDhkMkxWTTE4M3dDUWJtMDRJS05mdkRKOXQKUE4vdHBVTkJrc0Vka + XBlMEM1SEgyMnY0RitSSzVUK1lqM1J6VHZmOTdROVMzTzF3eE5lZkt0NXVUNFFxNUZtdAotL + S0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== +CALURI:http://caldav.andresen.local/sja +FBURL:http://caldav.andresen.local/freebusy +CAPURI:http://caldav.andresen.local/access +CALADRURI:http://caldav.andresen.local/access +X-DESCRIPTION:Beschreibung +X-DESCRIPTION;CHARSET=utf-8:außerdem +NOTE:Nur so ein Test! +CATEGORIES:bla,blubb,test,hihi,oops +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/hans_dieter.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//ALAB//NOSGML Version 0.9//DE +UID:a nice UID +X-ABUID:A93F52CB-C15F-1F34-2C49-7A67-0971277F:ABPerson +FN:Hans Dieter Schmidt +SORT-STRING:Schmidt\, Hans Dieter +N:Schmidt;Hans Dieter;;Dr.;Esq. +X-DISPLAYNAME:HaDi Schmidt +X-INITIALS:HW +NICKNAME:HaWe +X-SPOUSE:Maja Schultze +X-EVOLUTION-SPOUSE:Maja Schultze +ITEM1.X-ABRELATEDNAMES:Maja Schultze +ITEM1.X-ABLABEL:_$!<Spouse>!$_ +ITEM2.X-ABRELATEDNAMES:Barbara Jonas +ITEM2.X-ABLABEL:_$!<Assistant>!$_ +ITEM3.X-ABRELATEDNAMES:Klaus Timm +ITEM3.X-ABLABEL:_$!<Assistant>!$_ +ROLE:Projektleiter +X-ASSISTANT:Barbara Jonas +X-ASSISTANT:Klaus Timm +X-EVOLUTION-ASSISTANT:Barbara Jonas +X-EVOLUTION-ASSISTANT:Klaus Timm +BDAY;VALUE=date:1977-12-10 +BDAY;VALUE=date:1975-11-11 +DDAY;VALUE=date:2007-01-02 +X-DDAY;VALUE=date:2007-01-02 +X-ANNIVERSARY:2000-02-01\, +X-ANNIVERSARY:2001-02-02\, +X-EVOLUTION-ANNIVERSARY:2000-02-01\, +X-EVOLUTION-ANNIVERSARY:2001-02-02\, +X-EVOLUTION-BLOG-URL:blog.diesistmeineip.de +ITEM4.URL:blog.diesistmeineip.de +ITEM4.X-ABLABEL:_$!<Other>!$_ +URL;TYPE=WORK:http://www.tu-hh.de +URL;TYPE=WORK:http://www.telekom.de +ITEM5.URL;TYPE=HOME:http://www.hadi-schmidt.de +ITEM5.X-ABLABEL:_$!<HomePage>!$_ +IMPP:aim:477826262 +IMPP:aim:aaab3ttebb3 +IMPP:icq:972398472394 +IMPP:icq:8972364872634 +IMPP:ymsgr:mailaddr@yahoo.co.uk +IMPP:ymsgr:yahoo@yahootar.bla +IMPP:xmpp:jabjab187383 +IMPP:xmpp:jabberwookie@starwahrs.co.com +IMPP:msn:blablubb@langedomain.org +IMPP:msn:738246832746 +IMPP:skype:hadi.schmidt-skype +IMPP:skype:askjdhasd +IMPP:ichat:ichatichat +IMPP:ichat:second-ichat +IMPP:nm:netnetmeetings +IMPP:nm:vielleicht@eine.email.de +IMPP:gtalk:gooogletalk +IMPP:gtalk:googletalk2 +IMPP:sip:ipphon-addr.woauchimmer.de +X-AIM:balbala +X-AIM:hakunamatata +X-AIM;TYPE=WORK:972398472394 +X-AIM;TYPE=WORK:8972364872634 +X-ICQ:972398472394 +X-ICQ:8972364872634 +X-JABBER:jabjab187383 +X-JABBER:jabberwookie@starwahrs.co.com +X-MSN:blablubb@langedomain.org +X-MSN:738246832746 +X-SKYPE-USERNAME:hadi.schmidt-skype +X-SKYPE-USERNAME:askjdhasd +EMAIL;TYPE=INTERNET:ich@hadi-schmidt.de +EMAIL;TYPE=INTERNET:hadi@telekom-d.de +TEL;TYPE=WORK,VOICE:+49 9823 9084 +TEL;TYPE=WORK,VOICE:+49 234 234 234 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,FAX:+49 40 812 387 21 +ITEM6.TEL;TYPE=VOICE:+49 8373 6262 +ITEM6.X-ABLABEL:_$!<Other>!$_ +ITEM7.TEL;TYPE=VOICE:+49 7272 72 +ITEM7.X-ABLABEL:_$!<Other>!$_ +TEL;TYPE=ISDN:4234234235 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 38 288 228 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;X-EVOLUTION-TTYTDD:+49 7373 73 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +ADR;TYPE=WORK;CHARSET=utf-8: + ;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg;Hamburg;21373;Deutschland +ADR;TYPE=HOME;CHARSET=utf-8:;;Weisestraße 13 ;Irgendwo;;33443 +ADR;TYPE=X-OTHER:;;Nirgendwo +ORG:Uni Harburg;;;033 +X-ROOM;TYPE=WORK:033 +LABEL;TYPE=WORK:1. Stock\, links +LABEL;TYPE=WORK:oder rechts +X-BUSINESS-CATEGORY:IT +X-BUSINESS-CATEGORY:Development +CALURI:http://davical.hadi-schmist.home/hadi +FBURL:http://davical.hadi-schmist.home/freebusy +CAPURI:http://davical.hadi-schmist.home/cap +CALADRURI:http://davical.hadi-schmist.home/access +X-DESCRIPTION:Beschreibung +X-DESCRIPTION;CHARSET=utf-8:außerdem +CATEGORIES:uni +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_3_0.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +N:Test-Roßdeutscher;Jörg;;; +FN:Jörg Test-Roßdeutscher +ORG:Factor Design AG; +EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref: + joerg.rossdeutscher@factordesign.foo +EMAIL;TYPE=INTERNET;TYPE=WORK:joerg@factordesign.foo +EMAIL;TYPE=INTERNET;TYPE=HOME:joerg.rossdeutscher@gesindel.foo +EMAIL;TYPE=INTERNET;TYPE=HOME:raettchen@gmail.bar +TEL;TYPE=WORK;TYPE=pref:040 999999432571-43 +TEL;TYPE=CELL:017799999978200 +TEL;TYPE=HOME:040999999793017 +ITEM1.ADR;TYPE=WORK;TYPE=pref:;;abcStraße 58;Hamburg;;20357;Deutschland +ITEM1.X-ABADR:de +ITEM2.ADR;TYPE=HOME:;;Gayens Weg 9;Hamburg;;22761;Deutschland +ITEM2.X-ABADR:de +NOTE:Technik\, Web\, DTP\, SysAdmin\, €-Vermögensverwalter +ITEM3.URL;TYPE=pref:www.gesindel.baz +ITEM3.X-ABLABEL:_$!<HomePage>!$_ +ITEM4.URL:www.factordesign.foo +ITEM4.X-ABLABEL:_$!<HomePage>!$_ +BDAY;VALUE=date:1969-06-20 +X-ABUID:58AB933D-81D3-4095-8CB5-A63431AC934D:ABPerson +UID:a nice UID +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2042-REPORT-addressbook-query.test b/testing/tests/carddav/2042-REPORT-addressbook-query.test new file mode 100644 index 00000000..b700b099 --- /dev/null +++ b/testing/tests/carddav/2042-REPORT-addressbook-query.test @@ -0,0 +1,36 @@ +# +# Request a REPORT +# +# param-filter should filter on parameter value. With a negated +# null value we shouldn't return any vCards with the prop value +# but with param value. +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user1/addressbook/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +# HEAD + +BEGINDATA + + + + + + + + + + + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ +REPLACE=/^UID:.*$/UID:a nice UID/ From 18c19b8fad1b94d69b08d6eec0c31e40caeb0372 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sun, 24 Jan 2021 20:59:42 +1300 Subject: [PATCH 04/37] Test case for awl-fix_abookquery_negated_propnotdef --- .../2041-REPORT-addressbook-query.result | 504 ++++++++++++++++++ .../2041-REPORT-addressbook-query.test | 46 ++ .../0230-Moz-REPORT-Tasks-Completed.result | 28 +- 3 files changed, 552 insertions(+), 26 deletions(-) create mode 100644 testing/tests/carddav/2041-REPORT-addressbook-query.result create mode 100644 testing/tests/carddav/2041-REPORT-addressbook-query.test diff --git a/testing/tests/carddav/2041-REPORT-addressbook-query.result b/testing/tests/carddav/2041-REPORT-addressbook-query.result new file mode 100644 index 00000000..19f38610 --- /dev/null +++ b/testing/tests/carddav/2041-REPORT-addressbook-query.result @@ -0,0 +1,504 @@ + + + + /caldav.php/user1/addressbook/andresenesq.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//ALAB//NOSGML Version 0.9//DE +UID:a nice UID +X-ABUID:ADDEEFEF-162A-260A-DEA3-1DA8-8A913187:ABPerson +FN:Sven Joseph Klaus Michael Andresen\, Esq. +SORT-STRING:Andresen\, Esq.\, Sven Joseph Klaus Michael +N:Andresen\,Esq.;Sven;Joseph\,Klaus\,Michael;;Dr.\,Prof.;Esq. +X-DISPLAYNAME:Svenni +X-INITIALS:SA +X-INITIALS:SHA +NICKNAME:Svenny\,Sveny +PHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHB + wcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zN + DL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM + jIyMjIyMjIyMjIyMjIyMjL/wAARCAFQATYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAA + AAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxF + DKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW + mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDx + MXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAA + AAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiM + oEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYW + VpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w + sPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiig + AooooAKKKKACiiigAooooAKKKKACiiigAoorM17xBpnhnSZdT1a7S2tY/4m6seyqOpJ9BQBp + 1zuvePPC/hkMNW1q1glXrCrb5f++Fy36V5Hf+L/ABr8SXkj0hz4d8PMSFnOfPnX6jn8FwO2T + U2i/DfwxpKq89r/AGjc9WluzuBP+7938wfrQBr3X7Q+gGRotK0XVr+QdPkVA305J/Ssyb45e + KWbdb/D67WI9PMMrE/iIxXXQSQWsKxW8UcMS9EjUKB+AqT7b70AeeXP7Q3iGxkUXnhKKDP8M + ryIT+Yq/Y/tLWDlRf8Ahu5hHcwXKyfoVX+ddk9ykiFHCsp6qwyDXJa54B8Ma4Hd7BbS4b/lt + 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 + //Z +X-SPOUSE:Manuela Graf +X-EVOLUTION-SPOUSE:Manuela Graf +ITEM1.X-ABRELATEDNAMES:Manuela Graf +ITEM1.X-ABLABEL:_$!<Spouse>!$_ +ITEM2.X-ABRELATEDNAMES:Manager +ITEM2.X-ABLABEL:_$!<Manager>!$_ +ITEM3.X-ABRELATEDNAMES:Aufsichtsrat +ITEM3.X-ABLABEL:_$!<Manager>!$_ +ITEM4.X-ABRELATEDNAMES:Barbara Jonas +ITEM4.X-ABLABEL:_$!<Assistant>!$_ +ITEM5.X-ABRELATEDNAMES:Dominik Maller +ITEM5.X-ABLABEL:_$!<Assistant>!$_ +ROLE:CTO +ROLE:Vorstand +X-MANAGER:Manager +X-MANAGER:Aufsichtsrat +X-EVOLUTION-MANAGER:Manager +X-EVOLUTION-MANAGER:Aufsichtsrat +X-ASSISTANT:Babsi +X-ASSISTANT:Dominik +X-EVOLUTION-ASSISTANT:Barbara Jonas +X-EVOLUTION-ASSISTANT:Dominik Müller +BDAY;VALUE=date:1971-06-21 +X-ANNIVERSARY:2000-01-01\, Testfeier +X-ANNIVERSARY:2003-2-2\, Blafeier +X-EVOLUTION-ANNIVERSARY:2000-01-01\, Testfeier +X-EVOLUTION-ANNIVERSARY:2003-2-2\, Blafeier +IMPP:aim:balbala +IMPP:aim:hakunamatata +X-AIM:balbala +X-AIM:hakunamatata +EMAIL;TYPE=INTERNET:sven@andresen.de +EMAIL;TYPE=INTERNET:andresen@andresen.de +TEL;TYPE=WORK,VOICE:+49 89 11 11 111 +TEL;TYPE=WORK,VOICE:+49 234 222 222 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 160 073 727 272 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 39292 82 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,VOICE:+49 7272 7282 +TEL;TYPE=HOME,FAX:+49 1010 1 +ITEM6.TEL;TYPE=VOICE:+49 8373 6262 +ITEM6.X-ABLABEL:_$!<Other>!$_ +ITEM7.TEL;TYPE=VOICE:+61 27 28 73 246 +ITEM7.X-ABLABEL:_$!<Other>!$_ +ITEM8.TEL;TYPE=FAX:+49 9382 3424 +ITEM8.X-ABLABEL:_$!<Other>!$_ +TEL;TYPE=ISDN:8797 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 88 298 723 498 32 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 2763 382 882 28 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;X-EVOLUTION-CALLBACK:+49 7363 6363 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;TYPE=MODEM:+49 7363 6363 +TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +TEL;X-QUICKDIAL:13355 +ADR;TYPE=WORK;CHARSET=utf-8: + PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Bayern;94036;Deutschland +ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung; + Weisenstraße 13;Irgendwo;Niedersachsen;34332 +ADR;TYPE=HOME;CHARSET=utf-8:;;Weisenstraße 13 ;Irgendwo;;34332 +ADR;TYPE=X-OTHER:;;Irgendwo;Nirgendwo;Sonstwo;0000;Antarktis +ORG:andresen AG;R&D;;XXX\, 033 +ORG;CHARSET=utf-8:andresen Holding;Geschäftsleitung;;-\, 0223 +X-HOUSE;TYPE=WORK:XXX +X-HOUSE;TYPE=WORK:- +X-ROOM;TYPE=WORK:033 +X-ROOM;TYPE=WORK:0223 +LABEL;TYPE=WORK:1. Stock\, links +LABEL;TYPE=WORK:oder rechts +URL;TYPE=WORK:http://www.andresen.de +URL;TYPE=WORK:http://www.andresens.de +ITEM9.URL;TYPE=HOME:http://www.zuhause.de +ITEM9.X-ABLABEL:_$!<HomePage>!$_ +ITEM10.URL;TYPE=HOME:http://www.andresen.de/~andresen +ITEM10.X-ABLABEL:_$!<HomePage>!$_ +X-BUSINESS-CATEGORY:IT +X-BUSINESS-CATEGORY:Development +KEY;ENCODING=b;TYPE=X-CERT:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2R + ENDQXlXZ0F3SUJBZ0lKQUpUeXNHNDV0V3BZTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdiTVFzd + 0NRWUQKVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFTk1Bc0dBMVVFQ + nhNRVEybDBlVEVoTUI4RwpBMVVFQ2hNWVNXNTBaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUS + FJrTVF3d0NnWURWUVFMRkFOU0prUXhGakFVCkJnTlZCQU1URFZOMlpXNGdRVzVrY21WelpXN + HhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjJaVzVBWVc1a2NtVnoKWlc0dVpHVXdIaGNOTVRBd + 05qSXpNRGd5T0RFNFdoY05NVEV3TmpJek1EZ3lPREU0V2pDQm16RUxNQWtHQTFVRQpCaE1DU + VZVeEV6QVJCZ05WQkFnVENsTnZiV1V0VTNSaGRHVXhEVEFMQmdOVkJBY1RCRU5wZEhreElUQ + WZCZ05WCkJBb1RHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU1NQW9HQTFVR + UN4UURVaVpFTVJZd0ZBWUQKVlFRREV3MVRkbVZ1SUVGdVpISmxjMlZ1TVI4d0hRWUpLb1pJa + HZjTkFRa0JGaEJ6ZG1WdVFHRnVaSEpsYzJWdQpMbVJsTUlHZk1BMEdDU3FHU0liM0RRRUJBU + VVBQTRHTkFEQ0JpUUtCZ1FDdEtPWnJBOXBjdjJWUVpkSEg4YmhhCmZqMlZWMW9HakxjTkt3M + ktWVkJ6anphQVlyaU9HcnBNWDdhcW1oL3pjNHhBMTVDc1JJYjJoQXpPcDlTeldvQ00KbXhZc + FN5eG8rbUJHUGRYOVcvTStYcStSYUtGSURpdHZyL0xBb2I5N0oveWp5R0JDYU4vdExvdG9ZN + 3F5TjAxUQpWTkRYNkJkcS9GZTFjcUdhcnFvdzNRSURBUUFCbzRJQkJEQ0NBUUF3SFFZRFZSM + E9CQllFRkhNaFBPR255aENtCmxWcHlCZHhCTVczZ2drbS9NSUhRQmdOVkhTTUVnY2d3Z2NXQ + UZITWhQT0dueWhDbWxWcHlCZHhCTVczZ2drbS8Kb1lHaHBJR2VNSUdiTVFzd0NRWURWUVFHR + XdKQlZURVRNQkVHQTFVRUNCTUtVMjl0WlMxVGRHRjBaVEVOTUFzRwpBMVVFQnhNRVEybDBlV + EVoTUI4R0ExVUVDaE1ZU1c1MFpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNUXd3CkNnW + URWUVFMRkFOU0prUXhGakFVQmdOVkJBTVREVk4yWlc0Z1FXNWtjbVZ6Wlc0eEh6QWRCZ2txa + GtpRzl3MEIKQ1FFV0VITjJaVzVBWVc1a2NtVnpaVzR1WkdXQ0NRQ1U4ckJ1T2JWcVdEQU1CZ + 05WSFJNRUJUQURBUUgvTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRHQkFGcnVidGpoWVB1RERHV + VpQRTQraUo2a3FmdEtXWDFJVzdmTXdtc3BRUWt5CitXUThSL3AxbURrc3ZEQ3hDYWp2YVduS + VI2dGIwbmtCMTFFNmQ0dDhkMkxWTTE4M3dDUWJtMDRJS05mdkRKOXQKUE4vdHBVTkJrc0Vka + XBlMEM1SEgyMnY0RitSSzVUK1lqM1J6VHZmOTdROVMzTzF3eE5lZkt0NXVUNFFxNUZtdAotL + S0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== +CALURI:http://caldav.andresen.local/sja +FBURL:http://caldav.andresen.local/freebusy +CAPURI:http://caldav.andresen.local/access +CALADRURI:http://caldav.andresen.local/access +X-DESCRIPTION:Beschreibung +X-DESCRIPTION;CHARSET=utf-8:außerdem +NOTE:Nur so ein Test! +CATEGORIES:bla,blubb,test,hihi,oops +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/hans_dieter.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//ALAB//NOSGML Version 0.9//DE +UID:a nice UID +X-ABUID:A93F52CB-C15F-1F34-2C49-7A67-0971277F:ABPerson +FN:Hans Dieter Schmidt +SORT-STRING:Schmidt\, Hans Dieter +N:Schmidt;Hans Dieter;;Dr.;Esq. +X-DISPLAYNAME:HaDi Schmidt +X-INITIALS:HW +NICKNAME:HaWe +X-SPOUSE:Maja Schultze +X-EVOLUTION-SPOUSE:Maja Schultze +ITEM1.X-ABRELATEDNAMES:Maja Schultze +ITEM1.X-ABLABEL:_$!<Spouse>!$_ +ITEM2.X-ABRELATEDNAMES:Barbara Jonas +ITEM2.X-ABLABEL:_$!<Assistant>!$_ +ITEM3.X-ABRELATEDNAMES:Klaus Timm +ITEM3.X-ABLABEL:_$!<Assistant>!$_ +ROLE:Projektleiter +X-ASSISTANT:Barbara Jonas +X-ASSISTANT:Klaus Timm +X-EVOLUTION-ASSISTANT:Barbara Jonas +X-EVOLUTION-ASSISTANT:Klaus Timm +BDAY;VALUE=date:1977-12-10 +BDAY;VALUE=date:1975-11-11 +DDAY;VALUE=date:2007-01-02 +X-DDAY;VALUE=date:2007-01-02 +X-ANNIVERSARY:2000-02-01\, +X-ANNIVERSARY:2001-02-02\, +X-EVOLUTION-ANNIVERSARY:2000-02-01\, +X-EVOLUTION-ANNIVERSARY:2001-02-02\, +X-EVOLUTION-BLOG-URL:blog.diesistmeineip.de +ITEM4.URL:blog.diesistmeineip.de +ITEM4.X-ABLABEL:_$!<Other>!$_ +URL;TYPE=WORK:http://www.tu-hh.de +URL;TYPE=WORK:http://www.telekom.de +ITEM5.URL;TYPE=HOME:http://www.hadi-schmidt.de +ITEM5.X-ABLABEL:_$!<HomePage>!$_ +IMPP:aim:477826262 +IMPP:aim:aaab3ttebb3 +IMPP:icq:972398472394 +IMPP:icq:8972364872634 +IMPP:ymsgr:mailaddr@yahoo.co.uk +IMPP:ymsgr:yahoo@yahootar.bla +IMPP:xmpp:jabjab187383 +IMPP:xmpp:jabberwookie@starwahrs.co.com +IMPP:msn:blablubb@langedomain.org +IMPP:msn:738246832746 +IMPP:skype:hadi.schmidt-skype +IMPP:skype:askjdhasd +IMPP:ichat:ichatichat +IMPP:ichat:second-ichat +IMPP:nm:netnetmeetings +IMPP:nm:vielleicht@eine.email.de +IMPP:gtalk:gooogletalk +IMPP:gtalk:googletalk2 +IMPP:sip:ipphon-addr.woauchimmer.de +X-AIM:balbala +X-AIM:hakunamatata +X-AIM;TYPE=WORK:972398472394 +X-AIM;TYPE=WORK:8972364872634 +X-ICQ:972398472394 +X-ICQ:8972364872634 +X-JABBER:jabjab187383 +X-JABBER:jabberwookie@starwahrs.co.com +X-MSN:blablubb@langedomain.org +X-MSN:738246832746 +X-SKYPE-USERNAME:hadi.schmidt-skype +X-SKYPE-USERNAME:askjdhasd +EMAIL;TYPE=INTERNET:ich@hadi-schmidt.de +EMAIL;TYPE=INTERNET:hadi@telekom-d.de +TEL;TYPE=WORK,VOICE:+49 9823 9084 +TEL;TYPE=WORK,VOICE:+49 234 234 234 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,FAX:+49 40 812 387 21 +ITEM6.TEL;TYPE=VOICE:+49 8373 6262 +ITEM6.X-ABLABEL:_$!<Other>!$_ +ITEM7.TEL;TYPE=VOICE:+49 7272 72 +ITEM7.X-ABLABEL:_$!<Other>!$_ +TEL;TYPE=ISDN:4234234235 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 38 288 228 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;X-EVOLUTION-TTYTDD:+49 7373 73 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +ADR;TYPE=WORK;CHARSET=utf-8: + ;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg;Hamburg;21373;Deutschland +ADR;TYPE=HOME;CHARSET=utf-8:;;Weisestraße 13 ;Irgendwo;;33443 +ADR;TYPE=X-OTHER:;;Nirgendwo +ORG:Uni Harburg;;;033 +X-ROOM;TYPE=WORK:033 +LABEL;TYPE=WORK:1. Stock\, links +LABEL;TYPE=WORK:oder rechts +X-BUSINESS-CATEGORY:IT +X-BUSINESS-CATEGORY:Development +CALURI:http://davical.hadi-schmist.home/hadi +FBURL:http://davical.hadi-schmist.home/freebusy +CAPURI:http://davical.hadi-schmist.home/cap +CALADRURI:http://davical.hadi-schmist.home/access +X-DESCRIPTION:Beschreibung +X-DESCRIPTION;CHARSET=utf-8:außerdem +CATEGORIES:uni +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2041-REPORT-addressbook-query.test b/testing/tests/carddav/2041-REPORT-addressbook-query.test new file mode 100644 index 00000000..65e78ba9 --- /dev/null +++ b/testing/tests/carddav/2041-REPORT-addressbook-query.test @@ -0,0 +1,46 @@ +# +# Request a REPORT +# +# negate-condition should only return a result if the +# property exists on the vCard, and doesn't match. +# +# RFC 6352, section 10.5.1: +# +# ... +# A vCard property of the type specified by the "name" attribute +# exists, and the CARDDAV:prop-filter is empty, or it matches any +# specified CARDDAV:text-match or CARDDAV:param-filter +# conditions. +# ... +# +# This test should return all vCards with a FBURL property, except +# for Andrew McMillan. Currently there are two vCards which meet +# this restriction. +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user1/addressbook/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +# HEAD + +BEGINDATA + + + + + + + + + andrew@morphoss.com + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ +REPLACE=/^UID:.*$/UID:a nice UID/ diff --git a/testing/tests/regression-suite/0230-Moz-REPORT-Tasks-Completed.result b/testing/tests/regression-suite/0230-Moz-REPORT-Tasks-Completed.result index a6102620..df6302ec 100644 --- a/testing/tests/regression-suite/0230-Moz-REPORT-Tasks-Completed.result +++ b/testing/tests/regression-suite/0230-Moz-REPORT-Tasks-Completed.result @@ -2,36 +2,12 @@ HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, bind, addressbook, calendar-auto-schedule, calendar-proxy -ETag: "8bfa1d55385dd1c0d877ba64358b56d4" -Content-Length: 1574 +ETag: "ad7855a9510df25e6c23b501a47f38ff" +Content-Length: 865 Content-Type: text/xml; charset="utf-8" - - /davical/caldav.php/user1/home/2178279a-aec2-471f-832d-1f6df6203f2f.ics - - - "509b0f0d8a3363379f9f5727f5dd74a0" - BEGIN:VCALENDAR -PRODID:-//Mozilla Calendar//NONSGML Sunbird//EN -VERSION:2.0 -BEGIN:VTODO -CREATED:20070805T200215Z -LAST-MODIFIED:20070805T201531Z -DTSTAMP:20070805T200215Z -UID:2178279a-aec2-471f-832d-1f6df6203f2f -SUMMARY:Incomplete\, uncancelled -X-MOZ-LOCATIONPATH:2178279a-aec2-471f-832d-1f6df6203f2f.ics -DESCRIPTION:This task is incomplete and has not been cancelled (has no - status at all) -END:VTODO -END:VCALENDAR - - - HTTP/1.1 200 OK - - /davical/caldav.php/user1/home/917b9e47-b748-4550-a566-657fbe672447.ics From 8239519ca37c68744ee17509871f766d0947c3b3 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Tue, 2 Feb 2021 23:11:30 +0800 Subject: [PATCH 05/37] Normalize "100 Continue" headers apache2 in bullseye has stopped sending these for some reason, but we want to be able to test in both newer and older environments --- testing/normalise_result | 4 ++++ testing/tests/binding/1030-PUT-whole-subcalendar.result | 2 -- testing/tests/carddav/2003-PUT-vcard.result | 2 -- testing/tests/carddav/2014-PUT-vcard.result | 2 -- testing/tests/carddav/2016-PUT-vcard.result | 2 -- testing/tests/carddav/2017-PUT-vcard.result | 2 -- testing/tests/carddav/2018-PUT-vcard.result | 2 -- testing/tests/ischedule/3050-PUT-with-attendees.result | 2 -- testing/tests/ischedule/3051-PUT-with-attendees.result | 2 -- .../0000-Setup-PUT-collection-nz_holidays.result | 2 -- .../0000-Setup-PUT-collection-us_holidays.result | 2 -- .../0000-Setup-PUT-collection-user3-utf8.result | 2 -- .../regression-suite/0000-Setup-PUT-collection-user3.result | 2 -- .../regression-suite/0000-Setup-PUT-collection-user4.result | 2 -- .../regression-suite/0000-Setup-PUT-collection-user5.result | 2 -- .../regression-suite/0000-Setup-PUT-collection-user6.result | 2 -- .../tests/regression-suite/0000-Setup-PUT-collection.result | 2 -- testing/tests/regression-suite/0104-Evo-PUT-1.result | 2 -- testing/tests/regression-suite/0233-Moz-PUT.result | 2 -- testing/tests/regression-suite/0515-iCal-PUT-VEVENT.result | 2 -- testing/tests/regression-suite/0548-iCal-PROPFIND.result | 2 -- testing/tests/regression-suite/0803-Mulberry-PUT-1.result | 2 -- testing/tests/regression-suite/0804-Mulberry-PUT-1.result | 2 -- testing/tests/regression-suite/0902-PUT-collection.result | 2 -- testing/tests/scheduling/3010-PUT-with-attendees.result | 2 -- testing/tests/scheduling/3032-PUT-iCal-with-attendees.result | 2 -- 26 files changed, 4 insertions(+), 50 deletions(-) diff --git a/testing/normalise_result b/testing/normalise_result index e7addb39..67b6460e 100755 --- a/testing/normalise_result +++ b/testing/normalise_result @@ -57,6 +57,10 @@ while( ) { /^Content-Type: / && $no_content && do { $_ = ""; }; + /^HTTP\/1\.1 100 Continue/ && do { + my $swallow_next_line_as_well = ; + next; + }; print; } diff --git a/testing/tests/binding/1030-PUT-whole-subcalendar.result b/testing/tests/binding/1030-PUT-whole-subcalendar.result index fb257cdc..03bfc26c 100644 --- a/testing/tests/binding/1030-PUT-whole-subcalendar.result +++ b/testing/tests/binding/1030-PUT-whole-subcalendar.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/carddav/2003-PUT-vcard.result b/testing/tests/carddav/2003-PUT-vcard.result index 58ba3614..1e22162d 100644 --- a/testing/tests/carddav/2003-PUT-vcard.result +++ b/testing/tests/carddav/2003-PUT-vcard.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/carddav/2014-PUT-vcard.result b/testing/tests/carddav/2014-PUT-vcard.result index 8d0f4a00..fcc35b80 100644 --- a/testing/tests/carddav/2014-PUT-vcard.result +++ b/testing/tests/carddav/2014-PUT-vcard.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 204 No Content Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/carddav/2016-PUT-vcard.result b/testing/tests/carddav/2016-PUT-vcard.result index 37a63723..e2a4050f 100644 --- a/testing/tests/carddav/2016-PUT-vcard.result +++ b/testing/tests/carddav/2016-PUT-vcard.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/carddav/2017-PUT-vcard.result b/testing/tests/carddav/2017-PUT-vcard.result index 55551b1a..904e0a7e 100644 --- a/testing/tests/carddav/2017-PUT-vcard.result +++ b/testing/tests/carddav/2017-PUT-vcard.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/carddav/2018-PUT-vcard.result b/testing/tests/carddav/2018-PUT-vcard.result index 535da179..da2a24df 100644 --- a/testing/tests/carddav/2018-PUT-vcard.result +++ b/testing/tests/carddav/2018-PUT-vcard.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/ischedule/3050-PUT-with-attendees.result b/testing/tests/ischedule/3050-PUT-with-attendees.result index fb3acc7b..12f197e8 100644 --- a/testing/tests/ischedule/3050-PUT-with-attendees.result +++ b/testing/tests/ischedule/3050-PUT-with-attendees.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT ETag: "2f9bb75f51266683f713f8d382a67bff" diff --git a/testing/tests/ischedule/3051-PUT-with-attendees.result b/testing/tests/ischedule/3051-PUT-with-attendees.result index bbd9cf6d..e82aa8a8 100644 --- a/testing/tests/ischedule/3051-PUT-with-attendees.result +++ b/testing/tests/ischedule/3051-PUT-with-attendees.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT ETag: "2f9bb75f51266683f713f8d382a67bff" diff --git a/testing/tests/regression-suite/0000-Setup-PUT-collection-nz_holidays.result b/testing/tests/regression-suite/0000-Setup-PUT-collection-nz_holidays.result index eee5f869..57f457d2 100644 --- a/testing/tests/regression-suite/0000-Setup-PUT-collection-nz_holidays.result +++ b/testing/tests/regression-suite/0000-Setup-PUT-collection-nz_holidays.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0000-Setup-PUT-collection-us_holidays.result b/testing/tests/regression-suite/0000-Setup-PUT-collection-us_holidays.result index eee5f869..57f457d2 100644 --- a/testing/tests/regression-suite/0000-Setup-PUT-collection-us_holidays.result +++ b/testing/tests/regression-suite/0000-Setup-PUT-collection-us_holidays.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0000-Setup-PUT-collection-user3-utf8.result b/testing/tests/regression-suite/0000-Setup-PUT-collection-user3-utf8.result index 4f534d34..67b7eae5 100644 --- a/testing/tests/regression-suite/0000-Setup-PUT-collection-user3-utf8.result +++ b/testing/tests/regression-suite/0000-Setup-PUT-collection-user3-utf8.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0000-Setup-PUT-collection-user3.result b/testing/tests/regression-suite/0000-Setup-PUT-collection-user3.result index 9de19173..01b1b57b 100644 --- a/testing/tests/regression-suite/0000-Setup-PUT-collection-user3.result +++ b/testing/tests/regression-suite/0000-Setup-PUT-collection-user3.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0000-Setup-PUT-collection-user4.result b/testing/tests/regression-suite/0000-Setup-PUT-collection-user4.result index eee5f869..57f457d2 100644 --- a/testing/tests/regression-suite/0000-Setup-PUT-collection-user4.result +++ b/testing/tests/regression-suite/0000-Setup-PUT-collection-user4.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0000-Setup-PUT-collection-user5.result b/testing/tests/regression-suite/0000-Setup-PUT-collection-user5.result index f621d68d..7bb00003 100644 --- a/testing/tests/regression-suite/0000-Setup-PUT-collection-user5.result +++ b/testing/tests/regression-suite/0000-Setup-PUT-collection-user5.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0000-Setup-PUT-collection-user6.result b/testing/tests/regression-suite/0000-Setup-PUT-collection-user6.result index 6dc4ce4c..87eae9f2 100644 --- a/testing/tests/regression-suite/0000-Setup-PUT-collection-user6.result +++ b/testing/tests/regression-suite/0000-Setup-PUT-collection-user6.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0000-Setup-PUT-collection.result b/testing/tests/regression-suite/0000-Setup-PUT-collection.result index e6a1056e..5176d185 100644 --- a/testing/tests/regression-suite/0000-Setup-PUT-collection.result +++ b/testing/tests/regression-suite/0000-Setup-PUT-collection.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0104-Evo-PUT-1.result b/testing/tests/regression-suite/0104-Evo-PUT-1.result index 578d8b36..7172e1aa 100644 --- a/testing/tests/regression-suite/0104-Evo-PUT-1.result +++ b/testing/tests/regression-suite/0104-Evo-PUT-1.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0233-Moz-PUT.result b/testing/tests/regression-suite/0233-Moz-PUT.result index c853092a..b441c3fa 100644 --- a/testing/tests/regression-suite/0233-Moz-PUT.result +++ b/testing/tests/regression-suite/0233-Moz-PUT.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0515-iCal-PUT-VEVENT.result b/testing/tests/regression-suite/0515-iCal-PUT-VEVENT.result index fc8ff9a8..5c201ee8 100644 --- a/testing/tests/regression-suite/0515-iCal-PUT-VEVENT.result +++ b/testing/tests/regression-suite/0515-iCal-PUT-VEVENT.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0548-iCal-PROPFIND.result b/testing/tests/regression-suite/0548-iCal-PROPFIND.result index 870f59c7..b08d7470 100644 --- a/testing/tests/regression-suite/0548-iCal-PROPFIND.result +++ b/testing/tests/regression-suite/0548-iCal-PROPFIND.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0803-Mulberry-PUT-1.result b/testing/tests/regression-suite/0803-Mulberry-PUT-1.result index e9042fd2..ab92fc13 100644 --- a/testing/tests/regression-suite/0803-Mulberry-PUT-1.result +++ b/testing/tests/regression-suite/0803-Mulberry-PUT-1.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0804-Mulberry-PUT-1.result b/testing/tests/regression-suite/0804-Mulberry-PUT-1.result index 6d0080e4..7c02dac8 100644 --- a/testing/tests/regression-suite/0804-Mulberry-PUT-1.result +++ b/testing/tests/regression-suite/0804-Mulberry-PUT-1.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/regression-suite/0902-PUT-collection.result b/testing/tests/regression-suite/0902-PUT-collection.result index fbce37f5..2b313fba 100644 --- a/testing/tests/regression-suite/0902-PUT-collection.result +++ b/testing/tests/regression-suite/0902-PUT-collection.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/scheduling/3010-PUT-with-attendees.result b/testing/tests/scheduling/3010-PUT-with-attendees.result index ca01a6bd..65e62b64 100644 --- a/testing/tests/scheduling/3010-PUT-with-attendees.result +++ b/testing/tests/scheduling/3010-PUT-with-attendees.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 201 Created Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule diff --git a/testing/tests/scheduling/3032-PUT-iCal-with-attendees.result b/testing/tests/scheduling/3032-PUT-iCal-with-attendees.result index f85a166a..ec71606d 100644 --- a/testing/tests/scheduling/3032-PUT-iCal-with-attendees.result +++ b/testing/tests/scheduling/3032-PUT-iCal-with-attendees.result @@ -1,5 +1,3 @@ -HTTP/1.1 100 Continue - HTTP/1.1 204 No Content Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule From d6c1c87fc6787f0cdb307b977b21b51ca1f0a92f Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Tue, 2 Feb 2021 21:38:13 +0800 Subject: [PATCH 06/37] CI: build and test on Debian unstable, then several stable releases relevant to our users stable releases currently include bullseye + buster + stretch; would be nice if we could add Fedora or Gentoo or Arch ... --- .gitlab-ci.yml | 155 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 153 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 874a9217..96ee701a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,11 +1,15 @@ -image: php:apache-buster +stages: + - build + - test + - testall build: stage: build + image: debian:unstable script: - apt-get -y update - bash -c 'mkdir -p /usr/share/man/man{0..10}' - - apt-get -y install build-essential devscripts fakeroot dh-exec jdupes rst2pdf doxygen graphviz # todo build-dep instead, change this task's image to plain debian + - apt-get -y install build-essential devscripts fakeroot dh-exec jdupes doxygen graphviz php-cli - mv debian/changelog debian/changelog.old - > cat @@ -26,6 +30,103 @@ build: test: stage: test + image: debian:unstable + artifacts: + paths: + - testing/report.xml + - apache2_log/* + reports: + junit: testing/report.xml + when: + always + script: + - apt-get -y update + - bash -c 'mkdir -p /usr/share/man/man{0..10}' + - apt-get -y install locales + - echo "en_NZ.UTF-8 UTF-8" >> /etc/locale.gen + - locale-gen + - echo "LANG=en_NZ.UTF-8" > /etc/default/locale + - apt-get -y install libdbd-pg-perl libyaml-perl php php-cli php-pgsql php-xml postgresql-client postgresql libapache2-mod-php curl xmlstarlet + - curl 'https://gitlab.com/davical-project/awl/-/archive/master/awl-master.tar.gz' | tar zxf - + - mv awl-master /usr/share/awl/ + - chown -R www-data /usr/share/awl/ + - dpkg --ignore-depends=libawl-php -i *.deb + - echo '127.0.1.1 regression mycaldav myempty' >> /etc/hosts + - rm /etc/apache2/ports.conf /etc/apache2/sites-enabled/000-default.conf && touch /etc/apache2/ports.conf + - cp testing/apache-site.conf.example /etc/apache2/sites-enabled/davical-regression.conf + - sed -i 's/\/path\/to/\/usr\/share/g' /etc/apache2/sites-enabled/davical-regression.conf + - mkdir /usr/share/davical/testing/ + - cp testing/*.php /usr/share/davical/testing/ + - rm /etc/davical/config.php + - cp testing/regression-conf.php.example /etc/davical/regression-conf.php + - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php + - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php + - sed -i '/peer/d' /etc/postgresql/13/main/pg_hba.conf + - echo 'local all all trust' >> /etc/postgresql/13/main/pg_hba.conf + - pg_ctlcluster 13 main start + - su postgres -c 'createuser davical_dba --createdb --createrole --superuser' + - su postgres -c 'createuser davical_app --superuser' + - su postgres -c 'createuser testrunner --superuser' + - pg_ctlcluster 13 main restart + - a2enmod rewrite + - apache2ctl start + - useradd testrunner + - cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling" ./run_regressions.sh all x' + after_script: + - cp -r /var/log/apache2 apache2_log + + +test_bullseye: + stage: testall + image: debian:bullseye + artifacts: + paths: + - testing/report.xml + - apache2_log/* + reports: + junit: testing/report.xml + when: + always + script: + - apt-get -y update + - bash -c 'mkdir -p /usr/share/man/man{0..10}' + - apt-get -y install locales + - echo "en_NZ.UTF-8 UTF-8" >> /etc/locale.gen + - locale-gen + - echo "LANG=en_NZ.UTF-8" > /etc/default/locale + - apt-get -y install libdbd-pg-perl libyaml-perl php php-cli php-pgsql php-xml postgresql-client postgresql libapache2-mod-php curl xmlstarlet + - curl 'https://gitlab.com/davical-project/awl/-/archive/master/awl-master.tar.gz' | tar zxf - + - mv awl-master /usr/share/awl/ + - chown -R www-data /usr/share/awl/ + - dpkg --ignore-depends=libawl-php -i *.deb + - echo '127.0.1.1 regression mycaldav myempty' >> /etc/hosts + - rm /etc/apache2/ports.conf /etc/apache2/sites-enabled/000-default.conf && touch /etc/apache2/ports.conf + - cp testing/apache-site.conf.example /etc/apache2/sites-enabled/davical-regression.conf + - sed -i 's/\/path\/to/\/usr\/share/g' /etc/apache2/sites-enabled/davical-regression.conf + - mkdir /usr/share/davical/testing/ + - cp testing/*.php /usr/share/davical/testing/ + - rm /etc/davical/config.php + - cp testing/regression-conf.php.example /etc/davical/regression-conf.php + - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php + - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php + - sed -i '/peer/d' /etc/postgresql/13/main/pg_hba.conf + - echo 'local all all trust' >> /etc/postgresql/13/main/pg_hba.conf + - pg_ctlcluster 13 main start + - su postgres -c 'createuser davical_dba --createdb --createrole --superuser' + - su postgres -c 'createuser davical_app --superuser' + - su postgres -c 'createuser testrunner --superuser' + - pg_ctlcluster 13 main restart + - a2enmod rewrite + - apache2ctl start + - useradd testrunner + - cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling" ./run_regressions.sh all x' + after_script: + - cp -r /var/log/apache2 apache2_log + + +test_buster: + stage: testall + image: php:apache-buster artifacts: paths: - testing/report.xml @@ -72,3 +173,53 @@ test: - cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling" ./run_regressions.sh all x' after_script: - cp -r /var/log/apache2 apache2_log + + +test_stretch: + stage: testall + image: php:apache-stretch + artifacts: + paths: + - testing/report.xml + - apache2_log/* + reports: + junit: testing/report.xml + when: + always + script: + - apt-get -y update + - bash -c 'mkdir -p /usr/share/man/man{0..10}' + - apt-get -y install locales + - echo "en_NZ.UTF-8 UTF-8" >> /etc/locale.gen + - locale-gen + - echo "LANG=en_NZ.UTF-8" > /etc/default/locale + - apt-get -y install libdbd-pg-perl libyaml-perl perl postgresql postgresql-client libpq-dev xmlstarlet + - curl 'https://gitlab.com/davical-project/awl/-/archive/master/awl-master.tar.gz' | tar zxf - + - mv awl-master /usr/share/awl/ + - chown -R www-data /usr/share/awl/ + - dpkg --ignore-depends=php,php-pgsql,php-xml,libawl-php,php-cli -i *.deb + - docker-php-ext-install -j$(nproc) pgsql + - docker-php-ext-install -j$(nproc) pdo_pgsql + - docker-php-ext-install -j$(nproc) calendar + - echo '127.0.1.1 regression mycaldav myempty' >> /etc/hosts + - cp testing/apache-site.conf.example /etc/apache2/sites-enabled/davical-regression.conf + - sed -i 's/\/path\/to/\/usr\/share/g' /etc/apache2/sites-enabled/davical-regression.conf + - mkdir /usr/share/davical/testing/ + - cp testing/*.php /usr/share/davical/testing/ + - rm /etc/davical/config.php + - cp testing/regression-conf.php.example /etc/davical/regression-conf.php + - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php + - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php + - sed -i '/peer/d' /etc/postgresql/9.6/main/pg_hba.conf + - echo 'local all all trust' >> /etc/postgresql/9.6/main/pg_hba.conf + - pg_ctlcluster 9.6 main start + - su postgres -c 'createuser davical_dba --createdb --createrole --superuser' + - su postgres -c 'createuser davical_app --superuser' + - su postgres -c 'createuser testrunner --superuser' + - pg_ctlcluster 9.6 main restart + - a2enmod rewrite + - apache2ctl start + - useradd testrunner + - cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling" ./run_regressions.sh all x' + after_script: + - cp -r /var/log/apache2 apache2_log From 39bfe88887237c705a0aab70dcdb8aacbb11c55b Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Wed, 3 Feb 2021 21:09:19 +0800 Subject: [PATCH 07/37] CI: add build_buster_latestphp this helps to identify issues with new PHP versions before they appear in Debian note: debuild sanitizes PATH, needs --prepend-path=/usr/local/bin so that the (non-Debian) php cli can be found --- .gitlab-ci.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 96ee701a..5d1ba312 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -124,6 +124,31 @@ test_bullseye: - cp -r /var/log/apache2 apache2_log +build_buster_latestphp: + stage: testall + image: php:apache-buster + script: + - apt-get -y update + - bash -c 'mkdir -p /usr/share/man/man{0..10}' + - apt-get -y install build-essential devscripts fakeroot dh-exec jdupes doxygen graphviz + - mv debian/changelog debian/changelog.old + - > + cat + <(echo "davical ($(cat VERSION)-99~git$(date +"%Y%m%d")-$(git rev-parse --short $CI_COMMIT_SHA)) unstable; urgency=medium") + <(echo "") + <(echo " * Build on CI") + <(echo "") + <(echo " -- ${GITLAB_USER_NAME} <${GITLAB_USER_EMAIL}> $(date -R)") + <(echo "") + debian/changelog.old + >debian/changelog + - rm debian/changelog.old + - debuild --prepend-path=/usr/local/bin -us -uc -b -d + - 'mv ../davical_*_all.deb ./davical.deb' + artifacts: + paths: + - '*.deb' + test_buster: stage: testall image: php:apache-buster From f376be164eacf51d7354c728094e697ee2336218 Mon Sep 17 00:00:00 2001 From: Jan Hicken Date: Sun, 31 Jan 2021 11:46:32 +0100 Subject: [PATCH 08/37] Use brackets instead of curly braces for string offset access Curly braces have been deprecated in PHP 7.4 and unsupported in PHP 8.0. --- inc/check_UTF8.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/check_UTF8.php b/inc/check_UTF8.php index e3c93dbf..62dbfc00 100644 --- a/inc/check_UTF8.php +++ b/inc/check_UTF8.php @@ -67,7 +67,7 @@ function utf8ToUnicode(&$str) $len = strlen($str); for($i = 0; $i < $len; $i++) { - $in = ord($str{$i}); + $in = ord($str[$i]); if (0 == $mState) { // When mState is zero we expect either a US-ASCII character or a // multi-octet sequence. From 6cdbfcf226f0235a00206edfd119fcc90465a2b8 Mon Sep 17 00:00:00 2001 From: Jan Hicken Date: Sun, 31 Jan 2021 11:47:41 +0100 Subject: [PATCH 09/37] Add default value for errcontext variable in error handler function This variable is no longer passed in PHP 8.0. It cannot be removed however, because it would not be backwards compatible. --- htdocs/setup.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/setup.php b/htdocs/setup.php index 8b13d0ad..2a82dbf3 100644 --- a/htdocs/setup.php +++ b/htdocs/setup.php @@ -13,7 +13,7 @@ function log_setup_error($errno , $errstr , $errfile , $errline) { error_log('DAViCal setup.php: Informational: '.$errfile.'('.$errline.'): ['.$errno.'] '.$errstr); } -function catch_setup_errors($errno , $errstr , $errfile , $errline , $errcontext ) { +function catch_setup_errors($errno , $errstr , $errfile , $errline , $errcontext = null ) { if ( $errno == 2 ) { // A working installation will regularly fail to include_once() for several files as it searches for the location log_setup_error($errno , $errstr , $errfile , $errline); From 75f62a81f651066135cf517bff27b00846fd2820 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Wed, 3 Feb 2021 23:22:58 +0800 Subject: [PATCH 10/37] fix PHP8 deprecation warnings: "Required parameter X follows optional parameter Y" Deprecated: Required parameter $username follows optional parameter $attributes in inc/drivers_ldap.php on line 190 Deprecated: Required parameter $passwd follows optional parameter $attributes in inc/drivers_ldap.php on line 190 Deprecated: Required parameter $ua_string follows optional parameter $min_age in inc/external-fetch.php on line 42 As explained in https://www.php.net/manual/en/migration80.deprecated.php, If a parameter with a default value is followed by a required parameter, the default value has no effect. This is deprecated as of PHP 8.0.0 and can generally be resolved by dropping the default value, without a change in functionality --- inc/drivers_ldap.php | 6 ++++-- inc/external-fetch.php | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/inc/drivers_ldap.php b/inc/drivers_ldap.php index e59af74a..6e8c8089 100644 --- a/inc/drivers_ldap.php +++ b/inc/drivers_ldap.php @@ -180,14 +180,16 @@ class ldapDriver } /** - * Returns the result of the LDAP query + * Actually look up a user in the LDAP directory + * (this is the LDAP part of LDAP_check() below) * * @param string $filter The filter used to search entries * @param array $attributes Attributes to be returned + * @param string $username username to check * @param string $passwd password to check * @return array Contains selected attributes from all entries corresponding to the given filter */ - function requestUser( $filter, $attributes=NULL, $username, $passwd) { + function requestUser( $filter, $attributes, $username, $passwd) { global $c; $entry=NULL; diff --git a/inc/external-fetch.php b/inc/external-fetch.php index 599470c7..b124f6e5 100644 --- a/inc/external-fetch.php +++ b/inc/external-fetch.php @@ -39,7 +39,7 @@ function create_external ( $path,$is_calendar,$is_addressbook ) } } -function fetch_external ( $bind_id, $min_age = '1 hour', $ua_string ) +function fetch_external ( $bind_id, $min_age, $ua_string ) { if ( ! function_exists ( "curl_init" ) ) { dbg_error_log("external", "external resource cannot be fetched without curl, please install curl"); From 55fde81b50f6140a2c20834a04d164f43128ac2e Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Thu, 4 Feb 2021 22:15:10 +1300 Subject: [PATCH 11/37] Add a bit more info about various suites, and how to time timezone --- testing/README.regression_tests | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/testing/README.regression_tests b/testing/README.regression_tests index 0360008c..76dc60a6 100644 --- a/testing/README.regression_tests +++ b/testing/README.regression_tests @@ -124,6 +124,36 @@ the options being This should allow for convenient updating of tests and expected results. +TEST SUITES +----------- + +binding + + Test binding locations under a principal. + +carddav + + CardDAV related tests. + +ischedule + + Scheduling extensions. + +regression-suite + + Bulk of the regression tests. + +scheduling + + Scheduling extensions. + +timezone + + Timezone tests. To run these you need to have run: + ../zondedb/update-tzdata.sh + which in turn needs a binary called vzic. You build this from: + https://github.com/libical/vzic + WRITING TESTS ------------- From 7c37035201cc998ac0818c9338b2d2976bc8c415 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Thu, 4 Feb 2021 22:20:19 +1300 Subject: [PATCH 12/37] I always get whitespace changes --- .../tests/timezone/5000-capabilities.result | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/testing/tests/timezone/5000-capabilities.result b/testing/tests/timezone/5000-capabilities.result index 55a1369b..384c791f 100644 --- a/testing/tests/timezone/5000-capabilities.result +++ b/testing/tests/timezone/5000-capabilities.result @@ -1,12 +1,12 @@ HTTP/1.1 200 OK Date: Dow, 01 Jan 2000 00:00:00 GMT -Content-Length: 3011 +Content-Length: 2962 Content-Type: application/xml; charset="utf-8" - Olson releases/tzdata2012c + Olson tzdata-latest mailto:admin@davical.example.com @@ -15,14 +15,14 @@ Content-Type: application/xml; charset="utf-8" list List timezone identifiers and localized forms - + lang false true Specify desired localized form(s) - + changedsince false @@ -31,7 +31,7 @@ Content-Type: application/xml; charset="utf-8" given date - + returnall false @@ -40,14 +40,14 @@ Content-Type: application/xml; charset="utf-8" - + get Returns one or more timezones as specified by the tzid parameter. - + format false @@ -57,14 +57,14 @@ Content-Type: application/xml; charset="utf-8" Specify required format for timezone. - + lang false true Specify desired localized form(s) - + tzid true @@ -73,21 +73,21 @@ Content-Type: application/xml; charset="utf-8" - + expand Expands the specified timezone(s) into local onset and UTC offsets - + tzid true true Specify desired timezone identifiers - + start false @@ -97,7 +97,7 @@ Content-Type: application/xml; charset="utf-8" current year is assumed. - + end false @@ -108,7 +108,7 @@ Content-Type: application/xml; charset="utf-8" - + capabilities Gets the capabilities of the server From 963772a0f0a534ad10ff02788d7baa72348faeb4 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Thu, 4 Feb 2021 23:08:05 +1300 Subject: [PATCH 13/37] Fix the test result and hopefully make the description clearer --- .../2042-REPORT-addressbook-query.result | 57 +++++++++++++++++++ .../2042-REPORT-addressbook-query.test | 5 +- 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/testing/tests/carddav/2042-REPORT-addressbook-query.result b/testing/tests/carddav/2042-REPORT-addressbook-query.result index 154df3bc..78d1422c 100644 --- a/testing/tests/carddav/2042-REPORT-addressbook-query.result +++ b/testing/tests/carddav/2042-REPORT-addressbook-query.result @@ -1101,6 +1101,38 @@ X-DESCRIPTION;CHARSET=utf-8:außerdem CATEGORIES:uni REV:date END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_2_0.vcf + + + some valid etag + BEGIN:VCARD +VERSION:2.1 +N;CHARSET=UTF-8:Test-Roßdeutscher;Jörg;;; +FN;CHARSET=UTF-8:Jörg Test-Roßdeutscher +ORG:Factor Design AG; +EMAIL;INTERNET;WORK:joerg.rossdeutscher@factordesign.foo +EMAIL;INTERNET;WORK:joerg@factordesign.foo +EMAIL;INTERNET;HOME:joerg.rossdeutscher@gesindel.foo +EMAIL;INTERNET;HOME:raettchen@gmail.bar +TEL;WORK:040 999999432571-43 +TEL;CELL:017799999978200 +TEL;HOME:040999999793017 +ADR;WORK;CHARSET=UTF-8:;;abcStraße 58;Hamburg;;20357;Deutschland +ADR;HOME:;;Gayens Weg 9;Hamburg;;22761;Deutschland +NOTE;CHARSET=UTF-8: + Technik\, Web\, DTP\, SysAdmin\, €-Vermögensverwalter +URL;TYPE=pref:www.gesindel.baz +URL:www.factordesign.foo +BDAY;VALUE=date:1969-06-20 +UID:a nice UID +REV:date +END:VCARD HTTP/1.1 200 OK @@ -1138,6 +1170,31 @@ X-ABUID:58AB933D-81D3-4095-8CB5-A63431AC934D:ABPerson UID:a nice UID REV:date END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addresses/def02753-ea1c-aa34-957d-aa847deb7a55.vcf + + + some valid etag + BEGIN:VCARD +FN:Donald Kelly +N:Kelly;Donald +ORG:Esposo Designs Ltd +ADR:Newtown;;25 Rintoul St;Wellington;;;New Zealand +EMAIL;INTERNET:donald@example.co.nz +TITLE:Proprietor +TEL;WORK:+64 4 347 4747 +TEL;CELL:+64 2 1234-4321 +X-MOZILLA-HTML:TRUE +URL:www.example.co.nz +VERSION:2.1 +UID:a nice UID +REV:date +END:VCARD HTTP/1.1 200 OK diff --git a/testing/tests/carddav/2042-REPORT-addressbook-query.test b/testing/tests/carddav/2042-REPORT-addressbook-query.test index b700b099..9d333789 100644 --- a/testing/tests/carddav/2042-REPORT-addressbook-query.test +++ b/testing/tests/carddav/2042-REPORT-addressbook-query.test @@ -2,8 +2,9 @@ # Request a REPORT # # param-filter should filter on parameter value. With a negated -# null value we shouldn't return any vCards with the prop value -# but with param value. +# null value we should return all vCards with the property that +# matches the prop-filter type, and there there is a parameter +# of TYPE set. # TYPE=REPORT URL=http://regression.host/caldav.php/user1/addressbook/ From f94b000cc17cec2ad3502ca0eb57400e0b89b40a Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Thu, 4 Feb 2021 23:14:49 +1300 Subject: [PATCH 14/37] Correctly exclude cards where TYPE is not set on TEL records. Commit f1bc3b0dc00d42bb6c3053559230690ae1a6745b in AWL fixed this behaviour. --- .../2042-REPORT-addressbook-query.result | 57 ------------------- 1 file changed, 57 deletions(-) diff --git a/testing/tests/carddav/2042-REPORT-addressbook-query.result b/testing/tests/carddav/2042-REPORT-addressbook-query.result index 78d1422c..154df3bc 100644 --- a/testing/tests/carddav/2042-REPORT-addressbook-query.result +++ b/testing/tests/carddav/2042-REPORT-addressbook-query.result @@ -1101,38 +1101,6 @@ X-DESCRIPTION;CHARSET=utf-8:außerdem CATEGORIES:uni REV:date END:VCARD - - - HTTP/1.1 200 OK - - - - /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_2_0.vcf - - - some valid etag - BEGIN:VCARD -VERSION:2.1 -N;CHARSET=UTF-8:Test-Roßdeutscher;Jörg;;; -FN;CHARSET=UTF-8:Jörg Test-Roßdeutscher -ORG:Factor Design AG; -EMAIL;INTERNET;WORK:joerg.rossdeutscher@factordesign.foo -EMAIL;INTERNET;WORK:joerg@factordesign.foo -EMAIL;INTERNET;HOME:joerg.rossdeutscher@gesindel.foo -EMAIL;INTERNET;HOME:raettchen@gmail.bar -TEL;WORK:040 999999432571-43 -TEL;CELL:017799999978200 -TEL;HOME:040999999793017 -ADR;WORK;CHARSET=UTF-8:;;abcStraße 58;Hamburg;;20357;Deutschland -ADR;HOME:;;Gayens Weg 9;Hamburg;;22761;Deutschland -NOTE;CHARSET=UTF-8: - Technik\, Web\, DTP\, SysAdmin\, €-Vermögensverwalter -URL;TYPE=pref:www.gesindel.baz -URL:www.factordesign.foo -BDAY;VALUE=date:1969-06-20 -UID:a nice UID -REV:date -END:VCARD HTTP/1.1 200 OK @@ -1170,31 +1138,6 @@ X-ABUID:58AB933D-81D3-4095-8CB5-A63431AC934D:ABPerson UID:a nice UID REV:date END:VCARD - - - HTTP/1.1 200 OK - - - - /caldav.php/user1/addresses/def02753-ea1c-aa34-957d-aa847deb7a55.vcf - - - some valid etag - BEGIN:VCARD -FN:Donald Kelly -N:Kelly;Donald -ORG:Esposo Designs Ltd -ADR:Newtown;;25 Rintoul St;Wellington;;;New Zealand -EMAIL;INTERNET:donald@example.co.nz -TITLE:Proprietor -TEL;WORK:+64 4 347 4747 -TEL;CELL:+64 2 1234-4321 -X-MOZILLA-HTML:TRUE -URL:www.example.co.nz -VERSION:2.1 -UID:a nice UID -REV:date -END:VCARD HTTP/1.1 200 OK From 57f0bc6e4101347ab2e2337a0ccb24e28c5fefb3 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Thu, 4 Feb 2021 16:33:19 +0800 Subject: [PATCH 15/37] add 4 VCARDs from carddavclient AddressbookQueryTest we will run these tests in user5's addresses --- .../carddav/2050-PUT-carddavclient.result | 0 .../tests/carddav/2050-PUT-carddavclient.test | 58 +++++++++++++++++++ .../tests/scheduling/Restore-Database.result | 4 +- .../tests/timezone/Restore-Database.result | 4 +- 4 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 testing/tests/carddav/2050-PUT-carddavclient.result create mode 100644 testing/tests/carddav/2050-PUT-carddavclient.test diff --git a/testing/tests/carddav/2050-PUT-carddavclient.result b/testing/tests/carddav/2050-PUT-carddavclient.result new file mode 100644 index 00000000..e69de29b diff --git a/testing/tests/carddav/2050-PUT-carddavclient.test b/testing/tests/carddav/2050-PUT-carddavclient.test new file mode 100644 index 00000000..3f9ad32a --- /dev/null +++ b/testing/tests/carddav/2050-PUT-carddavclient.test @@ -0,0 +1,58 @@ +# +# Put the VCARDs used for carddavclient's interop/AddressbookQueryTest +# into user5's addressbook +# +TYPE=PUT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/vcard + +AUTH=user5:user5 + +# HEAD + +BEGINDATA +BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13 +FN:CardDavClient Test212420682 +N:Test212420682;CardDavClient;;; +NICKNAME:Jonny0 +EMAIL;TYPE=HOME:john6doe@example.com +EMAIL;TYPE=WORK:doe6@example.com +X-CUSTOMPROP;X-CUSTOMPARAM=WORK:foobar +END:VCARD +BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36 +FN:CardDavClient Test913043917 +N:Test913043917;CardDavClient;;; +NICKNAME:Jonny1 +EMAIL:maxmu@abcd.com +X-CUSTOMPROP;X-CUSTOMPARAM=HOME,WORK:foobar +END:VCARD +BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-41956788-1273-449e-bfb7-716850c91ec6 +FN:CardDavClient Test879489908 +N:Test879489908;CardDavClient;;; +NICKNAME:Jonny2 +TEL;TYPE=HOME:12345 +TEL:555 +END:VCARD +BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b +FN:CardDavClient Test1520108081 +N:Test1520108081;CardDavClient;;; +NICKNAME:Jonny3 +item1.EMAIL:foo@ex.com +item1.X-ABLABEL:CustomLabel +IMPP;X-SERVICE-TYPE=Jabber;TYPE=HOME:xmpp:foo@example.com +END:VCARD +ENDDATA diff --git a/testing/tests/scheduling/Restore-Database.result b/testing/tests/scheduling/Restore-Database.result index e382f989..0e126f5f 100644 --- a/testing/tests/scheduling/Restore-Database.result +++ b/testing/tests/scheduling/Restore-Database.result @@ -5,7 +5,7 @@ setval -------- - 1649 + 1653 (1 row) setval @@ -125,7 +125,7 @@ setval -------- - 42 + 43 (1 row) setval diff --git a/testing/tests/timezone/Restore-Database.result b/testing/tests/timezone/Restore-Database.result index 2e683d71..85feeb12 100644 --- a/testing/tests/timezone/Restore-Database.result +++ b/testing/tests/timezone/Restore-Database.result @@ -5,7 +5,7 @@ setval -------- - 1674 + 1678 (1 row) setval @@ -125,7 +125,7 @@ setval -------- - 47 + 48 (1 row) setval From 6e87a1443c355959fda6d6840e455143d28899eb Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Thu, 4 Feb 2021 17:30:05 +0800 Subject: [PATCH 16/37] add a REPORT for a property with multiple values, not all of which match the is-not-defined filter (carddavclient's ParamNotDefinedSome test) BUG: as explained in the test, this should not match Jonny2; and it should most certainly not match those other VCARDs from a different user's collections! --- ...T-carddavclient-ParamNotDefinedSome.result | 582 ++++++++++++++++++ ...ORT-carddavclient-ParamNotDefinedSome.test | 37 ++ 2 files changed, 619 insertions(+) create mode 100644 testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result create mode 100644 testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.test diff --git a/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result b/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result new file mode 100644 index 00000000..3b78ec3b --- /dev/null +++ b/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result @@ -0,0 +1,582 @@ + + + + /caldav.php/user1/addressbook/andresenesq.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//ALAB//NOSGML Version 0.9//DE +UID:uid=andresenesq.1209158007\,ou=Contacts\,dc=andresen\,dc=de +X-ABUID:ADDEEFEF-162A-260A-DEA3-1DA8-8A913187:ABPerson +FN:Sven Joseph Klaus Michael Andresen\, Esq. +SORT-STRING:Andresen\, Esq.\, Sven Joseph Klaus Michael +N:Andresen\,Esq.;Sven;Joseph\,Klaus\,Michael;;Dr.\,Prof.;Esq. +X-DISPLAYNAME:Svenni +X-INITIALS:SA +X-INITIALS:SHA +NICKNAME:Svenny\,Sveny +PHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHB + wcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zN + DL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM + jIyMjIyMjIyMjIyMjIyMjL/wAARCAFQATYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAA + AAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxF + DKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW + mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDx + MXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAA + AAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiM + oEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYW + VpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w + sPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiig + AooooAKKKKACiiigAooooAKKKKACiiigAoorM17xBpnhnSZdT1a7S2tY/4m6seyqOpJ9BQBp + 1zuvePPC/hkMNW1q1glXrCrb5f++Fy36V5Hf+L/ABr8SXkj0hz4d8PMSFnOfPnX6jn8FwO2T + U2i/DfwxpKq89r/AGjc9WluzuBP+7938wfrQBr3X7Q+gGRotK0XVr+QdPkVA305J/Ssyb45e + KWbdb/D67WI9PMMrE/iIxXXQSQWsKxW8UcMS9EjUKB+AqT7b70AeeXP7Q3iGxkUXnhKKDP8M + ryIT+Yq/Y/tLWDlRf8Ahu5hHcwXKyfoVX+ddk9ykiFHCsp6qwyDXJa54B8Ma4Hd7BbS4b/lt + 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 + //Z +X-SPOUSE:Manuela Graf +X-EVOLUTION-SPOUSE:Manuela Graf +ITEM1.X-ABRELATEDNAMES:Manuela Graf +ITEM1.X-ABLABEL:_$!<Spouse>!$_ +ITEM2.X-ABRELATEDNAMES:Manager +ITEM2.X-ABLABEL:_$!<Manager>!$_ +ITEM3.X-ABRELATEDNAMES:Aufsichtsrat +ITEM3.X-ABLABEL:_$!<Manager>!$_ +ITEM4.X-ABRELATEDNAMES:Barbara Jonas +ITEM4.X-ABLABEL:_$!<Assistant>!$_ +ITEM5.X-ABRELATEDNAMES:Dominik Maller +ITEM5.X-ABLABEL:_$!<Assistant>!$_ +ROLE:CTO +ROLE:Vorstand +X-MANAGER:Manager +X-MANAGER:Aufsichtsrat +X-EVOLUTION-MANAGER:Manager +X-EVOLUTION-MANAGER:Aufsichtsrat +X-ASSISTANT:Babsi +X-ASSISTANT:Dominik +X-EVOLUTION-ASSISTANT:Barbara Jonas +X-EVOLUTION-ASSISTANT:Dominik Müller +BDAY;VALUE=date:1971-06-21 +X-ANNIVERSARY:2000-01-01\, Testfeier +X-ANNIVERSARY:2003-2-2\, Blafeier +X-EVOLUTION-ANNIVERSARY:2000-01-01\, Testfeier +X-EVOLUTION-ANNIVERSARY:2003-2-2\, Blafeier +IMPP:aim:balbala +IMPP:aim:hakunamatata +X-AIM:balbala +X-AIM:hakunamatata +EMAIL;TYPE=INTERNET:sven@andresen.de +EMAIL;TYPE=INTERNET:andresen@andresen.de +TEL;TYPE=WORK,VOICE:+49 89 11 11 111 +TEL;TYPE=WORK,VOICE:+49 234 222 222 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 160 073 727 272 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 39292 82 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,VOICE:+49 7272 7282 +TEL;TYPE=HOME,FAX:+49 1010 1 +ITEM6.TEL;TYPE=VOICE:+49 8373 6262 +ITEM6.X-ABLABEL:_$!<Other>!$_ +ITEM7.TEL;TYPE=VOICE:+61 27 28 73 246 +ITEM7.X-ABLABEL:_$!<Other>!$_ +ITEM8.TEL;TYPE=FAX:+49 9382 3424 +ITEM8.X-ABLABEL:_$!<Other>!$_ +TEL;TYPE=ISDN:8797 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 88 298 723 498 32 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 2763 382 882 28 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;X-EVOLUTION-CALLBACK:+49 7363 6363 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;TYPE=MODEM:+49 7363 6363 +TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +TEL;X-QUICKDIAL:13355 +ADR;TYPE=WORK;CHARSET=utf-8: + PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Bayern;94036;Deutschland +ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung; + Weisenstraße 13;Irgendwo;Niedersachsen;34332 +ADR;TYPE=HOME;CHARSET=utf-8:;;Weisenstraße 13 ;Irgendwo;;34332 +ADR;TYPE=X-OTHER:;;Irgendwo;Nirgendwo;Sonstwo;0000;Antarktis +ORG:andresen AG;R&D;;XXX\, 033 +ORG;CHARSET=utf-8:andresen Holding;Geschäftsleitung;;-\, 0223 +X-HOUSE;TYPE=WORK:XXX +X-HOUSE;TYPE=WORK:- +X-ROOM;TYPE=WORK:033 +X-ROOM;TYPE=WORK:0223 +LABEL;TYPE=WORK:1. Stock\, links +LABEL;TYPE=WORK:oder rechts +URL;TYPE=WORK:http://www.andresen.de +URL;TYPE=WORK:http://www.andresens.de +ITEM9.URL;TYPE=HOME:http://www.zuhause.de +ITEM9.X-ABLABEL:_$!<HomePage>!$_ +ITEM10.URL;TYPE=HOME:http://www.andresen.de/~andresen +ITEM10.X-ABLABEL:_$!<HomePage>!$_ +X-BUSINESS-CATEGORY:IT +X-BUSINESS-CATEGORY:Development +KEY;ENCODING=b;TYPE=X-CERT:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2R + ENDQXlXZ0F3SUJBZ0lKQUpUeXNHNDV0V3BZTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdiTVFzd + 0NRWUQKVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFTk1Bc0dBMVVFQ + nhNRVEybDBlVEVoTUI4RwpBMVVFQ2hNWVNXNTBaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUS + FJrTVF3d0NnWURWUVFMRkFOU0prUXhGakFVCkJnTlZCQU1URFZOMlpXNGdRVzVrY21WelpXN + HhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjJaVzVBWVc1a2NtVnoKWlc0dVpHVXdIaGNOTVRBd + 05qSXpNRGd5T0RFNFdoY05NVEV3TmpJek1EZ3lPREU0V2pDQm16RUxNQWtHQTFVRQpCaE1DU + VZVeEV6QVJCZ05WQkFnVENsTnZiV1V0VTNSaGRHVXhEVEFMQmdOVkJBY1RCRU5wZEhreElUQ + WZCZ05WCkJBb1RHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU1NQW9HQTFVR + UN4UURVaVpFTVJZd0ZBWUQKVlFRREV3MVRkbVZ1SUVGdVpISmxjMlZ1TVI4d0hRWUpLb1pJa + HZjTkFRa0JGaEJ6ZG1WdVFHRnVaSEpsYzJWdQpMbVJsTUlHZk1BMEdDU3FHU0liM0RRRUJBU + VVBQTRHTkFEQ0JpUUtCZ1FDdEtPWnJBOXBjdjJWUVpkSEg4YmhhCmZqMlZWMW9HakxjTkt3M + ktWVkJ6anphQVlyaU9HcnBNWDdhcW1oL3pjNHhBMTVDc1JJYjJoQXpPcDlTeldvQ00KbXhZc + FN5eG8rbUJHUGRYOVcvTStYcStSYUtGSURpdHZyL0xBb2I5N0oveWp5R0JDYU4vdExvdG9ZN + 3F5TjAxUQpWTkRYNkJkcS9GZTFjcUdhcnFvdzNRSURBUUFCbzRJQkJEQ0NBUUF3SFFZRFZSM + E9CQllFRkhNaFBPR255aENtCmxWcHlCZHhCTVczZ2drbS9NSUhRQmdOVkhTTUVnY2d3Z2NXQ + UZITWhQT0dueWhDbWxWcHlCZHhCTVczZ2drbS8Kb1lHaHBJR2VNSUdiTVFzd0NRWURWUVFHR + XdKQlZURVRNQkVHQTFVRUNCTUtVMjl0WlMxVGRHRjBaVEVOTUFzRwpBMVVFQnhNRVEybDBlV + EVoTUI4R0ExVUVDaE1ZU1c1MFpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNUXd3CkNnW + URWUVFMRkFOU0prUXhGakFVQmdOVkJBTVREVk4yWlc0Z1FXNWtjbVZ6Wlc0eEh6QWRCZ2txa + GtpRzl3MEIKQ1FFV0VITjJaVzVBWVc1a2NtVnpaVzR1WkdXQ0NRQ1U4ckJ1T2JWcVdEQU1CZ + 05WSFJNRUJUQURBUUgvTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRHQkFGcnVidGpoWVB1RERHV + VpQRTQraUo2a3FmdEtXWDFJVzdmTXdtc3BRUWt5CitXUThSL3AxbURrc3ZEQ3hDYWp2YVduS + VI2dGIwbmtCMTFFNmQ0dDhkMkxWTTE4M3dDUWJtMDRJS05mdkRKOXQKUE4vdHBVTkJrc0Vka + XBlMEM1SEgyMnY0RitSSzVUK1lqM1J6VHZmOTdROVMzTzF3eE5lZkt0NXVUNFFxNUZtdAotL + S0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== +CALURI:http://caldav.andresen.local/sja +FBURL:http://caldav.andresen.local/freebusy +CAPURI:http://caldav.andresen.local/access +CALADRURI:http://caldav.andresen.local/access +X-DESCRIPTION:Beschreibung +X-DESCRIPTION;CHARSET=utf-8:außerdem +NOTE:Nur so ein Test! +CATEGORIES:bla,blubb,test,hihi,oops +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/hans_dieter.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//ALAB//NOSGML Version 0.9//DE +UID:uid=schmidt.1208717693\,ou=Contacts\,dc=andresen\,dc=de +X-ABUID:A93F52CB-C15F-1F34-2C49-7A67-0971277F:ABPerson +FN:Hans Dieter Schmidt +SORT-STRING:Schmidt\, Hans Dieter +N:Schmidt;Hans Dieter;;Dr.;Esq. +X-DISPLAYNAME:HaDi Schmidt +X-INITIALS:HW +NICKNAME:HaWe +X-SPOUSE:Maja Schultze +X-EVOLUTION-SPOUSE:Maja Schultze +ITEM1.X-ABRELATEDNAMES:Maja Schultze +ITEM1.X-ABLABEL:_$!<Spouse>!$_ +ITEM2.X-ABRELATEDNAMES:Barbara Jonas +ITEM2.X-ABLABEL:_$!<Assistant>!$_ +ITEM3.X-ABRELATEDNAMES:Klaus Timm +ITEM3.X-ABLABEL:_$!<Assistant>!$_ +ROLE:Projektleiter +X-ASSISTANT:Barbara Jonas +X-ASSISTANT:Klaus Timm +X-EVOLUTION-ASSISTANT:Barbara Jonas +X-EVOLUTION-ASSISTANT:Klaus Timm +BDAY;VALUE=date:1977-12-10 +BDAY;VALUE=date:1975-11-11 +DDAY;VALUE=date:2007-01-02 +X-DDAY;VALUE=date:2007-01-02 +X-ANNIVERSARY:2000-02-01\, +X-ANNIVERSARY:2001-02-02\, +X-EVOLUTION-ANNIVERSARY:2000-02-01\, +X-EVOLUTION-ANNIVERSARY:2001-02-02\, +X-EVOLUTION-BLOG-URL:blog.diesistmeineip.de +ITEM4.URL:blog.diesistmeineip.de +ITEM4.X-ABLABEL:_$!<Other>!$_ +URL;TYPE=WORK:http://www.tu-hh.de +URL;TYPE=WORK:http://www.telekom.de +ITEM5.URL;TYPE=HOME:http://www.hadi-schmidt.de +ITEM5.X-ABLABEL:_$!<HomePage>!$_ +IMPP:aim:477826262 +IMPP:aim:aaab3ttebb3 +IMPP:icq:972398472394 +IMPP:icq:8972364872634 +IMPP:ymsgr:mailaddr@yahoo.co.uk +IMPP:ymsgr:yahoo@yahootar.bla +IMPP:xmpp:jabjab187383 +IMPP:xmpp:jabberwookie@starwahrs.co.com +IMPP:msn:blablubb@langedomain.org +IMPP:msn:738246832746 +IMPP:skype:hadi.schmidt-skype +IMPP:skype:askjdhasd +IMPP:ichat:ichatichat +IMPP:ichat:second-ichat +IMPP:nm:netnetmeetings +IMPP:nm:vielleicht@eine.email.de +IMPP:gtalk:gooogletalk +IMPP:gtalk:googletalk2 +IMPP:sip:ipphon-addr.woauchimmer.de +X-AIM:balbala +X-AIM:hakunamatata +X-AIM;TYPE=WORK:972398472394 +X-AIM;TYPE=WORK:8972364872634 +X-ICQ:972398472394 +X-ICQ:8972364872634 +X-JABBER:jabjab187383 +X-JABBER:jabberwookie@starwahrs.co.com +X-MSN:blablubb@langedomain.org +X-MSN:738246832746 +X-SKYPE-USERNAME:hadi.schmidt-skype +X-SKYPE-USERNAME:askjdhasd +EMAIL;TYPE=INTERNET:ich@hadi-schmidt.de +EMAIL;TYPE=INTERNET:hadi@telekom-d.de +TEL;TYPE=WORK,VOICE:+49 9823 9084 +TEL;TYPE=WORK,VOICE:+49 234 234 234 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,FAX:+49 40 812 387 21 +ITEM6.TEL;TYPE=VOICE:+49 8373 6262 +ITEM6.X-ABLABEL:_$!<Other>!$_ +ITEM7.TEL;TYPE=VOICE:+49 7272 72 +ITEM7.X-ABLABEL:_$!<Other>!$_ +TEL;TYPE=ISDN:4234234235 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 38 288 228 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;X-EVOLUTION-TTYTDD:+49 7373 73 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +ADR;TYPE=WORK;CHARSET=utf-8: + ;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg;Hamburg;21373;Deutschland +ADR;TYPE=HOME;CHARSET=utf-8:;;Weisestraße 13 ;Irgendwo;;33443 +ADR;TYPE=X-OTHER:;;Nirgendwo +ORG:Uni Harburg;;;033 +X-ROOM;TYPE=WORK:033 +LABEL;TYPE=WORK:1. Stock\, links +LABEL;TYPE=WORK:oder rechts +X-BUSINESS-CATEGORY:IT +X-BUSINESS-CATEGORY:Development +CALURI:http://davical.hadi-schmist.home/hadi +FBURL:http://davical.hadi-schmist.home/freebusy +CAPURI:http://davical.hadi-schmist.home/cap +CALADRURI:http://davical.hadi-schmist.home/access +X-DESCRIPTION:Beschreibung +X-DESCRIPTION;CHARSET=utf-8:außerdem +CATEGORIES:uni +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_2_0.vcf + + + some valid etag + BEGIN:VCARD +VERSION:2.1 +N;CHARSET=UTF-8:Test-Roßdeutscher;Jörg;;; +FN;CHARSET=UTF-8:Jörg Test-Roßdeutscher +ORG:Factor Design AG; +EMAIL;INTERNET;WORK:joerg.rossdeutscher@factordesign.foo +EMAIL;INTERNET;WORK:joerg@factordesign.foo +EMAIL;INTERNET;HOME:joerg.rossdeutscher@gesindel.foo +EMAIL;INTERNET;HOME:raettchen@gmail.bar +TEL;WORK:040 999999432571-43 +TEL;CELL:017799999978200 +TEL;HOME:040999999793017 +ADR;WORK;CHARSET=UTF-8:;;abcStraße 58;Hamburg;;20357;Deutschland +ADR;HOME:;;Gayens Weg 9;Hamburg;;22761;Deutschland +NOTE;CHARSET=UTF-8: + Technik\, Web\, DTP\, SysAdmin\, €-Vermögensverwalter +URL;TYPE=pref:www.gesindel.baz +URL:www.factordesign.foo +BDAY;VALUE=date:1969-06-20 +UID:b7aad414-6984-d314-1534-88173473218d +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addresses/34c1a8b8-04bc-7134-259c-8832bd81b729.vcf + + + some valid etag + BEGIN:VCARD +FN:Donald Kelly +N:Kelly;Donald +ORG:Esposo Designs Ltd +ADR:Newtown;;25 Rintoul St;Wellington;;;New Zealand +EMAIL;INTERNET:donald@example.co.nz +TITLE:Proprietor +TEL;WORK:+64 4 347 4747 +TEL;CELL:+64 2 1234-4321 +X-MOZILLA-HTML:TRUE +URL:www.example.co.nz +VERSION:2.1 +UID:34c1a8b8-04bc-7134-259c-8832bd81b729 +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user5/addresses/sabre-vobject-41956788-1273-449e-bfb7-716850c91ec6.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-41956788-1273-449e-bfb7-716850c91ec6 +FN:CardDavClient Test879489908 +N:Test879489908;CardDavClient;;; +NICKNAME:Jonny2 +TEL;TYPE=HOME:12345 +TEL:555 +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.test b/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.test new file mode 100644 index 00000000..8080b181 --- /dev/null +++ b/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.test @@ -0,0 +1,37 @@ +# +# Request a REPORT for a property with multiple values, where one has the +# parameter defined, the other has not -> must not return a match +# +# (Jonny2 has two TEL properties, one of which has a TYPE parameter. +# Therefore, Jonny2 must not match the is-not-defined filter) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + + + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ From b4f8f5a6c1848741ff24eaadff57ec9f6bf30cab Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Thu, 4 Feb 2021 20:00:11 +0800 Subject: [PATCH 17/37] cardquery: ensure restriction to target collection remains in force even when we find that we need a post_filter step and thus throw away the SQL this ensures a sane (but still wrong) result for carddav/2051-REPORT-carddavclient-ParamNotDefinedSome --- inc/caldav-REPORT-cardquery.php | 5 +- ...T-carddavclient-ParamNotDefinedSome.result | 558 ------------------ 2 files changed, 3 insertions(+), 560 deletions(-) diff --git a/inc/caldav-REPORT-cardquery.php b/inc/caldav-REPORT-cardquery.php index f85a9d56..bbfc2f73 100644 --- a/inc/caldav-REPORT-cardquery.php +++ b/inc/caldav-REPORT-cardquery.php @@ -277,7 +277,8 @@ if ( ! $target_collection->IsAddressbook() ) { */ $params = array(); -$where = ' WHERE caldav_data.collection_id = ' . $target_collection->resource_id(); +$where_collection = ' WHERE caldav_data.collection_id = ' . $target_collection->resource_id(); +$where = ''; if ( is_array($qry_filters) ) { dbg_log_array( 'cardquery', 'qry_filters', $qry_filters, true ); @@ -318,7 +319,7 @@ if ( $need_post_filter && ( $qry_filters_combination == 'OR' )) { $post_filters = $qry_filters; } -$sql = 'SELECT * FROM caldav_data INNER JOIN addressbook_resource USING(dav_id)'. $where; +$sql = 'SELECT * FROM caldav_data INNER JOIN addressbook_resource USING(dav_id)'. $where_collection . $where; if ( isset($c->strict_result_ordering) && $c->strict_result_ordering ) $sql .= " ORDER BY dav_id"; $qry = new AwlQuery( $sql, $params ); if ( $qry->Exec("cardquery",__LINE__,__FILE__) && $qry->rows() > 0 ) { diff --git a/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result b/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result index 3b78ec3b..07e5e293 100644 --- a/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result +++ b/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result @@ -1,563 +1,5 @@ - - /caldav.php/user1/addressbook/andresenesq.vcf - - - some valid etag - BEGIN:VCARD -VERSION:4.0 -PRODID:-//ALAB//NOSGML Version 0.9//DE -UID:uid=andresenesq.1209158007\,ou=Contacts\,dc=andresen\,dc=de -X-ABUID:ADDEEFEF-162A-260A-DEA3-1DA8-8A913187:ABPerson -FN:Sven Joseph Klaus Michael Andresen\, Esq. -SORT-STRING:Andresen\, Esq.\, Sven Joseph Klaus Michael -N:Andresen\,Esq.;Sven;Joseph\,Klaus\,Michael;;Dr.\,Prof.;Esq. -X-DISPLAYNAME:Svenni -X-INITIALS:SA -X-INITIALS:SHA -NICKNAME:Svenny\,Sveny -PHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHB - wcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zN - DL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM - jIyMjIyMjIyMjIyMjIyMjL/wAARCAFQATYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAA - AAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxF - DKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW - mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDx - MXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAA - AAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiM - oEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYW - VpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w - sPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiig - AooooAKKKKACiiigAooooAKKKKACiiigAoorM17xBpnhnSZdT1a7S2tY/4m6seyqOpJ9BQBp - 1zuvePPC/hkMNW1q1glXrCrb5f++Fy36V5Hf+L/ABr8SXkj0hz4d8PMSFnOfPnX6jn8FwO2T - U2i/DfwxpKq89r/AGjc9WluzuBP+7938wfrQBr3X7Q+gGRotK0XVr+QdPkVA305J/Ssyb45e - KWbdb/D67WI9PMMrE/iIxXXQSQWsKxW8UcMS9EjUKB+AqT7b70AeeXP7Q3iGxkUXnhKKDP8M - ryIT+Yq/Y/tLWDlRf8Ahu5hHcwXKyfoVX+ddk9ykiFHCsp6qwyDXJa54B8Ma4Hd7BbS4b/lt - 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 - //Z -X-SPOUSE:Manuela Graf -X-EVOLUTION-SPOUSE:Manuela Graf -ITEM1.X-ABRELATEDNAMES:Manuela Graf -ITEM1.X-ABLABEL:_$!<Spouse>!$_ -ITEM2.X-ABRELATEDNAMES:Manager -ITEM2.X-ABLABEL:_$!<Manager>!$_ -ITEM3.X-ABRELATEDNAMES:Aufsichtsrat -ITEM3.X-ABLABEL:_$!<Manager>!$_ -ITEM4.X-ABRELATEDNAMES:Barbara Jonas -ITEM4.X-ABLABEL:_$!<Assistant>!$_ -ITEM5.X-ABRELATEDNAMES:Dominik Maller -ITEM5.X-ABLABEL:_$!<Assistant>!$_ -ROLE:CTO -ROLE:Vorstand -X-MANAGER:Manager -X-MANAGER:Aufsichtsrat -X-EVOLUTION-MANAGER:Manager -X-EVOLUTION-MANAGER:Aufsichtsrat -X-ASSISTANT:Babsi -X-ASSISTANT:Dominik -X-EVOLUTION-ASSISTANT:Barbara Jonas -X-EVOLUTION-ASSISTANT:Dominik Müller -BDAY;VALUE=date:1971-06-21 -X-ANNIVERSARY:2000-01-01\, Testfeier -X-ANNIVERSARY:2003-2-2\, Blafeier -X-EVOLUTION-ANNIVERSARY:2000-01-01\, Testfeier -X-EVOLUTION-ANNIVERSARY:2003-2-2\, Blafeier -IMPP:aim:balbala -IMPP:aim:hakunamatata -X-AIM:balbala -X-AIM:hakunamatata -EMAIL;TYPE=INTERNET:sven@andresen.de -EMAIL;TYPE=INTERNET:andresen@andresen.de -TEL;TYPE=WORK,VOICE:+49 89 11 11 111 -TEL;TYPE=WORK,VOICE:+49 234 222 222 -TEL;TYPE=WORK,FAX:+49 7373 73 -TEL;TYPE=PAGER:+49 160 073 727 272 -TEL;TYPE=PAGER:+49 2626 26 -TEL;TYPE=CELL,VOICE:+49 39292 82 -TEL;TYPE=CELL,VOICE:+49 7272 722 -TEL;TYPE=PREF,VOICE:+49 12 34 567 -TEL;TYPE=CAR,VOICE:+49 8292 38 383 -TEL;TYPE=HOME,VOICE:+49 7327 272 727 -TEL;TYPE=HOME,VOICE:+49 7272 7282 -TEL;TYPE=HOME,FAX:+49 1010 1 -ITEM6.TEL;TYPE=VOICE:+49 8373 6262 -ITEM6.X-ABLABEL:_$!<Other>!$_ -ITEM7.TEL;TYPE=VOICE:+61 27 28 73 246 -ITEM7.X-ABLABEL:_$!<Other>!$_ -ITEM8.TEL;TYPE=FAX:+49 9382 3424 -ITEM8.X-ABLABEL:_$!<Other>!$_ -TEL;TYPE=ISDN:8797 -TEL;TYPE=ISDN:98732947234 -TEL;TYPE=X-EVOLUTION-RADIO:+49 88 298 723 498 32 -TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 -TEL;TYPE=X-EVOLUTION-TELEX:+49 2763 382 882 28 82 -TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 -TEL;TYPE=MAIN:+49 6237 623 723 84 76 -TEL;TYPE=MAIN:+49 9324 32 479 234234 -TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 -TEL;X-EVOLUTION-CALLBACK:+49 7363 6363 -TEL;TYPE=MODEM:+49 8383 73 723 -TEL;TYPE=MODEM:+49 7363 6363 -TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373 -TEL;X-EVOLUTION-TTYTDD:+49 8378 33 -TEL;X-QUICKDIAL:13355 -ADR;TYPE=WORK;CHARSET=utf-8: - PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Bayern;94036;Deutschland -ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung; - Weisenstraße 13;Irgendwo;Niedersachsen;34332 -ADR;TYPE=HOME;CHARSET=utf-8:;;Weisenstraße 13 ;Irgendwo;;34332 -ADR;TYPE=X-OTHER:;;Irgendwo;Nirgendwo;Sonstwo;0000;Antarktis -ORG:andresen AG;R&D;;XXX\, 033 -ORG;CHARSET=utf-8:andresen Holding;Geschäftsleitung;;-\, 0223 -X-HOUSE;TYPE=WORK:XXX -X-HOUSE;TYPE=WORK:- -X-ROOM;TYPE=WORK:033 -X-ROOM;TYPE=WORK:0223 -LABEL;TYPE=WORK:1. Stock\, links -LABEL;TYPE=WORK:oder rechts -URL;TYPE=WORK:http://www.andresen.de -URL;TYPE=WORK:http://www.andresens.de -ITEM9.URL;TYPE=HOME:http://www.zuhause.de -ITEM9.X-ABLABEL:_$!<HomePage>!$_ -ITEM10.URL;TYPE=HOME:http://www.andresen.de/~andresen -ITEM10.X-ABLABEL:_$!<HomePage>!$_ -X-BUSINESS-CATEGORY:IT -X-BUSINESS-CATEGORY:Development -KEY;ENCODING=b;TYPE=X-CERT:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2R - ENDQXlXZ0F3SUJBZ0lKQUpUeXNHNDV0V3BZTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdiTVFzd - 0NRWUQKVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFTk1Bc0dBMVVFQ - nhNRVEybDBlVEVoTUI4RwpBMVVFQ2hNWVNXNTBaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUS - FJrTVF3d0NnWURWUVFMRkFOU0prUXhGakFVCkJnTlZCQU1URFZOMlpXNGdRVzVrY21WelpXN - HhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjJaVzVBWVc1a2NtVnoKWlc0dVpHVXdIaGNOTVRBd - 05qSXpNRGd5T0RFNFdoY05NVEV3TmpJek1EZ3lPREU0V2pDQm16RUxNQWtHQTFVRQpCaE1DU - VZVeEV6QVJCZ05WQkFnVENsTnZiV1V0VTNSaGRHVXhEVEFMQmdOVkJBY1RCRU5wZEhreElUQ - WZCZ05WCkJBb1RHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU1NQW9HQTFVR - UN4UURVaVpFTVJZd0ZBWUQKVlFRREV3MVRkbVZ1SUVGdVpISmxjMlZ1TVI4d0hRWUpLb1pJa - HZjTkFRa0JGaEJ6ZG1WdVFHRnVaSEpsYzJWdQpMbVJsTUlHZk1BMEdDU3FHU0liM0RRRUJBU - VVBQTRHTkFEQ0JpUUtCZ1FDdEtPWnJBOXBjdjJWUVpkSEg4YmhhCmZqMlZWMW9HakxjTkt3M - ktWVkJ6anphQVlyaU9HcnBNWDdhcW1oL3pjNHhBMTVDc1JJYjJoQXpPcDlTeldvQ00KbXhZc - FN5eG8rbUJHUGRYOVcvTStYcStSYUtGSURpdHZyL0xBb2I5N0oveWp5R0JDYU4vdExvdG9ZN - 3F5TjAxUQpWTkRYNkJkcS9GZTFjcUdhcnFvdzNRSURBUUFCbzRJQkJEQ0NBUUF3SFFZRFZSM - E9CQllFRkhNaFBPR255aENtCmxWcHlCZHhCTVczZ2drbS9NSUhRQmdOVkhTTUVnY2d3Z2NXQ - UZITWhQT0dueWhDbWxWcHlCZHhCTVczZ2drbS8Kb1lHaHBJR2VNSUdiTVFzd0NRWURWUVFHR - XdKQlZURVRNQkVHQTFVRUNCTUtVMjl0WlMxVGRHRjBaVEVOTUFzRwpBMVVFQnhNRVEybDBlV - EVoTUI4R0ExVUVDaE1ZU1c1MFpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNUXd3CkNnW - URWUVFMRkFOU0prUXhGakFVQmdOVkJBTVREVk4yWlc0Z1FXNWtjbVZ6Wlc0eEh6QWRCZ2txa - GtpRzl3MEIKQ1FFV0VITjJaVzVBWVc1a2NtVnpaVzR1WkdXQ0NRQ1U4ckJ1T2JWcVdEQU1CZ - 05WSFJNRUJUQURBUUgvTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRHQkFGcnVidGpoWVB1RERHV - VpQRTQraUo2a3FmdEtXWDFJVzdmTXdtc3BRUWt5CitXUThSL3AxbURrc3ZEQ3hDYWp2YVduS - VI2dGIwbmtCMTFFNmQ0dDhkMkxWTTE4M3dDUWJtMDRJS05mdkRKOXQKUE4vdHBVTkJrc0Vka - XBlMEM1SEgyMnY0RitSSzVUK1lqM1J6VHZmOTdROVMzTzF3eE5lZkt0NXVUNFFxNUZtdAotL - S0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== -CALURI:http://caldav.andresen.local/sja -FBURL:http://caldav.andresen.local/freebusy -CAPURI:http://caldav.andresen.local/access -CALADRURI:http://caldav.andresen.local/access -X-DESCRIPTION:Beschreibung -X-DESCRIPTION;CHARSET=utf-8:außerdem -NOTE:Nur so ein Test! -CATEGORIES:bla,blubb,test,hihi,oops -REV:date -END:VCARD - - - HTTP/1.1 200 OK - - - - /caldav.php/user1/addressbook/hans_dieter.vcf - - - some valid etag - BEGIN:VCARD -VERSION:4.0 -PRODID:-//ALAB//NOSGML Version 0.9//DE -UID:uid=schmidt.1208717693\,ou=Contacts\,dc=andresen\,dc=de -X-ABUID:A93F52CB-C15F-1F34-2C49-7A67-0971277F:ABPerson -FN:Hans Dieter Schmidt -SORT-STRING:Schmidt\, Hans Dieter -N:Schmidt;Hans Dieter;;Dr.;Esq. -X-DISPLAYNAME:HaDi Schmidt -X-INITIALS:HW -NICKNAME:HaWe -X-SPOUSE:Maja Schultze -X-EVOLUTION-SPOUSE:Maja Schultze -ITEM1.X-ABRELATEDNAMES:Maja Schultze -ITEM1.X-ABLABEL:_$!<Spouse>!$_ -ITEM2.X-ABRELATEDNAMES:Barbara Jonas -ITEM2.X-ABLABEL:_$!<Assistant>!$_ -ITEM3.X-ABRELATEDNAMES:Klaus Timm -ITEM3.X-ABLABEL:_$!<Assistant>!$_ -ROLE:Projektleiter -X-ASSISTANT:Barbara Jonas -X-ASSISTANT:Klaus Timm -X-EVOLUTION-ASSISTANT:Barbara Jonas -X-EVOLUTION-ASSISTANT:Klaus Timm -BDAY;VALUE=date:1977-12-10 -BDAY;VALUE=date:1975-11-11 -DDAY;VALUE=date:2007-01-02 -X-DDAY;VALUE=date:2007-01-02 -X-ANNIVERSARY:2000-02-01\, -X-ANNIVERSARY:2001-02-02\, -X-EVOLUTION-ANNIVERSARY:2000-02-01\, -X-EVOLUTION-ANNIVERSARY:2001-02-02\, -X-EVOLUTION-BLOG-URL:blog.diesistmeineip.de -ITEM4.URL:blog.diesistmeineip.de -ITEM4.X-ABLABEL:_$!<Other>!$_ -URL;TYPE=WORK:http://www.tu-hh.de -URL;TYPE=WORK:http://www.telekom.de -ITEM5.URL;TYPE=HOME:http://www.hadi-schmidt.de -ITEM5.X-ABLABEL:_$!<HomePage>!$_ -IMPP:aim:477826262 -IMPP:aim:aaab3ttebb3 -IMPP:icq:972398472394 -IMPP:icq:8972364872634 -IMPP:ymsgr:mailaddr@yahoo.co.uk -IMPP:ymsgr:yahoo@yahootar.bla -IMPP:xmpp:jabjab187383 -IMPP:xmpp:jabberwookie@starwahrs.co.com -IMPP:msn:blablubb@langedomain.org -IMPP:msn:738246832746 -IMPP:skype:hadi.schmidt-skype -IMPP:skype:askjdhasd -IMPP:ichat:ichatichat -IMPP:ichat:second-ichat -IMPP:nm:netnetmeetings -IMPP:nm:vielleicht@eine.email.de -IMPP:gtalk:gooogletalk -IMPP:gtalk:googletalk2 -IMPP:sip:ipphon-addr.woauchimmer.de -X-AIM:balbala -X-AIM:hakunamatata -X-AIM;TYPE=WORK:972398472394 -X-AIM;TYPE=WORK:8972364872634 -X-ICQ:972398472394 -X-ICQ:8972364872634 -X-JABBER:jabjab187383 -X-JABBER:jabberwookie@starwahrs.co.com -X-MSN:blablubb@langedomain.org -X-MSN:738246832746 -X-SKYPE-USERNAME:hadi.schmidt-skype -X-SKYPE-USERNAME:askjdhasd -EMAIL;TYPE=INTERNET:ich@hadi-schmidt.de -EMAIL;TYPE=INTERNET:hadi@telekom-d.de -TEL;TYPE=WORK,VOICE:+49 9823 9084 -TEL;TYPE=WORK,VOICE:+49 234 234 234 -TEL;TYPE=WORK,FAX:+49 7373 73 -TEL;TYPE=PAGER:+49 2626 26 -TEL;TYPE=CELL,VOICE:+49 7272 722 -TEL;TYPE=PREF,VOICE:+49 12 34 567 -TEL;TYPE=CAR,VOICE:+49 8292 38 383 -TEL;TYPE=HOME,VOICE:+49 7327 272 727 -TEL;TYPE=HOME,FAX:+49 40 812 387 21 -ITEM6.TEL;TYPE=VOICE:+49 8373 6262 -ITEM6.X-ABLABEL:_$!<Other>!$_ -ITEM7.TEL;TYPE=VOICE:+49 7272 72 -ITEM7.X-ABLABEL:_$!<Other>!$_ -TEL;TYPE=ISDN:4234234235 -TEL;TYPE=ISDN:98732947234 -TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832 -TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 -TEL;TYPE=X-EVOLUTION-TELEX:+49 38 288 228 82 -TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 -TEL;TYPE=MAIN:+49 6237 623 723 84 76 -TEL;TYPE=MAIN:+49 9324 32 479 234234 -TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 -TEL;TYPE=MODEM:+49 8383 73 723 -TEL;X-EVOLUTION-TTYTDD:+49 7373 73 -TEL;X-EVOLUTION-TTYTDD:+49 8378 33 -ADR;TYPE=WORK;CHARSET=utf-8: - ;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg;Hamburg;21373;Deutschland -ADR;TYPE=HOME;CHARSET=utf-8:;;Weisestraße 13 ;Irgendwo;;33443 -ADR;TYPE=X-OTHER:;;Nirgendwo -ORG:Uni Harburg;;;033 -X-ROOM;TYPE=WORK:033 -LABEL;TYPE=WORK:1. Stock\, links -LABEL;TYPE=WORK:oder rechts -X-BUSINESS-CATEGORY:IT -X-BUSINESS-CATEGORY:Development -CALURI:http://davical.hadi-schmist.home/hadi -FBURL:http://davical.hadi-schmist.home/freebusy -CAPURI:http://davical.hadi-schmist.home/cap -CALADRURI:http://davical.hadi-schmist.home/access -X-DESCRIPTION:Beschreibung -X-DESCRIPTION;CHARSET=utf-8:außerdem -CATEGORIES:uni -REV:date -END:VCARD - - - HTTP/1.1 200 OK - - - - /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_2_0.vcf - - - some valid etag - BEGIN:VCARD -VERSION:2.1 -N;CHARSET=UTF-8:Test-Roßdeutscher;Jörg;;; -FN;CHARSET=UTF-8:Jörg Test-Roßdeutscher -ORG:Factor Design AG; -EMAIL;INTERNET;WORK:joerg.rossdeutscher@factordesign.foo -EMAIL;INTERNET;WORK:joerg@factordesign.foo -EMAIL;INTERNET;HOME:joerg.rossdeutscher@gesindel.foo -EMAIL;INTERNET;HOME:raettchen@gmail.bar -TEL;WORK:040 999999432571-43 -TEL;CELL:017799999978200 -TEL;HOME:040999999793017 -ADR;WORK;CHARSET=UTF-8:;;abcStraße 58;Hamburg;;20357;Deutschland -ADR;HOME:;;Gayens Weg 9;Hamburg;;22761;Deutschland -NOTE;CHARSET=UTF-8: - Technik\, Web\, DTP\, SysAdmin\, €-Vermögensverwalter -URL;TYPE=pref:www.gesindel.baz -URL:www.factordesign.foo -BDAY;VALUE=date:1969-06-20 -UID:b7aad414-6984-d314-1534-88173473218d -REV:date -END:VCARD - - - HTTP/1.1 200 OK - - - - /caldav.php/user1/addresses/34c1a8b8-04bc-7134-259c-8832bd81b729.vcf - - - some valid etag - BEGIN:VCARD -FN:Donald Kelly -N:Kelly;Donald -ORG:Esposo Designs Ltd -ADR:Newtown;;25 Rintoul St;Wellington;;;New Zealand -EMAIL;INTERNET:donald@example.co.nz -TITLE:Proprietor -TEL;WORK:+64 4 347 4747 -TEL;CELL:+64 2 1234-4321 -X-MOZILLA-HTML:TRUE -URL:www.example.co.nz -VERSION:2.1 -UID:34c1a8b8-04bc-7134-259c-8832bd81b729 -REV:date -END:VCARD - - - HTTP/1.1 200 OK - - /caldav.php/user5/addresses/sabre-vobject-41956788-1273-449e-bfb7-716850c91ec6.vcf From b863c99601825884d3a68492ef603e846d6fcdf8 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Thu, 4 Feb 2021 21:39:39 +0800 Subject: [PATCH 18/37] add two more reports testing an allof prop-filter and an anyof text-match prop-filter BUG: both results are incorrect as explained in the tests. I thought I should nevertheless commit them to illustrate the fix. --- ...REPORT-carddavclient-HasEmailAndIMP.result | 68 +++++++++++++++++++ ...2-REPORT-carddavclient-HasEmailAndIMP.test | 32 +++++++++ ...-carddavclient-TwoEmailConditionsOr.result | 2 + ...RT-carddavclient-TwoEmailConditionsOr.test | 35 ++++++++++ 4 files changed, 137 insertions(+) create mode 100644 testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result create mode 100644 testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.test create mode 100644 testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result create mode 100644 testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.test diff --git a/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result b/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result new file mode 100644 index 00000000..772afcc8 --- /dev/null +++ b/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result @@ -0,0 +1,68 @@ + + + + /caldav.php/user5/addresses/sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13 +FN:CardDavClient Test212420682 +N:Test212420682;CardDavClient;;; +NICKNAME:Jonny0 +EMAIL;TYPE=HOME:john6doe@example.com +EMAIL;TYPE=WORK:doe6@example.com +X-CUSTOMPROP;X-CUSTOMPARAM=WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user5/addresses/sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36 +FN:CardDavClient Test913043917 +N:Test913043917;CardDavClient;;; +NICKNAME:Jonny1 +EMAIL:maxmu@abcd.com +X-CUSTOMPROP;X-CUSTOMPARAM=HOME,WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user5/addresses/sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b +FN:CardDavClient Test1520108081 +N:Test1520108081;CardDavClient;;; +NICKNAME:Jonny3 +ITEM1.EMAIL:foo@ex.com +ITEM1.X-ABLABEL:CustomLabel +IMPP;X-SERVICE-TYPE=Jabber;TYPE=HOME:xmpp:foo@example.com +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.test b/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.test new file mode 100644 index 00000000..8d2463b7 --- /dev/null +++ b/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.test @@ -0,0 +1,32 @@ +# +# Request a REPORT for two properties, both of which must be defined +# +# (Jonny0 and Jonny1 have only one of them and must not be returned) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ diff --git a/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result b/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result new file mode 100644 index 00000000..28dabef6 --- /dev/null +++ b/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result @@ -0,0 +1,2 @@ + + diff --git a/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.test b/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.test new file mode 100644 index 00000000..a8bf4e64 --- /dev/null +++ b/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.test @@ -0,0 +1,35 @@ +# +# Request a REPORT for a property which satisfies any of two text-match +# conditions, only one of which actually matches +# +# (this must return both Jonny0 and Jonny1) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + doe + abcd.com + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ From ec234cda640d085eb1e873096c125c30e17bb3a9 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Thu, 4 Feb 2021 22:28:15 +0800 Subject: [PATCH 19/37] correct test results after AWL merges of mstilkerich/awl-fix_abookquery_paramnotdef and mstilkerich/awl-fix_support_anyof_propfilter --- ...T-carddavclient-ParamNotDefinedSome.result | 24 +--------- ...REPORT-carddavclient-HasEmailAndIMP.result | 43 ----------------- ...-carddavclient-TwoEmailConditionsOr.result | 46 ++++++++++++++++++- 3 files changed, 46 insertions(+), 67 deletions(-) diff --git a/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result b/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result index 07e5e293..28dabef6 100644 --- a/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result +++ b/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.result @@ -1,24 +1,2 @@ - - - /caldav.php/user5/addresses/sabre-vobject-41956788-1273-449e-bfb7-716850c91ec6.vcf - - - some valid etag - BEGIN:VCARD -VERSION:4.0 -PRODID:-//Sabre//Sabre VObject 4.3.3//EN -UID:sabre-vobject-41956788-1273-449e-bfb7-716850c91ec6 -FN:CardDavClient Test879489908 -N:Test879489908;CardDavClient;;; -NICKNAME:Jonny2 -TEL;TYPE=HOME:12345 -TEL:555 -REV:date -END:VCARD - - - HTTP/1.1 200 OK - - - + diff --git a/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result b/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result index 772afcc8..6c0b17e8 100644 --- a/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result +++ b/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result @@ -1,48 +1,5 @@ - - /caldav.php/user5/addresses/sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13.vcf - - - some valid etag - BEGIN:VCARD -VERSION:4.0 -PRODID:-//Sabre//Sabre VObject 4.3.3//EN -UID:sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13 -FN:CardDavClient Test212420682 -N:Test212420682;CardDavClient;;; -NICKNAME:Jonny0 -EMAIL;TYPE=HOME:john6doe@example.com -EMAIL;TYPE=WORK:doe6@example.com -X-CUSTOMPROP;X-CUSTOMPARAM=WORK:foobar -REV:date -END:VCARD - - - HTTP/1.1 200 OK - - - - /caldav.php/user5/addresses/sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36.vcf - - - some valid etag - BEGIN:VCARD -VERSION:4.0 -PRODID:-//Sabre//Sabre VObject 4.3.3//EN -UID:sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36 -FN:CardDavClient Test913043917 -N:Test913043917;CardDavClient;;; -NICKNAME:Jonny1 -EMAIL:maxmu@abcd.com -X-CUSTOMPROP;X-CUSTOMPARAM=HOME,WORK:foobar -REV:date -END:VCARD - - - HTTP/1.1 200 OK - - /caldav.php/user5/addresses/sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b.vcf diff --git a/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result b/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result index 28dabef6..5b808e6f 100644 --- a/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result +++ b/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result @@ -1,2 +1,46 @@ - + + + /caldav.php/user5/addresses/sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13 +FN:CardDavClient Test212420682 +N:Test212420682;CardDavClient;;; +NICKNAME:Jonny0 +EMAIL;TYPE=HOME:john6doe@example.com +EMAIL;TYPE=WORK:doe6@example.com +X-CUSTOMPROP;X-CUSTOMPARAM=WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user5/addresses/sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36 +FN:CardDavClient Test913043917 +N:Test913043917;CardDavClient;;; +NICKNAME:Jonny1 +EMAIL:maxmu@abcd.com +X-CUSTOMPROP;X-CUSTOMPARAM=HOME,WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + From f37fa814b659f60506fe98b202603b4d3c87c05b Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Fri, 5 Feb 2021 01:50:52 +0800 Subject: [PATCH 20/37] update 2038-REPORT-addressbook-query after AWL's param-filter: fix a typo / explode multivalue commit this refers to 6395cd1 in AWL the added results seem correct, as they all have a TEL;TYPE=WORK property --- .../2038-REPORT-addressbook-query.result | 540 ++++++++++++++++++ 1 file changed, 540 insertions(+) diff --git a/testing/tests/carddav/2038-REPORT-addressbook-query.result b/testing/tests/carddav/2038-REPORT-addressbook-query.result index 99000cae..154df3bc 100644 --- a/testing/tests/carddav/2038-REPORT-addressbook-query.result +++ b/testing/tests/carddav/2038-REPORT-addressbook-query.result @@ -65,6 +65,363 @@ VERSION:2.1 UID:a nice UID REV:date END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/F06EC844-EACD-4ADF-8823-588603991E04-ABSPlugin.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +N:McMillan;Andrew;;; +FN:Morphoss Ltd +ORG:Morphoss Ltd; +EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref:andrew+davical@morphoss.com +TEL;TYPE=WORK;TYPE=pref:+64272332426 +PHOTO;BASE64: /9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAA + QAAAABAAAAGgAAAAAA AqACAAQAAAABAAAA2qADAAQAAAABAAAA2gAAAAD/2wBDAAIBAQIBA + QICAQICAgICAwUDAwMDAwYE BAMFBwYHBwcGBgYHCAsJBwgKCAYGCQ0JCgsLDAwMBwkNDg0M + DgsMDAv/2wBDAQICAgMCAwUDAwUL CAYICwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws + LCwsLCwsLCwsLCwsLCwsLCwsLCwv/wAAR CADaANoDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQ + EAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE + 1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol JicoKSo0NTY3ODk6Q0RFRkdISUpT + VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW l5iZmqKjpKWmp6ipqrKztLW + 2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3 +Pn6/8QAHwEAAwEBAQ + EBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3 AAECAxEEBSExB + hJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 OkNERUZH + SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan qKm + qsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAI + R AxEAPwD6Nuf2mfHfju2aDwb488cWzx/6uf8At+6AY+/7zJFR2fxp+IXhvwg7a18U/Gmoar + 5x3+R4 kuXWL0UjzOOPXBr5s+FF9c/EnUp9GfUptK0bSxC2rtA5S5uWlz5dsjj7gKqWcj5sY + A6mvdE/Zo8F eD7iGf4TW82lXd1bnzw0ZKSknuScsepyfwruhR5IObdj1YzVWoqcUi6/7TPx + JzgfEHxx/wCD66/+ OUwftMfErP8AyULxz/4Pbr/45XOa3oF94akxrEOIz0nj5jP1/u/jVIR + 7lyvO78qyjKMlc3qYdxvd HdaN+1f8StJug7eO/F9yp6pNrNy4P5yV5t8eNG+LvxjuZtX/AG + df2gfjF4U8QyAltGn8b6mdNu2/ uxHz/wByT2xxWjHHnHr2q/o9jNdX0EdgG86RwECjkkmui + KUnoTQrTwdT2lPR+mn4mJ/wSb8eftBS a/8AFHUP2iviL8Ur650RY9MttP1nxTfXsUM+Gd3R + ZZWCnhBkdj719g6b8VvGlhpdrBP4u8TzTIix s76pOS7dyTvye9VNC8OQ+HPDkjiKOO+1N42 + vJFHM8ioAWb1OEUUxIPMu0DAYUFzj/PvUVYq6ujqq VvrlWeIlFJvolotDWf4t+Ln+VvFniZ + WB4xqk/P8A4/Ug+MXi9WVp/FPiJGXgMNRmKN/vLu/WsWS3 8wncAcfpQLd05ALr6d6zi+Rid + GEuh0bfFnxVdFQfFPiOCU/dxqc2x/od9Zmp/EbxvExNv4u8Uq2f unVZ8H6HfVBLcoD9mIIP + WNvun/CrNrNkeVKpcH/lk/3h/unvW6cJoydFRW2hRb41eNoXKTeLfFAY dc6pP/8AF1Inxt8 + ZZw3i3xP/AODWf/4up7/w9DqcZa3+bHVejpWBfaDJZFiQWQHrjkfUU+VLoR7J PVI34fjV4w + 7+LPEx/wC4pOf/AGerEXxp8X8Z8V+JD/3E5v8A4uuNCkdPpUsUhU80WRm6S7Hbw/GP xaw+b + xT4jz/2E5v/AIqrEPxf8WHk+KfEJ+upTf8AxVcRFcDHB5q7a3fQtzVLl7Gcqa7HaRfFrxUe + vifxCf8AuJTf/FVZi+K/ik9fEviD/wAGE3/xVclBIp+7VuCQE/N+dXyx7GMoHVR/FLxPj/kZ + Nf8A /BhN/wDFVYh+KPiZ/wDmYtd9P+P+X/4quYj6DPSrERyevWqjGNjNxTOoi+JviQn5vEG + t/X7fL/8A FVdtviV4hB/ea9rR/wC32X/4quWgPTPrV2AZaq5Y9jNrodXB8RdfOM65q5/7fJ + P/AIqr9t491xvv 6zq343kn/wAVXMWw5BxzWhaL0zVKMX0IsdFB441pz/yF9UP/AG9Sf41dH + jDWMf8AIW1P/wACn/xr DtFwcVc2j0rVQj2GnY/OHVP2YdL8S+K9X1fwlqV3obaldRy3EMKg + xTPEuI5MdmCtjivUPC3hFPDO mpF58t1MFAaaQ5Zq+dP+CbPxj8bfFjwdf/8AC2rGSwmsHEZ + SY5dyABkd8GvqWKIk5HcdK8HFe0pS dKTvY+mwcKbgqkI2Kc9ms6lZVDAjBBGQa5HXfhTBNK + 0uhk2kpySnWNj9O34V3XkEnLUNB5gOBXKp OOx6TSkrNHjd7oN7os23VoWT+645U/Q16d+zx + 4Xh1DVbi7lQSS2ygcjiInoPrjn2zWpdWMX2Vjcq rKoJIIyK7L9n7w4tv4PF15YWTUJWnOBj + IJ4/SvSwdR1JO62PLx1CNFKUXubmux+UbaH/AJ5xmRh7 scD9BVG0hy87nsFQfz/wpbXV28S + atq8xCiC3vntICP4liAUn/vsP+VXbe3H2BWI5lZm/XA/lVVZc zuYULOKt1Kiwk47U9bc9+l + Wktznnr0p4t+fasWdKKTWYPQEHsRSSW2VxcqWBPDDtWkLbdinfZwRg jr2qLlLYzdkkBBfdK + qjhwf3i/j/EPrU4Md9HuusMBx5qDAHsw7VZax7xnn0PSoXtlMv7tjDORgEf xfh3FWqzjuQ6 + S6GTq/hMffhCoTyCPun/AArDudPktZNtwpUn9a662vXiupYHAjZAGOeYnB6e6Hg+ 1Sz6XDq + SFCoWQjPlN391P+FbxkpK6MXE4kRnrTo5Cg4Na2p+HZbJ8wgso7H7w/xrNKYb09qG7EOH cf + FetGPmq5a6wA2HNZjdajdypOKpTM5UvI6u01RXxzxWjBOGHymuCjvGjbIY8e9XLPxRJbt8+S + B3 rRTMHQfQ723lGcVo2pyRj1rjdP8AF8MoxI20j1rX0fxlY3GrW9nFMrXFw21FHOTWikcs4 + NdDsLUE 4FaVmmG96q29o6kAjB/lV61gKkE1Sepm4GhZrk1dC8dTUFlEABV8R8VvF32Iasfi + n4F+Mviz4KeG NGk+H6x+IIZbqSDUPPP+lS7chTGf4x8jNj0ZcZJr6y+Dn7QmifFDwVYajcX + EOmXt1K1q1ncOEl89 eGRVPJ618XeJLa5l1vwzofhNngmskikiGcOssxQw5PYiMWIP/XRq9A + +GusmPxHqt34Us7Fl8PJLN Y30sQeYqWSKIZPeQ/Zj/ANtmrPHYenWjzJa738r2V/Xp1sZ5b + mtWg+WWq2/C/wArep9qIgYZ7HpT lgBA7V4X4C/bIiuLaYeM7Tb5MHnrJEcb0yApIPdt0Z/4 + GK7o/tSeB9K0ywn8a+INM0Ga+IUW19Os csTEKcOP4eHXk4HzCvCq0J03aUT7Khj6FZXU0dT + 4oZotNaOHO+4IiXHqxx/WvbPBmmp4f8O2yHCp Zwbj+AzXjHhyW28c+NNCTRrm3vLORzdCWG + QSI6qOCGBIIya941Rfsfh6bYELTAQqGGQc9f0BrtwU eWm5PqcmYz55qKfQ4/S9HXSNHWGyX + H3pCOu53Jdj+LMavwxr9miSM58tAv6VmrFdaTwrEoP4JGLI fo/Vfo2frV2z1CK6lEcwaCY/ + wPwW/wB09G/CokiadtEWRDzzUq2xxU0cZ/j+Ye3Wp0jDdOahnQkV RbZ+7Tzb46iraRYwAPx + p6w57VDKSKYtSBk44rPurbzPEFqP7kbsf0H9a3GiwORXLeJvHOl+D9cNz 4ou4rS3WDYHc9W + znAHU9KiWhVuhctbbN/ftIMhSi/kuf601rMqn+j42/e8tugPqD1U/SrOg39vrl hNeaRKJ4L + li0bjIBGAO/0q7NYrJz0Ydx1ojJrVCSUlqZf2oSjZdo0g9D/rU+n94frWfqnh2O8iMt kQ4/ + vKOR9RWvdWIYf6Qu4Kchh1FU5kkt28xSx/6aJ97/AIEOjfzreNW/xESpNbHGajZS2Tfvhlex + HQ1nTXOMktiut17UopoSJlQMeN68o31HY/WuG8QWcltuaJsL125/kacpWBUXJXHT6moB3NV + KfXVQ nJFc5qWvi3cqzfN0x3rLudVMsJk1GQRxDnk4/OodRomVFHTXXiySQlLQjjqx7f41q/ + CHxhZ6b8UN J+3O00gnyyj5mYYNeSan4vkv3MGhkxx9DLjk/wC6K2/g8v2H4g6Q7kkm6QMxO + c5OOv41yyx3K+WJ r/Z/uuU9D74tLa18RWS3GjSK6n07exHaozYNDJtkXDVyOkzXOjXXnaVI + Y37gj5XHoRXeaB4ks/FK rDeKLe8A+6T191PevTw+LhiFyvSR5OKwUqGq1RFbQlT7VcGcd6l + n017A/P8AMh6MOn4+lHk/Wu5X WjR50j8kdH8T/Dj4va02rarDL4T8SSROq3cTb7fzWjKLIV + PdSVYdOUX0q7c/s9at4G+GV4vhWW31 UareoBdWJ3rFAikRFsdMPJGx9BbD1FfKUvh3xF4P+ + PieA9A+0a3eSaWmprmLaVBRJPKPPLBZYsnj lj6V6Z8Kv2mNT8E6jHFYXl3p1ypAe1mBAI90 + Pak17WOj00+7p6Hnxw0FLnirPXbbXd22v59ToTpE N8jxuDDBf3KwjcMeXbQqGc/grj8bc+l + fLPxE8L6v+0J8TfE+tw38tuxuTGtu0IljfZl2DDrwZNnB H+rHpX3lF8WvBvxn057T4macdM + vpYZLddS08BSgkVlYlehyHYf8AAjXndn+xHrvw5tJtQ+EWo2vj HTpvMkeS3G26G9izF4ick + 5P8Oa7MG17VuTtppfv6/wDDGeLpclDkaum1e2rUVe+nm30PO/2I/iHr /wCzJNa3HgXVXvrq + 3R1u9PnkY20pZiflQ8x44AxxgfjX6wW3iLUfF1j4EfXbQadeXemNrN/ao5dY HaNEWPdgZwZ + H7fw1+fn7GnwktvFnxxbRtcgCXWryRwuHj+ZERi8gwRw3A/I1+m2vWytr8/kooW3R LZOPuh + Rkj82P5Us2jy8seTll18/61N8jptuShV56d9PLuvyMSSIlm2oXVU3Ed+uP8aqHSLe+RhAQ A + TkxsuVz9O31GK3I7YpHKx6swUfgM/1qCewSc5cYYdGHBFeFdp6H1qSluZEX2rSXAB3Rj+GVi + Vx7 SdR9G/OtO11GO4kCNmKYj7j8E/T1HuKjlml0xHN0BNEP4h97H071yni/4haZpVkDFdwQ + vJIUW2kX JY4znacbfqMUpW6jV4bHb31/DpFlLc6pNFBbQKXkkdgFQAZJJPQVx2h/tLeDfEO + rrYaTqqy3EpIh JgkRJ8dTGzKA4A5yCa+Ov2t/245hpmr6KmV02yeGK9dwZVILKZArj+Hy88 + EEnJ9K8W8a/tpTvpmn DwO9nYOBvjvrhzJ5mekrL0XGfU5z2qGmmS6rufoV8X/2xfBHw8e7s + LzxDp39o2S77i3WYGWBcEkk Dp06V8I/FL/gojH8Q/Gd5DpKxX1lbzRyC3dWdn43Abh04+nP + rXwT8cf2ttQ8K/EvVYvFN4ur3l4j JNNHhI5VLMygBc8EuxOf6V4NN+07rei3k62Ny9rDOAC + I3OSoOVBPfHvV+yja8tjOWJSXxWufvR+y r+1Nc/EbxPFENRl02xihE0Vi0gJmLMCxYjgjB6 + HHJB7V9gaB4lsfEtuW02aOR1JV1DAlSOxxX83f wf8A25byw02wNxqE9pc2S7VklzjHbkc49 + vevtP8AZc/4KKeIW1bTyusWZ3EbjaQlVfngMp+979Kz lh/ZJtbGscRe3+W6P17ltwVyAD71 + QvLTZkxcZ7V4R4G/bot/FWmWokSFbl5PLkEf7wg9ztyOPzr3 Lwz4ih8W6LHdWjI6yruBUEB + h6gHkVDi46s6ozUjkfE0eLolD5Uh68ZDfUd643xBftBG0cwEe7sT+ 7b6H+H6Hiu/8TW4ac+ + YM/WuB8WWhIZc5Ujoa5XNwZ3xgpRPLfHviy00m9UbWe4wQI9vP5+lcrJe3 fiObdqTAIOViX + IVf8TW78Q9OV3tGAztkdCfTpxVHTbbaBtyccVx4qtJy5U9Dow9GKjzLclsbMRqM D61veFGN + j4jsJo+PKuEb6YYVn28JA5XNXbRjDcowAypB/KsqOjQq12mfbkMO4ZxwwzTmstxVo8qy nKk + HBB9Qak0c/adKtZRyJIlYe+QDVsR4H0rqSsea1ojY8LeOntALbxKPNiPyiXGf++h/WurSw0y + V AyTJtYZGJeMV555IYncKT7IO3HtnpXo0swnTXLLU82tl8KkuaDsfjt+zxqsnxU/aP+JPiy + X91JbG LQoXA/1ElwxklVT/ALEc8i+32celW774IaD8Tf22fF2teJDJFpXhrTLeG+USfItw2 + JJOv3QkZlGO P9Sa+gf2bvgx8OvDWmy/8Kr1c6gt/q82t3iXTATzySH5l/75eZR0++PSvKV+ + Gfifwr8CvFf/AAsW wnsfGnxX8Tz2rw4yYxez+UoUrn5Vga7bI7MK75c1NtR00SPnOV72PP8 + A4Y/A7xj43+F1r428AWkV 1p2qvLc2+lpNm9gtS7eUxRuWDJtYYycEVteAfinrXgrWgIZL3T + L2BsNGwKMD6Mpr6J0fwJeeBdDs oLW3ls4LSNY7eSL7iKoAADA4HQcZB9q0dRi0zxqkafFLR + 7LVmiIKXuzZcRqP9scn8ciu1Jvrc6lQ a2Z7R+yF4Ai+MOu+HPinrmlxadqtla3NndTImxdS + OFWObb/eCmUFu/HpXsUcZuY2ncEG4dpjn/aJ I/QgUfCLxOuu/AeK80uwTS7J4zZ6dGihA8I + IiR9oPGTuIHoAe9XbuMQwFY8AAbR/KssS72X9ehvg KMaTk4rr+JmG3K26D+9lvzqhq95FpF + q812dqKMk1uXUW18L/AAjA/CvFf2zviJN4E+FV7/YiySah Iu6IxttaIDktn6ZFcTV9j1XLl + Vzzj9qf9tuD4TweXplncXUkMu2cx4PljB4/3uOlflX+2J/wUa+I +seNNZv/AAT4uuItFd2W + 2gi0+JWgQ4+QyFSSeOSD1H0r6H+Jsmr6zoWoQ65NqH2+4GYYZYSY8MnS Qjq3OSRmvjH42Q6 + NoPg29efVFEMCPm1aZZSk4bBL9O44XnpnnIqoW5tjCs1zas8/+GX7XviW+8Wy x+OtUlv7a4 + cSyQ3LkoeMHgnk4x+Vc38Xfj63hq6vLf4d6kXtnMkawyR5EKsQTsbPTsOOlef+DPAO pfEPW + JrjSVeC08wlZNuAR7V39p+yrNqcDfblm8wnhvWtJuC6HoYXLcZmFO9OHo3+Z4TrPiC48Q3s + s93IXlf5yx/lULIbpPOib5j95T2r3Zf2MrkM7tKY1Xr8pxipNO/Ywvb19sDuT3OzrzWN01ds + S4Qz B3cl+J5tompQad9meaIXS4ACbiN3HTjtX0h4G8R6Kh0d9ImS0uvIZJlQ8BvlwPfv1xj + ArD0v9iTU dPzLZShZkX92JV3oT7is/wAOfATxT4M103N9pjRy26yOMy7ophg8KMdec1q60Z + WRU8lxeFsqkfuP tf8AZ98U3hlsJtF1HyNQmcQoYmyQmQDx64yc+2O9fXPwB/aG8Q/DTxpba + LqGvDWrC8Ls0d7AElic EAhWXrnp3HBr8sfgX8VvEvwo8X2qzRCOSbDB2G5kU9NpzgDmvq3w + H+0Zp194zsZ9eivNtmPN3uAZ EbI7gYxjPH+NZSiptKxzSUqV0/kfqdc6umqFCHQtLGH2g/M + n1/Oua8U2u7JHoa4n4U/G/SfiHaWt 5pWoWzyugTarhW/EZ/T2rv8AW0JiUsOSK8qrFp6ntU + JKUVZni3jrSPscEW9ifNuZnHsCRxWbaL5e 0LXT/EyLNlZMcE+fMufyrnrZMgZAzXDiF+8+R + 1YXWl95YjJB+Xj1qZPvjp+FNVdp7D8acMbz14NT DdNBUR9v/Dhv7T8AaLOOfNsoW/8AHBW2 + bQha5v8AZ8uvt/wd0Bic7bYJ/wB8kj+ldutvvU8V22ue Yo+6jMW2/P3pfJx2rR+xkrkDmmm + 1bPQ0WMZKx+A2mX/jv4WRWF9cWd9LZ3lst7FcW5LOkbM4Uvt6 E+WxA9CD3Fe5fCD/AIKH6n + or20fiV4dTjt3DpHeIPMjYcZUnow55616bDYR2WkW7RwpNYRqLi2iI 4a2tUHkD/gf2K3Hv9 + p968X/4KIfDXRfBPws0i30azT/hIrk2mnW86JiQzyMXkk46ny7aU8/89s19 GsSp2jKP9f12 + Z8ZHSV1ofXnwy/bN8D/FKJYdRmGi6hMNp34COffsw+tdr468DaInhN9WWezitHG2 O5t3ESu + 5HyrtPyFj2AKk9ga/Kz4W+ANfbxjouh+G7s3f2+8uIhPMScxRSLEHGPVzx7MK/S39hz4f a5 + Jd3fh3xFEmteF5ozDqcU+WgO1soyk9G3KGXHIxmtuRN+49dzoVWfLe3kfVWquPB2jeCvDemx + Ig dT5ijpHHbwgE4/32Srkv7yaNXA5bJ+gGab4o0k3nxJS/lkLfYtNFoqH+FpJPMdvxCxinR + YN028/d j49SSf8A61c1Z3k/uO/Cq0SvK3zYY/Svjb9s/wCLhvNTvoPDmp6TEunCWKYSHzJG + 5wy4+6OmOa+z Lq3Ei4cZ9a/Fj/gq58R/EH7L/iPxdp3gvxTPZxX12b9o5lWWKQSMfkUEZDg + jkZIJ578YqPM7I6qk mle2h5b+3x/wUv1Hwbpq6P4VuI/t7ECaMWrxowwQDuLYxjHCnnvXwz + 4MPiH9qf4kPc+L7uSSxifz Jwo2RL6KqDAz7+leffE3xtf+PvFEt3rV/d6jcztlnmfc2T29v + wr6s/Zq8CQeCvBNrEqqLmVd8x7s 5/zitHJUV7u5tk+GeYYr3vgjv59j0XwN4I03w9aw21hb + KiRLtA28Cu1stJiZM26qMnnArDsm+zRI zHORjGOldDoVwWQgnv27159Rtn67l9KLSS6Ej2k + CIwlQN2PHFdN8PNDtZrxVu4kCdeBWVBpHmlTK uVfnGeldX4Wsi17CsKgpjDc4K1F0j6KlKn + CJ6XpPgHTdQsszW8TuThTjoK15v2b7DxFphjlhB342 sAMqfasPw1rn2W+WMlkBO1RnvX0t8 + HPBEviAQlA8nmAEhRn9KuPvaI4cVGl7N+0St5nyD4+/4Jxy eI/C14loxt9Qs1aSzcIdr9Tt + 9gTXx58Pfi1c6B8RLzQ/HhuLKaycwSxOv+qdDjbj3P5g1+/OmfDl YNKeO5hV14XDivxL/wC + C8HwIj/Z8/ai0/wASeHbVrW18XWLFwowrXMLAN+JV0P4V2Qbtys/LuIcJ Spr29NaXs/8AP9 + D1L4U/En/hHvEEjaB4nSxv9SgGLZosAtnAzv8Aug+tfbn7PXxv1jxoq6f8QXga /Vf4F2grj + Ckc98c5r8cP2Y/G8nifWreC0sby+uJmBu2aQMwA6DJ+6o49q/U/9hp5bjw/qs+oLE81 sUSN + WkDPbwgk7F7/AHhnP0FY14JwfNujw8LWm6istD1z4ihZtMtyjZ2Xcqn6+lc3bR8DvW54ztjb + 6QxY5WXUZXU56ggGsS2YZG2vDxK9/wCR9Bgr+yu+7LCLjhiaeOW5HOeTTUUk8fnSoTkjoRW + KKqO5 9h/snXP2v4Kabg58mSWP8nP+Nep2q7+2K8Z/Ys1AT/COWPvb38ox9Qp/rXtNkcqN3N + d55mys+7LM MOcAVN9gB7fpSQD5uRxVsNgU0jJ6H5x3Hw4uf+EztLEWMtrYReTbW6yLx5MI8 + 3H1P2bTk+rsPWvk f9vHxoPEn7SWi6Pp7ebH4cs7nXiBypI/cW2T/tC1jIH/AE3961vgj/wV + B13RkhtPEdxFqsKYXy7l dsgH41315c/BX9o7X7jV9UjvfCHii9hht2vIm82BliZGjUxk7do + MadCMhRmvoHhJRlZ6/wBfefEU 5X/qxyn7JHgR7H4l3lxJEzReGbCLTUJHPnKglk/EvND+Vf + q78DfACeBfAekaesapMsCNOQOXkIyx PvnNfI/7Hv7Lf/COTpGviDTPE6ahqpv7m7gHlvIrS + GVt0ZPBJEa4GQAor7tCCws5ZXOBFGSSe3Fd OFg4OU5eh1yklCMV5s4e/wDF2kaj4z1Gy0jU + 7OTUIpR59oZR5sZ2rjjOR8u386fdTCJsX0bRejMP l/766V+WvxZ+KV34k+NXiTxBpl3NBLe + 6nNLFLE5VggfamCP9lVr0L4Yf8FBfHXgWNbbWruLxBYgA NFfAmTHtIOfzzUzpRqa9S6OM5N + JLQ+3/AIg/EFPBrWMEbxPd6nP9ntEkfCu2xmPPsEJ9+B3r+cH/ AILVfG6++KP7ZfieM6ot9 + o1hdNbWrx/6vcoHmAAddrEqD3xnvX6Kf8FRP+CmsXh/4M6B4j8D6Ze2 eq6feSRtCHAEEkke + ElVwMEAqwIKjO6vxT+M/7QeqfGG0tbbxHDYA6fPcSx3EUGyZ/Ok3srkfeAbO OmMmsacHSbk + /Q0r4pSjo9DkvCWnrqHjCyjPCvMpOTyBnrX2z8PiFsYVUZCgAc9RXyH8A9AbxL8SL SPqq5d + ++AP8AIr7H8IRQ2wRnLKiMBXNXezsfUcLQtSlLuztIZkuLbGM7cZOOtbXhyMCZWj3HecAe l + cxDqlvJcEWU0ZPQgHGa3vDc88dwAVJSTkcg4NcUr2ufpOB/dJOWzPR9F0P7R+9fkR8le5q94 + fv1 tb6aSQkAAgDH86zNF8RL9jLuQoC/Mc+1Q+GLs6zeSR4ByxYkdwK57NJntdLt6HrPw80F + dZ1QPcnK jawPevtH4K3h0PRVihi+YqqqwHOTXy7+zjoUeqZChdh43E56da+qPhtd20SwKpH + lxHO/d9444I+l duHukeZmlSM4ci1sfQXw7tf+EliWPbmKBAc471+UX/B0/wCDUX4a/Di9g2 + I1rrd0Ax+9tMKgj9Af wr9eP2cdOXWzP9j+6FAGP4q/MX/g6J8Lz33hHwBodjB59zeXN3dLt + XeYyFABxXpOnzcrW5+cZxXX s5Um+x+W37Jt9FqUMdqsn2K9sD9qstQjH7xeu63fjDoxGQD0 + Nfqj+wv4lvfFrXMPiC0hivo7YFZo ovKjvIA3Lbf4Tlun86/Pj4Efs6PCNBl8KLcww3YSSaQ + j5Y7xAwKj1RgM/ifSv04/YN0tNS+G0erX dt5Vy6vEjHkqu750J74ZePbFcmISim2eFhXzyj + Fd/wCvM7f4kRpFoFusYchLpgcnPODmuUhAA7c8 Vv8Aja5mm0a58wkrFqkir7DBrnoDnH0rw + MUrzXofTYP+F82W4+Op7UPKF6dKjBJGfzpC27gnpWMY 9WVNn0/+wbc/avCGuwZOYrxHx6bk + /wDsa+g7aEgZ7Gvmv/gnveCW88S2rHjZBL+rj+tfUlvZbkBF dyWh5j+0vNkdswEnzdKvADH + Sq72JRjjNJ+8HrVpGLPxLtvg/4D+JerfE/wAe+OdPiHh7RJ5jZi3J h22ljbSSuVK4wWWK0j + z/ANNz3rzz4MfA/Vte8E+DtQhv/KvNf0w6rc28gwtpEWmZBnr/AKq3kc59 vWu//aehf4T/A + LBmh+EtJhkGsfEnUbDw5DHg73a8kF9cfiLaKzQ/XFeqeGNCttIvdSygW3gt7bw9 Zqg42Fha + jH1isrtv+2+e9fQYeUnonu7L8O/rf5bnwtRtWS6l/wDZg8K+LE8Y6fZ/DKS8k1MMrjym ICj + g7n7BR3Jr9BP2iPH178MP2W/Ees+JpoW1W10lw8kfyo85TauPq7LXN/sS+BNP8KfDUXmmWqR + 3 OosWlmI+eQA8ZPp7VwX/AAV18cnQ/wBnSz0S1YibXtRijYDqY48yt+qIPxr0cRZJpbGibS + 956n5s fayAVLZ24GSetMkvjHHuRuR2qoztGSsgPB5zVe6nfqn3T2rj5uoJM8m/bW1LS9Y+C + +s2fi8ExCHf F/eRwflYfjX5fXqeXdOFfeATz61+pP7UHwTb45/DufSY7qWynJDpLGu48c7S + MjIPpmvzb+Kfwrvv hV4qudL1lhI0bfI4UrvXPUg8qeOlZSvPbcubvoemfsXaHDI2salKy+d + EUgUHqAQSf1Fev6j4k8yb yIJNuXwyg8n8a8c+A/hK9sfAE+q+Hr+S1uGlZZo9u5ZYxjIHcN + 1wRXZ+OfAc99qbp4etoLUOq7pX UOwGOozyT71zpK75mfc5NOdHDw5I7a/edvfxXttatNoU1 + oZ9o+SV8FfeqnhT4zeI/Duqbbq1F2iH BMcqsvucZzXAXvwO1iSGx/sh5pCFKSiQuUcZJzlf + r0rR17wVNpFlYQ2vkxtbxlbh1BQzEk5IPt0G fShxp9X/AF956tPHY2pN/u+W3no/wPdvCPx + j/wCEwaS3tlZHYhJEU/dOea9Gm1C78FWklyI5NksK lcDGctg18s/swfb5viDNa+GY0uIojg + mQEEsDg59K+8vjF4yv5/2a7PTNf8Nafo+tWzgw6i1ySl1G wKgLHs5bdwDuxuxmuepStU5Fs + e5SzWpHB+2n1dr9DjfAP7bdt8NlS3vY5toOAFPXsc5r6V+Bf7Xm mfEPWbKHTGk2zEKybuF9 + s1+ZPiG41iCS4fbNK9oRtT7PGfNHcnKkg17f+xf8TfEF3erd+HvDwuBb SrF5JQJLPIT92Nc + jd1HOO9bU6SWt9Ec7z2Sm4VYtf9u3/FXP6Jf2KtPW60cTmI+S9uHVuhU5wVP5 gg+h9q/M7/ + g5pmGhfEv4e20bj7RPDLLChXPmRrMpPT0B5PpX15+y5/wULtPh18E9CHiHQnklvLh7 aSG3m + JuYGQcpJAyK6Nk8DLA84Jr47/4L863aftE/tM/ASTQ7qztbCbQ7rUA0U/nTSQTzIiytGB+7 + RtpUB8HIbgba3hze15ls/wBEz4DH4idavUqfZlovl2/4B8XfBzU5dR1DTYtbu30+xjja5SFD + tMMi qygDHsAPq3vX39+w9BewfB/Gs7VCzHygF253IrsSPXLn9a+d/Cv7NulfHj4zQRaLBJY + WtxPE0cSY SSPAIdicEKCVU9OrHAr7h8OfCzT/AITaJHpegQNDHGMsWdneRu5LMSSTisswXs + 6fLbVjy6Lq1ebo jj/ibb7dAJUAFrzcf++TXDW7kgZyO1d58VDt8Ose32ofqDXBRNxkda+fx + Wkl6H1GHfuP1ZZ34Ppi mucnOTk881xfxb+LC/CaxsL68s3vLW4uDDN5bfPGoUtuA78A8e1a + OmfEXTdZ8QLp2jzNczG1S7Zk HyRo/Kbj6kc4qOSVlKxlKpHmcE9f6/zPp/8A4J63234maxb + Mf9fp+7HrtkX/AOKNfY9ooQDOOtfD v7BWofZ/j9DESMXNhPHweuAG/wDZa+1tZmktLNngJD + LzXXT+FM4J/FI09gaUDsR1p32FT1zXzf4G /az8W+M/27dd+EOgaPo80ej+F4/EsEs9w0Mt8 + hmWJ40OCoZS+eRggdRXup8caxEdtz4J8XiReGCW qOoPfDB8Ee4610xi2tDzJ4+jCTjKVmu5 + +ZPx6/Zq1T9oD47fC3xX4C1fw/q/hj4dDU9XNik4W4ut Tm2+QVjIxtSOC3iBzkc8YrY8MfB + 3WPDun6FZ+ILK7SVbma5uWljPUIttAM9OizSf9tfevlDw74Z+ Kfwh1toLlJ5vJcgT2UpdXC + lwWGOcfunPI6DNfVfwO/aV8Z+GmtF8TN/aMSEGS3u03fhzX0lOEcO4 7W/4f5dT5L2fM73dl + b87n3z8JvDaeGvA+m2cahTHEuQB6ivi/wD4KseKT4h+KWkaNCS0Wk2LTN6B 5Wx+e2MfnX27 + 8OfHlp8RPAthremWUmniWAmSFjwGHGVz2OK+Jf2g7u28efFPXJ9SijuYhcNChYZ4 T5ev4H8 + 6WLnZXaKT50fFd7pPzHCkFiazrvTSDheDX0VrvwY0vU9zWDyWzen3l/I81wniT4I6jZMz WQ + julH9zr+RrznU8zoVN9Dxq+t2jJ9hjnpXw9/wUA0Jrjxmt08Dy7IAqPj7oySfw4/Wv0E17QX + sZ JI7yJkkU8qwwePavjX9sbwnN4z+JsGmRTi2t7i0dp5GXKwopHp3J/nWlKaclc0S11PJ/2 + X2/4oq4 juf9XJcPgn69Pxr0mXzrGywiQXaocAuTHIfYkAg/XivM/gfLHZaNNaWmd1rKQfqa + 9Bg1HzrkK3Qn p71z1ad6jufp3D+GhVowUux1Ona5Ppelri2nCkHIS4Rxn2Bxn8a4rxPqk9z + dSTXdk8xI/dK8qbQf U7c/lXaabbx3UQClVQjkZ9q5rxfdpFqC2OlKklyx4Xsvqax5XF2PoM + RlEKFO6k/w/wAjr/2UNCNj raXFzGBdXcgaTA/L8q/S7xh8DIPib+zJp9xNaR3934e23yR7Q + 5aIf6xAO525YDuQK/O34E6XMt1G wf51wTg96/Xf9mzR7rTPgVb3ktq9y6WxYxqM+aNucfyH + 40Jc05dzsxFGksBCC010/r1Pz7+L3wH8 OeHPGL3ngW7jvtHvsTiJx5dzbhucbHAYiveP2Tf + AvhnwtLbaqbG0nli/ebpI2DJ9FzjNef8Axl+M GhfEXxpJB4atTZpBK0XkSJyhBwVKn0IIru + P2bvgTYeK9ci+02Ns3mnlGiU4z+FEIvntE5JZLV+rq cpJq3mtPlc+mQNN8VlJ9Igt7fVVZV + s4VwJbu6Y4RQpJ3Z+X5uwBJOBxJ+3h+zT8KvAvxQ8KeB/DG iaLpGsQ+HFvdQvbeFI7zUZZJ + mG93I3SOXDSEZ6Oexr61/Zf/AGbvDfg3TdMXQ9G0+zu5Yi0ssNqi NtGMgsBmvnj/AIKffDX + SvGH7Qk1x4jZY54raKG0kV/LkTCb9yv8A7Jweo6e9ddOMqdSzlrbp9x+a Zq+fEKC+zd2X9L + +vU4T4IfAy4+Grw/YbxkhkUymURASysfViDgduDxXoXiK5e5cG4YuwULk9SAMf 0rL8Gatea + jo2mT38gRPsyxqUHykjKsfxK7uefmFXNcLYy2CPUV5uLqSnL3jswNKEKalDqedfFO4W Twlc + bCCY7tMgc9q85FwAo9veuv8AiAkseh61uUgNexOn+0No6fjmuBW6H/1q4MRFcyO/Bz5oz9Wc + z8dvB93468PWNvpEZnMV2GkUPsbYyMhIPsWBPsDTfgl8MW+GOhTw6hKbieWXarsdzLEowi5 + PXHJx 2ziuoF/ubH5EVKkxf3qVJqPJ0BxUZOXf+v0PXf2L9SFl+0j4cycee8kJ/wCBRN/9av + vzWId9jKG/ u1+cP7M2q/2f8fvCcxO0DUolP/Ajt/rX6V6jbbrd+v3a7KELwOCo/wB40fEtn + df8K+/4LkfCK+z5 UPjTwdrGhykf8tGiH2hAfxjFfpDz71+ZH7b10Ph9+3X+yt4vz5aWfjoa + RM+cfJdp5JBPp8xr9OGO 1iOePenK8UrHx2aw5a7ufkL4egTUdamtbUeZPcL9lhYDqrkRFv8 + Avzbzt/22r0z9mL4L2Pj34oap qPjmE3H2Kbd9n/5Zljgjd6gDHFeT/st/F/wh438VXa6Xq1 + ms+mxO8dvO3lTnKrGpAb7wEcecju5r 6/8A2WPCg0zw7dag6kS6jMZWOPU5r36ELV+VrZXMo + pKjzPe56F8QPEVv4F+GmqXsaxwxWVsxRQAq gKpOB2HSvzduviwjarJH4lguNOvJWLstyhTc + WOcgnqDnrX2j+3Zr76T8F10yF8Ta7eQWKgdSHkG7 /wAdD18n+NPjHrOoeI72z1xNO1zS45T + DHaalarOiIpwArEbl/A1vVh7V8q/r8DJSjCKcupltq39r WrnRriASkfKThgD71TsL3Upp3+ + 2xR+SnBfo3AGTj65xU9p4c8H6zN5ek6RqPhTUsNIn2G6Mtm+0b m+RwWXgHocVjeMNA8TWNm + l9oDO2mXCsF8yPGBnGd2MHNcdWjys6Kburp3Ll54etta0PZqUUU6yKZ PnUH7xz/AFr4q/bu + 8IeHfhZHqmsapugW8szbKinq2ScLnnnNfYR8eR6JpQh8QNGlwihCY/mjJxxg 9+K/L3/grh8 + cf+E1+IOm+HdDdjb6fEZ7hzxvdj8oA9AAx/GueEE3obcyW6PBPhDr/wBmv7qMsyLO wcjPP0 + /WvS9P1ZGycbUyeQOfyrwbwfqBs9SGWwe3vXq+neK7W1tIvOl2kL0Y9/StHPmvJH3WQ4qU a + as9j0mXxJbaFo/n3cuFUAY7k15T4t+LP2PXpdTwRIU2CMNzj1+tcv8AE/4kG/lEdizeWp7Nk + NXG y3P9pSrG7ACcYLnOFb/P86yle19zuzXiH2i9lTd2j6L/AGdf2gZ1Mja7dR2fnNtSWUNs + TnqQoJ/I V+gGg/8ABYnUPg/4H8IaB4MkstR0SyQtqt0ysbiYg/djUkBF24+Zs9+BX5GafLB + bW0UF3OsVxG25 8kkBcDGMdx/WvQ/heYb/AFiyzcmCcAlt7fISuSOT0J7Z45rN6K7Wp5tLNJ + ySp1KjaVvv/M+i/wDh ou68RfHTWfEUZigTX9Qm1BI0I2RGWQsVH03V+hX7CHxDbUdXsJXYN + 5rBTnkZr83vBPwgh8VWV81k Vt5EEctqA+dpMe4ggdBkdsYAr69/4Ju/FGPSpHtdcdIb3TnK + yRSMBlweik9aVKoozTeh9dgs4p18 J7FK3KkkvK2n3H78/BZ7VPBdtfvLGALYPITx5Y7kn0w + K/OX/AIKefEhdf8Xa3qDXBexwlqoAysKu +Cw+o8sn2Fe7/DP9pc2HwevJxdwiPUFWBInbO3 + apDjHpk18Tftg36+I9B1YX95I0EiPceSjZLSrH 8uR3Hy89sL+fVZKpJ3u3+B+aYuhKFepUk + 9W/6RwOqftZeIv2b9X0vR/COsJq1gtjHdSi6USxTNJk 7V5yqj7vB5xnuK9F8H/8FFvDHjC3 + jj8b2NzoNw3BmhPmwE+uOo/Kvhi8km1bU5WvJZDjCKgPCqOA B7DFbfh7Q1llXcOO+azqQhU + 0ZnSxFWkrJn354216z8RfDafUdAu4720uWjkjmj+643Yry8ahufmt b4cEQ/sv28S4CRRn/w + BHsf61xkeo5k6/WvIxULTse/gKznSvLds6GO824wanjvSW4Pb61hW95vXI PJ6VcguyRg9qw + UTeUjtfhZrB034l6BdJ8ph1GBsj08wV+r93H5tsxHda/H7Q9SNlq9rKpx5UyPn6 MDX7GaNA + NU0OynTlbi3jkz67lB/rXfhdInl4qpyTTPzp/wCC0sLeH/gv4Y8UW+Vl8HeMtM1UOOqh Jx/ + iK/UWwnj1WxhurVt0VzGsqEd1YZH6Gvjf/gpr+xxrX7Sn7Lvinw14IWNtS1BEltvMOAHSRXH + P /Aa0Phn+3t4n8C/Dfw/onif4SeM7vUtH022sbueKWAxzTRRKjuuT0LKSPY1vDDTqK0e/dH + zuaQVW opJXR+CGgeMPtV1DdWMpguoGykiNhgp6rkfnX1l+zJ/wVR8c/s5yW2m6vMniPw+rc + 2l4cyIvfy5f vL9DkV8F/DjWd00JJLKXOc+legT6kl8oLDIHy59D2r6lU3B2ep83SxEnFXP1 + M+KP7b/hL9rC/wDC F94SuXsLLR5H1DU4L0hGs2RMIC2cMMs3I/SvB3+Pfgm68XajbnxHphk + s7aTUZ5Ek8xPKX75BXOdo 5OO3NfDHi/XtOtdDvtO8U36WlpewmNn83YUBHUHPBHX8K+aNC/ + acT4S6jrdrHMmsNJpN5osEoPyg XEZheUe+xmwPU1hKHLdxZ1JqtZNaL+v61P2C8JftWfCDV + tQlDfETSre8FtILOOS2m23TnHyBwh2k jOMjGepFe16N+3d8Gfhz8KbSPxj428OI1ral5YJL + hd+dx+Xae/PSv5ttU+K2o3FyJ7C6a2xwojJD L+Nc5feJbvU5d9/cTTuerO5JrCfspvVs7MN + iPY3VtD9bP21/+C2vwzj8RR2PwK8FWetRwyE3GoSk 26SH0RV+99SK/M749/F2P4x/FjWvE0 + EL2serSh4bZ38z7OoULt3YGehPTvXnUlwZ5Mhsgc4PapYf 33zgtn19K45xjO6iilVlUdnuX + 9P1No7wmRsuc7SOxrR1HXZUhCp80uMDPIGe1c3HPiQbcnb0q/p7 s98kc2TIflC4yV7/AJ1z + JtO6Ouji5U4OMWTzWOpXJVpoiwzxk4LeuBV7QdGvNQv0hWP5ydwUD86n 0vzNNEFzqRfegZU + TPPJ457d+fpUkHiqSK7jbTI5USJs7ZHyFA68kfzrb2adlexVKrBTUmaUnh20D xrf3ESyhtv + zK2QK9F+G/gizntY7vT5ZbpbQFpGVfRSdvPPQV5zq/iSHUdWOoWax4DCTaw5Y8dMdQ PSu88 + LfF+DwndGzW1mQSr57xR8bmPTI6Dt9PenUpSULRPc+v0lH4I83fU9C8K/FbVNEjiudEt5ZY + 7Z0VygJ3KMgrgnn7xHHY17P8I/GdvJ8QbvU7Kf5pyrNGG27WCjcMD0I6182+CvH8mra9ZrHH + PY/Y 51MaTIBHIf4g+Bzk8c9a9b+Hs0+n6pJdaFbeUl8yGbYo+XHAJ7AE1y1KbvqOlilSmpx + 2P0S8A/HK 8j8IadaGcTW0jPHKjn54flBVj7E45z61Fr9/fWlwup6k0F5C8bQshOd28EDI9C + A3P4V4x8JNYuvi BpsQ0+WS4vLKIiKNEA8zYpJBI6k7SPXgV6l4WZvGWhw2ksw/tEkeV5qna + /yk4PoR/M9KvDrmqbE4 2tGULSZ4z8RPBMei61LLpkTrDI67k6hNwzj8wR+FT6BpskYQmNv3 + gyMDrWN+2rY+OtC0qe98JXUu nXCt5s+yMAsoiRWKnGOkYb8a+Hrn9rXxp4a8SPHLrurF45p + AySzsdo4x7Z69K6nRs7s8ZVmk3LdH 7K+AJWX9m3DKQQr8fSU152l0TJhs9a+Rv2WP+Ci/iI + rFp2r6kZlkygWb5o1zn7wNeq+C/wDgoN4a n8cf2H8Z9E+x75zCNRsW2hBnG5oz1H5Vz1sul + Ud4vU9DDZrGgvZzjt1Wp7pa3GBtJz9BV+G4yBnm quv6OmjywTaZOt3p99ELi0uV5SeM9CKj + tbgkcnJ+leVKm4PlZ7EK0asVKLumbdtcksCG4/Wv2h+B d0ut/BvwlerhvtGlWz5/7ZrX4p2 + dxsOa/Yv9ijVv7a/ZR8Czltx/stIyf90lf6VadoaHh51U5IRl HzPT2iVlwygj0IrNk8H2Tu + xMEJyc/drUp26iMpQ2Z85RxEo394/jY8IeNIdFsxPeTRxRAbxlsYXG c1w/xT/bQur65ls/A + X7i0U484/fcjuPSvHdU8VX+pabb2LzEwxrt68t9awTYOkhB5I5619dXrpfA jihQgnzM3vE3 + xH1XxbdtL4hvJ7tnPO5zwPYViz7Zw7x5OPWoyS3Ocn+VAkVMliR2OK5JVJNXZ0W7 EYYjrzz + TCSxye9KxG4nt2pmfmP6Vxvey3NEhrt5bcGr1oxFucnhuvY4qtY2TahfJDCVDyHA3HAp4 uf + 3RC9+PwqYvl36mkdyS0AF1HuG4M2cHvW1ocmy6nlusRvKAobPzJk5P5jI/GsITmCdXQcpgj6 + 1u G5juo0k2JE0jHDqM7uOeOxHH50Qi5aMpS02NRbZ7aRLnzY7pGHykRkR/7ozya2YdIitor + ybWbaSQ FAURDjaxGST+n51tfDXTrWfQSLy1DpbxSSJM65ZicDgegJJPet3wtpV94pujYXIh + mtLkBZJEA8sl ckcdcYyOO9dFrrbQ7KTaV5fLqeY6laQ2lzts42BjcCJmP31ZjtYjsa6X4co + fEevf2fdyC3e52QAx 8kDIPPfA54rpfF/w8TVVnOmCET6evluQvXCkgDHsMDPOa5b4drep4w + Fxa2a+YjAKCdroT7dT1yK0 irK97F8zpO70PZT8H49KiljhAMrSZMomJlPoSvTk844PNdx4B + lv/AA1plzba8PNW4tjBDcxPhGII Iyex9jU3w2nf4gW8DkpHdQLGswjbO4su1uOh7MD9fw9X + +H3gC20q6/s/xKEMcLAOx+68LAjJI4B4 6fSs6kOfVot12o8tyx+z74gufB8LPo10ReLG3nq + MhUByu7ce/wAy5Gf4vTNew/CzxTeX6Q6iha2Y TK6rI3ILZXIP4fhmvJtI0bTrXwrqz3NqPt + kTLHD5CeX5y7lJDgEDIAH19a7m18drp3gTw8ttEZpk tmhKp8pSRnJLkH0DhRn0rJ0ZwfNEu + NeM1GMo79/62PYodUX4ueBPEFhpkCXl8trJEJLlN4ilbgDG OQQGB9jX5f8A7VX7P+meE9fh + uLoTWNpqEaS2zv8AfiyoZ0JH3grEjPtX6P8Aw18Zt4fiuTay26Tg JciUNtaTK7cfgSx985r + 5i/bf8IWFpo3iPU7VX1GxguHneCOI4wDnCnHCMzqMjGAtdT96PP8A1fQ4 nFwm/wCXz7Hw54 + UNx4H8TWcgkDJNiSJgwO9SxAyOx4/zmuy+MV9LYePLS8tnfF5Akob+Ek9SM+4r zK81e4v/A + BJ9p1pkHmvvjRB8sajsB2AxivVfiPMur+FPDN3cRAhcxYwfkUjdye+Tmrpt6af1uVez 5lts + fo/+wp4yf4v/ALJ/2RpXnvPCOJFU8uIXOCPwIB/Ou0tbnawySBXhn/BGT4xW2har4u0qJYJV + fS3ncOMhljZGKn6jP5V9R/F/wVZ6Iljrng5hJour5aIqSRG45ZD9M1zZlhHJ+2R1ZPjoxnL + Cy7u3 52MK0n6Z578V+uf/AATa1U6r+x34X3tuNs1xAfbbK2P0Ir8gLKff3r9WP+CSeqjUP2 + TFhySbPV7m P6ZCN/WvFatFnRnS/cfM+nKKKKk+UP4HzMwPBPAwOaVrkj7pI9ajU5BDZoA3n + 2HPvX0PM+Tsb2QB 8HK96aZDyFyc03JR+DS54znmuVzve+5VrDt+7ORx3ppXLfL9KQfKc/hT + mGGJB5PepcdL9h7DD8kg 25GOfpU0UgZzI3GOo96gkG49c4pVPTJx3rFKWxXoTRL50wDdWPX + tWhFBKFEahxzhARwc+lVLGMSM DkAL3NT6dc3IuVW0dlfPyjPAP4100Y2SBHuPh23l846XpM + 0SLZWcQbfF9xigLEnHqx49q9N+Gvhs Jo+oNdNC0jRuY3jBCFwowqgjjNeY+Gbu30Lwu73Fx + FFO0Q8133MpLL6V6x8N/E1lfaTBdWV0sUEK CExuCF3Dknbjrk10zg1H3f62/M7o2Sut+pmx + yzS2D22qWoikv4wZC6FGkZWAyOOnI5964pPBqeA/ iPBZThp5J5DP9oZsKgXnC88NgHnrXrO + qeHrnSIkeeQ3Xmv54lySY+/B9CO1QeIfBVr4pujfyr89o RIqBiGcdPlPuTz7elEHZ3T0KnK + 7v2G/C+S08KeMGjnf7MLkBYzI/DqeQw/E/pX0hp2mrNY/6VuWa 4nK253AmUBRnHqrKenqPr + XhOueHbTxFNHcJFCbi1MYkQjZk7RgKfT5T+de1aRZRa7oNkNSmxHbEy W8gP3WU4KE5oi7yV + 2ZvVJs7PxD4Ku9V8Cx2GliJbm1mExQ8tKj7d5B9uOBzxXFDwtr/hj4kSaZPC ptLHU3e6Erj + y5U5yVb+FSpOB/hXouj60+q2to9i8kd9axMZVzhZVUkHPrnKkfWsnW9YE2g2msyMi XF/K9n + IpGBNFtz847MGJAPPFbWV72JUmtJdTZj1x9C0GCRbe3kexbyi0+Wea2c74Wb3Afbnvtpb3 Q + 28Z+HriC6hgtmuLK4syjODC6z4Q/iMg57VxHhpZbvTp7DWrpY72BURJgCYrkR5IBz0IU9uOK + 9J8 F6YukjTYIjMbi+mQxtcHj7y7kKdMA/Nu7g1k6dlYbqe7Zv8A4PU/Mn9oT4A3fgKK51W0 + EK2Vrqr2 kcK7t8YYSEYJHzL+5fn1qOO8e6+AEzzM0ptZUAyeYixYAD2619rf8FIPglfavZa + Xf+GrQS2c5e8n sUjJLPE8iSMNuGJCgk4zwTivjWe3Ft8MdVs2iNtFdXSqMHchxJgAE88Zro + inL3r9iH7yUlu7Hrn/ AATb8fr8LYPGusagiTxS6FPbDe2F3NgAeueT/k19y/sMftKf8Lq0V + PAPiYGaw1TC2b/x2TgcMPb1 9q/MnQb1vCXwt1OG2uf9IluhaL5Ywsi7uSPXOOtfQf8AwTm8 + Sy6F8S9EneWWNo5F3MvOFzxnHfIx +NdlOKmnCWz0+5HLiIunerHdar5I+3PF3hifwR4pvNL + vyfMtJChOOuO9fpR/wRc1Rr74C+JrRjn7 LrAcc/34V/8Aia+Fv2j/ABD4W8ZfEFHivY9L1e + +gjKPIw+z3UmAPLJ/gfjHPFfZ//BFK2vNC8PeP tL1qGWCaK4tJtkgweVkGfpwOa+cxmFdFS + utND2KuNhjsInfXS6Pt8gqeaSp3TeKgryvh0PBnTcWf wOsvzEdfcUqEBhkZ/pSyjGcVFn5m + +tfQvZF7oV05PIphHHSpB9+mt/rT9TWNaXI7FbCHG0Bs+tOP TrSN/Wm56/SlG62AG9R+NIv + zjA5NJL96pLHm4XPrUWUpKJV7K5f0yMIpEqgpgZ55zWx4e0hdV1Sb yy3lxqGOxCCASAcntx + 3rIJwiY710ehOU8JXJUkFmUMQeSMjrXdTSUkOk7y19TuoZIr9Ht7NYfIim UAE58wbcDPsoG + a9R+DNlazaQrTsjK11JGo+9yBggfXIOfavJvhzGr2zl1BJmbkj2FelfApinh692 EjbfNjHb + KnNbVF+75l5fidEaj0a6ux6LpGp3bmf+1IWMEkXkBCMqjLldynvkEce1anhBFi06KVH8 6Wx + zBIf4kRm657kcf5zXOLO41i5QO+0yxEjPB5I6fTitbwMc+MNRQ/cMI+XtznPFcvKloa03eSN + l IFsvEwsbdTPHqTnZlcIH2k/UA449DXR+HGfwj4TitYy19BaqdpVssxyxIPr1/SuasJGH9k + MGO4Sq Ac89DXS6KojtpPLAX9/J0470Qlr9w5SvLbuekfDPxFHFoEsV3M5nYjDlfmUEc/X6V + H8Q9NGn6Npd xcSzQxJeMI3UbwdwDqeOg4Ye2KqRoI7awZAFLRqSQOTz3q/4xjWTwzLHIoaM + SK4UjI3DocevvXXC Xutoycrsx5pBqOh6imqB5LiSIH5G+XduAVgR0yMjFeieDdXk1Twvp7r + NG15pBCxB1zlSp53dsHAz /wDWrznwSxk0OcOSwNlMSDzz8h/qa3LmVoNM0wQMyB7WQsFON3 + 3evrWtSSavYydR6pHbfFn7Vr3h bT7jSNQkjfSI5bmOK4OchsrJg9cbXP1r4/8Ajp8NrT/hD + Nei8OiO1FhcXWo2jScJMvkiSROeVKeW 5Ud8e9fbllZxT/CkvNFG7/a/K3MoJ2HqufT2r5X+ + Ocanwn4wjKjZHbTFVxwp2SLkDtwxH0JFYyl7 PVL+tC1FSSPlP4g3B0jwZ4fgsm3vcwecV/u + HO3/69epfsweLG8OzJNFctHdJGDxwFxzn868b8Ykv JpYc5CcLn+EccCuv+GsjBuGI+Yjr2x + XcpNRsVJ3iovrdnufxy+Od/wCIdASeC9lEsUu8lWO786/T b/g31/4KiR6n4vt/AHxbuPtFx + qUC21nqDnL4UkojHuBk49AcV+Nfi+Rns2DsxGehPtXrv/BLe5kt v2mPCrW8jxsL+PBViD19 + qujCOLg6dRXUrr0IqUVDDuot1qj+t+k2g1Q8KSNL4W01pWLM1rESSckn YK0K+GkrOxC95XP + /2Q== +X-ABSHOWAS:COMPANY +CATEGORIES:My Contacts +X-ABUID:685FC9B6-8446-45B8-89AF-3F3BC70CA03A:ABPerson +UID:a nice UID +REV:date +END:VCARD HTTP/1.1 200 OK @@ -97,6 +454,152 @@ EMAIL;TYPE=WORK:vvh@gmail.no UID:a nice UID REV:date END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/mustrmahn.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +N:Mustermann;Anton;Karl;Dr.; +FN:Überwerbung GmbH +NICKNAME:Boss +X-MAIDENNAME:Müller +X-PHONETIC-FIRST-NAME:Anto +X-PHONETIC-MIDDLE-NAME:Carl +X-PHONETIC-LAST-NAME:Mustrmahn +ORG:Überwerbung GmbH;Marketing +TITLE:CEO +EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref:karl@mustermann.de +TEL;TYPE=WORK;TYPE=pref:+49 30 1234567 +TEL;TYPE=CELL:+49 172 1234567 +ITEM1.ADR;TYPE=WORK;TYPE=pref:;;Musterweg 1a;Musterhausen;;12345;DE +ITEM1.X-ABADR:de +NOTE:Test vCard +ITEM2.URL;TYPE=pref:mustermann.de +ITEM2.X-ABLABEL:_$!<HomePage>!$_ +BDAY;VALUE=date:1969-08-16 +X-AIM;TYPE=WORK;TYPE=pref:bethel69 +X-JABBER;TYPE=HOME;TYPE=pref:bethel69@foo.com +PHOTO;BASE64: /9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAA + QAAAABAAAAGgAAAAAA AqACAAQAAAABAAAAS6ADAAQAAAABAAAASwAAAAD/2wBDAAIBAQIBA + QICAQICAgICAwUDAwMDAwYE BAMFBwYHBwcGBgYHCAsJBwgKCAYGCQ0JCgsLDAwMBwkNDg0M + DgsMDAv/2wBDAQICAgMCAwUDAwUL CAYICwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws + LCwsLCwsLCwsLCwsLCwsLCwsLCwv/wAAR CABLAEsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQ + EAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE + 1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol JicoKSo0NTY3ODk6Q0RFRkdISUpT + VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW l5iZmqKjpKWmp6ipqrKztLW + 2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3 +Pn6/8QAHwEAAwEBAQ + EBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3 AAECAxEEBSExB + hJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 OkNERUZH + SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan qKm + qsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAI + R AxEAPwDmrj9qzxB4q8F3MniG/uYdSubhYYxa+U9zJGkYJQQNMpbgKwZV4KeormNe+MXiG9 + 0sWN/d 6Zql/qN1NcTzRW6EMXAVV2sg3SKwfPHGW5PU/NXgq90/xwJo9KS61eSaGSUyWqMGj + KqQs8kxJWDG TydpcEqo5yf11/4Ji/8ABJXw38XP2d9J+In7SN94qkuvFVlLceHdJhvjB/wj + 1pKCIrre0Yk+0FPm G8lIw6jYWBY/u9XinDYCEXtFaJRtt2SWiPiaeRYjHSc5Xb6uTf66s8/ + /AOCc37dE3wl+P1t4X8Tv byeB/H17a2d5Yr5cENlLegRwyxRgbV/eyRIyqACkgJ6V3f8AwV + Q/4Ja+FfjN4Pvrn4F6nL8NdY04 Y1WDR1EVjrFsALjDWzHZBOB5bCQFFycMGFfKv/BTD/gnv + 47/AGEfiLYv8B9Q8ReOfB2qrBa6ZqUM fm6noV1BKk8VrflFwCbdNyXRCBwjZAIWvXfiB+2P + b+A/Duup4N1e9Hh+9n86S7vbybUNQuSURRDD NcO5jDFGG4scbSVTawr53G5vg54qONg2lOP + vJdWu6vvbT5I9illmIp0fYJWs9G9jz34JfG/4c/sr fCK60rTtP8Q6x4V0tDfX+vaRYlNaSV + UZ3h1C0mI8uQkvP58D7JI7hXhjYJKU8x/Z2+NGvftT/tDe Evhx+zv4LvdMXVtWj1CHSYIpL + a00m1VjNc3Ny8iARxKhLPIByzhUBMsYLtX/AGpEstYuLnRLSz0X TnhWeC00yFYINUgMkrlm + ZcHzlkklIduI2kkwF3kV9V/8Et/+Chvhb4WfEQ+DfFt5frB49lgms9Vu L15okIAWOBQ5xCr + O3zgYVnkU45NfL8RY1cQ06dDncYRafLZa+r3Vrnt5Vl0sJX9pJpy73Z+mXwM/ Z70T4DaYl0 + n2bVPEbQeRc6rMu1wDtLRxK2TFFlF+TPJQFsnms342ftC2Fl4ZA0LU9Jg1G6uTp3l3 F3DBI + rgB8RtK4TOzc4z/AAhvQVyP7Yvxqv8A4S/sv/EDXvCMkQ1TQtEnubFrltsfmgqEMn96PLYG + PvHg1/N7+2f8V/iN8UvElhoX7U/j2W40HxVfm8xZwSx2kl0EMRieGVikLR5K7gPujjg15tHC + 1MNB 4ijR54Qdm+idtLndmc4yt9Yn+8lt/wAA/e/9k/8AaB079ofTLjxPptzp17b60S8Nzpl + wbmxvVt2a 3MsErcshdJR/tcnoa0PFmiJrniS9uo3nZJJSFZXIDAfKD+IGa+ff+CWvw+8VeA + P2Jf2e9d8UXYuU 8Q+DLcAmNTsgR5BZJkdSLKO359c19c+HLSFtFgMyxu2DlnQbjyetffYR/ + u1NrXb7m0fN4iSp1OVb Dda/4KE+Cvgzby2/iTwv4x8EWcL+WG1HwtJptupHQK4TY/XtwK82 + 1T/gr94O8R6tFo/geeHVdZ1t nttEgs3+0S6rdDGLYQg8kqpbII2bdx4VhXu/g742Q6hZm3u + 7hrceXsdCG2jtjJ+U1xHiv9lD4VfF nxveXet+EdE0zxJDaxyWesaXaRw3ce5jsukeJRtuIp + VVklTEi4GW8suD+Z4vK8YqfNQraLyV38/0 t8z6vA5rhfaf7TR+ab/I8K/4LBfETxl8Hv2LN + H0q10wXkPi/XoZfHeq27iT+x7WL/TG2xn5nLPHH CJT8qLETjL1+MfxN/a3tfEDSyST2sUcy + NG0JYsgh2/djYHCAAcHGCBuxgMD+qn7VfxOuj8KLjQf2 ifF2i23iMajceDdanuRBBp9xcpF + G4ZxLlUW5iaGZAoXBkG0jAr4Q1r9j/wCA3wFuoZPFF38OP7Tm uJp0g1e7jmkZFxwyzuwUBg + cyEBT0LV81VzqpQfJCm3/wD2MZllV83LHmW91trsfFl/8AHqa+04W+ h3s89xYuZbdLUedgN + jKsiqdxIC54zwM5IzW9ongr44fE+HzPhR8OPiRqYf8Ae+ZbaHdKquAWcLvj +bh0bAK45wa+ + x/Cv/BQjUPAHhDVYfhP8KfDsem6JI9jFq6+IZIvC8BkHmRBUsFSA3EuJWSJ503fN txsctle + Ev+Cy3xE8Z/C69YJ4S0Z7ixuLK+u9K0IvqWkxyq0R+xSXU8qS7Hj3/OjttDfNuZTSp4/F Yl + +7C3rJX+655To16TSdO3rp+Vz9DP2s/HvijX/+COuo2d9A3i74iXvgrS9L1fSdMK6jqY1WT7 + It xBJbW++QOsjsrLw3BJPFfk38ItK0j4p/tIaX8Mfi74bsfEs+tasPDM+ieITJYmz1S7X7P + byRvC6S RYkZIGY4eNt25T5YY/d2h/ts+G/28f8Agmn8SY/HJ0Lwx+0J4R0GTXFufD1vHpOp + 362ZM/2zSbzA l3GGBkePLSJghlPmHP5L6h+07ZfGeS58U/ErTru18b6vAJrzVNLmWGDU7tS + omurm2kjISSZN7yTQ uB56RuIxvOP0jhbF+0o1cPXceWT9Xtb7tjzuJqTqeyrNarsf1N638H + 7X4T/Afwt4W8H2UVpZfDnT LHT7G3iZpYoobO2S12IWJZlEanBb5iACecivG9N/ap8G2tr5V + 9rAhmid0eOd3jkQhiCCo6D09sV8 Ufsof8HJY8B+B/DGkfto6DqfifRooF0u88V6M3m39gpU + Ilxc2hbF1G6nLSRFZF8tvlY/KPqnT/ij +zZ8U9OtvENp47+Fetw6vDHcRXw8U2cDXKFRtZ4 + pXWSN8AbkdVZWDBgCCK+hwcZYJPC1baWaa2af Y+UlONV+0a3Ifhx8Z73+2bO21qeJYbskQN + cBm8xPTyVyWf6K2PavWPjR8a9R+G2jaDfeCtEiku70 fZDcanqCW1vabyqb5UiQuFPykAn+F + sgHIHyr4W+KukaRqrvYiKNvODPJGxEjuQBnJ5PQjPpXpX7Q 37Q2if8ADPus/FXVpJLKD4QD + b4htVCrDqljcQmS1HLKglFyyIhYhf3kisSHxXysKyjScr7Hvzpvn SaPD/wBrDx7ceA9bk0r + Q0sPEVh47sb298RaPdSi4j1+WKSG2uLYLMrIzoL6xntmZVSL7Iof5JmZc r9oK/wBH/Z90vV + ND+L/wV/4Wdpnifw2tpomuaYotdb0/W7S3EKzSSwyLcfZJIvs8rPbFmgkhbbCw nUJ4N4B8E + 3Xx3vYr/wCL3j3w9Z3XhXTry41Tw7aak8N5bmQxPPFfagBItohWGJSkaNI27hirZq7o 3x60 + a4+IetXPwqv/AA7JqFxc/Yrq31ia7ub63fzDgNbIvlqjISsbpIjFUOADvFfndZYrB0PrVSNl + dq/XXX0/G/kfouWPLc2rPL+a8+VO17fD0v8AoR/tE/GqXwN+wZpWn/GPR10m7EEqabpMWkw + xwf2j Kju11LZW4Cm8k3yPNO48w/MGIA2j8rPCvxck8L6VdWejRyWf2u2uIjL5h3qHfaCe4P + 3yfbiv1Q/a t8XXHxJ+Ekq6Dp0lzqmnea9tE0WdzvFJExHZgwZ1z/EvXOa+Ik/4JLeLfEHhK + 61Sx1vRNNvo5Jrm 4t7vdBHb2qx/PKWTd84JC7SANpB6mufCYunL45auxWeYapFxWFjaMen5 + /wDBPN/A/wARNVv73wvo fwue2uPEWp6pFFYwblSGN2EkTv8A9MI1IiYvwm1CSMK2ej/aF/Y + n+Jnww8c+Nr2y+H+uX/hzQ9dv 9NuNY0LTZrjR/tFq8a3DxOqH9yskmFfhDuZR9w12f7EHwo + i8PePpPHNpbafFaWDSrayxx74JLeG3 eANHuJLG5ncgDPIT3xX2xovxd8VJ4rudQ8O3d7YC2 + sfIJEsc1wXilEs0kYkYnKiTygf3e7bIVYEH P3mTZdGMY1pSak+lloflOccRSpzlh4wUkut3 + o/8Agn5geEfFMmoaFcxaYzTTWuJCYlZ5IW+bcCpO fm2sTnjDMuAGxXc6P+zn4Z+IWnprTwT + acdQLS/ZorqIpH8xHGITjOM4ycZxX3H4++MnwJ/a+17Wt K+PXw312CfQpEttS+J3h3w+bq9 + tT5asuozXFmkSyIsqvDLE0VzuePIlRDuT4y+LH7JfxA/Z48fX3 hHSfDWv+N9P0wRS2Ov8Ah + vWjDpesWs8SXEFxDGYWMe+KaNmQklXLA9K+1w+Z0KdNQqrnS8jyaU/r Ert+zdr6tar+vmfX + 3w++Lnib4n3V8fh1pFzqEenAySu08cNpYKpOGuJ952YHRWxkdOtekfBP9t/Q /hXrl/qHxw0 + zwx4gi04Rajpk0Wo2c9v4f1C0VpF1N7eWWX7WbeITSxI0RaOSPzIkLqrL1vh/9kC7 8Tazps + H7Rc+t2vgW5uFt4LTSNItrjT7SRw7LKp0x5LO7iXCgqXQgdlbICW/7Vnw9+AOq3cJ8O6L/ A + MKt1ELaaR8QfDOmmbUL1ysvmWzaOiGSFN8Uqbg5BG1vvMa/Nfr0cI4xqTS5tubZ9fTp3Pq61 + ZSf JbX7vz6ng37Vf7ct94/8U69eXlzrZ8OaPaQ3Fva3qSwXWrXl2m23a7LYMzyxb5zPycKW + znFfEXw0 +OXjr4W6/wCIvGXwk18W+qa9rRtLmJ41ktNRWLOyPyWGAI1kO1h0BIFfbX/BXfw + TrXxY8LeFfiB8 NZ1uvCdtZJCyWkBhnslnBaGZ967ijJJtww/c8g/eFfJ2i+BrPRvBej6faR + SR21szklgPnYtuLMRz tLseD0wAeldTxbziHvWt2X9eR5NXDyyDEOpCT5pWs3vY+hP2RvB3x + Q/bD8OTeKvH2rre6fa6nPaX Ftp8T2c0flOu2QtITkEs42r24q5+3Np83h650v4OfD13lu/F + bWy+JdQIeSa3sZZPMis1kzwZRG8r EcAKAetfWX/BG/wJbaL+yPpOq/KZ9dmuNRuV+8GdrqV + wRnvtUDNfOf7c2v2tj/wUK8eQ6ne6Z4Zj ENhAuoahKkVnYq2nWq72Zm2hiWfgr2rxsDk1CW + LVSWy18tD7bNM5rUsnUr/vJJa97/qca1xbXXxX 8B/D74fWqwWcV3FdX0UJCLBa2EfmJEB90 + OZfK5PACe9cb+1t8Stf+CPxVv49C1S1srix0a6WO4lQ YWC5uNsAEX3GJkjJKgYG0N2zWX8e + vCOlfCGxtdH8IeJTrPirxvbT6asenSC7kMNyYmuJYViAzvRX +Yv/ABAdsDJ8afsMfFT4lXJ + 8f+M9OjuNNQWmm6XFd3gl3W4EdqkkoQnHyuSwz1znnNfSY3MYYWLi 3Z36P/I/NsBlVbMmpU + 4N730/zPoD9lme3+CHhrw82oa82gazLYAS6e97HLJZRzItxPcvcKdsAWV3 cg4bEx5YsFHrH + g3/AIK7eFPC/hq1sNC1b4lala2wZUuobOK2inyxJaKOa4WQRkk7d6hiu0kc1u/s /f8ABule + 6n8Ira/8efEK+t/Eh23Mdvp9pFNpKyhi6vJFOn79gcfeY4IOMcVynif/AIJb/teeHNfu rLw + t4F+H/ibT7d8QapBcG0S8U87vJyQjckMAcbgcYHFdVLN3FJSjZdLxcr/cddfg/Ey96VnfopJ + W 9dV+Z+o/hr9n74XfDP4SP4j/AGE4rfNx5cNpY3us3iWVp5j70W5gMgkZVbG1SwxuOSydeC + /a+/Yq 1r49x2etfCSHTZrnStFXS9Q8Nx6VBptzDH5yTLPpt3bJGruJIm24ffGHbynQuwf4M + 1f4w+IPBf7S Og+HvDV1bW+kX+qNFcwGwt5DOvkyS/NI8ZcneAck56jOCRX2Z4t+OvjD4O/s + yazd/DTxDqWkzvf2 0QMUm5YldV3eWrZWMnJBZADjjOOK8auoVMP7KrH7nY9TEUFjLxm2103 + 0/Fo+a/B0t/4Z+HuoaV8U H1S41S2uLjSpm1m2CXbRoybVuFCIwYIwR3dQXZGbGDXzjrfgnw + 3+0L4m1b4XWF9p/hPx5ZD+1fCX iCKyilg8Q2iL++sbqLbmTy8krs/eFfKKn91Jn0n4v+MNW + 8QXF3rPiPU7/U9W1LVpLi7u724e5muX TyUQu0hJYKgCgHgKAAMCvnzwb/pn7T3w7up8+eni + GyCsvy7fkc8AcA/Owz1wcdABX59LMHgMV7Gk 3ZO2+uuuve1z9MynKaeKyymq9paW1R+m/wD + wT6/Z/T4M/s7aJ4fub6O5mtLaNBceWUMgKFshWJKZ 3fd7ZxX5Zf8ABfz4V3a/t0XOoaTcxR + 6d4i0LTLqQTymKKQpB5Dt83y7g0OcgdTk81+tHwZvZbCx8 qzby44Y2aNVAwmBxj0HJ46du1 + fAX/By7otq3hP4Ya00KnVLS9OkxXHO5bWSJZGix0I3ksCRlSzFS Nxz9tRq89BSkjwc4wvuu + nB2Stb8jwr/gi18KNJ1Xxh4v8SeILV7x9NvLaK2e6mVmDrE0kmGHX59o 47AZr9R/jt8V/AP + hb4I6jpN/fWMF1Fp3mBHOyN9rFo44iQBIwdFO0ZYZ4IHFfnh+yR4ftPBX7M3g PU/Csb2Woe + I7ZLzUp45W33cpdgXbJ64AHGOAB0r7Q8N3kknga484iQm3dcyKHIB3ZAJ6Z9q8atiW lJJan + pZTho0qUFJtrfsfor+z/wCKLfW/hno1ygB+1WUUyue4dQ3QgEDnof1616IbLzsMZbJcgcPa + F2/E7xn8q8D/AGLYwPBvhi3O4wvZQgoSSAAqYAz0HJ4FeH+Pfjl4suPGWotLrd2T5xHAUAAc + AAAc AACv0nhTLKvEkZWmoqKW6ueHxPmdLh5Qm4uXO3s7H//Z +ITEM3.X-ABDATE;TYPE=pref:2000-12-31 +ITEM3.X-ABLABEL:_$!<Anniversary>!$_ +X-ABSHOWAS:COMPANY +X-ABUID:73FD0F46-DE18-4F1F-AA2C-59E8738B4249:ABPerson +UID:a nice UID +REV:date +END:VCARD HTTP/1.1 200 OK @@ -598,6 +1101,43 @@ X-DESCRIPTION;CHARSET=utf-8:außerdem CATEGORIES:uni REV:date END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_3_0.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +N:Test-Roßdeutscher;Jörg;;; +FN:Jörg Test-Roßdeutscher +ORG:Factor Design AG; +EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref: + joerg.rossdeutscher@factordesign.foo +EMAIL;TYPE=INTERNET;TYPE=WORK:joerg@factordesign.foo +EMAIL;TYPE=INTERNET;TYPE=HOME:joerg.rossdeutscher@gesindel.foo +EMAIL;TYPE=INTERNET;TYPE=HOME:raettchen@gmail.bar +TEL;TYPE=WORK;TYPE=pref:040 999999432571-43 +TEL;TYPE=CELL:017799999978200 +TEL;TYPE=HOME:040999999793017 +ITEM1.ADR;TYPE=WORK;TYPE=pref:;;abcStraße 58;Hamburg;;20357;Deutschland +ITEM1.X-ABADR:de +ITEM2.ADR;TYPE=HOME:;;Gayens Weg 9;Hamburg;;22761;Deutschland +ITEM2.X-ABADR:de +NOTE:Technik\, Web\, DTP\, SysAdmin\, €-Vermögensverwalter +ITEM3.URL;TYPE=pref:www.gesindel.baz +ITEM3.X-ABLABEL:_$!<HomePage>!$_ +ITEM4.URL:www.factordesign.foo +ITEM4.X-ABLABEL:_$!<HomePage>!$_ +BDAY;VALUE=date:1969-06-20 +X-ABUID:58AB933D-81D3-4095-8CB5-A63431AC934D:ABPerson +UID:a nice UID +REV:date +END:VCARD HTTP/1.1 200 OK From f476675b1063e08a01d91e021d0b8eef3eda1c91 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Fri, 5 Feb 2021 10:31:58 +0800 Subject: [PATCH 21/37] CI: do not clobber apache logs and include "latestphp" in the test names --- .gitlab-ci.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5d1ba312..62991f75 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -73,7 +73,8 @@ test: - useradd testrunner - cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling" ./run_regressions.sh all x' after_script: - - cp -r /var/log/apache2 apache2_log + - mkdir -p apache2_log + - cp -r /var/log/apache2 apache2_log/test test_bullseye: @@ -121,7 +122,8 @@ test_bullseye: - useradd testrunner - cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling" ./run_regressions.sh all x' after_script: - - cp -r /var/log/apache2 apache2_log + - mkdir -p apache2_log + - cp -r /var/log/apache2 apache2_log/test_bullseye build_buster_latestphp: @@ -149,7 +151,7 @@ build_buster_latestphp: paths: - '*.deb' -test_buster: +test_buster_latestphp: stage: testall image: php:apache-buster artifacts: @@ -197,10 +199,11 @@ test_buster: - useradd testrunner - cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling" ./run_regressions.sh all x' after_script: - - cp -r /var/log/apache2 apache2_log + - mkdir -p apache2_log + - cp -r /var/log/apache2 apache2_log/test_buster_latestphp -test_stretch: +test_stretch_latestphp: stage: testall image: php:apache-stretch artifacts: @@ -247,4 +250,5 @@ test_stretch: - useradd testrunner - cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling" ./run_regressions.sh all x' after_script: - - cp -r /var/log/apache2 apache2_log + - mkdir -p apache2_log + - cp -r /var/log/apache2 apache2_log/test_stretch_latestphp From 31fbfe5d88666961e964c65c7ae766a371b468fd Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sat, 6 Feb 2021 19:46:35 +1300 Subject: [PATCH 22/37] Add test for anyof --- .../2044-REPORT-addressbook-query.result | 131 ++++++++++++++++++ .../2044-REPORT-addressbook-query.test | 45 ++++++ 2 files changed, 176 insertions(+) create mode 100644 testing/tests/carddav/2044-REPORT-addressbook-query.result create mode 100644 testing/tests/carddav/2044-REPORT-addressbook-query.test diff --git a/testing/tests/carddav/2044-REPORT-addressbook-query.result b/testing/tests/carddav/2044-REPORT-addressbook-query.result new file mode 100644 index 00000000..766a05ec --- /dev/null +++ b/testing/tests/carddav/2044-REPORT-addressbook-query.result @@ -0,0 +1,131 @@ + + + + /caldav.php/user1/addressbook/andrew_mcmillan.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +TEL;X-EVOLUTION-UI-SLOT=3;TYPE=CELL:+64 22 123 4567 +TEL;X-EVOLUTION-UI-SLOT=2;TYPE=HOME,VOICE:+64 4 123 4567 +TEL;X-EVOLUTION-UI-SLOT=1;TYPE=WORK,VOICE:+64 22 123 4567 +EMAIL;X-EVOLUTION-UI-SLOT=2;TYPE=HOME:andrew@mcmillan.net.nz +EMAIL;X-EVOLUTION-UI-SLOT=1;TYPE=WORK:andrew@morphoss.com +FN:Andrew Watson McMillan +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/donald_kelly.vcf + + + some valid etag + BEGIN:VCARD +FN:Donald Kelly +EMAIL;TYPE=internet:donald@example.co.nz +TEL;TYPE=work:+64 4 347 4747 +TEL;TYPE=cell:+64 2 1234-4321 +VERSION:2.1 +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/F06EC844-EACD-4ADF-8823-588603991E04-ABSPlugin.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +FN:Morphoss Ltd +EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref:andrew+davical@morphoss.com +TEL;TYPE=WORK;TYPE=pref:+64272332426 +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/van_houtte.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +FN:Vincent VAN HOUTTE +TEL;TYPE=CELL,VOICE:0486 11 22 33 +TEL;TYPE=HOME,VOICE:052 11 22 33 +TEL;TYPE=HOME,FAX:052 44 55 66 +EMAIL;TYPE=HOME:vvh@gmail.no +TEL;TYPE=WORK,VOICE:052 11 22 33 +TEL;TYPE=WORK,FAX:052 44 55 66 +EMAIL;TYPE=WORK:vvh@gmail.no +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/mustrmahn.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +FN:Überwerbung GmbH +EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref:karl@mustermann.de +TEL;TYPE=WORK;TYPE=pref:+49 30 1234567 +TEL;TYPE=CELL:+49 172 1234567 +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/J%C3%B6rg_Test-Ro%C3%9Fdeutscher_3_0.vcf + + + some valid etag + BEGIN:VCARD +VERSION:3.0 +FN:Jörg Test-Roßdeutscher +EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref: + joerg.rossdeutscher@factordesign.foo +EMAIL;TYPE=INTERNET;TYPE=WORK:joerg@factordesign.foo +EMAIL;TYPE=INTERNET;TYPE=HOME:joerg.rossdeutscher@gesindel.foo +EMAIL;TYPE=INTERNET;TYPE=HOME:raettchen@gmail.bar +TEL;TYPE=WORK;TYPE=pref:040 999999432571-43 +TEL;TYPE=CELL:017799999978200 +TEL;TYPE=HOME:040999999793017 +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/test_multiple_email.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +FN:CardDavClient Test212420682 +EMAIL;TYPE=HOME:john6doe@example.com +EMAIL;TYPE=WORK:doe6@example.com +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2044-REPORT-addressbook-query.test b/testing/tests/carddav/2044-REPORT-addressbook-query.test new file mode 100644 index 00000000..eb7ed36d --- /dev/null +++ b/testing/tests/carddav/2044-REPORT-addressbook-query.test @@ -0,0 +1,45 @@ +# +# Request a REPORT +# +# param-filter should filter on parameter value, anyof says any +# filter can match. +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user1/addressbook/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +# HEAD + +BEGINDATA + + + + + + + + + + + + + + + WORK + + + + + WORK + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ +REPLACE=/^UID:.*$/UID:a nice UID/ From d822cdf4d04d9bb0ddff74bcdd01240de920b2c7 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sat, 6 Feb 2021 19:51:37 +1300 Subject: [PATCH 23/37] Only return what we're testing, makes it easier to understand regressions --- .../2041-REPORT-addressbook-query.result | 471 ------------------ .../2041-REPORT-addressbook-query.test | 6 +- ...ORT-carddavclient-ParamNotDefinedSome.test | 6 +- ...REPORT-carddavclient-HasEmailAndIMP.result | 7 - ...2-REPORT-carddavclient-HasEmailAndIMP.test | 7 +- ...-carddavclient-TwoEmailConditionsOr.result | 12 - ...RT-carddavclient-TwoEmailConditionsOr.test | 6 +- 7 files changed, 21 insertions(+), 494 deletions(-) diff --git a/testing/tests/carddav/2041-REPORT-addressbook-query.result b/testing/tests/carddav/2041-REPORT-addressbook-query.result index 19f38610..461fb137 100644 --- a/testing/tests/carddav/2041-REPORT-addressbook-query.result +++ b/testing/tests/carddav/2041-REPORT-addressbook-query.result @@ -7,368 +7,8 @@ some valid etag BEGIN:VCARD VERSION:4.0 -PRODID:-//ALAB//NOSGML Version 0.9//DE -UID:a nice UID -X-ABUID:ADDEEFEF-162A-260A-DEA3-1DA8-8A913187:ABPerson FN:Sven Joseph Klaus Michael Andresen\, Esq. -SORT-STRING:Andresen\, Esq.\, Sven Joseph Klaus Michael -N:Andresen\,Esq.;Sven;Joseph\,Klaus\,Michael;;Dr.\,Prof.;Esq. -X-DISPLAYNAME:Svenni -X-INITIALS:SA -X-INITIALS:SHA -NICKNAME:Svenny\,Sveny -PHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHB - wcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zN - DL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM - jIyMjIyMjIyMjIyMjIyMjL/wAARCAFQATYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAA - AAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxF - DKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW - mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDx - MXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAA - AAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiM - oEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYW - VpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w - sPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiig - AooooAKKKKACiiigAooooAKKKKACiiigAoorM17xBpnhnSZdT1a7S2tY/4m6seyqOpJ9BQBp - 1zuvePPC/hkMNW1q1glXrCrb5f++Fy36V5Hf+L/ABr8SXkj0hz4d8PMSFnOfPnX6jn8FwO2T - U2i/DfwxpKq89r/AGjc9WluzuBP+7938wfrQBr3X7Q+gGRotK0XVr+QdPkVA305J/Ssyb45e - KWbdb/D67WI9PMMrE/iIxXXQSQWsKxW8UcMS9EjUKB+AqT7b70AeeXP7Q3iGxkUXnhKKDP8M - ryIT+Yq/Y/tLWDlRf8Ahu5hHcwXKyfoVX+ddk9ykiFHCsp6qwyDXJa54B8Ma4Hd7BbS4b/lt - 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 - //Z -X-SPOUSE:Manuela Graf -X-EVOLUTION-SPOUSE:Manuela Graf -ITEM1.X-ABRELATEDNAMES:Manuela Graf -ITEM1.X-ABLABEL:_$!<Spouse>!$_ -ITEM2.X-ABRELATEDNAMES:Manager -ITEM2.X-ABLABEL:_$!<Manager>!$_ -ITEM3.X-ABRELATEDNAMES:Aufsichtsrat -ITEM3.X-ABLABEL:_$!<Manager>!$_ -ITEM4.X-ABRELATEDNAMES:Barbara Jonas -ITEM4.X-ABLABEL:_$!<Assistant>!$_ -ITEM5.X-ABRELATEDNAMES:Dominik Maller -ITEM5.X-ABLABEL:_$!<Assistant>!$_ -ROLE:CTO -ROLE:Vorstand -X-MANAGER:Manager -X-MANAGER:Aufsichtsrat -X-EVOLUTION-MANAGER:Manager -X-EVOLUTION-MANAGER:Aufsichtsrat -X-ASSISTANT:Babsi -X-ASSISTANT:Dominik -X-EVOLUTION-ASSISTANT:Barbara Jonas -X-EVOLUTION-ASSISTANT:Dominik Müller -BDAY;VALUE=date:1971-06-21 -X-ANNIVERSARY:2000-01-01\, Testfeier -X-ANNIVERSARY:2003-2-2\, Blafeier -X-EVOLUTION-ANNIVERSARY:2000-01-01\, Testfeier -X-EVOLUTION-ANNIVERSARY:2003-2-2\, Blafeier -IMPP:aim:balbala -IMPP:aim:hakunamatata -X-AIM:balbala -X-AIM:hakunamatata -EMAIL;TYPE=INTERNET:sven@andresen.de -EMAIL;TYPE=INTERNET:andresen@andresen.de -TEL;TYPE=WORK,VOICE:+49 89 11 11 111 -TEL;TYPE=WORK,VOICE:+49 234 222 222 -TEL;TYPE=WORK,FAX:+49 7373 73 -TEL;TYPE=PAGER:+49 160 073 727 272 -TEL;TYPE=PAGER:+49 2626 26 -TEL;TYPE=CELL,VOICE:+49 39292 82 -TEL;TYPE=CELL,VOICE:+49 7272 722 -TEL;TYPE=PREF,VOICE:+49 12 34 567 -TEL;TYPE=CAR,VOICE:+49 8292 38 383 -TEL;TYPE=HOME,VOICE:+49 7327 272 727 -TEL;TYPE=HOME,VOICE:+49 7272 7282 -TEL;TYPE=HOME,FAX:+49 1010 1 -ITEM6.TEL;TYPE=VOICE:+49 8373 6262 -ITEM6.X-ABLABEL:_$!<Other>!$_ -ITEM7.TEL;TYPE=VOICE:+61 27 28 73 246 -ITEM7.X-ABLABEL:_$!<Other>!$_ -ITEM8.TEL;TYPE=FAX:+49 9382 3424 -ITEM8.X-ABLABEL:_$!<Other>!$_ -TEL;TYPE=ISDN:8797 -TEL;TYPE=ISDN:98732947234 -TEL;TYPE=X-EVOLUTION-RADIO:+49 88 298 723 498 32 -TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 -TEL;TYPE=X-EVOLUTION-TELEX:+49 2763 382 882 28 82 -TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 -TEL;TYPE=MAIN:+49 6237 623 723 84 76 -TEL;TYPE=MAIN:+49 9324 32 479 234234 -TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 -TEL;X-EVOLUTION-CALLBACK:+49 7363 6363 -TEL;TYPE=MODEM:+49 8383 73 723 -TEL;TYPE=MODEM:+49 7363 6363 -TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373 -TEL;X-EVOLUTION-TTYTDD:+49 8378 33 -TEL;X-QUICKDIAL:13355 -ADR;TYPE=WORK;CHARSET=utf-8: - PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Bayern;94036;Deutschland -ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung; - Weisenstraße 13;Irgendwo;Niedersachsen;34332 -ADR;TYPE=HOME;CHARSET=utf-8:;;Weisenstraße 13 ;Irgendwo;;34332 -ADR;TYPE=X-OTHER:;;Irgendwo;Nirgendwo;Sonstwo;0000;Antarktis -ORG:andresen AG;R&D;;XXX\, 033 -ORG;CHARSET=utf-8:andresen Holding;Geschäftsleitung;;-\, 0223 -X-HOUSE;TYPE=WORK:XXX -X-HOUSE;TYPE=WORK:- -X-ROOM;TYPE=WORK:033 -X-ROOM;TYPE=WORK:0223 -LABEL;TYPE=WORK:1. Stock\, links -LABEL;TYPE=WORK:oder rechts -URL;TYPE=WORK:http://www.andresen.de -URL;TYPE=WORK:http://www.andresens.de -ITEM9.URL;TYPE=HOME:http://www.zuhause.de -ITEM9.X-ABLABEL:_$!<HomePage>!$_ -ITEM10.URL;TYPE=HOME:http://www.andresen.de/~andresen -ITEM10.X-ABLABEL:_$!<HomePage>!$_ -X-BUSINESS-CATEGORY:IT -X-BUSINESS-CATEGORY:Development -KEY;ENCODING=b;TYPE=X-CERT:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2R - ENDQXlXZ0F3SUJBZ0lKQUpUeXNHNDV0V3BZTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdiTVFzd - 0NRWUQKVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFTk1Bc0dBMVVFQ - nhNRVEybDBlVEVoTUI4RwpBMVVFQ2hNWVNXNTBaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUS - FJrTVF3d0NnWURWUVFMRkFOU0prUXhGakFVCkJnTlZCQU1URFZOMlpXNGdRVzVrY21WelpXN - HhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjJaVzVBWVc1a2NtVnoKWlc0dVpHVXdIaGNOTVRBd - 05qSXpNRGd5T0RFNFdoY05NVEV3TmpJek1EZ3lPREU0V2pDQm16RUxNQWtHQTFVRQpCaE1DU - VZVeEV6QVJCZ05WQkFnVENsTnZiV1V0VTNSaGRHVXhEVEFMQmdOVkJBY1RCRU5wZEhreElUQ - WZCZ05WCkJBb1RHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU1NQW9HQTFVR - UN4UURVaVpFTVJZd0ZBWUQKVlFRREV3MVRkbVZ1SUVGdVpISmxjMlZ1TVI4d0hRWUpLb1pJa - HZjTkFRa0JGaEJ6ZG1WdVFHRnVaSEpsYzJWdQpMbVJsTUlHZk1BMEdDU3FHU0liM0RRRUJBU - VVBQTRHTkFEQ0JpUUtCZ1FDdEtPWnJBOXBjdjJWUVpkSEg4YmhhCmZqMlZWMW9HakxjTkt3M - ktWVkJ6anphQVlyaU9HcnBNWDdhcW1oL3pjNHhBMTVDc1JJYjJoQXpPcDlTeldvQ00KbXhZc - FN5eG8rbUJHUGRYOVcvTStYcStSYUtGSURpdHZyL0xBb2I5N0oveWp5R0JDYU4vdExvdG9ZN - 3F5TjAxUQpWTkRYNkJkcS9GZTFjcUdhcnFvdzNRSURBUUFCbzRJQkJEQ0NBUUF3SFFZRFZSM - E9CQllFRkhNaFBPR255aENtCmxWcHlCZHhCTVczZ2drbS9NSUhRQmdOVkhTTUVnY2d3Z2NXQ - UZITWhQT0dueWhDbWxWcHlCZHhCTVczZ2drbS8Kb1lHaHBJR2VNSUdiTVFzd0NRWURWUVFHR - XdKQlZURVRNQkVHQTFVRUNCTUtVMjl0WlMxVGRHRjBaVEVOTUFzRwpBMVVFQnhNRVEybDBlV - EVoTUI4R0ExVUVDaE1ZU1c1MFpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNUXd3CkNnW - URWUVFMRkFOU0prUXhGakFVQmdOVkJBTVREVk4yWlc0Z1FXNWtjbVZ6Wlc0eEh6QWRCZ2txa - GtpRzl3MEIKQ1FFV0VITjJaVzVBWVc1a2NtVnpaVzR1WkdXQ0NRQ1U4ckJ1T2JWcVdEQU1CZ - 05WSFJNRUJUQURBUUgvTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRHQkFGcnVidGpoWVB1RERHV - VpQRTQraUo2a3FmdEtXWDFJVzdmTXdtc3BRUWt5CitXUThSL3AxbURrc3ZEQ3hDYWp2YVduS - VI2dGIwbmtCMTFFNmQ0dDhkMkxWTTE4M3dDUWJtMDRJS05mdkRKOXQKUE4vdHBVTkJrc0Vka - XBlMEM1SEgyMnY0RitSSzVUK1lqM1J6VHZmOTdROVMzTzF3eE5lZkt0NXVUNFFxNUZtdAotL - S0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== -CALURI:http://caldav.andresen.local/sja FBURL:http://caldav.andresen.local/freebusy -CAPURI:http://caldav.andresen.local/access -CALADRURI:http://caldav.andresen.local/access -X-DESCRIPTION:Beschreibung -X-DESCRIPTION;CHARSET=utf-8:außerdem -NOTE:Nur so ein Test! -CATEGORIES:bla,blubb,test,hihi,oops -REV:date END:VCARD @@ -382,119 +22,8 @@ END:VCARD some valid etag BEGIN:VCARD VERSION:4.0 -PRODID:-//ALAB//NOSGML Version 0.9//DE -UID:a nice UID -X-ABUID:A93F52CB-C15F-1F34-2C49-7A67-0971277F:ABPerson FN:Hans Dieter Schmidt -SORT-STRING:Schmidt\, Hans Dieter -N:Schmidt;Hans Dieter;;Dr.;Esq. -X-DISPLAYNAME:HaDi Schmidt -X-INITIALS:HW -NICKNAME:HaWe -X-SPOUSE:Maja Schultze -X-EVOLUTION-SPOUSE:Maja Schultze -ITEM1.X-ABRELATEDNAMES:Maja Schultze -ITEM1.X-ABLABEL:_$!<Spouse>!$_ -ITEM2.X-ABRELATEDNAMES:Barbara Jonas -ITEM2.X-ABLABEL:_$!<Assistant>!$_ -ITEM3.X-ABRELATEDNAMES:Klaus Timm -ITEM3.X-ABLABEL:_$!<Assistant>!$_ -ROLE:Projektleiter -X-ASSISTANT:Barbara Jonas -X-ASSISTANT:Klaus Timm -X-EVOLUTION-ASSISTANT:Barbara Jonas -X-EVOLUTION-ASSISTANT:Klaus Timm -BDAY;VALUE=date:1977-12-10 -BDAY;VALUE=date:1975-11-11 -DDAY;VALUE=date:2007-01-02 -X-DDAY;VALUE=date:2007-01-02 -X-ANNIVERSARY:2000-02-01\, -X-ANNIVERSARY:2001-02-02\, -X-EVOLUTION-ANNIVERSARY:2000-02-01\, -X-EVOLUTION-ANNIVERSARY:2001-02-02\, -X-EVOLUTION-BLOG-URL:blog.diesistmeineip.de -ITEM4.URL:blog.diesistmeineip.de -ITEM4.X-ABLABEL:_$!<Other>!$_ -URL;TYPE=WORK:http://www.tu-hh.de -URL;TYPE=WORK:http://www.telekom.de -ITEM5.URL;TYPE=HOME:http://www.hadi-schmidt.de -ITEM5.X-ABLABEL:_$!<HomePage>!$_ -IMPP:aim:477826262 -IMPP:aim:aaab3ttebb3 -IMPP:icq:972398472394 -IMPP:icq:8972364872634 -IMPP:ymsgr:mailaddr@yahoo.co.uk -IMPP:ymsgr:yahoo@yahootar.bla -IMPP:xmpp:jabjab187383 -IMPP:xmpp:jabberwookie@starwahrs.co.com -IMPP:msn:blablubb@langedomain.org -IMPP:msn:738246832746 -IMPP:skype:hadi.schmidt-skype -IMPP:skype:askjdhasd -IMPP:ichat:ichatichat -IMPP:ichat:second-ichat -IMPP:nm:netnetmeetings -IMPP:nm:vielleicht@eine.email.de -IMPP:gtalk:gooogletalk -IMPP:gtalk:googletalk2 -IMPP:sip:ipphon-addr.woauchimmer.de -X-AIM:balbala -X-AIM:hakunamatata -X-AIM;TYPE=WORK:972398472394 -X-AIM;TYPE=WORK:8972364872634 -X-ICQ:972398472394 -X-ICQ:8972364872634 -X-JABBER:jabjab187383 -X-JABBER:jabberwookie@starwahrs.co.com -X-MSN:blablubb@langedomain.org -X-MSN:738246832746 -X-SKYPE-USERNAME:hadi.schmidt-skype -X-SKYPE-USERNAME:askjdhasd -EMAIL;TYPE=INTERNET:ich@hadi-schmidt.de -EMAIL;TYPE=INTERNET:hadi@telekom-d.de -TEL;TYPE=WORK,VOICE:+49 9823 9084 -TEL;TYPE=WORK,VOICE:+49 234 234 234 -TEL;TYPE=WORK,FAX:+49 7373 73 -TEL;TYPE=PAGER:+49 2626 26 -TEL;TYPE=CELL,VOICE:+49 7272 722 -TEL;TYPE=PREF,VOICE:+49 12 34 567 -TEL;TYPE=CAR,VOICE:+49 8292 38 383 -TEL;TYPE=HOME,VOICE:+49 7327 272 727 -TEL;TYPE=HOME,FAX:+49 40 812 387 21 -ITEM6.TEL;TYPE=VOICE:+49 8373 6262 -ITEM6.X-ABLABEL:_$!<Other>!$_ -ITEM7.TEL;TYPE=VOICE:+49 7272 72 -ITEM7.X-ABLABEL:_$!<Other>!$_ -TEL;TYPE=ISDN:4234234235 -TEL;TYPE=ISDN:98732947234 -TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832 -TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 -TEL;TYPE=X-EVOLUTION-TELEX:+49 38 288 228 82 -TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 -TEL;TYPE=MAIN:+49 6237 623 723 84 76 -TEL;TYPE=MAIN:+49 9324 32 479 234234 -TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 -TEL;TYPE=MODEM:+49 8383 73 723 -TEL;X-EVOLUTION-TTYTDD:+49 7373 73 -TEL;X-EVOLUTION-TTYTDD:+49 8378 33 -ADR;TYPE=WORK;CHARSET=utf-8: - ;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg;Hamburg;21373;Deutschland -ADR;TYPE=HOME;CHARSET=utf-8:;;Weisestraße 13 ;Irgendwo;;33443 -ADR;TYPE=X-OTHER:;;Nirgendwo -ORG:Uni Harburg;;;033 -X-ROOM;TYPE=WORK:033 -LABEL;TYPE=WORK:1. Stock\, links -LABEL;TYPE=WORK:oder rechts -X-BUSINESS-CATEGORY:IT -X-BUSINESS-CATEGORY:Development -CALURI:http://davical.hadi-schmist.home/hadi FBURL:http://davical.hadi-schmist.home/freebusy -CAPURI:http://davical.hadi-schmist.home/cap -CALADRURI:http://davical.hadi-schmist.home/access -X-DESCRIPTION:Beschreibung -X-DESCRIPTION;CHARSET=utf-8:außerdem -CATEGORIES:uni -REV:date END:VCARD diff --git a/testing/tests/carddav/2041-REPORT-addressbook-query.test b/testing/tests/carddav/2041-REPORT-addressbook-query.test index 65e78ba9..727bfe51 100644 --- a/testing/tests/carddav/2041-REPORT-addressbook-query.test +++ b/testing/tests/carddav/2041-REPORT-addressbook-query.test @@ -31,7 +31,11 @@ BEGINDATA - + + + + + diff --git a/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.test b/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.test index 8080b181..1378a525 100644 --- a/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.test +++ b/testing/tests/carddav/2051-REPORT-carddavclient-ParamNotDefinedSome.test @@ -21,7 +21,11 @@ BEGINDATA - + + + + + diff --git a/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result b/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result index 6c0b17e8..becfed73 100644 --- a/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result +++ b/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.result @@ -7,15 +7,8 @@ some valid etag BEGIN:VCARD VERSION:4.0 -PRODID:-//Sabre//Sabre VObject 4.3.3//EN -UID:sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b FN:CardDavClient Test1520108081 -N:Test1520108081;CardDavClient;;; -NICKNAME:Jonny3 -ITEM1.EMAIL:foo@ex.com -ITEM1.X-ABLABEL:CustomLabel IMPP;X-SERVICE-TYPE=Jabber;TYPE=HOME:xmpp:foo@example.com -REV:date END:VCARD diff --git a/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.test b/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.test index 8d2463b7..fbd50767 100644 --- a/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.test +++ b/testing/tests/carddav/2052-REPORT-carddavclient-HasEmailAndIMP.test @@ -19,7 +19,12 @@ BEGINDATA - + + + + + + diff --git a/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result b/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result index 5b808e6f..d8d6fb54 100644 --- a/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result +++ b/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.result @@ -7,15 +7,9 @@ some valid etag BEGIN:VCARD VERSION:4.0 -PRODID:-//Sabre//Sabre VObject 4.3.3//EN -UID:sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13 FN:CardDavClient Test212420682 -N:Test212420682;CardDavClient;;; -NICKNAME:Jonny0 EMAIL;TYPE=HOME:john6doe@example.com EMAIL;TYPE=WORK:doe6@example.com -X-CUSTOMPROP;X-CUSTOMPARAM=WORK:foobar -REV:date END:VCARD @@ -29,14 +23,8 @@ END:VCARD some valid etag BEGIN:VCARD VERSION:4.0 -PRODID:-//Sabre//Sabre VObject 4.3.3//EN -UID:sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36 FN:CardDavClient Test913043917 -N:Test913043917;CardDavClient;;; -NICKNAME:Jonny1 EMAIL:maxmu@abcd.com -X-CUSTOMPROP;X-CUSTOMPARAM=HOME,WORK:foobar -REV:date END:VCARD diff --git a/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.test b/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.test index a8bf4e64..d0f05fd9 100644 --- a/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.test +++ b/testing/tests/carddav/2053-REPORT-carddavclient-TwoEmailConditionsOr.test @@ -20,7 +20,11 @@ BEGINDATA - + + + + + From dca1eb75dac0ff5af479a9fe7e9d303a8b85abf1 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sat, 6 Feb 2021 19:58:51 +1300 Subject: [PATCH 24/37] Enable debug logging in CI --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 62991f75..0766feb0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -58,7 +58,7 @@ test: - mkdir /usr/share/davical/testing/ - cp testing/*.php /usr/share/davical/testing/ - rm /etc/davical/config.php - - cp testing/regression-conf.php.example /etc/davical/regression-conf.php + - cat testing/regression-conf.php.example | sed 's.//$c->dbg.$c->dbg.' > /etc/davical/regression-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php - sed -i '/peer/d' /etc/postgresql/13/main/pg_hba.conf From ccedbd1be96df3d2f5b9cfbbc48f8211a0b6cb2b Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sat, 6 Feb 2021 20:18:58 +1300 Subject: [PATCH 25/37] Include the UID of the card which caused us to hit the RRULE limit This will helpfully assist tracking down issues with recurrence rules. --- inc/RRule.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/RRule.php b/inc/RRule.php index 2e2305e2..14c7bfbe 100644 --- a/inc/RRule.php +++ b/inc/RRule.php @@ -1184,7 +1184,7 @@ function rrule_expand( $dtstart, $property, $component, $range_end, $is_date=nul $expansion[$date->FloatOrUTC($return_floating_times)] = $component; if ( $date > $range_end ) break; if ( $i++ >= $c->rrule_expansion_limit ) { - dbg_error_log( 'ERROR', "Hit rrule expansion limit of ".$c->rrule_expansion_limit." - increase rrule_expansion_limit in config to avoid events missing from freebusy" ); + dbg_error_log( 'ERROR', "Hit rrule expansion limit of ".$c->rrule_expansion_limit." on %s %s - increase rrule_expansion_limit in config to avoid events missing from freebusy", $component->GetType(), $component->GetProperty('UID')); } } // if ( DEBUG_RRULE ) print_r( $expansion ); From 48fcc1f7b589bdc101f55e5a756235a80c04fe2e Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sat, 6 Feb 2021 20:49:59 +1300 Subject: [PATCH 26/37] CI: Turn on debug logging for all the test runs --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0766feb0..a19d9229 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -107,7 +107,7 @@ test_bullseye: - mkdir /usr/share/davical/testing/ - cp testing/*.php /usr/share/davical/testing/ - rm /etc/davical/config.php - - cp testing/regression-conf.php.example /etc/davical/regression-conf.php + - cat testing/regression-conf.php.example | sed 's.//$c->dbg.$c->dbg.' > /etc/davical/regression-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php - sed -i '/peer/d' /etc/postgresql/13/main/pg_hba.conf @@ -184,7 +184,7 @@ test_buster_latestphp: - mkdir /usr/share/davical/testing/ - cp testing/*.php /usr/share/davical/testing/ - rm /etc/davical/config.php - - cp testing/regression-conf.php.example /etc/davical/regression-conf.php + - cat testing/regression-conf.php.example | sed 's.//$c->dbg.$c->dbg.' > /etc/davical/regression-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php - sed -i '/peer/d' /etc/postgresql/11/main/pg_hba.conf @@ -235,7 +235,7 @@ test_stretch_latestphp: - mkdir /usr/share/davical/testing/ - cp testing/*.php /usr/share/davical/testing/ - rm /etc/davical/config.php - - cp testing/regression-conf.php.example /etc/davical/regression-conf.php + - cat testing/regression-conf.php.example | sed 's.//$c->dbg.$c->dbg.' > /etc/davical/regression-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php - sed -i '/peer/d' /etc/postgresql/9.6/main/pg_hba.conf From b8ce995ffa576b1a80ea765855f145babe3e660b Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sat, 6 Feb 2021 21:09:28 +1300 Subject: [PATCH 27/37] CI: Ensure DAViCal can write to log files This appears to be causing PHP 8 to bomb out. --- .gitlab-ci.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a19d9229..07a15c24 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -35,6 +35,7 @@ test: paths: - testing/report.xml - apache2_log/* + - davical_log/* reports: junit: testing/report.xml when: @@ -61,6 +62,8 @@ test: - cat testing/regression-conf.php.example | sed 's.//$c->dbg.$c->dbg.' > /etc/davical/regression-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php + - mkdir -p /var/log/davical + - chown www-data /var/log/davical - sed -i '/peer/d' /etc/postgresql/13/main/pg_hba.conf - echo 'local all all trust' >> /etc/postgresql/13/main/pg_hba.conf - pg_ctlcluster 13 main start @@ -75,6 +78,8 @@ test: after_script: - mkdir -p apache2_log - cp -r /var/log/apache2 apache2_log/test + - mkdir -p davical_log + - cp -r /var/log/davical davical_log/test test_bullseye: @@ -84,6 +89,7 @@ test_bullseye: paths: - testing/report.xml - apache2_log/* + - davical_log/* reports: junit: testing/report.xml when: @@ -110,6 +116,8 @@ test_bullseye: - cat testing/regression-conf.php.example | sed 's.//$c->dbg.$c->dbg.' > /etc/davical/regression-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php + - mkdir -p /var/log/davical + - chown www-data /var/log/davical - sed -i '/peer/d' /etc/postgresql/13/main/pg_hba.conf - echo 'local all all trust' >> /etc/postgresql/13/main/pg_hba.conf - pg_ctlcluster 13 main start @@ -124,6 +132,8 @@ test_bullseye: after_script: - mkdir -p apache2_log - cp -r /var/log/apache2 apache2_log/test_bullseye + - mkdir -p davical_log + - cp -r /var/log/davical davical_log/test_bullseye build_buster_latestphp: @@ -158,6 +168,7 @@ test_buster_latestphp: paths: - testing/report.xml - apache2_log/* + - davical_log/* reports: junit: testing/report.xml when: @@ -187,6 +198,8 @@ test_buster_latestphp: - cat testing/regression-conf.php.example | sed 's.//$c->dbg.$c->dbg.' > /etc/davical/regression-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php + - mkdir -p /var/log/davical + - chown www-data /var/log/davical - sed -i '/peer/d' /etc/postgresql/11/main/pg_hba.conf - echo 'local all all trust' >> /etc/postgresql/11/main/pg_hba.conf - pg_ctlcluster 11 main start @@ -201,6 +214,8 @@ test_buster_latestphp: after_script: - mkdir -p apache2_log - cp -r /var/log/apache2 apache2_log/test_buster_latestphp + - mkdir -p davical_log + - cp -r /var/log/davical davical_log/test_buster_latestphp test_stretch_latestphp: @@ -210,6 +225,7 @@ test_stretch_latestphp: paths: - testing/report.xml - apache2_log/* + - davical_log/* reports: junit: testing/report.xml when: @@ -238,6 +254,8 @@ test_stretch_latestphp: - cat testing/regression-conf.php.example | sed 's.//$c->dbg.$c->dbg.' > /etc/davical/regression-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/mycaldav-conf.php - ln -s /etc/davical/regression-conf.php /etc/davical/myempty-conf.php + - mkdir -p /var/log/davical + - chown www-data /var/log/davical - sed -i '/peer/d' /etc/postgresql/9.6/main/pg_hba.conf - echo 'local all all trust' >> /etc/postgresql/9.6/main/pg_hba.conf - pg_ctlcluster 9.6 main start @@ -252,3 +270,5 @@ test_stretch_latestphp: after_script: - mkdir -p apache2_log - cp -r /var/log/apache2 apache2_log/test_stretch_latestphp + - mkdir -p davical_log + - cp -r /var/log/davical davical_log/test_stretch_latestphp From 8d7c8bafd1efe51aa9443b9eb5a8ad7e5c894acf Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sat, 6 Feb 2021 21:51:31 +1300 Subject: [PATCH 28/37] CI: Compress the Apache log files --- .gitlab-ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 07a15c24..7f18cf00 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -78,6 +78,7 @@ test: after_script: - mkdir -p apache2_log - cp -r /var/log/apache2 apache2_log/test + - bzip2 apache2_log/test/* - mkdir -p davical_log - cp -r /var/log/davical davical_log/test @@ -132,6 +133,7 @@ test_bullseye: after_script: - mkdir -p apache2_log - cp -r /var/log/apache2 apache2_log/test_bullseye + - bzip2 apache2_log/test_bullseye/* - mkdir -p davical_log - cp -r /var/log/davical davical_log/test_bullseye @@ -214,6 +216,7 @@ test_buster_latestphp: after_script: - mkdir -p apache2_log - cp -r /var/log/apache2 apache2_log/test_buster_latestphp + - bzip2 apache2_log/test_buster_latestphp/* - mkdir -p davical_log - cp -r /var/log/davical davical_log/test_buster_latestphp @@ -270,5 +273,6 @@ test_stretch_latestphp: after_script: - mkdir -p apache2_log - cp -r /var/log/apache2 apache2_log/test_stretch_latestphp + - bzip2 apache2_log/test_stretch_latestphp/* - mkdir -p davical_log - cp -r /var/log/davical davical_log/test_stretch_latestphp From a1395eae0f3066fcbc3d0a8399c493ee0167d802 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Sun, 7 Feb 2021 01:28:06 +1300 Subject: [PATCH 29/37] Only return the fields that we need for the test --- .../2042-REPORT-addressbook-query.result | 967 ------------------ .../2042-REPORT-addressbook-query.test | 6 +- 2 files changed, 5 insertions(+), 968 deletions(-) diff --git a/testing/tests/carddav/2042-REPORT-addressbook-query.result b/testing/tests/carddav/2042-REPORT-addressbook-query.result index 154df3bc..99ca96c6 100644 --- a/testing/tests/carddav/2042-REPORT-addressbook-query.result +++ b/testing/tests/carddav/2042-REPORT-addressbook-query.result @@ -7,38 +7,10 @@ some valid etag BEGIN:VCARD VERSION:3.0 -UID:a nice UID -X-SKYPE;X-EVOLUTION-UI-SLOT=1;TYPE=HOME:karora__ -X-JABBER;X-EVOLUTION-UI-SLOT=3;TYPE=HOME:karora@irc.oftc.net TEL;X-EVOLUTION-UI-SLOT=3;TYPE=CELL:+64 22 123 4567 TEL;X-EVOLUTION-UI-SLOT=2;TYPE=HOME,VOICE:+64 4 123 4567 TEL;X-EVOLUTION-UI-SLOT=1;TYPE=WORK,VOICE:+64 22 123 4567 -EMAIL;X-EVOLUTION-UI-SLOT=2;TYPE=HOME:andrew@mcmillan.net.nz -EMAIL;X-EVOLUTION-UI-SLOT=1;TYPE=WORK:andrew@morphoss.com -LABEL;TYPE=HOME:16 Kaka Place\nPorikana\n4173\nNew Zealand -ADR;TYPE=HOME:;;16 Kaka Place;Porikana;;4173;New Zealand -X-MOZILLA-HTML:FALSE -X-EVOLUTION-VIDEO-URL: -FBURL:https://davical.morphoss.com/freebusy.php/andrew@morphoss.com -CALADRURI:mailto:andrew@morphoss.com -CALURI:https://dotcal.com/karora -X-EVOLUTION-BLOG-URL:http://andrew.mcmillan.net.nz/ -CATEGORIES:Developer,Personal,Debian, -X-EVOLUTION-FILE-AS:McMillan\, Andrew -N:McMillan;Andrew;Watson;; FN:Andrew Watson McMillan -NOTE:Primary author of DAViCal CalDAV Server. -X-EVOLUTION-SPOUSE:Heather Buchanan -X-EVOLUTION-ANNIVERSARY:1989-04-22 -BDAY:1958-07-26 -NICKNAME:karora -X-EVOLUTION-ASSISTANT: -X-EVOLUTION-MANAGER: -ROLE:Geek -ORG:dotCal;;Porirua -TITLE:Chief Technology Officer -URL:http://andrew.mcmillan.net.nz/ -REV:date END:VCARD @@ -52,18 +24,9 @@ END:VCARD some valid etag BEGIN:VCARD FN:Donald Kelly -N:Kelly;Donald;;; -ORG:Esposo Designs Ltd -ADR:;;25 Rintoul St;Newtown;Wellington;;New Zealand -EMAIL;TYPE=internet:donald@example.co.nz -TITLE:Proprietor TEL;TYPE=work:+64 4 347 4747 TEL;TYPE=cell:+64 2 1234-4321 -X-MOZILLA-HTML:TRUE -URL:www.example.co.nz VERSION:2.1 -UID:a nice UID -REV:date END:VCARD @@ -77,350 +40,8 @@ END:VCARD some valid etag BEGIN:VCARD VERSION:3.0 -N:McMillan;Andrew;;; FN:Morphoss Ltd -ORG:Morphoss Ltd; -EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref:andrew+davical@morphoss.com TEL;TYPE=WORK;TYPE=pref:+64272332426 -PHOTO;BASE64: /9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAA - QAAAABAAAAGgAAAAAA AqACAAQAAAABAAAA2qADAAQAAAABAAAA2gAAAAD/2wBDAAIBAQIBA - QICAQICAgICAwUDAwMDAwYE BAMFBwYHBwcGBgYHCAsJBwgKCAYGCQ0JCgsLDAwMBwkNDg0M - DgsMDAv/2wBDAQICAgMCAwUDAwUL CAYICwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws - LCwsLCwsLCwsLCwsLCwsLCwsLCwv/wAAR CADaANoDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQ - EAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE - 1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol JicoKSo0NTY3ODk6Q0RFRkdISUpT - VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW l5iZmqKjpKWmp6ipqrKztLW - 2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3 +Pn6/8QAHwEAAwEBAQ - EBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3 AAECAxEEBSExB - hJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 OkNERUZH - SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan qKm - qsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAI - R AxEAPwD6Nuf2mfHfju2aDwb488cWzx/6uf8At+6AY+/7zJFR2fxp+IXhvwg7a18U/Gmoar - 5x3+R4 kuXWL0UjzOOPXBr5s+FF9c/EnUp9GfUptK0bSxC2rtA5S5uWlz5dsjj7gKqWcj5sY - A6mvdE/Zo8F eD7iGf4TW82lXd1bnzw0ZKSknuScsepyfwruhR5IObdj1YzVWoqcUi6/7TPx - JzgfEHxx/wCD66/+ OUwftMfErP8AyULxz/4Pbr/45XOa3oF94akxrEOIz0nj5jP1/u/jVIR - 7lyvO78qyjKMlc3qYdxvd HdaN+1f8StJug7eO/F9yp6pNrNy4P5yV5t8eNG+LvxjuZtX/AG - df2gfjF4U8QyAltGn8b6mdNu2/ uxHz/wByT2xxWjHHnHr2q/o9jNdX0EdgG86RwECjkkmui - KUnoTQrTwdT2lPR+mn4mJ/wSb8eftBS a/8AFHUP2iviL8Ur650RY9MttP1nxTfXsUM+Gd3R - ZZWCnhBkdj719g6b8VvGlhpdrBP4u8TzTIix s76pOS7dyTvye9VNC8OQ+HPDkjiKOO+1N42 - vJFHM8ioAWb1OEUUxIPMu0DAYUFzj/PvUVYq6ujqq VvrlWeIlFJvolotDWf4t+Ln+VvFniZ - WB4xqk/P8A4/Ug+MXi9WVp/FPiJGXgMNRmKN/vLu/WsWS3 8wncAcfpQLd05ALr6d6zi+Rid - GEuh0bfFnxVdFQfFPiOCU/dxqc2x/od9Zmp/EbxvExNv4u8Uq2f unVZ8H6HfVBLcoD9mIIP - WNvun/CrNrNkeVKpcH/lk/3h/unvW6cJoydFRW2hRb41eNoXKTeLfFAY dc6pP/8AF1Inxt8 - ZZw3i3xP/AODWf/4up7/w9DqcZa3+bHVejpWBfaDJZFiQWQHrjkfUU+VLoR7J PVI34fjV4w - 7+LPEx/wC4pOf/AGerEXxp8X8Z8V+JD/3E5v8A4uuNCkdPpUsUhU80WRm6S7Hbw/GP xaw+b - xT4jz/2E5v/AIqrEPxf8WHk+KfEJ+upTf8AxVcRFcDHB5q7a3fQtzVLl7Gcqa7HaRfFrxUe - vifxCf8AuJTf/FVZi+K/ik9fEviD/wAGE3/xVclBIp+7VuCQE/N+dXyx7GMoHVR/FLxPj/kZ - Nf8A /BhN/wDFVYh+KPiZ/wDmYtd9P+P+X/4quYj6DPSrERyevWqjGNjNxTOoi+JviQn5vEG - t/X7fL/8A FVdtviV4hB/ea9rR/wC32X/4quWgPTPrV2AZaq5Y9jNrodXB8RdfOM65q5/7fJ - P/AIqr9t491xvv 6zq343kn/wAVXMWw5BxzWhaL0zVKMX0IsdFB441pz/yF9UP/AG9Sf41dH - jDWMf8AIW1P/wACn/xr DtFwcVc2j0rVQj2GnY/OHVP2YdL8S+K9X1fwlqV3obaldRy3EMKg - xTPEuI5MdmCtjivUPC3hFPDO mpF58t1MFAaaQ5Zq+dP+CbPxj8bfFjwdf/8AC2rGSwmsHEZ - SY5dyABkd8GvqWKIk5HcdK8HFe0pS dKTvY+mwcKbgqkI2Kc9ms6lZVDAjBBGQa5HXfhTBNK - 0uhk2kpySnWNj9O34V3XkEnLUNB5gOBXKp OOx6TSkrNHjd7oN7os23VoWT+645U/Q16d+zx - 4Xh1DVbi7lQSS2ygcjiInoPrjn2zWpdWMX2Vjcq rKoJIIyK7L9n7w4tv4PF15YWTUJWnOBj - IJ4/SvSwdR1JO62PLx1CNFKUXubmux+UbaH/AJ5xmRh7 scD9BVG0hy87nsFQfz/wpbXV28S - atq8xCiC3vntICP4liAUn/vsP+VXbe3H2BWI5lZm/XA/lVVZc zuYULOKt1Kiwk47U9bc9+l - Wktznnr0p4t+fasWdKKTWYPQEHsRSSW2VxcqWBPDDtWkLbdinfZwRg jr2qLlLYzdkkBBfdK - qjhwf3i/j/EPrU4Md9HuusMBx5qDAHsw7VZax7xnn0PSoXtlMv7tjDORgEf xfh3FWqzjuQ6 - S6GTq/hMffhCoTyCPun/AArDudPktZNtwpUn9a662vXiupYHAjZAGOeYnB6e6Hg+ 1Sz6XDq - SFCoWQjPlN391P+FbxkpK6MXE4kRnrTo5Cg4Na2p+HZbJ8wgso7H7w/xrNKYb09qG7EOH cf - FetGPmq5a6wA2HNZjdajdypOKpTM5UvI6u01RXxzxWjBOGHymuCjvGjbIY8e9XLPxRJbt8+S - B3 rRTMHQfQ723lGcVo2pyRj1rjdP8AF8MoxI20j1rX0fxlY3GrW9nFMrXFw21FHOTWikcs4 - NdDsLUE 4FaVmmG96q29o6kAjB/lV61gKkE1Sepm4GhZrk1dC8dTUFlEABV8R8VvF32Iasfi - n4F+Mviz4KeG NGk+H6x+IIZbqSDUPPP+lS7chTGf4x8jNj0ZcZJr6y+Dn7QmifFDwVYajcX - EOmXt1K1q1ncOEl89 eGRVPJ618XeJLa5l1vwzofhNngmskikiGcOssxQw5PYiMWIP/XRq9A - +GusmPxHqt34Us7Fl8PJLN Y30sQeYqWSKIZPeQ/Zj/ANtmrPHYenWjzJa738r2V/Xp1sZ5b - mtWg+WWq2/C/wArep9qIgYZ7HpT lgBA7V4X4C/bIiuLaYeM7Tb5MHnrJEcb0yApIPdt0Z/4 - GK7o/tSeB9K0ywn8a+INM0Ga+IUW19Os csTEKcOP4eHXk4HzCvCq0J03aUT7Khj6FZXU0dT - 4oZotNaOHO+4IiXHqxx/WvbPBmmp4f8O2yHCp Zwbj+AzXjHhyW28c+NNCTRrm3vLORzdCWG - QSI6qOCGBIIya941Rfsfh6bYELTAQqGGQc9f0BrtwU eWm5PqcmYz55qKfQ4/S9HXSNHWGyX - H3pCOu53Jdj+LMavwxr9miSM58tAv6VmrFdaTwrEoP4JGLI fo/Vfo2frV2z1CK6lEcwaCY/ - wPwW/wB09G/CokiadtEWRDzzUq2xxU0cZ/j+Ye3Wp0jDdOahnQkV RbZ+7Tzb46iraRYwAPx - p6w57VDKSKYtSBk44rPurbzPEFqP7kbsf0H9a3GiwORXLeJvHOl+D9cNz 4ou4rS3WDYHc9W - znAHU9KiWhVuhctbbN/ftIMhSi/kuf601rMqn+j42/e8tugPqD1U/SrOg39vrl hNeaRKJ4L - li0bjIBGAO/0q7NYrJz0Ydx1ojJrVCSUlqZf2oSjZdo0g9D/rU+n94frWfqnh2O8iMt kQ4/ - vKOR9RWvdWIYf6Qu4Kchh1FU5kkt28xSx/6aJ97/AIEOjfzreNW/xESpNbHGajZS2Tfvhlex - HQ1nTXOMktiut17UopoSJlQMeN68o31HY/WuG8QWcltuaJsL125/kacpWBUXJXHT6moB3NV - KfXVQ nJFc5qWvi3cqzfN0x3rLudVMsJk1GQRxDnk4/OodRomVFHTXXiySQlLQjjqx7f41q/ - CHxhZ6b8UN J+3O00gnyyj5mYYNeSan4vkv3MGhkxx9DLjk/wC6K2/g8v2H4g6Q7kkm6QMxO - c5OOv41yyx3K+WJ r/Z/uuU9D74tLa18RWS3GjSK6n07exHaozYNDJtkXDVyOkzXOjXXnaVI - Y37gj5XHoRXeaB4ks/FK rDeKLe8A+6T191PevTw+LhiFyvSR5OKwUqGq1RFbQlT7VcGcd6l - n017A/P8AMh6MOn4+lHk/Wu5X WjR50j8kdH8T/Dj4va02rarDL4T8SSROq3cTb7fzWjKLIV - PdSVYdOUX0q7c/s9at4G+GV4vhWW31 UareoBdWJ3rFAikRFsdMPJGx9BbD1FfKUvh3xF4P+ - PieA9A+0a3eSaWmprmLaVBRJPKPPLBZYsnj lj6V6Z8Kv2mNT8E6jHFYXl3p1ypAe1mBAI90 - Pak17WOj00+7p6Hnxw0FLnirPXbbXd22v59ToTpE N8jxuDDBf3KwjcMeXbQqGc/grj8bc+l - fLPxE8L6v+0J8TfE+tw38tuxuTGtu0IljfZl2DDrwZNnB H+rHpX3lF8WvBvxn057T4macdM - vpYZLddS08BSgkVlYlehyHYf8AAjXndn+xHrvw5tJtQ+EWo2vj HTpvMkeS3G26G9izF4ick - 5P8Oa7MG17VuTtppfv6/wDDGeLpclDkaum1e2rUVe+nm30PO/2I/iHr /wCzJNa3HgXVXvrq - 3R1u9PnkY20pZiflQ8x44AxxgfjX6wW3iLUfF1j4EfXbQadeXemNrN/ao5dY HaNEWPdgZwZ - H7fw1+fn7GnwktvFnxxbRtcgCXWryRwuHj+ZERi8gwRw3A/I1+m2vWytr8/kooW3R LZOPuh - Rkj82P5Us2jy8seTll18/61N8jptuShV56d9PLuvyMSSIlm2oXVU3Ed+uP8aqHSLe+RhAQ A - TkxsuVz9O31GK3I7YpHKx6swUfgM/1qCewSc5cYYdGHBFeFdp6H1qSluZEX2rSXAB3Rj+GVi - Vx7 SdR9G/OtO11GO4kCNmKYj7j8E/T1HuKjlml0xHN0BNEP4h97H071yni/4haZpVkDFdwQ - vJIUW2kX JY4znacbfqMUpW6jV4bHb31/DpFlLc6pNFBbQKXkkdgFQAZJJPQVx2h/tLeDfEO - rrYaTqqy3EpIh JgkRJ8dTGzKA4A5yCa+Ov2t/245hpmr6KmV02yeGK9dwZVILKZArj+Hy88 - EEnJ9K8W8a/tpTvpmn DwO9nYOBvjvrhzJ5mekrL0XGfU5z2qGmmS6rufoV8X/2xfBHw8e7s - LzxDp39o2S77i3WYGWBcEkk Dp06V8I/FL/gojH8Q/Gd5DpKxX1lbzRyC3dWdn43Abh04+nP - rXwT8cf2ttQ8K/EvVYvFN4ur3l4j JNNHhI5VLMygBc8EuxOf6V4NN+07rei3k62Ny9rDOAC - I3OSoOVBPfHvV+yja8tjOWJSXxWufvR+y r+1Nc/EbxPFENRl02xihE0Vi0gJmLMCxYjgjB6 - HHJB7V9gaB4lsfEtuW02aOR1JV1DAlSOxxX83f wf8A25byw02wNxqE9pc2S7VklzjHbkc49 - vevtP8AZc/4KKeIW1bTyusWZ3EbjaQlVfngMp+979Kz lh/ZJtbGscRe3+W6P17ltwVyAD71 - QvLTZkxcZ7V4R4G/bot/FWmWokSFbl5PLkEf7wg9ztyOPzr3 Lwz4ih8W6LHdWjI6yruBUEB - h6gHkVDi46s6ozUjkfE0eLolD5Uh68ZDfUd643xBftBG0cwEe7sT+ 7b6H+H6Hiu/8TW4ac+ - YM/WuB8WWhIZc5Ujoa5XNwZ3xgpRPLfHviy00m9UbWe4wQI9vP5+lcrJe3 fiObdqTAIOViX - IVf8TW78Q9OV3tGAztkdCfTpxVHTbbaBtyccVx4qtJy5U9Dow9GKjzLclsbMRqM D61veFGN - j4jsJo+PKuEb6YYVn28JA5XNXbRjDcowAypB/KsqOjQq12mfbkMO4ZxwwzTmstxVo8qy nKk - HBB9Qak0c/adKtZRyJIlYe+QDVsR4H0rqSsea1ojY8LeOntALbxKPNiPyiXGf++h/WurSw0y - V AyTJtYZGJeMV555IYncKT7IO3HtnpXo0swnTXLLU82tl8KkuaDsfjt+zxqsnxU/aP+JPiy - X91JbG LQoXA/1ElwxklVT/ALEc8i+32celW774IaD8Tf22fF2teJDJFpXhrTLeG+USfItw2 - JJOv3QkZlGO P9Sa+gf2bvgx8OvDWmy/8Kr1c6gt/q82t3iXTATzySH5l/75eZR0++PSvKV+ - Gfifwr8CvFf/AAsW wnsfGnxX8Tz2rw4yYxez+UoUrn5Vga7bI7MK75c1NtR00SPnOV72PP8 - A4Y/A7xj43+F1r428AWkV 1p2qvLc2+lpNm9gtS7eUxRuWDJtYYycEVteAfinrXgrWgIZL3T - L2BsNGwKMD6Mpr6J0fwJeeBdDs oLW3ls4LSNY7eSL7iKoAADA4HQcZB9q0dRi0zxqkafFLR - 7LVmiIKXuzZcRqP9scn8ciu1Jvrc6lQ a2Z7R+yF4Ai+MOu+HPinrmlxadqtla3NndTImxdS - OFWObb/eCmUFu/HpXsUcZuY2ncEG4dpjn/aJ I/QgUfCLxOuu/AeK80uwTS7J4zZ6dGihA8I - IiR9oPGTuIHoAe9XbuMQwFY8AAbR/KssS72X9ehvg KMaTk4rr+JmG3K26D+9lvzqhq95FpF - q812dqKMk1uXUW18L/AAjA/CvFf2zviJN4E+FV7/YiySah Iu6IxttaIDktn6ZFcTV9j1XLl - Vzzj9qf9tuD4TweXplncXUkMu2cx4PljB4/3uOlflX+2J/wUa+I +seNNZv/AAT4uuItFd2W - 2gi0+JWgQ4+QyFSSeOSD1H0r6H+Jsmr6zoWoQ65NqH2+4GYYZYSY8MnS Qjq3OSRmvjH42Q6 - NoPg29efVFEMCPm1aZZSk4bBL9O44XnpnnIqoW5tjCs1zas8/+GX7XviW+8Wy x+OtUlv7a4 - cSyQ3LkoeMHgnk4x+Vc38Xfj63hq6vLf4d6kXtnMkawyR5EKsQTsbPTsOOlef+DPAO pfEPW - JrjSVeC08wlZNuAR7V39p+yrNqcDfblm8wnhvWtJuC6HoYXLcZmFO9OHo3+Z4TrPiC48Q3s - s93IXlf5yx/lULIbpPOib5j95T2r3Zf2MrkM7tKY1Xr8pxipNO/Ywvb19sDuT3OzrzWN01ds - S4Qz B3cl+J5tompQad9meaIXS4ACbiN3HTjtX0h4G8R6Kh0d9ImS0uvIZJlQ8BvlwPfv1xj - ArD0v9iTU dPzLZShZkX92JV3oT7is/wAOfATxT4M103N9pjRy26yOMy7ophg8KMdec1q60Z - WRU8lxeFsqkfuP tf8AZ98U3hlsJtF1HyNQmcQoYmyQmQDx64yc+2O9fXPwB/aG8Q/DTxpba - LqGvDWrC8Ls0d7AElic EAhWXrnp3HBr8sfgX8VvEvwo8X2qzRCOSbDB2G5kU9NpzgDmvq3w - H+0Zp194zsZ9eivNtmPN3uAZ EbI7gYxjPH+NZSiptKxzSUqV0/kfqdc6umqFCHQtLGH2g/M - n1/Oua8U2u7JHoa4n4U/G/SfiHaWt 5pWoWzyugTarhW/EZ/T2rv8AW0JiUsOSK8qrFp6ntU - JKUVZni3jrSPscEW9ifNuZnHsCRxWbaL5e 0LXT/EyLNlZMcE+fMufyrnrZMgZAzXDiF+8+R - 1YXWl95YjJB+Xj1qZPvjp+FNVdp7D8acMbz14NT DdNBUR9v/Dhv7T8AaLOOfNsoW/8AHBW2 - bQha5v8AZ8uvt/wd0Bic7bYJ/wB8kj+ldutvvU8V22ue Yo+6jMW2/P3pfJx2rR+xkrkDmmm - 1bPQ0WMZKx+A2mX/jv4WRWF9cWd9LZ3lst7FcW5LOkbM4Uvt6 E+WxA9CD3Fe5fCD/AIKH6n - or20fiV4dTjt3DpHeIPMjYcZUnow55616bDYR2WkW7RwpNYRqLi2iI 4a2tUHkD/gf2K3Hv9 - p968X/4KIfDXRfBPws0i30azT/hIrk2mnW86JiQzyMXkk46ny7aU8/89s19 GsSp2jKP9f12 - Z8ZHSV1ofXnwy/bN8D/FKJYdRmGi6hMNp34COffsw+tdr468DaInhN9WWezitHG2 O5t3ESu - 5HyrtPyFj2AKk9ga/Kz4W+ANfbxjouh+G7s3f2+8uIhPMScxRSLEHGPVzx7MK/S39hz4f a5 - Jd3fh3xFEmteF5ozDqcU+WgO1soyk9G3KGXHIxmtuRN+49dzoVWfLe3kfVWquPB2jeCvDemx - Ig dT5ijpHHbwgE4/32Srkv7yaNXA5bJ+gGab4o0k3nxJS/lkLfYtNFoqH+FpJPMdvxCxinR - YN028/d j49SSf8A61c1Z3k/uO/Cq0SvK3zYY/Svjb9s/wCLhvNTvoPDmp6TEunCWKYSHzJG - 5wy4+6OmOa+z Lq3Ei4cZ9a/Fj/gq58R/EH7L/iPxdp3gvxTPZxX12b9o5lWWKQSMfkUEZDg - jkZIJ578YqPM7I6qk mle2h5b+3x/wUv1Hwbpq6P4VuI/t7ECaMWrxowwQDuLYxjHCnnvXwz - 4MPiH9qf4kPc+L7uSSxifz Jwo2RL6KqDAz7+leffE3xtf+PvFEt3rV/d6jcztlnmfc2T29v - wr6s/Zq8CQeCvBNrEqqLmVd8x7s 5/zitHJUV7u5tk+GeYYr3vgjv59j0XwN4I03w9aw21hb - KiRLtA28Cu1stJiZM26qMnnArDsm+zRI zHORjGOldDoVwWQgnv27159Rtn67l9KLSS6Ej2k - CIwlQN2PHFdN8PNDtZrxVu4kCdeBWVBpHmlTK uVfnGeldX4Wsi17CsKgpjDc4K1F0j6KlKn - CJ6XpPgHTdQsszW8TuThTjoK15v2b7DxFphjlhB342 sAMqfasPw1rn2W+WMlkBO1RnvX0t8 - HPBEviAQlA8nmAEhRn9KuPvaI4cVGl7N+0St5nyD4+/4Jxy eI/C14loxt9Qs1aSzcIdr9Tt - 9gTXx58Pfi1c6B8RLzQ/HhuLKaycwSxOv+qdDjbj3P5g1+/OmfDl YNKeO5hV14XDivxL/wC - C8HwIj/Z8/ai0/wASeHbVrW18XWLFwowrXMLAN+JV0P4V2Qbtys/LuIcJ Spr29NaXs/8AP9 - D1L4U/En/hHvEEjaB4nSxv9SgGLZosAtnAzv8Aug+tfbn7PXxv1jxoq6f8QXga /Vf4F2grj - Ckc98c5r8cP2Y/G8nifWreC0sby+uJmBu2aQMwA6DJ+6o49q/U/9hp5bjw/qs+oLE81 sUSN - WkDPbwgk7F7/AHhnP0FY14JwfNujw8LWm6istD1z4ihZtMtyjZ2Xcqn6+lc3bR8DvW54ztjb - 6QxY5WXUZXU56ggGsS2YZG2vDxK9/wCR9Bgr+yu+7LCLjhiaeOW5HOeTTUUk8fnSoTkjoRW - KKqO5 9h/snXP2v4Kabg58mSWP8nP+Nep2q7+2K8Z/Ys1AT/COWPvb38ox9Qp/rXtNkcqN3N - d55mys+7LM MOcAVN9gB7fpSQD5uRxVsNgU0jJ6H5x3Hw4uf+EztLEWMtrYReTbW6yLx5MI8 - 3H1P2bTk+rsPWvk f9vHxoPEn7SWi6Pp7ebH4cs7nXiBypI/cW2T/tC1jIH/AE3961vgj/wV - B13RkhtPEdxFqsKYXy7l dsgH41315c/BX9o7X7jV9UjvfCHii9hht2vIm82BliZGjUxk7do - MadCMhRmvoHhJRlZ6/wBfefEU 5X/qxyn7JHgR7H4l3lxJEzReGbCLTUJHPnKglk/EvND+Vf - q78DfACeBfAekaesapMsCNOQOXkIyx PvnNfI/7Hv7Lf/COTpGviDTPE6ahqpv7m7gHlvIrS - GVt0ZPBJEa4GQAor7tCCws5ZXOBFGSSe3Fd OFg4OU5eh1yklCMV5s4e/wDF2kaj4z1Gy0jU - 7OTUIpR59oZR5sZ2rjjOR8u386fdTCJsX0bRejMP l/766V+WvxZ+KV34k+NXiTxBpl3NBLe - 6nNLFLE5VggfamCP9lVr0L4Yf8FBfHXgWNbbWruLxBYgA NFfAmTHtIOfzzUzpRqa9S6OM5N - JLQ+3/AIg/EFPBrWMEbxPd6nP9ntEkfCu2xmPPsEJ9+B3r+cH/ AILVfG6++KP7ZfieM6ot9 - o1hdNbWrx/6vcoHmAAddrEqD3xnvX6Kf8FRP+CmsXh/4M6B4j8D6Ze2 eq6feSRtCHAEEkke - ElVwMEAqwIKjO6vxT+M/7QeqfGG0tbbxHDYA6fPcSx3EUGyZ/Ok3srkfeAbO OmMmsacHSbk - /Q0r4pSjo9DkvCWnrqHjCyjPCvMpOTyBnrX2z8PiFsYVUZCgAc9RXyH8A9AbxL8SL SPqq5d - ++AP8AIr7H8IRQ2wRnLKiMBXNXezsfUcLQtSlLuztIZkuLbGM7cZOOtbXhyMCZWj3HecAe l - cxDqlvJcEWU0ZPQgHGa3vDc88dwAVJSTkcg4NcUr2ufpOB/dJOWzPR9F0P7R+9fkR8le5q94 - fv1 tb6aSQkAAgDH86zNF8RL9jLuQoC/Mc+1Q+GLs6zeSR4ByxYkdwK57NJntdLt6HrPw80F - dZ1QPcnK jawPevtH4K3h0PRVihi+YqqqwHOTXy7+zjoUeqZChdh43E56da+qPhtd20SwKpH - lxHO/d9444I+l duHukeZmlSM4ci1sfQXw7tf+EliWPbmKBAc471+UX/B0/wCDUX4a/Di9g2 - I1rrd0Ax+9tMKgj9Af wr9eP2cdOXWzP9j+6FAGP4q/MX/g6J8Lz33hHwBodjB59zeXN3dLt - XeYyFABxXpOnzcrW5+cZxXX s5Um+x+W37Jt9FqUMdqsn2K9sD9qstQjH7xeu63fjDoxGQD0 - Nfqj+wv4lvfFrXMPiC0hivo7YFZo ovKjvIA3Lbf4Tlun86/Pj4Efs6PCNBl8KLcww3YSSaQ - j5Y7xAwKj1RgM/ifSv04/YN0tNS+G0erX dt5Vy6vEjHkqu750J74ZePbFcmISim2eFhXzyj - Fd/wCvM7f4kRpFoFusYchLpgcnPODmuUhAA7c8 Vv8Aja5mm0a58wkrFqkir7DBrnoDnH0rw - MUrzXofTYP+F82W4+Op7UPKF6dKjBJGfzpC27gnpWMY 9WVNn0/+wbc/avCGuwZOYrxHx6bk - /wDsa+g7aEgZ7Gvmv/gnveCW88S2rHjZBL+rj+tfUlvZbkBF dyWh5j+0vNkdswEnzdKvADH - Sq72JRjjNJ+8HrVpGLPxLtvg/4D+JerfE/wAe+OdPiHh7RJ5jZi3J h22ljbSSuVK4wWWK0j - z/ANNz3rzz4MfA/Vte8E+DtQhv/KvNf0w6rc28gwtpEWmZBnr/AKq3kc59 vWu//aehf4T/A - LBmh+EtJhkGsfEnUbDw5DHg73a8kF9cfiLaKzQ/XFeqeGNCttIvdSygW3gt7bw9 Zqg42Fha - jH1isrtv+2+e9fQYeUnonu7L8O/rf5bnwtRtWS6l/wDZg8K+LE8Y6fZ/DKS8k1MMrjym ICj - g7n7BR3Jr9BP2iPH178MP2W/Ees+JpoW1W10lw8kfyo85TauPq7LXN/sS+BNP8KfDUXmmWqR - 3 OosWlmI+eQA8ZPp7VwX/AAV18cnQ/wBnSz0S1YibXtRijYDqY48yt+qIPxr0cRZJpbGibS - 956n5s fayAVLZ24GSetMkvjHHuRuR2qoztGSsgPB5zVe6nfqn3T2rj5uoJM8m/bW1LS9Y+C - +s2fi8ExCHf F/eRwflYfjX5fXqeXdOFfeATz61+pP7UHwTb45/DufSY7qWynJDpLGu48c7S - MjIPpmvzb+Kfwrvv hV4qudL1lhI0bfI4UrvXPUg8qeOlZSvPbcubvoemfsXaHDI2salKy+d - EUgUHqAQSf1Fev6j4k8yb yIJNuXwyg8n8a8c+A/hK9sfAE+q+Hr+S1uGlZZo9u5ZYxjIHcN - 1wRXZ+OfAc99qbp4etoLUOq7pX UOwGOozyT71zpK75mfc5NOdHDw5I7a/edvfxXttatNoU1 - oZ9o+SV8FfeqnhT4zeI/Duqbbq1F2iH BMcqsvucZzXAXvwO1iSGx/sh5pCFKSiQuUcZJzlf - r0rR17wVNpFlYQ2vkxtbxlbh1BQzEk5IPt0G fShxp9X/AF956tPHY2pN/u+W3no/wPdvCPx - j/wCEwaS3tlZHYhJEU/dOea9Gm1C78FWklyI5NksK lcDGctg18s/swfb5viDNa+GY0uIojg - mQEEsDg59K+8vjF4yv5/2a7PTNf8Nafo+tWzgw6i1ySl1G wKgLHs5bdwDuxuxmuepStU5Fs - e5SzWpHB+2n1dr9DjfAP7bdt8NlS3vY5toOAFPXsc5r6V+Bf7Xm mfEPWbKHTGk2zEKybuF9 - s1+ZPiG41iCS4fbNK9oRtT7PGfNHcnKkg17f+xf8TfEF3erd+HvDwuBb SrF5JQJLPIT92Nc - jd1HOO9bU6SWt9Ec7z2Sm4VYtf9u3/FXP6Jf2KtPW60cTmI+S9uHVuhU5wVP5 gg+h9q/M7/ - g5pmGhfEv4e20bj7RPDLLChXPmRrMpPT0B5PpX15+y5/wULtPh18E9CHiHQnklvLh7 aSG3m - JuYGQcpJAyK6Nk8DLA84Jr47/4L863aftE/tM/ASTQ7qztbCbQ7rUA0U/nTSQTzIiytGB+7 - RtpUB8HIbgba3hze15ls/wBEz4DH4idavUqfZlovl2/4B8XfBzU5dR1DTYtbu30+xjja5SFD - tMMi qygDHsAPq3vX39+w9BewfB/Gs7VCzHygF253IrsSPXLn9a+d/Cv7NulfHj4zQRaLBJY - WtxPE0cSY SSPAIdicEKCVU9OrHAr7h8OfCzT/AITaJHpegQNDHGMsWdneRu5LMSSTisswXs - 6fLbVjy6Lq1ebo jj/ibb7dAJUAFrzcf++TXDW7kgZyO1d58VDt8Ose32ofqDXBRNxkda+fx - Wkl6H1GHfuP1ZZ34Ppi mucnOTk881xfxb+LC/CaxsL68s3vLW4uDDN5bfPGoUtuA78A8e1a - OmfEXTdZ8QLp2jzNczG1S7Zk HyRo/Kbj6kc4qOSVlKxlKpHmcE9f6/zPp/8A4J63234maxb - Mf9fp+7HrtkX/AOKNfY9ooQDOOtfD v7BWofZ/j9DESMXNhPHweuAG/wDZa+1tZmktLNngJD - LzXXT+FM4J/FI09gaUDsR1p32FT1zXzf4G /az8W+M/27dd+EOgaPo80ej+F4/EsEs9w0Mt8 - hmWJ40OCoZS+eRggdRXup8caxEdtz4J8XiReGCW qOoPfDB8Ee4610xi2tDzJ4+jCTjKVmu5 - +ZPx6/Zq1T9oD47fC3xX4C1fw/q/hj4dDU9XNik4W4ut Tm2+QVjIxtSOC3iBzkc8YrY8MfB - 3WPDun6FZ+ILK7SVbma5uWljPUIttAM9OizSf9tfevlDw74Z+ Kfwh1toLlJ5vJcgT2UpdXC - lwWGOcfunPI6DNfVfwO/aV8Z+GmtF8TN/aMSEGS3u03fhzX0lOEcO4 7W/4f5dT5L2fM73dl - b87n3z8JvDaeGvA+m2cahTHEuQB6ivi/wD4KseKT4h+KWkaNCS0Wk2LTN6B 5Wx+e2MfnX27 - 8OfHlp8RPAthremWUmniWAmSFjwGHGVz2OK+Jf2g7u28efFPXJ9SijuYhcNChYZ4 T5ev4H8 - 6WLnZXaKT50fFd7pPzHCkFiazrvTSDheDX0VrvwY0vU9zWDyWzen3l/I81wniT4I6jZMz WQ - julH9zr+RrznU8zoVN9Dxq+t2jJ9hjnpXw9/wUA0Jrjxmt08Dy7IAqPj7oySfw4/Wv0E17QX - sZ JI7yJkkU8qwwePavjX9sbwnN4z+JsGmRTi2t7i0dp5GXKwopHp3J/nWlKaclc0S11PJ/2 - X2/4oq4 juf9XJcPgn69Pxr0mXzrGywiQXaocAuTHIfYkAg/XivM/gfLHZaNNaWmd1rKQfqa - 9Bg1HzrkK3Qn p71z1ad6jufp3D+GhVowUux1Ona5Ppelri2nCkHIS4Rxn2Bxn8a4rxPqk9z - dSTXdk8xI/dK8qbQf U7c/lXaabbx3UQClVQjkZ9q5rxfdpFqC2OlKklyx4Xsvqax5XF2PoM - RlEKFO6k/w/wAjr/2UNCNj raXFzGBdXcgaTA/L8q/S7xh8DIPib+zJp9xNaR3934e23yR7Q - 5aIf6xAO525YDuQK/O34E6XMt1G wf51wTg96/Xf9mzR7rTPgVb3ktq9y6WxYxqM+aNucfyH - 40Jc05dzsxFGksBCC010/r1Pz7+L3wH8 OeHPGL3ngW7jvtHvsTiJx5dzbhucbHAYiveP2Tf - AvhnwtLbaqbG0nli/ebpI2DJ9FzjNef8Axl+M GhfEXxpJB4atTZpBK0XkSJyhBwVKn0IIru - P2bvgTYeK9ci+02Ns3mnlGiU4z+FEIvntE5JZLV+rq cpJq3mtPlc+mQNN8VlJ9Igt7fVVZV - s4VwJbu6Y4RQpJ3Z+X5uwBJOBxJ+3h+zT8KvAvxQ8KeB/DG iaLpGsQ+HFvdQvbeFI7zUZZJ - mG93I3SOXDSEZ6Oexr61/Zf/AGbvDfg3TdMXQ9G0+zu5Yi0ssNqi NtGMgsBmvnj/AIKffDX - SvGH7Qk1x4jZY54raKG0kV/LkTCb9yv8A7Jweo6e9ddOMqdSzlrbp9x+a Zq+fEKC+zd2X9L - +vU4T4IfAy4+Grw/YbxkhkUymURASysfViDgduDxXoXiK5e5cG4YuwULk9SAMf 0rL8Gatea - jo2mT38gRPsyxqUHykjKsfxK7uefmFXNcLYy2CPUV5uLqSnL3jswNKEKalDqedfFO4W Twlc - bCCY7tMgc9q85FwAo9veuv8AiAkseh61uUgNexOn+0No6fjmuBW6H/1q4MRFcyO/Bz5oz9Wc - z8dvB93468PWNvpEZnMV2GkUPsbYyMhIPsWBPsDTfgl8MW+GOhTw6hKbieWXarsdzLEowi5 - PXHJx 2ziuoF/ubH5EVKkxf3qVJqPJ0BxUZOXf+v0PXf2L9SFl+0j4cycee8kJ/wCBRN/9av - vzWId9jKG/ u1+cP7M2q/2f8fvCcxO0DUolP/Ajt/rX6V6jbbrd+v3a7KELwOCo/wB40fEtn - df8K+/4LkfCK+z5 UPjTwdrGhykf8tGiH2hAfxjFfpDz71+ZH7b10Ph9+3X+yt4vz5aWfjoa - RM+cfJdp5JBPp8xr9OGO 1iOePenK8UrHx2aw5a7ufkL4egTUdamtbUeZPcL9lhYDqrkRFv8 - Avzbzt/22r0z9mL4L2Pj34oap qPjmE3H2Kbd9n/5Zljgjd6gDHFeT/st/F/wh438VXa6Xq1 - ms+mxO8dvO3lTnKrGpAb7wEcecju5r 6/8A2WPCg0zw7dag6kS6jMZWOPU5r36ELV+VrZXMo - pKjzPe56F8QPEVv4F+GmqXsaxwxWVsxRQAq gKpOB2HSvzduviwjarJH4lguNOvJWLstyhTc - WOcgnqDnrX2j+3Zr76T8F10yF8Ta7eQWKgdSHkG7 /wAdD18n+NPjHrOoeI72z1xNO1zS45T - DHaalarOiIpwArEbl/A1vVh7V8q/r8DJSjCKcupltq39r WrnRriASkfKThgD71TsL3Upp3+ - 2xR+SnBfo3AGTj65xU9p4c8H6zN5ek6RqPhTUsNIn2G6Mtm+0b m+RwWXgHocVjeMNA8TWNm - l9oDO2mXCsF8yPGBnGd2MHNcdWjys6Kburp3Ll54etta0PZqUUU6yKZ PnUH7xz/AFr4q/bu - 8IeHfhZHqmsapugW8szbKinq2ScLnnnNfYR8eR6JpQh8QNGlwihCY/mjJxxg 9+K/L3/grh8 - cf+E1+IOm+HdDdjb6fEZ7hzxvdj8oA9AAx/GueEE3obcyW6PBPhDr/wBmv7qMsyLO wcjPP0 - /WvS9P1ZGycbUyeQOfyrwbwfqBs9SGWwe3vXq+neK7W1tIvOl2kL0Y9/StHPmvJH3WQ4qU a - as9j0mXxJbaFo/n3cuFUAY7k15T4t+LP2PXpdTwRIU2CMNzj1+tcv8AE/4kG/lEdizeWp7Nk - NXG y3P9pSrG7ACcYLnOFb/P86yle19zuzXiH2i9lTd2j6L/AGdf2gZ1Mja7dR2fnNtSWUNs - TnqQoJ/I V+gGg/8ABYnUPg/4H8IaB4MkstR0SyQtqt0ysbiYg/djUkBF24+Zs9+BX5GafLB - bW0UF3OsVxG25 8kkBcDGMdx/WvQ/heYb/AFiyzcmCcAlt7fISuSOT0J7Z45rN6K7Wp5tLNJ - ySp1KjaVvv/M+i/wDh ou68RfHTWfEUZigTX9Qm1BI0I2RGWQsVH03V+hX7CHxDbUdXsJXYN - 5rBTnkZr83vBPwgh8VWV81k Vt5EEctqA+dpMe4ggdBkdsYAr69/4Ju/FGPSpHtdcdIb3TnK - yRSMBlweik9aVKoozTeh9dgs4p18 J7FK3KkkvK2n3H78/BZ7VPBdtfvLGALYPITx5Y7kn0w - K/OX/AIKefEhdf8Xa3qDXBexwlqoAysKu +Cw+o8sn2Fe7/DP9pc2HwevJxdwiPUFWBInbO3 - apDjHpk18Tftg36+I9B1YX95I0EiPceSjZLSrH 8uR3Hy89sL+fVZKpJ3u3+B+aYuhKFepUk - 9W/6RwOqftZeIv2b9X0vR/COsJq1gtjHdSi6USxTNJk 7V5yqj7vB5xnuK9F8H/8FFvDHjC3 - jj8b2NzoNw3BmhPmwE+uOo/Kvhi8km1bU5WvJZDjCKgPCqOA B7DFbfh7Q1llXcOO+azqQhU - 0ZnSxFWkrJn354216z8RfDafUdAu4720uWjkjmj+643Yry8ahufmt b4cEQ/sv28S4CRRn/w - BHsf61xkeo5k6/WvIxULTse/gKznSvLds6GO824wanjvSW4Pb61hW95vXI PJ6VcguyRg9qw - UTeUjtfhZrB034l6BdJ8ph1GBsj08wV+r93H5tsxHda/H7Q9SNlq9rKpx5UyPn6 MDX7GaNA - NU0OynTlbi3jkz67lB/rXfhdInl4qpyTTPzp/wCC0sLeH/gv4Y8UW+Vl8HeMtM1UOOqh Jx/ - iK/UWwnj1WxhurVt0VzGsqEd1YZH6Gvjf/gpr+xxrX7Sn7Lvinw14IWNtS1BEltvMOAHSRXH - P /Aa0Phn+3t4n8C/Dfw/onif4SeM7vUtH022sbueKWAxzTRRKjuuT0LKSPY1vDDTqK0e/dH - zuaQVW opJXR+CGgeMPtV1DdWMpguoGykiNhgp6rkfnX1l+zJ/wVR8c/s5yW2m6vMniPw+rc - 2l4cyIvfy5f vL9DkV8F/DjWd00JJLKXOc+legT6kl8oLDIHy59D2r6lU3B2ep83SxEnFXP1 - M+KP7b/hL9rC/wDC F94SuXsLLR5H1DU4L0hGs2RMIC2cMMs3I/SvB3+Pfgm68XajbnxHphk - s7aTUZ5Ek8xPKX75BXOdo 5OO3NfDHi/XtOtdDvtO8U36WlpewmNn83YUBHUHPBHX8K+aNC/ - acT4S6jrdrHMmsNJpN5osEoPyg XEZheUe+xmwPU1hKHLdxZ1JqtZNaL+v61P2C8JftWfCDV - tQlDfETSre8FtILOOS2m23TnHyBwh2k jOMjGepFe16N+3d8Gfhz8KbSPxj428OI1ral5YJL - hd+dx+Xae/PSv5ttU+K2o3FyJ7C6a2xwojJD L+Nc5feJbvU5d9/cTTuerO5JrCfspvVs7MN - iPY3VtD9bP21/+C2vwzj8RR2PwK8FWetRwyE3GoSk 26SH0RV+99SK/M749/F2P4x/FjWvE0 - EL2serSh4bZ38z7OoULt3YGehPTvXnUlwZ5Mhsgc4PapYf 33zgtn19K45xjO6iilVlUdnuX - 9P1No7wmRsuc7SOxrR1HXZUhCp80uMDPIGe1c3HPiQbcnb0q/p7 s98kc2TIflC4yV7/AJ1z - JtO6Ouji5U4OMWTzWOpXJVpoiwzxk4LeuBV7QdGvNQv0hWP5ydwUD86n 0vzNNEFzqRfegZU - TPPJ457d+fpUkHiqSK7jbTI5USJs7ZHyFA68kfzrb2adlexVKrBTUmaUnh20D xrf3ESyhtv - zK2QK9F+G/gizntY7vT5ZbpbQFpGVfRSdvPPQV5zq/iSHUdWOoWax4DCTaw5Y8dMdQ PSu88 - LfF+DwndGzW1mQSr57xR8bmPTI6Dt9PenUpSULRPc+v0lH4I83fU9C8K/FbVNEjiudEt5ZY - 7Z0VygJ3KMgrgnn7xHHY17P8I/GdvJ8QbvU7Kf5pyrNGG27WCjcMD0I6182+CvH8mra9ZrHH - PY/Y 51MaTIBHIf4g+Bzk8c9a9b+Hs0+n6pJdaFbeUl8yGbYo+XHAJ7AE1y1KbvqOlilSmpx - 2P0S8A/HK 8j8IadaGcTW0jPHKjn54flBVj7E45z61Fr9/fWlwup6k0F5C8bQshOd28EDI9C - A3P4V4x8JNYuvi BpsQ0+WS4vLKIiKNEA8zYpJBI6k7SPXgV6l4WZvGWhw2ksw/tEkeV5qna - /yk4PoR/M9KvDrmqbE4 2tGULSZ4z8RPBMei61LLpkTrDI67k6hNwzj8wR+FT6BpskYQmNv3 - gyMDrWN+2rY+OtC0qe98JXUu nXCt5s+yMAsoiRWKnGOkYb8a+Hrn9rXxp4a8SPHLrurF45p - AySzsdo4x7Z69K6nRs7s8ZVmk3LdH 7K+AJWX9m3DKQQr8fSU152l0TJhs9a+Rv2WP+Ci/iI - rFp2r6kZlkygWb5o1zn7wNeq+C/wDgoN4a n8cf2H8Z9E+x75zCNRsW2hBnG5oz1H5Vz1sul - Ud4vU9DDZrGgvZzjt1Wp7pa3GBtJz9BV+G4yBnm quv6OmjywTaZOt3p99ELi0uV5SeM9CKj - tbgkcnJ+leVKm4PlZ7EK0asVKLumbdtcksCG4/Wv2h+B d0ut/BvwlerhvtGlWz5/7ZrX4p2 - dxsOa/Yv9ijVv7a/ZR8Czltx/stIyf90lf6VadoaHh51U5IRl HzPT2iVlwygj0IrNk8H2Tu - xMEJyc/drUp26iMpQ2Z85RxEo394/jY8IeNIdFsxPeTRxRAbxlsYXG c1w/xT/bQur65ls/A - X7i0U484/fcjuPSvHdU8VX+pabb2LzEwxrt68t9awTYOkhB5I5619dXrpfA jihQgnzM3vE3 - xH1XxbdtL4hvJ7tnPO5zwPYViz7Zw7x5OPWoyS3Ocn+VAkVMliR2OK5JVJNXZ0W7 EYYjrzz - TCSxye9KxG4nt2pmfmP6Vxvey3NEhrt5bcGr1oxFucnhuvY4qtY2TahfJDCVDyHA3HAp4 uf - 3RC9+PwqYvl36mkdyS0AF1HuG4M2cHvW1ocmy6nlusRvKAobPzJk5P5jI/GsITmCdXQcpgj6 - 1u G5juo0k2JE0jHDqM7uOeOxHH50Qi5aMpS02NRbZ7aRLnzY7pGHykRkR/7ozya2YdIitor - ybWbaSQ FAURDjaxGST+n51tfDXTrWfQSLy1DpbxSSJM65ZicDgegJJPet3wtpV94pujYXIh - mtLkBZJEA8sl ckcdcYyOO9dFrrbQ7KTaV5fLqeY6laQ2lzts42BjcCJmP31ZjtYjsa6X4co - fEevf2fdyC3e52QAx 8kDIPPfA54rpfF/w8TVVnOmCET6evluQvXCkgDHsMDPOa5b4drep4w - Fxa2a+YjAKCdroT7dT1yK0 irK97F8zpO70PZT8H49KiljhAMrSZMomJlPoSvTk844PNdx4B - lv/AA1plzba8PNW4tjBDcxPhGII Iyex9jU3w2nf4gW8DkpHdQLGswjbO4su1uOh7MD9fw9X - +H3gC20q6/s/xKEMcLAOx+68LAjJI4B4 6fSs6kOfVot12o8tyx+z74gufB8LPo10ReLG3nq - MhUByu7ce/wAy5Gf4vTNew/CzxTeX6Q6iha2Y TK6rI3ILZXIP4fhmvJtI0bTrXwrqz3NqPt - kTLHD5CeX5y7lJDgEDIAH19a7m18drp3gTw8ttEZpk tmhKp8pSRnJLkH0DhRn0rJ0ZwfNEu - NeM1GMo79/62PYodUX4ueBPEFhpkCXl8trJEJLlN4ilbgDG OQQGB9jX5f8A7VX7P+meE9fh - uLoTWNpqEaS2zv8AfiyoZ0JH3grEjPtX6P8Aw18Zt4fiuTay26Tg JciUNtaTK7cfgSx985r - 5i/bf8IWFpo3iPU7VX1GxguHneCOI4wDnCnHCMzqMjGAtdT96PP8A1fQ4 nFwm/wCXz7Hw54 - UNx4H8TWcgkDJNiSJgwO9SxAyOx4/zmuy+MV9LYePLS8tnfF5Akob+Ek9SM+4r zK81e4v/A - BJ9p1pkHmvvjRB8sajsB2AxivVfiPMur+FPDN3cRAhcxYwfkUjdye+Tmrpt6af1uVez 5lts - fo/+wp4yf4v/ALJ/2RpXnvPCOJFU8uIXOCPwIB/Ou0tbnawySBXhn/BGT4xW2har4u0qJYJV - fS3ncOMhljZGKn6jP5V9R/F/wVZ6Iljrng5hJour5aIqSRG45ZD9M1zZlhHJ+2R1ZPjoxnL - Cy7u3 52MK0n6Z578V+uf/AATa1U6r+x34X3tuNs1xAfbbK2P0Ir8gLKff3r9WP+CSeqjUP2 - TFhySbPV7m P6ZCN/WvFatFnRnS/cfM+nKKKKk+UP4HzMwPBPAwOaVrkj7pI9ajU5BDZoA3n - 2HPvX0PM+Tsb2QB 8HK96aZDyFyc03JR+DS54znmuVzve+5VrDt+7ORx3ppXLfL9KQfKc/hT - mGGJB5PepcdL9h7DD8kg 25GOfpU0UgZzI3GOo96gkG49c4pVPTJx3rFKWxXoTRL50wDdWPX - tWhFBKFEahxzhARwc+lVLGMSM DkAL3NT6dc3IuVW0dlfPyjPAP4100Y2SBHuPh23l846XpM - 0SLZWcQbfF9xigLEnHqx49q9N+Gvhs Jo+oNdNC0jRuY3jBCFwowqgjjNeY+Gbu30Lwu73Fx - FFO0Q8133MpLL6V6x8N/E1lfaTBdWV0sUEK CExuCF3Dknbjrk10zg1H3f62/M7o2Sut+pmx - yzS2D22qWoikv4wZC6FGkZWAyOOnI5964pPBqeA/ iPBZThp5J5DP9oZsKgXnC88NgHnrXrO - qeHrnSIkeeQ3Xmv54lySY+/B9CO1QeIfBVr4pujfyr89o RIqBiGcdPlPuTz7elEHZ3T0KnK - 7v2G/C+S08KeMGjnf7MLkBYzI/DqeQw/E/pX0hp2mrNY/6VuWa 4nK253AmUBRnHqrKenqPr - XhOueHbTxFNHcJFCbi1MYkQjZk7RgKfT5T+de1aRZRa7oNkNSmxHbEy W8gP3WU4KE5oi7yV - 2ZvVJs7PxD4Ku9V8Cx2GliJbm1mExQ8tKj7d5B9uOBzxXFDwtr/hj4kSaZPC ptLHU3e6Erj - y5U5yVb+FSpOB/hXouj60+q2to9i8kd9axMZVzhZVUkHPrnKkfWsnW9YE2g2msyMi XF/K9n - IpGBNFtz847MGJAPPFbWV72JUmtJdTZj1x9C0GCRbe3kexbyi0+Wea2c74Wb3Afbnvtpb3 Q - 28Z+HriC6hgtmuLK4syjODC6z4Q/iMg57VxHhpZbvTp7DWrpY72BURJgCYrkR5IBz0IU9uOK - 9J8 F6YukjTYIjMbi+mQxtcHj7y7kKdMA/Nu7g1k6dlYbqe7Zv8A4PU/Mn9oT4A3fgKK51W0 - EK2Vrqr2 kcK7t8YYSEYJHzL+5fn1qOO8e6+AEzzM0ptZUAyeYixYAD2619rf8FIPglfavZa - Xf+GrQS2c5e8n sUjJLPE8iSMNuGJCgk4zwTivjWe3Ft8MdVs2iNtFdXSqMHchxJgAE88Zro - inL3r9iH7yUlu7Hrn/ AATb8fr8LYPGusagiTxS6FPbDe2F3NgAeueT/k19y/sMftKf8Lq0V - PAPiYGaw1TC2b/x2TgcMPb1 9q/MnQb1vCXwt1OG2uf9IluhaL5Ywsi7uSPXOOtfQf8AwTm8 - Sy6F8S9EneWWNo5F3MvOFzxnHfIx +NdlOKmnCWz0+5HLiIunerHdar5I+3PF3hifwR4pvNL - vyfMtJChOOuO9fpR/wRc1Rr74C+JrRjn7 LrAcc/34V/8Aia+Fv2j/ABD4W8ZfEFHivY9L1e - +gjKPIw+z3UmAPLJ/gfjHPFfZ//BFK2vNC8PeP tL1qGWCaK4tJtkgweVkGfpwOa+cxmFdFS - utND2KuNhjsInfXS6Pt8gqeaSp3TeKgryvh0PBnTcWf wOsvzEdfcUqEBhkZ/pSyjGcVFn5m - +tfQvZF7oV05PIphHHSpB9+mt/rT9TWNaXI7FbCHG0Bs+tOP TrSN/Wm56/SlG62AG9R+NIv - zjA5NJL96pLHm4XPrUWUpKJV7K5f0yMIpEqgpgZ55zWx4e0hdV1Sb yy3lxqGOxCCASAcntx - 3rIJwiY710ehOU8JXJUkFmUMQeSMjrXdTSUkOk7y19TuoZIr9Ht7NYfIim UAE58wbcDPsoG - a9R+DNlazaQrTsjK11JGo+9yBggfXIOfavJvhzGr2zl1BJmbkj2FelfApinh692 EjbfNjHb - KnNbVF+75l5fidEaj0a6ux6LpGp3bmf+1IWMEkXkBCMqjLldynvkEce1anhBFi06KVH8 6Wx - zBIf4kRm657kcf5zXOLO41i5QO+0yxEjPB5I6fTitbwMc+MNRQ/cMI+XtznPFcvKloa03eSN - l IFsvEwsbdTPHqTnZlcIH2k/UA449DXR+HGfwj4TitYy19BaqdpVssxyxIPr1/SuasJGH9k - MGO4Sq Ac89DXS6KojtpPLAX9/J0470Qlr9w5SvLbuekfDPxFHFoEsV3M5nYjDlfmUEc/X6V - H8Q9NGn6Npd xcSzQxJeMI3UbwdwDqeOg4Ye2KqRoI7awZAFLRqSQOTz3q/4xjWTwzLHIoaM - SK4UjI3DocevvXXC Xutoycrsx5pBqOh6imqB5LiSIH5G+XduAVgR0yMjFeieDdXk1Twvp7r - NG15pBCxB1zlSp53dsHAz /wDWrznwSxk0OcOSwNlMSDzz8h/qa3LmVoNM0wQMyB7WQsFON3 - 3evrWtSSavYydR6pHbfFn7Vr3h bT7jSNQkjfSI5bmOK4OchsrJg9cbXP1r4/8Ajp8NrT/hD - Nei8OiO1FhcXWo2jScJMvkiSROeVKeW 5Ud8e9fbllZxT/CkvNFG7/a/K3MoJ2HqufT2r5X+ - Ocanwn4wjKjZHbTFVxwp2SLkDtwxH0JFYyl7 PVL+tC1FSSPlP4g3B0jwZ4fgsm3vcwecV/u - HO3/69epfsweLG8OzJNFctHdJGDxwFxzn868b8Ykv JpYc5CcLn+EccCuv+GsjBuGI+Yjr2x - XcpNRsVJ3iovrdnufxy+Od/wCIdASeC9lEsUu8lWO786/T b/g31/4KiR6n4vt/AHxbuPtFx - qUC21nqDnL4UkojHuBk49AcV+Nfi+Rns2DsxGehPtXrv/BLe5kt v2mPCrW8jxsL+PBViD19 - qujCOLg6dRXUrr0IqUVDDuot1qj+t+k2g1Q8KSNL4W01pWLM1rESSckn YK0K+GkrOxC95XP - /2Q== -X-ABSHOWAS:COMPANY -CATEGORIES:My Contacts -X-ABUID:685FC9B6-8446-45B8-89AF-3F3BC70CA03A:ABPerson -UID:a nice UID -REV:date END:VCARD @@ -434,25 +55,12 @@ END:VCARD some valid etag BEGIN:VCARD VERSION:3.0 -PROFILE:VCARD FN:Vincent VAN HOUTTE -N:VAN HOUTTE;Vincent;;Dhr.; -BDAY:1978-12-31 TEL;TYPE=CELL,VOICE:0486 11 22 33 -ADR;TYPE=HOME:;;Brusselsestraat 108;DENDERMONDE;;B-9200 -LABEL;TYPE=HOME:Brusselsestraat 108\nB-9200 DENDERMONDE TEL;TYPE=HOME,VOICE:052 11 22 33 TEL;TYPE=HOME,FAX:052 44 55 66 -EMAIL;TYPE=HOME:vvh@gmail.no -ORG:Advocatenkantoor Suy\, Van Baeveghem & Van Houtte;; -TITLE:Advocaat -ADR;TYPE=WORK:;;Brusselsestraat 108;DENDERMONDE;;B-9200 -LABEL;TYPE=WORK:Brusselsestraat 108\nB-9200 DENDERMONDE TEL;TYPE=WORK,VOICE:052 11 22 33 TEL;TYPE=WORK,FAX:052 44 55 66 -EMAIL;TYPE=WORK:vvh@gmail.no -UID:a nice UID -REV:date END:VCARD @@ -466,139 +74,9 @@ END:VCARD some valid etag BEGIN:VCARD VERSION:3.0 -N:Mustermann;Anton;Karl;Dr.; FN:Überwerbung GmbH -NICKNAME:Boss -X-MAIDENNAME:Müller -X-PHONETIC-FIRST-NAME:Anto -X-PHONETIC-MIDDLE-NAME:Carl -X-PHONETIC-LAST-NAME:Mustrmahn -ORG:Überwerbung GmbH;Marketing -TITLE:CEO -EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref:karl@mustermann.de TEL;TYPE=WORK;TYPE=pref:+49 30 1234567 TEL;TYPE=CELL:+49 172 1234567 -ITEM1.ADR;TYPE=WORK;TYPE=pref:;;Musterweg 1a;Musterhausen;;12345;DE -ITEM1.X-ABADR:de -NOTE:Test vCard -ITEM2.URL;TYPE=pref:mustermann.de -ITEM2.X-ABLABEL:_$!<HomePage>!$_ -BDAY;VALUE=date:1969-08-16 -X-AIM;TYPE=WORK;TYPE=pref:bethel69 -X-JABBER;TYPE=HOME;TYPE=pref:bethel69@foo.com -PHOTO;BASE64: /9j/4AAQSkZJRgABAQAAAQABAAD/4QBARXhpZgAATU0AKgAAAAgAAYdpAA - QAAAABAAAAGgAAAAAA AqACAAQAAAABAAAAS6ADAAQAAAABAAAASwAAAAD/2wBDAAIBAQIBA - QICAQICAgICAwUDAwMDAwYE BAMFBwYHBwcGBgYHCAsJBwgKCAYGCQ0JCgsLDAwMBwkNDg0M - DgsMDAv/2wBDAQICAgMCAwUDAwUL CAYICwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCws - LCwsLCwsLCwsLCwsLCwsLCwsLCwv/wAAR CABLAEsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQ - EAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgED AwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE - 1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol JicoKSo0NTY3ODk6Q0RFRkdISUpT - VFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWW l5iZmqKjpKWmp6ipqrKztLW - 2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3 +Pn6/8QAHwEAAwEBAQ - EBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3 AAECAxEEBSExB - hJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 OkNERUZH - SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaan qKm - qsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAI - R AxEAPwDmrj9qzxB4q8F3MniG/uYdSubhYYxa+U9zJGkYJQQNMpbgKwZV4KeormNe+MXiG9 - 0sWN/d 6Zql/qN1NcTzRW6EMXAVV2sg3SKwfPHGW5PU/NXgq90/xwJo9KS61eSaGSUyWqMGj - KqQs8kxJWDG TydpcEqo5yf11/4Ji/8ABJXw38XP2d9J+In7SN94qkuvFVlLceHdJhvjB/wj - 1pKCIrre0Yk+0FPm G8lIw6jYWBY/u9XinDYCEXtFaJRtt2SWiPiaeRYjHSc5Xb6uTf66s8/ - /AOCc37dE3wl+P1t4X8Tv byeB/H17a2d5Yr5cENlLegRwyxRgbV/eyRIyqACkgJ6V3f8AwV - Q/4Ja+FfjN4Pvrn4F6nL8NdY04 Y1WDR1EVjrFsALjDWzHZBOB5bCQFFycMGFfKv/BTD/gnv - 47/AGEfiLYv8B9Q8ReOfB2qrBa6ZqUM fm6noV1BKk8VrflFwCbdNyXRCBwjZAIWvXfiB+2P - b+A/Duup4N1e9Hh+9n86S7vbybUNQuSURRDD NcO5jDFGG4scbSVTawr53G5vg54qONg2lOP - vJdWu6vvbT5I9illmIp0fYJWs9G9jz34JfG/4c/sr fCK60rTtP8Q6x4V0tDfX+vaRYlNaSV - UZ3h1C0mI8uQkvP58D7JI7hXhjYJKU8x/Z2+NGvftT/tDe Evhx+zv4LvdMXVtWj1CHSYIpL - a00m1VjNc3Ny8iARxKhLPIByzhUBMsYLtX/AGpEstYuLnRLSz0X TnhWeC00yFYINUgMkrlm - ZcHzlkklIduI2kkwF3kV9V/8Et/+Chvhb4WfEQ+DfFt5frB49lgms9Vu L15okIAWOBQ5xCr - O3zgYVnkU45NfL8RY1cQ06dDncYRafLZa+r3Vrnt5Vl0sJX9pJpy73Z+mXwM/ Z70T4DaYl0 - n2bVPEbQeRc6rMu1wDtLRxK2TFFlF+TPJQFsnms342ftC2Fl4ZA0LU9Jg1G6uTp3l3 F3DBI - rgB8RtK4TOzc4z/AAhvQVyP7Yvxqv8A4S/sv/EDXvCMkQ1TQtEnubFrltsfmgqEMn96PLYG - PvHg1/N7+2f8V/iN8UvElhoX7U/j2W40HxVfm8xZwSx2kl0EMRieGVikLR5K7gPujjg15tHC - 1MNB 4ijR54Qdm+idtLndmc4yt9Yn+8lt/wAA/e/9k/8AaB079ofTLjxPptzp17b60S8Nzpl - wbmxvVt2a 3MsErcshdJR/tcnoa0PFmiJrniS9uo3nZJJSFZXIDAfKD+IGa+ff+CWvw+8VeA - P2Jf2e9d8UXYuU 8Q+DLcAmNTsgR5BZJkdSLKO359c19c+HLSFtFgMyxu2DlnQbjyetffYR/ - u1NrXb7m0fN4iSp1OVb Dda/4KE+Cvgzby2/iTwv4x8EWcL+WG1HwtJptupHQK4TY/XtwK82 - 1T/gr94O8R6tFo/geeHVdZ1t nttEgs3+0S6rdDGLYQg8kqpbII2bdx4VhXu/g742Q6hZm3u - 7hrceXsdCG2jtjJ+U1xHiv9lD4VfF nxveXet+EdE0zxJDaxyWesaXaRw3ce5jsukeJRtuIp - VVklTEi4GW8suD+Z4vK8YqfNQraLyV38/0 t8z6vA5rhfaf7TR+ab/I8K/4LBfETxl8Hv2LN - H0q10wXkPi/XoZfHeq27iT+x7WL/TG2xn5nLPHH CJT8qLETjL1+MfxN/a3tfEDSyST2sUcy - NG0JYsgh2/djYHCAAcHGCBuxgMD+qn7VfxOuj8KLjQf2 ifF2i23iMajceDdanuRBBp9xcpF - G4ZxLlUW5iaGZAoXBkG0jAr4Q1r9j/wCA3wFuoZPFF38OP7Tm uJp0g1e7jmkZFxwyzuwUBg - cyEBT0LV81VzqpQfJCm3/wD2MZllV83LHmW91trsfFl/8AHqa+04W+ h3s89xYuZbdLUedgN - jKsiqdxIC54zwM5IzW9ongr44fE+HzPhR8OPiRqYf8Ae+ZbaHdKquAWcLvj +bh0bAK45wa+ - x/Cv/BQjUPAHhDVYfhP8KfDsem6JI9jFq6+IZIvC8BkHmRBUsFSA3EuJWSJ503fN txsctle - Ev+Cy3xE8Z/C69YJ4S0Z7ixuLK+u9K0IvqWkxyq0R+xSXU8qS7Hj3/OjttDfNuZTSp4/F Yl - +7C3rJX+655To16TSdO3rp+Vz9DP2s/HvijX/+COuo2d9A3i74iXvgrS9L1fSdMK6jqY1WT7 - It xBJbW++QOsjsrLw3BJPFfk38ItK0j4p/tIaX8Mfi74bsfEs+tasPDM+ieITJYmz1S7X7P - byRvC6S RYkZIGY4eNt25T5YY/d2h/ts+G/28f8Agmn8SY/HJ0Lwx+0J4R0GTXFufD1vHpOp - 362ZM/2zSbzA l3GGBkePLSJghlPmHP5L6h+07ZfGeS58U/ErTru18b6vAJrzVNLmWGDU7tS - omurm2kjISSZN7yTQ uB56RuIxvOP0jhbF+0o1cPXceWT9Xtb7tjzuJqTqeyrNarsf1N638H - 7X4T/Afwt4W8H2UVpZfDnT LHT7G3iZpYoobO2S12IWJZlEanBb5iACecivG9N/ap8G2tr5V - 9rAhmid0eOd3jkQhiCCo6D09sV8 Ufsof8HJY8B+B/DGkfto6DqfifRooF0u88V6M3m39gpU - Ilxc2hbF1G6nLSRFZF8tvlY/KPqnT/ij +zZ8U9OtvENp47+Fetw6vDHcRXw8U2cDXKFRtZ4 - pXWSN8AbkdVZWDBgCCK+hwcZYJPC1baWaa2af Y+UlONV+0a3Ifhx8Z73+2bO21qeJYbskQN - cBm8xPTyVyWf6K2PavWPjR8a9R+G2jaDfeCtEiku70 fZDcanqCW1vabyqb5UiQuFPykAn+F - sgHIHyr4W+KukaRqrvYiKNvODPJGxEjuQBnJ5PQjPpXpX7Q 37Q2if8ADPus/FXVpJLKD4QD - b4htVCrDqljcQmS1HLKglFyyIhYhf3kisSHxXysKyjScr7Hvzpvn SaPD/wBrDx7ceA9bk0r - Q0sPEVh47sb298RaPdSi4j1+WKSG2uLYLMrIzoL6xntmZVSL7Iof5JmZc r9oK/wBH/Z90vV - ND+L/wV/4Wdpnifw2tpomuaYotdb0/W7S3EKzSSwyLcfZJIvs8rPbFmgkhbbCw nUJ4N4B8E - 3Xx3vYr/wCL3j3w9Z3XhXTry41Tw7aak8N5bmQxPPFfagBItohWGJSkaNI27hirZq7o 3x60 - a4+IetXPwqv/AA7JqFxc/Yrq31ia7ub63fzDgNbIvlqjISsbpIjFUOADvFfndZYrB0PrVSNl - dq/XXX0/G/kfouWPLc2rPL+a8+VO17fD0v8AoR/tE/GqXwN+wZpWn/GPR10m7EEqabpMWkw - xwf2j Kju11LZW4Cm8k3yPNO48w/MGIA2j8rPCvxck8L6VdWejRyWf2u2uIjL5h3qHfaCe4P - 3yfbiv1Q/a t8XXHxJ+Ekq6Dp0lzqmnea9tE0WdzvFJExHZgwZ1z/EvXOa+Ik/4JLeLfEHhK - 61Sx1vRNNvo5Jrm 4t7vdBHb2qx/PKWTd84JC7SANpB6mufCYunL45auxWeYapFxWFjaMen5 - /wDBPN/A/wARNVv73wvo fwue2uPEWp6pFFYwblSGN2EkTv8A9MI1IiYvwm1CSMK2ej/aF/Y - n+Jnww8c+Nr2y+H+uX/hzQ9dv 9NuNY0LTZrjR/tFq8a3DxOqH9yskmFfhDuZR9w12f7EHwo - i8PePpPHNpbafFaWDSrayxx74JLeG3 eANHuJLG5ncgDPIT3xX2xovxd8VJ4rudQ8O3d7YC2 - sfIJEsc1wXilEs0kYkYnKiTygf3e7bIVYEH P3mTZdGMY1pSak+lloflOccRSpzlh4wUkut3 - o/8Agn5geEfFMmoaFcxaYzTTWuJCYlZ5IW+bcCpO fm2sTnjDMuAGxXc6P+zn4Z+IWnprTwT - acdQLS/ZorqIpH8xHGITjOM4ycZxX3H4++MnwJ/a+17Wt K+PXw312CfQpEttS+J3h3w+bq9 - tT5asuozXFmkSyIsqvDLE0VzuePIlRDuT4y+LH7JfxA/Z48fX3 hHSfDWv+N9P0wRS2Ov8Ah - vWjDpesWs8SXEFxDGYWMe+KaNmQklXLA9K+1w+Z0KdNQqrnS8jyaU/r Ert+zdr6tar+vmfX - 3w++Lnib4n3V8fh1pFzqEenAySu08cNpYKpOGuJ952YHRWxkdOtekfBP9t/Q /hXrl/qHxw0 - zwx4gi04Rajpk0Wo2c9v4f1C0VpF1N7eWWX7WbeITSxI0RaOSPzIkLqrL1vh/9kC7 8Tazps - H7Rc+t2vgW5uFt4LTSNItrjT7SRw7LKp0x5LO7iXCgqXQgdlbICW/7Vnw9+AOq3cJ8O6L/ A - MKt1ELaaR8QfDOmmbUL1ysvmWzaOiGSFN8Uqbg5BG1vvMa/Nfr0cI4xqTS5tubZ9fTp3Pq61 - ZSf JbX7vz6ng37Vf7ct94/8U69eXlzrZ8OaPaQ3Fva3qSwXWrXl2m23a7LYMzyxb5zPycKW - znFfEXw0 +OXjr4W6/wCIvGXwk18W+qa9rRtLmJ41ktNRWLOyPyWGAI1kO1h0BIFfbX/BXfw - TrXxY8LeFfiB8 NZ1uvCdtZJCyWkBhnslnBaGZ967ijJJtww/c8g/eFfJ2i+BrPRvBej6faR - SR21szklgPnYtuLMRz tLseD0wAeldTxbziHvWt2X9eR5NXDyyDEOpCT5pWs3vY+hP2RvB3x - Q/bD8OTeKvH2rre6fa6nPaX Ftp8T2c0flOu2QtITkEs42r24q5+3Np83h650v4OfD13lu/F - bWy+JdQIeSa3sZZPMis1kzwZRG8r EcAKAetfWX/BG/wJbaL+yPpOq/KZ9dmuNRuV+8GdrqV - wRnvtUDNfOf7c2v2tj/wUK8eQ6ne6Z4Zj ENhAuoahKkVnYq2nWq72Zm2hiWfgr2rxsDk1CW - LVSWy18tD7bNM5rUsnUr/vJJa97/qca1xbXXxX 8B/D74fWqwWcV3FdX0UJCLBa2EfmJEB90 - OZfK5PACe9cb+1t8Stf+CPxVv49C1S1srix0a6WO4lQ YWC5uNsAEX3GJkjJKgYG0N2zWX8e - vCOlfCGxtdH8IeJTrPirxvbT6asenSC7kMNyYmuJYViAzvRX +Yv/ABAdsDJ8afsMfFT4lXJ - 8f+M9OjuNNQWmm6XFd3gl3W4EdqkkoQnHyuSwz1znnNfSY3MYYWLi 3Z36P/I/NsBlVbMmpU - 4N730/zPoD9lme3+CHhrw82oa82gazLYAS6e97HLJZRzItxPcvcKdsAWV3 cg4bEx5YsFHrH - g3/AIK7eFPC/hq1sNC1b4lala2wZUuobOK2inyxJaKOa4WQRkk7d6hiu0kc1u/s /f8ABule - 6n8Ira/8efEK+t/Eh23Mdvp9pFNpKyhi6vJFOn79gcfeY4IOMcVynif/AIJb/teeHNfu rLw - t4F+H/ibT7d8QapBcG0S8U87vJyQjckMAcbgcYHFdVLN3FJSjZdLxcr/cddfg/Ey96VnfopJ - W 9dV+Z+o/hr9n74XfDP4SP4j/AGE4rfNx5cNpY3us3iWVp5j70W5gMgkZVbG1SwxuOSydeC - /a+/Yq 1r49x2etfCSHTZrnStFXS9Q8Nx6VBptzDH5yTLPpt3bJGruJIm24ffGHbynQuwf4M - 1f4w+IPBf7S Og+HvDV1bW+kX+qNFcwGwt5DOvkyS/NI8ZcneAck56jOCRX2Z4t+OvjD4O/s - yazd/DTxDqWkzvf2 0QMUm5YldV3eWrZWMnJBZADjjOOK8auoVMP7KrH7nY9TEUFjLxm2103 - 0/Fo+a/B0t/4Z+HuoaV8U H1S41S2uLjSpm1m2CXbRoybVuFCIwYIwR3dQXZGbGDXzjrfgnw - 3+0L4m1b4XWF9p/hPx5ZD+1fCX iCKyilg8Q2iL++sbqLbmTy8krs/eFfKKn91Jn0n4v+MNW - 8QXF3rPiPU7/U9W1LVpLi7u724e5muX TyUQu0hJYKgCgHgKAAMCvnzwb/pn7T3w7up8+eni - GyCsvy7fkc8AcA/Owz1wcdABX59LMHgMV7Gk 3ZO2+uuuve1z9MynKaeKyymq9paW1R+m/wD - wT6/Z/T4M/s7aJ4fub6O5mtLaNBceWUMgKFshWJKZ 3fd7ZxX5Zf8ABfz4V3a/t0XOoaTcxR - 6d4i0LTLqQTymKKQpB5Dt83y7g0OcgdTk81+tHwZvZbCx8 qzby44Y2aNVAwmBxj0HJ46du1 - fAX/By7otq3hP4Ya00KnVLS9OkxXHO5bWSJZGix0I3ksCRlSzFS Nxz9tRq89BSkjwc4wvuu - nB2Stb8jwr/gi18KNJ1Xxh4v8SeILV7x9NvLaK2e6mVmDrE0kmGHX59o 47AZr9R/jt8V/AP - hb4I6jpN/fWMF1Fp3mBHOyN9rFo44iQBIwdFO0ZYZ4IHFfnh+yR4ftPBX7M3g PU/Csb2Woe - I7ZLzUp45W33cpdgXbJ64AHGOAB0r7Q8N3kknga484iQm3dcyKHIB3ZAJ6Z9q8atiW lJJan - pZTho0qUFJtrfsfor+z/wCKLfW/hno1ygB+1WUUyue4dQ3QgEDnof1616IbLzsMZbJcgcPa - F2/E7xn8q8D/AGLYwPBvhi3O4wvZQgoSSAAqYAz0HJ4FeH+Pfjl4suPGWotLrd2T5xHAUAAc - AAAc AACv0nhTLKvEkZWmoqKW6ueHxPmdLh5Qm4uXO3s7H//Z -ITEM3.X-ABDATE;TYPE=pref:2000-12-31 -ITEM3.X-ABLABEL:_$!<Anniversary>!$_ -X-ABSHOWAS:COMPANY -X-ABUID:73FD0F46-DE18-4F1F-AA2C-59E8738B4249:ABPerson -UID:a nice UID -REV:date END:VCARD @@ -612,278 +90,7 @@ END:VCARD some valid etag BEGIN:VCARD VERSION:4.0 -PRODID:-//ALAB//NOSGML Version 0.9//DE -UID:a nice UID -X-ABUID:ADDEEFEF-162A-260A-DEA3-1DA8-8A913187:ABPerson FN:Sven Joseph Klaus Michael Andresen\, Esq. -SORT-STRING:Andresen\, Esq.\, Sven Joseph Klaus Michael -N:Andresen\,Esq.;Sven;Joseph\,Klaus\,Michael;;Dr.\,Prof.;Esq. -X-DISPLAYNAME:Svenni -X-INITIALS:SA -X-INITIALS:SHA -NICKNAME:Svenny\,Sveny -PHOTO;ENCODING=b;TYPE=jpeg:/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHB - wcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zN - DL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM - jIyMjIyMjIyMjIyMjIyMjL/wAARCAFQATYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAA - AAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxF - DKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZW - mNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDx - MXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAA - AAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiM - oEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYW - VpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6w - sPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiig - AooooAKKKKACiiigAooooAKKKKACiiigAoorM17xBpnhnSZdT1a7S2tY/4m6seyqOpJ9BQBp - 1zuvePPC/hkMNW1q1glXrCrb5f++Fy36V5Hf+L/ABr8SXkj0hz4d8PMSFnOfPnX6jn8FwO2T - U2i/DfwxpKq89r/AGjc9WluzuBP+7938wfrQBr3X7Q+gGRotK0XVr+QdPkVA305J/Ssyb45e - KWbdb/D67WI9PMMrE/iIxXXQSQWsKxW8UcMS9EjUKB+AqT7b70AeeXP7Q3iGxkUXnhKKDP8M - ryIT+Yq/Y/tLWDlRf8Ahu5hHcwXKyfoVX+ddk9ykiFHCsp6qwyDXJa54B8Ma4Hd7BbS4b/lt - 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 - //Z -X-SPOUSE:Manuela Graf -X-EVOLUTION-SPOUSE:Manuela Graf -ITEM1.X-ABRELATEDNAMES:Manuela Graf -ITEM1.X-ABLABEL:_$!<Spouse>!$_ -ITEM2.X-ABRELATEDNAMES:Manager -ITEM2.X-ABLABEL:_$!<Manager>!$_ -ITEM3.X-ABRELATEDNAMES:Aufsichtsrat -ITEM3.X-ABLABEL:_$!<Manager>!$_ -ITEM4.X-ABRELATEDNAMES:Barbara Jonas -ITEM4.X-ABLABEL:_$!<Assistant>!$_ -ITEM5.X-ABRELATEDNAMES:Dominik Maller -ITEM5.X-ABLABEL:_$!<Assistant>!$_ -ROLE:CTO -ROLE:Vorstand -X-MANAGER:Manager -X-MANAGER:Aufsichtsrat -X-EVOLUTION-MANAGER:Manager -X-EVOLUTION-MANAGER:Aufsichtsrat -X-ASSISTANT:Babsi -X-ASSISTANT:Dominik -X-EVOLUTION-ASSISTANT:Barbara Jonas -X-EVOLUTION-ASSISTANT:Dominik Müller -BDAY;VALUE=date:1971-06-21 -X-ANNIVERSARY:2000-01-01\, Testfeier -X-ANNIVERSARY:2003-2-2\, Blafeier -X-EVOLUTION-ANNIVERSARY:2000-01-01\, Testfeier -X-EVOLUTION-ANNIVERSARY:2003-2-2\, Blafeier -IMPP:aim:balbala -IMPP:aim:hakunamatata -X-AIM:balbala -X-AIM:hakunamatata -EMAIL;TYPE=INTERNET:sven@andresen.de -EMAIL;TYPE=INTERNET:andresen@andresen.de TEL;TYPE=WORK,VOICE:+49 89 11 11 111 TEL;TYPE=WORK,VOICE:+49 234 222 222 TEL;TYPE=WORK,FAX:+49 7373 73 @@ -896,12 +103,6 @@ TEL;TYPE=CAR,VOICE:+49 8292 38 383 TEL;TYPE=HOME,VOICE:+49 7327 272 727 TEL;TYPE=HOME,VOICE:+49 7272 7282 TEL;TYPE=HOME,FAX:+49 1010 1 -ITEM6.TEL;TYPE=VOICE:+49 8373 6262 -ITEM6.X-ABLABEL:_$!<Other>!$_ -ITEM7.TEL;TYPE=VOICE:+61 27 28 73 246 -ITEM7.X-ABLABEL:_$!<Other>!$_ -ITEM8.TEL;TYPE=FAX:+49 9382 3424 -ITEM8.X-ABLABEL:_$!<Other>!$_ TEL;TYPE=ISDN:8797 TEL;TYPE=ISDN:98732947234 TEL;TYPE=X-EVOLUTION-RADIO:+49 88 298 723 498 32 @@ -917,63 +118,6 @@ TEL;TYPE=MODEM:+49 7363 6363 TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373 TEL;X-EVOLUTION-TTYTDD:+49 8378 33 TEL;X-QUICKDIAL:13355 -ADR;TYPE=WORK;CHARSET=utf-8: - PO 373;Andresen AG\, R&D;Messegasse 7;Passau;Bayern;94036;Deutschland -ADR;TYPE=WORK;CHARSET=utf-8:6266 AA;andresen Holding\, Geschäftsleitung; - Weisenstraße 13;Irgendwo;Niedersachsen;34332 -ADR;TYPE=HOME;CHARSET=utf-8:;;Weisenstraße 13 ;Irgendwo;;34332 -ADR;TYPE=X-OTHER:;;Irgendwo;Nirgendwo;Sonstwo;0000;Antarktis -ORG:andresen AG;R&D;;XXX\, 033 -ORG;CHARSET=utf-8:andresen Holding;Geschäftsleitung;;-\, 0223 -X-HOUSE;TYPE=WORK:XXX -X-HOUSE;TYPE=WORK:- -X-ROOM;TYPE=WORK:033 -X-ROOM;TYPE=WORK:0223 -LABEL;TYPE=WORK:1. Stock\, links -LABEL;TYPE=WORK:oder rechts -URL;TYPE=WORK:http://www.andresen.de -URL;TYPE=WORK:http://www.andresens.de -ITEM9.URL;TYPE=HOME:http://www.zuhause.de -ITEM9.X-ABLABEL:_$!<HomePage>!$_ -ITEM10.URL;TYPE=HOME:http://www.andresen.de/~andresen -ITEM10.X-ABLABEL:_$!<HomePage>!$_ -X-BUSINESS-CATEGORY:IT -X-BUSINESS-CATEGORY:Development -KEY;ENCODING=b;TYPE=X-CERT:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2R - ENDQXlXZ0F3SUJBZ0lKQUpUeXNHNDV0V3BZTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdiTVFzd - 0NRWUQKVlFRR0V3SkJWVEVUTUJFR0ExVUVDQk1LVTI5dFpTMVRkR0YwWlRFTk1Bc0dBMVVFQ - nhNRVEybDBlVEVoTUI4RwpBMVVFQ2hNWVNXNTBaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUS - FJrTVF3d0NnWURWUVFMRkFOU0prUXhGakFVCkJnTlZCQU1URFZOMlpXNGdRVzVrY21WelpXN - HhIekFkQmdrcWhraUc5dzBCQ1FFV0VITjJaVzVBWVc1a2NtVnoKWlc0dVpHVXdIaGNOTVRBd - 05qSXpNRGd5T0RFNFdoY05NVEV3TmpJek1EZ3lPREU0V2pDQm16RUxNQWtHQTFVRQpCaE1DU - VZVeEV6QVJCZ05WQkFnVENsTnZiV1V0VTNSaGRHVXhEVEFMQmdOVkJBY1RCRU5wZEhreElUQ - WZCZ05WCkJBb1RHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU1NQW9HQTFVR - UN4UURVaVpFTVJZd0ZBWUQKVlFRREV3MVRkbVZ1SUVGdVpISmxjMlZ1TVI4d0hRWUpLb1pJa - HZjTkFRa0JGaEJ6ZG1WdVFHRnVaSEpsYzJWdQpMbVJsTUlHZk1BMEdDU3FHU0liM0RRRUJBU - VVBQTRHTkFEQ0JpUUtCZ1FDdEtPWnJBOXBjdjJWUVpkSEg4YmhhCmZqMlZWMW9HakxjTkt3M - ktWVkJ6anphQVlyaU9HcnBNWDdhcW1oL3pjNHhBMTVDc1JJYjJoQXpPcDlTeldvQ00KbXhZc - FN5eG8rbUJHUGRYOVcvTStYcStSYUtGSURpdHZyL0xBb2I5N0oveWp5R0JDYU4vdExvdG9ZN - 3F5TjAxUQpWTkRYNkJkcS9GZTFjcUdhcnFvdzNRSURBUUFCbzRJQkJEQ0NBUUF3SFFZRFZSM - E9CQllFRkhNaFBPR255aENtCmxWcHlCZHhCTVczZ2drbS9NSUhRQmdOVkhTTUVnY2d3Z2NXQ - UZITWhQT0dueWhDbWxWcHlCZHhCTVczZ2drbS8Kb1lHaHBJR2VNSUdiTVFzd0NRWURWUVFHR - XdKQlZURVRNQkVHQTFVRUNCTUtVMjl0WlMxVGRHRjBaVEVOTUFzRwpBMVVFQnhNRVEybDBlV - EVoTUI4R0ExVUVDaE1ZU1c1MFpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNUXd3CkNnW - URWUVFMRkFOU0prUXhGakFVQmdOVkJBTVREVk4yWlc0Z1FXNWtjbVZ6Wlc0eEh6QWRCZ2txa - GtpRzl3MEIKQ1FFV0VITjJaVzVBWVc1a2NtVnpaVzR1WkdXQ0NRQ1U4ckJ1T2JWcVdEQU1CZ - 05WSFJNRUJUQURBUUgvTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRHQkFGcnVidGpoWVB1RERHV - VpQRTQraUo2a3FmdEtXWDFJVzdmTXdtc3BRUWt5CitXUThSL3AxbURrc3ZEQ3hDYWp2YVduS - VI2dGIwbmtCMTFFNmQ0dDhkMkxWTTE4M3dDUWJtMDRJS05mdkRKOXQKUE4vdHBVTkJrc0Vka - XBlMEM1SEgyMnY0RitSSzVUK1lqM1J6VHZmOTdROVMzTzF3eE5lZkt0NXVUNFFxNUZtdAotL - S0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== -CALURI:http://caldav.andresen.local/sja -FBURL:http://caldav.andresen.local/freebusy -CAPURI:http://caldav.andresen.local/access -CALADRURI:http://caldav.andresen.local/access -X-DESCRIPTION:Beschreibung -X-DESCRIPTION;CHARSET=utf-8:außerdem -NOTE:Nur so ein Test! -CATEGORIES:bla,blubb,test,hihi,oops -REV:date END:VCARD @@ -987,76 +131,7 @@ END:VCARD some valid etag BEGIN:VCARD VERSION:4.0 -PRODID:-//ALAB//NOSGML Version 0.9//DE -UID:a nice UID -X-ABUID:A93F52CB-C15F-1F34-2C49-7A67-0971277F:ABPerson FN:Hans Dieter Schmidt -SORT-STRING:Schmidt\, Hans Dieter -N:Schmidt;Hans Dieter;;Dr.;Esq. -X-DISPLAYNAME:HaDi Schmidt -X-INITIALS:HW -NICKNAME:HaWe -X-SPOUSE:Maja Schultze -X-EVOLUTION-SPOUSE:Maja Schultze -ITEM1.X-ABRELATEDNAMES:Maja Schultze -ITEM1.X-ABLABEL:_$!<Spouse>!$_ -ITEM2.X-ABRELATEDNAMES:Barbara Jonas -ITEM2.X-ABLABEL:_$!<Assistant>!$_ -ITEM3.X-ABRELATEDNAMES:Klaus Timm -ITEM3.X-ABLABEL:_$!<Assistant>!$_ -ROLE:Projektleiter -X-ASSISTANT:Barbara Jonas -X-ASSISTANT:Klaus Timm -X-EVOLUTION-ASSISTANT:Barbara Jonas -X-EVOLUTION-ASSISTANT:Klaus Timm -BDAY;VALUE=date:1977-12-10 -BDAY;VALUE=date:1975-11-11 -DDAY;VALUE=date:2007-01-02 -X-DDAY;VALUE=date:2007-01-02 -X-ANNIVERSARY:2000-02-01\, -X-ANNIVERSARY:2001-02-02\, -X-EVOLUTION-ANNIVERSARY:2000-02-01\, -X-EVOLUTION-ANNIVERSARY:2001-02-02\, -X-EVOLUTION-BLOG-URL:blog.diesistmeineip.de -ITEM4.URL:blog.diesistmeineip.de -ITEM4.X-ABLABEL:_$!<Other>!$_ -URL;TYPE=WORK:http://www.tu-hh.de -URL;TYPE=WORK:http://www.telekom.de -ITEM5.URL;TYPE=HOME:http://www.hadi-schmidt.de -ITEM5.X-ABLABEL:_$!<HomePage>!$_ -IMPP:aim:477826262 -IMPP:aim:aaab3ttebb3 -IMPP:icq:972398472394 -IMPP:icq:8972364872634 -IMPP:ymsgr:mailaddr@yahoo.co.uk -IMPP:ymsgr:yahoo@yahootar.bla -IMPP:xmpp:jabjab187383 -IMPP:xmpp:jabberwookie@starwahrs.co.com -IMPP:msn:blablubb@langedomain.org -IMPP:msn:738246832746 -IMPP:skype:hadi.schmidt-skype -IMPP:skype:askjdhasd -IMPP:ichat:ichatichat -IMPP:ichat:second-ichat -IMPP:nm:netnetmeetings -IMPP:nm:vielleicht@eine.email.de -IMPP:gtalk:gooogletalk -IMPP:gtalk:googletalk2 -IMPP:sip:ipphon-addr.woauchimmer.de -X-AIM:balbala -X-AIM:hakunamatata -X-AIM;TYPE=WORK:972398472394 -X-AIM;TYPE=WORK:8972364872634 -X-ICQ:972398472394 -X-ICQ:8972364872634 -X-JABBER:jabjab187383 -X-JABBER:jabberwookie@starwahrs.co.com -X-MSN:blablubb@langedomain.org -X-MSN:738246832746 -X-SKYPE-USERNAME:hadi.schmidt-skype -X-SKYPE-USERNAME:askjdhasd -EMAIL;TYPE=INTERNET:ich@hadi-schmidt.de -EMAIL;TYPE=INTERNET:hadi@telekom-d.de TEL;TYPE=WORK,VOICE:+49 9823 9084 TEL;TYPE=WORK,VOICE:+49 234 234 234 TEL;TYPE=WORK,FAX:+49 7373 73 @@ -1066,10 +141,6 @@ TEL;TYPE=PREF,VOICE:+49 12 34 567 TEL;TYPE=CAR,VOICE:+49 8292 38 383 TEL;TYPE=HOME,VOICE:+49 7327 272 727 TEL;TYPE=HOME,FAX:+49 40 812 387 21 -ITEM6.TEL;TYPE=VOICE:+49 8373 6262 -ITEM6.X-ABLABEL:_$!<Other>!$_ -ITEM7.TEL;TYPE=VOICE:+49 7272 72 -ITEM7.X-ABLABEL:_$!<Other>!$_ TEL;TYPE=ISDN:4234234235 TEL;TYPE=ISDN:98732947234 TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832 @@ -1082,24 +153,6 @@ TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 TEL;TYPE=MODEM:+49 8383 73 723 TEL;X-EVOLUTION-TTYTDD:+49 7373 73 TEL;X-EVOLUTION-TTYTDD:+49 8378 33 -ADR;TYPE=WORK;CHARSET=utf-8: - ;Uni Harburg\, -;Innstraße 71;Hamburg-Harburg;Hamburg;21373;Deutschland -ADR;TYPE=HOME;CHARSET=utf-8:;;Weisestraße 13 ;Irgendwo;;33443 -ADR;TYPE=X-OTHER:;;Nirgendwo -ORG:Uni Harburg;;;033 -X-ROOM;TYPE=WORK:033 -LABEL;TYPE=WORK:1. Stock\, links -LABEL;TYPE=WORK:oder rechts -X-BUSINESS-CATEGORY:IT -X-BUSINESS-CATEGORY:Development -CALURI:http://davical.hadi-schmist.home/hadi -FBURL:http://davical.hadi-schmist.home/freebusy -CAPURI:http://davical.hadi-schmist.home/cap -CALADRURI:http://davical.hadi-schmist.home/access -X-DESCRIPTION:Beschreibung -X-DESCRIPTION;CHARSET=utf-8:außerdem -CATEGORIES:uni -REV:date END:VCARD @@ -1113,30 +166,10 @@ END:VCARD some valid etag BEGIN:VCARD VERSION:3.0 -N:Test-Roßdeutscher;Jörg;;; FN:Jörg Test-Roßdeutscher -ORG:Factor Design AG; -EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref: - joerg.rossdeutscher@factordesign.foo -EMAIL;TYPE=INTERNET;TYPE=WORK:joerg@factordesign.foo -EMAIL;TYPE=INTERNET;TYPE=HOME:joerg.rossdeutscher@gesindel.foo -EMAIL;TYPE=INTERNET;TYPE=HOME:raettchen@gmail.bar TEL;TYPE=WORK;TYPE=pref:040 999999432571-43 TEL;TYPE=CELL:017799999978200 TEL;TYPE=HOME:040999999793017 -ITEM1.ADR;TYPE=WORK;TYPE=pref:;;abcStraße 58;Hamburg;;20357;Deutschland -ITEM1.X-ABADR:de -ITEM2.ADR;TYPE=HOME:;;Gayens Weg 9;Hamburg;;22761;Deutschland -ITEM2.X-ABADR:de -NOTE:Technik\, Web\, DTP\, SysAdmin\, €-Vermögensverwalter -ITEM3.URL;TYPE=pref:www.gesindel.baz -ITEM3.X-ABLABEL:_$!<HomePage>!$_ -ITEM4.URL:www.factordesign.foo -ITEM4.X-ABLABEL:_$!<HomePage>!$_ -BDAY;VALUE=date:1969-06-20 -X-ABUID:58AB933D-81D3-4095-8CB5-A63431AC934D:ABPerson -UID:a nice UID -REV:date END:VCARD diff --git a/testing/tests/carddav/2042-REPORT-addressbook-query.test b/testing/tests/carddav/2042-REPORT-addressbook-query.test index 9d333789..8be2fa20 100644 --- a/testing/tests/carddav/2042-REPORT-addressbook-query.test +++ b/testing/tests/carddav/2042-REPORT-addressbook-query.test @@ -20,7 +20,11 @@ BEGINDATA - + + + + + From 56dc373a71dfa84a7d0d5d27e22d95e176ca8ae6 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Mon, 8 Feb 2021 16:45:24 +0800 Subject: [PATCH 30/37] Add tests for AWLs "Fix: GetProperties must treat property names as case-insensitive" --- ...RT-carddavclient-HasNoEmailDiffCase.result | 24 +++++++ ...PORT-carddavclient-HasNoEmailDiffCase.test | 34 ++++++++++ ...PORT-carddavclient-HasEmailDiffCase.result | 68 +++++++++++++++++++ ...REPORT-carddavclient-HasEmailDiffCase.test | 32 +++++++++ 4 files changed, 158 insertions(+) create mode 100644 testing/tests/carddav/2054-REPORT-carddavclient-HasNoEmailDiffCase.result create mode 100644 testing/tests/carddav/2054-REPORT-carddavclient-HasNoEmailDiffCase.test create mode 100644 testing/tests/carddav/2055-REPORT-carddavclient-HasEmailDiffCase.result create mode 100644 testing/tests/carddav/2055-REPORT-carddavclient-HasEmailDiffCase.test diff --git a/testing/tests/carddav/2054-REPORT-carddavclient-HasNoEmailDiffCase.result b/testing/tests/carddav/2054-REPORT-carddavclient-HasNoEmailDiffCase.result new file mode 100644 index 00000000..07e5e293 --- /dev/null +++ b/testing/tests/carddav/2054-REPORT-carddavclient-HasNoEmailDiffCase.result @@ -0,0 +1,24 @@ + + + + /caldav.php/user5/addresses/sabre-vobject-41956788-1273-449e-bfb7-716850c91ec6.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-41956788-1273-449e-bfb7-716850c91ec6 +FN:CardDavClient Test879489908 +N:Test879489908;CardDavClient;;; +NICKNAME:Jonny2 +TEL;TYPE=HOME:12345 +TEL:555 +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2054-REPORT-carddavclient-HasNoEmailDiffCase.test b/testing/tests/carddav/2054-REPORT-carddavclient-HasNoEmailDiffCase.test new file mode 100644 index 00000000..31727940 --- /dev/null +++ b/testing/tests/carddav/2054-REPORT-carddavclient-HasNoEmailDiffCase.test @@ -0,0 +1,34 @@ +# +# Test for nonexistence of a lowercase property, which must treated +# cases-insensitively (hence EMAIL must not match) +# +# (only Jonny2 does not have EMAIL) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ diff --git a/testing/tests/carddav/2055-REPORT-carddavclient-HasEmailDiffCase.result b/testing/tests/carddav/2055-REPORT-carddavclient-HasEmailDiffCase.result new file mode 100644 index 00000000..772afcc8 --- /dev/null +++ b/testing/tests/carddav/2055-REPORT-carddavclient-HasEmailDiffCase.result @@ -0,0 +1,68 @@ + + + + /caldav.php/user5/addresses/sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13 +FN:CardDavClient Test212420682 +N:Test212420682;CardDavClient;;; +NICKNAME:Jonny0 +EMAIL;TYPE=HOME:john6doe@example.com +EMAIL;TYPE=WORK:doe6@example.com +X-CUSTOMPROP;X-CUSTOMPARAM=WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user5/addresses/sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36 +FN:CardDavClient Test913043917 +N:Test913043917;CardDavClient;;; +NICKNAME:Jonny1 +EMAIL:maxmu@abcd.com +X-CUSTOMPROP;X-CUSTOMPARAM=HOME,WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user5/addresses/sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b +FN:CardDavClient Test1520108081 +N:Test1520108081;CardDavClient;;; +NICKNAME:Jonny3 +ITEM1.EMAIL:foo@ex.com +ITEM1.X-ABLABEL:CustomLabel +IMPP;X-SERVICE-TYPE=Jabber;TYPE=HOME:xmpp:foo@example.com +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2055-REPORT-carddavclient-HasEmailDiffCase.test b/testing/tests/carddav/2055-REPORT-carddavclient-HasEmailDiffCase.test new file mode 100644 index 00000000..4613fc81 --- /dev/null +++ b/testing/tests/carddav/2055-REPORT-carddavclient-HasEmailDiffCase.test @@ -0,0 +1,32 @@ +# +# This is the inverse of 2054, we request a REPORT for (lowercase) +# property 'email' and expect all three results containing EMAIL +# +# (Jonny0, Jonny1 and Jonny3 should be returned) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ From fd35aacb853ddf44dfb471bd6ccd70c04f635928 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Mon, 8 Feb 2021 17:10:48 +0800 Subject: [PATCH 31/37] Add tests for AWLs "Fix GetProperties: Select properties with group prefix" --- ...-REPORT-carddavclient-HasNoGrpEmail.result | 67 +++++++++++++++++++ ...56-REPORT-carddavclient-HasNoGrpEmail.test | 32 +++++++++ ...57-REPORT-carddavclient-HasGrpEmail.result | 25 +++++++ ...2057-REPORT-carddavclient-HasGrpEmail.test | 30 +++++++++ ...REPORT-carddavclient-GrpEmailEquals.result | 25 +++++++ ...8-REPORT-carddavclient-GrpEmailEquals.test | 33 +++++++++ ...PORT-carddavclient-GrpEmailContains.result | 25 +++++++ ...REPORT-carddavclient-GrpEmailContains.test | 34 ++++++++++ 8 files changed, 271 insertions(+) create mode 100644 testing/tests/carddav/2056-REPORT-carddavclient-HasNoGrpEmail.result create mode 100644 testing/tests/carddav/2056-REPORT-carddavclient-HasNoGrpEmail.test create mode 100644 testing/tests/carddav/2057-REPORT-carddavclient-HasGrpEmail.result create mode 100644 testing/tests/carddav/2057-REPORT-carddavclient-HasGrpEmail.test create mode 100644 testing/tests/carddav/2058-REPORT-carddavclient-GrpEmailEquals.result create mode 100644 testing/tests/carddav/2058-REPORT-carddavclient-GrpEmailEquals.test create mode 100644 testing/tests/carddav/2059-REPORT-carddavclient-GrpEmailContains.result create mode 100644 testing/tests/carddav/2059-REPORT-carddavclient-GrpEmailContains.test diff --git a/testing/tests/carddav/2056-REPORT-carddavclient-HasNoGrpEmail.result b/testing/tests/carddav/2056-REPORT-carddavclient-HasNoGrpEmail.result new file mode 100644 index 00000000..b8f9db8b --- /dev/null +++ b/testing/tests/carddav/2056-REPORT-carddavclient-HasNoGrpEmail.result @@ -0,0 +1,67 @@ + + + + /caldav.php/user5/addresses/sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13 +FN:CardDavClient Test212420682 +N:Test212420682;CardDavClient;;; +NICKNAME:Jonny0 +EMAIL;TYPE=HOME:john6doe@example.com +EMAIL;TYPE=WORK:doe6@example.com +X-CUSTOMPROP;X-CUSTOMPARAM=WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user5/addresses/sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36 +FN:CardDavClient Test913043917 +N:Test913043917;CardDavClient;;; +NICKNAME:Jonny1 +EMAIL:maxmu@abcd.com +X-CUSTOMPROP;X-CUSTOMPARAM=HOME,WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user5/addresses/sabre-vobject-41956788-1273-449e-bfb7-716850c91ec6.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-41956788-1273-449e-bfb7-716850c91ec6 +FN:CardDavClient Test879489908 +N:Test879489908;CardDavClient;;; +NICKNAME:Jonny2 +TEL;TYPE=HOME:12345 +TEL:555 +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2056-REPORT-carddavclient-HasNoGrpEmail.test b/testing/tests/carddav/2056-REPORT-carddavclient-HasNoGrpEmail.test new file mode 100644 index 00000000..2fd9979f --- /dev/null +++ b/testing/tests/carddav/2056-REPORT-carddavclient-HasNoGrpEmail.test @@ -0,0 +1,32 @@ +# +# Test for non-existence of a grouped property (case-insensitive) +# +# (Jonny3 has item1.EMAIL set) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ diff --git a/testing/tests/carddav/2057-REPORT-carddavclient-HasGrpEmail.result b/testing/tests/carddav/2057-REPORT-carddavclient-HasGrpEmail.result new file mode 100644 index 00000000..6c0b17e8 --- /dev/null +++ b/testing/tests/carddav/2057-REPORT-carddavclient-HasGrpEmail.result @@ -0,0 +1,25 @@ + + + + /caldav.php/user5/addresses/sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b +FN:CardDavClient Test1520108081 +N:Test1520108081;CardDavClient;;; +NICKNAME:Jonny3 +ITEM1.EMAIL:foo@ex.com +ITEM1.X-ABLABEL:CustomLabel +IMPP;X-SERVICE-TYPE=Jabber;TYPE=HOME:xmpp:foo@example.com +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2057-REPORT-carddavclient-HasGrpEmail.test b/testing/tests/carddav/2057-REPORT-carddavclient-HasGrpEmail.test new file mode 100644 index 00000000..3e06b0f6 --- /dev/null +++ b/testing/tests/carddav/2057-REPORT-carddavclient-HasGrpEmail.test @@ -0,0 +1,30 @@ +# +# Request a report for a grouped property (inverse of 2055) +# +# (only Jonny3 has item1.EMAIL set) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ diff --git a/testing/tests/carddav/2058-REPORT-carddavclient-GrpEmailEquals.result b/testing/tests/carddav/2058-REPORT-carddavclient-GrpEmailEquals.result new file mode 100644 index 00000000..6c0b17e8 --- /dev/null +++ b/testing/tests/carddav/2058-REPORT-carddavclient-GrpEmailEquals.result @@ -0,0 +1,25 @@ + + + + /caldav.php/user5/addresses/sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b +FN:CardDavClient Test1520108081 +N:Test1520108081;CardDavClient;;; +NICKNAME:Jonny3 +ITEM1.EMAIL:foo@ex.com +ITEM1.X-ABLABEL:CustomLabel +IMPP;X-SERVICE-TYPE=Jabber;TYPE=HOME:xmpp:foo@example.com +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2058-REPORT-carddavclient-GrpEmailEquals.test b/testing/tests/carddav/2058-REPORT-carddavclient-GrpEmailEquals.test new file mode 100644 index 00000000..02de3b5e --- /dev/null +++ b/testing/tests/carddav/2058-REPORT-carddavclient-GrpEmailEquals.test @@ -0,0 +1,33 @@ +# +# Request a report for a text-match on a grouped property +# +# (only Jonny3 has item1.EMAIL set or a matching address) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + foo@ex.com + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ diff --git a/testing/tests/carddav/2059-REPORT-carddavclient-GrpEmailContains.result b/testing/tests/carddav/2059-REPORT-carddavclient-GrpEmailContains.result new file mode 100644 index 00000000..6c0b17e8 --- /dev/null +++ b/testing/tests/carddav/2059-REPORT-carddavclient-GrpEmailContains.result @@ -0,0 +1,25 @@ + + + + /caldav.php/user5/addresses/sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-34cd55a8-330f-47cd-8b69-6fbd16a0880b +FN:CardDavClient Test1520108081 +N:Test1520108081;CardDavClient;;; +NICKNAME:Jonny3 +ITEM1.EMAIL:foo@ex.com +ITEM1.X-ABLABEL:CustomLabel +IMPP;X-SERVICE-TYPE=Jabber;TYPE=HOME:xmpp:foo@example.com +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2059-REPORT-carddavclient-GrpEmailContains.test b/testing/tests/carddav/2059-REPORT-carddavclient-GrpEmailContains.test new file mode 100644 index 00000000..02ed600b --- /dev/null +++ b/testing/tests/carddav/2059-REPORT-carddavclient-GrpEmailContains.test @@ -0,0 +1,34 @@ +# +# Request a report for a text-match on a grouped property +# +# (only Jonny3 has item1.EMAIL set, but the text-match alone might also find +# Jonny0) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + @ex + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ From 9d144cfe2489e942952cbac67a3bd7d93b0fb652 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Mon, 8 Feb 2021 17:28:43 +0800 Subject: [PATCH 32/37] Add test for AWLs "Fix param-filter for multi-value parameters with TYPE=T1,T2 format" and update 2044 accordingly 2044 wants VCARDs with either TEL or EMAIL of TYPE=WORK. !20 correctly splits the comma separated list of parameters so another two vCards now correctly match (see also https://gitlab.com/davical-project/awl/-/merge_requests/20#note_503183133) --- .../2044-REPORT-addressbook-query.result | 80 +++++++++++++++++++ ...carddavclient-MultivalueParamEquals.result | 24 ++++++ ...T-carddavclient-MultivalueParamEquals.test | 36 +++++++++ 3 files changed, 140 insertions(+) create mode 100644 testing/tests/carddav/2060-REPORT-carddavclient-MultivalueParamEquals.result create mode 100644 testing/tests/carddav/2060-REPORT-carddavclient-MultivalueParamEquals.test diff --git a/testing/tests/carddav/2044-REPORT-addressbook-query.result b/testing/tests/carddav/2044-REPORT-addressbook-query.result index 766a05ec..aaf54073 100644 --- a/testing/tests/carddav/2044-REPORT-addressbook-query.result +++ b/testing/tests/carddav/2044-REPORT-addressbook-query.result @@ -85,6 +85,86 @@ EMAIL;TYPE=INTERNET;TYPE=WORK;TYPE=pref:karl@mustermann.de TEL;TYPE=WORK;TYPE=pref:+49 30 1234567 TEL;TYPE=CELL:+49 172 1234567 END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/andresenesq.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +FN:Sven Joseph Klaus Michael Andresen\, Esq. +EMAIL;TYPE=INTERNET:sven@andresen.de +EMAIL;TYPE=INTERNET:andresen@andresen.de +TEL;TYPE=WORK,VOICE:+49 89 11 11 111 +TEL;TYPE=WORK,VOICE:+49 234 222 222 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 160 073 727 272 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 39292 82 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,VOICE:+49 7272 7282 +TEL;TYPE=HOME,FAX:+49 1010 1 +TEL;TYPE=ISDN:8797 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 88 298 723 498 32 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 2763 382 882 28 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;X-EVOLUTION-CALLBACK:+49 7363 6363 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;TYPE=MODEM:+49 7363 6363 +TEL;X-EVOLUTION-TTYTDD:+49 3377 37 373 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +TEL;X-QUICKDIAL:13355 +END:VCARD + + + HTTP/1.1 200 OK + + + + /caldav.php/user1/addressbook/hans_dieter.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +FN:Hans Dieter Schmidt +EMAIL;TYPE=INTERNET:ich@hadi-schmidt.de +EMAIL;TYPE=INTERNET:hadi@telekom-d.de +TEL;TYPE=WORK,VOICE:+49 9823 9084 +TEL;TYPE=WORK,VOICE:+49 234 234 234 +TEL;TYPE=WORK,FAX:+49 7373 73 +TEL;TYPE=PAGER:+49 2626 26 +TEL;TYPE=CELL,VOICE:+49 7272 722 +TEL;TYPE=PREF,VOICE:+49 12 34 567 +TEL;TYPE=CAR,VOICE:+49 8292 38 383 +TEL;TYPE=HOME,VOICE:+49 7327 272 727 +TEL;TYPE=HOME,FAX:+49 40 812 387 21 +TEL;TYPE=ISDN:4234234235 +TEL;TYPE=ISDN:98732947234 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 349 832 +TEL;TYPE=X-EVOLUTION-RADIO:+49 9872 394 872 34 +TEL;TYPE=X-EVOLUTION-TELEX:+49 38 288 228 82 +TEL;TYPE=X-EVOLUTION-TELEX:+49 7722 88 28 282 +TEL;TYPE=MAIN:+49 6237 623 723 84 76 +TEL;TYPE=MAIN:+49 9324 32 479 234234 +TEL;X-EVOLUTION-CALLBACK:+49 8383 73 723 +TEL;TYPE=MODEM:+49 8383 73 723 +TEL;X-EVOLUTION-TTYTDD:+49 7373 73 +TEL;X-EVOLUTION-TTYTDD:+49 8378 33 +END:VCARD HTTP/1.1 200 OK diff --git a/testing/tests/carddav/2060-REPORT-carddavclient-MultivalueParamEquals.result b/testing/tests/carddav/2060-REPORT-carddavclient-MultivalueParamEquals.result new file mode 100644 index 00000000..1af09c1a --- /dev/null +++ b/testing/tests/carddav/2060-REPORT-carddavclient-MultivalueParamEquals.result @@ -0,0 +1,24 @@ + + + + /caldav.php/user5/addresses/sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-8121cd7a-8251-4b74-a952-ca91fdc21e36 +FN:CardDavClient Test913043917 +N:Test913043917;CardDavClient;;; +NICKNAME:Jonny1 +EMAIL:maxmu@abcd.com +X-CUSTOMPROP;X-CUSTOMPARAM=HOME,WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2060-REPORT-carddavclient-MultivalueParamEquals.test b/testing/tests/carddav/2060-REPORT-carddavclient-MultivalueParamEquals.test new file mode 100644 index 00000000..20a49d14 --- /dev/null +++ b/testing/tests/carddav/2060-REPORT-carddavclient-MultivalueParamEquals.test @@ -0,0 +1,36 @@ +# +# Test matching one of a multi-value parameter +# +# (Jonny1 has X-CUSTOMPARAM=HOME,WORK but "HOME" is not just a part but +# an entire value ("equals") of a multi-value parameter +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + + HOME + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ From 5ee16172af62ebfe68fcc261b29b813dd66003a1 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Mon, 8 Feb 2021 17:38:17 +0800 Subject: [PATCH 33/37] Add tests for AWLs "Fix param-filter that checks if a parameter is defined" --- ...1-REPORT-carddavclient-ParamDefined.result | 25 ++++++++++++++ ...061-REPORT-carddavclient-ParamDefined.test | 33 ++++++++++++++++++ ...-carddavclient-ParamDefinedDiffCase.result | 25 ++++++++++++++ ...RT-carddavclient-ParamDefinedDiffCase.test | 34 +++++++++++++++++++ 4 files changed, 117 insertions(+) create mode 100644 testing/tests/carddav/2061-REPORT-carddavclient-ParamDefined.result create mode 100644 testing/tests/carddav/2061-REPORT-carddavclient-ParamDefined.test create mode 100644 testing/tests/carddav/2062-REPORT-carddavclient-ParamDefinedDiffCase.result create mode 100644 testing/tests/carddav/2062-REPORT-carddavclient-ParamDefinedDiffCase.test diff --git a/testing/tests/carddav/2061-REPORT-carddavclient-ParamDefined.result b/testing/tests/carddav/2061-REPORT-carddavclient-ParamDefined.result new file mode 100644 index 00000000..b59a3ca1 --- /dev/null +++ b/testing/tests/carddav/2061-REPORT-carddavclient-ParamDefined.result @@ -0,0 +1,25 @@ + + + + /caldav.php/user5/addresses/sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13 +FN:CardDavClient Test212420682 +N:Test212420682;CardDavClient;;; +NICKNAME:Jonny0 +EMAIL;TYPE=HOME:john6doe@example.com +EMAIL;TYPE=WORK:doe6@example.com +X-CUSTOMPROP;X-CUSTOMPARAM=WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2061-REPORT-carddavclient-ParamDefined.test b/testing/tests/carddav/2061-REPORT-carddavclient-ParamDefined.test new file mode 100644 index 00000000..1b53ee68 --- /dev/null +++ b/testing/tests/carddav/2061-REPORT-carddavclient-ParamDefined.test @@ -0,0 +1,33 @@ +# +# Request a REPORT for EMAIL with defined TYPE parameter +# +# (only Jonny0 has a TYPE defined) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ diff --git a/testing/tests/carddav/2062-REPORT-carddavclient-ParamDefinedDiffCase.result b/testing/tests/carddav/2062-REPORT-carddavclient-ParamDefinedDiffCase.result new file mode 100644 index 00000000..b59a3ca1 --- /dev/null +++ b/testing/tests/carddav/2062-REPORT-carddavclient-ParamDefinedDiffCase.result @@ -0,0 +1,25 @@ + + + + /caldav.php/user5/addresses/sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13.vcf + + + some valid etag + BEGIN:VCARD +VERSION:4.0 +PRODID:-//Sabre//Sabre VObject 4.3.3//EN +UID:sabre-vobject-131cdf91-5460-423b-a836-e420e5affe13 +FN:CardDavClient Test212420682 +N:Test212420682;CardDavClient;;; +NICKNAME:Jonny0 +EMAIL;TYPE=HOME:john6doe@example.com +EMAIL;TYPE=WORK:doe6@example.com +X-CUSTOMPROP;X-CUSTOMPARAM=WORK:foobar +REV:date +END:VCARD + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/carddav/2062-REPORT-carddavclient-ParamDefinedDiffCase.test b/testing/tests/carddav/2062-REPORT-carddavclient-ParamDefinedDiffCase.test new file mode 100644 index 00000000..7ad8bd69 --- /dev/null +++ b/testing/tests/carddav/2062-REPORT-carddavclient-ParamDefinedDiffCase.test @@ -0,0 +1,34 @@ +# +# Request a REPORT for EMAIL with defined TYPE parameter +# (like 2061, but param-filter needs to be case-insensitive) +# +# (again only Jonny0) +# +TYPE=REPORT +URL=http://regression.host/caldav.php/user5/addresses/ + +HEADER=Accept: text/xml,application/xml +HEADER=Content-Type: text/xml +HEADER=Depth: 1 + +AUTH=user5:user5 + +# HEAD + +BEGINDATA + + + + + + + + + + + + +ENDDATA + +REPLACE=_"[0-9a-f]+"_some valid etag_ +REPLACE=/^REV:.*$/REV:date/ From 5c2cb6c34a7171a2f71d0de3bca699bad77a63cd Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Mon, 8 Feb 2021 18:04:25 +0800 Subject: [PATCH 34/37] CI: run interop tests from carddavclient by Michael Stilkerich --- .gitlab-ci.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7f18cf00..d1ac7fe7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -83,16 +83,20 @@ test: - cp -r /var/log/davical davical_log/test -test_bullseye: +test_bullseye_carddavclientinterop: stage: testall image: debian:bullseye artifacts: paths: - testing/report.xml + - carddavclient-master/testreports/unit/results.html - apache2_log/* - davical_log/* + - carddavclient-master/testreports/interop/* reports: - junit: testing/report.xml + junit: + - testing/report.xml + - carddavclient-master/testreports/unit/results.html when: always script: @@ -102,7 +106,7 @@ test_bullseye: - echo "en_NZ.UTF-8 UTF-8" >> /etc/locale.gen - locale-gen - echo "LANG=en_NZ.UTF-8" > /etc/default/locale - - apt-get -y install libdbd-pg-perl libyaml-perl php php-cli php-pgsql php-xml postgresql-client postgresql libapache2-mod-php curl xmlstarlet + - apt-get -y install libdbd-pg-perl libyaml-perl php php-cli php-pgsql php-xml postgresql-client postgresql libapache2-mod-php curl xmlstarlet composer phpunit - curl 'https://gitlab.com/davical-project/awl/-/archive/master/awl-master.tar.gz' | tar zxf - - mv awl-master /usr/share/awl/ - chown -R www-data /usr/share/awl/ @@ -130,6 +134,13 @@ test_bullseye: - apache2ctl start - useradd testrunner - cd testing && su testrunner -c 'IS_CI=yes ALLSUITES="regression-suite binding carddav scheduling" ./run_regressions.sh all x' + - cd .. + - curl https://codeload.github.com/mstilkerich/carddavclient/tar.gz/master | tar zxf - + - cd carddavclient-master + - composer install + - echo ' [ "username" => "user3", "password" => "user3", "discoveryUri" => "http://regression", "syncAllowExtraChanges" => false, "featureSet" => TestInfrastructureSrv::SRVFEATS_DAVICAL, ], ]; public const ADDRESSBOOKS = [ "Davical_0" => [ "account" => "Davical", "url" => "http://regression/caldav.php/user3/addresses/", "displayname" => "user3 addresses", ], ]; }' > tests/interop/AccountData.php + - mkdir -p testreports/interop + - phpunit -c tests/interop/phpunit.xml --no-coverage after_script: - mkdir -p apache2_log - cp -r /var/log/apache2 apache2_log/test_bullseye From 042ce5f076b723e8489ee48efe4976519775cd85 Mon Sep 17 00:00:00 2001 From: Klaus M Pfeiffer Date: Tue, 5 May 2020 23:20:02 +0200 Subject: [PATCH 35/37] add feature list_everyone (fixes #59) --- config/example-config.php | 8 ++++++++ htdocs/always.php | 1 + inc/always.php.in | 1 + inc/ui/collection-edit.php | 8 +++++++- inc/ui/principal-browse.php | 10 ++++++++++ inc/ui/principal-edit.php | 10 ++++++++-- 6 files changed, 35 insertions(+), 3 deletions(-) diff --git a/config/example-config.php b/config/example-config.php index cc4bdefa..8827e6b0 100644 --- a/config/example-config.php +++ b/config/example-config.php @@ -113,6 +113,14 @@ $c->admin_email ='calendar-admin@example.com'; // $c->local_styles = array(); // $c->print_styles = array(); +/** +* Allow users to see all accounts listed, or only their account and +* the accounts they have a relationship to in the web interface. +* Admins will still be able to see all accounts. +* Default: true +*/ +// $c->list_everyone = false; + /*************************************************************************** * * diff --git a/htdocs/always.php b/htdocs/always.php index eeba14dc..d2d3f100 100644 --- a/htdocs/always.php +++ b/htdocs/always.php @@ -134,6 +134,7 @@ $c->locale_path = '../locale'; $c->base_url = preg_replace('#/[^/]+\.php.*$#', '', $_SERVER['SCRIPT_NAME']); $c->base_directory = preg_replace('#/[^/]*$#', '', $_SERVER['DOCUMENT_ROOT']); $c->default_privileges = array('read-free-busy', 'schedule-deliver'); +$c->list_everyone = true; $c->enable_auto_schedule = true; diff --git a/inc/always.php.in b/inc/always.php.in index 10f07753..cffdb7bb 100644 --- a/inc/always.php.in +++ b/inc/always.php.in @@ -134,6 +134,7 @@ $c->locale_path = '../locale'; $c->base_url = preg_replace('#/[^/]+\.php.*$#', '', $_SERVER['SCRIPT_NAME']); $c->base_directory = preg_replace('#/[^/]*$#', '', $_SERVER['DOCUMENT_ROOT']); $c->default_privileges = array('read-free-busy', 'schedule-deliver'); +$c->list_everyone = true; $c->enable_auto_schedule = true; diff --git a/inc/ui/collection-edit.php b/inc/ui/collection-edit.php index 81bffb0b..1096839a 100644 --- a/inc/ui/collection-edit.php +++ b/inc/ui/collection-edit.php @@ -416,7 +416,13 @@ if ( $editor->Available() ) { $grantrow = new Editor("Grants", "grants"); $grantrow->SetSubmitName( 'savegrantrow' ); - $grantrow->SetLookup( 'to_principal', 'SELECT principal_id, displayname FROM dav_principal WHERE principal_id NOT IN (SELECT member_id FROM group_member WHERE group_id = '.$id.') ORDER BY displayname' ); + $limit_grantrow = ''; + if ( ! $c->list_everyone ) { + if ( ! $session->AllowedTo( "Admin" ) ) { + $limit_grantrow = 'AND (principal_id = \''.$session->principal_id.'\' or principal_id in (select member_id from group_member where group_id in (select group_id from group_member where member_id = \''.$session->principal_id.'\')) or principal_id in (select group_id from group_member where member_id = \''.$session->principal_id.'\'))'; + } + } + $grantrow->SetLookup( 'to_principal', 'SELECT principal_id, displayname FROM dav_principal WHERE principal_id NOT IN (SELECT member_id FROM group_member WHERE group_id = '.$id.') '.$limit_grantrow.' ORDER BY displayname' ); if ( $can_write_collection ) { if ( $grantrow->IsSubmit() ) { $_POST['by_collection'] = $id; diff --git a/inc/ui/principal-browse.php b/inc/ui/principal-browse.php index 28ad917b..4aa251e3 100644 --- a/inc/ui/principal-browse.php +++ b/inc/ui/principal-browse.php @@ -35,6 +35,16 @@ if ( isset($principal_type) ) { $browser->AndWhere( 'type_id = '.$principal_type ); } +if ( ! $c->list_everyone ) { + if ( ! $session->AllowedTo( "Admin" ) ) { + if ( isset($principal_type) && ( $principal_type == 1 || $principal_type == 2 ) ) { + $browser->AndWhere( '(principal_id = \''.$session->principal_id.'\' or principal_id in (select member_id from group_member where group_id in (select group_id from group_member where member_id = \''.$session->principal_id.'\')))' ); + } + if ( isset($principal_type) && $principal_type == 3 ) { + $browser->AndWhere( '(principal_id = \''.$session->principal_id.'\' or principal_id in (select group_id from group_member where member_id = \''.$session->principal_id.'\'))' ); + } + } +} $c->page_title = $browser->Title(); diff --git a/inc/ui/principal-edit.php b/inc/ui/principal-edit.php index 6646b7c2..b6983d79 100644 --- a/inc/ui/principal-edit.php +++ b/inc/ui/principal-edit.php @@ -615,7 +615,7 @@ function group_members_browser() { function grant_row_editor() { - global $c, $id, $editor, $can_write_principal, $privilege_names; + global $c, $id, $editor, $can_write_principal, $privilege_names, $session; $grantrow = new Editor("Grants", "grants"); $grantrow->SetSubmitName( 'savegrantrow' ); @@ -623,7 +623,13 @@ function grant_row_editor() { if ( isset($_GET['edit_grant']) ) { $edit_grant_clause = ' AND to_principal != '.intval($_GET['edit_grant']); } - $grantrow->SetLookup( 'to_principal', 'SELECT principal_id, displayname FROM dav_principal WHERE user_active AND principal_id NOT IN (SELECT to_principal FROM grants WHERE by_principal = '.$id.$edit_grant_clause.') ORDER BY fullname' ); + $limit_grantrow = ''; + if ( ! $c->list_everyone ) { + if ( ! $session->AllowedTo( "Admin" ) ) { + $limit_grantrow = 'AND (principal_id = \''.$session->principal_id.'\' or principal_id in (select member_id from group_member where group_id in (select group_id from group_member where member_id = \''.$session->principal_id.'\')) or principal_id in (select group_id from group_member where member_id = \''.$session->principal_id.'\'))'; + } + } + $grantrow->SetLookup( 'to_principal', 'SELECT principal_id, displayname FROM dav_principal WHERE user_active AND principal_id NOT IN (SELECT to_principal FROM grants WHERE by_principal = '.$id.$edit_grant_clause.') '.$limit_grantrow.' ORDER BY fullname' ); if ( $can_write_principal ) { if ( $grantrow->IsSubmit() ) { if ( $grantrow->IsUpdate() ) From 202e2edd5acdd547a2610fef3e992ccd3266025a Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Tue, 9 Feb 2021 01:23:54 +0800 Subject: [PATCH 36/37] tighten $c->list_everyone to look for DAV::read privilege and actually block access to principals and collections Groups really only exist in the davical web interface, CALDAV clients discover principals and collections based on GRANTs such as the DAV::read privilege, so use that for the web interface as well. Also, not listing users is nice, actually blocking access to those users (which can be enumerated with the id GET parameter) is a lot better. --- config/example-config.php | 7 +++++-- inc/ui/collection-edit.php | 8 ++++++++ inc/ui/principal-browse.php | 11 ++--------- inc/ui/principal-edit.php | 8 ++++++++ 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/config/example-config.php b/config/example-config.php index 8827e6b0..7be5509e 100644 --- a/config/example-config.php +++ b/config/example-config.php @@ -114,8 +114,11 @@ $c->admin_email ='calendar-admin@example.com'; // $c->print_styles = array(); /** -* Allow users to see all accounts listed, or only their account and -* the accounts they have a relationship to in the web interface. +* Allow users to see all accounts on the server in the web interface, or only +* their account and the accounts they have a relationship with. If set to +* false, users need the READ privilege to display another principal and their +* collections, and they need to be in the same group with another principal to +* find them in a drop-down list for granting privileges. * Admins will still be able to see all accounts. * Default: true */ diff --git a/inc/ui/collection-edit.php b/inc/ui/collection-edit.php index 1096839a..1211e7a5 100644 --- a/inc/ui/collection-edit.php +++ b/inc/ui/collection-edit.php @@ -64,6 +64,14 @@ if ( isset($privsql) ) { $privqry->Exec('admin-collection-edit',__LINE__,__FILE__); $permissions = $privqry->Fetch(); $can_write_collection = ($session->AllowedTo('Admin') || (bindec($permissions->priv) & privilege_to_bits('DAV::bind')) ); + if ( ! $c->list_everyone ) { + $can_read_collection = ($session->AllowedTo('Admin') || (bindec($permissions->priv) & privilege_to_bits('DAV::read')) ); + if ( ! $can_read_collection ) { + dbg_error_log( 'LOG WARNING', 'Access to id "%s"/"%s" by user "%s" rejected.', $id, $collection_name, $session->username ); + header('Location: index.php'); + @ob_flush(); exit(0); + } + } } // Verify CSRF token diff --git a/inc/ui/principal-browse.php b/inc/ui/principal-browse.php index 4aa251e3..b59c1a4a 100644 --- a/inc/ui/principal-browse.php +++ b/inc/ui/principal-browse.php @@ -35,15 +35,8 @@ if ( isset($principal_type) ) { $browser->AndWhere( 'type_id = '.$principal_type ); } -if ( ! $c->list_everyone ) { - if ( ! $session->AllowedTo( "Admin" ) ) { - if ( isset($principal_type) && ( $principal_type == 1 || $principal_type == 2 ) ) { - $browser->AndWhere( '(principal_id = \''.$session->principal_id.'\' or principal_id in (select member_id from group_member where group_id in (select group_id from group_member where member_id = \''.$session->principal_id.'\')))' ); - } - if ( isset($principal_type) && $principal_type == 3 ) { - $browser->AndWhere( '(principal_id = \''.$session->principal_id.'\' or principal_id in (select group_id from group_member where member_id = \''.$session->principal_id.'\'))' ); - } - } +if ( ! $c->list_everyone && ! $session->AllowedTo( "Admin" ) ) { + $browser->AndWhere( '(pprivs('.$session->principal_id.',dav_principal.principal_id,'.$c->permission_scan_depth.') & 1::BIT(24))::INT4::BOOLEAN' ); } $c->page_title = $browser->Title(); diff --git a/inc/ui/principal-edit.php b/inc/ui/principal-edit.php index b6983d79..a6de8305 100644 --- a/inc/ui/principal-edit.php +++ b/inc/ui/principal-edit.php @@ -33,6 +33,14 @@ $can_write_principal = ($session->AllowedTo('Admin') || ($session->principal_id if ( !$can_write_principal && $id > 0 ) { $target_principal = new Principal('principal_id', $id); $can_write_principal = $session->HavePrivilegeTo('DAV::write', $target_principal->dav_name()); + if ( ! $c->list_everyone ) { + $can_read_principal = $session->HavePrivilegeTo('DAV::read', $target_principal->dav_name()); + if ( ! $can_read_principal ) { + dbg_error_log( 'LOG WARNING', 'Access to "%s" by user "%s" rejected.', $target_principal->dav_name(), $session->username ); + header('Location: index.php'); + @ob_flush(); exit(0); + } + } } From e92e9815423be37b2120acb1d5d38ae76cde4110 Mon Sep 17 00:00:00 2001 From: Florian Schlichting Date: Tue, 9 Feb 2021 01:37:31 +0800 Subject: [PATCH 37/37] Listing External Calendars is part of the Administration menu and should be restricted to admins this could be made configurable, or lumped in with $c->restrict_setup_to_admin, but non-admins only get here by manually entering the URL... --- inc/ui/external-browse.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/inc/ui/external-browse.php b/inc/ui/external-browse.php index 2a8c16bd..2be631f5 100644 --- a/inc/ui/external-browse.php +++ b/inc/ui/external-browse.php @@ -1,6 +1,10 @@ AllowedTo("Admin" ) ) { + @ob_flush(); exit(0); +} + $browser = new Browser(translate('External Calendars')); $browser->AddColumn( 'collection_id', translate('ID'), 'right', '##collection_link##' );