ó
    F\hbt  ã            	       ó¢  • S r / SQrSSKrSSKrSSKrSSKrSSKJr  SSKrSSK	r	SSK
r
SSKrSSKJr  \R                  " SS\S9r\" 5       R%                  \R&                  5         " S	 S
5      rSr\
R,                  " S5      rS1S jrS r\
R,                  " S\
R4                  5      rS rS rS r " S S5      r " S S5      r  " S S\ 5      r!S r" " S S\#5      r$SSSSS .r%\&" 5       r' " S! S"5      r(S# r)\*\+\,\R                  \-4r. " S$ S%\&5      r/S& r0\1\2" \"\\!S'9\3\2" \0\(\/S'90r4S\2S(S).S* jr5S\2S(S).S+ jr6\1S,S(S(S-.S. jr7\1S(S,S(S/.S0 jr8g)2a>  plistlib.py -- a tool to generate and parse MacOSX .plist files.

The property list (.plist) file format is a simple XML pickle supporting
basic object types, like dictionaries, lists, numbers and strings.
Usually the top level object is a dictionary.

To write out a plist file, use the dump(value, file)
function. 'value' is the top level object, 'file' is
a (writable) file object.

To parse a plist from a file, use the load(file) function,
with a (readable) file object as the only argument. It
returns the top level object (again, usually a dictionary).

To work with plist data in bytes objects, you can use loads()
and dumps().

Values can be strings, integers, floats, booleans, tuples, lists,
dictionaries (but only with string keys), Data, bytes, bytearray, or
datetime.datetime objects.

Generate Plist example:

    import datetime
    import plistlib

    pl = dict(
        aString = "Doodah",
        aList = ["A", "B", 12, 32.1, [1, 2, 3]],
        aFloat = 0.1,
        anInt = 728,
        aDict = dict(
            anotherString = "<hello & hi there!>",
            aThirdString = "M\xe4ssig, Ma\xdf",
            aTrueValue = True,
            aFalseValue = False,
        ),
        someData = b"<binary gunk>",
        someMoreData = b"<lots of binary gunk>" * 10,
        aDate = datetime.datetime.now()
    )
    print(plistlib.dumps(pl).decode())

