grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026U iÛfÜ}ã @s>dZddddddddd d d d d g ZddlZddlZddlZddlZddlZddlmZddl Z ddl Z ddl Z ddl Z ddl mZddlmZejdded�Zeƒ ej¡ejdd„ƒZdd„Zdd„Zdd„Zdd„ZGdd„dƒZGdd „d ƒZdZe   d¡Z!dLd!d"„Z"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*Gd0d1„d1e*ƒZ+d2d3„Z,Gd4d„de-ƒZ.d5d6d7d8d9œZ/e0ƒZ1Gd:d;„d;ƒZ2dd?„d?e0ƒZ9d@dA„Z:e;eddCe", someMoreData = b"" * 10, aDate = datetime.datetime.fromtimestamp(time.mktime(time.gmtime())), ) with open(fileName, 'wb') as fp: dump(pl, fp) Parse Plist example: with open(fileName, 'rb') as fp: pl = load(fp) print(pl["aKey"]) Ú readPlistÚ writePlistÚreadPlistFromBytesÚwritePlistToBytesÚDataÚInvalidFileExceptionÚFMT_XMLÚ FMT_BINARYÚloadÚdumpÚloadsÚdumpsÚUIDéN)ÚBytesIO)Úwarn)Ú ParserCreateÚ PlistFormatzFMT_XML FMT_BINARY)Úmodulec cs2t|tƒr(t||ƒ� }|VW5QRXn|VdS©N)Ú isinstanceÚstrÚopen)Ú pathOrFileÚmodeÚfp©rú-/opt/alt/python38/lib64/python3.8/plistlib.pyÚ _maybe_openOs  rc Cs<tdtdƒt|dƒ�}t|ddd�W5QR£SQRXdS)z¯ Read a .plist from a path or file. pathOrFile should either be a file name, or a readable binary file object. This function is deprecated, use load instead. z8The readPlist function is deprecated, use load() insteadéÚrbNF©ÚfmtÚuse_builtin_types)rÚDeprecationWarningrr )rrrrrrYs ÿ c Cs8tdtdƒt|dƒ�}t||tddd�W5QRXdS)z¥ Write 'value' to a .plist file. 'pathOrFile' may either be a file name or a (writable) file object. This function is deprecated, use dump instead. z9The writePlist function is deprecated, use dump() insteadrÚwbTF©r!Ú sort_keysÚskipkeysN)rr#rr r)Úvaluerrrrrrfs ÿ cCstdtdƒtt|ƒddd�S)z} Read a plist data from a bytes object. Return the root object. This function is deprecated, use loads instead. zBThe readPlistFromBytes function is deprecated, use loads() insteadrNFr )rr#r r©Údatarrrrss ÿcCs,tdtdƒtƒ}t||tddd�| ¡S)zp Return 'value' as a plist-formatted bytes object. This function is deprecated, use dumps instead. zAThe writePlistToBytes function is deprecated, use dumps() insteadrTFr%)rr#rr rÚgetvalue)r(Úfrrrr~sÿc@s>eZdZdZdd„Zedd„ƒZddd„Zd d „Zd d „Z d S)rz] Wrapper for binary data. This class is deprecated, use a bytes object instead. cCst|tƒstdƒ‚||_dS)Nzdata must be as bytes)rÚbytesÚ TypeErrorr*©Úselfr*rrrÚ__init__’s z Data.__init__cCs |t|ƒƒSr)Ú_decode_base64)Úclsr*rrrÚ fromBase64—szData.fromBase64éLcCs t|j|ƒSr)Ú_encode_base64r*)r0Ú maxlinelengthrrrÚasBase64�sz Data.asBase64cCs4t||jƒr|j|jkSt|tƒr,|j|kStSdSr)rÚ __class__r*r-ÚNotImplemented©r0ÚotherrrrÚ__eq__ s     z Data.__eq__cCsd|jjt|jƒfS©Nz%s(%s)©r9Ú__name__Úreprr*©r0rrrÚ__repr__¨sz Data.__repr__N)r5) r@Ú __module__Ú __qualname__Ú__doc__r1Ú classmethodr4r8r=rCrrrrr‹s  c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)r cCs<t|tƒstdƒ‚|dkr"tdƒ‚|dkr2tdƒ‚||_dS)Nzdata must be an intìzUIDs cannot be >= 2**64rúUIDs must be positive)rÚintr.Ú ValueErrorr*r/rrrr1³s z UID.__init__cCs|jSrr)rBrrrÚ __index__¼sz UID.__index__cCsd|jjt|jƒfSr>r?rBrrrrC¿sz UID.__repr__cCs|j|jffSr)r9r*rBrrrÚ __reduce__ÂszUID.__reduce__cCst|tƒstS|j|jkSr)rr r:r*r;rrrr=Ås z UID.__eq__cCs t|jƒSr)Úhashr*rBrrrÚ__hash__Êsz UID.__hash__N) r@rDrEr1rLrCrMr=rOrrrrr ²s  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]r5cCsP|dd}g}tdt|ƒ|ƒD]$}||||…}| t |¡¡q d |¡S)Nééró)ÚrangeÚlenÚappendÚbinasciiZ b2a_base64Újoin)Úsr7Z maxbinsizeÚpiecesÚiÚchunkrrrr6ßs  r6cCs(t|tƒrt | d¡¡St |¡SdS)Núutf-8)rrrVZ a2b_base64Úencode)rXrrrr2ès r2z{(?P\d\d\d\d)(?:-(?P\d\d)(?:-(?P\d\d)(?:T(?P\d\d)(?::(?P\d\d)(?::(?P\d\d))?)?)?)?)?ZcCsLd}t |¡ ¡}g}|D]&}||}|dkr2qB| t|ƒ¡qtj|ŽS)N©ZyearZmonthZdayZhourZminuteÚsecond)Ú _dateParserÚmatchÚ groupdictrUrJÚdatetime)rXÚorderZgdZlstÚkeyÚvalrrrÚ_date_from_stringõsrgcCs d|j|j|j|j|j|jfS)Nz%04d-%02d-%02dT%02d:%02d:%02dZr^)ÚdrrrÚ_date_to_stringsþricCsZt |¡}|dk rtdƒ‚| dd¡}| dd¡}| dd¡}| dd¡}| d d ¡}|S) Nzz>)Ú_controlCharPatÚsearchrKÚreplace)ÚtextÚmrrrÚ_escapes      rtc@s¬eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)S)*Ú _PlistParsercCs"g|_d|_d|_||_||_dSr)ÚstackÚ current_keyÚrootÚ_use_builtin_typesÚ _dict_type©r0r"Ú dict_typerrrr1s z_PlistParser.__init__cCsBtƒ|_|j|j_|j|j_|j|j_|j|j_ |j  |¡|j Sr) rÚparserÚhandle_begin_elementZStartElementHandlerÚhandle_end_elementZEndElementHandlerÚ handle_dataZCharacterDataHandlerÚhandle_entity_declZEntityDeclHandlerZ ParseFilerx)r0ZfileobjrrrÚparses     z_PlistParser.parsecCs tdƒ‚dS)Nz8XML entity declarations are not supported in plist files)r)r0Z entity_nameZis_parameter_entityr(ÚbaseZ system_idZ public_idZ notation_namerrrr�$sz_PlistParser.handle_entity_declcCs*g|_t|d|dƒ}|dk r&||ƒdS)NZbegin_)r*Úgetattr)r0ÚelementÚattrsÚhandlerrrrr~*sz!_PlistParser.handle_begin_elementcCs"t|d|dƒ}|dk r|ƒdS)NZend_)r„)r0r…r‡rrrr0sz_PlistParser.handle_end_elementcCs|j |¡dSr)r*rUr/rrrr€5sz_PlistParser.handle_datacCsŒ|jdk rFt|jdtiƒƒs.td|jjƒ‚||jd|j<d|_nB|jsT||_n4t|jdtgƒƒsxtd|jjƒ‚|jd |¡dS)Néÿÿÿÿzunexpected element at line %d) rwrrvÚtyperKr}ÚCurrentLineNumberrxrU©r0r(rrrÚ add_object8s ÿÿz_PlistParser.add_objectcCsd |j¡}g|_|S)NÚ)rWr*r/rrrÚget_dataHs z_PlistParser.get_datacCs"| ¡}| |¡|j |¡dSr)rzrŒrvrU)r0r†rhrrrÚ begin_dictOs z_PlistParser.begin_dictcCs*|jrtd|j|jjfƒ‚|j ¡dS)Nz%missing value for key '%s' at line %d)rwrKr}rŠrvÚpoprBrrrÚend_dictTs  ÿz_PlistParser.end_dictcCs8|jst|jdtiƒƒs*td|jjƒ‚| ¡|_dS)Nrˆzunexpected key at line %d)rwrrvr‰rKr}rŠrŽrBrrrÚend_keyZs ÿz_PlistParser.end_keycCsg}| |¡|j |¡dSr)rŒrvrU)r0r†ÚarrrÚ begin_array`s z_PlistParser.begin_arraycCs|j ¡dSr)rvr�rBrrrÚ end_arrayesz_PlistParser.end_arraycCs| d¡dS)NT©rŒrBrrrÚend_truehsz_PlistParser.end_truecCs| d¡dS)NFr–rBrrrÚ end_falseksz_PlistParser.end_falsecCs@| ¡}| d¡s| d¡r.| t|dƒ¡n| t|ƒ¡dS)NZ0xZ0Xé)rŽÚ startswithrŒrJ)r0ÚrawrrrÚ end_integernsz_PlistParser.end_integercCs| t| ¡ƒ¡dSr)rŒÚfloatrŽrBrrrÚend_realusz_PlistParser.end_realcCs| | ¡¡dSr)rŒrŽrBrrrÚ end_stringxsz_PlistParser.end_stringcCs2|jr| t| ¡ƒ¡n| t | ¡¡¡dSr)ryrŒr2rŽrr4rBrrrÚend_data{sz_PlistParser.end_datacCs| t| ¡ƒ¡dSr)rŒrgrŽrBrrrÚend_date‚sz_PlistParser.end_dateN)r@rDrEr1r‚r�r~rr€rŒrŽr�r‘r’r”r•r—r˜rœržrŸr r¡rrrrrus( ruc@s8eZdZddd„Zdd„Zdd„Zdd d „Zd d „Zd S)Ú_DumbXMLWriterrú cCs||_g|_||_||_dSr)ÚfilervÚ _indent_levelÚindent)r0r¤Ú indent_levelr¦rrrr1‡sz_DumbXMLWriter.__init__cCs,|j |¡| d|¡|jd7_dS)Nz<%s>é)rvrUÚwritelnr¥©r0r…rrrÚ begin_element�s z_DumbXMLWriter.begin_elementcCs |jd8_| d|¡dS)Nr¨z)r¥r©rªrrrÚ end_element’sz_DumbXMLWriter.end_elementNcCs8|dk r&t|ƒ}| d|||f¡n| d|¡dS)Nz <%s>%sz<%s/>)rtr©)r0r…r(rrrÚsimple_element˜sz_DumbXMLWriter.simple_elementcCsH|r8t|tƒr| d¡}|j |j|j¡|j |¡|j d¡dS)Nr\ó )rrr]r¤Úwriter¥r¦)r0Úlinerrrr© s    z_DumbXMLWriter.writeln)rr£)N)r@rDrEr1r«r¬r­r©rrrrr¢†s   r¢c@sFeZdZddd„Zdd „Zd d „Zd d „Zdd„Zdd„Zdd„Z dS)Ú _PlistWriterró r¨TFcCs.|r| t¡t ||||¡||_||_dSr)r¯Ú PLISTHEADERr¢r1Ú _sort_keysÚ _skipkeys)r0r¤r§r¦Z writeHeaderr&r'rrrr1­s  z_PlistWriter.__init__cCs"| d¡| |¡| d¡dS)Nzz)r©Ú write_valuer‹rrrr¯·s  z_PlistWriter.writecCs4t|tƒr| d|¡�n|dkr0| d¡�n|dkrD| d¡nìt|tƒr‚d|krbdkrxnn| dd |¡nt|ƒ‚n®t|tƒrž| d t|ƒ¡n’t|tƒr´| |¡n|t|t ƒrÊ|  |¡nft|t t fƒrä|  |¡nLt|tjƒ�r| d t|ƒ¡n,t|ttfƒ�r | |¡ntd t|ƒƒ‚dS) NÚstringTÚtrueFZfalselûÿÿÿrHZintegerz%dÚrealÚdatezunsupported type: %s)rrr­rJÚ OverflowErrorr�rAÚdictÚ write_dictrÚ write_datar-Ú bytearrayÚ write_bytesrcriÚtupleÚlistÚ write_arrayr.r‰r‹rrrr¶¼s.           z_PlistWriter.write_valuecCs| |j¡dSr)rÀr*r/rrrr¾ász_PlistWriter.write_datacCsz| d¡|jd8_tddt|j dd¡|jƒƒ}t||ƒ d¡D]}|rJ| |¡qJ|jd7_|  d¡dS)Nr*r¨r™r5r²s r®) r«r¥ÚmaxrTr¦rqr6Úsplitr©r¬)r0r*r7r°rrrrÀäs þ z_PlistWriter.write_bytescCs‚|rt| d¡|jr"t| ¡ƒ}n| ¡}|D]8\}}t|tƒsP|jrHq.tdƒ‚| d|¡|  |¡q.|  d¡n | d¡dS)Nr¼úkeys must be stringsre) r«r´ÚsortedÚitemsrrrµr.r­r¶r¬)r0rhrÈrer(rrrr½ñs      z_PlistWriter.write_dictcCs<|r.| d¡|D]}| |¡q| d¡n | d¡dS)NÚarray)r«r¶r¬r­)r0rÉr(rrrrÃs    z_PlistWriter.write_arrayN)rr²r¨TF) r@rDrEr1r¯r¶r¾rÀr½rÃrrrrr±¬sþ % r±cCsŽd}|D]}| |¡rdSqtjdftjdftjdffD]N\}}| |¡sNq:|D]4}|| d¡ |¡}|dt|ƒ…|krRdSqRq:dS)N)s6xBBQQQ)Ú_fpÚseekÚosÚSEEK_ENDÚreadrTrÚstructÚunpackÚ _ref_sizeÚ _read_intsÚ_object_offsetsÚ _undefinedÚ_objectsÚ _read_objectÚOSErrorÚ IndexErrorÚerrorr»rK)r0rÚtrailerÚ offset_sizeÚ num_objectsÚ top_objectÚoffset_table_offsetrrrr‚Es*   ý    ÿ z_BinaryPlistParser.parsecCsL|dkrH|j d¡dd@}d|>}dt|}t ||j |¡¡dS|S)z$ return the size of the next object.ér¨rrQrn)rßrãÚ_BINARY_FORMATrärå)r0ÚtokenLrsrXr,rrrÚ _get_size^s  z_BinaryPlistParser._get_sizecst|j ˆ|¡‰ˆtkr2t d|›tˆ›�ˆ¡SˆrFtˆƒˆ|krLtƒ‚t‡‡fdd„tdˆ|ˆƒDƒƒSdS)Nrnc3s&|]}t ˆ||ˆ…d¡VqdS)ÚbigN)rJÚ from_bytes)Ú.0rZ©r*ÚsizerrÚ osÿz0_BinaryPlistParser._read_ints..r) rßrãrõrärårTrrÁrS)r0Únrürrûrrçhsÿz_BinaryPlistParser._read_intscCs| ||j¡Sr)rçræ)r0rþrrrÚ _read_refsrsz_BinaryPlistParser._read_refscsˆj|}|tk r|Sˆj|}ˆj |¡ˆj d¡d}|d@|d@}}|dkr^d}�n°|dkrnd}�n |dkr~d }�n�|dkrŽd }�n€|d krºtjˆj d|>¡d |d kd�}�nT|dkrÞt  dˆj d¡¡d}�n0|dk�rt  dˆj d¡¡d}�n |dk�rDt  dˆj d¡¡d}t   ddd¡t j |d�}�nÊ|dk�rŒˆ  |¡}ˆj |¡}t |ƒ|k�rxtƒ‚ˆj�st|ƒ}�n‚|dk�rΈ  |¡}ˆj |¡} t | ƒ|k�rÀtƒ‚|  d¡}�n@|dk�rˆ  |¡d}ˆj |¡} t | ƒ|k�rtƒ‚|  d¡}nü|dk�r:tt ˆj d|¡d ¡ƒ}nÔ|dk�r€ˆ  |¡}ˆ |¡} g}|ˆj|<| ‡fdd „| Dƒ¡nŽ|d!k�rˆ  |¡}ˆ |¡} ˆ |¡} ˆ ¡}|ˆj|<z.t| | ƒD]\} } ˆ | ¡|ˆ | ¡<�qÆWntk �rtƒ‚YnXntƒ‚|ˆj|<|S)"zx read the object by reference. May recursively read sub-objects (content of an array/dict/set) r¨réðrôNrÜFé TrRr™rørQ©Zsignedé"z>frPé#z>dé3éÑ)Zsecondsé@éPrÊé`rúutf-16beé€é c3s|]}ˆ |¡VqdSr)rë)rúÚxrBrrrýÃsz2_BinaryPlistParser._read_object..éÐ)rêrérèrßràrãrJrùrärårcZ timedeltar÷rTrryrrÏr rÿÚextendrzÚziprër.)r0ÚrefÚresultÚoffsetÚtokenZtokenHrör,rXr*Zobj_refsZkey_refsÚkÚorrBrrëusŒ   ÿ     ÿ                     z_BinaryPlistParser._read_objectN) r@rDrErFr1r‚r÷rçrÿrërrrrrÝ9s  rÝcCs,|dkr dS|dkrdS|dkr$dSdSdS)Nér¨érìrPrÜr)ÚcountrrrÚ_count_to_sizeÜsrc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)Ú_BinaryPlistWritercCs||_||_||_dSr)rßr´rµ)r0rr&r'rrrr1ìsz_BinaryPlistWriter.__init__c Csàg|_i|_i|_| |¡t|jƒ}dg||_t|ƒ|_t|j|_ |j   d¡|jD]}|  |¡qZ|  |¡}|j  ¡}t|ƒ}dt||}|j   tj|f|jžŽ¡d}|||j|||f} |j   tjd| žŽ¡dS)Nróbplist00rnú >5xBBBQQQ)r)Ú_objlistÚ _objtableÚ _objidtableÚ_flattenrTrèrrærõÚ _ref_formatrßr¯Ú _write_objectÚ _getrefnumÚtellräÚpack) r0r(rñÚobjròrórðZ offset_formatZ sort_versionrïrrrr¯ñs2          þz_BinaryPlistWriter.writec Csrt|tƒr"t|ƒ|f|jkrZdSn8t|tƒrHt|jƒ|jf|jkrZdSnt|ƒ|jkrZdSt|j ƒ}|j   |¡t|tƒrŽ||jt|ƒ|f<n0t|tƒr°||jt|jƒ|jf<n||jt|ƒ<t|t ƒ�rHg}g}|  ¡}|j rèt|ƒ}|D]:\}}t|tƒ�s|j�r qìtdƒ‚|  |¡|  |¡qìt ||¡D]}| |¡�q4n&t|ttfƒ�rn|D]}| |¡�q\dS)NrÆ)rÚ_scalarsr‰r rr*Úidr!rTrrUr¼rÈr´rÇrrµr.Ú itertoolsÚchainr"rÂrÁ) r0r(ZrefnumÚkeysÚvaluesrÈrÚvrrrrr"sB           z_BinaryPlistWriter._flattencCsNt|tƒr|jt|ƒ|fSt|tƒr<|jt|jƒ|jfS|jt|ƒSdSr)rr)r r‰rr*r!r*r‹rrrr%Ns   z_BinaryPlistWriter._getrefnumcCs´|dkr"|j t d||B¡¡nŽ|dkrH|j t d|dBd|¡¡nh|dkrn|j t d|dBd|¡¡nB|d kr”|j t d |dBd |¡¡n|j t d |dBd |¡¡dS)Nrôz>Brz>BBBr™rz>BBHérz>BBLéz>BBQé)rßr¯rär')r0rrürrrÚ _write_sizeVsz_BinaryPlistWriter._write_sizec s¢ˆ |¡}ˆj ¡ˆj|<|dkr2ˆj d¡�nl|dkrJˆj d¡�nT|dkrbˆj d¡�nBqr2rz>BBr™rz>BHr0rz>BLr1lz>BQrHórørz>Bdrrr¨rrrÊrr r rrIr é�éƒé‡csg|]}ˆ |¡‘qSr)r%)rúrrBrrÚ ­sz4_BinaryPlistWriter._write_object..r rnrÆr)$r%rßr&rèr¯rrJrär'rîr»Úto_bytesr�rcZ total_secondsrr3rTr*r-r¿rr]ÚUnicodeEncodeErrorr rKrÂrÁr#r¼r´rÇrÈrµr.rU) r0r(rr,ÚtZrefsrXZkeyRefsZvalRefsZ rootItemsrr/rrBrr$fsœ                    $     "$z _BinaryPlistWriter._write_objectN) r@rDrEr1r¯r"r%r3r$rrrrrës -0rcCs|dd…dkS)NrÜrr)rÐrrrÚ_is_fmt_binaryËsr>)Údetectr}ÚwriterT©r!r"r|cCsl|dkrJ| d¡}| d¡t ¡D]}|d|ƒr$|d}qVq$tƒ‚n t|d}|||d�}| |¡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). NrÞrr?r})r"r|)rãràÚ_FORMATSr.rr‚)rr!r"r|rÐÚinfoÚPÚprrrr ás      cCst|ƒ}t||||d�S)zqRead a .plist file from a bytes object. Return the unpacked root object (which usually is a dictionary). rA)rr )r(r!r"r|rrrrr ÷sÿFr%cCs:|tkrtd|fƒ‚t|d|||d�}| |¡dS)zWWrite 'value' to a .plist file. 'fp' should be a writable, binary file object. zUnsupported format: %rr@)r&r'N)rBrKr¯)r(rr!r&r'r@rrrr s©r!r'r&cCs tƒ}t|||||d�| ¡S)z?Return a bytes object with the contents for a .plist file. rF)rr r+)r(r!r'r&rrrrr s)r5)CrFÚ__all__rVrËÚ contextlibrcÚenumÚiorr+ráÚreräÚwarningsrZxml.parsers.expatrÚEnumr@rÚglobalsÚupdateÚ __members__Úcontextmanagerrrrrrrr r³Úcompileror6r2ÚASCIIr`rgrirtrur¢r±rÕrKrrõÚobjectrérÝrrrJr�r-r)rr>rr¼rrBr r r r rrrrÚsš0ý         '"ÿ    s&d!$ a ýýú