ó ß8„Yc@sGddlZd„Zd„Zd„Zd„Zddd„ƒYZdS( i˙˙˙˙NcCs'tƒ}|j|dƒ|jƒ|S(Ntr(tSHVFiletopentparse(tfilenametshv((s /usr/share/authconfig/shvfile.pytreads  cCs'tƒ}|j|dƒ|jƒ|S(Nsr+(RRR(RR((s /usr/share/authconfig/shvfile.pytrcreate s  cCsċ|s |St|ƒ}|ddks6|ddkrb|d||dkrb|d|d!}nd}xvtrà|jd|ƒ}|dkr“Pn|dt|ƒkrş|d|!}Pn|d|!||d}|d7}qkW|S(Nis"t'is\(tlentTruetfind(tstslenti((s /usr/share/authconfig/shvfile.pytunescape's  8   cCsĞ|jddƒ}|jddƒ}|jddƒ}|jddƒ}|jd d ƒ}|jd d ƒ}|jd ƒdks–|jdƒdkr§d|d}n|S(Ns\s\\s"s\"Rs\'t$s\\$t~s\\~t`s\\`t is (treplaceR (R ((s /usr/share/authconfig/shvfile.pytescape:s*RcBsYeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z RS( cCsd|_d|_i|_dS(Nt(RtNonetft variables(tself((s /usr/share/authconfig/shvfile.pyt__init__Fs  cCsX||_|dkr*t||ƒ|_n*yt||ƒ|_Wntk rSnXdS(NR(RRRtIOError(RRtmode((s /usr/share/authconfig/shvfile.pyRKs   cCsp|js dSx\|jD]Q}|jƒjddƒ}t|ƒdkrMqnt|dƒ|j|dnsRs (RtosRRtO_RDWRtO_CREATtOSErrortfdopenRtclosetseekttruncateRtitemstsorttwriteRtflushtfsynctfileno(Rtpermstfdt ordereditemstnametvalue((s /usr/share/authconfig/shvfile.pyR2_s* &    &  cCs>|jr:y|jjƒWntk r-nXd|_ndS(N(RR-RR(R((s /usr/share/authconfig/shvfile.pyR-ws   cCs(y|j|SWntk r#dSXdS(NR(RtKeyError(RR9((s /usr/share/authconfig/shvfile.pytgetValue€s cCs£y|j|jƒ}Wntk r0t‚nX|dksa|dksa|dksa|dkretS|dks•|dks•|dks•|dkr™tSt‚dS( NtyesttruettR&tnotfalseRtn(RtlowerR;t ValueErrorR tFalse(RR9tval((s /usr/share/authconfig/shvfile.pyt getBoolValue†s  00cCs6|s%||jkr2|j|=q2n ||j|s