Parse Plist example:

    import plistlib

    plist = b'''<plist version="1.0">
    <dict>
        <key>foo</key>
        <string>bar</string>
    </dict>
    </plist>'''
    pl = plistlib.loads(plist)
    print(pl["foo"])
)ÚInvalidFileExceptionÚFMT_XMLÚ
FMT_BINARYÚloadÚdumpÚloadsÚdumpsÚUIDé    N)ÚBytesIO)ÚParserCreateÚPlistFormatzFMT_XML FMT_BINARY)Úmodulec                   ó8   • \ rS rSrS rS rS rS rS rS r	Sr
g	)
r	   éM   c                 ó”   • [        U[        5      (       d  [        S5      eUS:¼  a  [        S5      eUS:  a  [        S5      eXl        g )Nzdata must be an intì            zUIDs cannot be >= 2**64r
   úUIDs must be positive)Ú
isinstanceÚintÚ	TypeErrorÚ
ValueErrorÚdata©Úselfr   s     Ú/usr/lib/python3.13/plistlib.pyÚ__init__ÚUID.__init__N   sF   € Ü˜$¤×$Ñ$ÜÐ1Ó2Ð2Ø�7‹?ÜÐ6Ó7Ð7Ø�!‹8ÜÐ4Ó5Ð5Ø�	ó    c                 ó   • U R                   $ ©N©r   ©r   s    r   Ú	__index__ÚUID.__index__W   s   € Ø�y‰yÐr   c                 ód   • U R                   R                  < S[        U R                  5      < S3$ )NÚ(Ú))Ú	__class__Ú__name__Úreprr   r"   s    r   Ú__repr__ÚUID.__repr__Z   s   € ØŸ>™>×2Ô2´D¸¿¹¶OÐDÐDr   c                 ó4   • U R                   U R                  44$ r    )r(   r   r"   s    r   Ú
__reduce__ÚUID.__reduce__]   s   € Ø�~‰~ §	¡	˜|Ð+Ð+r   c                 ój   • [        U[        5      (       d  [        $ U R                  UR                  :H  $ r    )r   r	   ÚNotImplementedr   )r   Úothers     r   Ú__eq__Ú
UID.__eq__`   s(   € Ü˜%¤×%Ñ%Ü!Ð!Ø�y‰y˜EŸJ™JÑ&Ð&r   c                 ó,   • [        U R                  5      $ r    )Úhashr   r"   s    r   Ú__hash__ÚUID.__hash__e   s   € Ü�D—I‘I‹Ðr   r!   N)r)   Ú
__module__Ú__qualname__Ú__firstlineno__r   r#   r+   r.   r3   r7   Ú__static_attributes__© r   r   r	   r	   M   s!   † òòòEò,ò'õ
r   r	   sŽ   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
zv[\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]c                 óÈ   • US-  S-  n/ n[        S[        U 5      U5       H.  nXXB-    nUR                  [        R                  " U5      5        M0     SR                  U5      $ )Né   é   r
   r   )ÚrangeÚlenÚappendÚbinasciiÚ
b2a_base64Újoin)ÚsÚmaxlinelengthÚ
maxbinsizeÚpiecesÚiÚchunks         r   Ú_encode_base64rM   y   sa   € à Ñ" AÑ%€JØ€FÜ�1”c˜!“f˜jÖ)ˆØ�a‘nÐ%ˆØ�‰”h×)Ò)¨%Ó0Ö1ñ *ð �8‰8�FÓÐr   c                 ó¢   • [        U [        5      (       a%  [        R                  " U R	                  S5      5      $ [        R                  " U 5      $ )Núutf-8)r   ÚstrrD   Ú
a2b_base64Úencode)rG   s    r   Ú_decode_base64rS   ‚   s<   € Ü�!”S×ÑÜ×"Ò" 1§8¡8¨GÓ#4Ó5Ð5ô ×"Ò" 1Ó%Ð%r   z{(?P<year>\d\d\d\d)(?:-(?P<month>\d\d)(?:-(?P<day>\d\d)(?:T(?P<hour>\d\d)(?::(?P<minute>\d\d)(?::(?P<second>\d\d))?)?)?)?)?Zc                 ó$  • Sn[         R                  U 5      R                  5       n/ nU H&  nX5   nUc    OUR                  [	        U5      5        M(     U(       a$  [
        R
                  " US[
        R                  06$ [
        R
                  " U6 $ )N)ÚyearÚmonthÚdayÚhourÚminuteÚsecondÚtzinfo)Ú_dateParserÚmatchÚ	groupdictrC   r   ÚdatetimeÚUTC)rG   Úaware_datetimeÚorderÚgdÚlstÚkeyÚvals          r   Ú_date_from_stringrg   �   s~   € Ø@€EÜ	×	Ñ	˜1Ó	×	'Ñ	'Ó	)€BØ
€CÛˆØ‰gˆØ‰;ÙØ�
‰
”3�s“8Öñ	 ö
 Ü× Ò  #Ð;¬h¯l©lÑ;Ð;Ü×Ò˜cÐ"Ð"r   c                 óÜ   • U(       a  U R                  [        R                  5      n SU R                  U R                  U R
                  U R                  U R                  U R                  4-  $ )Nz%04d-%02d-%02dT%02d:%02d:%02dZ)	Ú
astimezoner_   r`   rU   rV   rW   rX   rY   rZ   )Údra   s     r   Ú_date_to_stringrk   �   sO   € ÞØ�L‰LœŸ™Ó&ˆØ+Ø	�‰�—‘˜Ÿ™Ø	�‰�—‘˜!Ÿ(™(ð/ñ ð r   c                 ó   • [         R                  U 5      nUb  [        S5      eU R                  SS5      n U R                  SS5      n U R                  SS5      n U R                  SS5      n U R                  S	S
5      n U $ )Nz;strings can't contain control characters; use bytes insteadz
Ú
ÚÚ&z&amp;Ú<z&lt;Ú>z&gt;)Ú_controlCharPatÚsearchr   Úreplace)ÚtextÚms     r   Ú_escaperw   ¥   s~   € Ü×Ñ˜tÓ$€AØ�}Üð -ó .ð 	.à�<‰<˜ Ó%€DØ�<‰<˜˜dÓ#€DØ�<‰<˜˜WÓ%€DØ�<‰<˜˜VÓ$€DØ�<‰<˜˜VÓ$€DØ€Kr   c                   ó�   • \ rS rSrSS jrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rSrg)Ú_PlistParseré±   c                 óF   • / U l         S U l        S U l        Xl        X l        g r    )ÚstackÚcurrent_keyÚrootÚ
_dict_typeÚ_aware_datetime©r   Ú	dict_typera   s      r   r   Ú_PlistParser.__init__²   s#   € ØˆŒ
ØˆÔØˆŒ	Ø#ŒØ-Õr   c                 óF  • [        5       U l        U R                  U R                  l        U R                  U R                  l        U R                  U R                  l        U R                  U R                  l	        U R                  R                  U5        U R                  $ r    )r   ÚparserÚhandle_begin_elementÚStartElementHandlerÚhandle_end_elementÚEndElementHandlerÚhandle_dataÚCharacterDataHandlerÚhandle_entity_declÚEntityDeclHandlerÚ	ParseFiler~   )r   Úfileobjs     r   ÚparseÚ_PlistParser.parse¹   so   € Ü"“nˆŒØ*.×*CÑ*Cˆ�‰Ô'Ø(,×(?Ñ(?ˆ�‰Ô%Ø+/×+;Ñ+;ˆ�‰Ô(Ø(,×(?Ñ(?ˆ�‰Ô%Ø�‰×Ñ˜gÔ&Ø�y‰yÐr   c                 ó   • [        S5      e)Nz8XML entity declarations are not supported in plist files)r   )r   Úentity_nameÚis_parameter_entityÚvalueÚbaseÚ	system_idÚ	public_idÚnotation_names           r   rŒ   Ú_PlistParser.handle_entity_declÂ   s   € ô #Ð#]Ó^Ð^r   c                 óJ   • / U l         [        U SU-   S 5      nUb	  U" U5        g g )NÚbegin_)r   Úgetattr)r   ÚelementÚattrsÚhandlers       r   r†   Ú!_PlistParser.handle_begin_elementÈ   s.   € ØˆŒ	Ü˜$ ¨7Ñ 2°DÓ9ˆØÑÙ�E�Nð r   c                 ó:   • [        U SU-   S 5      nUb  U" 5         g g )NÚend_)r�   )r   rž   r    s      r   rˆ   Ú_PlistParser.handle_end_elementÎ   s%   € Ü˜$ ¨Ñ 0°$Ó7ˆØÑÙ�Ið r   c                 ó:   • U R                   R                  U5        g r    )r   rC   r   s     r   rŠ   Ú_PlistParser.handle_dataÓ   s   € Ø�	‰	×Ñ˜Õr   c                 óà  • U R                   bg  [        U R                  S   [        5      (       d"  [	        SU R
                  R                  -  5      eXR                  S   U R                   '   S U l         g U R                  (       d  Xl        g [        U R                  S   [        5      (       d"  [	        SU R
                  R                  -  5      eU R                  S   R                  U5        g )Néÿÿÿÿzunexpected element at line %d)
r}   r   r|   Údictr   r…   ÚCurrentLineNumberr~   ÚlistrC   ©r   r•   s     r   Ú
add_objectÚ_PlistParser.add_objectÖ   sÀ   € Ø×ÑÑ'Ü˜dŸj™j¨™n¬d×3Ñ3Ü Ð!@Ø!%§¡×!>Ñ!>ñ"?ó @ð @à/4�J‰J�r‰N˜4×+Ñ+Ñ,Ø#ˆDÕØ——à�Iä˜dŸj™j¨™n¬d×3Ñ3Ü Ð!@Ø!%§¡×!>Ñ!>ñ"?ó @ð @à�J‰J�r‰N×!Ñ! %Õ(r   c                 óJ   • SR                  U R                  5      n/ U l        U$ )NÚ )rF   r   r   s     r   Úget_dataÚ_PlistParser.get_dataæ   s    € Ø�w‰w�t—y‘yÓ!ˆØˆŒ	Øˆr   c                 ó|   • U R                  5       nU R                  U5        U R                  R                  U5        g r    )r   r­   r|   rC   )r   rŸ   rj   s      r   Ú
begin_dictÚ_PlistParser.begin_dictí   s,   € Ø�O‰OÓˆØ�‰˜ÔØ�
‰
×Ñ˜!Õr   c                 ó¶   • U R                   (       a.  [        SU R                   U R                  R                  4-  5      eU R                  R                  5         g )Nz%missing value for key '%s' at line %d)r}   r   r…   rª   r|   Úpopr"   s    r   Úend_dictÚ_PlistParser.end_dictò   sI   € Ø××ÜÐDØ"×.Ñ.¨t¯{©{×/LÑ/LÐMñNó Oð Oà�
‰
�‰Õr   c                 óØ   • U R                   (       d"  [        U R                  S   [        5      (       d"  [	        SU R
                  R                  -  5      eU R                  5       U l         g )Nr¨   zunexpected key at line %d)r}   r   r|   r©   r   r…   rª   r±   r"   s    r   Úend_keyÚ_PlistParser.end_keyø   sO   € Ø××¤:¨d¯j©j¸©n¼d×#CÑ#CÜÐ8Ø!Ÿ[™[×:Ñ:ñ;ó <ð <àŸ=™=›?ˆÕr   c                 ó`   • / nU R                  U5        U R                  R                  U5        g r    )r­   r|   rC   )r   rŸ   Úas      r   Úbegin_arrayÚ_PlistParser.begin_arrayþ   s%   € ØˆØ�‰˜ÔØ�
‰
×Ñ˜!Õr   c                 ó8   • U R                   R                  5         g r    )r|   r·   r"   s    r   Ú	end_arrayÚ_PlistParser.end_array  s   € Ø�
‰
�‰Õr   c                 ó&   • U R                  S5        g )NT©r­   r"   s    r   Úend_trueÚ_PlistParser.end_true  s   € Ø�‰˜Õr   c                 ó&   • U R                  S5        g )NFrÅ   r"   s    r   Ú	end_falseÚ_PlistParser.end_false	  s   € Ø�‰˜Õr   c                 óè   • U R                  5       nUR                  S5      (       d  UR                  S5      (       a  U R                  [        US5      5        g U R                  [        U5      5        g )NÚ0xÚ0Xé   )r±   Ú
startswithr­   r   )r   Úraws     r   Úend_integerÚ_PlistParser.end_integer  sL   € Ø�m‰m‹oˆØ�>‰>˜$×Ñ 3§>¡>°$×#7Ñ#7Ø�O‰OœC  R›LÕ)à�O‰OœC ›HÕ%r   c                 óT   • U R                  [        U R                  5       5      5        g r    )r­   Úfloatr±   r"   s    r   Úend_realÚ_PlistParser.end_real  s   € Ø�‰œ˜dŸm™m›oÓ.Õ/r   c                 óB   • U R                  U R                  5       5        g r    )r­   r±   r"   s    r   Ú
end_stringÚ_PlistParser.end_string  s   € Ø�‰˜Ÿ™›Õ(r   c                 óT   • U R                  [        U R                  5       5      5        g r    )r­   rS   r±   r"   s    r   Úend_dataÚ_PlistParser.end_data  s   € Ø�‰œ t§}¡}£Ó7Õ8r   c                 óf   • U R                  [        U R                  5       U R                  S95        g )N)ra   )r­   rg   r±   r€   r"   s    r   Úend_dateÚ_PlistParser.end_date  s)   € Ø�‰Ô)¨$¯-©-«/Ø9=×9MÑ9MñOõ 	Pr   )r€   r   r}   r   r…   r~   r|   N©F)r)   r9   r:   r;   r   r�   rŒ   r†   rˆ   rŠ   r­   r±   r´   r¸   r»   r¿   rÂ   rÆ   rÉ   rÑ   rÕ   rØ   rÛ   rÞ   r<   r=   r   r   ry   ry   ±   sh   † ô.òò_òòò
ò)ò òò
ò+òò
òòò&ò0ò)ò9õPr   ry   c                   ó:   • \ rS rSrS	S jrS rS rS
S jrS rSr	g)Ú_DumbXMLWriteri!  c                 ó6   • Xl         / U l        X l        X0l        g r    )Úfiler|   Ú_indent_levelÚindent)r   rä   Úindent_levelræ   s       r   r   Ú_DumbXMLWriter.__init__"  s   € ØŒ	ØˆŒ
Ø)ÔØ�r   c                 óŒ   • U R                   R                  U5        U R                  SU-  5        U =R                  S-  sl        g )Nz<%s>é   )r|   rC   Úwritelnrå   ©r   rž   s     r   Úbegin_elementÚ_DumbXMLWriter.begin_element(  s6   € Ø�
‰
×Ñ˜'Ô"Ø�‰�V˜gÑ%Ô&Ø×Ò˜aÑÖr   c                 óº   • U R                   S:”  d   eU R                  R                  5       U:X  d   eU =R                   S-  sl         U R                  SU-  5        g )Nr
   rê   z</%s>)rå   r|   r·   rë   rì   s     r   Úend_elementÚ_DumbXMLWriter.end_element-  sQ   € Ø×!Ñ! AÓ%Ð%Ð%Ø�z‰z�~‰~Ó 7Ó*Ð*Ð*Ø×Ò˜aÑÕØ�‰�W˜wÑ&Õ'r   Nc           	      ó†   • Ub*  [        U5      nU R                  SU< SU< SU< S35        g U R                  SU-  5        g )Nrp   rq   z</z<%s/>)rw   rë   )r   rž   r•   s      r   Úsimple_elementÚ_DumbXMLWriter.simple_element3  s7   € ØÑÜ˜E“NˆEØ�LŠL«'³5»'ÐBÕCð �L‰L˜ 7Ñ*Õ+r   c                 ó.  • U(       as  [        U[        5      (       a  UR                  S5      nU R                  R	                  U R
                  U R                  -  5        U R                  R	                  U5        U R                  R	                  S5        g )NrO   ó   
)r   rP   rR   rä   Úwriterå   ræ   )r   Úlines     r   rë   Ú_DumbXMLWriter.writeln;  sa   € Þô ˜$¤×$Ñ$Ø—{‘{ 7Ó+�Ø�I‰I�O‰O˜D×.Ñ.°·±Ñ<Ô=Ø�I‰I�O‰O˜DÔ!Ø�	‰	�‰˜Õr   )rå   rä   ræ   r|   )r
   Ú	r    )
