+
    Bi:                     r   R t ^ RIt^ RIt^ RIt^ RIt ^ RIHt  ^ RIHt ^ RI	H
t
  ! R R4      t ! R	 R
]4      t] ! R R]4      4       t] ! R R]4      4       t ! R R]4      t ! R R]4      t ! R R4      t ! R R]]P$                  4      t ! R R4      t ! R R]]4      t ! R R]]4      t ! R R]]4      t ! R R ]]P$                  4      t ! R! R"4      t ! R# R$]]4      t ! R% R&]]4      t ! R' R(]]4      t ! R) R*]]P$                  4      t ! R+ R,]4      t] ! R- R.]4      4       t] ! R/ R0]4      4       t ] ! R1 R2]]4      4       t!]
PD                   ! R3 R4]]P$                  4      4       t#]$R58X  d   ]PJ                  ! 4        R# R#   ] d    R t ELi ; i  ] d    R t ELi ; i)6zB
Tests for object finalization semantics, as outlined in PEP 442.
N)with_tp_delc                 $     ! R  R\         4      pV# )c                   &   a  ] tR t^t o R tRtV tR# )with_tp_del.<locals>.Cc                .    \         P                  ! R 4      h)zrequires _testcapi.with_tp_delunittestSkipTestclsargskwargss   &*,-/usr/lib/python3.14/test/test_finalization.py__new__with_tp_del.<locals>.C.__new__   s    ''(HII     N__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__s   @r   Cr      s     J Jr   r   )objectr   r   s   & r   r   r      s    	J 	J r   )
without_gcc                      ! R  R4      pV# )c                   &   a  ] tR t^t o R tRtV tR# )without_gc.<locals>.Cc                .    \         P                  ! R 4      h)zrequires _testcapi.without_gcr   r
   s   &*,r   r   without_gc.<locals>.C.__new__   s    ''(GHHr   r   Nr   r   s   @r   r   r"      s     I Ir   r   r   r   s   & r   r   r      s    	I 	I r   )supportc                      a  ] tR t^t o Rt. t. t. t. tRt	Rt
]R 4       t]]P                  R 4       4       tR tR tR tRtV tR	# )
NonGCSimpleBasezX
The base class for all the objects under test, equipped with various
testing features.
Fc                <   V P                   P                  4        V P                  P                  4        \        P                  P                  4        \        P
                  ! 4        V P                  P                  4        V P                  P                  4        R # N)	survivorsclearerrorsgcgarbagecollect	del_callstp_del_callsr   s   &r   _cleanupNonGCSimpleBase._cleanup.   s]    







 r   c              #    "   \         P                  ! 4       ;_uu_ 4        V P                  P                  4        V P                  P                  4        R\
        n         Rx  V P                  '       d   V P                  ^ ,          h R\
        n        V P                  4         RRR4       R#   R\
        n        T P                  4        i ; i  + '       g   i     R# ; i5i)z9
A context manager to use around all finalization tests.
FNT)	r%   
disable_gcr0   r+   r1   r'   	_cleaningr,   r3   r2   s   &r   testNonGCSimpleBase.test7   s      !!MM!""$(-O%:::**Q-'  -1) "! -1) "!!s5   C%A C!)B1C'
C%1CCC"		C%c                    R# )z(
Check the object is sane (non-broken).
Nr   selfs   &r   check_sanityNonGCSimpleBase.check_sanityI       r   c                     V P                   '       gG   V P                  P                  \        V 4      4       V P	                  4        V P                  4        R# R#   \         d'   pT P                  P                  T4        Rp?R# Rp?ii ; i)zq
PEP 442 finalizer.  Record that this was called, check the
object is in a sane state, and invoke a side effect.
N)r7   r0   appendidr=   side_effect	Exceptionr,   r<   es   & r   __del__NonGCSimpleBase.__del__N   sj    
	">>>%%bh/!!#  " "  	"KKq!!	"   A AA B'BBc                    R# )z&
