
    0hh                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SK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Jr  S SKJr  S SKJr  \R.                  \R0                  4r\R.                  \R4                  " S5      \R0                  \R4                  " S5      S\R4                  " S	5      0rS
r/ SQr " S S\R<                  5      r " S S\R<                  5      r  " S S\R<                  5      r! " S S\R<                  5      r"\RF                  " \RH                  S:H  S5       " S S\R<                  5      5       r%\&S:X  a  \RN                  " 5         gg)    N)support)	os_helper)BytesIO)UIDs  
        PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NU
        WVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VO
        IiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4w
        LmR0ZCI+CjxwbGlzdCB2ZXJzaW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+YUJp
        Z0ludDwva2V5PgoJPGludGVnZXI+OTIyMzM3MjAzNjg1NDc3NTc2NDwvaW50
        ZWdlcj4KCTxrZXk+YUJpZ0ludDI8L2tleT4KCTxpbnRlZ2VyPjkyMjMzNzIw
        MzY4NTQ3NzU4NTI8L2ludGVnZXI+Cgk8a2V5PmFEYXRlPC9rZXk+Cgk8ZGF0
        ZT4yMDA0LTEwLTI2VDEwOjMzOjMzWjwvZGF0ZT4KCTxrZXk+YURpY3Q8L2tl
        eT4KCTxkaWN0PgoJCTxrZXk+YUZhbHNlVmFsdWU8L2tleT4KCQk8ZmFsc2Uv
        PgoJCTxrZXk+YVRydWVWYWx1ZTwva2V5PgoJCTx0cnVlLz4KCQk8a2V5PmFV
        bmljb2RlVmFsdWU8L2tleT4KCQk8c3RyaW5nPk3DpHNzaWcsIE1hw588L3N0
        cmluZz4KCQk8a2V5PmFub3RoZXJTdHJpbmc8L2tleT4KCQk8c3RyaW5nPiZs
        dDtoZWxsbyAmYW1wOyAnaGknIHRoZXJlISZndDs8L3N0cmluZz4KCQk8a2V5
        PmRlZXBlckRpY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5hPC9rZXk+CgkJ
        CTxpbnRlZ2VyPjE3PC9pbnRlZ2VyPgoJCQk8a2V5PmI8L2tleT4KCQkJPHJl
        YWw+MzIuNTwvcmVhbD4KCQkJPGtleT5jPC9rZXk+CgkJCTxhcnJheT4KCQkJ
        CTxpbnRlZ2VyPjE8L2ludGVnZXI+CgkJCQk8aW50ZWdlcj4yPC9pbnRlZ2Vy
        PgoJCQkJPHN0cmluZz50ZXh0PC9zdHJpbmc+CgkJCTwvYXJyYXk+CgkJPC9k
        aWN0PgoJPC9kaWN0PgoJPGtleT5hRmxvYXQ8L2tleT4KCTxyZWFsPjAuNTwv
        cmVhbD4KCTxrZXk+YUxpc3Q8L2tleT4KCTxhcnJheT4KCQk8c3RyaW5nPkE8
        L3N0cmluZz4KCQk8c3RyaW5nPkI8L3N0cmluZz4KCQk8aW50ZWdlcj4xMjwv
        aW50ZWdlcj4KCQk8cmVhbD4zMi41PC9yZWFsPgoJCTxhcnJheT4KCQkJPGlu
        dGVnZXI+MTwvaW50ZWdlcj4KCQkJPGludGVnZXI+MjwvaW50ZWdlcj4KCQkJ
        PGludGVnZXI+MzwvaW50ZWdlcj4KCQk8L2FycmF5PgoJPC9hcnJheT4KCTxr
        ZXk+YU5lZ2F0aXZlQmlnSW50PC9rZXk+Cgk8aW50ZWdlcj4tODAwMDAwMDAw
        MDA8L2ludGVnZXI+Cgk8a2V5PmFOZWdhdGl2ZUludDwva2V5PgoJPGludGVn
        ZXI+LTU8L2ludGVnZXI+Cgk8a2V5PmFTdHJpbmc8L2tleT4KCTxzdHJpbmc+
        RG9vZGFoPC9zdHJpbmc+Cgk8a2V5PmFuRW1wdHlEaWN0PC9rZXk+Cgk8ZGlj
        dC8+Cgk8a2V5PmFuRW1wdHlMaXN0PC9rZXk+Cgk8YXJyYXkvPgoJPGtleT5h
        bkludDwva2V5PgoJPGludGVnZXI+NzI4PC9pbnRlZ2VyPgoJPGtleT5uZXN0
        ZWREYXRhPC9rZXk+Cgk8YXJyYXk+CgkJPGRhdGE+CgkJUEd4dmRITWdiMlln
        WW1sdVlYSjVJR2QxYm1zK0FBRUNBenhzYjNSeklHOW1JR0pwYm1GeWVTQm5k
        VzVyCgkJUGdBQkFnTThiRzkwY3lCdlppQmlhVzVoY25rZ1ozVnVhejRBQVFJ
        RFBHeHZkSE1nYjJZZ1ltbHVZWEo1CgkJSUdkMWJtcytBQUVDQXp4c2IzUnpJ
        RzltSUdKcGJtRnllU0JuZFc1clBnQUJBZ004Ykc5MGN5QnZaaUJpCgkJYVc1
        aGNua2daM1Z1YXo0QUFRSURQR3h2ZEhNZ2IyWWdZbWx1WVhKNUlHZDFibXMr
        QUFFQ0F6eHNiM1J6CgkJSUc5bUlHSnBibUZ5ZVNCbmRXNXJQZ0FCQWdNOGJH
        OTBjeUJ2WmlCaWFXNWhjbmtnWjNWdWF6NEFBUUlECgkJUEd4dmRITWdiMlln
        WW1sdVlYSjVJR2QxYm1zK0FBRUNBdz09CgkJPC9kYXRhPgoJPC9hcnJheT4K
        CTxrZXk+c29tZURhdGE8L2tleT4KCTxkYXRhPgoJUEdKcGJtRnllU0JuZFc1
        clBnPT0KCTwvZGF0YT4KCTxrZXk+c29tZU1vcmVEYXRhPC9rZXk+Cgk8ZGF0
        YT4KCVBHeHZkSE1nYjJZZ1ltbHVZWEo1SUdkMWJtcytBQUVDQXp4c2IzUnpJ
        RzltSUdKcGJtRnllU0JuZFc1clBnQUJBZ004CgliRzkwY3lCdlppQmlhVzVo
        Y25rZ1ozVnVhejRBQVFJRFBHeHZkSE1nYjJZZ1ltbHVZWEo1SUdkMWJtcytB
        QUVDQXp4cwoJYjNSeklHOW1JR0pwYm1GeWVTQm5kVzVyUGdBQkFnTThiRzkw
        Y3lCdlppQmlhVzVoY25rZ1ozVnVhejRBQVFJRFBHeHYKCWRITWdiMllnWW1s
        dVlYSjVJR2QxYm1zK0FBRUNBenhzYjNSeklHOW1JR0pwYm1GeWVTQm5kVzVy
        UGdBQkFnTThiRzkwCgljeUJ2WmlCaWFXNWhjbmtnWjNWdWF6NEFBUUlEUEd4
        dmRITWdiMllnWW1sdVlYSjVJR2QxYm1zK0FBRUNBdz09Cgk8L2RhdGE+Cgk8
        a2V5PsOFYmVucmFhPC9rZXk+Cgk8c3RyaW5nPlRoYXQgd2FzIGEgdW5pY29k
        ZSBrZXkuPC9zdHJpbmc+CjwvZGljdD4KPC9wbGlzdD4Ks\  
        YnBsaXN0MDDfEBABAgMEBQYHCAkKCwwNDg8QERITFCgpLzAxMjM0NTc2OFdh
        QmlnSW50WGFCaWdJbnQyVWFEYXRlVWFEaWN0VmFGbG9hdFVhTGlzdF8QD2FO
        ZWdhdGl2ZUJpZ0ludFxhTmVnYXRpdmVJbnRXYVN0cmluZ1thbkVtcHR5RGlj
        dFthbkVtcHR5TGlzdFVhbkludFpuZXN0ZWREYXRhWHNvbWVEYXRhXHNvbWVN
        b3JlRGF0YWcAxQBiAGUAbgByAGEAYRN/////////1BQAAAAAAAAAAIAAAAAA
        AAAsM0GcuX30AAAA1RUWFxgZGhscHR5bYUZhbHNlVmFsdWVaYVRydWVWYWx1
        ZV1hVW5pY29kZVZhbHVlXWFub3RoZXJTdHJpbmdaZGVlcGVyRGljdAgJawBN
        AOQAcwBzAGkAZwAsACAATQBhAN9fEBU8aGVsbG8gJiAnaGknIHRoZXJlIT7T
        HyAhIiMkUWFRYlFjEBEjQEBAAAAAAACjJSYnEAEQAlR0ZXh0Iz/gAAAAAAAA
        pSorLCMtUUFRQhAMoyUmLhADE////+1foOAAE//////////7VkRvb2RhaNCg
        EQLYoTZPEPo8bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmlu
        YXJ5IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBndW5rPgABAgM8bG90cyBv
        ZiBiaW5hcnkgZ3Vuaz4AAQIDPGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxs
        b3RzIG9mIGJpbmFyeSBndW5rPgABAgM8bG90cyBvZiBiaW5hcnkgZ3Vuaz4A
        AQIDPGxvdHMgb2YgYmluYXJ5IGd1bms+AAECAzxsb3RzIG9mIGJpbmFyeSBn
        dW5rPgABAgM8bG90cyBvZiBiaW5hcnkgZ3Vuaz4AAQIDTTxiaW5hcnkgZ3Vu
        az5fEBdUaGF0IHdhcyBhIHVuaWNvZGUga2V5LgAIACsAMwA8AEIASABPAFUA
        ZwB0AHwAiACUAJoApQCuALsAygDTAOQA7QD4AQQBDwEdASsBNgE3ATgBTwFn
        AW4BcAFyAXQBdgF/AYMBhQGHAYwBlQGbAZ0BnwGhAaUBpwGwAbkBwAHBAcIB
        xQHHAsQC0gAAAAAAAAIBAAAAAAAAADkAAAAAAAAAAAAAAAAAAALsKEYED_ARCHIVEs~  
        YnBsaXN0MDDUAQIDBAUGHB1YJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVy
        VCR0b3ASAAGGoKMHCA9VJG51bGzTCQoLDA0OVnB5dHlwZVYkY2xhc3NZTlMu
        c3RyaW5nEAGAAl8QE0tleUFyY2hpdmUgVUlEIFRlc3TTEBESExQZWiRjbGFz
        c25hbWVYJGNsYXNzZXNbJGNsYXNzaGludHNfEBdPQ19CdWlsdGluUHl0aG9u
        VW5pY29kZaQVFhcYXxAXT0NfQnVpbHRpblB5dGhvblVuaWNvZGVfEBBPQ19Q
        eXRob25Vbmljb2RlWE5TU3RyaW5nWE5TT2JqZWN0ohobXxAPT0NfUHl0aG9u
        U3RyaW5nWE5TU3RyaW5nXxAPTlNLZXllZEFyY2hpdmVy0R4fVHJvb3SAAQAI
        ABEAGgAjAC0AMgA3ADsAQQBIAE8AVgBgAGIAZAB6AIEAjACVAKEAuwDAANoA
        7QD2AP8BAgEUAR0BLwEyATcAAAAAAAACAQAAAAAAAAAgAAAAAAAAAAAAAAAA
        AAABOQ==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" [
   <!ENTITY entity "replacement text">
  ]>