r)   r9   r:   r;   r   rí   rð   ró   rë   r<   r=   r   r   râ   râ   !  s   † ôò ò
(ô,õ	r   râ   c                   ó@   • \ rS rSr  S
S jrS rS rS rS rS r	Sr
g	)Ú_PlistWriteriG  c                 óŒ   • U(       a  UR                  [        5        [        R                  XX#5        XPl        X`l        Xpl        g r    )r÷   ÚPLISTHEADERrâ   r   Ú
_sort_keysÚ	_skipkeysr€   )r   rä   rç   ræ   ÚwriteHeaderÚ	sort_keysÚskipkeysra   s           r   r   Ú_PlistWriter.__init__H  s3   € ö Ø�J‰J”{Ô#Ü×Ñ ¨LÔAØ#ŒØ!ŒØ-Õr   c                 ój   • U R                  S5        U R                  U5        U R                  S5        g )Nz<plist version="1.0">z</plist>)rë   Úwrite_valuer¬   s     r   r÷   Ú_PlistWriter.writeS  s)   € Ø�‰Ð.Ô/Ø×Ñ˜ÔØ�‰�ZÕ r   c                 óV  • [        U[        5      (       a  U R                  SU5        g USL a  U R                  S5        g USL a  U R                  S5        g [        U[        5      (       a1  SUs=::  a  S:  a  O  OU R                  SS	U-  5        g [	        U5      e[        U[
        5      (       a  U R                  S
[        U5      5        g [        U[        5      (       a  U R                  U5        g [        U[        [        45      (       a  U R                  U5        g [        U[        R                  5      (       a&  U R                  S[        XR                  5      5        g [        U[        [         45      (       a  U R#                  U5        g [%        S['        U5      -  5      e)NÚstringTÚtrueFÚfalselûÿÿÿ         r   Úintegerz%dÚrealÚdatezunsupported type: %s)r   rP   ró   r   ÚOverflowErrorrÔ   r*   r©   Ú
write_dictÚbytesÚ	bytearrayÚwrite_bytesr_   rk   r€   Útupler«   Úwrite_arrayr   Útyper¬   s     r   r  Ú_PlistWriter.write_valueX  sF  € Ü�eœS×!Ñ!Ø×Ñ ¨%Õ0à�dŠ]Ø×Ñ Õ'à�eŠ^Ø×Ñ Õ(ä˜œs×#Ñ#Ø˜5Õ* 7Ö*Ø×#Ñ# I¨t°e©|Õ<ä# EÓ*Ð*ä˜œu×%Ñ%Ø×Ñ ¬¨U«Õ4ä˜œt×$Ñ$Ø�O‰O˜EÕ"ä˜¤¤yÐ1×2Ñ2Ø×Ñ˜UÕ#ä˜œx×0Ñ0×1Ñ1Ø×Ñ Ü /°×7KÑ7KÓ LõNô ˜¤¤t˜}×-Ñ-Ø×Ñ˜UÕ#ô Ð2´T¸%³[Ñ@ÓAÐAr   c           
      ó�  • U R                  S5        U =R                  S-  sl        [        SS[        U R                  R                  SS5      U R                  -  5      -
  5      n[        X5      R                  S5       H  nU(       d  M  U R                  U5        M     U =R                  S-  sl        U R                  S5        g )Nr   rê   rÎ   éL   ó   	s           rö   )
rí   rå   ÚmaxrB   ræ   rt   rM   Úsplitrë   rð   )r   r   rH   rø   s       r   r  Ú_PlistWriter.write_bytes{  s§   € Ø×Ñ˜6Ô"Ø×Ò˜aÑÕÜØØ”�T—[‘[×(Ñ(¨°Ó9¸D×<NÑ<NÑNÓOÑOóQˆô # 4Ó7×=Ñ=¸eÖDˆDßˆtØ—‘˜TÖ"ñ Eð 	×Ò˜aÑÕØ×Ñ˜Õ r   c                 ó²  • U(       a¿  U R                  S5        U R                  (       a  [        UR                  5       5      nOUR                  5       nU H[  u  p4[	        U[
        5      (       d  U R                  (       a  M-  [        S5      eU R                  SU5        U R                  U5        M]     U R                  S5        g U R                  S5        g )Nr©   úkeys must be stringsre   )rí   rÿ   ÚsortedÚitemsr   rP   r   r   ró   r  rð   )r   rj   r!  re   r•   s        r   r  Ú_PlistWriter.write_dictˆ  s¢   € ÞØ×Ñ˜vÔ&Ø��Ü˜qŸw™w›yÓ)‘àŸ™›	�ã#‘
�Ü! #¤s×+Ñ+Ø—~—~Ù Ü#Ð$:Ó;Ð;Ø×#Ñ# E¨3Ô/Ø× Ñ  Ö'ñ $ð ×Ñ˜VÕ$ð ×Ñ Õ'r   c                 ó®   • U(       a=  U R                  S5        U H  nU R                  U5        M     U R                  S5        g U R                  S5        g )NÚarray)rí   r  rð   ró   )r   r$  r•   s      r   r  Ú_PlistWriter.write_arrayœ  sI   € ÞØ×Ñ˜wÔ'Û�Ø× Ñ  Ö'ñ à×Ñ˜WÕ%ð ×Ñ Õ(r   )r€   r   rÿ   N)r
   r  rê   TFF)r)   r9   r:   r;   r   r÷   r  r  r  r  r<   r=   r   r   rü   rü   G  s(   † àBCØ;@ô	.ò!ò
!BòF!ò(õ()r   rü   c                 óv  • SnU H  nU R                  U5      (       d  M    g   [        R                  S4[        R                  S4[        R                  S44 H]  u  p4U R                  U5      (       d  M  U H:  nX5R                  S5      R                  U5      -   nU S [        U5       U:X  d  M9      g   M_     g)N)s   <?xmls   <plistTrO   z	utf-16-bez	utf-16-leÚasciiF)rÏ   ÚcodecsÚBOM_UTF8ÚBOM_UTF16_BEÚBOM_UTF16_LEÚdecoderR   rB   )ÚheaderÚprefixesÚpfxÚbomÚencodingÚstartÚprefixs          r   Ú_is_fmt_xmlr4  §  s´   € Ø$€HãˆØ×Ñ˜S×!Ó!Ùñ ô —‘ 'Ð*Ü×$Ñ$ kÐ2Ü×$Ñ$ kÐ2ó‰ˆð × Ñ  ×%Ñ%ÙãˆEØŸ<™<¨Ó0×7Ñ7¸ÓAÑAˆFØ�l”s˜6“{Ð# vÕ-Úó ñð  r   c                   ó   • \ rS rSrSS jrSrg)r   iÈ  c                 ó.   • [         R                  X5        g r    )r   r   )r   Úmessages     r   r   ÚInvalidFileException.__init__É  s   € Ü×Ñ˜DÕ*r   r=   N)zInvalid file)r)   r9   r:   r;   r   r<   r=   r   r   r   r   È  s   † ÷+r   r   ÚBÚHÚLÚQ)rê   é   r?   é   c                   ó@   • \ rS rSrSrSS jrS rS rS rS r	S r
S	rg
)Ú_BinaryPlistParseriÐ  zï
Read or write a binary plist file, following the description of the binary
format.  Raise InvalidFileException in case of error, otherwise return the
root object.

see also: http://opensource.apple.com/source/CF/CF-744.18/CFBinaryPList.c
c                 ó   • Xl         X l        g r    )r   Ú_aware_datimer�   s      r   r   Ú_BinaryPlistParser.__init__Ø  s   € Ø#ŒØ+Õr   c                 ó  •  Xl         U R                   R                  S[        R                  5        U R                   R	                  S5      n[        U5      S:w  a
  [        5       e[        R                  " SU5      u  o0l	        pEnU R                   R                  U5        U R                  XC5      U l        [        /U-  U l        U R                  U5      $ ! [        [         [        R"                  [$        [&        4 a    [        5       ef = f)Niàÿÿÿé    z>6xBBQQQ)Ú_fpÚseekÚosÚSEEK_ENDÚreadrB   r   ÚstructÚunpackÚ	_ref_sizeÚ
_read_intsÚ_object_offsetsÚ
_undefinedÚ_objectsÚ_read_objectÚOSErrorÚ
IndexErrorÚerrorr  r   )r   ÚfpÚtrailerÚoffset_sizeÚnum_objectsÚ
top_objectÚoffset_table_offsets          r   r�   Ú_BinaryPlistParser.parseÜ  sÕ   € ð	)ð ŒHØ�H‰H�M‰M˜#œrŸ{™{Ô+Ø—h‘h—m‘m BÓ'ˆGÜ�7‹|˜rÓ!Ü*Ó,Ð,ô —’˜j¨'Ó2ñØœ^¨[Ø#à�H‰H�M‰MÐ-Ô.Ø#'§?¡?°;Ó#LˆDÔ Ü'˜L¨;Ñ6ˆDŒMØ×$Ñ$ ZÓ0Ð0øäœ¤V§\¡\´=Üðó 	)ä&Ó(Ð(ð	)ús   ‚CC Ã4Dc                 óÚ   • US:X  ad  U R                   R                  S5      S   S-  nSU-  nS[        U   -   n[        R                  " X@R                   R                  U5      5      S   $ U$ )z#return the size of the next object.é   rê   r
   r@   rq   )rF  rJ  Ú_BINARY_FORMATrK  rL  )r   ÚtokenLrv   rG   Úfs        r   Ú	_get_sizeÚ_BinaryPlistParser._get_sizeõ  sc   € à�S‹=Ø—‘—‘˜aÓ  Ñ# cÑ)ˆAØ�Q‘ˆAØ”n QÑ'Ñ'ˆAÜ—=’= §H¡H§M¡M°!Ó$4Ó5°aÑ8Ð8àˆr   c                 ó*  ^^• U R                   R                  TU-  5      mT[        ;   a#  [        R                  " SU [        T    3T5      $ T(       a  [        T5      TU-  :w  a
  [        5       e[        UU4S j[        STU-  T5       5       5      $ )Nrq   c              3   óZ   >#   • U  H   n[         R                  TXT-    S 5      v •  M"     g7f)ÚbigN)r   Ú
from_bytes)Ú.0rK   r   Úsizes     €€r   Ú	<genexpr>Ú0_BinaryPlistParser._read_ints.<locals>.<genexpr>  s/   øé € ð <Ú":˜Qô Ÿ™¨¨Q°D±Ð(9¸5×AÐAÚ":ùs   ƒ(+r
   )	rF  rJ  r_  rK  rL  rB   r   r  rA   )r   Únri  r   s     `@r   rN  Ú_BinaryPlistParser._read_intsÿ  s…   ù€ Ø�x‰x�}‰}˜T A™XÓ&ˆØ”>Ó!Ü—=’= 1 Q C¬°tÑ(<Ð'=Ð!>ÀÓEÐEæœ3˜t›9¨¨q©Ó0Ü*Ó,Ð,Üõ <Ü"'¨¨4°!©8°TÔ":ó<ó <ð <r   c                 ó8   • U R                  XR                  5      $ r    )rN  rM  )r   rl  s     r   Ú
_read_refsÚ_BinaryPlistParser._read_refs	  s   € Ø�‰˜q§.¡.Ó1Ð1r   c                 ó°  • U R                   U   nU[        La  U$ U R                  U   nU R                  R	                  U5        U R                  R                  S5      S   nUS-  US-  peUS:X  a  SnGOºUS:X  a  SnGO°US:X  a  S	nGO¦US:X  a  S
nGOœUS:X  a6  [        R                  U R                  R                  SU-  5      SUS:¬  S9nGO`US:X  a5  [        R                  " SU R                  R                  S5      5      S   nGO%US:X  a5  [        R                  " SU R                  R                  S5      5      S   nGOêUS:X  a›  [        R                  " SU R                  R                  S5      5      S   nU R                  (       a&  [        R                  " SSS[        R                  S9nO[        R                  " SSS5      nU[        R                  " US9-   nGOIUS:X  aG  U R                  U5      n	U R                  R                  U	5      n[        U5      U	:w  a
  [!        5       eGOüUS:X  aX  U R                  U5      n	U R                  R                  U	5      n
[        U
5      U	:w  a
  [!        5       eU
R#                  S5      nGOžUS:X  a[  U R                  U5      S-  n	U R                  R                  U	5      n
[        U
5      U	:w  a
  [!        5       eU
R#                  S5      nGO=US:X  a<  [%        [        R                  U R                  R                  SU-   5      S5      5      nOûUS:X  a\  U R                  U5      n	U R'                  U	5      n/ nX R                   U'   U H#  nUR)                  U R+                  U5      5        M%     O™US :X  a‰  U R                  U5      n	U R'                  U	5      nU R'                  U	5      nU R-                  5       nX R                   U'    [/        XÛ5       H'  u  pïU R+                  U5      X R+                  U5      '   M)     O
[!        5       eX R                   U'   U$ ! [0         a    [!        5       ef = f)!z`
read the object by reference.

May recursively read sub-objects (content of an array/dict/set)
rê   r
   éð   r^  Nr>  Fé	   Tr   rÎ   rf  r@   ©Úsignedé"   z>fr?   é#   z>dé3   éÑ  ©r[   )Úsecondsé@   éP   r'  é`   r=  úutf-16beé€   é    éÐ   )rQ  rP  rO  rF  rG  rJ  r   rg  rK  rL  rB  r_   r`   Ú	timedeltarb  rB   r   r,  r	   ro  rC   rR  r   Úzipr   )r   ÚrefÚresultÚoffsetÚtokenÚtokenHr`  ra  ÚepochrG   r   Úobj_refsÚxÚkey_refsÚkÚos                   r   rR  Ú_BinaryPlistParser._read_object  s©  € ð —‘˜sÑ#ˆØœÒ#ØˆMà×%Ñ% cÑ*ˆØ�‰�‰�fÔØ—‘—‘˜aÓ  Ñ#ˆØ ™ u¨t¡|�à�D‹=ØŠFà�d‹]ØŠFà�d‹]ØŠFð
 �d‹]ØŠFà�t‹^Ü—^‘^ D§H¡H§M¡M°!°v±+Ó$>Ø$)°&¸A±+ð $ð ?ŠFð �d‹]Ü—]’] 4¨¯©¯©°qÓ)9Ó:¸1Ñ=ŠFà�d‹]Ü—]’] 4¨¯©¯©°qÓ)9Ó:¸1Ñ=ŠFà�d‹]Ü—’˜d D§H¡H§M¡M°!Ó$4Ó5°aÑ8ˆAð ×!×!Ü ×)Ò)¨$°°1¼X¿\¹\ÑJ‘ä ×)Ò)¨$°°1Ó5�ØœX×/Ò/¸Ñ:Ñ:ŠFà�t‹^Ø—‘˜vÓ&ˆAØ—X‘X—]‘] 1Ó%ˆFÜ�6‹{˜aÓÜ*Ó,Ð,ñ  ð �t‹^Ø—‘˜vÓ&ˆAØ—8‘8—=‘= Ó#ˆDÜ�4‹y˜A‹~Ü*Ó,Ð,Ø—[‘[ Ó)ŠFà�t‹^Ø—‘˜vÓ&¨Ñ*ˆAØ—8‘8—=‘= Ó#ˆDÜ�4‹y˜A‹~Ü*Ó,Ð,Ø—[‘[ Ó,ŠFà�t‹^äœŸ™¨¯©¯©°a¸&±jÓ(AÀ5ÓIÓJ‰Fà�t‹^Ø—‘˜vÓ&ˆAØ—‘ qÓ)ˆHØˆFØ!'�M‰M˜#ÑÛ�Ø—‘˜d×/Ñ/°Ó2Ö3ò ð �t‹^Ø—‘˜vÓ&ˆAØ—‘ qÓ)ˆHØ—‘ qÓ)ˆHØ—_‘_Ó&ˆFØ!'�M‰M˜#Ñð-Ü Ö3‘D�AØ37×3DÑ3DÀQÓ3G�F×,Ñ,¨QÓ/Ó0ò 4ô
 'Ó(Ð(à#�‰�cÑØˆøô ó -Ü*Ó,Ð,ð-ús   Ï/6Q  Ñ Q)rB  r   rF  rO  rQ  rM  Nrà   )r)   r9   r:   r;   Ú__doc__r   r�   rb  rN  ro  rR  r<   r=   r   r   r@  r@  Ð  s&   † ñô,ò)ò2ò<ò2õgr   r@  c                 ó.   • U S:  a  gU S:  a  gU S:  a  gg)Né   rê   é   r=  ì        r?   r>  r=   )Úcounts    r   Ú_count_to_sizer—  u  s%   € Øˆvƒ~Øà	�‹Øà	�‹Øð r   c                   ó<   • \ rS rSrS
S jrS rS rS rS rS r	Sr
g	)Ú_BinaryPlistWriteri„  c                 ó4   • Xl         X l        X0l        X@l        g r    )rF  rÿ   r   r€   )r   rV  r  r  ra   s        r   r   Ú_BinaryPlistWriter.__init__…  s   € ØŒØ#ŒØ!ŒØ-Õr   c                 óà  • / U l         0 U l        0 U l        U R                  U5        [	        U R                   5      nS/U-  U l        [        U5      U l        [        U R                     U l	        U R                  R                  S5        U R                    H  nU R                  U5        M     U R                  U5      nU R                  R                  5       n[        U5      nS[        U   U-  -   nU R                  R                  [        R                   " U/U R
                  Q76 5        SnX†U R                  UXE4n	U R                  R                  [        R                   " S/U	Q76 5        g )Nr
   ó   bplist00rq   z	>5xBBBQQQ)Ú_objlistÚ	_objtableÚ_objidtableÚ_flattenrB   rO  r—  rM  r_  Ú_ref_formatrF  r÷   Ú_write_objectÚ
_getrefnumÚtellrK  Úpack)
r   r•   rY  ÚobjrZ  r[  rX  Úoffset_formatÚsort_versionrW  s
             r   r÷   Ú_BinaryPlistWriter.write‹  s4  € ð ˆŒð ˆŒØˆÔð 	�‰�eÔô ˜$Ÿ-™-Ó(ˆØ !˜s ;™ˆÔÜ'¨Ó4ˆŒä)¨$¯.©.Ñ9ˆÔð 	�‰�‰�{Ô#ð —=”=ˆCØ×Ñ˜sÖ#ñ !ð —_‘_ UÓ+ˆ
Ø"Ÿh™hŸm™m›oÐÜ$Ð%8Ó9ˆØœn¨[Ñ9¸KÑGÑGˆØ�‰�‰”v—{’{ =ÐH°4×3GÑ3GÒHÔIð ˆà t§~¡~°{Øð
ˆð 	�‰�‰”v—{’{ ;Ð9°Ò9Õ:r   c                 óœ  • [        U[        5      (       a  [        U5      U4U R                  ;   a  g O[	        U5      U R
                  ;   a  g [        U R                  5      nU R                  R                  U5        [        U[        5      (       a  X R                  [        U5      U4'   OX R
                  [	        U5      '   [        U[        5      (       a¿  / n/ nUR                  5       nU R                  (       a  [        U5      nU HZ  u  pg[        U[        5      (       d  U R                  (       a  M-  [        S5      eUR                  U5        UR                  U5        M\     [         R"                  " X45       H  nU R%                  U5        M     g [        U[&        [(        45      (       a  U H  nU R%                  U5        M     g g )Nr  )r   Ú_scalarsr  rŸ  Úidr   rB   rž  rC   r©   r!  rÿ   r   rP   r   r   Ú	itertoolsÚchainr¡  r«   r  )	r   r•   ÚrefnumÚkeysÚvaluesr!  rŽ  Úvr�  s	            r   r¡  Ú_BinaryPlistWriter._flatten¸  sd  € ô �eœX×&Ñ&Ü�U“˜UÐ# t§~¡~Ó5Øð 6ô �‹Y˜$×*Ñ*Ó*Øô �T—]‘]Ó#ˆØ�‰×Ñ˜UÔ#Ü�eœX×&Ñ&Ø39�N‰NœD ›K¨Ð/Ò0à*0×ÑœR ›YÑ'ô �eœT×"Ñ"ØˆDØˆFØ—K‘K“MˆEØ��Ü˜u›�ã‘�Ü! !¤S×)Ñ)Ø—~—~Ù Ü#Ð$:Ó;Ð;Ø—‘˜A”Ø—‘˜aÖ ñ ô —_’_ TÖ2�Ø—‘˜aÖ ò 3ô ˜¤¤e˜}×-Ñ-Û�Ø—‘˜aÖ ò ð .r   c                 ó�   • [        U[        5      (       a  U R                  [        U5      U4   $ U R                  [        U5         $ r    )r   r¬  rŸ  r  r   r­  r¬   s     r   r¤  Ú_BinaryPlistWriter._getrefnumâ  s<   € Ü�eœX×&Ñ&Ø—>‘>¤4¨£;°Ð"6Ñ7Ð7à×#Ñ#¤B u£IÑ.Ð.r   c                 óH  • US:  a3  U R                   R                  [        R                  " SX-  5      5        g US:  a6  U R                   R                  [        R                  " SUS-  SU5      5        g US:  a6  U R                   R                  [        R                  " SUS-  SU5      5        g US	:  a6  U R                   R                  [        R                  " S
US-  SU5      5        g U R                   R                  [        R                  " SUS-  SU5      5        g )Nr^  z>Br“  z>BBBrÎ   r”  z>BBHé   r•  z>BBLé   z>BBQé   )rF  r÷   rK  r¦  )r   rˆ  ri  s      r   Ú_write_sizeÚ_BinaryPlistWriter._write_sizeè  sÉ   € Ø�"‹9Ø�H‰H�N‰Nœ6Ÿ;š; t¨U©\Ó:Õ;à�F‹]Ø�H‰H�N‰Nœ6Ÿ;š; v¨u°s©{¸DÀ$ÓGÕHà�G‹^Ø�H‰H�N‰Nœ6Ÿ;š; v¨u°s©{¸DÀ$ÓGÕHà�G‹^Ø�H‰H�N‰Nœ6Ÿ;š; v¨u°s©{¸DÀ$ÓGÕHð �H‰H�N‰Nœ6Ÿ;š; v¨u°s©{¸DÀ$ÓGÕHr   c           	      óF  • U R                  U5      nU R                  R                  5       U R                  U'   Uc  U R                  R	                  S5        g USL a  U R                  R	                  S5        g USL a  U R                  R	                  S5        g [        U[        5      (       GaX  US:  a3   U R                  R	                  [        R                  " SSU5      5        g US	:  a2  U R                  R	                  [        R                  " S
SU5      5        g US:  a2  U R                  R	                  [        R                  " SSU5      5        g US:  a2  U R                  R	                  [        R                  " SSU5      5        g US:  a2  U R                  R	                  [        R                  " SSU5      5        g US:  a.  U R                  R	                  SUR                  SSSS9-   5        g [        U5      e[        U[        5      (       a2  U R                  R	                  [        R                  " SSU5      5        g [        U[        R                  5      (       aÄ  U R                  (       aX  UR                  [        R                   5      nU[        R                  " SSS[        R                   S9-
  nUR#                  5       nO)U[        R                  " SSS5      -
  R#                  5       nU R                  R	                  [        R                  " SSU5      5        g [        U[$        [&        45      (       a7  U R)                  S[+        U5      5        U R                  R	                  U5        g [        U[,        5      (       aI   UR/                  S5      nU R)                  S [+        U5      5        U R                  R	                  U5        g [        U[2        5      (       Ga.  UR4                  S:  a  [7        S$5      eUR4                  S	:  a2  U R                  R	                  [        R                  " S
S%U5      5        g UR4                  S:  a2  U R                  R	                  [        R                  " SS&U5      5        g UR4                  S:  a2  U R                  R	                  [        R                  " SS'U5      5        g UR4                  S:  a2  U R                  R	                  [        R                  " SS(U5      5        g [        U5      e[        U[8        [:        45      (       a~  U Vs/ s H  opR                  U5      PM     nn[+        U5      n	U R)                  S)U	5        U R                  R	                  [        R                  " S*U R<                  U	-  -   /UQ76 5        g [        U[>        5      (       GaZ  / / pºU R@                  (       a  [C        URE                  5       5      nOURE                  5       nU Hx  u  pÞ[        U[,        5      (       d  U RF                  (       a  M-  [I        S+5      eU
RK                  U R                  U5      5        URK                  U R                  U5      5        Mz     [+        U
5      n	U R)                  S,U	5        U R                  R	                  [        R                  " S*U R<                  U	-  -   /U
Q76 5        U R                  R	                  [        R                  " S*U R<                  U	-  -   /UQ76 5        g [I        U5      e! [        R                   a    [        U5      S ef = f! [0         a3    UR/                  S!5      nU R)                  S"[+        U5      S#-  5         GNÔf = fs  snf )-Nó    Fó   Tr  r
   z>Bqrº  r“  z>BBrÎ   r”  z>BHr¸  r•  z>BLr¹  l            z>BQr   ó   rf  rt  z>Bdrw  ry  rê   rz  rx  r|  r'  r}  r  r~  r=  r   r€  é�   éƒ   é‡   r�  rq   r  r‚  )&r¤  rF  r¥  rO  r÷   r   r   rK  r¦  rU  r  Úto_bytesrÔ   r_   r€   ri   r`   Útotal_secondsr  r  r»  rB   rP   rR   ÚUnicodeEncodeErrorr	   r   r   r«   r  r¢  r©   rÿ   r   r!  r   r   rC   )r   r•   r…  Údtr‡  ra  Útr�  ÚrefsrG   ÚkeyRefsÚvalRefsÚ	rootItemsrŽ  r³  s                  r   r£  Ú _BinaryPlistWriter._write_objectø  sd  € Ø�o‰o˜eÓ$ˆØ$(§H¡H§M¡M£Oˆ×Ñ˜SÑ!Ø‰=Ø�H‰H�N‰N˜7Õ#à�eŠ^Ø�H‰H�N‰N˜7Õ#à�dŠ]Ø�H‰H�N‰N˜7Õ#ä˜œs×#Ò#Ø�q‹yð9Ø—H‘H—N‘N¤6§;¢;¨u°d¸EÓ#BÕCð ˜“Ø—‘—‘œvŸ{š{¨5°$¸Ó>Õ?Ø˜“Ø—‘—‘œvŸ{š{¨5°$¸Ó>Õ?Ø˜“Ø—‘—‘œvŸ{š{¨5°$¸Ó>Õ?Ø˜“Ø—‘—‘œvŸ{š{¨5°$¸Ó>Õ?Ø˜“Ø—‘—‘˜w¨¯©¸¸EÈ$¨Ð)OÑOÕPä# EÓ*Ð*ä˜œu×%Ñ%Ø�H‰H�N‰Nœ6Ÿ;š; u¨d°EÓ:Õ;ä˜œx×0Ñ0×1Ñ1Ø×#×#Ø×%Ñ%¤h§l¡lÓ3�Øœh×/Ò/°°a¸Ä8Ç<Á<ÑPÑP�Ø×(Ñ(Ó*‘àœX×.Ò.¨t°Q¸Ó:Ñ:×IÑIÓK�Ø�H‰H�N‰Nœ6Ÿ;š; u¨d°AÓ6Õ7ä˜¤¤yÐ1×2Ñ2Ø×Ñ˜T¤3 u£:Ô.Ø�H‰H�N‰N˜5Õ!ä˜œs×#Ñ#ð4Ø—L‘L Ó)�Ø× Ñ  ¤s¨5£zÔ2ð
 �H‰H�N‰N˜1Õä˜œs×#Ò#Ø�z‰z˜A‹~Ü Ð!8Ó9Ð9Ø—‘˜fÓ$Ø—‘—‘œvŸ{š{¨5°$¸Ó>Õ?Ø—‘˜gÓ%Ø—‘—‘œvŸ{š{¨5°$¸Ó>Õ?Ø—‘˜gÓ%Ø—‘—‘œvŸ{š{¨5°$¸Ó>Õ?Ø—‘˜gÓ%Ø—‘—‘œvŸ{š{¨5°$¸Ó>Õ?ä# EÓ*Ð*ä˜¤¤e˜}×-Ñ-Ù05Ó6²¨1—O‘O AÖ&±ˆDÐ6Ü�D“	ˆAØ×Ñ˜T 1Ô%Ø�H‰H�N‰Nœ6Ÿ;š; s¨T×-=Ñ-=ÀÑ-AÑ'AÐIÀDÒIÕJä˜œt×$Ò$Ø! 2�Wà��Ü" 5§;¡;£=Ó1‘	à!ŸK™K›M�	ã!‘�Ü! !¤S×)Ñ)Ø—~—~Ù Ü#Ð$:Ó;Ð;Ø—‘˜tŸ™¨qÓ1Ô2Ø—‘˜tŸ™¨qÓ1Ö2ñ "ô �G“ˆAØ×Ñ˜T 1Ô%Ø�H‰H�N‰Nœ6Ÿ;š; s¨T×-=Ñ-=ÀÑ-AÑ'AÐLÀGÒLÔMØ�H‰H�N‰Nœ6Ÿ;š; s¨T×-=Ñ-=ÀÑ-AÑ'AÐLÀGÒLÕMô ˜EÓ"Ð"øôg —|‘|ó 9Ü'¨Ó.°DÐ8ð9ûôF &ó 4Ø—L‘L Ó,�Ø× Ñ  ¤s¨1£v°¡{×3ð4üò* 7s$   Â71\: Î,] Õ^Ü:!]Ý9^Þ^)
r€   rF  rO  r   rž  rŸ  r¢  rM  r   rÿ   Nrà   )r)   r9   r:   r;   r   r÷   r¡  r¤  r»  r£  r<   r=   r   r   r™  r™  „  s$   † ô.ò+;òZ(!òT/òIõ c#r   r™  c                 ó   • U S S S:H  $ )Nr>  r�  r=   )r-  s    r   Ú_is_fmt_binaryrÏ  ^  s   € Ø�"�1ˆ:˜Ñ$Ð$r   )Údetectr…   ÚwriterF©Úfmtr‚   ra   c                ó
  • Uc^  U R                  S5      nU R                  S5        [        R                  5        H  nUS   " U5      (       d  M  US   n  O   [	        5       e[        U   S   nU" X#S9nUR                  U 5      $ )z‡Read a .plist file. 'fp' should be a readable and binary file object.
Return the unpacked root object (which usually is a dictionary).
rE  r
   rÐ  r…   )r‚   ra   )rJ  rG  Ú_FORMATSr²  r   r�   )rV  rÓ  r‚   ra   r-  ÚinfoÚPÚps           r   r   r   t  s€   € ð �{Ø—‘˜“ˆØ
�‰�Œ
Ü—O‘OÖ%ˆDØ�HŠ~˜f×%Ó%Ø˜‘N�Ùñ &ô 'Ó(Ð(ô �S‰M˜(Ñ#ˆá	�IÑ=€AØ�7‰7�2‹;Ðr   c                ó    • [        U [        5      (       a%  U[        :X  a  [        S5      eU R	                  5       n [        U 5      n[        XAX#S9$ )ziRead a .plist file from a bytes object.
Return the unpacked root object (which usually is a dictionary).
z6value must be bytes-like object when fmt is FMT_BINARYrÒ  )r   rP   r   r   rR   r   r   )r•   rÓ  r‚   ra   rV  s        r   r   r   Š  sL   € ô �%œ×ÑØ”*ÓÜð )ó *ð *à—‘“ˆÜ	�‹€BÜ� yÑPÐPr   T)rÓ  r  r  ra   c                ó|   • U[         ;  a  [        SU< 35      e[         U   S   " XUUS9nUR                  U 5        g)zOWrite 'value' to a .plist file. 'fp' should be a writable,
binary file object.
zUnsupported format: rÑ  )r  r  ra   N)rÕ  r   r÷   )r•   rV  rÓ  r  r  ra   rÑ  s          r   r   r   —  sA   € ð
 ”(ÓÝ²3Ð8Ó9Ð9ä�c‰]˜8Ò$ RÀxØ4BñD€Fà
‡L�L�Õr   ©rÓ  r  r  ra   c          	      óN   • [        5       n[        XXUUS9  UR                  5       $ )z?Return a bytes object with the contents for a .plist file.
    rÛ  )r   r   Úgetvalue)r•   rÓ  r  r  ra   rV  s         r   r   r   ¤  s(   € ô 
‹€BÜˆ˜¸)Ø&ò(à�;‰;‹=Ðr   )r  )9r‘  Ú__all__rD   r(  r_   ÚenumÚior   r®  rH  ÚrerK  Úxml.parsers.expatr   ÚEnumr)   r   ÚglobalsÚupdateÚ__members__r	   rþ   Úcompilerr   rM   rS   ÚASCIIr\   rg   rk   rw   ry   râ   rü   r4  r   r   r_  ÚobjectrP  r@  r—  rP   r   rÔ   r  r¬  r™  rÏ  r   r©   r   rÕ  r   r   r   r   r=   r   r   Ú<module>rê     sË  ðñ7òp€ó Û Û Û Ý Û Û 	Û 	Û Ý *ð �iŠi˜Ð';ÀHÑM€Ù ƒ	× Ñ �×(Ñ(Ô )÷ñ ðB€ð —*’*ðIóJ€ôò&ð �jŠjð  Xð  Z\÷  Zbñ  Zbó  c€ò#òò
÷mPñ mP÷`#ñ #ôL])�>ô ])ò@ôB+˜Jô +ð ˜S S¨SÑ1€á‹X€
÷cñ còJð ��e˜X×.Ñ.°Ð6€ôW#˜&ô W#òt%ð ‰TØØØñð
 ‘ØØ!Ø!ñð
€ð  D¸õ ð, ¨¸Uõ 
Qð #¨d¸UØõ
ð  ¨%¸4Øör   