A side effect called on destruction.
Nr   r;   s   &r   rC   NonGCSimpleBase.side_effect[   r?   r   r   N)r   r   r   r   __doc__r*   r0   r1   r,   r7   	__slots__classmethodr3   
contextlibcontextmanagerr8   r=   rG   rC   r   r   r   s   @r   r'   r'      sr     
 IILFII! !    
" r   r'   c                   ,   a  ] tR t^at o R tR tRtV tR# )
SimpleBasec                &    \        V 4      V n        R # r)   )rB   id_r;   s   &r   __init__SimpleBase.__init__c   s    d8r   c                >    V P                   \        V 4      8X  g   Q hR # r)   )rT   rB   r;   s   &r   r=   SimpleBase.check_sanityf   s    xx2d8###r   )rT   N)r   r   r   r   rU   r=   r   r   r   s   @r   rR   rR   a   s     $ $r   rR   c                       ] tR t^jtRtRtR# )NonGCr   N)r   r   r   r   rM   r   r   r   r   rZ   rZ   j   s    Ir   rZ   c                   *   a  ] tR t^nt o RtR tRtV tR# )NonGCResurrectorc                <    V P                   P                  V 4       R# z6
Resurrect self by storing self in a class-wide list.
Nr*   rA   r;   s   &r   rC   NonGCResurrector.side_effectr        	d#r   r   N)r   r   r   r   rM   rC   r   r   r   s   @r   r\   r\   n   s     I$ $r   r\   c                       ] tR t^xtRtR# )Simpler   Nr   r   r   r   r   r   r   r   rc   rc   x       r   rc   c                   &   a  ] tR t^|t o R tRtV tR# )SimpleResurrectorc                <    V P                   P                  V 4       R# r^   r_   r;   s   &r   rC   SimpleResurrector.side_effect~   ra   r   r   Nr   r   r   r   rC   r   r   r   s   @r   rg   rg   |   s     $ $r   rg   c                   J   a  ] tR t^t o R tR tR tR tR tR t	R t
RtV tR	# )
TestBasec                d    \         P                  R ,          V n        . \         P                  R &   R# ):NNNN)r-   r.   old_garbager;   s   &r   setUpTestBase.setUp   s    ::a=

