Ë
    òT•j¦o  ã                   ó¦  — d Z g d¢ZddlZddlZddlZddlZddlmZ ddlZddl	Z	ddl
Z
ddlZddlmZ  ej                  dde¬«      Z e«       j%                  ej&                  «       d	Z G d
„ d«      ZdZ e
j.                  d«      Zd2d„Zd„ Z e
j.                  de
j6                  «      Zd„ Zd„ Zd„ Z G d„ d«      Z  G d„ d«      Z! G d„ de!«      Z"d„ Z# G d„ de$«      Z%dddd d!œZ& e'«       Z( G d"„ d#«      Z)d$„ Z*e+e,e-ej                  e.fZ/ G d%„ d&e'«      Z0d'„ Z1e2 e3e#e e"¬(«      e4 e3e1e)e0¬(«      iZ5de3d)œd*„Z6de3d)œd+„Z7e2d,d-d.œd/„Z8e2d-d,d0œd1„Z9y)3a>  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)Úmodulei   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)r	   c                 óˆ   — t        |t        «      st        d«      ‚|dk\  rt        d«      ‚|dk  rt        d«      ‚|| _        y )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.12/plistlib.pyÚ__init__zUID.__init__Q   sE   € Ü˜$¤Ô$ÜÐ1Ó2Ð2Ø�7Š?ÜÐ6Ó7Ð7Ø�!Š8ÜÐ4Ó5Ð5Øˆ�	ó    c                 ó   — | j                   S ©N)r   ©r   s    r   Ú	__index__zUID.__index__Z   s   € Ø�y‰yÐr   c                 ó`   — | j                   j                  ›dt        | j                  «      ›d�S )Nú(ú))Ú	__class__Ú__name__Úreprr   r   s    r   Ú__repr__zUID.__repr__]   s   € ØŸ>™>×2Ó2´D¸¿¹µOÐDÐDr   c                 ó4   — | j                   | j                  ffS r   )r$   r   r   s    r   Ú
__reduce__zUID.__reduce__`   s   € Ø�~‰~ §	¡	˜|Ð+Ð+r   c                 ó`   — t        |t        «      st        S | j                  |j                  k(  S r   )r   r	   ÚNotImplementedr   )r   Úothers     r   Ú__eq__z
UID.__eq__c   s%   € Ü˜%¤Ô%Ü!Ð!Ø�y‰y˜EŸJ™JÑ&Ð&r   c                 ó,   — t        | j                  «      S r   )Úhashr   r   s    r   Ú__hash__zUID.__hash__h   s   € Ü�D—I‘I‹Ðr   N)	r%   Ú
__module__Ú__qualname__r   r    r'   r)   r-   r0   © r   r   r	   r	   P   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                 óÆ   — |dz  dz  }g }t        dt        | «      |«      D ].  }| |||z    }|j                  t        j                  |«      «       Œ0 dj                  |«      S )Né   é   r
   r   )ÚrangeÚlenÚappendÚbinasciiÚ
b2a_base64Újoin)ÚsÚmaxlinelengthÚ
maxbinsizeÚpiecesÚiÚchunks         r   Ú_encode_base64rC   |   sj   € à Ñ" AÑ%€JØ€FÜ�1”c˜!“f˜jÓ)ò 2ˆØ�!�a˜*‘nÐ%ˆØ�‰”h×)Ñ)¨%Ó0Õ1ð2ð �8‰8�FÓÐr   c                 ó”   — t        | t        «      r$t        j                  | j	                  d«      «      S t        j                  | «      S )Núutf-8)r   Ústrr:   Ú
a2b_base64Úencode)r=   s    r   Ú_decode_base64rI   …   s9   € Ü�!”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                 óÈ   — d}t         j                  | «      j                  «       }g }|D ]%  }||   }|€ n|j                  t	        |«      «       Œ' t        j
                  |Ž S )N©ÚyearÚmonthÚdayÚhourÚminuteÚsecond)Ú_dateParserÚmatchÚ	groupdictr9   r   Údatetime)r=   ÚorderÚgdÚlstÚkeyÚvals         r   Ú_date_from_stringr[   ’   sh   € Ø@€EÜ	×	Ñ	˜1Ó	×	'Ñ	'Ó	)€BØ
€CØò ˆØ�‰gˆØˆ;ÙØ�
‰
”3�s“8Õð	ô
 ×Ñ˜cÐ"Ð"r   c                 ó�   — d| j                   | j                  | j                  | j                  | j                  | j
                  fz  S )Nz%04d-%02d-%02dT%02d:%02d:%02dZrK   )Úds    r   Ú_date_to_stringr^   ž   s:   € Ø+Ø	�‰�—‘˜Ÿ™Ø	�‰�—‘˜!Ÿ(™(ð/ñ ð r   c                 óþ   — t         j                  | «      }|�t        d«      ‚| j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  dd«      } | j                  d	d
