
    MZdQ                        d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlZd dlmZm	Z	m
Z
 d dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZmZ d dl m!Z! d d	l"m#Z#m$Z$  ed
      \  Z%Z&Z' G d de      Z(e jR                  dejT                  e(   fd       Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8y)    N)Enum)Callable)AddImpliessqrt)MulPow)SpisymbolsFunctionRationalIntegerSymbolEqNeLeLtGtGe)	Piecewiseexpsincossmtlib_code)raisesFailedzx,y,zc                       e Zd Z ej                  dej
                        Z ej                  dej
                        Z ej                  dej
                        Zy)_Wz2Could not infer type of `.+`. Defaulting to float.z.Non-Symbol/Function `.+` will not be declared.zPNon-Boolean expression `.+` will not be asserted. Converting to SMTLib verbatim.N)	__name__
__module____qualname__recompileIDEFAULTING_TO_FLOATWILL_NOT_DECLAREWILL_NOT_ASSERT     B/usr/lib/python3/dist-packages/sympy/printing/tests/test_smtlib.pyr    r       sR    $"**%Y[][_[_`!rzz"RTVTXTXY bjj!suwuyuyzOr+   r    expectedc           	   #     K   g }|j                   }| g }t        t        j                  ||             D ]h  \  }\  }}|s|d| d| dgz  }|s|d| d|j                   dgz  }3|j
                  j                  |      rO|d| d| d|j                   dgz  }j |rt        dj                  |            y w)	N[z] Received unexpected warning `z`.z$] Did not receive expected warning `z] Warning `z` does not match expected .
)	append	enumerate	itertoolszip_longestnamevaluematchr   join)r-   warnslog_warnerrorsiwes          r,   _check_warnsr@      s      E||H
NFy44UHEF Q	6Aq1#<QCrBCCF1#A!&&LMMFq!1#[+EaffXQOPPFQ VDIIf-..vs   BB>9B>c                  |   t        t        j                  gdz        5 } t        t	        d      |       dk(  sJ t        t	        d      |       dk(  sJ 	 d d d        t        g       5 } t        t	        d            dk(  sJ t        t	        d            dk(  sJ 	 d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)N   C   r;   67z-1)r@   r    r)   r   r   r>   s    r,   test_IntegerrH   ,   s    	r))*Q.	/ <172;3t;;;72;3t;;;< 
b	 0Q72;'4///72;'4///0 0< <0 0s   7B&)3B2&B/2B;c                  \   t        t        j                  gdz        5 } t        t	        dd      |       dk(  sJ t        t	        dd      |       dk(  sJ t        t	        dd	      |       d
k(  sJ t        t	        dd	      |       dk(  sJ 	 d d d        t        t        j
                  t        j                  gdz        5 } t        t        t	        dd      z   d|       dk(  sJ t        t	        dd      t        z  |       dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N         rD   z(/ 3 7)   	   2iz(/ -3 7)rB   Fauto_declarer;   z(+ (/ 3 7) x)z$(declare-const x Real)
(* (/ 3 7) x))r@   r    r)   r   r   r'   xrG   s    r,   test_RationalrT   5   s1   	r))*Q.	/ F18Aq>A6)CCC8B?Q73>>>8Ar?Q7:EEE8B+a8IEEE	F 
r--r/A/ABQF	G N11x1~-EANRaaaa8Aq>A-: ?N N 	N NN NF FN Ns   A1DAD"D"D+c                  &   t        t        j                  gdz        5 } t        t	        t
        t              d|       dk(  sJ t        t        t
        t              d|       dk(  sJ t        t        t
        t              d|       dk(  sJ t        t        t
        t              d|       dk(  sJ t        t        t
        t              d|       dk(  sJ t        t        t
        t              d|       d	k(  sJ 	 d d d        y # 1 sw Y   y xY w)
N   FrQ   z(assert (= x y))z(assert (not (= x y)))z(assert (<= x y))z(assert (< x y))z(assert (> x y))z(assert (>= x y)))r@   r    r'   r   r   rS   yr   r   r   r   r   rG   s    r,   test_RelationalrX   B   s    	r--.3	4 \2a8%!DHZZZZ2a8%!DH````2a8%!DH[[[[2a8%!DHZZZZ2a8%!DHZZZZ2a8%!DH[[[[\ \ \s   CDDc            	      h   t        t        j                  t        j                  g      5 } t	        t        t              t        t              z  d|       dk(  sJ 	 d d d        t        t        j                  g      5 } t	        t        t              t        t        t        t        it        dit        j                  di|       dk(  sJ 	 d d d        t        d      }t        t        j                  g      5 } t	         |t              |t        t        gt         f   i| 	      d
k(  sJ 	 d d d        t        g       5 } t	         |t              |t        t        gt        f   i| 	      dk(  sJ t	        t#         |t        t$              t              |t        t        t        gt        f   i| 	      dk(  sJ t	        t#         |t        t$              t              |t        t        t        gt        f   i|dt"        di|       dk(  sJ 	 d d d        t        t        j                  gdz        5 } t	        t#         |t        t$              t              |dt"        di|       dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   xY w# 1 sw Y   y xY w)NFrQ   z(pow (sin x) (cos x))INTEGER_TYPEABSOLUTE_VALUE_OF)symbol_tableknown_typesknown_functionsr;   z4(declare-const x INTEGER_TYPE)
(ABSOLUTE_VALUE_OF x)f1r\   r;   z:(declare-const x Bool)
(declare-fun f1 (Bool) Real)
(f1 x)zC(declare-const x Bool)
(declare-fun f1 (Bool) Bool)
(assert (f1 x))z|(declare-const x Int)
(declare-const y Bool)
(declare-const z Bool)
(declare-fun f1 (Int Bool) Bool)
(assert (= (f1 x z) y))MY_KNOWN_FUNz==)r\   r^   r;   zf(declare-const x Int)
(declare-const y Bool)
(declare-const z Bool)
(assert (== (MY_KNOWN_FUN x z) y))rK   )r^   r;   zg(declare-const x Real)
(declare-const y Real)
(declare-const z Real)
(assert (== (MY_KNOWN_FUN x z) y)))r@   r    r'   r)   r   r   rS   r   absintrW   boolsympyAbsr   r   floatr   z)r>   my_fun1s     r,   test_Functionrj   L   s   	r--r/A/AB	C hq3q6SV+%!LPggggh 
r))*	+ %qFS!T*n-"YY(;<
%% 	% %% tnG	r))*	+ qAJ!8TFEM#:;
	 	  
b	 2QAJ!8TFDL#9:
	 	  wq!}a !8S$K,=#>?
'	' 	' ' wq!}a !8S$K,=#>?$nb$?	

22 	2 2'2: 
r--.2	3 2qwq!}a $nb$?
2	2 	2 22 2ih h% % 2 2:2 2s=   1I5>AJ92J?CJ29J(5I?JJJ%(J1c                     t        t        j                  t        j                  g      5 } t	        t
        dz  d|       dk(  sJ 	 d d d        t        t        j                  t        j                  t        j                  g      5 } t	        t
        t        dz  z  d|       dk(  sJ 	 d d d        t        t        j                  t        j                  g      5 } t	        t
        t        dd      z  d|       dk(  sJ t        dd	
      }t        dd	      }t        d      }d }d ||      dz  |||z  z
  z  z  |dz  |z   z  }d d d        t        g       5 } t	        t        dk        t        |kD  |      |d	z  t        dt        dd      z         g|       dk(  sJ 	 d d d        t        t        j                  t        j                  g      5 } t	        t        dt        t        |d      dd      d      |       dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrK   FrQ   z	(pow x 3)z(pow x (pow y 3))rB   z(pow x (/ 2 3))aTintegerbrealcc                     d| z  S )NrB   r*   )rS   s    r,   gztest_Pow.<locals>.g   s
    Q,r+      g      @rD   z(declare-const a Int)
(declare-const b Real)
(declare-const c Bool)
(assert (= (< a 2) c))
(assert (= (> b a) c))
(assert c)
(assert (= (* (pow (* 7. a) (+ (pow b a) (* -1 a))) (pow (+ b (pow a 2)) -1)) (/ 7 3)))evaluaterF   zG(declare-const b Real)
(declare-const c Real)
(* -2 c (pow (* b b) -1)))r@   r    r'   r)   r   rS   rW   r   r   r   r   r	   )r>   rl   ro   rr   rt   exprs         r,   test_Powrz      sH   	r--r/A/AB	C Rq16BkQQQR	r--r/E/ErGYGYZ	[ a_`1a=uqIM````a	r--r/A/AB	C 
?q1A.UQOSdddd3%3T"3K AaD3JAQJ//16A:>
? 
b	 Q1q5!1q5!D4Xa^+,	 
	 	 ( 
r--r/A/AB	C )qAs3q!e4b5ITYZ
)) 	) )) )IR Ra a
? 
? () )s=   H"H&A-H3AH?8IH#&H03H<?IIc                  b   t        t        j                  t        j                  t        j                  g      5 } t	        t
        t        z  d|       dk(  sJ 	 d d d        t        t        j                  t        j                  t        j                  g      5 } t	        t
        t        z   d|       dk(  sJ 	 d d d        t        t        j                  t        j                  g      5 } t	        t
         d|       dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   y xY w)NFrQ   z(* x y)z(+ x y)z(* -1 x))r@   r    r'   r)   r   rS   rW   rG   s    r,   test_basic_opsr|      s	   	r--r/E/ErGYGYZ	[ O_`1q5uqAYNNNO 