1r   c                     V P                  \        P                  . 4       V =\        P                  ! 4        R #   T =\        P                  ! 4        i ; ir)   )assertEqualr-   r.   rn   r/   r;   s   &r   tearDownTestBase.tearDown   s=    	RZZ, JJL  JJLs	    ; Ac                j    V P                  \        \        P                  4      \        V4      4       R # r)   )rr   sortedrR   r0   r<   idss   &&r   assert_del_callsTestBase.assert_del_calls   s!    
 4 45vc{Cr   c                j    V P                  \        \        P                  4      \        V4      4       R # r)   )rr   rv   rR   r1   rw   s   &&r   assert_tp_del_callsTestBase.assert_tp_del_calls   s!    
 7 78&+Fr   c                x    V P                  \        R  \        P                   4       4      \        V4      4       R# )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir)   rB   .0xs   & r   	<genexpr>,TestBase.assert_survivors.<locals>.<genexpr>   s     D/C!1/C   N)rr   rv   rR   r*   rw   s   &&r   assert_survivorsTestBase.assert_survivors   s'    Dz/C/CDDfSkRr   c                x    V P                  \        R  \        P                   4       4      \        V4      4       R# )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir)   r   r   s   & r   r   *TestBase.assert_garbage.<locals>.<genexpr>   s     :z!1zr   N)rr   rv   r-   r.   rw   s   &&r   assert_garbageTestBase.assert_garbage   s%    :rzz::F3KHr   c                B    \         P                  P                  4        R # r)   )rR   r*   r+   r;   s   &r   clear_survivorsTestBase.clear_survivors   s    ""$r   )rn   N)r   r   r   r   ro   rs   ry   r|   r   r   r   r   r   r   s   @r   rl   rl      s1     DGSI% %r   rl   c                   x   a  ] tR t^t o RtR tR t]P                  R 4       t	]P                  R 4       t
RtV tR# )SimpleFinalizationTestz&
Test finalization without refcycles.
c                   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  . 4       V P                  V! 4       R 4       \        P                  ! 4        V P                  V4       V P                  . 4       R R R 4       R #   + '       g   i     R # ; ir)   )rR   r8   rc   rB   weakrefrefr-   r/   ry   r   assertIsr<   srx   wrs   &   r   test_simple"SimpleFinalizationTest.test_simple   s    __Aa5'CQBJJL!!#&!!"%MM"$%JJL!!#&!!"%    B3CC+	c                (   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  V4       V P                  V! 4       R 4       V P                  4        \        P                  ! 4        V P                  V4       V P                  . 4       R R R 4       V P                  X! 4       R 4       R #   + '       g   i     L); ir)   )rR   r8   rg   rB   r   r   r-   r/   ry   r   assertIsNotr   r   r   s   &   r   test_simple_resurrect,SimpleFinalizationTest.test_simple_resurrect   s    __!#Aa5'CQBJJL!!#&!!#&RT4(  "JJL!!#&!!"%  	bdD! s   CDD	c                   \         P                  4       ;_uu_ 4        \        4       pV P                  \        P
                  ! V4      4       \        V4      .p?\        P                  ! 4        V P                  V4       V P                  . 4       \        P                  ! 4        V P                  V4       V P                  . 4       R R R 4       R #   + '       g   i     R # ; ir)   )
rR   r8   rZ   assertFalser-   
is_trackedrB   r/   ry   r   r<   r   rx   s   &  r   test_non_gc"SimpleFinalizationTest.test_non_gc   s    __AR]]1-.a5'CJJL!!#&!!"%JJL!!#&!!"% s   B+CC#	c                   \         P                  4       ;_uu_ 4        \        4       pV P                  \        P
                  ! V4      4       \        V4      .p?\        P                  ! 4        V P                  V4       V P                  V4       V P                  4        \        P                  ! 4        V P                  V^,          4       V P                  V4       RRR4       R#   + '       g   i     R# ; i   N)rR   r8   r\   r   r-   r   rB   r/   ry   r   r   r   s   &  r   test_non_gc_resurrect,SimpleFinalizationTest.test_non_gc_resurrect   s    __ "AR]]1-.a5'CJJL!!#&!!#&  "JJL!!#'*!!#& s   CC))C:	r   N)r   r   r   r   rL   r   r   r%   cpython_onlyr   r   r   r   r   s   @r   r   r      sH     &"  & & ' 'r   r   c                   >   a a ] tR t^t oV 3R ltV 3R ltRtVtV ;t# )SelfCycleBasec                0   < \         SV `  4        W n        R # r)   )superrU   r   r<   	__class__s   &r   rU   SelfCycleBase.__init__   s    r   c                H   < \         SV `  4        V P                  V J g   Q hR # r)   )r   r=   r   r   s   &r   r=   SelfCycleBase.check_sanity   s     xx4r   r   )	r   r   r   r   rU   r=   r   r   __classcell__r   r   s   @@r   r   r      s        r   r   c                       ] tR t^tRtR# )SimpleSelfCycler   Nrd   r   r   r   r   r      re   r   r   c                       ] tR t^tRtR# )SelfCycleResurrectorr   Nrd   r   r   r   r   r      re   r   r   c                   &   a  ] tR t^t o R tRtV tR# )SuicidalSelfCyclec                    RV n         R# )'
Explicitly break the reference cycle.
Nr   r;   s   &r   rC   SuicidalSelfCycle.side_effect   s     r   r   Nrj   r   s   @r   r   r      s      r   r   c                   6   a  ] tR t^t o RtR tR tR tRtV t	R# )SelfCycleFinalizationTestzL
Test finalization of an object having a single cyclic reference to
itself.
c                   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  . 4       V P                  V! 4       R 4       \        P                  ! 4        V P                  V4       V P                  . 4       R R R 4       R #   + '       g   i     R # ; ir)   )rR   r8   r   rB   r   r   r-   r/   ry   r   r   r   s   &   r   r   %SelfCycleFinalizationTest.test_simple  s    __!Aa5'CQBJJL!!#&!!"%MM"$%JJL!!#&!!"% r   c                *   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  V4       V P                  V! 4       R 4       V P                  4        \        P                  ! 4        V P                  V4       V P                  . 4       V P                  V! 4       R 4       R R R 4       R #   + '       g   i     R # ; ir)   )rR   r8   r   rB   r   r   r-   r/   ry   r   r   r   r   s   &   r   r   /SelfCycleFinalizationTest.test_simple_resurrect  s    __$&Aa5'CQBJJL!!#&!!#&MM"$%   "JJL!!#&!!"%MM"$%! s   CDD	c                
   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  . 4       V P                  V! 4       R 4       \        P                  ! 4        V P                  V4       V P                  . 4       V P                  V! 4       R 4       R R R 4       R #   + '       g   i     R # ; ir)   )rR   r8   r   rB   r   r   r-   r/   ry   r   r   r   s   &   r   test_simple_suicide-SelfCycleFinalizationTest.test_simple_suicide%  s     __!#Aa5'CQBJJL!!#&!!"%MM"$%JJL!!#&!!"%MM"$% s   C
