+
    Bic@                     Z   ^ RI t ^ RIt^ RIt^ RIt ! R R]P                  4      t ! R R4      t ! R R]4      t ! R R	]P                  4      t ! R
 R]4      t	 ! R R]4      t
R tR t]! ]4      tRR ltR t ! R R]P                  4      t]R8X  d   ]P$                  ! 4        R# R# )    Nc                   8   a  ] tR t^t o R tR tR tR tRtV t	R# )TestGetProfilec                2    \         P                  ! R 4       R # Nsys
setprofileselfs   &//usr/lib/python3.14/test/test_sys_setprofile.pysetUpTestGetProfile.setUp       t    c                2    \         P                  ! R 4       R # r   r   r
   s   &r   tearDownTestGetProfile.tearDown   r   r   c                N    V P                  \        P                  ! 4       4       R # r   )assertIsNoner   
getprofiler
   s   &r   
test_emptyTestGetProfile.test_empty   s    #..*+r   c                    R  p\         P                  ! V4       V P                  \         P                  ! 4       V4       R# )c                      R # r    argss   *r   fn&TestGetProfile.test_setget.<locals>.fn       r   N)r   r	   assertIsr   )r   r   s   & r   test_setgetTestGetProfile.test_setget   s*    	 	rcnn&+r   r   N)
__name__
__module____qualname____firstlineno__r   r   r   r"   __static_attributes____classdictcell____classdict__s   @r   r   r      s     ,, ,r   r   c                   <   a  ] tR t^t o R tR tRR ltR tRtV t	R# )HookWatcherc                "    . V n         . V n        R # r   )frameseventsr
   s   &r   __init__HookWatcher.__init__   s    r   c                X    VR 8X  g   VR8X  g   VR8X  d   V P                  W!V4       R# R# )callreturn	exceptionN	add_eventr   frameeventargs   &&&&r   callbackHookWatcher.callback   s,    VO #NN5- $r   Nc                B   Vf   \         P                  ! ^4      p V P                  P                  V4      pV P                  P                  WA\        V4      V34       R#   \         d4    \        T P                  4      pT P                  P                  T4        Lfi ; i)zAdd an event to the log.N)	r   	_getframer/   index
ValueErrorlenappendr0   ident)r   r;   r:   r<   framenos   &&&& r   r8   HookWatcher.add_event#   s~    =MM!$E	&kk''.G
 	GE%L#>?	  	&$++&GKKu%	&s   A   ;BBc                    \        V P                  P                  4      \        \         4      .pRV n        V P                   Uu. uF  q"^,          V9  g   K  VNK  	  up# u upi )zRemove calls to add_event().N)rE   r8   __func__r/   r0   )r   
disalloweditems   &  r   
get_eventsHookWatcher.get_events0   sM    DNN334eElC
!%JQz0IJJJs   A!A!)r0   r/   )NN)
r$   r%   r&   r'   r1   r=   r8   rL   r(   r)   r*   s   @r   r-   r-      s!     .@K Kr   r-   c                   `   a  ] tR t^8t o R tR tR tR tR tR t	R]R]R	]R
]	R]	R]	/t
RtV tR# )ProfileSimulatorc                J    Wn         . V n        \        P                  V 4       R # r   )testcasestackr-   r1   )r   rQ   s   &&r   r1   ProfileSimulator.__init__9   s     
T"r   c                8    V P                   V,          ! W4       R # r   )dispatchr9   s   &&&&r   r=   ProfileSimulator.callback>   s    eT)r   c                `    V P                  R V4       V P                  P                  V4       R# )r4   N)r8   rR   rD   r   r:   s   &&r   
trace_callProfileSimulator.trace_callB   s"    vu%

% r   c                ^    V P                  R V4       V P                  P                  4        R# )r5   N)r8   rR   poprX   s   &&r   trace_returnProfileSimulator.trace_returnF   s    x'