r--r/E/ErGYGYZ	[ O_`1q5uqAYNNNO 
r--r/A/AB	C MqA2EA>*LLLM MO OO OM Ms#   DD*D%DD"%D.c                    	 ddl m ddlmmm	  G 	fdd      t        d      } t        t        j                  g      5 }t         t        ddft         | t               | t                          | t        t        gt        f   i|	      d
k(  sJ 	 d d d        t        t        j                  gdz        5 }t         t        ddft        ddft!        t        t        t              t         | t               | t                                | t        t        gt        f   i|	      dk(  sJ 	 d d d        t#        dd      }t#        dd      }t#        d      }t        g       5 }t         |ddf |ddft!        ||k  t%        |      |k        |z              |      dk(  sJ 	 d d d        y # 1 sw Y   %xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   )Boolean)IntervalTuplesympifyc                   H    e Zd ZfdZed        Zed        Z fdZy)*test_quantifier_extensions.<locals>.ForAllc                 *   | j                   D cg c]E  \  }}}|j                  |j                  |j                  |j                  |       ||      g      G }}}}|j                  d|j                  d|      | j
                  g      S c c}}}w )Nforall )limits_s_exprr6   _known_typesr\   function)selfprintersymstartendbound_symbol_declarationsr   s         r,   _smtlibz2test_quantifier_extensions.<locals>.ForAll._smtlib   s    
 +/++	) ) 'sE3 (()=)=c)BCUC(+ )% ) ??8$=>.  )s   A
Bc                 N    | j                   D ch c]  \  }}}|
 c}}S c c}}w N)r   )r   s_s      r,   bound_symbolsz8test_quantifier_extensions.<locals>.ForAll.bound_symbols   s     %)[[1'!QA111s   !c                     | j                   D ch c]  }|j                   }}| j                  j                  D ch c]  }|j                  |vr| c}S c c}w c c}w r   )r   r6   r   free_symbols)r   r   bound_symbol_namess      r,   r   z7test_quantifier_extensions.<locals>.ForAll.free_symbols   s]    262D2D!EQ!&&!E!E==5566!33   "Fs
   AAc                    |D cg c]'  }t        |t              st        |      s  	|      ) }}|D cg c]  }t        |      s 	|       }}t        |      t        |      z   t        |      k(  sJ t        |      dk(  sJ |d   }t        |      r, j                  g||j                  z   |j
                   S j                  |       }t        ||gz         |_        ||_        ||_        |S c c}w c c}w )Nru   r   )
isinstancetuplelen__new__r   r   _args)
clsargsrl   r   r   instr~   ForAllr   r   s
         r,   r   z2test_quantifier_extensions.<locals>.ForAll.__new__   s   *._Q*Q2F*UVX]J^gaj_F_,0KqJq'4J
KHKv;X.#d);;;x=A%%%{H(F+NFNN5 8??255=5F5F5 . ??3'Dv
23DJ DK$DMK `Ks   !C=
C=D

DN)r!   r"   r#   r   propertyr   r   r   )r~   r   r   r   r   s   r,   r   r      s:    
	 
	2 
	2 
	 
		 	r+   r   fi   r`   z,(assert (forall ( (x Real [-42, 21])) true))rB   irK   zs(declare-fun f (Real) Real)
(assert (forall ( (x Real [-42, 21]) (y Real [-100, 3])) (=> (= x y) (= (f x) (f y)))))rl   Trm   ro   rp   rr   d   rD   zx(declare-const c Bool)
(assert (forall ( (a Int [2, 100]) (b Real [2, 100])) (or c (=> (< a b) (< (pow a (/ 1 2)) b))))))sympy.logic.boolalgr~   re   r   r   r   r   r@   r    r'   r   rS   r   r   rg   rW   r   r   r   )
r   r>   rl   ro   rr   r~   r   r   r   r   s
        @@@@@r,   test_quantifier_extensionsr      s   +..' ' 'V 	A	r--.	/ <1AsC="QqT1Q4.1Xugun56
 <	< 	< << 
r--.2	3 qC4|1a"QqT1Q4.1 Xugun56
 	  	sD!AsAsA	b	 QAsV3KAE47Q;/!3
 

 
	 
 3< < $ s'   AGA8G7AGGGG&c                     t        t        j                  g      5 } t        dt        z  t        di|       dk(  sJ 	 d d d        t        t        j                  g      5 } t        t        t        dd      dt        z  gt        di|       dk(  sJ 	 d d d        t        t        j                  g      5 } t        t        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  d      t        j                  d	t        j                  d
t        j                  dit        dt        did|       dk(  sJ 	 d d d        t        t        j                  g      5 } t        t        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  d      t        j                  d	it        dt        did|       dk(  sJ 	 d d d        t        t        j                  g      5 } t        t        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  d      t        did|       dk(  sJ 	 d d d        t        t        j                  g      5 } t        t        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  d      t        j                  dit        did|       dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   ;xY w# 1 sw Y   `xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nru   MY_PI)known_constantsr;   z(pow MY_PI -1)gQ	@Frw   z&(assert (= MY_PI 3.14))
(pow MY_PI -1)prt   r?   plusr   rK   )r   r^   	precisionr;   z!(plus 0 1 -1 (/ 1 2) (exp 1) p g)z$(plus 0 1 -1 (/ 1 2) (exp 1) p 1.62))r^   r   r;   z$(plus 0 1 -1 (/ 1 2) 2.72 3.14 1.62)z!(plus 0 1 -1 (/ 1 2) e 3.14 1.62))r@   r    r)   r   r   r   r   r
   ZeroOneNegativeOneHalfExp1PiGoldenRatior   rG   s    r,   test_mix_number_mult_symbolsr   !  s;   	r))*	+ qFM
 	 	  