«      } | S )Nz;strings can't contain control characters; use bytes insteadz
ú
úú&z&amp;ú<z&lt;ú>z&gt;)Ú_controlCharPatÚsearchr   Úreplace)ÚtextÚms     r   Ú_escaperj   ¤   s~   € Ü×Ñ˜tÓ$€AØ€}Üð -ó .ð 	.à�<‰<˜ Ó%€DØ�<‰<˜˜dÓ#€DØ�<‰<˜˜WÓ%€DØ�<‰<˜˜VÓ$€DØ�<‰<˜˜VÓ$€DØ€Kr   c                   ó„   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú_PlistParserc                 ó<   — g | _         d | _        d | _        || _        y r   )ÚstackÚcurrent_keyÚrootÚ
_dict_type©r   Ú	dict_types     r   r   z_PlistParser.__init__±   s   € ØˆŒ
ØˆÔØˆŒ	Ø#ˆ�r   c                 óF  — t        «       | _        | j                  | j                  _        | j                  | j                  _        | j                  | j                  _        | j                  | j                  _	        | j                  j                  |«       | j                  S r   )r   ÚparserÚhandle_begin_elementÚStartElementHandlerÚhandle_end_elementÚEndElementHandlerÚhandle_dataÚCharacterDataHandlerÚhandle_entity_declÚEntityDeclHandlerÚ	ParseFilerp   )r   Úfileobjs     r   Úparsez_PlistParser.parse·   so   € Ü"“nˆŒØ*.×*CÑ*Cˆ�‰Ô'Ø(,×(?Ñ(?ˆ�‰Ô%Ø+/×+;Ñ+;ˆ�‰Ô(Ø(,×(?Ñ(?ˆ�‰Ô%Ø�‰×Ñ˜gÔ&Ø�y‰yÐr   c                 ó   — t        d«      ‚)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|   z_PlistParser.handle_entity_declÀ   s   € ô #Ð#]Ó^Ð^r   c                 óH   — g | _         t        | d|z   d «      }|�	 ||«       y y )NÚbegin_)r   Úgetattr)r   ÚelementÚattrsÚhandlers       r   rv   z!_PlistParser.handle_begin_elementÆ   s.   € ØˆŒ	Ü˜$ ¨7Ñ 2°DÓ9ˆØÐÙ�E�Nð r   c                 ó8   — t        | d|z   d «      }|� |«        y y )NÚend_)r‹   )r   rŒ   rŽ   s      r   rx   z_PlistParser.handle_end_elementÌ   s%   € Ü˜$ ¨Ñ 0°$Ó7ˆØÐÙ�Ið r   c                 ó:   — | j                   j                  |«       y r   )r   r9   r   s     r   rz   z_PlistParser.handle_dataÑ   s   € Ø�	‰	×Ñ˜Õr   c                 óÄ  — | j                   �ct        | j                  d   t        «      s"t	        d| j
                  j                  z  «      ‚|| j                  d   | j                   <   d | _         y | j                  s|| _        y t        | j                  d   t        «      s"t	        d| j
                  j                  z  «      ‚| j                  d   j                  |«       y )Néÿÿÿÿzunexpected element at line %d)
ro   r   rn   Údictr   ru   ÚCurrentLineNumberrp   Úlistr9   ©r   r„   s     r   Ú
add_objectz_PlistParser.add_objectÔ   s¾   € Ø×ÑÐ'Ü˜dŸj™j¨™n¬dÔ3Ü Ð!@Ø!%§¡×!>Ñ!>ñ"?ó @ð @à/4ˆD�J‰J�r‰N˜4×+Ñ+Ñ,Ø#ˆDÕØ—’àˆD�Iä˜dŸj™j¨™n¬dÔ3Ü Ð!@Ø!%§¡×!>Ñ!>ñ"?ó @ð @à�J‰J�r‰N×!Ñ! %Õ(r   c                 óJ   — dj                  | j                  «      }g | _        |S )NÚ )r<   r   r   s     r   Úget_dataz_PlistParser.get_dataä   s    € Ø�w‰w�t—y‘yÓ!ˆØˆŒ	Øˆr   c                 ó|   — | j                  «       }| j                  |«       | j                  j                  |«       y r   )rq   r˜   rn   r9   )r   r�   r]   s      r   Ú
begin_dictz_PlistParser.begin_dictë   s,   € Ø�O‰OÓˆØ�‰˜ÔØ�
‰
×Ñ˜!Õr   c                 ó¬   — | j                   r.t        d| j                   | j                  j                  fz  «      ‚| j                  j                  «        y )Nz%missing value for key '%s' at line %d)ro   r   ru   r•   rn   Úpopr   s    r   Úend_dictz_PlistParser.end_dictð   sI   € Ø×ÒÜÐDØ"×.Ñ.¨t¯{©{×/LÑ/LÐMñNó Oð Oà�
‰
�‰Õr   c                 óÄ   — | j                   st        | j                  d   t        «      s"t	        d| j
                  j                  z  «      ‚| j                  «       | _         y )Nr“   zunexpected key at line %d)ro   r   rn   r”   r   ru   r•   r›   r   s    r   Úend_keyz_PlistParser.end_keyö   sL   € Ø×Ò¤:¨d¯j©j¸©n¼dÔ#CÜÐ8Ø!Ÿ[™[×:Ñ:ñ;ó <ð <àŸ=™=›?ˆÕr   c                 ó`   — g }| j                  |«       | j                  j                  |«       y r   )r˜   rn   r9   )r   r�   Úas      r   Úbegin_arrayz_PlistParser.begin_arrayü   s%   € ØˆØ�‰˜ÔØ�
