python (3.11.7)

(root)/
lib/
python3.11/
__pycache__/
plistlib.cpython-311.pyc

endZgdZddlZddlZddlZddlZddlmZddlZddl	Z	ddl
Z
ddlZddlm
Z
ejddeZeejGd	d
ZdZe
jdZd2dZdZe
jde
jZdZdZdZGddZGddZ Gdde Z!dZ"Gdde#Z$dddd d!Z%e&Z'Gd"d#Z(d$Z)e*e+e,eje-fZ.Gd%d&e&Z/d'Z0e1e2e"ee!(e3e2e0e(e/(iZ4de2d)d*Z5de2d)d+Z6e1d,d-d.d/Z7e1d-d,d0d1Z8dS)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"])
)InvalidFileExceptionFMT_XML
FMT_BINARYloaddumploadsdumpsUIDN)BytesIO)ParserCreatePlistFormatzFMT_XML FMT_BINARY)modulec2eZdZdZdZdZdZdZdZdS)r	ct|tstd|dkrtd|dkrtd||_dS)Nzdata must be an intzUIDs cannot be >= 2**64r
UIDs must be positive)
isinstanceint	TypeError
ValueErrordataselfrs  </BuggyBox/python/3.11.7/bootstrap/lib/python3.11/plistlib.py__init__zUID.__init__Ns^$$$	312227??6777!884555			c|jSN)rrs r	__index__z
UID.__index__Ws
yrcJ|jjdt|jdS)N())	__class____name__reprrrs r__repr__zUID.__repr__Zs$>222DOOOODDrc |j|jffSr)r$rrs r
__reduce__zUID.__reduce__]s~	|++rcZt|tstS|j|jkSr)rr	NotImplementedr)rothers  r__eq__z
UID.__eq__`s)%%%	"!!yEJ&&rc*t|jSr)hashrrs r__hash__zUID.__hash__esDIrN)	r%
__module____qualname__rr r'r)r-r0rrr	r	MsqEEE,,,'''
rr	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]Lc|dzdz}g}tdt||D]6}||||z}|tj|7d|S)Nr
r)rangelenappendbinascii
b2a_base64join)s
maxlinelength
maxbinsizepiecesichunks      r_encode_base64rDys|"A%J
F
1c!ffj
)
)22!a*n$%

h)%00111188Frct|tr'tj|dStj|S)Nutf-8)rstrr;
a2b_base64encode)r>s r_decode_base64rJsD!S&"188G#4#4555"1%%%rz{(?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))?)?)?)?)?Zcd}t|}g}|D]0}||}|n#|t	|1tj|S)Nyearmonthdayhourminutesecond)_dateParsermatch	groupdictr:rdatetime)r>ordergdlstkeyvals      r_date_from_stringr\sv@E			1			'	'	)	)B
Cg;E

3s88c""rcTd|j|j|j|j|j|jfzS)Nz%04d-%02d-%02dT%02d:%02d:%02dZrL)ds r_date_to_stringr_s.+		!(/rc8t|}|td|dd}|dd}|dd}|dd}|d	d
}|S)Nz;strings can't contain control characters; use bytes insteadz


&z&amp;<z&lt;>z&gt;)_controlCharPatsearchrreplace)textms  r_escaperkst$$A}-..	.<<%%D<<d##D<<W%%D<<V$$D<<V$$DKrceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdS)_PlistParserc>g|_d|_d|_||_dSr)stackcurrent_keyroot
_dict_typer	dict_types  rrz_PlistParser.__init__s#
	#rct|_|j|j_|j|j_|j|j_|j|j_	|j
||jSr)rparserhandle_begin_elementStartElementHandlerhandle_end_elementEndElementHandlerhandle_dataCharacterDataHandlerhandle_entity_declEntityDeclHandler	ParseFilerq)rfileobjs  rparsez_PlistParser.parses_"nn*.*C'(,(?%+/+;((,(?%g&&&yrc td)Nz8XML entity declarations are not supported in plist files)r)rentity_nameis_parameter_entityvaluebase	system_id	public_id
notation_names        rr}z_PlistParser.handle_entity_decls##]^^^rcZg|_t|d|zd}|
||dSdS)Nbegin_)rgetattr)relementattrshandlers    rrwz!_PlistParser.handle_begin_elements>	$7 2D99GENNNNNrcJt|d|zd}||dSdS)Nend_)r)rrrs   rryz_PlistParser.handle_end_elements5$ 0$77GIIIIIrc:|j|dSr)rr:rs  rr{z_PlistParser.handle_datas	rc|jbt|jdtist	d|jjz||jd|j<d|_dS|js	||_dSt|jdtgst	d|jjz|jd|dS)Nzunexpected element at line %d)	rprrotyperrvCurrentLineNumberrqr:rrs  r
add_objectz_PlistParser.add_objects'djnd2hh77
@ !@!%!>"?@@@/4DJrN4+,#D	)DIIIdjnd2hh77
@ !@!%!>"?@@@JrN!!%(((((rcHd|j}g|_|S)N)r=rrs  rget_dataz_PlistParser.get_datas!wwty!!	rc|}|||j|dSr)rrrror:)rrr^s   r
begin_dictz_PlistParser.begin_dicts?OO
!rc|jr#td|j|jjfz|jdS)Nz%missing value for key '%s' at line %d)rprrvrropoprs rend_dictz_PlistParser.end_dictsT	OD".t{/LMNOO
O
rc|js(t|jdtist	d|jjz||_dS)Nrzunexpected key at line %d)rprrorrrvrrrs rend_keyz_PlistParser.end_keysb	<:djnd2hh#G#G	<8![:;<<
<==??rchg}|||j|dSr)rror:)rras   rbegin_arrayz_PlistParser.begin_arrays5
!rc8|jdSr)rorrs r	end_arrayz_PlistParser.end_arrays
rc0|ddS)NTrrs rend_truez_PlistParser.end_truesrc0|ddS)NFrrs r	end_falsez_PlistParser.end_falsesrc|}|ds|dr%|t|ddS|t|dS)N0x0X)r
startswithrr)rraws  rend_integerz_PlistParser.end_integerstmmoo>>$	&3>>$#7#7	&OOCRLL)))))OOCHH%%%%%rcn|t|dSr)rfloatrrs rend_realz_PlistParser.end_reals*dmmoo../////rcT||dSr)rrrs r
end_stringz_PlistParser.end_strings"

(((((rcn|t|dSr)rrJrrs rend_dataz_PlistParser.end_datas*t}}7788888rcn|t|dSr)rr\rrs rend_datez_PlistParser.end_dates+)$--//::;;;;;rN)r%r1r2rrr}rwryr{rrrrrrrrrrrrrrr3rrrmrmsC$$$___
))) 
+++
&&&000)))999<<<<<rrmc0eZdZd	dZdZdZd
dZdZdS)_DumbXMLWriterr
	c>||_g|_||_||_dSr)filero
_indent_levelindent)rrindent_levelrs    rrz_DumbXMLWriter.__init__s#	
)rc|j||d|z|xjdz
c_dS)Nz<%s>)ror:writelnrrrs  r
begin_elementz_DumbXMLWriter.begin_element"sI
'"""Vg%&&&arc|jdksJ|j|ksJ|xjdzc_|d|zdS)Nr
rz</%s>)rrorrrs  rend_elementz_DumbXMLWriter.end_element'sd!A%%%%z~~7****aWw&'''''rNc	|0t|}|d|d|d|ddS|d|zdS)Nrdrez</z<%s/>)rkr)rrrs   rsimple_elementz_DumbXMLWriter.simple_element-s_ENNELLL'''555'''BCCCCC
LL7*+++++rc|rkt|tr|d}|j|j|jz|j||jddS)NrF
)rrGrIrwriterr)rlines  rrz_DumbXMLWriter.writeln5s{	"$$$
,{{7++IOOD.<===IOOD!!!	r)r
rr)r%r1r2rrrrrr3rrrrsi   
(((,,,,					rrc8eZdZ		d
dZdZdZd	Zd
ZdZdS)_PlistWriterr
	rTFc|r|tt||||||_||_dSr)rPLISTHEADERrr
_sort_keys	_skipkeys)rrrrwriteHeader	sort_keysskipkeyss       rrz_PlistWriter.__init__BsJ	$JJ{###dL&AAA#!rc|d|||ddS)Nz<plist version="1.0">z</plist>)rwrite_valuers  rrz_PlistWriter.writeLsA.///Z     rct|tr|d|dS|dur|ddS|dur|ddSt|tr:d|cxkrdkrnn|dd	|zdSt	|t|t
r%|d
t
|dSt|tr||dSt|ttfr||dSt|tjr%|dt|dSt|ttfr||dSt#dt%|z)
NstringTtrueFfalselrintegerz%drealdatezunsupported type: %s)rrGrr
OverflowErrorrr&dict
write_dictbytes	bytearraywrite_bytesrVr_tuplelistwrite_arrayrrrs  rrz_PlistWriter.write_valueQseS!!	B%00000
d]]'''''
e^^(((((
s
#
#	B5****7*****##Ite|<<<<<#E***
u
%
%	BU44444
t
$
$
	BOOE"""""
y1
2
2
	BU#####
x0
1
1	B(>(>?????
t}
-
-	BU#####2T%[[@AAArc
|d|xjdzc_tddt|jdd|jzz
}t
||dD]}|r|||xjdz
c_|	ddS)Nrrrr4rs        r)
rrmaxr9rrhrDsplitrr)rrr?rs    rrz_PlistWriter.write_bytesss6"""aT[((99D<NNOOOQQ
#477==eDD	#	#D
#T"""a     rc|r|d|jr"t|}n|}|D]\\}}t	|t
s|jr"td|d||	|]|
ddS|ddS)Nrkeys must be stringsrZ)rrsorteditemsrrGrrrrr)rr^rrZrs     rrz_PlistWriter.write_dicts	(v&&&
"qwwyy))		#
(
(
U!#s++<~! #$:;;;##E3///  ''''V$$$$$
'''''rc|rF|d|D]}|||ddS|ddS)Narray)rrrr)rrrs   rrz_PlistWriter.write_arraysz	)w'''
(
(  ''''W%%%%%
(((((rN)r
rrTF)	r%r1r2rrrrrrr3rrrrAs}BC%*""""!!!
 B B BD!!!(((()))))rrcld}|D]}||rdStjdftjdftjdffD]j\}}||s|D]L}||d|z}|dt||krdSMkdS)N)s<?xmls<plistTrFz	utf-16-bez	utf-16-leasciiF)rcodecsBOM_UTF8BOM_UTF16_BEBOM_UTF16_LEdecoderIr9)headerprefixespfxbomencodingstartprefixs       r_is_fmt_xmlrs$HS!!	44	'*$k2$k2
X  %%			E5<<0077AAAFls6{{l#v--ttt.	
5rceZdZddZdS)rInvalid filec<t||dSr)rr)rmessages  rrzInvalidFileException.__init__sD'*****rN)r)r%r1r2rr3rrrrs(++++++rrBHLQ)rr6c6eZdZdZdZdZdZdZdZdZ	dS)	_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||_dSr)rrrss  rrz_BinaryPlistParser.__init__s
#rc:	||_|jdtj|jd}t|dkrt
tjd|\}|_	}}}|j||
|||_tg|z|_
||S#tt tjt$t&f$rt
wxYw)Ni z>6xBBQQQ)_fpseekosSEEK_ENDreadr9rstructunpack	_ref_size
_read_ints_object_offsets
_undefined_objects_read_objectOSError
IndexErrorerrorrr)rfptraileroffset_sizenum_objects
top_objectoffset_table_offsets       rrz_BinaryPlistParser.parses	)DHHMM#r{+++hmmB''G7||r!!*,,,
j'22
T^[*#HMM-...#'??;#L#LD 'L;6DM$$Z000V\=	)	)	)&(((	)sC C##7Dc|dkrk|jdddz}d|z}dt|z}tj||j|dS|S)z$ return the size of the next object.rr
r7re)rr_BINARY_FORMATrr)rtokenLrjr>fs     r	_get_sizez_BinaryPlistParser._get_sizesjS==

a  #c)AQAnQ''A=DHMM!$4$455a88
rcD|j|ztvr%tjd|tSrt|zkrt
tfdtd|zDS)Nrec3dK|]*}t||zdV+dS)bigN)r
from_bytes).0rBrsizes  r	<genexpr>z0_BinaryPlistParser._read_ints.<locals>.<genexpr>sR<<QD[(95AA<<<<<<rr
)	rrr-rrr9rrr8)rnr6rs  `@rrz_BinaryPlistParser._read_intssx}}TAX&&>!!=!>Q!>t(<!>!>EEE
-3t99q00*,,,<<<<<"'4!8T":":<<<<<
<rc8|||jSr)rr)rr8s  r
_read_refsz_BinaryPlistParser._read_refssq$.111rcj|}|tur|Sj|}j|jdd}|dz|dz}}|dkrd}n|dkrd}n|dkrd	}n|dkrd
}n|dkr>tjd|zd|d
k}n|dkr5tj	djdd}nP|dkr5tj	djdd}n|dkratj	djdd}tj
dddtj|z}n|dkrR|}j|}t||krtnV|dkrg|}j|}	t|	|krt|	d}n|dkrj|dz}j|}	t|	|krt|	d}ny|dkrEt!tjd|zd}n.|dkrX|}|}
g}|j|<|fd|
Dn|d kr|}|}|}
}|j|<	t)||
D]0\}}
|
||<1n*#t,$rtwxYwt|j|<|S)!zx
        read the object by reference.

        May recursively read sub-objects (content of an array/dict/set)
        rr