r))*	+ 	q2te,B  M
 	 	 
r))*	+ 1qq}}affamme= c1==#
 VU 
 11 	1 11  
r))*	+ 4qq}}affamme= c VU 
 44 	4 44 
r))*	+ 4qq}}affamme= &M
 44 	4 44 
r))*	+ 1qq}}affamme=VVSM &M
 11 	1 11 1u 	 	1 1 4 44 41 1sK   !N?3O5COB%O&%BO3BP ?O	OO#&O03O= P	c                     t        g       5 } t        t        t        z  |       dk(  sJ t        t        t        z  |       dk(  sJ t        t         |       dk(  sJ t        t        t        z  t        z  |       dk(  sJ 	 d d d        t        t
        j                  g      5 } t        t        t         z  t        dkD  z  |       dk(  sJ 	 d d d        t        d      }t        d	      }t        d
      }t        t
        j                  g      5 } t        t         |t              t              t        t         |t                    g|t        t        gt        f   |t        t        gt        f   i|       dk(  sJ 	 d d d        t        g       5 } t        t         |t              t              t        t         |t                    g|t        t        gt        f   |t        t        gt        f   i|       dk(  sJ 	 d d d        t        g       5 } t        t         |t              t              t         | |t                    t              t         | | |t                          t              g|t        t        gt        f   |t        t        gt        f   |t        t        gt        f   i|       dk(  sJ 	 d d d        y # 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrD   z@(declare-const x Bool)
(declare-const y Bool)
(assert (and x y))z?(declare-const x Bool)
(declare-const y Bool)
(assert (or x y))z'(declare-const x Bool)
(assert (not x))zY(declare-const x Bool)
(declare-const y Bool)
(declare-const z Bool)
(assert (and x y z))rK   zj(declare-const x Bool)
(declare-const y Bool)
(declare-const z Real)
(assert (or (> z 3) (and x (not y))))r   rt   hr`   z(declare-const x Bool)
(declare-const y Real)
(declare-const z Bool)
(declare-fun f (Bool) Int)
(declare-fun g (Bool) Int)
(assert (> (f x) y))
(assert (< y (g z)))z(declare-const x Bool)
(declare-const y Int)
(declare-const z Bool)
(declare-fun f (Bool) Int)
(declare-fun g (Bool) Int)
(assert (= (f x) y))
(assert (< y (g z)))z(declare-const x Real)
(declare-const y Int)
(declare-const z Bool)
(declare-fun f (Real) Int)
(declare-fun g (Int) Bool)
(declare-fun h (Bool) Real)
(assert (= (f x) y))
(assert (= (g (f x)) z))
(assert (= (h (g (f x))) x)))r@   r   rS   rW   rh   r    r'   r   r   r   r   rd   rc   r   rg   )r>   r   rt   r   s       r,   test_booleanr   g  s   	b	 LQ1q51- 2F F 	F F 1q51- 2E E 	E E A2* /A A 	A A1q519q1 6L L 	L LL 
r--.	/ f1AFq1u-: ?f f 	f ff 	AAA	r--.	/ $1!a[1Q4[ 8TFCK(!Xtfck-B
$$ 	$ $$ 
b	 $Q!a[1Q4[ 8TFCK(!Xtfck-B
$$ 	$ $$ 
b	 ,Q!a[!A$^!AaD'
A  8UGSL)8SE4K(8TFEM*
 

,, 	, ,, ,kL Lf f$ $$ $, ,s?   A6K%)KA.K'A.K4B-L KK$'K14K= L	c            
      @    t        t        j                  t        j                  g      5 t	        t        t        t        dk  ft        dz  df      d      dk(  sJ 	 d d d        t        t        j                  t        j                  g      5 t	        t        t        dz  t        dk  ft        dz  t        dk  ft        dz  t        dk  ft        d	z  df      d      d
k(  sJ 	 d d d        t        t        t        dk  ft        dz  t        dkD  ft        t              t        dkD  f       t        t        j                  t        j                  g      5 t        t         fd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nru   rB   TFrQ   z(ite (< x 1) x (pow x 2))rK   rJ      zQ(ite (< x 1) (pow x 2) (ite (< x 2) (pow x 3) (ite (< x 3) (pow x 4) (pow x 5))))r   c                      t               S NrD   r   ry   r>   s   r,   <lambda>z'test_smtlib_piecewise.<locals>.<lambda>  s    {4!'D r+   )
r@   r    r'   r)   r   r   rS   r   r   AssertionErrorr   s   @@r,   test_smtlib_piecewiser     s|   	r--r/A/AB	C )qq!a%jAvtn&	

 )) 	) )) 
r--r/A/AB	C qqAvq1uoAvq1uoAvq1uoAvtn& 

 
	 
 aQZ!q&!a%3q61q5/BD	r--r/A/AB	C Fq~DEF F/) ) F Fs$   4E;AFF;FFFc                  &   t        t        t        dk  ft        dz  df      } t        t        j                  t        j
                  g      5 }t        d| z  |      dk(  sJ 	 d d d        t        t        j                  t        j
                  g      5 }t        | t        z  |      dk(  sJ 	 d d d        t        t        j                  t        j                  t        j
                  g      5 }t        | t        t        z  z  |      dk(  sJ 	 d d d        t        t        j                  t        j
                  g      5 }t        | dz  |      d	k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   y xY w)
Nru   rB   TrD   z6(declare-const x Real)
(* 2 (ite (< x 1) x (pow x 2)))z?(declare-const x Real)
(* (pow x -1) (ite (< x 1) x (pow x 2)))za(declare-const x Real)
(declare-const y Real)
(* (pow x -1) (pow y -1) (ite (< x 1) x (pow x 2)))rK   z<(declare-const x Real)
(* (/ 1 3) (ite (< x 1) x (pow x 2))))r   rS   r@   r    r'   r)   r   rW   )pwr>   s     r,   !test_smtlib_piecewise_times_constr     su   	Aq1u:Q~	.B	r--r/A/AB	C lq1r6A.2kkkkl	r--r/A/AB	C uq26A.2ttttu	r--r/E/ErGYGYZ	[ ^_`2Q<!4  9^  ^  	^  ^^	r--r/A/AB	C rq26A.2qqqqr rl lu u^ ^r rs0   E"E//!E;F"E,/E8;FFc                  Z   t        g       5 } t        dd|       dk(  sJ t        d|       dk(  sJ t        t        j                  |       dk(  sJ t        t        j                  |       dk(  sJ t        d|       dk(  sJ t        dd|       dk(  sJ 	 d d d        y # 1 sw Y   y xY w)	NTF)auto_assertr;   truerD   z(assert true)z(assert false)false)r@   r   r
   r   r   rG   s    r,   test_smtlib_booleanr     s    	b	 LQ4UQ?6III4!,???166A./AAA177Q/3CCCC51-1AAAA5ea@GKKKL L Ls   BB!!B*c                  F    t        d       t        t        j                  t        j                  g      5 t        t         fd       d d d        t        t        j                  g      5 t        t        fd       d d d        y # 1 sw Y   @xY w# 1 sw Y   y xY w)Nr   c                      t          t              j                  t               t        t        gt        f   i      S )Nr`   )r   rS   diffr   rg   r   r>   s   r,   r   z$test_not_supported.<locals>.<lambda>  s1    QqTYYq\HV[U\^cUcLdHepq!r r+   c                  :    t        t        j                         S r   )r   r
   ComplexInfinityrG   s   r,   r   z$test_not_supported.<locals>.<lambda>  s    Q->->!K r+   )r   r@   r    r'   r)   r   KeyErrorr   s   @@r,   test_not_supportedr     s    A	r--r/A/AB	C tqxrst	r))*	+ MqxKLM Mt tM Ms   B.BBB )9
contextlibr4   r$   typingenumr   r   re   r   r   r   
sympy.corer   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   sympy.functionsr   r   r   r   sympy.printing.smtlibr   sympy.testing.pytestr   r   rS   rW   rh   r    contextmanagerIterabler@   rH   rT   rX   rj   rz   r|   r   r   r   r   r   r   r   r*   r+   r,   <module>r      s      	     $ $ 8 8 8 8 4 4 - /
'
1a{ { /6??2. / /"0
N\=2@+)\MUpC1LI,pF8	rFLMr+   