‰
×Ñ˜!Õr   c                 ó8   — | j                   j                  «        y r   )rn   rŸ   r   s    r   Ú	end_arrayz_PlistParser.end_array  s   € Ø�
‰
�‰Õr   c                 ó&   — | j                  d«       y )NT©r˜   r   s    r   Úend_truez_PlistParser.end_true  s   € Ø�‰˜Õr   c                 ó&   — | j                  d«       y )NFr©   r   s    r   Ú	end_falsez_PlistParser.end_false  s   € Ø�‰˜Õr   c                 óÔ   — | j                  «       }|j                  d«      s|j                  d«      r| j                  t        |d«      «       y | j                  t        |«      «       y )NÚ0xÚ0Xé   )r›   Ú
startswithr˜   r   )r   Úraws     r   Úend_integerz_PlistParser.end_integer
  sF   € Ø�m‰m‹oˆØ�>‰>˜$Ô 3§>¡>°$Ô#7Ø�O‰OœC  R›LÕ)à�O‰OœC ›HÕ%r   c                 óT   — | j                  t        | j                  «       «      «       y r   )r˜   Úfloatr›   r   s    r   Úend_realz_PlistParser.end_real  s   € Ø�‰œ˜dŸm™m›oÓ.Õ/r   c                 óB   — | j                  | j                  «       «       y r   )r˜   r›   r   s    r   Ú
end_stringz_PlistParser.end_string  s   € Ø�‰˜Ÿ™›Õ(r   c                 óT   — | j                  t        | j                  «       «      «       y r   )r˜   rI   r›   r   s    r   Úend_dataz_PlistParser.end_data  s   € Ø�‰œ t§}¡}£Ó7Õ8r   c                 óT   — | j                  t        | j                  «       «      «       y r   )r˜   r[   r›   r   s    r   Úend_datez_PlistParser.end_date  s   € Ø�‰Ô)¨$¯-©-«/Ó:Õ;r   N)r%   r1   r2   r   r€   r|   rv   rx   rz   r˜   r›   r�   r    r¢   r¥   r§   rª   r¬   r³   r¶   r¸   rº   r¼   r3   r   r   rl   rl   °   sg   „ ò$òò_òòò
ò)ò òò
ò+òò
òòò&ò0ò)ò9ó<r   rl   c                   ó.   — e Zd Zdd„Zd„ Zd„ Zdd„Zd„ Zy)	Ú_DumbXMLWriterc                 ó<   — || _         g | _        || _        || _        y r   )Úfilern   Ú_indent_levelÚindent)r   rÀ   Úindent_levelrÂ   s       r   r   z_DumbXMLWriter.__init__  s   € ØˆŒ	ØˆŒ
Ø)ˆÔØˆ�r   c                 óŒ   — | j                   j                  |«       | j                  d|z  «       | xj                  dz  c_        y )Nz<%s>é   )rn   r9   ÚwritelnrÁ   ©r   rŒ   s     r   Úbegin_elementz_DumbXMLWriter.begin_element%  s6   € Ø�
‰
×Ñ˜'Ô"Ø�‰�V˜gÑ%Ô&Ø×Ò˜aÑÖr   c                 ó¶   — | j                   dkD  sJ ‚| j                  j                  «       |k(  sJ ‚| xj                   dz  c_         | j                  d|z  «       y )Nr
   rÅ   z</%s>)rÁ   rn   rŸ   rÆ   rÇ   s     r   Úend_elementz_DumbXMLWriter.end_element*  sQ   € Ø×!Ñ! AÒ%Ð%Ð%Ø�z‰z�~‰~Ó 7Ò*Ð*Ð*Ø×Ò˜aÑÕØ�‰�W˜wÑ&Õ'r   Nc           	      ó~   — |�'t        |«      }| j                  d|›d|›d|›d�«       y | j                  d|z  «       y )Nrc   rd   z</z<%s/>)rj   rÆ   )r   rŒ   r„   s      r   Úsimple_elementz_DumbXMLWriter.simple_element0  s7   € ØÐÜ˜E“NˆEØ�LŠLª'²5º'ÐBÕCð �L‰L˜ 7Ñ*Õ+r   c                 ó  — |rnt        |t        «      r|j                  d«      }| j                  j	                  | j
                  | j                  z  «       | j                  j	                  |«       | j                  j	                  d«       y )NrE   ó   
)r   rF   rH   rÀ   ÚwriterÁ   rÂ   )r   Úlines     r   rÆ   z_DumbXMLWriter.writeln8  s^   € Ùô ˜$¤Ô$Ø—{‘{ 7Ó+�Ø�I‰I�O‰O˜D×.Ñ.°·±Ñ<Ô=Ø�I‰I�O‰O˜DÔ!Ø�	‰	�‰˜Õr   )r
   ú	r   )r%   r1   r2   r   rÈ   rÊ   rÌ   rÆ   r3   r   r   r¾   r¾     s   „ óò ò
