B kj֌g @s*dddddddddd d d g Zd d lZd d lZd d lZd d lZd d lZd dlmZd d lZd d l Z d d l Z d d l Z d dl m Z d dlmZejddedZeejejddZddZddZddZddZGdddZdZe dZdIddZ d d!Z!e d"e j"Z#d#d$Z$d%d&Z%d'd(Z&Gd)d*d*Z'Gd+d,d,Z(Gd-d.d.e(Z)d/d0Z*Gd1dde+Z,d2d3d4d5d6Z-e.Z/Gd7d8d8Z0d9d:Z1e2e3e4eje5fZ6Gd;d<dZ8e9e:e*e'e)d?e;e:e8e0e7d?iZe9d@dDdEdFd Z?e9dDd@dGdHd Z@d S)J readPlist writePlistreadPlistFromByteswritePlistToBytesDataInvalidFileExceptionFMT_XML FMT_BINARYloaddumploadsdumpsN)BytesIO)warn) ParserCreate PlistFormatzFMT_XML FMT_BINARY)modulec cs2t|tr(t|| }|VWdQRXn|VdS)N) isinstancestropen) pathOrFilemodefpr+/opt/alt/python37/lib/python3.7/plistlib.py _maybe_openOs  rc Cs0tdtdt|d}t|dddSQRXdS)Nz8The readPlist function is deprecated, use load() insteadrbF)fmtuse_builtin_types)rDeprecationWarningrr )rrrrrrYs c Cs8tdtdt|d}t||tdddWdQRXdS)Nz9The writePlist function is deprecated, use dump() insteadrwbTF)r sort_keysskipkeys)rr rr r)valuerrrrrrfs cCstdtdtt|dddS)NzBThe readPlistFromBytes function is deprecated, use loads() insteadrF)rr)rr r r)datarrrrsscCs,tdtdt}t||tddd|S)NzAThe writePlistToBytes function is deprecated, use dumps() insteadrTF)rr"r#)rr rr rgetvalue)r$frrrr~s c@s:eZdZddZeddZd ddZdd Zd d Zd S)rcCst|tstd||_dS)Nzdata must be as bytes)rbytes TypeErrorr%)selfr%rrr__init__s z Data.__init__cCs |t|S)N)_decode_base64)clsr%rrr fromBase64szData.fromBase64LcCs t|j|S)N)_encode_base64r%)r* maxlinelengthrrrasBase64sz Data.asBase64cCs4t||jr|j|jkSt|tr,|j|kStSdS)N)r __class__r%r(NotImplemented)r*otherrrr__eq__s     z Data.__eq__cCsd|jjt|jfS)Nz%s(%s))r3__name__reprr%)r*rrr__repr__sz Data.__repr__N)r/) r7 __module__ __qualname__r+ classmethodr.r2r6r9rrrrrs   s 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]r/cCsT|dd}g}x8tdt||D]$}||||}|t|q"Wd|S)Nr )rangelenappendbinasciiZ b2a_base64join)sr1Z maxbinsizepiecesichunkrrrr0s  r0cCs(t|trt|dSt|SdS)Nzutf-8)rrrCZ a2b_base64encode)rErrrr,s r,z{(?P\d\d\d\d)(?:-(?P\d\d)(?:-(?P\d\d)(?:T(?P\d\d)(?::(?P\d\d)(?::(?P\d\d))?)?)?)?)?ZcCsNd}t|}g}x,|D]$}||}|dkr2P|t|qWtj|S)N)yearmonthdayhourminutesecond) _dateParsermatch groupdictrBintdatetime)rEordergdZlstkeyvalrrr_date_from_strings rYcCs d|j|j|j|j|j|jfS)Nz%04d-%02d-%02dT%02d:%02d:%02dZ)rJrKrLrMrNrO)drrr_date_to_strings r[cCsZt|}|dk rtd|dd}|dd}|dd}|dd}|d d }|S) Nzz>)_controlCharPatsearch ValueErrorreplace)textmrrr_escapes      rgc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)S)* _PlistParsercCs"g|_d|_d|_||_||_dS)N)stack current_keyroot_use_builtin_types _dict_type)r*r dict_typerrrr+s z_PlistParser.__init__cCsBt|_|j|j_|j|j_|j|j_|j|j_ |j ||j S)N) rparserhandle_begin_elementZStartElementHandlerhandle_end_elementZEndElementHandler handle_dataZCharacterDataHandlerhandle_entity_declZEntityDeclHandlerZ ParseFilerk)r*Zfileobjrrrparses     z_PlistParser.parsecCs tddS)Nz8XML entity declarations are not supported in plist files)r)r*Z entity_nameZis_parameter_entityr$baseZ system_idZ public_idZ notation_namerrrrssz_PlistParser.handle_entity_declcCs*g|_t|d|d}|dk r&||dS)NZbegin_)r%getattr)r*elementattrshandlerrrrrpsz!_PlistParser.handle_begin_elementcCs"t|d|d}|dk r|dS)NZend_)rv)r*rwryrrrrqsz_PlistParser.handle_end_elementcCs|j|dS)N)r%rB)r*r%rrrrrsz_PlistParser.handle_datacCs|jdk rFt|jdtis.td|jj||jd|j<d|_nB|jsT||_n4t|jdtgsxtd|jj|jd|dS)Nzunexpected element at line %d) rjrritypercroCurrentLineNumberrkrB)r*r$rrr add_objects   z_PlistParser.add_objectcCsd|j}g|_|S)N)rDr%)r*r%rrrget_data,s z_PlistParser.get_datacCs"|}|||j|dS)N)rmr}rirB)r*rxrZrrr begin_dict3s z_PlistParser.begin_dictcCs*|jrtd|j|jjf|jdS)Nz%missing value for key '%s' at line %d)rjrcror|ripop)r*rrrend_dict8sz_PlistParser.end_dictcCs8|jst|jdtis*td|jj||_dS)Nrzzunexpected key at line %d)rjrrir{rcror|r)r*rrrend_key>s z_PlistParser.end_keycCsg}|||j|dS)N)r}rirB)r*rxarrr begin_arrayDs z_PlistParser.begin_arraycCs|jdS)N)rir)r*rrr end_arrayIsz_PlistParser.end_arraycCs|ddS)NT)r})r*rrrend_trueLsz_PlistParser.end_truecCs|ddS)NF)r})r*rrr end_falseOsz_PlistParser.end_falsecCs|t|dS)N)r}rSr)r*rrr end_integerRsz_PlistParser.end_integercCs|t|dS)N)r}floatr)r*rrrend_realUsz_PlistParser.end_realcCs||dS)N)r}r)r*rrr end_stringXsz_PlistParser.end_stringcCs2|jr|t|n|t|dS)N)rlr}r,rrr.)r*rrrend_data[sz_PlistParser.end_datacCs|t|dS)N)r}rYr)r*rrrend_datebsz_PlistParser.end_dateN)r7r:r;r+rtrsrprqrrr}rrrrrrrrrrrrrrrrrrhs( rhc@s8eZdZdddZddZddZdd d Zd d Zd S)_DumbXMLWriterr  cCs||_g|_||_||_dS)N)fileri _indent_levelindent)r*r indent_levelrrrrr+gsz_DumbXMLWriter.__init__cCs,|j||d||jd7_dS)Nz<%s>)rirBwritelnr)r*rwrrr begin_elementms z_DumbXMLWriter.begin_elementcCs |jd8_|d|dS)Nrz)rr)r*rwrrr end_elementrsz_DumbXMLWriter.end_elementNcCs8|dk r&t|}|d|||fn|d|dS)Nz <%s>%sz<%s/>)rgr)r*rwr$rrrsimple_elementxsz_DumbXMLWriter.simple_elementcCsH|r8t|tr|d}|j|j|j|j||jddS)Nzutf-8 )rrrIrwriterr)r*linerrrrs    z_DumbXMLWriter.writeln)r r)N)r7r:r;r+rrrrrrrrrfs   rc@sFeZdZdddZdd Zd d Zd d ZddZddZddZ dS) _PlistWriterr  rTFcCs.|r|tt||||||_||_dS)N)r PLISTHEADERrr+ _sort_keys _skipkeys)r*rrrZ writeHeaderr"r#rrrr+s  z_PlistWriter.__init__cCs"|d|||ddS)Nzz)r write_value)r*r$rrrrs  z_PlistWriter.writecCs4t|tr|d|n|dkr0|dn|dkrD|dnt|trd|krbdkrxnn|dd |nt|nt|tr|d t|nt|tr||n|t|t r| |nft|t t fr| |nLt|tjr|d t|n,t|ttfr ||ntd t|dS) NstringTtrueFZfalsellZintegerz%drealZdatezunsupported type: %s)rrrrS OverflowErrorrr8dict write_dictr write_datar( bytearray write_bytesrTr[tuplelist write_arrayr)r{)r*r$rrrrs.           z_PlistWriter.write_valuecCs||jdS)N)rr%)r*r%rrrrsz_PlistWriter.write_datacCs~|d|jd8_tddt|jdd|j}x&t||dD]}|rL||qLW|jd7_| ddS)Nr%rr/rs r) rrmaxrArrdr0splitrr)r*r%r1rrrrrs z_PlistWriter.write_bytescCs|rx|d|jr"t|}n|}x@|D]8\}}t|tsR|jrJq0td|d|| |q0W| dn |ddS)Nrzkeys must be stringsrW) rrsorteditemsrrrr)rrr)r*rZrrWr$rrrrs    z_PlistWriter.write_dictcCs@|r2|dx|D]}||qW|dn |ddS)Narray)rrrr)r*rr$rrrrs    z_PlistWriter.write_arrayN)r rrTF) r7r:r;r+rrrrrrrrrrrs % rcCsd}x|D]}||r dSq WxntjdftjdftjdffD]N\}}||sRq>x8|D]0}||d|}|dt||krXdSqXWq>WdS)N)s6xBBQQQ)_fpseekosSEEK_ENDreadrArstructunpack _ref_size _read_ints_object_offsets _undefined_objects _read_objectOSError IndexErrorerrorrrc)r*rtrailer offset_size num_objects top_objectoffset_table_offsetrrrrt%s      z_BinaryPlistParser.parsecCsL|dkrH|jddd@}d|>}dt|}t||j|dS|S)Nrr r>r`)rr_BINARY_FORMATrr)r*tokenLrfrEr'rrr _get_size>s  z_BinaryPlistParser._get_sizecst|j|tkr2td|tSrFt|krLttfddtd|DSdS)Nr`c3s&|]}t||dVqdS)bigN)rS from_bytes).0rG)r%sizerr Osz0_BinaryPlistParser._read_ints..r ) rrrrrrArrr@)r*nrr)r%rrrHsz_BinaryPlistParser._read_intscCs|||jS)N)rr)r*rrrr _read_refsRsz_BinaryPlistParser._read_refscsj|}|tk r|Sj|}j|jdd}|d@|d@}}|dkr^d}n|dkrnd}n||dkr~d}nl|dkrd }n\|d krtjjd|>d |d kd }n0|dkrt djdd}n |dkrt djdd}n|dkrDt djdd}t dddt j |d}n|dkr |}j|}t ||krxtjst|}n^|dkrΈ |}j|} t | |krt| d}n|dkr |d}j|} t | |krt| d}n|dkrX |}|} g}|j|<|fdd| Dn|dkr |}|} |} }|j|<y2x,t| | D]\} } | || <qWWntk rtYnXnt|j|<|S) Nrr rrF Tr?rrr>)signed"z>fr=#z>d3i)Zseconds@Pr`rzutf-16bec3s|]}|VqdS)N)r)rx)r*rrrsz2_BinaryPlistParser._read_object..)rrrrrrrSrrrrTZ timedeltarrArrlrrrextendrmziprr))r*refresultoffsettokenZtokenHrr'rEr%Zobj_refsZkey_refskor)r*rrUs                          z_BinaryPlistParser._read_objectN) r7r:r;r+rtrrrrrrrrrs   rcCs0|dkr dS|dkrdS|d>d>r(dSdSdS)Nrirrr=rr)countrrr_count_to_sizes rc@s<eZdZddZddZddZddZd d Zd d Zd S)_BinaryPlistWritercCs||_||_||_dS)N)rrr)r*rr"r#rrrr+sz_BinaryPlistWriter.__init__c Csg|_i|_i|_||t|j}dg||_t||_t|j|_ |j dx|jD]}| |q\W| |}|j }t|}dt||}|j tj|f|jd}|||j|||f} |j tjd| dS)Nr sbplist00r` >5xBBBQQQ)r)_objlist _objtable _objidtable_flattenrArrrr _ref_formatrr _write_object _getrefnumtellrpack) r*r$robjrrrZ offset_formatZ sort_versionrrrrrs(          z_BinaryPlistWriter.writec Cs~t|tr"t||f|jkrZdSn8t|trHt|j|jf|jkrZdSnt||jkrZdSt|j }|j |t|tr||jt||f<n0t|tr||jt|j|jf<n||jt|<t|t rPg}g}| }|j rt|}xB|D]:\}}t|ts|jr qtd| || |qWxLt||D]}||q:Wn*t|ttfrzx|D]}||qfWdS)Nzkeys must be strings)r_scalarsr{rrr%idrrArrBrrrrrrr) itertoolschainrrr) r*r$ZrefnumkeysvaluesrrvrrrrrsB          z_BinaryPlistWriter._flattencCsNt|tr|jt||fSt|tr<|jt|j|jfS|jt|SdS)N)rrrr{rr%rr)r*r$rrrr -s   z_BinaryPlistWriter._getrefnumcCs|dkr"|jtd||Bn|dkrH|jtd|dBd|nh|dkrn|jtd|dBd|nB|d kr|jtd |dBd |n|jtd |dBd |dS)Nrz>Brz>BBBriz>BBHlz>BBLz>BBQ)rrrr )r*rrrrr _write_size5sz_BinaryPlistWriter._write_sizec s|}jj|<|dkr2jdn|dkrJjdn|dkrbjdnt|trl|dkryjtdd|Wn tj k rt |dYnXn|d krԈjtd d |n|d krjtd d|nt|dkrjtdd|nR|dkr8jtdd|n0|dkr`jd|j d dddnt |nxt|t rjtdd|nRt|t j r|t ddd}jtdd|nt|trdt|jj|jnt|ttfr0dt|j|nt|try|d}dt|Wn4tk r|d }d!t|d"YnXj|nDt|ttfrfd#d$|D}t|}d%|jtjd&j|f|nt|trgg}}jr&t|} n|} xR| D]J\} } t| ts\jrTq4t d'|!| |!| q4Wt|}d(|jtjd&j|f|jtjd&j|f|nt |dS))NFTrr z>Bqrrz>BBriz>BHrlz>BLrlz>BQlr)rz>Bdrirrrrrzutf-16berrcsg|]}|qSr)r )rr)r*rr ~sz4_BinaryPlistWriter._write_object..rr`zkeys must be stringsr)"r rr rrrrSrr rrto_bytesrrTZ total_secondsrrrAr%r(rrrIUnicodeEncodeErrorrrrrrrrrr)rB) r*r$rr'tZrefsrEZkeyRefsZvalRefsZ rootItemsrrr)r*rr Es            $    "$z _BinaryPlistWriter._write_objectN) r7r:r;r+rrr rr rrrrrs -0rcCs|dddkS)Nrsbplist00r)rrrr_is_fmt_binarysr )detectrowriterT)rrrncCsn|dkrL|d}|dx:tD]}|d|r&|d}Pq&Wtn t|d}|||d}||S)Nrr r!ro)rrn)rr_FORMATSrrrt)rrrrnrinfoPprrrr s     cCst|}t||||dS)N)rrrn)rr )r$rrrnrrrrr sF)rr"r#cCs:|tkrtd|ft|d|||d}||dS)NzUnsupported format: %rr")r"r#)r#rcr)r$rrr"r#r"rrrr s)rr#r"cCs t}t|||||d|S)N)rr#r")rr r&)r$rr#r"rrrrr s)r/)A__all__rCr contextlibrTenumiorrrrerwarningsrZxml.parsers.expatrEnumr7rglobalsupdate __members__contextmanagerrrrrrrrcompilerar0r,ASCIIrPrYr[rgrhrrrrcrrobjectrrrrrSrr(rrr rrrr#r r r r rrrr1sr          0    o&d!# S