lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: a better convert-ly


From: Erik Sandberg
Subject: Re: a better convert-ly
Date: Fri, 17 Dec 2004 00:48:46 +0100
User-agent: KMail/1.6.2

On Thursday 16 December 2004 22.30, Han-Wen Nienhuys wrote:
> address@hidden writes:
> > This point is probably obvious to programmers, but since my complaint
> > started this, I'd like to make sure it's clear: what's really required
> > is
> > a computer-upgradable syntax, not a stable syntax.  A stable syntax
> > would be nice (in that we wouldn't have to spend time updating
> > convert-ly), but that doesn't need to be the main goal.
>
> Yes - unfortunately, computer-upgradable syntax is hard to
> do. Generally, people want to retain their whitespace, comments and
> identfiers. When a .ly file is parsed, that information is thrown
> away.  Even if we keep it, for complex upgrades (the kind that
> convert-ly doesn't handle), that information will be difficult to
> retain.

Aha - this raises another alternative. Give the users 2 choices: Either use 
the regexp-based convert-ly, which conserves the whitespace/comments but may 
require post-editing, or use the uber-convert-ly which destroys 
whitespace/comments but always works.

> > If I (or mutopia, or whoever) has to run convert-ly on a 10-year old
> > file and wait for two minutes while convert-ly updates the file, that's
> > no problem.  The only problem is if we need to run convert-ly and
> > then edit the result manually.
>
> The problem that I see is that writing such a nice converter can
> easily take months of developer time, which will not be put into
> better typesetting features. That's a dear price to pay for saving a
> little work.
>
> The syntax of basic music input hasn't changed appreciably since
> lilypond-2.0. For the future, we have plans to build a GNOME-based GUI
> for tweaking, which completely separates out tweaks into different
> files.  I don't really see what else we can do.

I didn't yet get any response to my ideas about outputting an intermediate 
format.. does this mean it's a bad idea?

> Although I sympathize with Graham's frustrations over hand-editing
> files, I don't understand the real problem, other than the fact that
> LilyPond 1.6 syntax sucked, so we had to change it - which is why A)
> we have much better syntax in 2.4 B) there is a painful conversion
> process necessary.

I would still say that I have concerns about future compatibility. Apart from 
grace note notation, which might need a non-convert-ly-able syntax upgrade 
(?), it is also possible that the lyrics system would need a big update in 
far-future.

I do not want to criticise the current \lyricsto system much; it is good, 
covers everything a normal person needs, and it works fine for me. It is just 
that I have a feeling that there should exist a better way of notating 
lyrics. Concerns include:
- Lyrics have durations when \lyricsto is used. This is unused information and 
hence slightly unclean in some sense.
- It is difficult to do \lyricsto sequentially (like {\lyricsto A { bla } 
\lyricsto B { blob } })
- I sometimes have a feeling that the system for ignoring melismata could be 
done nicer. I don't have any concrete suggestion right now though.
- It would be nice to be able to do multi-stanza as in the attached png (which 
is post-edited lily output). I suppose that this could require an enormous 
amount of work for very little gain (so far I'm the only person who requested 
it, and there are very few scores where I would use it myself).

I want to stress again that these are concerns for far far future, I don't 
seriously think they are needed anytime soon. It's just to demonstrate that 
syntax still can need to change.

Erik