(ó,ó	r   r¾   c                   ó6   — e Zd Z	 	 dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zy)	Ú_PlistWriterc                 ó~   — |r|j                  t        «       t        j                  | |||«       || _        || _        y r   )rÏ   ÚPLISTHEADERr¾   r   Ú
_sort_keysÚ	_skipkeys)r   rÀ   rÃ   rÂ   ÚwriteHeaderÚ	sort_keysÚskipkeyss          r   r   z_PlistWriter.__init__E  s5   € ñ Ø�J‰J”{Ô#Ü×Ñ  d¨L¸&ÔAØ#ˆŒØ!ˆ�r   c                 ój   — | j                  d«       | j                  |«       | j                  d«       y )Nz<plist version="1.0">z</plist>)rÆ   Úwrite_valuer—   s     r   rÏ   z_PlistWriter.writeO  s)   € Ø�‰Ð.Ô/Ø×Ñ˜ÔØ�‰�ZÕ r   c                 ó  — t        |t        «      r| j                  d|«       y |du r| j                  d«       y |du r| j                  d«       y t        |t        «      r9d|cxk  rdk  r#n t	        |«      ‚| j                  dd	|z  «       y t	        |«      ‚t        |t
        «      r| j                  d
t        |«      «       y t        |t        «      r| j                  |«       y t        |t        t        f«      r| j                  |«       y t        |t        j                  «      r| j                  dt        |«      «       y t        |t        t        f«      r| j!                  |«       y t#        dt%        |«      z  «      ‚)NÚstringTÚtrueFÚfalselûÿÿÿ         r   Úintegerz%dÚrealÚdatezunsupported type: %s)r   rF   rÌ   r   ÚOverflowErrorrµ   r&   r”   Ú
write_dictÚbytesÚ	bytearrayÚwrite_bytesrU   r^   Útupler–   Úwrite_arrayr   Útyper—   s     r   rÜ   z_PlistWriter.write_valueT  s4  € Ü�eœSÔ!Ø×Ñ ¨%Õ0à�d‰]Ø×Ñ Õ'à�e‰^Ø×Ñ Õ(ä˜œsÔ#Ø˜5Ô* 7Ô*ô $ EÓ*Ð*ð ×#Ñ# I¨t°e©|Õ<ä# EÓ*Ð*ä˜œuÔ%Ø×Ñ ¬¨U«Õ4ä˜œtÔ$Ø�O‰O˜EÕ"ä˜¤¤yÐ1Ô2Ø×Ñ˜UÕ#ä˜œx×0Ñ0Ô1Ø×Ñ ¬¸Ó(>Õ?ä˜¤¤t˜}Ô-Ø×Ñ˜UÕ#ô Ð2´T¸%³[Ñ@ÓAÐAr   c           
      ó‚  — | j                  d«       | xj                  dz  c_        t        ddt        | j                  j                  dd«      | j                  z  «      z
  «      }t        ||«      j                  d«      D ]  }|sŒ| j                  |«       Œ | xj                  dz  c_        | j                  d«       y )Nr   rÅ   r°   éL   ó   	s           rÎ   )
rÈ   rÁ   Úmaxr8   rÂ   rg   rC   ÚsplitrÆ   rÊ   )r   r   r>   rÐ   s       r   rè   z_PlistWriter.write_bytesv  s«   € Ø×Ñ˜6Ô"Ø×Ò˜aÑÕÜØØ”�T—[‘[×(Ñ(¨°Ó9¸D×<NÑ<NÑNÓOÑOóQˆô # 4¨Ó7×=Ñ=¸eÓDò 	#ˆDÚØ—‘˜TÕ"ð	#ð 	×Ò˜aÑÕØ×Ñ˜Õ r   c                 ó†  — |r®| j                  d«       | j                  rt        |j                  «       «      }n|j                  «       }|D ]P  \  }}t	        |t
        «      s| j                  rŒ#t        d«      ‚| j                  d|«       | j                  |«       ŒR | j                  d«       y | j                  d«       y )Nr”   úkeys must be stringsrY   )rÈ   rÖ   ÚsortedÚitemsr   rF   r×   r   rÌ   rÜ   rÊ   )r   r]   rô   rY   r„   s        r   rå   z_PlistWriter.write_dictƒ  s¦   € ÙØ×Ñ˜vÔ&Ø�ŠÜ˜qŸw™w›yÓ)‘àŸ™›	�à#ò (‘
��UÜ! #¤sÔ+Ø—~’~Ø Ü#Ð$:Ó;Ð;Ø×#Ñ# E¨3Ô/Ø× Ñ  Õ'ð(ð ×Ñ˜VÕ$ð ×Ñ Õ'r   c                 ó    — |r;| j                  d«       |D ]  }| j                  |«       Œ | j                  d«       y | j                  d«       y )NÚarray)rÈ   rÜ   rÊ   rÌ   )r   rö   r„   s      r   rê   z_PlistWriter.write_array—  sN   € ÙØ×Ñ˜wÔ'Øò (�Ø× Ñ  Õ'ð(à×Ñ˜WÕ%ð ×Ñ Õ(r   N)r
   rî   rÅ   TF)	r%   r1   r2   r   rÏ   rÜ   rè   rå   rê   r3   r   r   rÓ   rÓ   D  s(   „ àBCØ%*ó"ò!ò
 BòD!ò(ó()r   rÓ   c                 óV  — d}|D ]  }| j                  |«      sŒ y t        j                  dft        j                  dft        j                  dffD ]U  \  }}| j                  |«      sŒ|D ]9  }||j                  d«      j                  |«      z   }| d t        |«       |k(  sŒ8  y ŒW y)N)s   <?xmls   <plistTrE   z	utf-16-bez	utf-16-leÚasciiF)r±   ÚcodecsÚBOM_UTF8ÚBOM_UTF16_BEÚBOM_UTF16_LEÚdecoderH   r8   )ÚheaderÚprefixesÚpfxÚbomÚencodingÚstartÚprefixs          r   Ú_is_fmt_xmlr  ¢  sÁ   € Ø$€Hàò ˆØ×Ñ˜SÕ!Ùðô —‘ 'Ð*Ü×$Ñ$ kÐ2Ü×$Ñ$ kÐ2ðò ‰ˆˆXð × Ñ  Ô%Øàò 	ˆEØ˜5Ÿ<™<¨Ó0×7Ñ7¸ÓAÑAˆFØ�l”s˜6“{Ð# vÓ-Úñ	ðð  r   c                   ó   — e Zd Zdd„Zy)r   c                 ó0   — t         j                  | |«       y r   )r   r   )r   Úmessages     r   r   zInvalidFileException.__init__Ä  s   € Ü×Ñ˜D 'Õ*r   N)zInvalid file)r%   r1   r2   r   r3   r   r   r   r   Ã  s   „ ô+r   r   ÚBÚHÚLÚQ)rÅ   é   r5   é   c                   ó:   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