r   c                <    V P                   P                  R 4       R# )z2the profiler should never receive exception eventsN)rQ   failrX   s   &&r   trace_exception ProfileSimulator.trace_exceptionJ   s    @	Br   c                    R # r   r   rX   s   &&r   
trace_passProfileSimulator.trace_passN   s    r   r4   r6   r5   c_callc_returnc_exception)rR   rQ   N)r$   r%   r&   r'   r1   r=   rY   r]   ra   rd   rU   r(   r)   r*   s   @r   rO   rO   8   sK     #
*!B 	
_,*Jz
Hr   rO   c                   *   a  ] tR t^[t o RR ltRtV tR# )TestCaseBasec           
        \        WP                  4       4      pV'       dL   WB8w  dD   V P                  R \        P                  ! V4      : R\        P                  ! V4      : 24       R# R# V UUUUu. uF
  w  rVrxWVV3NK  	  uppppV8w  dD   V P                  R \        P                  ! V4      : R\        P                  ! V4      : 24       R# R# u uppppi )zExpected events:
z
Received events:
N)capture_eventsnew_watcherr`   pprintpformat)	r   callableexpected
check_argsr0   rF   r;   rE   r<   s	   &&&&     r   check_eventsTestCaseBase.check_events\   s    *:*:*<=!		#^^H5v~~f7MO P " KQQ&,FGE'&QU]]		#^^H5v~~f7MO P ^Qs   4C
r   N)F)r$   r%   r&   r'   rs   r(   r)   r*   s   @r   rj   rj   [   s     	P 	Pr   rj   c                   z   a  ] tR t^ht 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R tR tRtV tR# )ProfileHookTestCasec                    \        4       # r   )r-   r
   s   &r   rm   ProfileHookTestCase.new_watcheri   s
    }r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                     R # r   r   ps   &r   f*ProfileHookTestCase.test_simple.<locals>.fm   r    r   r4   r5   NrE   rs   r   r}   f_idents   &  r   test_simpleProfileHookTestCase.test_simplel   8    	(!q&'2 (G4  	!r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                     ^^ ,           R#    Nr   r{   s   &r   r}   -ProfileHookTestCase.test_exception.<locals>.fu       aCCr   r4   r5   Nr   r   s   &  r   test_exception"ProfileHookTestCase.test_exceptiont   8    	(!q&'2 (G4  	!r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                 <    ^^ ,           R#   \          d     R# i ; ir   ZeroDivisionErrorr{   s   &r   r}   4ProfileHookTestCase.test_caught_exception.<locals>.f}       1$*d*   	 r4   r5   Nr   r   s   &  r   test_caught_exception)ProfileHookTestCase.test_caught_exception|   :    	+ (!q&'2 (G4  	!r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                 <    ^^ ,           R#   \          d     R# i ; ir   r   r{   s   &r   r}   ;ProfileHookTestCase.test_caught_nested_exception.<locals>.f   r   r   r4   r5   Nr   r   s   &  r   test_caught_nested_exception0ProfileHookTestCase.test_caught_nested_exception   r   r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                     ^^ ,           R# r   r   r{   s   &r   r}   4ProfileHookTestCase.test_nested_exception.<locals>.f   r   r   r4   r5   Nr   r   s   &  r   test_nested_exception)ProfileHookTestCase.test_nested_exception   s:    	(!q&'2  !(G4	  	!r   c                   a R  oV3R lp\        S4      p\        V4      pV P                  V^RV3^RV3^RV3^RV3^RV3^RV3.4       R# )c                     ^^ ,           R# r   r   r{   s   &r   r}   >ProfileHookTestCase.test_exception_in_except_clause.<locals>.f   r   r   c                 t   <  S! V 4       R #   \          d     S! T 4        R #   \          d      R # i ; ii ; ir   r   r|   r}   s   &r   g>ProfileHookTestCase.test_exception_in_except_clause.<locals>.g   s2    /!$ /qT(.$./s    7#3737r4   r5   Nr   r   r   r   g_identr}   s   &   @r   test_exception_in_except_clause3ProfileHookTestCase.test_exception_in_except_clause   sq    		/ ((!q&'2 &'2 (G4 &'2 (G4 (G4  	!r   c           
        a R  oV3R lp\        S4      p\        V4      pV P                  V^RV3^RV3^RV3^RV3^RV3.4       R# )c                     ^^ ,           R# r   r   r{   s   &r   r}   9ProfileHookTestCase.test_exception_propagation.<locals>.f   r   r   c                 f   < S! V 4       V P                  R 4       R#   T P                  R 4       i ; i)falling throughNr7   r   s   &r   r   9ProfileHookTestCase.test_exception_propagation.<locals>.g   s%    1[[!23Q[[!23s    0r4   r5   r   Nr   r   s   &   @r   test_exception_propagation.ProfileHookTestCase.test_exception_propagation   sh    		4 ((!q&'2 &'2 (G4 "3W= (G4	  	!r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                 N    ^^ ,           R#   \          d    ^^ ,            R# i ; ir   r   r{   s   &r   r}   /ProfileHookTestCase.test_raise_twice.<locals>.f   s    1$)acc)s   	 $$r4   r5   Nr   r   s   &  r   test_raise_twice$ProfileHookTestCase.test_raise_twice   s:    	* (!q&'2 (G4  	!r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                 8    ^^ ,           R#   \          d    h i ; ir   r   r{   s   &r   r}   1ProfileHookTestCase.test_raise_reraise.<locals>.f   s    1$+e+s   	 r4   r5   Nr   r   s   &  r   test_raise_reraise&ProfileHookTestCase.test_raise_reraise   s:    	, (!q&'2 (G4  	!r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                     \        4       hr   )	Exceptionr{   s   &r   r}   )ProfileHookTestCase.test_raise.<locals>.f   s
    +r   r4   r5   Nr   r   s   &  r   
test_raiseProfileHookTestCase.test_raise   s8    	(!q&'2 (G4  	!r   c                &  aaa	a
 R  oV3R loV3R lo	V	3R lo
V
3R lp\        S4      p\        S4      p\        S	4      p\        S
4      p\        V4      pV P                  V^RV3^RV3^RV3^RV3^RV3^RV3^RV3^RV3^RV3^RV3.
4       R# )c                      ^^ ,           R# r   r   r   r   r   r}   5ProfileHookTestCase.test_distant_exception.<locals>.f   r   r   c                     < S ! 4        R # r   r   r}   s   r   r   5ProfileHookTestCase.test_distant_exception.<locals>.g       Cr   c                     < S ! 4        R # r   r   r   s   r   h5ProfileHookTestCase.test_distant_exception.<locals>.h   r   r   c                     < S ! 4        R # r   r   r   s   r   i5ProfileHookTestCase.test_distant_exception.<locals>.i   r   r   c                    < S! 4        R # r   r   r|   r   s   &r   j5ProfileHookTestCase.test_distant_exception.<locals>.j   r   r   r4   r5   Nr   r   r   r   r   h_identi_identj_identr}   r   r   r   s   &      @@@@r   test_distant_exception*ProfileHookTestCase.test_distant_exception       					(((((!q&'2 &'2 &'2 &'2 &'2 (G4 (G4 (G4 (G4 (G4
  
	!r   c                   a R  oV3R lp\        S4      p\        V4      pV P                  V^RV3^RV3^RV3^RV3^RV3^RV3^RV3^RV3.4       R# )c               3   :   "   \        ^4       F  p V x  K	  	  R# 5i   Nranger   s    r   r}   -ProfileHookTestCase.test_generator.<locals>.f        1X    c                 $   < S! 4        F  pK  	  R # r   r   r|   r   r}   s   & r   r   -ProfileHookTestCase.test_generator.<locals>.g       S r   r4   r5   Nr   r   s   &   @r   test_generator"ProfileHookTestCase.test_generator   s    		 ((!q&'2 &'2 (G4 &'2 (G4  !&'2 (G4 (G4  	!r   c           
        a R  oV3R lp\        S4      p\        V4      pV P                  V^RVR3^RVR3^RV^ 3^RVR3.RR7       R# )c               3   :   "   \        ^4       F  p V x  K	  	  R# 5ir   r   r   s    r   r}   8ProfileHookTestCase.test_unfinished_generator.<locals>.f  r   r   c                 (   < \        S! 4       4       R # r   )nextr   s   &r   r   8ProfileHookTestCase.test_unfinished_generator.<locals>.g  s    Ir   r4   Nr5   T)rr   r   r   s   &   @r   test_unfinished_generator-ProfileHookTestCase.test_unfinished_generator  so    		 ((!q&'48 &'48 (GQ7 (GT:  -1	 	 	2r   c                   a R  oV3R lp\        S4      p\        V4      pV P                  V^RV3^RV3^RV3^RV3^RV3^RV3^RV3^RV3.4       R# )c               3   :   "   \        ^4       F  p V x  K	  	  R# 5ir   r   r   s    r   r}   2ProfileHookTestCase.test_stop_iteration.<locals>.f  r   r   c                 $   < S! 4        F  pK  	  R # r   r   r   s   & r   r   2ProfileHookTestCase.test_stop_iteration.<locals>.g  r   r   r4   r5   Nr   r   s   &   @r   test_stop_iteration'ProfileHookTestCase.test_stop_iteration  s    		 ((!q&'2 &'2 (G4 &'2 (G4 &'2 (G4 (G4
  
	!r   r   N)r$   r%   r&   r'   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r(   r)   r*   s   @r   rv   rv   h   sU     !!!!	!!&!!!!!8!,2! !r   rv   c                   \   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V tR# )ProfileSimulatorTestCasei,  c                    \        V 4      # r   )rO   r
   s   &r   rm   $ProfileSimulatorTestCase.new_watcher-  s    %%r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                     R # r   r   r{   s   &r   r}   /ProfileSimulatorTestCase.test_simple.<locals>.f1  r    r   r4   r5   Nr   r   s   &  r   r   $ProfileSimulatorTestCase.test_simple0  r   r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                     ^^ ,           R# r   r   r{   s   &r   r}   8ProfileSimulatorTestCase.test_basic_exception.<locals>.f9  r   r   r4   r5   Nr   r   s   &  r   test_basic_exception-ProfileSimulatorTestCase.test_basic_exception8  r   r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                 <    ^^ ,           R#   \          d     R# i ; ir   r   r{   s   &r   r}   9ProfileSimulatorTestCase.test_caught_exception.<locals>.fA  r   r   r4   r5   Nr   r   s   &  r   r   .ProfileSimulatorTestCase.test_caught_exception@  r   r   c                &  aaa	a
 R  oV3R loV3R lo	V	3R lo
V
3R lp\        S4      p\        S4      p\        S	4      p\        S
4      p\        V4      pV P                  V^RV3^RV3^RV3^RV3^RV3^RV3^RV3^RV3^RV3^RV3.
4       R# )c                      ^^ ,           R# r   r   r   r   r   r}   :ProfileSimulatorTestCase.test_distant_exception.<locals>.fJ  r   r   c                     < S ! 4        R # r   r   r   s   r   r   :ProfileSimulatorTestCase.test_distant_exception.<locals>.gL  r   r   c                     < S ! 4        R # r   r   r   s   r   r   :ProfileSimulatorTestCase.test_distant_exception.<locals>.hN  r   r   c                     < S ! 4        R # r   r   r   s   r   r   :ProfileSimulatorTestCase.test_distant_exception.<locals>.iP  r   r   c                    < S! 4        R # r   r   r   s   &r   r   :ProfileSimulatorTestCase.test_distant_exception.<locals>.jR  r   r   r4   r5   Nr   r   s   &      @@@@r   r   /ProfileSimulatorTestCase.test_distant_exceptionI  r   r   c                b   a / oV3R  lp\        V4      pV P                  V^RV3^RV3.4       R# )c                 8   < \         P                  ! / ^*3/ SB  R# *   Ndictgetr|   kwargss   &r   r}   7ProfileSimulatorTestCase.test_unbound_method.<locals>.fh  s    HHR&v&r   r4   r5   Nr   r   r}   r   r#  s   &  @r   test_unbound_method,ProfileSimulatorTestCase.test_unbound_methodf  s>    	'(!q&'2 (G46 	7r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                 .    \         P                  4        R # r   r  r{   s   &r   r}   ?ProfileSimulatorTestCase.test_unbound_method_no_args.<locals>.fp  s    HHJr   r4   r5   Nr   r   s   &  r   test_unbound_method_no_args4ProfileSimulatorTestCase.test_unbound_method_no_argso  s8    	(!q&'2 (G46 	7r   c                V    R  p\        V4      pV P                  V^RV3^RV3.4       R# )c                 :    \         P                  \        ^*4       R# r  r   r!  printr{   s   &r   r}   DProfileSimulatorTestCase.test_unbound_method_invalid_args.<locals>.fx  s    HHUBr   r4   r5   Nr   r   s   &  r    test_unbound_method_invalid_args9ProfileSimulatorTestCase.test_unbound_method_invalid_argsw  s8    	 (!q&'2 (G46 	7r   c                b   a / oV3R  lp\        V4      pV P                  V^RV3^RV3.4       R# )c                 4   < \         P                  ! R/ SB  R # )Nr   r  r"  s   &r   r}   GProfileSimulatorTestCase.test_unbound_method_no_keyword_args.<locals>.f  s    HHvr   r4   r5   Nr   r%  s   &  @r   #test_unbound_method_no_keyword_args<ProfileSimulatorTestCase.test_unbound_method_no_keyword_args  s>    	(!q&'2 (G46 	7r   c                b   a / oV3R  lp\        V4      pV P                  V^RV3^RV3.4       R# )c                 @   < \         P                  ! \        ^*3/ SB  R# r  r/  r"  s   &r   r}   LProfileSimulatorTestCase.test_unbound_method_invalid_keyword_args.<locals>.f  s    HHUB)&)r   r4   r5   Nr   r%  s   &  @r   (test_unbound_method_invalid_keyword_argsAProfileSimulatorTestCase.test_unbound_method_invalid_keyword_args  s>    	*(!q&'2 (G46 	7r   r   N)r$   r%   r&   r'   rm   r   r	  r   r   r&  r+  r2  r7  r<  r(   r)   r*   s   @r   r   r   ,  s<     &!!!!:77777 7r   r   c                     \        V R 4      '       d   V P                  pMV P                  pVP                  VP                  3# )f_code)hasattrr?  __code__co_firstlinenoco_name)functioncodes   & r   rE   rE     s8    x""  ,,r   c                 &    V ! V4       R #     R # ; ir   r   )r}   r|   s   &&r   protectrG    s    	
1Ds    c                    Vf   \        4       p\        P                  ! 4       p\        P                  ! 4         \        P
                  ! VP                  4       \        W4       \        P
                  ! R 4       V'       d   \        P                  ! 4        TP                  4       ^R #   T'       d   \        P                  ! 4        i i ; i)N)
r-   gc	isenableddisabler   r	   r=   rG  enablerL   )rp   r|   old_gcs   && r   rl   rl     s    yM \\^FJJLqzz"tIIK<<>!B IIK s   AB+ + Cc                 D    ^ RI pVP                   ! \        V 4      4       R# )r   N)rn   rl   )rp   rn   s   & r   show_eventsrP    s    
MM.*+r   c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	TestEdgeCasesi  c                    V P                  \        P                  \        P                  ! 4       4       \        P                  ! R 4       R # r   )
addCleanupr   r	   r   r
   s   &r   r   TestEdgeCases.setUp  s'    (89tr   c                   a R  pR o ! V3R lR4      p\         P                  ! V! 4       4       \         P                  ! V4       V P                  \         P                  ! 4       S4       R# )c                      R # r   r   r   s   *r   foo*TestEdgeCases.test_reentrancy.<locals>.foo      r   c                      R # r   r   r   s   *r   bar*TestEdgeCases.test_reentrancy.<locals>.bar  rZ  r   c                   4   <a  ] tR tRt o R tV3R ltRtV tR# )(TestEdgeCases.test_reentrancy.<locals>.Ai  c                    R # r   r   )r   r   s   &*r   __call__1TestEdgeCases.test_reentrancy.<locals>.A.__call__  s    r   c                4   < \         P                  ! S4       R # r   r   )r   r\  s   &r   __del__0TestEdgeCases.test_reentrancy.<locals>.A.__del__  s    s#r   r   N)r$   r%   r&   r'   ra  rd  r(   r)   )r+   r\  s   @r   Ar_    s     $ $r   rf  N)r   r	   assertEqualr   )r   rX  rf  r\  s   &  @r   test_reentrancyTestEdgeCases.test_reentrancy  sJ    			$ 	$ 	qss)3/r   c                    R  p\         P                  ! V4       ?\         P                  ! \         P                  ! 4       4       R# )c                      R # r   r   r   s   *r   rX  +TestEdgeCases.test_same_object.<locals>.foo  rZ  r   N)r   r	   r   )r   rX  s   & r   test_same_objectTestEdgeCases.test_same_object  s+    	 	ss~~'(r   c                   R  pR\         P                  ! 4       n        \         P                  ! 4       p\         P                  ! R 4       V! 4        \         P                  ! V4       \         P
                  ! R 4       V! 4        R# )c                      R # r   r   r   r   r   r}   9TestEdgeCases.test_profile_after_trace_opcodes.<locals>.f  rZ  r   Tc                      R # r   r   r   s   *r   <lambda>@TestEdgeCases.test_profile_after_trace_opcodes.<locals>.<lambda>  s    4r   c                      R # r   r   r   s   *r   rs  rt    s    Tr   N)r   r@   f_trace_opcodesgettracesettracer	   )r   r}   
prev_traces   &  r    test_profile_after_trace_opcodes.TestEdgeCases.test_profile_after_trace_opcodes  sR    	 +/'\\^
'(	Z )*	r   c                h  a  ! R  R4      p. o\         P                  ! V3R l4       V! 4       P                  4        \         P                  ! R4       V P                  S. RO4        ! R R4      p. o\         P                  ! V3R l4       V! 4       P                  ^R R7       \         P                  ! R4       V P                  S. RO4       . o\         P                  ! V3R	 l4       RpV! 4       P                  pV! VR
R /  \         P                  ! R4       V P                  S. RO4       R# )c                   &    ] tR tRt]! ]4      tRtR# )4TestEdgeCases.test_method_with_c_function.<locals>.Ai  r   N)r$   r%   r&   r'   classmethodreprr}   r(   r   r   r   rf  r~    s    D!Ar   rf  c                 &   < SP                  V4      # r   rD   r:   r;   r   r0   s   &&&r   rs  ;TestEdgeCases.test_method_with_c_function.<locals>.<lambda>      &--2Fr   Nc                   &    ] tR tRt]! ]4      tRtR# )4TestEdgeCases.test_method_with_c_function.<locals>.Bi  r   N)r$   r%   r&   r'   r  maxr}   r(   r   r   r   Br    s    C Ar   r  c                 &   < SP                  V4      # r   r  r  s   &&&r   rs  r    r  r   c                     ^ # r   r   xs   &r   rs  r        qr   )keyc                 &   < SP                  V4      # r   r  r  s   &&&r   rs  r    r  r   r  c                     ^ # r  r   r  s   &r   rs  r    r  r   )rf   rg   rf   )rf   r4   r5   r4   r5   rg   rf   )r   )r4   r5   r4   r5   rf   )r   r	   r}   rg  )r   rf  r  r   mr0   s   &    @r   test_method_with_c_function)TestEdgeCases.test_method_with_c_function  s    
	" 	"FG	t!AB	! 	!FG	a[!t	
 FGCEE	4![!t 		
r   r   N)r$   r%   r&   r'   r   rh  rm  rz  r  r(   r)   r*   s   @r   rR  rR    s#     0$)
3
 3
r   rR  __main__r   )rJ  rn   r   unittestTestCaser   r-   rO   rj   rv   r   rE   rG  protect_identrl   rP  rR  r$   mainr   r   r   <module>r     s    	  
 ,X&& ,"K K@ 
{  
F
P8$$ 
PA!, A!Hb7| b7J- g ",
_
H%% _
D zMMO r   