r,NrF	Trrr3r7signed"z>fr6#z>d3)seconds@Pr`rutf-16bec3BK|]}|VdSr)r!)r5xrs  rr7z2_BinaryPlistParser._read_object.<locals>.<genexpr>Os1AA1$++A..AAAAAAr)r rrrrrrr4rrrV	timedeltar0r9rrr	r:extendrrzipr!r)rrefresultoffsettokentokenHr.r/r>robj_refskey_refskos`             rr!z_BinaryPlistParser._read_objectsFs###M%c*

f

a  #ut|D==FF
d]]FF
d]]FF
d]]FF
t^^^^DHMM!v+$>$>$)&A+$??FFd]]]4q)9)9::1=FF
d]]]4q)9)9::1=FF
d]]
dDHMM!$4$455a8A'a33(3334FFt^^v&&AX]]1%%F6{{a*,,, t^^v&&A8==##D4yyA~~*,,,[[))FF
t^^v&&*A8==##D4yyA~~*,,,[[,,FF
t^^

a&j(A(A5IIJJFF
t^^v&&Aq))HF!'DM#MMAAAAAAAAAAAt^^v&&Aq))Hq))H__&&F!'DM#
-(33HHDAq373D3DQ3G3GF4,,Q//00H
-
-
-*,,,
-'(((#
c
s
6AP88QN)
r%r1r2__doc__rrr0rr:r!r3rrrrs}$$$)))2<<<222cccccrrc6|dkrdS|dkrdS|dkrdSdS)Nrrr6rr3)counts r_count_to_sizer`hs3v~~q	q	qqrc2eZdZdZdZdZdZdZdZdS)_BinaryPlistWriterc0||_||_||_dSr)rrr)rr%rrs    rrz_BinaryPlistWriter.__init__xs#!rcg|_i|_i|_||t	|j}dg|z|_t
||_t|j|_	|j
d|jD]}|||
|}|j
}t
|}dt||zz}|j
tj|g|jRd}|||j|||f}	|j
tjdg|	RdS)Nr
bplist00rez	>5xBBBQQQ)_objlist	_objtable_objidtable_flattenr9rr`rr-_ref_formatrr
_write_object
_getrefnumtellrpack)
rrr(objr)r*r'
offset_formatsort_versionr&s
          rrz_BinaryPlistWriter.write}sh
	