Ú_BinaryPlistParsera  
    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                 ó   — || _         y r   )rq   rr   s     r   r   z_BinaryPlistParser.__init__Ó  s	   € Ø#ˆ�r   c                 ó  — 	 || _         | j                   j                  dt        j                  «       | j                   j	                  d«      }t        |«      dk7  r
t        «       ‚t        j                  d|«      \  }| _	        }}}| j                   j                  |«       | j                  ||«      | _        t        g|z  | _        | j                  |«      S # t        t         t        j"                  t$        t&        f$ r t        «       ‚w xY w)Niàÿÿÿé    z>6xBBQQQ)Ú_fpÚseekÚosÚSEEK_ENDÚreadr8   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€   z_BinaryPlistParser.parseÖ  sÝ   € ð	)ð ˆDŒHØ�H‰H�M‰M˜#œrŸ{™{Ô+Ø—h‘h—m‘m BÓ'ˆGÜ�7‹|˜rÒ!Ü*Ó,Ð,ô —‘˜j¨'Ó2ñØ˜Tœ^¨[¸*Ø#à�H‰H�M‰MÐ-Ô.Ø#'§?¡?°;ÀÓ#LˆDÔ Ü'˜L¨;Ñ6ˆDŒMØ×$Ñ$ ZÓ0Ð0øäœ¤V§\¡\´=Üðò 	)ä&Ó(Ð(ð	)ús   ‚CC Ã3Dc                 óØ   — |dk(  rd| j                   j                  d«      d   dz  }d|z  }dt        |   z   }t        j                  || j                   j                  |«      «      d   S |S )z$ return the size of the next object.é   rÅ   r
   r6   rd   )r  r  Ú_BINARY_FORMATr  r  )r   ÚtokenLri   r=   Úfs        r   Ú	_get_sizez_BinaryPlistParser._get_sizeï  se   € à�SŠ=Ø—‘—‘˜aÓ  Ñ# cÑ)ˆAØ�Q‘ˆAØ”n QÑ'Ñ'ˆAÜ—=‘=  D§H¡H§M¡M°!Ó$4Ó5°aÑ8Ð8àˆr   c                 óö   — t        |t        «      }| j                  j                  |«      }	 t	        |«      |k7  rt
        ‚||k(  r|S t        |||z
  «      }|| j                  j                  |«      z  }||z  }ŒNr   )ÚminÚ_MIN_READ_BUF_SIZEr  r  r8   r   )r   ÚsizeÚcursizer   Údeltas        r   Ú_readz_BinaryPlistParser._readù  sx   € Ü�dÔ.Ó/ˆØ�x‰x�}‰}˜WÓ%ˆØÜ�4‹y˜GÒ#Ü*Ð*Ø˜$ŠØ�Ü˜ ¨¡Ó0ˆEØ�D—H‘H—M‘M %Ó(Ñ(ˆDØ�uÑˆGð r   c                 óà   ‡‡— | j                  ‰|z  «      Š‰t        v r"t        j                  d|› t        ‰   › �‰«      S ‰s