C11D	r   N)
r   r   r   r   rL   r   r   r   r   r   r   s   @r   r   r      s     
&&(& &r   r   c                   8   a a ] tR tRt oR tV 3R ltRtVtV ;t# )ChainedBasei7  c                ,    R V n         Wn        Wn        R# )FNsuicidedleftright)r<   r   s   &&r   chainChainedBase.chain9  s    	
r   c                  < \         SV `  4        V P                  '       d#   V P                  e   Q hV P                  e   Q hR # V P                  pVP                  '       d   VP                  e   Q hMVP                  V J g   Q hV P                  pVP                  '       d   VP                  e   Q hR # VP                  V J g   Q hR # r)   )r   r=   r   r   r   )r<   r   r   r   s   &  r   r=   ChainedBase.check_sanity>  s    ===99$$$::%%%99D}}}zz)))zzT)))JJE~~~zz)))zzT)))r   )r   r   )	r   r   r   r   r   r=   r   r   r   r   s   @@r   r   r   7  s     
* *r   r   c                       ] tR tRtRtR# )SimpleChainediO  r   Nrd   r   r   r   r   r   O  re   r   r   c                       ] tR tRtRtR# )ChainedResurrectoriR  r   Nrd   r   r   r   r   r   R  re   r   r   c                   &   a  ] tR tRt o R tRtV tR# )SuicidalChainediU  c                0    RV n         RV n        RV n        R# )r   TNr   r;   s   &r   rC   SuicidalChained.side_effectW  s     	
r   )r   r   r   Nrj   r   s   @r   r   r   U  s      r   r   c                   f   a  ] tR tRt o RtR tR tR tR tR t	R t
R	 tR
 tR tR tR tRtV tR# )CycleChainFinalizationTesti`  z
Test finalization of a cyclic chain.  These tests are similar in
spirit to the self-cycle tests above, but the collectable object
graph isn't trivial anymore.
c                    V Uu. uF	  q"! 4       NK  	  pp\        \        V4      4       F'  pW4,          P                  W4^,
          ,          4       K)  	  V# u upi )   )rangelenr   )r<   classesr   nodesis   &&   r   build_chain&CycleChainFinalizationTest.build_chaing  sI    ")*'3'*s5z"AHNN51:& # +s   Ac           	     d   \        V4      p\        P                  4       ;_uu_ 4        V P                  V4      pV Uu. uF  p\	        V4      NK  	  ppV Uu. uF  p\
        P                  ! V4      NK  	  pp?\        P                  ! 4        V P                  V4       V P                  . 4       T P                  V Uu. uF	  qw! 4       NK  	  upR .V,          4       \        P                  ! 4        V P                  V4       R R R 4       R # u upi u upi u upi   + '       g   i     R # ; ir)   )r   rR   r8   r   rB   r   r   r-   r/   ry   r   rr   )r<   r   Nr   r   rx   wrsr   s   &&      r   check_non_resurrecting_chain7CycleChainFinalizationTest.check_non_resurrecting_chainm  s    L__$$W-E"'(%Q2a5%C(+015a7;;q>5C1JJL!!#&!!"%S1SrbdS1D6A:>JJL!!#& (1
 2 s5   DDDD7A	D D6DDD/	c           	     *   \        V4      p\        P                  4       ;_uu_ 4        V P                  V4      p\        V4      pV Uu. uF  p\	        V4      NK  	  ppV Uu. uF&  p\        V\        4      '       g   K  \	        V4      NK(  	  ppV Uu. uF  p\        P                  ! V4      NK  	  pp?\        P                  ! 4        V P                  V4       V P                  V4       T P                  V Uu. uF	  q! 4       NK  	  upR .V,          4       V P                  4        \        P                  ! 4        V P                  V4       V P                  . 4       R R R 4       R # u upi u upi u upi u upi   + '       g   i     R # ; ir)   )r   rR   r8   r   rB   