<plist version="1.0">
  <dict>
    <key>A</key>
    <string>&entity;</string>
  </dict>
</plist>
)()ztoo short data    )z1too large offset_table_offset and offset_size = 1s"                                *)z9too large offset_table_offset and nonstandard offset_sizes$                                  ,)z'integer overflow in offset_table_offsets"                         )ztoo large top_objects"                               	)zinteger overflow in top_objects"                        	)z)too large num_objects and offset_size = 1s"                                	)z1too large num_objects and nonstandard offset_sizes$                                  	)z%extremally large num_objects (32 bit)s"                             	)z%extremally large num_objects (64 bit)s"                            	)zinteger overflow in num_objectss"                         	)zoffset_size = 0s"                                 	)zref_size = 0s%    
                             )ztoo large offsets"    *                            	)zinteger overflow in offsets)                                	)ztoo large array sizes'                                 )z$extremally large array size (32-bit)s*                                )z$extremally large array size (64-bit)s.                                   )zinteger overflow in array sizes.                                )ztoo large reference indexs%    
                            )z#integer overflow in reference indexs,                                )ztoo large bytes sizes%   O #A                            )z$extremally large bytes size (32-bit)s(   OA                            )z$extremally large bytes size (64-bit)s,   O   A                            )zinteger overflow in bytes sizes,   OA                            )ztoo large ASCII sizes%   _ #A                            )z$extremally large ASCII size (32-bit)s(   _A                            )z$extremally large ASCII size (64-bit)s,   _   A                            )zinteger overflow in ASCII sizes,   _A                            )zinvalid ASCIIs#   Q                            
)ztoo large UTF-16 sizes'   o                               )z%extremally large UTF-16 size (32-bit)s*   oO                              )z%extremally large UTF-16 size (64-bit)s.   o                                 )zinteger overflow in UTF-16 sizes.   o                              )zinvalid UTF-16s$   a                             )znon-hashable keys&                               )z&too large datetime (datetime overflow)s*   3BP                                  )z'too large datetime (timedelta overflow)s*   3B                                  )zinvalid datetime (Infinity)s*   3                                  )zinvalid datetime (NaN)s*   3                                  c                      \ rS 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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-S- r.S. r/S/ r0S0 r1S1 r2S2 r3\4Rj                  " S3\6Rn                  " 5       ;   S45      S5 5       r8S6 r9\4Rj                  " S3\6Rn                  " 5       ;   S45      S7 5       r:S8 r;S9 r<S:r=g)<TestPlistlibi  c                 \     [         R                  " [        R                  5        g !    g = fN)osunlinkr   TESTFNselfs    ;/opt/python-3.13.8/usr/lib/python3.13/test/test_plistlib.pytearDownTestPlistlib.tearDown  s#    	IIi&&'	s   $' +Nc                     [        SSSSS/ SQ/SSS	S
SS[        SSSS[        SS/ SQS9S9SSS/[        R                  " SSSSSS5      [        5       [        5       S9nSUS'   U$ )NDoodahAB   g     @@@)         g      ?i  l    l   ,        l  @J z<hello & 'hi' there!>u   Mässig, MaßTF   )r   r   textabc)anotherStringaUnicodeValue
aTrueValueaFalseValue
deeperDict   <binary gunk>   <lots of binary gunk> <lots of binary gunk> <lots of binary gunk> <lots of binary gunk> <lots of binary gunk> <lots of binary gunk> <lots of binary gunk> <lots of binary gunk> <lots of binary gunk> <lots of binary gunk>   
      !   )aStringaListaFloatanIntaBigIntaBigInt2aNegativeIntaNegativeBigIntaDictsomeDatasomeMoreData
nestedDataaDateanEmptyDictanEmptyListzThat was a unicode key.u   Åbenraa)dictdatetimelist)r   fmtpls      r   _createTestPlistlib._create  s    Ry1"#*51!"? (@?@%%dBBB?&&+
. 5<	r   c                 ~    U R                  5       nU R                  US   S5        U R                  US   S   S5        g )Nr/   r   r7   r'   F)rC   assertEqual)r   rB   s     r   test_createTestPlistlib.test_create  s:    \\^I1G]3U;r   c                 *   U R                  5       n[        [        R                  S5       n[        R
                  " X5        S S S 5        [        [        R                  S5       n[        R                  " U5      nS S S 5        U R                  [        U5      [        W5      5        U R                  [        [        R
                  US5        U R                  [        [        R                  S5        g ! , (       d  f       N= f! , (       d  f       N= f)Nwbrbfilename)rC   openr   r   plistlibdumploadrF   r>   assertRaisesAttributeError)r   rB   fppl2s       r   test_ioTestPlistlib.test_io  s    \\^)""D)RMM"! * )""D)R--#C * 	b49-.(--ZH.(--D *) *)s   C3$D3
D
Dc           	          [        5       /n[         H>  nU R                  US9   U R                  [        [
        R                  XS9  S S S 5        M@     g ! , (       d  f       MR  = fNrA   )objectALL_FORMATSsubTestrQ   	TypeErrorrN   dumps)r   rB   rA   s      r   test_invalid_typeTestPlistlib.test_invalid_type  sK    x\C#&!!)X^^R!I '& &&s   $A
A$	c                 `   U R                  [        5         [        S5        S S S 5        U R                  [        5         [        S5        S S S 5        U R                  [        5         [        S5        S S S 5        g ! , (       d  f       Na= f! , (       d  f       NI= f! , (       d  f       g = f)Nz
not an int            i)rQ   r]   r   
ValueErrorr   s    r   test_invalid_uidTestPlistlib.test_invalid_uid  sk    y) *z*L +z*H +*	 *)****s"   A=B(B=
B
B
B-c           
      T   S H  n[          H  nU R                  XS9   [        R                  " XS9n[        R                  " U5      nU R                  U[        5        U R                  X5        [        R                  " XBS9nU R                  X55        S S S 5        M     M     [          HU  nSSS-  S-
  SSS-  * 4 H>  nU R                  XS9   U R                  [        [        R                  XS9  S S S 5        M@     MW     g ! , (       d  f       GM	  = f! , (       d  f       Mi  = f)	N)r         i     l            l    l    r   l         rB   rA   rY   l           r      r   l         )
r[   r\   rN   r^   loadsassertIsInstanceintrF   rQ   OverflowErrorr   rB   rA   datarT   data2s         r   test_intTestPlistlib.test_int  s    0B"\\R\1#>>"6D"...C))#s3$$R-$NN38E$$T1 21 #0 C"AHQJc	B\\R\1%%mX^^&( & 3 21 C  21 21s   A7D$D
D
D'c                    S H  n[          H  nU R                  XS9   [        R                  " [	        U5      US9n[        R
                  " U5      nU R                  U[        5        U R                  XA5        [        R                  " XBS9nU R                  X55        S S S 5        M     M     g ! , (       d  f       M  = f)N)r)   r*   rk   rY   )	r[   r\   rN   r^   	bytearrayrm   rn   bytesrF   rq   s         r   test_bytearrayTestPlistlib.test_bytearray  s    KB"\\R\1#>>)B-SAD"...C))#u5$$S-$NN38E$$T1 21 # L11s   BB00
B?c                    U R                  5       n[        R                  " U5      n[        R                  " U5      nU R	                  [        U5      [        U5      5        [        R                  " U5      nU R	                  X$5        g r   )rC   rN   r^   rm   rF   r>   )r   rB   rr   rT   rs   s        r   
test_bytesTestPlistlib.test_bytes  s]    \\^~~b!nnT"b49-s#%r   c                     U R                  5       n[        R                  " U5      nUR                  5       nU R	                  U[
        5        [        R                  " U5      nU R                  X5        g r   )rC   rN   r^   decodern   strrm   rF   )r   rB   r"   srT   s        r   test_loads_str_with_xml_fmt(TestPlistlib.test_loads_str_with_xml_fmt  sR    \\^NN2HHJa%nnQ!r   c                     SnU R                  [        U5         [        R                  " S[        R                  S9  S S S 5        g ! , (       d  f       g = f)Nz6value must be bytes-like object when fmt is FMT_BINARYtestrY   )assertRaisesRegexr]   rN   rm   
FMT_BINARY)r   msgs     r   test_loads_str_with_binary_fmt+TestPlistlib.test_loads_str_with_binary_fmt	  s7    F##Is3NN6x':':; 433s   $A
Ac                     SS0////////nU R                  [        R                  " [        R                  " U5      5      U5        g )Nr      aaaaaarF   rN   rm   r^   r   rr   s     r   test_indentation_array#TestPlistlib.test_indentation_array  sF    	*+,-./012t(<=tDr   c           
          SSSSSSSSS	S
000000000nU R                  [        R                  " [        R                  " U5      5      U5        g )N123456789r   r   r   s     r   test_indentation_dict"TestPlistlib.test_indentation_dict  sV    cC#cC#Y?O9P3Q-R'S!TUVWt(<=tDr   c                     SSSSS0/////0/00nU R                  [        R                  " [        R                  " U5      5      U5        g )Nr   r   r   r   r   r   r   s     r   test_indentation_dict_mix&TestPlistlib.test_indentation_dict_mix  sO    cS	':&;%<$=#>"?@ABCt(<=tDr   c           	         [        S5      nU R                  [        R                  " [        R                  " U[        R
                  S95      U5        [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      S	.nU R                  [        R                  " [        R                  " U[        R
                  S95      U5        g )
Nr   rY   r   r   rh   ri   rj   l            )uid0uid2uid8uid16uid32uid63)r   rF   rN   rm   r^   r   )r   rr   	dict_datas      r   test_uidTestPlistlib.test_uid  s    1vtATAT(UVX\]FFK\\\
	 	yhFYFY(Z[]fgr   c                 R    [        S5      nU R                  UR                  S5        g Nr   )r   rF   rr   )r   uids     r   test_uid_dataTestPlistlib.test_uid_data'  s    !f1%r   c                     U R                  [        S5      [        S5      5        U R                  [        S5      [        S5      5        U R                  [        S5      S5        g )Nr   r   znot uid)rF   r   assertNotEqualr   s    r   test_uid_eqTestPlistlib.test_uid_eq+  sF    QQ(CFCF+CFI.r   c                 p    U R                  [        [        S5      5      [        [        S5      5      5        g r   )rF   hashr   r   s    r   test_uid_hashTestPlistlib.test_uid_hash0  s"    c!ftCF|4r   c                 L    U R                  [        [        S5      5      S5        g )Nr   zUID(1))rF   reprr   r   s    r   test_uid_reprTestPlistlib.test_uid_repr3  s    c!fx0r   c                 b    U R                  [        R                  " [        S5      5      S5        g r   )rF   operatorindexr   r   s    r   test_uid_indexTestPlistlib.test_uid_index6  s    A/3r   c           
          [        [        R                  S-   5       HN  nU R                  [        R                  " [        R
                  " [        S5      US95      [        S5      5        MP     g )Nr      )protocol)rangepickleHIGHEST_PROTOCOLrF   rm   r^   r   )r   protos     r   test_uid_pickleTestPlistlib.test_uid_pickle9  sK    622Q67EV\\&,,s2w*OPRUVXRYZ 8r   c                     U R                  [        R                  " [        S5      5      [        S5      5        U R                  [        R                  " [        S5      5      [        S5      5        g r   )rF   copyr   deepcopyr   s    r   test_uid_copyTestPlistlib.test_uid_copy=  sD    3q6*CF3s1v.A7r   c                    [          Hf  nU R                  US9   [        R                  " [        U   5      n[        R
                  " X!S9nU R                  U[        U   S5        S S S 5        Mh     g ! , (       d  f       Mz  = fNrY   z2generated data was not identical to Apple's output)r[   r\   rN   rm   TESTDATAr^   rF   )r   rA   rB   rr   s       r   test_appleformatting!TestPlistlib.test_appleformattingA  sc    C#&^^HSM2~~b2  x}HJ '& &&s   AA22
B	c                    S U l         [         H  nU R                  US9   U R                  US9n[        R
                  " [        U   US9nU R                  [        U5      [        U5      S5        [        R
                  " [        U   5      nU R                  [        U5      [        U5      S5        S S S 5        M     g ! , (       d  f       M  = fr   )	maxDiffr[   r\   rC   rN   rm   r   rF   r>   )r   rA   rB   rT   s       r   test_appleformattingfromliteral,TestPlistlib.test_appleformattingfromliteralJ  s    C#&\\c\*nnXc]<  b49HJnnXc]3  b49HJ '& &&s   BC  
C	c                    [          H  nU R                  US9   [        5       nU R                  US9n[        R
                  " X2US9  [        R                  " [        UR                  5       5      US9nU R                  [        U5      [        U5      5        [        R                  " [        UR                  5       5      5      nU R                  [        U5      [        U5      5        S S S 5        M     g ! , (       d  f       M  = frX   )
r[   r\   r   rC   rN   rO   rP   getvaluerF   r>   )r   rA   r"   rB   rT   s        r   test_bytesioTestPlistlib.test_bytesioV  s    C#&I\\c\*b-mmGAJJL$9sC  b495mmGAJJL$9:  b495 '& &&s   CC66
D	c           
         [         R                  " 5       nSUS'   SUS'   SUS'   [         GH   nS H  nU R                  X#S9   [	        5       n[
        R                  " XX#S9  [
        R                  " [	        UR                  5       5      [         R                  S	9nU R                  [        U5      [        U5      5        U(       a,  U R                  [        UR                  5       5      / S
Q5        O+U R                  [        UR                  5       5      / SQ5        S S S 5        M     GM     g ! , (       d  f       GM  = fNr   r"   r   r!   r   r#   )FT)rA   	sort_keys)	dict_typer    )r"   r!   r#   )collectionsOrderedDictr[   r\   r   rN   rO   rP   r   rF   r>   r@   keys)r   rB   rA   r   r"   rT   s         r   test_keysort_bytesio!TestPlistlib.test_keysort_bytesioa  s    $$&333;C*	\\c\?	AMM"SF"--

(="-"9"9;C $$T"XtCy9 ((chhj)9?K((chhj)9?K @? + ??s   CD11
Ec           	      @   [         R                  " 5       nSUS'   SUS'   SUS'   [         H  nS H  nU R                  X#S9   [        R
                  " XUS9n[        R                  " U[         R                  S	9nU R                  [        U5      [        U5      5        U(       a,  U R                  [        UR                  5       5      / S
Q5        O+U R                  [        UR                  5       5      / SQ5        S S S 5        M     M     g ! , (       d  f       M  = fr   )r   r   r[   r\   rN   r^   rm   rF   r>   r@   r   )r   rB   rA   r   rr   rT   s         r   test_keysortTestPlistlib.test_keysortv  s    $$&333C*	\\c\?#>>"KD"..9P9PQC$$T"XtCy9 ((chhj)9?K((chhj)9?K @? + ??s   B;D
Dc           
         SS0n[          Hl  nU R                  US9   U R                  [        [        R
                  XS9  [        5       nU R                  [        [        R                  XUS9  S S S 5        Mn     g ! , (       d  f       M  = f)N*   aNumberrY   )r[   r\   rQ   r]   rN   r^   r   rO   )r   rB   rA   r"   s       r   test_keys_no_string TestPlistlib.test_keys_no_string  sn    9C#&!!)X^^R!II!!)X]]Bs!K	 '& &&s   AA<<
B	c           
         SSS.n[          H  nU R                  US9   [        R                  " XSSS9n[        R                  " U5      nU R                  USS05        [        5       n[        R                  " XUSSS9  UR                  5       n[        R                  " UR                  5       5      nU R                  USS05        S S S 5        M     g ! , (       d  f       M  = f)	Nr   aWord)r   snakerY   TF)rA   skipkeysr   r   )	r[   r\   rN   r^   rm   rF   r   rO   r   )r   rB   rA   rr   rT   rS   s         r   test_skipkeysTestPlistlib.test_skipkeys  s    

 C#&~~$%A nnT*  w&89YdeE{{}nnR[[]3  w&89 '& &&s   B*C
C$	c           	      b   SSSS.n[          H  nU R                  US9   [        R                  " XS9n[        R                  " U5      nU R                  USS/SS/SS/S.5        U[        R                  :w  a  U R                  US	   US
   5        S S S 5        M     g ! , (       d  f       M  = f)N)r   r   )r      firstsecondthirdrY   r   r   r   r   r   r   )r[   r\   rN   r^   rm   rF   r   assertIsNotr   rB   rA   rr   rT   s        r   test_tuple_membersTestPlistlib.test_tuple_members  s    
 C#&~~b2nnT*  V !fV' 
 (---$$S\3x=A '& &&s   A3B
B.	c           	      F   SS/SS/SS/S.n[          Hy  nU R                  US9   [        R                  " XS9n[        R                  " U5      nU R                  USS/SS/SS/S.5        U R                  US   US   5        S S S 5        M{     g ! , (       d  f       M  = f)	Nr   r   r   r   r   rY   r   r   r[   r\   rN   r^   rm   rF   r   r   s        r   test_list_membersTestPlistlib.test_list_members  s    V!fV
 C#&~~b2nnT*  V !fV' 
   Ws8}= '& &&   AB
B 	c           	      F   SS0SS0SS0S.n[          Hy  nU R                  US9   [        R                  " XS9n[        R                  " U5      nU R                  USS0SS0SS0S.5        U R                  US   US   5        S S S 5        M{     g ! , (       d  f       M  = f)	Nr!   r   r"   r   r   rY   r   r   r   r   s        r   test_dict_membersTestPlistlib.test_dict_members  s    1XAh1Y
 C#&~~b2nnT*  !1X"Ah!1Y' 
   Ws8}= '& &&r   c                    [        S5       H  n[        U5      nSU-  nUS:  d  US;   aP  [        R                  " U[        R                  S9nUS:w  a&  U R                  [        R                  " U5      U5        OAU R                  [        5         [        R                  " U[        R                  S9  S S S 5        [        R                  " U[        R                  S9  M     g ! , (       d  f       N6= f)N   zstring containing %s    z
	rY   )
r   chrrN   r^   FMT_XMLrF   rm   rQ   rc   r   )r   ir#   
testStringrr   s        r   test_controlcharacters#TestPlistlib.test_controlcharacters  s    sAAA/!3JBw!x-~~jh6F6FG9$$X^^D%9:F&&z2NN:83C3CD 3NN:8+>+>?  32s   $C$$
C2	c                     SS0n[          HU  nU R                  US9   [        R                  " XS9nU R	                  [        R
                  " U5      U5        S S S 5        MW     g ! , (       d  f       Mi  = f)Npythonu   🐍rY   )r[   r\   rN   r^   rF   rm   )r   rB   rA   rr   s       r   test_non_bmp_characters$TestPlistlib.test_non_bmp_characters  sZ    %C#&~~b2  !5r: '& &&s   ;A%%
A4	c                    [          H  nU R                  US9   U R                  [        5         [        R
                  " SUS9  S S S 5        U R                  [        5         [        R
                  " SUS9  S S S 5        S S S 5        M     g ! , (       d  f       NN= f! , (       d  f       N,= f! , (       d  f       M  = f)NrY   u   u   )r[   r\   rQ   UnicodeEncodeErrorrN   r^   )r   rA   s     r   test_lone_surrogates!TestPlistlib.test_lone_surrogates  s}    C#&&&'9:NN85 ;&&'9:NN85 ; '& :::: '&s:   B/BB/"B8B/
BB/
B,(B//
B>	c           	      b   [          H  nU R                  US9   Sn/ SQn[        R                  " [        R                  " X!S95      n[        R                  " [        R                  " X1S95      nU R                  X$5        U R                  X55        S S S 5        M     g ! , (       d  f       M  = f)NrY   abc)r   r   r   r  )r[   r\   rN   rm   r^   rF   )r   rA   test1test2result1result2s         r   test_nondictrootTestPlistlib.test_nondictroot  s}    C#&("..)GH"..)GH  0  0 '& &&s   A9B
B.	c                     S H9  nU R                  [        [        R                  SU-  R	                  5       5        M;     g )N)z<key>key inside an array</key>z-<key>key inside an array2</key><real>3</real>z&<true/><key>key inside an array3</key>z <plist><array>%s</array></plist>rQ   rc   rN   rm   encoder   r
  s     r   test_invalidarrayTestPlistlib.test_invalidarray  s8    <A j(..A!CKKMO<r   c                     S Ho  nU R                  [        [        R                  SU-  R	                  5       5        U R                  [        [        R                  SU-  R	                  5       5        Mq     g )N)z0<key><true/>k</key><string>compound key</string>z<key>single key</key>z<string>missing key</string>ze<key>k1</key><string>v1</string><real>5.3</real><key>k1</key><key>k2</key><string>double key</string>z<plist><dict>%s</dict></plist>z-<plist><array><dict>%s</dict></array></plist>r  r!  s     r   test_invaliddictTestPlistlib.test_invaliddict  sb    KA
 j(..?AIIKMj(..NqPXXZ\Kr   c                 N    U R                  [        [        R                  S5        g )Ns-   <plist><integer>not integer</integer></plist>rQ   rc   rN   rm   r   s    r   test_invalidinteger TestPlistlib.test_invalidinteger  s    *hnnJ	Lr   c                 N    U R                  [        [        R                  S5        g )Ns*   <plist><integer>not real</integer></plist>r(  r   s    r   test_invalidrealTestPlistlib.test_invalidreal  s    *hnnG	Ir   c                     Sn[         R                  " U5      nU R                  US5        Sn[         R                  " U5      nU R                  US5        Sn[         R                  " U5      nU R                  US5        g )Ns%   <plist><integer>456</integer></plist>i  s%   <plist><integer>0xa</integer></plist>r,   s&   <plist><integer>0123</integer></plist>{   )rN   rm   rF   )r   rB   values      r   test_integer_notations#TestPlistlib.test_integer_notations  sk    5r"$5r"#6r"$r   c                     [         [        R                     nSS[        R                  4SS[        R
                  4SS[        R                  44 H  u  p#nU R                  [        R                  S9nU R                  US9   UR                  SU5      nXFR                  S5      R                  U5      -   n[        R                  " U5      nU R                  [        U5      [        U5      5        S S S 5        M     g ! , (       d  f       M  = f)	Ns   utf-8zutf-8s   utf-16z	utf-16-lez	utf-16-berY   )encodings   UTF-8)r   rN   r	  codecsBOM_UTF8BOM_UTF16_LEBOM_UTF16_BErC   r\   replacer   r   rm   rF   r>   )r   basexml_encodingr4  bomrB   rr   rT   s           r   test_xml_encodingsTestPlistlib.test_xml_encodings,  s    (() w8V-@-@AV-@-@A,'LC ("2"23Bx0||Hl;[[188BBnnT*  b495	 10, 10s   A/C>>
D	c                     U R                  [        5         [        R                  " 0 SS9  S S S 5        g ! , (       d  f       g = f)NblahrY   )rQ   rc   rN   r^   r   s    r   test_dump_invalid_format%TestPlistlib.test_dump_invalid_format?  s*    z*NN26* +**s	   5
Ac                     U R                  [        R                  5         [        R                  " S5        S S S 5        g ! , (       d  f       g = f)Ns!   these are not plist file contents)rQ   rN   InvalidFileExceptionrm   r   s    r   test_load_invalid_file#TestPlistlib.test_load_invalid_fileC  s/    x<<=NN?@ >==s   A  
Ac                     [        S5      nSUl        U R                  [        5         [        R
                  " U[        R                  S9  S S S 5        g ! , (       d  f       g = f)Nr   rY   )r   rr   rQ   rc   rN   r^   r   )r   neg_uids     r   test_modified_uid_negative'TestPlistlib.test_modified_uid_negativeG  s@    a&z*NN7(;(;< +**   $A
A#c                     [        S5      nSUl        U R                  [        5         [        R
                  " U[        R                  S9  S S S 5        g ! , (       d  f       g = f)Nr   rb   rY   )r   rr   rQ   rp   rN   r^   r   )r   huge_uids     r   test_modified_uid_huge#TestPlistlib.test_modified_uid_hugeM  s@    q6}-NN8)<)<= .--rL  c                     U R                  [        R                  S5         [        R                  " [        [        R
                  S9  S S S 5        g ! , (       d  f       g = f)Nz)XML entity declarations are not supportedrY   )r   rN   rD  rm   XML_PLIST_WITH_ENTITYr	  r   s    r   test_xml_plist_with_entity_decl,TestPlistlib.test_xml_plist_with_entity_declS  sD    ##H$A$A$OQNN0h6F6FGQ Q Qs   (A
A c                     [         R                  " SSS9nU R                  UR                  [        R
                  5        g )Ns0   <plist><date>2023-12-10T08:03:30Z</date></plist>Taware_datetime)rN   rm   rF   tzinfor?   UTC)r   dts     r   test_load_aware_datetime%TestPlistlib.test_load_aware_datetimeX  s.    ^^O+/1HLL1r   America/Los_AngelesCan't find timezone datebasec                 D   [         R                   " SSSSSS[        R                  " S5      S9n[         Hh  n[        R
                  " XS	S
9n[        R                  " X2S	S
9nU R                  UR                  [         R                  5        U R                  XA5        Mj     g )N)	           	   r,   r]  rX  TrA   rW  )
r?   zoneinfoZoneInfor[   rN   r^   rm   rF   rX  rY  r   rZ  rA   r   	loaded_dts        r   test_dump_aware_datetime%TestPlistlib.test_dump_aware_datetime]  s     tQ1a&.&7&78M&NPCr4@A q$GIY--x||<Y+	 r   c           
      8   [         R                   " SSSSSS[         R                  S9n[         Hh  n[        R                  " XSS	9n[        R
                  " X2SS	9nU R                  UR                  [         R                  5        U R                  XA5        Mj     g )
Nr`  ra  rb  rc  rd  r,   re  Trf  )r?   rY  r[   rN   r^   rm   rF   rX  ri  s        r   test_dump_utc_aware_datetime)TestPlistlib.test_dump_utc_aware_datetimeh  st    tQ1aHLLICr4@A q$GIY--x||<Y+	 r   c           	          [         R                   " SSSS[        R                  " S5      S9n[        R                  " U[        R
                  SS9nU R                  S	U5        g )
Nr`  ra  rb  rc  r]  re  Frf     2345-06-07T08:00:00Z)r?   rg  rh  rN   r^   r	  assertInr   rZ  r   s      r   6test_dump_aware_datetime_without_aware_datetime_optionCTestPlistlib.test_dump_aware_datetime_without_aware_datetime_optionp  sS     tQ1&.&7&78M&NPNN28#3#3EJ-q1r   c                     [         R                   " SSSS[         R                  S9n[        R                  " U[        R                  SS9nU R                  SU5        g )	Nr`  ra  rb  rc  re  Frf  rq  )r?   rY  rN   r^   r	  rr  rs  s      r   :test_dump_utc_aware_datetime_without_aware_datetime_optionGTestPlistlib.test_dump_utc_aware_datetime_without_aware_datetime_optionx  sE    tQ1X\\BNN28#3#3EJ-q1r   c                    [         R                   " SSSSS S9n[         Hj  n[        R                  " XSS9n[        R                  " USS	9nUR                  [         R                  5      R                  S S9nU R                  XE5        Ml     g )
Ni  ra  rb  rc  re  Trf  FrV  )	r?   r[   rN   r^   rm   
astimezonerY  r9  rF   )r   rZ  rA   r   parsedexpecteds         r   3test_dump_naive_datetime_with_aware_datetime_option@TestPlistlib.test_dump_naive_datetime_with_aware_datetime_option}  st     tQ1T:Cr4@A^^Ae<F}}X\\2::$:GHV.	 r   )r   r   )>__name__
__module____qualname____firstlineno__r   rC   rG   rU   r_   rd   rt   ry   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  r  r  r"  r%  r)  r,  r1  r=  rA  rE  rJ  rO  rS  r[  unittest
skipUnlessrg  available_timezonesrk  rn  rt  rw  r}  __static_attributes__ r   r   r
   r
     s{   6<
EJ3$	2&"<
EEEh&/
514[8J
J	6L*L$L:*B&>$>$@;61O	\LI%6&+A=>H
2
 .(2N2N2PP79,9,, .(2N2N2PP792922
	/r   r
   c                       \ rS rSr\SSS.S j5       rS rS rS rS r	S	 r
S
 rS rS rS rS rS r\R$                  " S\R(                  " 5       ;   S5      S 5       rS rSrg)TestBinaryPlistlibi  r   offset_sizeref_sizec                    S/nSn/ nU HC  nUR                  UR                  U S5      5        UR                  U5        U[        U5      -  nME     [        R                  " SX[        U5      SU5      nUR                  U5        UR                  U5        [        R                  " SR                  U5      [        R                  S9$ )N   bplist00rc  bigz>6xBBQQQr   r   rY   )
appendto_byteslenstructpackextendrN   rm   joinr   )r  r  objectsrr   offsetoffsetsxtails           r   r   TestBinaryPlistlib.decode  s    }ANN6??;>?KKNc!fF  {{:{w<F4GD~~chhtn(2E2EFFr   c                 X    SnU R                  [        R                  " U5      SS05        g )Ns<   bplist00    QaQb                                  r!   r"   )rF   rN   rm   r   s     r   test_nonstandard_refs_size-TestBinaryPlistlib.test_nonstandard_refs_size  s(    4 	-Sz:r   c                 h   S SSSSSSS[         R                   " SS	S
S	SS5      [        S5      SS/SSS04 Hg  nU R                  US9   [        R                  " U/S-  [        R
                  S9nU R                  [        U5      S[        U5      5        S S S 5        Mi     g ! , (       d  f       M{  = f)NFT90  ^@abcdeu
   абвгд   abcder+   r,   r-   r.   r   Y  r   r  12r  i  rY   iL  )	r?   rw   r\   rN   r^   r   
assertLessr  r   )r   r  rr   s      r   test_dump_duplicates'TestBinaryPlistlib.test_dump_duplicates  s    tUFG\8##D"b"b"=H%Cy)dC[JA "~~qc$hH4G4GHD	4d< #"J #"s   AB""
B1	c                    S SSSSSS[         R                   " SSS	SS
S
5      [        S5      SS/SSS04 H  nU R                  US9   [        R                  " U/S-  [        R
                  S9n[        R                  " U5      u  p4[        U[        5      (       a  [        U5      nU R                  X15        U R                  XA5        U R                  X45        S S S 5        M     g ! , (       d  f       M  = f)NFTr  r  r  r  r+   r,   r-   r.   r   r  r  r  r  r   rY   )r?   rw   r\   rN   r^   r   rm   
isinstancetupler@   rF   assertIs)r   r  rr   r!   r"   s        r   test_identity TestBinaryPlistlib.test_identity  s    tUFGX##D"b"b"=H%Cy)dC[JA "~~qc!e1D1DE~~d+a''QA  &  &a# #"J #"s   BC''
C6	c                 2   / nUR                  U5        [        R                  " [        R                  " U[        R                  S95      nU R                  US   U5        / 4nUS   R                  U5        [        R                  " [        R                  " U[        R                  S95      nU R                  US   S   U5        0 nXS'   [        R                  " [        R                  " U[        R                  S95      nU R                  US   U5        g )NrY   r   r  )r  rN   rm   r^   r   r  )r   r!   r"   s      r   test_cyclesTestBinaryPlistlib.test_cycles  s    	NN8>>!1D1DEFadAE	!ANN8>>!1D1DEFad1gq!#NN8>>!1D1DEFafa r   c           	         S H  n[        U5       Vs/ s H  nSUS-   R                  SS5      -   PM     nn U R                  " / UQSP7SSS.6n[        U5       H9  nU R                  U[        5        U R                  [        U5      S5        US   nM;     U R                  US	5        M     g s  snf ! [         a)    U R                  U[        R                  " 5       5         M  f = f)
N)2   i,  順    r   r   r  s   Tseedr  r   seed)r   r  r   rn   r@   rF   r  RecursionErrorassertGreatersysgetrecursionlimit)r   Nr
  chunksresults        r   test_deep_nesting$TestBinaryPlistlib.test_deep_nesting  s    #ADI!HMHqgQ 0 0E ::HFM	1UfUkUqSTU qA))&$7$$S[!4#AYF "   0 $M " ?""1c&;&;&=>?s   "B/B44/C'&C'c           	      Z   S H  nU R                  US9   [        R                  " SSSSS5      [        R                  " US9-   n[        R                  " U[        R
                  S9nU R                  [        R                  " U5      U5        S S S 5        M     g ! , (       d  f       M  = f)N)l    l        )tsi  r   r   )secondsrY   )r\   r?   	timedeltarN   r^   r   rF   rm   )r   r  drr   s       r   test_large_timestamp'TestBinaryPlistlib.test_large_timestamp  s    !B$&&tQ1a8''34~~aX-@-@A  !5q9	 %$ "$$s   A9B
B*	c                    U R                  U R                  S5      S 5        U R                  U R                  S5      S5        U R                  U R                  S5      S5        U R                  U R                  S5      S5        g )N       F   	T   r   )r  r   rF   r   s    r   test_load_singletons'TestBinaryPlistlib.test_load_singletons  s`    dkk'*D1dkk'*E2dkk'*D1W-s3r   c                    U R                  U R                  S5      S5        U R                  U R                  S5      S5        U R                  U R                  S5      S5        U R                  U R                  S5      S5        U R                  U R                  S	5      S
5        U R                  U R                  S5      S5        g )Ns    r   s      s   i  s   ܺl   :} s	   #Egl   MW	s	   ܺvT2lMW	)rF   r   r   s    r   test_load_int TestBinaryPlistlib.test_load_int  s    [115[148_5v>%<=zJ%LM+	-%LM+	-r   c                   ^ / [        SS5      Q[        SS5      QSPSP[        SS5      Q[        S	S
5      QnS H'  mUR                  U4S j[        S5       5       5        M)     U Hg  nU R                  SUS 35         U R                  [        R
                  5         U R                  [        U/5      S-   5        S S S 5        S S S 5        Mi     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr   rc  r,      r  r.   $   3   4   @   )p                  c              3   .   >#    U  H
  nTU-   v   M     g 7fr   r  ).0jr
  s     r   	<genexpr>6TestBinaryPlistlib.test_unsupported.<locals>.<genexpr>  s     8iq1uis      ztoken 02xs                   )r   r  r\   rQ   rN   rD  r   rx   )r   unsupportedtokenr
  s      @r   test_unsupported#TestBinaryPlistlib.test_unsupported  s    Ka KeBm KK!K$)$$5K8=dD8IK5A8eBi88 6 EuSk23&&x'D'DEKKug ;< F 43 !EE 43s$   ? C$C>C$
C!C$$
C3	c                 8   [          Hm  u  pU R                  U5         U R                  [        R                  5         [        R
                  " SU-   [        R                  S9  S S S 5        S S S 5        Mo     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr  rY   )INVALID_BINARY_PLISTSr\   rQ   rN   rD  rm   r   )r   namerr   s      r   test_invalid_binary&TestBinaryPlistlib.test_invalid_binary  se    /JDd#&&x'D'DENN;#58;N;NO F $# 0EE $#s"    B
'A9$B
9
BB


B	c                     SnU R                  [        R                  " USS9[        R                  " SSSS[        R                  S95        g )	Ns2   bplist003B>d                               TrV  r`  ra  rb  rc  re  )rF   rN   rm   r?   rY  r   s     r   r[  +TestBinaryPlistlib.test_load_aware_datetime  sB    @ 	TB!**4AqN	Pr   r]  r^  c           	         [         R                   " SSSS[        R                  " S5      S9nSnU R                  [        U5         [
        R                  " U[
        R                  SS	9  S S S 5        g ! , (       d  f       g = f)
Nr`  ra  rb  rc  r]  re  6can't subtract offset-naive and offset-aware datetimesFrf  )r?   rg  rh  r   r]   rN   r^   r   r   rZ  r   s      r   rt  ITestBinaryPlistlib.test_dump_aware_datetime_without_aware_datetime_option  sc     tQ1&.&7&78M&NPF##Is3NN28#6#6uM 433s   %A33
Bc                     [         R                   " SSSS[         R                  S9nSnU R                  [        U5         [        R
                  " U[        R                  SS9  S S S 5        g ! , (       d  f       g = f)	Nr`  ra  rb  rc  re  r  Frf  )r?   rY  r   r]   rN   r^   r   r  s      r   rw  MTestBinaryPlistlib.test_dump_utc_aware_datetime_without_aware_datetime_option  sU    tQ1X\\BF##Is3NN28#6#6uM 433s   %A--
A;r  N)r  r  r  r  staticmethodr   r  r  r  r  r  r  r  r  r  r  r[  r  r  rg  r  rt  rw  r  r  r   r   r  r    s    %& G G
;=$!"1:4-=PP .(2N2N2PP79N9NNr   r  c                       \ rS rSrS rSrg)TestKeyedArchivei  c                     SSS[        S5      SS.S/ SQS	S
/S./SS[        S5      0S.nU R                  [        R                  " [        S   5      U5        g )Nr  z$nullr   r   zKeyArchive UID Test)pytypez$classz	NS.stringOC_BuiltinPythonUnicode)r  OC_PythonUnicodeNSStringNSObjectOC_PythonStringr   )z
$classnamez$classesz$classhintsNSKeyedArchiverroot)z$versionz$objectsz	$archiverz$topr   )r   rF   rN   rm   r   r   s     r   test_keyed_archive_data(TestKeyedArchive.test_keyed_archive_data  sv     !!f!6 #<! *:$& +A-
4 	(ABDIr   r  N)r  r  r  r  r  r  r  r   r   r  r    s    Jr   r  c                       \ rS rSrS rSrg)MiscTestCasei;  c                 @    SS1n[         R                  " U [        US9  g )NPlistFormatPLISTHEADER)not_exported)r   check__all__rN   )r   r  s     r   test__all__MiscTestCase.test__all__<  s    %}5T8,Gr   r  N)r  r  r  r  r  r  r  r   r   r  r  ;  s    Hr   r  darwinzplutil utility is for Mac osc                       \ rS rSrSrSSSSS.S.rSSSSS.S.rS	S
S.r\SS j5       r	\SS j5       r
S rS rS rS rS rS rS rS rSrg)
TestPlutili@  zplutil_test.plistHr   d   r  )r!   r"   )fnamelnamemarks  S   )HexTypeIntTypeNc                     [        U R                  S5       n[        R                  " U R                  U[        R
                  S9  S S S 5        g ! , (       d  f       g = f)NrJ   rY   )rM   	file_namerN   rO   
propertiesr   )clsfs     r   
setUpClassTestPlutil.setUpClassR  s:     #--%MM#..!1D1DE &%%   /A
Ac                 D    [         R                  " U R                  5        g r   )r   remover  )r  s    r   tearDownClassTestPlutil.tearDownClassX  s    
		#-- r   c                 \    [         R                  " SSU R                  /SSS9R                  $ )Nplutilz-lintT)capture_outputr   )
subprocessrunr  stdoutr   s    r   get_lint_statusTestPlutil.get_lint_status\  s(    ~~x$..ARV]abiiir   c                 L    [         R                  " SSSU R                  /5        g)z1Convert binary file to json using plutil
        r)  -convertjsonNr+  r,  r  r   s    r   convert_to_jsonTestPlutil.convert_to_json_  s     	*fdnnEFr   c                 L    [         R                  " SSSU R                  /5        g)z,Convert file to binary using plutil
        r)  r1  binary1Nr3  r   s    r   convert_to_binTestPlutil.convert_to_bind  s     	*iHIr   c                     [        U R                  S5       n[        R                  " U R                  U[        R
                  S9  SSS5        g! , (       d  f       g= f)z6Write Hex properties to file using writePlist
        rJ   rY   N)rM   r  rN   rO   rB   r   r   r   s     r   write_plTestPlutil.write_pli  s:     $..$'1MM$''1(*=*=> (''r#  c                 ^    U R                  U R                   S3U R                  5       5        g )Nz: OK
)rF   r  r.  r   s    r   test_lint_statusTestPlutil.test_lint_statuso  s'    DNN+62D4H4H4JKr   c                     U R                  5         [        U R                  5       n[        R                  " UR                  5       5      nU R                  X R                  5        S S S 5        g ! , (       d  f       g = fr   )r4  rM   r  r2  rm   readrF   exptected_properties)r   r   ffs      r   check_contentTestPlutil.check_contents  sP    $..!QAFFH%BR!:!:; "!!s   A A//
A=c                     U R                  5         [        U R                  S5       nU R                  [        R
                  " U5      U R                  5        S S S 5        g ! , (       d  f       g = f)NrK   )r8  rM   r  rF   rN   rP   rC  r;  s     r   check_plistlib_parseTestPlutil.check_plistlib_parsez  sI    $..$'1X]]1-t/H/HI (''s   1A!!
A/c                 p   U R                  5         U R                  5         [        U R                  S5       n[        R
                  " UR                  5       5      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        S S S 5        g ! , (       d  f       g = f)Nrr  r  r  r  )	r<  r4  rM   r  r2  rm   rB  rF   get)r   r   ps      r   test_octal_and_hexTestPlutil.test_octal_and_hex  sy    $..#&!

1668$AQUU9-x8QUU9-r2 '&&s   A'B''
B5r  )returnN)r  r  r  r  r  r  rC  rB   classmethodr!  r&  r.  r4  r8  r<  r?  rE  rH  rN  r  r  r   r   r  r  @  s    #ID)
J # #

B
 F F
 ! !jG
J
?L<J3r   r  __main__)(r   r   r   r  r  rN   r   r  r2  r?   r5  r+  binasciir   timerg  r   r   test.supportr   ior   r   r	  r   r[   
a2b_base64r   rR  r  TestCaser
   r  r  r  r  platformr  r  mainr  r   r   <module>r[     sq         	 
          "  x223
 h)) 3+8 39h ,, .@ A* X(( 
* 
UU
n U pn/8$$ n/bON** ONdJx(( J@H8$$ H
 
S\\X-/MNE3"" E3 OE3P zMMO r   