t	        «       ‚t        ˆˆfd„t        d‰|z  ‰«      D «       «      S )Nrd   c              3   óV   •K  — | ]   }t         j                  ‰||‰z    d «      –— Œ" y­w)ÚbigN)r   Ú
from_bytes)Ú.0rA   r   r3  s     €€r   ú	<genexpr>z0_BinaryPlistParser._read_ints.<locals>.<genexpr>  s/   øè ø€ ò <Øô Ÿ™¨¨Q°°D±Ð(9¸5×Añ <ùs   ƒ&)r
   )r6  r,  r  r  r   ré   r7   )r   Únr3  r   s     `@r   r  z_BinaryPlistParser._read_ints  sr   ù€ Ø�z‰z˜$ ™(Ó#ˆØ”>Ñ!Ü—=‘= 1 Q C¬°tÑ(<Ð'=Ð!>ÀÓEÐEáÜ*Ó,Ð,Üô <Ü"'¨¨4°!©8°TÓ":ô<ó <ð <r   c                 ó:   — | j                  || j                  «      S r   )r  r  )r   r=  s     r   Ú
_read_refsz_BinaryPlistParser._read_refs  s   € Ø�‰˜q $§.¡.Ó1Ð1r   c                 ó<  ‡ — ‰ j                   |   }|t        ur|S ‰ j                  |   }‰ j                  j	                  |«       ‰ j                  j                  d«      d   }|dz  |dz  }}|dk(  rd}�n |dk(  rd}�n÷|dk(  rd	}�nî|dk(  rd
}�nå|dk(  r9t        j                  ‰ j                  j                  d|z  «      d|dk\  ¬«      }�n§|dk(  r4t        j                  d‰ j                  j                  d«      «      d   }�nn|dk(  r4t        j                  d‰ j                  j                  d«      «      d   }�n5|dk(  rbt        j                  d‰ j                  j                  d«      «      d   }t        j                  ddd«      t        j                  |¬«      z   }�nÎ|dk(  r$‰ j                  |«      }‰ j                  |«      }�n¥|dk(  r5‰ j                  |«      }‰ j                  |«      }	|	j                  d«      }�nk|dk(  r8‰ j                  |«      dz  }‰ j                  |«      }	|	j                  d«      }�n.|dk(  r<t        t        j                  ‰ j                  j                  d|z   «      d«      «      }ní|dk(  rN‰ j                  |«      }‰ j!                  |«      }
g }|‰ j                   |<   |j#                  ˆ fd„|
D «       «       nš|d k(  r‹‰ j                  |«      }‰ j!                  |«      }‰ j!                  |«      }
‰ j%                  «       }|‰ j                   |<   	 t'        ||
«      D ](  \  }}‰ j)                  |«      |‰ j)                  |«      <   Œ* n
t-        «       ‚|‰ j                   |<   |S # t*        $ r t-        «       ‚w xY w)!zx
        read the object by reference.

        May recursively read sub-objects (content of an array/dict/set)
        rÅ   r
   éð   r+  Nr  Fé	   Tr   r°   r9  r6   ©Úsignedé"   z>fr5   é#   z>dé3   éÑ  )Úsecondsé@   éP   rø   é`   r  úutf-16beé€   é    c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   )r   )r;  Úxr   s     €r   r<  z2_BinaryPlistParser._read_object.<locals>.<genexpr>X  s   øè ø€ ÒA°1˜$×+Ñ+¨A×.ÑAùs   ƒéÐ   )r  r  r  r  r  r  r   r:  r  r  rU   Ú	timedeltar/  r6  rý   r	   r?  Úextendrq   Úzipr   r   r   )r   ÚrefÚresultÚoffsetÚtokenÚtokenHr-  r.  r=   r   Úobj_refsÚkey_refsÚkÚos   `             r   r   z_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ô ×'Ñ'¨¨a°Ó3Ü×(Ñ(°Ô3ñ4ŠFð �tŠ^Ø—‘˜vÓ&ˆAØ—Z‘Z “]ŠFà�tŠ^Ø—‘˜vÓ&ˆAØ—:‘:˜a“=ˆDØ—[‘[ Ó)ŠFà�tŠ^Ø—‘˜vÓ&¨Ñ*ˆAØ—:‘:˜a“=ˆDØ—[‘[ Ó,ŠFà�tŠ^äœŸ™¨¯©¯©°a¸&±jÓ(AÀ5ÓIÓJ‰Fà�tŠ^Ø—‘˜vÓ&ˆAØ—‘ qÓ)ˆHØˆFØ!'ˆD�M‰M˜#ÑØ�M‰MÓA¸ÔAÕAð �tŠ^Ø—‘˜vÓ&ˆAØ—‘ qÓ)ˆHØ—‘ qÓ)ˆHØ—_‘_Ó&ˆFØ!'ˆD�M‰M˜#Ñð-Ü ¨(Ó3ò H‘D�A�qØ37×3DÑ3DÀQÓ3G�F˜4×,Ñ,¨QÓ/Ò0ñHô
 'Ó(Ð(à#ˆ�‰�cÑØˆøô ò -Ü*Ó,Ð,ð-ús   Ì47N ÎNN)r%   r1   r2   Ú__doc__r   r€   r/  r6  r  r?  r   r3   r   r   r  r  Ë  s+   „ ñò$ò)ò2ò
ò<ò2ó]r   r  c                 ó(   — | dk  ry| dk  ry| dk  ryy)Né   rÅ   é   r  ì        r5   r  r3   )Úcounts    r   Ú_count_to_sizere  q  s%   € Øˆv‚~Øà	�ŠØà	�ŠØð r   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú_BinaryPlistWriterc                 ó.   — || _         || _        || _        y r   )r  rÖ   r×   )r   r$  rÙ   rÚ   s       r   r   z_BinaryPlistWriter.__init__�  s   € ØˆŒØ#ˆŒØ!ˆ�r   c                 óÜ  — g | _         i | _        i | _        | j                  |«       t	        | j                   «      }dg|z  | _        t        |«      | _        t        | j                     | _	        | j                  j                  d«       | j                   D ]  }| j                  |«       Œ | j                  |«      }| j                  j                  «       }t        |«      }dt        |   |z  z   }| j                  j                  t        j                   |g| j
                  ¢­Ž «       d}||| j                  |||f}	| j                  j                  t        j                   dg|	¢­Ž «       y )Nr
   ó   bplist00rd   z	>5xBBBQQQ)Ú_objlistÚ	_objtableÚ_objidtableÚ_flattenr8   r  re  r  r,  Ú_ref_formatr  rÏ   Ú_write_objectÚ
_getrefnumÚtellr  Úpack)
r   r„   r'  Úobjr(  r)  r&  Úoffset_formatÚsort_versionr%  s
             r   rÏ   z_BinaryPlistWriter.write†  s>  € ð ˆŒð ˆŒØˆÔð 	�‰�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                 óD  — t        |t        «      rt        |«      |f| j                  v ry t	        |«      | j
                  v ry t        | j                  «      }| j                  j                  |«       t        |t        «      r|| j                  t        |«      |f<   n|| j
                  t	        |«      <   t        |t        «      r¬g }g }|j                  «       }| j                  rt        |«      }|D ]O  \  }}t        |t        «      s| j                  rŒ#t        d«      ‚|j                  |«       |j                  |«       ŒQ t!        j"                  ||«      D ]  }| j%                  |«       Œ y t        |t&        t(        f«      r|D ]  }| j%                  |«       Œ y y )Nrò   )r   Ú_scalarsrë   rl  Úidrm  r8   rk  r9   r”   rô   rÖ   ró   rF   r×   r   Ú	itertoolsÚchainrn  r–   ré   )	r   r„   ÚrefnumÚkeysÚvaluesrô   r]  Úvr^  s	            r   rn  z_BinaryPlistWriter._flatten³  se  € ô �eœXÔ&Ü�U“˜UÐ# t§~¡~Ñ5Øä�‹Y˜$×*Ñ*Ñ*Øô �T—]‘]Ó#ˆØ�‰×Ñ˜UÔ#Ü�eœXÔ&Ø39ˆD�N‰NœD ›K¨Ð/Ò0à*0ˆD×ÑœR ›YÑ'ô �eœTÔ"ØˆDØˆFØ—K‘K“MˆEØ�ŠÜ˜u›�àò !‘��1Ü! !¤SÔ)Ø—~’~Ø Ü#Ð$:Ó;Ð;Ø—‘˜A”Ø—‘˜aÕ ð!ô —_‘_ T¨6Ó2ò !�Ø—‘˜aÕ ñ!ô ˜¤¤e˜}Ô-Øò !�Ø—‘˜aÕ ñ!ð .r   c                 ó†   — t        |t        «      r| j                  t        |«      |f   S | j                  t        |«         S r   )r   rx  rl  rë   rm  ry  r—   s     r   rq  z_BinaryPlistWriter._getrefnumÝ  s9   € Ü�eœXÔ&Ø—>‘>¤4¨£;°Ð"6Ñ7Ð7à×#Ñ#¤B u£IÑ.Ð.r   c                 ó8  — |dk  r3| j                   j                  t        j                  d||z  «      «       y |dk  r5| j                   j                  t        j                  d|dz  d|«      «       y |dk  r5| j                   j                  t        j                  d|dz  d|«      «       y |d	k  r5| j                   j                  t        j                  d
|dz  d|«      «       y | j                   j                  t        j                  d|dz  d|«      «       y )Nr+  z>Bra  z>BBBr°   rb  z>BBHé   rc  z>BBLé   z>BBQé   )r  rÏ   r  rs  )r   rY  r3  s      r   Ú_write_sizez_BinaryPlistWriter._write_sizeã  sË   € Ø�"Š9Ø�H‰H�N‰Nœ6Ÿ;™; t¨U°T©\Ó:Õ;à�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                 óÈ  — | j                  |«      }| j                  j                  «       | j                  |<   |€| j                  j	                  d«       y |du r| j                  j	                  d«       y |du r| j                  j	                  d«       y t        |t        «      �rP|dk  r2	 | j                  j	                  t        j                  dd|«      «       y |d	k  r1| j                  j	                  t        j                  d
d|«      «       y |dk  r1| j                  j	                  t        j                  dd|«      «       y |dk  r1| j                  j	                  t        j                  dd|«      «       y |dk  r1| j                  j	                  t        j                  dd|«      «       y |dk  r1| j                  j	                  d|j                  ddd¬«      z   «       y t        |«      ‚t        |t        «      r1| j                  j	                  t        j                  dd|«      «       y t        |t        j                  «      rY|t        j                  ddd«      z
  j                  «       }| j                  j	                  t        j                  dd|«      «       y t        |t        t         f«      r7| j#                  dt%        |«      «       | j                  j	                  |«       y t        |t&        «      rI	 |j)                  d«      }| j#                  dt%        |«      «       | j                  j	                  |«       y t        |t,        «      �r%|j.                  dk  rt1        d#«      ‚|j.                  d	k  r1| j                  j	                  t        j                  d
d$|«      «       y |j.                  dk  r1| j                  j	                  t        j                  dd%|«      «       y |j.                  dk  r1| j                  j	                  t        j                  dd&|«      «       y |j.                  dk  r1| j                  j	                  t        j                  dd'|«      «       y t        |«      ‚t        |t2        t4        f«      r{|D �cg c]  }| j                  |«      ‘Œ }}t%        |«      }| j#                  d(|«       | j                  j	                  t        j                  d)| j6                  |z  z   g|¢­Ž «       y t        |t8        «      �rHg g }	}| j:                  rt=        |j?                  «       «      }
n|j?                  «       }
|
D ]m  \  }}t        |t&        «      s| j@                  rŒ#tC        d*«      ‚|jE                  | j                  |«      «       |	jE                  | j                  |«      «       Œo t%        |«      }| j#                  d+|«       | j                  j	                  t        j                  d)| j6                  |z  z   g|¢­Ž «       | j                  j	                  t        j                  d)| j6                  |z  z   g|	¢­Ž «       y tC        |«      ‚# t        j                  $ r t        |«      d ‚w xY w# t*        $ r3 |j)                  d «      }| j#                  d!t%        |«      d"z  «       Y �Œ¥w xY wc c}w ),Nó    Fó   Trî   r
   z>Bqr„  ra  z>BBr°   rb  z>BHr‚  rc  z>BLrƒ  l            z>BQr   ó   r9  rC  z>BdrF  rH  rÅ   rG  rJ  rø   rK  rM  rL  r  r   rN  é�   éƒ   é‡   rO  rd   rò   rR  )#rq  r  rr  r  rÏ   r   r   r  rs  r#  rä   Úto_bytesrµ   rU   Útotal_secondsræ   rç   r…  r8   rF   rH   ÚUnicodeEncodeErrorr	   r   r   r–   ré   ro  r”   rÖ   ró   rô   r×   r   r9   )r   r„   rV  r.  Útr^  Úrefsr=   ÚkeyRefsÚvalRefsÚ	rootItemsr]  r  s                r   rp  z _BinaryPlistWriter._write_objectó  s  € Ø�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Øœ×*Ñ*¨4°°AÓ6Ñ6×EÑEÓGˆAØ�H‰H�N‰Nœ6Ÿ;™; u¨d°AÓ6Õ7ä˜¤¤yÐ1Ô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�D—O‘O AÕ&Ð6ˆDÐ6Ü�D“	ˆAØ×Ñ˜T 1Ô%Ø�H‰H�N‰Nœ6Ÿ;™; s¨T×-=Ñ-=ÀÑ-AÑ'AÐIÀDÒIÕJä˜œtÕ$Ø! 2�WˆGà�ŠÜ" 5§;¡;£=Ó1‘	à!ŸK™K›M�	à!ò 3‘��1Ü! !¤SÔ)Ø—~’~Ø Ü#Ð$:Ó;Ð;Ø—‘˜tŸ™¨qÓ1Ô2Ø—‘˜tŸ™¨qÓ1Õ2ð3ô �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Ó"Ð"øô] —|‘|ò 9Ü'¨Ó.°DÐ8ð9ûô< &ò 4Ø—L‘L Ó,�Ø× Ñ  ¤s¨1£v°¡{×3ð4üò* 7s$   Â.0Y= Ì
,Z  Ò"[Ù= ZÚ 8[Û[N)	r%   r1   r2   r   rÏ   rn  rq  r…  rp  r3   r   r   rg  rg  €  s$   „ ò"ò
+;òZ(!òT/òIó ^#r   rg  c                 ó   — | d d dk(  S )Nr  rj  r3   )rþ   s    r   Ú_is_fmt_binaryr–  T  s   € Ø�"�1ˆ:˜Ñ$Ð$r   )Údetectru   Úwriter©Úfmtrs   c                ó   — |€W| j                  d«      }| j                  d«       t        j                  «       D ]  } |d   |«      sŒ|d   } n t	        «       ‚t        |   d   } ||¬«      }|j                  | «      S )z�Read a .plist file. 'fp' should be a readable and binary file object.
    Return the unpacked root object (which usually is a dictionary).
    r  r
   r—  ru   )rs   )r  r  Ú_FORMATSr~  r   r€   )r$  rš  rs   rþ   ÚinfoÚPÚps          r   r   r   j  s„   € ð €{Ø—‘˜“ˆØ
�‰�Œ
Ü—O‘OÓ%ò 	)ˆDØˆt�H‰~˜fÕ%Ø˜‘N�Ùð	)ô 'Ó(Ð(ô �S‰M˜(Ñ#ˆá	�IÔ€AØ�7‰7�2‹;Ðr   c                ó4   — t        | «      }t        |||¬«      S )zqRead a .plist file from a bytes object.
    Return the unpacked root object (which usually is a dictionary).
    r™  )r   r   )r„   rš  rs   r$  s       r   r   r   €  s   € ô 
�‹€BÜ�˜ yÔ1Ð1r   TF)rš  rÙ   rÚ   c                óz   — |t         vrt        d|›�«      ‚t        |   d   |||¬«      }|j                  | «       y)zWWrite 'value' to a .plist file. 'fp' should be a writable,
    binary file object.
    zUnsupported format: r˜  )rÙ   rÚ   N)rœ  r   rÏ   )r„   r$  rš  rÙ   rÚ   r˜  s         r   r   r   ˆ  s=   € ð ”(ÑÝ±3Ð8Ó9Ð9ä�c‰]˜8Ñ$ R°9ÀxÔP€FØ
‡L�L�Õr   ©rš  rÚ   rÙ   c                óV   — t        «       }t        | ||||¬«       |j                  «       S )z?Return a bytes object with the contents for a .plist file.
    r¢  )r   r   Úgetvalue)r„   rš  rÚ   rÙ   r$  s        r   r   r   “  s'   € ô 
‹€BÜˆ�˜ h¸)ÕDØ�;‰;‹=Ðr   )rí   ):r_  Ú__all__r:   rù   rU   ÚenumÚior   rz  r  Úrer  Úxml.parsers.expatr   ÚEnumr%   r   ÚglobalsÚupdateÚ__members__r2  r	   rÕ   Úcompilere   rC   rI   ÚASCIIrR   r[   r^   rj   rl   r¾   rÓ   r  r   r   r,  Úobjectr  r  re  rF   r   rµ   ræ   rx  rg  r–  r   r”   r   rœ  r   r   r   r   r3   r   r   ú<module>r±     sÌ  ðñ7òp€ó Û Û Û Ý Û Û 	Û 	Û Ý *ð ˆd�i‰i˜Ð';ÀHÔM€Ù ƒ	× Ñ �×(Ñ(Ô )ð Ð ÷ñ ðB€ð �"—*‘*ðIóJ€óò&ð ˆb�j‰jð  Xð  Z\÷  Zbñ  Zbó  c€ò	#òò
÷k<ñ k<÷\#ñ #ôL[)�>ô [)ò|ôB+˜Jô +ð ˜S S¨SÑ1€á‹X€
÷dñ dòLð ��e˜X×.Ñ.°Ð6€ôQ#˜&ô Q#òh%ð ‰TØØØôð
 ‘ØØ!Ø!ôð
€ð  Dô ð, ¨ô 2ð #¨d¸Uô ð  ¨%¸4õ r   