isinstancerg   r   r   r-   r/   ry   r   rr   r   )	r<   r   r   r   r   rx   survivor_idsr   r   s	   &&       r   check_resurrecting_chain3CycleChainFinalizationTest.check_resurrecting_chain{  s-   L__$$W-EE
A"'(%Q2a5%C(+0U5aJqBS4TEBqE5LU+015a7;;q>5C1JJL!!#&!!,/S1SrbdS1D6A:>  "JJL!!#&!!"%  )U1 2 sI   !F	E-F#E2 E2FE74A	F=E<AF-FF	c                @    V P                  \        .^,          4       R#    N)r   r   r;   s   &r   test_homogenous*CycleChainFinalizationTest.test_homogenous  s    ))=/A*=>r   c                @    V P                  \        .^,          4       R# r   )r   r   r;   s   &r   test_homogenous_resurrect4CycleChainFinalizationTest.test_homogenous_resurrect  s    %%'9&:Q&>?r   c                @    V P                  \        .^,          4       R# r   )r   r   r;   s   &r   test_homogenous_suicidal3CycleChainFinalizationTest.test_homogenous_suicidal  s    ))?*;a*?@r   c                J    V P                  \        \        .^,          4       R# r   r   r   r   r;   s   &r   test_heterogenous_suicidal_one9CycleChainFinalizationTest.test_heterogenous_suicidal_one  s    ))?M*JQ*NOr   c                f    V P                  \        .^,          \        .^,          ,           4       R# r   r   r;   s   &r   test_heterogenous_suicidal_two9CycleChainFinalizationTest.test_heterogenous_suicidal_two  s'    ))!]Oa$77	9r   c                J    V P                  \        \        .^,          4       R# r   )r   r   r   r;   s   &r   test_heterogenous_resurrect_one:CycleChainFinalizationTest.test_heterogenous_resurrect_one  s    %%'9=&IA&MNr   c                T    V P                  \        \        \        .^,          4       R# r   r   r   r   r   r;   s   &r   test_heterogenous_resurrect_two:CycleChainFinalizationTest.test_heterogenous_resurrect_two  s     %%@1D	Fr   c                    V P                  \        .^,          \        .^,          ,           \        .^,          ,           4       R# r   r	  r;   s   &r   !test_heterogenous_resurrect_three<CycleChainFinalizationTest.test_heterogenous_resurrect_three  s6    %% 1$'::o=NQR=RR	Tr   r   N)r   r   r   r   rL   r   r   r   r   r   r   r   r  r  r
  r  r   r   r   s   @r   r   r   `  sM     '&&?@AP9OFT Tr   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )
LegacyBasei  c                     V P                   '       g7   V P                  P                  \        V 4      4       V P	                  4        R # R #   \
         d'   pT P                  P                  T4        R p?R # R p?ii ; ir)   )r7   r0   rA   rB   r=   rD   r,   rE   s   & r   rG   LegacyBase.__del__  s`    	" >>>%%bh/!!# "  	"KKq!!	"s   A 4A A=A88A=c                     V P                   '       gG   V P                  P                  \        V 4      4       V P	                  4        V P                  4        R# R#   \         d'   pT P                  P                  T4        Rp?R# Rp?ii ; i)z:
Legacy (pre-PEP 442) finalizer, mapped to a tp_del slot.
N)r7   r1   rA   rB   r=   rC   rD   r,   rE   s   & r   
__tp_del__LegacyBase.__tp_del__  sl    	">>>!!((D2!!#  " "  	"KKq!!	"rI   r   N)r   r   r   r   rG   r  r   r   r   s   @r   r  r    s     "
" 
"r   r  c                       ] tR tRtRtR# )Legacyi  r   Nrd   r   r   r   r  r        r   r  c                   &   a  ] tR tRt o R tRtV tR# )LegacyResurrectori  c                <    V P                   P                  V 4       R# r^   r_   r;   s   &r   rC   LegacyResurrector.side_effect  ra   r   r   Nrj   r   s   @r   r  r    s     $ $r   r  c                       ] tR tRtRtR# )LegacySelfCyclei  r   Nrd   r   r   r   r  r    r  r   r  c                   H   a a ] tR tRt oRtV 3R ltR tR tR tRt	Vt
V ;t# )LegacyFinalizationTesti  z-
Test finalization of objects with a tp_del.
c                   < \         P                  P                  4        \         P                  ! 4        \        SV `  4        R # r)   )r-   r.   r+   r/   r   rs   r   s   &r   rs   LegacyFinalizationTest.tearDown  s)     	




r   c                   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  V4       V P                  . 4       V P                  V! 4       R 4       \        P                  ! 4        V P                  V4       V P                  V4       R R R 4       R #   + '       g   i     R # ; ir)   )rR   r8   r  rB   r   r   r-   r/   ry   r|   r   r   r   s   &   r   test_legacy"LegacyFinalizationTest.test_legacy  s    __Aa5'CQBJJL!!#&$$S)!!"%MM"$%JJL!!#&$$S) s   CC++C<	c                z   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  V4       V P                  V4       V P                  V4       V P                  V! 4       R 4       V P                  4        \        P                  ! 4        V P                  V4       V P                  V^,          4       V P                  V4       R R R 4       V P                  X! 4       R 4       R #   + '       g   i     L); ir)   )rR   r8   r  rB   r   r   r-   r/   ry   r|   r   r   r   r   s   &   r   test_legacy_resurrect,LegacyFinalizationTest.test_legacy_resurrect  s    __!#Aa5'CQBJJL!!#&$$S)!!#&MM"$%  "JJL!!#&$$S1W-!!#&   	bdD!! s   C,D**D:	c                8   \         P                  4       ;_uu_ 4        \        4       p\        V4      .p\        P
                  ! V4      p?\        P                  ! 4        V P                  . 4       V P                  . 4       V P                  . 4       V P                  V4       V P                  V! 4       R 4       R \        P                  ^ ,          n        R R R 4       V P                  . 4       V P                  X! 4       R 4       R #   + '       g   i     L:; ir)   )rR   r8   r  rB   r   r   r-   r/   ry   r|   r   r   r   r.   r   r   s   &   r   test_legacy_self_cycle-LegacyFinalizationTest.test_legacy_self_cycle  s    __!Aa5'CQBJJL!!"%$$R(!!"%$RT4( $BJJqM  	BbdD! s   B:D		D	r   )r   r   r   r   rL   rs   r$  r'  r*  r   r   r   r   s   @@r   r   r     s#     *"&" "r   r   __main__)&rL   rO   r-   r   r   	_testcapir   ImportErrorr   r8   r%   r'   rR   rZ   r\   rc   rg   rl   TestCaser   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r   r   mainr   r   r   <module>r1     s    	  %$ ? ?D$ $ O   $ $ $	Z 	$
 $% %<>'Xx'8'8 >'B   	mV 		=*; 	v 7&(*;*; 7&t* *0	K 		&7 	k6 GT8+<+< GTZ" "0 	Z 	 	 $
 $ $ 	mZ 	 	 	>"Xx'8'8 >" >"B zMMO [    s"   F F( 
F%$F%(
F65F6