begin 644 multi-stanza.png
MB5!.1PT*&@address@hidden@```0<"`````#BXC%Y````"7!(67,```W7
M```-UP%"*)MX````!W1)344'U`P0%B\0QY*YS```&P])1$%4>-KMW4%L*_EA
MW_&?FETT[V`7\PK82/<0=]0"-5PWB*FV3NW".0S14WRCG$/.5'M*>R*//9)7
M7PJRQR!`*Z&7(I>"<_$A#M)J',`N$J.P)KM``:,-PDF]!P=8!-,#)3V]7;VW
MTK/T1'(_G\,^/4HB9__ZOM%_AL,_#_K`_OM;A@"address@hidden"!T$#H('80.0D?H
M('00.@@=A`Y"!Z&#T$'H"!V$#D('H8/00>@@=!`Z"address@hidden"!T$#H('80.
M0@>A(_3'TQEIGM0[;^513K(PU.Q]Z/address@hidden(7W&6T/D^*\--CL]QQ]
MGF0P-];L^1[](%E4A^O":+//>_0ZF8S+:FFPV?/address@hidden'
M29+6:+//H1=ED:05.OL=^J!,TK2IC#9[O4=/address@hidden'CGT8?7'WWO6_GH
M^Q^]]^7M'86_>&?[3O+_[R^^NX4#]<N?V[Z-^O`[_^XI0W_AZ+0\66:UQ5.7
address@hidden;=TV_9W_LH4#]AN_^I^V;Z-^^X,[_/3>QD5=55TN4YFBW\\[AF#7AK.L
MF\35BP^N:address@hidden&-VI*#T8S.VDP&PGQ8]?!Y4Q73H\.YC;J+_O'-DL&ZWV9?
M__KV;=/SU6L_O4@&address@hidden@[_[ZYV_YBH_^
M[\_S[+U/WOSA.L\^]_FW^:_]?^2?OOX+GF";OO?5YZ_]]$=Y_K4D/WD_^=KS
MMS90O_S5[=NH'WWAA]NP1U\7FW_FGS#)Y'Q].CI_^=95E=EJ5J2<;<\>_4FV
MZ5/VZ%>CNDJRVI8]^M-LU)WVZ(\?>I5,RHM/WC[.H._[2<KU%OQ&_OKV_4+^
address@hidden;M1VA3Y*JGWQR5[A*)GU_>CDR-_<)U>6WO<T=U=<_93_U
M!-OT*:'WJRH9KTZ+M_NK[SM;N%%W"OVQS[JT\Q2G&36?^,19DJ3))Z]J[))L
MVX4Q6[A-U>IB5=1974QLU!:<1Y\GBR*#NOOX<^R;R]-'=5..;MX\.TFS'"=M
M,MZ6L+9QFY*D++?P2;address@hidden/__#?/&KR<]^]/S9\\]_//0O_8-;OFW]
M_CKO??&C'[_SWI>VYJS+DVS3IYQU>1J?<M;E:=SIK,LC7^LRG^:B;$Z:)*D6
M-R]@/address@hidden;VK9U!N5;?8+I4Z]U>8)M^KO_V;4N=[,-U[K4&9?=\6867A^M
M;I12MKOTRV];?R%S5X]\,-JDRKPM)JO!;)SNY.9AR_5')WX*['KH749ILII5
M51;G17-CR8OK0]"EJV#8^=!3)address@hidden"J\>9O73WV4^#1/?(<?5!<
M3E(&=3*>WSR=OBCF)^.BKJVSRUOPR*<7?_)_OI'W/address@hidden;__:O/\H,/OW7S
M*UYQ4=<3^-2+NIZ`TXMWM0VG%]O#B[(;#A;)\;C*,*OM_.>^C2^E<WKQKNYT
M>O&1Y^CE9)YBU1XE99VT([]"V<^#T4FS3+$Z30;)/(X[V=/0B]5RVJ5,BN9L
M>6J\>2*/_N+HXGQ^-"B3KLZI,^8\E;>address@hidden'6Z^39GVWQD^C_ZV__ZM9MTY_\
MHV=;.%"?^Y7MVZB?_MKO/V7H3_=(\/:G+MVR&UMVD?V=NEQV?M0FYX.D>VZ/
MSM-Y[+,NRS;),DECM\X>AW[]WNBM4R[L<>AEDF*2I/&L*/L\1S_,HBJ2YOC"
M8+._>_1BT=5)FJ&K<=GG/7K23)M!URV\YI+]#CUIV\*1*/L?.NS]'!V$#D('
MH8/00>@('83^V+JA'P:address@hidden@^#Q[,-[SC?MD51;!;:[9J494Y2C:;%YFUP
MNN+RQB?2=,address@hidden@8U7>D5)+OHE_[]T^_+YZ,_^'93YYLIVG]<%/_R*U_YZ>\M
M?_J[W_[K>EI\]]OU^/+&I]FXD^8KWZU_ZW*#JIPT7YEW+MS914__7N"3T44_
M[LOT?;^N3ONJZOLBZS[5Y+1?%.OK&Y_"(JM^E=/+#>HGN>A71<_NV8+0SXN4
MI_WFG]SY:%"4?9_T?;+JSW/^XL8G^4>85;_*Y'*#^FW9-W!O6W`P.CA?#$Z2
M09:ICP;G+]YWM.J&BT']L1N?U"CKOG>]I[,N;V3:C$^[I$B=.B^]$>OQ:-Q^
MXL:WJDJ7[L7[+8USEDQ5XZS+&Y:>129GPW%&9\-NU!S\L\V"=O_P)X/ILKJZ
M\?PIC@&KQ;RI%]5PLT'#U6+9QEF77>address@hidden"!T$#H('80.0D?H('00
M.@@=A/Y)6[H*@,4)A/ZPMG05`(L3[`FK`+Q^A[Y,TG0IVY0IV[+IO*?!;K(*
MP&M]N\XW\V]_[[O/address@hidden/SIJO?+?^+=7L(JL`O%:9ON\G6<address@hidden
MBZ/address@hidden/*PVKWXN9F='39MT*9*Z&C4GJ^+ZQJ>95B7)*,NF6-;59B,:>T<'
MHV]BNU<!&&29P>"L&)]Y2V"A_T*V>16`S69EU%2C9O#Q-0%PUN6>I6_M*@";
MS<IH/DHYNEH30#4[R"H`F+J`T$'H('0>P/address@hidden//!R7RKMFO+-L?!Z"[KCE?)
M4=,G27-4K+=HT[9L<UYX1S:[IZZ3JZ?0!HNM6O1TRS9'Z#N]0U\F29=,BTFF
M\_1IVZ+8CL"V;'/,T7?9<9VZ37(RGDY3E4D]+>O#[=BV+=L<>_1=MCILJR29
M%6E2E6WJ9-)N2^A;M3GVZ#OMLJ(BV;S^:7/]Y];8LLT1^NX:9/G27S?7?V[-
MUFW7YFPXO;B##JK5\>E!^ARDS_.NGPY&6_.#W++-,4>_FV&=+=P33,Z&XZNW
M54J7X6#:9+$E`[9=F[.%>_3N>+5E0W/S:1EVG>address@hidden
M3--EVJX&:;JR3*[^P![]/GO.:5D?;IX$:address@hidden@Z&5S>^
M;2\]+=,<#V?=64Z6F2YS]0>[Q'(7KUWI(address@hidden
M&&V&73D;':1/TLS;MKC(address@hidden)O,N_)$E_^8>=I*G+
MO6SM<A<?>UHF&67=]_W5'PC]7K9VN8LB'SL3-,Y9,KWZ`V==[EOZ5BYW\=+3
M,LE!GVJQ;%->_<$N<address@hidden"!V$#D('H8/0$3H('80.N\(J`*\U;[N)
MMXH6^@/:OE4`DDS/5H>ET(address@hidden<H3^0[5P%($FZ-H.DZ8KK
MO?K5<@`X&+WWOGP[5P%(,DU[4.=DF?E)A@<'.3XXN%P.@)UC%8#72/I^D56_
MRFF?]'VR60[`B^IWSA;LT3>K#+=)4LS.CIHVZ5(D=35J3E;%]8U/-;':3%FN
M_][DU'M'F[J\@:U=!>!EZA;address@hidden"[])=9EX4BG'6Y1<H?2M7`4B&
MR4%?+>9-O:@R;J;IBM_T>O+=Y*>&J0L('80.0@>address@hidden"!TA`Y"!Z&#T$'H
M('00.@@=A([00>@@=-BKT.?ULMM\U!DT]C?T:5UNUC0YF1HT=L^=UW49;]:S
MG2]3S`P;N^:NZ[J<C.K1(&D/D\*2X>SMU&515<LD\R2#N6%C3T.?;M;ISS)9
M+):.1]G3T,?IZG%2)Y-Q62V-&WLZ1^^:*LET7EXDPZP,'/LY1R\NEP>?)$EM
MW-C3T*^,DF0+EN6'1PR]*(LDK=#9[]`'99*F]38G[/D>/address@hidden,
MKS_ZWK?RT?<_>N_+MW[91Q^N\^QSGS>H+PW*SQ]R0`SQ+7[^KW_G#E]UOW=K
M'%STX^36]]E<59FM9D7*F3>UO.$[7WJX^S+$MP_QU^_P1?=\#Z-I60Y3W78:
M?7F2P7G2'789+^QEKOWV'__Y0]V5(7[%$'_P1P\]1T]9GR2W7KTXW<address@hidden&R
M=)[]41CBMW8PFM%9F\FKW@>Q2[SO[.,RQ&\I]&4RN/WM;6=)LTS2)F,_B4=A
MB-_:69?U#_+NK[_BF'_]_CKO??&C'[_SWI<,ZPL_^MDW'NR^#/'M0_R%'SY0
MZ->_.`^[#,Y?^>FVK3,H!T;^D0Y&#?$O<#!ZK[=(/^XR.6M?^7116?J%^L@,
M\=N8HT_K5+/1F4%CKT-OYRE.,VH,&GL=^CQ9%!G47DC'[KG['+U=9C1*FF):
M5HZ&V#%W/[WX_D_RC6<_^_'/DN3YEY\9NKMYR-.+W#[$#WMZ<5B/%]W1Y4LN
MBI6=^MT\[.E%;AOBA[W6I4F5>5M,5H/9.-V)\64_#T:[C-)D-:NJ+,Z+QI(7
M[&?H*9.Z&B15D\',address@hidden:>B#\O*ZN4&=C$NGT]DE=SJ].$R2O_S38=[_X#??
address@hidden/>S+NWA1=D-!XOD>%Q9K>O.IP2<
M=7GT(7[8LR[E9)YBU1XE99VT(P/,?AZ,3IIEBM5I,DCF&1L[]C/T8K6<=BF3
MHCE;address@hidden>>&&6GW',!HZS7R;,_<_7_G?WY7_VZ07CD
M(3[\;P\4^H-\$^S(U*5;=F/++K*_4Y?+SH_:Y'R0=,_MT=DQ]SCKLFR3+),T
M=NOL<>C7+Z%KG7)ACT,ODQ23)(UG1=GG.?IA%E61-,<7QHW]W:,address@hidden
M6<P^[]&39MH,NF[AZ2+V._2D;0M'HNQ_Z+#W<W00.@@=A`Y"!Z'#4X0^/address@hidden
MGH_*"#]UZ-TPB05V'YL1?NK0ZSI)6L/YR(SP&WOG(>ZDVRRMVR738I(T7>FE
M&0^MZ8K!]0AO_L;;WJ,?UZG;)#D93Z<Y669J4>F'U0U/<C2]&N&<+#.W0OW]
M]`^A3-_W?;+N4TURT:^*GH<TSJH?+2Y'N%]DU:]R:ECNX4&F+M=SQR*IZQS:
M?3RT9:J<7HWPY7#?[85>_^'#?.[?O/'C_M<?)Z.__Z;?_2>KY)]_ZXU_B_W'
MY._]SE;-T9-!EE>+,8[.UH4R'UC1=6\XJ'_\U_GE-P_]?_[PI>6K[NF#'R2_
M\N;3M1\D_V_+IBZI^E'?)WV?K++H^XG?E0]JDD7?SRY'N%_EM#_-RK"\]:G+
MY&PXSG#SCW^^6+9QUN5AS3)ON_'E"`]7BWE3>Z'address@hidden"!T$#H(
M'80.0D?H('00.@@=A`Y"!Z&#T$'H"!V$#D*'?0K]9'[]86?0V-O0Z_;@^6:Q
MOY.I06/WW'%=E\EXL1PER7R98F;8V#5W7M>E3I6D/4R*<\L3L;<'H\LJ2>9)
M!G/address@hidden'5A%E;_?HE_.73,9E99E_]C;T\TWHY6S3.^QGZ)<'
MH),(G;V?NB2;=UGP[FCLF/NMCUZ419(V[:TG&+NF3CGP;FGL_!Y]4"9IVMRV
M!GT]?-Y4Q?3HT-E'=GZ/GB1GM[Z?Q?(address@hidden;1?&E2USI_/H+]ZNZ7O?
MRD??_^B]+W_R:[[W49Y_+<E/WD^^]MS`\M;\Q;^:/U#H+QR=EB?+K&Z9NCSO
M,CA/address@hidden'/T5'6]3'5;Q[.D629ID['.V>TY>LJZ26Z]>G%<
MSNN39M1-R_'$L+*3<_07NN?)Y%67Z;9MG4'I]");.'6YYQY]F0Q>N<,N2W,6
M=GGJ<GW69?V#O/M+QT:-;?*C+SQ4Z*NKB<MA\D_^V,BR95.7.WS1O<ZZ''>9
M=*YS80?=)_1IG6HV.C-H['7H[3S%:4:-06.O0Y\GBR*#VL(N[)Z[7^OR\S_,
M%[^:_.Q'SY\]_[R!8VO\Z`L_?*#0-SOT:2[*YJ1)DFIAQ0NVQ0-?ZU)G7';'
MFQEZ?62FSI[.T9M4F;?%9#68C=.=&#KV,_0NHS19S:HJB_.BL>0%^QEZRJ2N
M!DG59#"address@hidden&address@hidden:UHH,Z&9<FZ>R2NU_4]9=_.LS['_SFN\G??/-9_NK#
MH<%C*]SIHJZ[GUYL#R_*;CA8),?C*L/K*[W@:3WPZ<5R,D^Q:H^2LD[:D0%F
M/P]&)\TRQ>HT&23SC(T=^QEZL5I.NY1)T9PM3PT=>W<P>E7Z^?QH4"9=G5.O
M#&6GW',!HZS7R;,_\]I0ML=/?^WW'RCT!_DFV)&I2[?LQJY:9'^G+I>='[7)
M^2#IGMNCLV/N<=9EV299)FGLUMGCT*]?0M<ZY<(>AUXF*29)&L^*LL]S],,L
MJB)ICB^,&_N[1R\679VD&7I#"_9YCYXTTV;0=0M/%['address@hidden
MHX/00>@@=!`Z"!V$#D)'Z+"/WGF(.VFZ3-O5];4!;5L47IO!_NW1F^/AK#L;
M'address@hidden;2L#XTL^Q?ZN!M4HVJ5Y#1)G4RLX\5V>address@hidden('TS[,J9
M%R&QMZ$/ZSX'Z=/6=;TVM.S=P>@-13(=C,<'1I;]"WVX^<TP;J;IBB[3)EYM
MQSY.76#+><((H8/00>@@=!`Z"!V$#D)'Z"!T$#H('80.0@>address@hidden@=A`Y"
M!Z&#T$'H('00.@@=H8/00>@@=!`Z"!V$#D('H2-T$#H('80.0@>address@hidden"!T
MA`Y"!Z&#T$'H('00.@@=A([00>@@=!`Z"!V$#D('H8/0$3H('80.0@>address@hidden
MZ"!T$#I"!Z&#T$'H('00.@@=A`Y"1^@@=!`Z"!V$#D('H8/0$;HA0.@@=!`Z
M"!V$#D('H8/0$3H('80.0@>address@hidden"!T$#I"!Z&#T$'H('00.@@=A`Y"1^@@
M=!`Z"!V$#D('H8/00>@('80.0@>address@hidden"!T$#H(':&#T$'H('00.@@=A`Y"
M!Z$C=!`Z"!V$#D('H8/00>@@=(0.0@>address@hidden"!T$#H('82.T$'H('00.@@=
MA`Y"!Z&#T!$Z"!V$#D('H8/00>@@=(0.0@>address@hidden"!T$#H('82.T$'H('00
M.@@=A`Y"!Z&#T!$Z"!V$#D('H8/00>@@=!`Z0@>address@hidden"!T$#H('80.0D?H
M('00.@@=A`Y"!Z&#T$'H"!V$#D('H8/00>@@=!`Z"address@hidden"!T$#H('80.
M0@>A(W00.@@=A`Y"!Z&#T$'H('2$#D('H8/00>@@=!`Z"!V$CM!!Z"!T$#H(
M'80.0@>A(W00.@@=A`Y"!Z&#T$'H('2$#D('H8/00>@@=!`Z"!V$CM!!Z"!T
M$#H('80.0@>address@hidden@@=A`Y"!Z&#T$'H('00.D('H8/00>@@=!`Z"!V$#D)'
MZ"!T$#H('80.0@>address@hidden@=A`Y"!Z&#T$'H('00.@@=H8/00>@@=!`Z"!V$
M#D('H2-T$#H('80.0@>address@hidden"!T$#H('80.0@>address@hidden@=A`Y"!Z&#
MT$'H('00.@@=H8/00>@@=!`Z"!V$#D('H2-T$#H('80.0@>address@hidden"!TA`Y"
M!Z&#T$'H('00.@@=A([00>@@=!`Z"!V$#D('H8/0$3H('80.0@>address@hidden"!T
M$#I"!Z&#T$'H('00.@@=A`Y"1^@@=!`Z"!V$#D('H8/00>@('80.0@>address@hidden
MZ"!T$#I"!Z&#T$'H('00.@@=A`Y"1^@@=!`Z"!V$#D('H8/00>@('80.0@>A
address@hidden"!T$#H(':&#T$'H('00.@@=A`Y"!Z$C=!`Z"!V$#D('H8/00>@@=(0.
M0@>address@hidden"!T$#H('82.T$'H('00.@@=A`Y"!Z&#T!$Z"!V$#D('H8/00>@@
M=!`Z0@>address@hidden"!T$#H('80.0D?H('00.@@=A`Y"!Z&#T!$Z"!V$#D('H8/0
M0>@@=!`Z0@>address@hidden"!T$#H('80.0D?H('00.@@=A`Y"!Z&#T$'H"!V$#D('
MH8/00>@@=!`Z"address@hidden"!T$#H('80.0@>A(W00.@@=A`Y"!Z&#T$'H('2$
M#D('H8/00>@@=!`Z"!V$CM!!Z"!T$#H('80.0@>address@hidden@@=A`Y"!Z&#T$'H
M('2$;@@0.@@=A`Y"!Z&#T$'H('2$#D('H8/00>@@=!`Z"!V$CM!!Z"!T$#H(
M'80.0@>address@hidden@@=A`Y"!Z&#T$'H('00.D('H8/00>@@=!`Z"!V$#D)'Z"!T
M$#H('80.0@>address@hidden@=A`Y"!Z&#T$'H('00.NQ4Z-V#W$GGQRWTUYD>'!P<
M'!Q,[WJ?S<%!DN3XX.-W=#0]F2=)D^GPQ;T?#8^>3U]Y+TFZLU<]TJVWUO7U
MAR<W;BKF?MR?8?T=K,J^[U>S_J[.+^^U^L0=7=Y2G-_XW"I]ORX7K[R7OI^\
MZH&*\UMNG%VLJO7FP]/<O.EBTO-9=;>I2YND*N[\CV?P:3..]>!CGRM&9Z^\
ME[3%:^[GED<OJW*S\^Z:EVXJ[=8^N]ZYZQ<>]*.T75FG*M+.4S6CE&=56:<=
M%<=E,3GN%FFZ49&NODZT:9?EZ&3SR9N5-6>S-,G5MR5)RG1U!N758]RXEYP-
MKKZT;)MNU*8\JXKI*/7H;/;R=R5)>U;E\E_&?+8)_NJF\FSD)V[J\IJI2U*F
M[_N^6O6K2;^N^M7XO!^L%HN^ZB^JOJ_.^_/9Q:B_&/7KT;H_+S;?ET6_KOIJ
MU9_/7IZZ5'V?S=V=S_I5,IA-UNM1WT_.+Q_CYKWTH_[R$?K-0PQ6B\5XW5^D
address@hidden:F;M\9MTQ]+Y/O^[[HN_[JE]M.BU6?=_WDR)]
MOYCTJWZ2)/UL\F)RGE7?CQ>+2;]X:8Z^ZK-YX,UG+NN?3/I^-;I\C)OWTE?]
MY2-</D2QZOO):'&Q[O/R=UW/Z3>/M[[QOS=9]$(W1[^#5>K-I+M.E;/I8O.7
M[J2\2#(^2Y=VTO?]9NY]8YY2M./ZY1-[S?49EI<^TU[.ZKLD]<?O9?,(-QYB
M5K7'[<>_ZVJJ,QIW2:;/address@hidden&R&!<9)J.30:HD
M;5<FZ6X</;:C5"<O'0:>C5_<Z8W/5$FZJ[^^="]EE\TC7#Y$DAR-9[.SCW_7
address@hidden>5--WE30C]]>?1S\KI='K2I,[!]###S$^&Q\TTTSJ#IEZ.
MDHR[,N,LZ[H8YZQ>=O5EH?6R&F1<CZ[NJ)U.I_-1G<,ZS^MD7(\R/6N/DF2<
ML[J973[&V8U[R:"Y?(3-0\PSK=/6=<9U#E_ZKF&2="='!P=%CIMD/BV/D^/F
M\J8TCD4=C-[#Y+SO+\:7?UG?^,1Z_>*_&Q=]?^-K/^'5G[EY+^O)K3>_P8:;
MJIJCWT/QJK\4Q8O_7D]!CIOE^/;[>?5G7KZ7HNANN_G>FH']VF?60?\&WU1W
M13N^<UY=6=[W,Q_W(.>_N^7$SUOHX*P+"!V$#D('H8/00>@@=(0.0@>address@hidden
MZ"!T$#H('82.T$'H('00.@@=A`Y"!Z&#T/FL^?\2+D-IZSOM+P````!)14Y$
$KD)@@@``
`
end





reply via email to

[Prev in Thread] Current Thread [Next in Thread]