e$-(( !s;'44)$.9	
{###=	$	$Cs####__U++
"hmmoo$%899n[9KGG
v{=H43GHHHIII+t~{+
	
v{;9999:::::rct|trt||f|jvrdSnt	||jvrdSt
|j}|j|t|tr||jt||f<n||jt	|<t|trg}g}|
}|jrt|}|D][\}}t|ts|jr"td||||\t!j||D]}||dSt|t&t(fr|D]}||dSdS)Nr)r_scalarsrrgidrhr9rfr:rrrrrGrr	itertoolschainrirr)	rrrefnumkeysvaluesrrXvrYs	         rriz_BinaryPlistWriter._flattenseX&&	UU#t~556YY$*
*
*FT]##
U###eX&&	139DNDKK/00*0DRYY'eT""	!DFKKMME
&u


!
!1!!S))<~! #$:;;;A

a    _T622
!
!

a    
!
!e}
-
-	!
!
!

a    	!	!
!
!rct|tr|jt||fS|jt|Sr)rrsrgrrhrtrs  rrlz_BinaryPlistWriter._getrefnums@eX&&	/>4;;"677#BuII..rc6|dkr2|jtjd||zdS|dkr4|jtjd|dzd|dS|dkr4|jtjd|dzd|dS|d	kr4|jtjd
|dzd|dS|jtjd|dzd
|dS)Nr,z>Br\z>BBBrr]z>BBHr^z>BBLz>BBQ)rrrrn)rrTr6s   r_write_sizez_BinaryPlistWriter._write_sizes
"99HNN6;tUT\::;;;;;
F]]HNN6;vus{D$GGHHHHH
G^^HNN6;vus{D$GGHHHHH
G^^HNN6;vus{D$GGHHHHH
HNN6;vus{D$GGHHHHHrc>|}jj|<|jddS|durjddS|durjddSt|tr||dkrT	jtjdd|dS#tj	$rt|dwxYw|d	kr0jtjd
d|dS|dkr0jtjd
d|dS|dkr0jtjdd|dS|dkr0jtjdd|dS|dkr5jd|dddzdSt|t|tr0jtjdd|dSt|tj
r[|tj
dddz
}jtjdd|dSt|tt fr?dt%|j|dSt|t&r	|d}dt%|nK#t*$r>|d }d!t%|d"zYnwxYwj|dSt|t,r|jdkrt1d#|jd	kr0jtjd
d$|dS|jdkr0jtjd
d%|dS|jdkr0jtjdd&|dS|jdkr0jtjdd'|dSt|t|t2t4frjfd(|D}t%|}d)|jtjd*j|zzg|RdSt|t8rVgg}}jr"t=|}	n|}	|	D]\}
}t|
t&sj r"tCd+|"|
|"|t%|}d,|jtjd*j|zzg|Rjtjd*j|zzg|RdStC|)-NFTrr
z>Bqrr\z>BBrr]z>BHr}r^z>BLr~lz>BQrr3r>z>BdrArCrrBrErrFrHrGrrrIc:g|]}|Sr3)rl)r5rYrs  r
<listcomp>z4_BinaryPlistWriter._write_object.<locals>.<listcomp>-s%6661DOOA&&666rrJrerrM)#rlrrmrrrrrrnr$rto_bytesrrV
total_secondsrrrr9rGrIUnicodeEncodeErrorr	rrrrrjrrrrrrr:)rrrQr/trefsr>keyRefsvalRefs	rootItemsrXrzs`           rrkz _BinaryPlistWriter._write_objectsooe$$$(HMMOOS!=HNN7#####
e^^HNN7#####
d]]HNN7#####
s
#
#R	#qyy9HNN6;udE#B#BCCCCC|999'..D89v{5$>>?????v{5$>>?????v{5$>>?????v{5$>>?????wE$)O)OOPPPPP#E***
u
%
%?	#HNN6;udE::;;;;;
x0
1
1<	#*4A666EEGGAHNN6;udA6677777
y1
2
28	#T3u::...HNN5!!!!!
s
#
#4	#
4LL))  s5zz2222%
4
4
4LL,,  s1vv{33333
4
HNN1
s
#
#*	#zA~~ !8999f$$v{5$>>?????g%%v{5$>>?????g%%v{5$>>?????g%%v{5$>>?????#E***
e}
-
-	#6666666DD		AT1%%%HNN6;sT-=-A'AIDIIIJJJJJ
t
$
$	#!2WG
*"5;;==11		!KKMM	!
3
31!!S))<~! #$:;;;tq11222tq112222GAT1%%%HNN6;sT-=-A'ALGLLLMMMHNN6;sT-=-A'ALGLLLMMMMME"""s3.C## D8NAOON)	r%r1r2rrrirlrrkr3rrrbrbwsx"""
+;+;+;Z(!(!(!T///III ^#^#^#^#^#rrbc|dddkS)Nrrer3)rs r_is_fmt_binaryrKs"1":$$r)detectrvwriterfmtrtcN|p|d}|dtD]}|d|r
|d}nt	nt|d}||}||S)zRead a .plist file. 'fp' should be a readable and binary file object.
    Return the unpacked root object (which usually is a dictionary).
    Nrr
rrv)rt)rr_FORMATSryrr)r%rrtrinfoPps       rrras{



OO%%	)	)DtH~f%%
N

'(((
SM(#	IA772;;rcDt|}t|||S)zqRead a .plist file from a bytes object.
    Return the unpacked root object (which usually is a dictionary).
    r)rr)rrrtr%s    rrrws$
By1111rTF)rrrc|tvrtd|t|d|||}||dS)zWWrite 'value' to a .plist file. 'fp' should be a writable,
    binary file object.
    zUnsupported format: r)rrN)rrr)rr%rrrrs      rrrsY(j338999
c]8
$R9x
P
P
PF
LLrrrrcnt}t||||||S)z?Return a bytes object with the contents for a .plist file.
    r)rrgetvalue)rrrrr%s     rrrs4
Bh)DDDD
;;==r)r4)9rZ__all__r;rrVenumiorrurrerxml.parsers.expatrEnumr%r
globalsupdate__members__r	rcompilerfrDrJASCIIrSr\r_rkrmrrrrrr-objectrrr`rGrrrrsrbrrrrrrrrrr3rr<module>rs77p



								



******di
';HMMM		()))B"*IJJ&&&bjXZ\Zbcc	#	#	#


k<k<k<k<k<k<k<k<\########L[)[)[)[)[)>[)[)[)|B+++++J+++SSS11
VXX
^^^^^^^^@
eX.6Q#Q#Q#Q#Q#&Q#Q#Q#h%%%TT
!!

D,22222#dU %4r