
    QjCI                       d Z ddlmZ ddlZddlZddlZddlZddlZ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mZ d\  ZZdZd	Zd
Z ed      Zedz  Z ed      Zedz  Zedz  Zedz  Zd/dZddddd0dZd1dZddd2dZ d3dZ!d4dZ"d5dZ#d6dZ$d7d8dZ%d9d:dZ&d;dZ'd7d<d Z(d=d>d!Z)d?d"Z*d@d#Z+dAd$Z,dBd%Z- G d& d'      Z.dCd(Z/dDd)Z0dEd*Z1dFd+Z2d1d,Z3dDd-Z4e5d.k(  r e6 e4             y)Ga$  MCSJ Utility Balance Adjustment AgentV11 speed racer.

Runs one guarded balance-adjustment transaction locally without agent/chat pauses.
The timed interval starts at the first batch-id focus keystroke and ends when the
refreshed Utility Account Maintenance balance is semantically verified.
    )annotationsN)wintypes)Decimal)Path)z	127.0.0.1iW&  z!util.client.fx.EFXUtadjbatchPanelzutil.client.fx.EFXUtmastPanelz&misc.components.fx.EFXPrtToScreenPanelzC:/MCSJAgentzSwingBridge/mcsj-fast-v11.pyzOC:/Users/Administrator/AppData/Local/Programs/Cua/cua-driver/bin/cua-driver.exezmcsj-uia-worker.ps1zcache/mcsj-jab-cache.jsonproofc                    | dk(  ryt        j                  | j                               j                         j	                  d      S )N .=)base64urlsafe_b64encodeencodedecoderstrip)values     C:/MCSJAgent/mcsj-speed-racer.pytokenr      s6    {3##ELLN3::<CCCHH    Fg      @)modaltimeoutallow_errorc                  t        j                  t        t        f|      5 }|j	                  |       |j                  | dz   j                                |j                  t         j                         |rd| j                         d   dcd d d        S g }	 |j                  d      }|sn|j                  |       &	 d d d        dj                        j                  d	      }t        j                  |      }|j!                  d
      dk7  r$|s"t#        d| j                         d    d|       |S # 1 sw Y   yxY w)Nr   

DISPATCHEDr   )statuscommandi   r   replace)errorsr   OKzAgent rejected z: )socketcreate_connectionHOSTPORT
settimeoutsendallr   shutdownSHUT_WRsplitrecvappendjoinr   jsonloadsgetRuntimeError)	r   r   r   r   schunksdatarawobjs	            r   agentr6       s   		!	!4,	@A	W			7T>))+,	

6>>"*w}}q7IJ 
A	@ 66%=DMM$  
A ((6

!
!
!
3C
**S/C
wwxD L?[b[h[h[jkl[mZnnpqtpuIv<w6wJ 
A	@s   A*D8)D88Ec                     t        dd      S )NFXSTATE   r   )r6    r   r   fxstater;   2   s    A&&r   r   c               N    t        dt        |        dt        |       d|      S )NzFXFIREBUTTON   falser<   r6   r   )paneltextr   s      r   firerC   6   s&    =uad}FC5QQr   c                R    t        dt        t               dt        |        d      S )NzFXSELECTRADIO r>   z false true)r6   r   PANEL)rB   s    r   select_radiorF   :   s$    >%,qt[IJJr   c                J    t        dt        |        dt        |       d      S )NzFXSELECTTAB r>   r?   r@   )panel_classrB   s     r   
select_tabrI   >   s&    <k 231U4[MHIIr   c                4    t        dt        |        d      S )NzFXWINDOWSTATE T)r   r@   )titles    r   window_staterL   B   s    >%,0dCCr   c                J    t        dt        |        dt        |       d      S )NzFXWINDOWBUTTON r>   r?   r@   )rK   rB   s     r   window_buttonrN   F   s$    ?5<.%+fEFFr   c                   t        j                         |z   }d }t        j                         |k  rt        |       }|j                  d      dk(  r@dj	                  d |j                  dg       D              |rt        fd|D              r|S t        j                  d       t        j                         |k  rt        d| d	| d
|       )Nr   r    r   c              3  X   K   | ]"  }t        |j                  d       xs d       $ ywrB   r	   Nstrr/   .0is     r   	<genexpr>zwait_window.<locals>.<genexpr>O   s%     Q<Pq#aeeFm1r2<P   (*itemsc              3  &   K   | ]  }|v  
 y wNr:   rU   xhays     r   rW   zwait_window.<locals>.<genexpr>P   s     ">X18X   {Gz?zAgentV11 window z	 missing ; last=)timeperf_counterrL   r/   r,   allsleepTimeoutError)rK   r   containsdeadlinelastr^   s        @r   wait_windowrj   J   s     (Ht$



h
&% 88Ht#		QDHHWR<PQQCs">X">>t

3 


h
& )%)H:WTFS
TTr   c                    t        j                         |z   }t        j                         |k  rNt        |       }|j                  d      dk(  r|S t        j                  d       t        j                         |k  rNy )Nr   r    r`   )rb   rc   rL   r/   re   )rK   r   rh   outs       r   optional_windowrm   U   sh     (H



h
&778d"3J

3 


h
& r   c           	         dj                  t        t              t        d      t        d      t        |       t        |            }t        |      S )NzFXEDITTEXT {} 0 {} {} * 0 {} {}z#misc.components.fx.EFXCurrencyFieldEFXTextField)formatr   rE   r6   )expectednewcmds      r   edit_currencyrt   ^   sA    
+
2
2eeABE.DYhs%C :r   c                x   |#t        j                  |      j                         nd }t        j                  j                  d|z   ||rddini |       }t        j                  j                  |d      5 }t        j                  |j                         j                               cd d d        S # 1 sw Y   y xY w)Nzhttp://127.0.0.1:8765zContent-Typezapplication/json)r3   headersmethod
   r   )
r-   dumpsr   urllibrequestRequesturlopenr.   readr   )rw   pathpayloadr3   reqrs         r   jabr   e   s    +2+>4::g%%'DD
..
 
 !84!?d7; 23F ! TC			R		0Azz!&&(//+, 
1	0	0s   51B00B9c                   t        j                  t        t              d| dgt	        j
                  |      dd|      }|j                  dk7  r(t        d|  d|j                   d|j                         |j                  j                         j                  d	      rt	        j                  |j                        S d
|j                  j                         dS )Ncallz--jsonT)inputcapture_outputrB   r   r   zCUA z	 failed: r>   {r    )r   r4   )
subprocessrunrS   CUIr-   ry   
returncoder0   stderrstdoutstrip
startswithr.   )toolr   r   ps       r   cuar   m   s    C&$9GAT$	9A||qtD6188*AahhZ-X YY#$88>>#3#>#>s#C4::ahhoSW^_^f^f^l^l^nIoor   c                    g t         j                  j                  t        j                  t        j
                  t        j                  t        j                        } fd}j                   ||      d       S )Nc                   t        j                         }j                  | t        j                  |             |j
                  k(  ryj                  |       rhj                  |       }t        j                  |dz         }j                  | ||dz          |j
                  k(  rj                  t        |              y)N   T)r   DWORDGetWindowThreadProcessIdctypesbyrefr   IsWindowVisibleGetWindowTextLengthWcreate_unicode_bufferGetWindowTextWr+   int)	hwndlparamprocnbufexact_titlefoundpiduser32s	        r   callbackz native_windows.<locals>.callbackw   s    ^^v>>tFLLQUDVW::s?v55d;))$/AV5Q5QRSTURU5V!!$s1Q3/yy+%u||CI'>r   r   )	r   windllr   WINFUNCTYPEr   BOOLHWNDLPARAMEnumWindows)r   r   callback_typer   r   r   s   ``  @@r   native_windowsr   t   sW    
EV]]))f$$X]]8==QM }X.q1Lr   c                b   t        j                         |z   }t        j                         |k  rtt        | |      }t        |      dk(  r|d   S t        |      dkD  rt	        d| dt        |             t        j
                  d       t        j                         |k  rtt        d|       )Nr   r   znative window title ambiguous: z count=r`   znative window not found: )rb   rc   r   lenr0   re   rf   )r   rK   r   rh   r   s        r   wait_native_windowr      s     (H



h
&S'u:q=q/u:a<|.MeWT[\_`e\f[g,hii

3	 


h
&
 25':
;;r   c                &    t        d| ||dd       y )N	press_key
background)r   	window_idkeydispatchr   )r   r   r   s      r   pressr      s    CDslSTr   c           	     *    t        d| ||dddd       y )N	type_textr   r   )r   r   rB   delay_msr      r   )r   r   rB   s      r   r   r      s    CDUabdefr   c                  H    e Zd Zd	dZd
ddZddZddZd
ddZdddZd Z	y)	UiaWorkerc           
         || _         t        j                  dddddt        t              gt        j
                  t        j
                  t        j
                  dd      | _        y )	Npowershell.exe
-NoProfile-ExecutionPolicyBypass-FileTr   )stdinr   r   rB   bufsize)r   r   PopenrS   
UIA_WORKERPIPEr   )selfr   s     r   __init__zUiaWorker.__init__   sO    !!#3LAST\]dehiset"u//*//*//X\fgir   Nc                   || j                   |d}|||d<   | j                  j                  j                  t	        j
                  |d      dz          | j                  j                  j                          | j                  j                  j                         }|s0t        d| j                  j                  j                         z         t	        j                  |      S )N)actionr   windowbutton),:)
separatorsr   zUIA worker exited: )r   r   r   writer-   ry   flushr   readliner0   r   r~   r.   )r   r   r   r   r   lines         r   r{   zUiaWorker.request   s    488V<Vs8}4::cY?DEtvv||GYGYG[VV]]##%<(=dffmm>P>P>R(RSSzz$r   c                &    | j                  d|      S )Nsnapshot)r{   )r   rK   s     r   r   zUiaWorker.snapshot   s    4<<
53Q,Qr   c                p    | j                  d||      }|j                  d      dk7  rt        d|       |S )Ninvoker   r    zUIA invoke failed: )r{   r/   r0   )r   rK   r   rl   s       r   r   zUiaWorker.invoke   s<    LL%/778d",9LSE7R*S$S
r   c                   t        j                         |z   }t        j                         |k  r| j                  |      }|j                  d      dk(  r@dj	                  d |j                  dg       D              |rt        fd|D              r|S t        j                  d       t        j                         |k  rt        d|d	|       )
Nr   r    r   c              3     K   | ]D  }t        |j                  d       xs d      dz   t        |j                  d      xs d      z    F yw)namer	   r   r   NrR   rT   s     r   rW   z!UiaWorker.wait.<locals>.<genexpr>   sC     s_rZ[c!%%-"526t;Cg@TRT<UU_rs   A
ArY   c              3  &   K   | ]  }|v  
 y wr[   r:   r\   s     r   rW   z!UiaWorker.wait.<locals>.<genexpr>   s     &BAqCxr_   Q?zwindow z missing expected text )rb   rc   r   r/   r,   rd   re   rf   )r   rK   r   rg   rh   rl   r^   s         @r   waitzUiaWorker.wait   s    ""$W,!(*e$Cwwx $&IIs_b_f_fgnoq_rss3&B&B#B3JJJsO !(* WUI-DXJOPPr   c                   t        j                         |z   }t        j                         |k  rT| j                  |      }|j                  d      dk(  r|S t        j                  d       t        j                         |k  rTy )Nr   r    r   )rb   rc   r   r/   re   )r   rK   r   rh   rl   s        r   optionalzUiaWorker.optional   sl    ""$W,!(*e$Cwwx $&s
JJsO !(* r   c                    | j                   j                  j                          | j                   j                          y # t        $ r Y y w xY wr[   )r   r   close	terminate	Exception)r   s    r   r   zUiaWorker.close   s2    VV\\!466#3#3#5$s   >A   	AA)r   r   r[   )r   rS   r   rS   r   z
str | NonereturndictrK   rS   r   r   )rK   rS   r   rS   r   r   rK   rS   r   floatrg   zlist[str] | Noner   r   )g333333?rK   rS   r   r   r   zdict | None)
__name__
__module____qualname__r   r{   r   r   r   r   r   r:   r   r   r   r      s(    i  RQr   r   c                    | j                  dg       D cg c]  }|j                  d      |k(  s| }}t        |      dk7  rt        d| dt        |             |d   S c c}w )Npanels
panelClassr   zexpected one z, got r   )r/   r   r0   )state
class_namer   matchess       r   rA   rA      sj    		(2.R.1!%%2Ez2QQ.GR
7|Ql]:,fSQX\N+[\\1: Ss
   A"A"c                    t        j                  t        j                  d            } | d   }|D ci c]  }|d   |
 }}g }|D ]  }|j	                  d      dk7  s|j	                  d      dk7  r,g }|}|rD|j                  |j	                  dd	             |j	                  |j	                  d
            }|rDd|v s{d|v s|j                  |d           t        |      dk7  rt        dt        |             |d   S c c}w )Nutf-8encodingrowsidr   zAccount Maintenancerolez	menu itemr	   parentzUtility AccountszUtility/Property Tax Billingr   z3exact Utility Account Maintenance menu match count=r   )r-   r.   	JAB_CACHE	read_textr/   r+   r   r0   )r5   r   r   byhitsnamesr   s          r   find_account_menu_idr     s   

9&&&89CF4dhPidh_`QRSWQXYZQZdhRPi	D55=//155=+3MxA!LLvb)*bffQUU8_.EA &+IU+RTXT_T_`abf`gTh  4y!|<*]^abf^g]h(ijj7N Qjs   Dc                R   t        j                         |z   }d }t        j                         |k  rC	 t               } | |      r|S 	 t        j                  d       t        j                         |k  rCt        d| d|       # t        t        j
                  t        f$ r Y ^w xY w)Ng{Gz?zFX wait timed out: ra   )	rb   rc   r;   OSErrorr-   JSONDecodeErrorr0   re   rf   )	predicater   labelrh   ri   s        r   wait_fxr     s     (Ht$



h
&	CDt

3 


h
& ,UG74&A
BB --|<BdBs   B B&%B&c                V   t        j                  t        j                  t	        t
              dgddd      }|j                  r"t        |j                  |j                  z         t        j                  |j                  j                         j                         d         }| j                         |j                  dd      j                         vrt        d|       t!        d	d
      }t#        |d         }t#        |d         }|t#        |d         k7  rt        d      t%               }t'        |t(              }|j                  d      rt        d      |d   D cg c]&  }|j                  dd      j+                  d      s%|( }	}t-        |	      dk7  s|	d   j                  d      dk7  rt        d|	       |d   D cg c]  }|j                  d      s| }
}t-        |
      dk(  xr
 |
d   |	d   u }|
r|st        d|
       ||t/               |fS c c}w c c}w )NensureT(   )r   rB   r   databaseTitler	   zwrong database: GETz/stater   r   zJAB/Agent PID mismatchtablesz9adjustment entry grid is open; require blank setup screencontrolsclassEFXUpperMaskFieldr   r   rB   zbatch setup is not blank: focusedz=setup focus must be empty or the exact blank Batch ID field: )r   r   sys
executablerS   FXr   r0   r   r   r-   r.   r   
splitlineslowerr/   r   r   r;   rA   rE   endswithr   r  )expected_dbr   ensuredjsr   r   stpsetupcbatchr  batch_already_focuseds               r   ensure_preflightr'     s   nncnnSWX6dPT]_`A||<(9::JJqxx~~'224R89G'++ob"A"G"G"IIQ]`pqxpy^zQ{K{
5BBuICSF_
C|4L'M!MyBr%&zz(<0k#llZ(
\(AEE'",=,F,FGZ,[1(E
\
5z1}aV,b0GabgahEi8j2jz*?*1aeeI.>Q*G?w<?EwqzU1X/E,Z[bZcdeet(*+@@@ ]?s   #&H!
H!
H&!H&c                   &'( t         j                        }t         j                        }||z   }|dk  rt        |      ddn|d}t	         j
                        \  }}}} j                  s;d|| j
                   j                   j                   d j                   |d||d	S i &t        j                         (&(fd}		 |st        ||d       t        || j                         t        ||d       t        t        d       t        t        d	       t        || j                         t        ||d       t        || j                         t        ||d       t        ||d       t        ||d       t        || j                          t        ||d       t        ||d       t        ||t#         j$                               t        ||d       t        ||t#         j&                               t        ||d       t)        d
 j                         t        ||d       t        ||d       t        || j*                         t        ||d        |	d       t        t        dd       t-        dd j                  d j                  g      }
dj/                  d |
d   D              }|j1                   j                        dk  rt3        d      t5        dd       t7        dd      }|r9dj/                  d |d   D              }d|vrt3        d|z         t5        dd       t9        d dd      }t;        |t              d   d   d    d   ' j                   j                   j<                   j                   t#         j$                        t#         j&                         j                  d! j*                  g	}t?        'fd"|D              st3        d#'        |	d$       t        t        d%       tA        d&       t        t        dd       t-        d'dd(g       t5        d'd)        fd*}t9        |d+d,      }t;        |tB              }dj/                  d- |jE                  dg       D              } j                   j                   d j                    j*                  d.|fD ]  }||vst3        d/|       t        tB        d%        |	d0       tA        d1       t        t        dd       t-        d2dd3d0g       t5        d2d       tG        |d4d5      }t-        d6d j                  d7g      }dj/                  d8 |d   D              }|j1                  d      dk  rt3        d9      t        ||d:       t-        d6d;d<g       t5        d6d        |	d=       tI        d>d?d@|i      }|jE                  dA      st3        dB|       t9        dC ddD       t        || j                         t        ||d       t        || j                         t        ||d       t9         fdEddF       tK        tL        dG       t9         fdHdI j<                   dJ      }t;        |tL              }tO         fdK|d   D              }tO         fdL|d    D        d       }|t3        dM j<                         t        |d         }||k7  rt3        dN| dO|       tQ        t        j                         (z
  d      } |	dP       tR        jU                  ddQ       tR        dR j                   dSz  }tW        jX                  dTdUdVdWdXt#        tZ        dYz        dZt#        |      gddd[d\       |j]                         } t_        |       d]k  s| d d^ d_k7  rt3        d`      t`        jc                  | dad[ db      }!t`        jc                  | d[d] db      }"|!dck  s|"dck  rt3        dd|! de|"        |	df       t        tL        d%       dg j
                   j                   j                   d j                    j<                   j                  |d|d||dh|d;k  &t#        |      |!|"t_        |       didj}#tR        dR j                   dkz  }$|$je                  dl      }%|%jg                  ti        jj                  |#dm      dno       |%jm                  |$       tQ        t        j                         (z
  d      |#dp<   |#dp   |#dq   dr<   |%jg                  ti        jj                  |#dm      dno       |%jm                  |$       |#S # w xY w)sNr   z.2f-PREFLIGHT_OK)	r   r   r   databaser%  accountexpectedAftermenuIdbatchAlreadyFocusedc                N    t        t        j                         z
  d      | <   y )N   )roundrb   rc   )r   marksstarts    r   markzrun.<locals>.mark   s     d&7&7&9%&? BE$Kr   tab_Next_Addz.00entry_complete_SaveTr<   zBatch Totalsr1  1r   c              3  X   K   | ]"  }t        |j                  d       xs d       $ ywrQ   rR   rT   s     r   rW   zrun.<locals>.<genexpr>  s#     IAs155=.B/rX   rY      z/Batch Totals principal/total did not both matchr    Messageg      ?c              3  X   K   | ]"  }t        |j                  d       xs d       $ ywrQ   rR   rT   s     r   rW   zrun.<locals>.<genexpr>  s%     O>NCf 34>NrX   z*Adjustment Date is not in the Current Yearzunexpected Message dialog: c                    t        | t              j                  d      xr" t        | t              d   d   d   d   d   dk7  S )Nr  r   r   INS)rA   rE   r/   r1   s    r   <lambda>zrun.<locals>.<lambda>	  sG    a 2 28 < qqPXAYZ[A\]cAdefAghiAjlqAq qr   z	saved rowr  r   z0.00c              3  &   K   | ]  }|v  
 y wr[   r:   )rU   r]   rows     r   rW   zrun.<locals>.<genexpr>  s     .X18Xr_   zsaved row mismatch: saved_ClosezBatch Verification ListingzSelect Printing MethodzSelect Printing Method:Screenc                   | j                  dg       D cg c]  }|j                  d      t        k(  s| }}t        |      dk7  rydj                  d |d   j                  dg       D              }j                  |v xr d	|v S c c}w )
Nr   r   r   Fr   c              3  n   K   | ]-  }|j                  d g       D ]  }|D ]  }t        |         / ywr   Nr/   rS   rU   trowxcells       r   rW   z2run.<locals>.verification_ready.<locals>.<genexpr>  s;     x.IVWV[V[\bceVfdswko3t9sw9Vf9.I   35r   r  Grand Totals:)r/   PRINT_PANELr   r,   r%  )r   r   r   rB   argss       r   verification_readyzrun.<locals>.verification_ready  s     %		(2 6[ 61!%%:M{:ZQ 6G[7|QuxgajnnXb.IxxD::%A/T*AA \s
   BBr9   zpopulated verification reportc              3  n   K   | ]-  }|j                  d g       D ]  }|D ]  }t        |         / ywrK  rL  rM  s       r   rW   zrun.<locals>.<genexpr>  sK       <ROb!opototu{|~ogk  MQ  EICI  MQIoIObrQ  rR  zverification report missing verifiedzUpdate BatchzSelect an Optionzupdates journal entriesPrint   zBatch UpdatezUpdating Mastersc              3  X   K   | ]"  }t        |j                  d       xs d       $ ywrQ   rR   rT   s     r   rW   zrun.<locals>.<genexpr>!  s#     J\3quuV}23\rX   z&Batch Update counters did not show 1/1escaperx   zUpdate CompletedupdatedPOSTz/clickr   okzaccount menu click failed: c                F    t        d | j                  dg       D              S )Nc              3  L   K   | ]  }|j                  d       t        k(    yw)r   N)r/   ACCOUNT_PANEL)rU   r   s     r   rW   z(run.<locals>.<lambda>.<locals>.<genexpr>(  s!     \I[AQUU<0-?I[s   "$r   )anyr/   rB  s    r   rC  zrun.<locals>.<lambda>(  s    \xXZI[\\r   zaccount panelc                N    t        fdt        | t              d   D              S )Nc              3  x   K   | ]1  }|j                  d d      j                         j                  k(   3 ywrQ   )r/   r   expected_owner)rU   r$  rT  s     r   rW   z(run.<locals>.<lambda>.<locals>.<genexpr>*  s3     wTvqQUU6"-335t7J7JJTvs   7:r  )rb  rA   ra  r1   rT  s    r   rC  zrun.<locals>.<lambda>*  s     wTYZ[\iTjkuTvwwr   zaccount loadBalancesc                h    t        fdt        | t              j                  dg       D              S )Nc              3  r   K   | ].  }|j                  d       xr t        fd|d    D               0 yw)r   c              3  B   K   | ]  }|d    j                   k(    ywr   NservicerU   r   rT  s     r   rW   z2run.<locals>.<lambda>.<locals>.<genexpr>.<genexpr>,  s"     8_U^PQ1t||9KU^   Nr/   rb  rU   rN  rT  s     r   rW   z(run.<locals>.<lambda>.<locals>.<genexpr>,  sB       #R  jQde155=#_S8_UVW]U^8_5_#_  jQs   47r  )rb  rA   ra  r/   rf  s    r   rC  zrun.<locals>.<lambda>,  sF    s  #Rinopq~i  jD  jD  EM  NP  jQ  #R   Rr      z balancec              3  v   K   | ]0  }|j                  d       st        fd|d    D              s-| 2 yw)r   c              3  B   K   | ]  }|d    j                   k(    ywrk  rl  rn  s     r   rW   z run.<locals>.<genexpr>.<genexpr>-  s4       `G  }Fwx`abc`dfjfrfr`r  }Fro  Nrp  rq  s     r   rW   zrun.<locals>.<genexpr>-  sI       /H,Q!%%PV-\_  `G|}  E  }F  `G  ]Gq,s   999c              3  H   K   | ]  }|d    j                   k(  s|  ywrk  rl  rn  s     r   rW   zrun.<locals>.<genexpr>.  s!     @z!QqT4<<-?Azs   ""zservice row not found: zfinal balance mismatch actual=z
 expected=after_semantically_verified)parentsexist_okzspeed-racer-z
-after.pngr   r   r   r   r   zprintwindow-shot.ps1z-Path   )r   rB   r   check   r   s   PNG

z.proof screenshot is missing or not a valid PNG   bigd   z%proof screenshot dimensions invalid: r]   proof_captured_and_validatedUPDATED_AND_AFTER_VERIFIEDzgfirst batch-id focus through refreshed semantic balance verification; screenshot is measured separately)widthheightbytes)r   r+  r%  r,  rm  	principalbeforeafterelapsedSecondssemanticElapsedSecondstimingScopesub10
milestonesr   proofPngz.jsonz	.json.tmpindentr   r   artifactCompletedSecondsr  	completed)7r   r  expected_beforeabsr'  r+  executer%  r,  subrb   rc   r   r   rC   rE   coderS   yearperiodrt   descriptionrj   r,   countr0   rN   rm   r  rA   rm  rd   rF   rS  r/   r   r   rI   ra  nextr2  PROOFmkdirr   r   ROOT
read_bytesr   r   
from_byteswith_suffix
write_textr-   ry   r   ))rT  amountr  expected_afterreport_amountr   r   account_menu_idr&  r5  totalsrB   warningwtextrF  requiredrU  reportrpreport_textneeded
print_hwndupdupd_textopenedfinalapbtwateractualsemantic_elapsedshotpngr  r  resultout_pathtmpr3  rE  r4  s)   `                                     @@@r   r   r      s_	   4>>"F743G3G+HFY_`fYf.,2QJc&k#&a(vclM3CDMM3R2C_2<<'cJJDLL>488*)EYghkXl  xG"79 	9 ED%%'eBS$eCU&;#d4::&c$u(=U7T%/#d4<<(%D*?3tTXT\T\A]_dehimns_tc$uuSe4iD6SUZ[^_cdiUjlqruvz  |A  mB#d3tyy>*E#d5,A9SQUVYZ^ZeZeVfCginorswx}i~eDNN+U3tE-BE#dSXDY[dehimnrn~n~[  BG  HK  LP  QV  BWU7&>!TZZDNN,KLYYIII::dnn%a'|<m/n)nnT*	"-))Ogg>NOOE;5HP\]z  |A  ^A  QB  KB)D)qrst  A%x(+F3A6,,txxTYYs499~cRVR]R]N^_c_m_mntuy  vF  vF  G.X..lEYZ]Y^C_6`0`WU8l+GH$uU\cgJh,Q0I/JK.x8	B
 )!,KL$$))  <RrvvV^_aOb  <R  3RkzzT\\N!DHH:">t?O?OP_`mnF[(?[\b[e=f0g*g o["D$4^$d5t&D&q*CJ)OPR_`rswRx%c'!4
q$**5G)HIJS\JJ>>#q 5](^"^c*X&N2'9&:;]>Z^=_aefoap6(D#9:zz$|6QRXQY4Z'[![\]^_no#d4<<(%D*?3tTXT\T\A]_dehimns_twxy  {I  	J=,  R  ST  X\  Xd  Xd  We  em  Un  o}%$  /H"X,  /H  +Hr@r&z@F=/Ft||n-U VVuQx >!8VW]V^^hiwhx6y)z#zt00258;TB_=`D$/\$**Z88(6HRYZ]^bcy^yZz  |C  DG  HL  DM  N  ^b  hl  uw  ~B  	COOs8B;#bq'#77|L|?}9}nnSBZ.s~~c"RjQV7W9s
,9^_d^eefgmfn7o*p$p+,]8$5W[WaWaaz2T\\VZVdVdqwx{p|cl5E_o D$R'U3t9afpv  @C  DG  @H  YI	J
 djj\77X=Q=QR]=^tzz&2GDckkRZF[+01B1B1DU1J1+M)*qw  yS  rTvVbOcdoOptzz&2GDckkRZF[s   
O6e Re ec            	     L   t        j                         } | j                  ddd       | j                  dd       | j                  dd	
       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dt        d       | j                  dt        d       | j                  dd       | j                  dd	
       | j                  dd	
       | j	                         }	 t        |      }t        t        j                  |d             y # t        $ rF}t        t        j                  d!t        |      d"d      t        j                  #       Y d }~yd }~ww xY w)$Nz	--execute
store_truez.perform the mutation; otherwise preflight only)r   helpz
--databasechestervillagenydb)defaultz--batchT)r  z	--account601z--sub2z	--serviceWaterz--expected-ownerzCHESTER ACQUISITIONS LLCz--codeBALz--yeari  )typer  z--periodr   z--principalz-1.00z--descriptionz--expected-beforer=  r  r   ERROR)r   
stageError)file)argparseArgumentParseradd_argumentr   
parse_argsr   printr-   ry   r   rS   r  r   )r  rT  rl   es       r   mainr  J  sv    BOOK|9iOjOOL)=O>OOItO,bookRWo.XZ\ZiZijqz}ZiZ~OOKO0"//BT]w/2xOOHUO+R__X3W[_-\^`^m^mnx  B  KL^m  _MOOM'O2BOOO]aO4bdfdsds  uH  RVds  eW	DeIuTZZ156q edjj7A?qIszzZcdes   (+E 	F#<FF#__main__)r   rS   r   rS   )
r   rS   r   boolr   r   r   r  r   r   )r   r   )rA   rS   rB   rS   r   r  r   r   )rB   rS   r   r   )rH   rS   rB   rS   r   r   r   )rK   rS   rB   rS   r   r   r[   r   )g?r   )rq   rS   rr   rS   r   r   )rw   rS   r   rS   r   r   )g      @)r   rS   r   r   r   r   r   r   )r   r   r   rS   r   z	list[int])r   r   rK   rS   r   r   r   r   )r   r   r   r   r   rS   r   None)r   r   r   r   rB   rS   r   r  )r   r   r   rS   r   r   )r   r   )r   r   r  rS   r   r   )r  rS   r   ztuple[int, int, int, bool])7__doc__
__future__r   r  r   r   r-   r!   r   r  rb   urllib.requestrz   r   decimalr   pathlibr   r#   r$   rE   ra  rS  r  r  r   r   r  r  r   r6   r;   rC   rF   rI   rL   rN   rj   rm   rt   r   r   r   r   r   r   r   rA   r  r  r'  r   r  r   
SystemExitr:   r   r   <module>r     s3   # T T T T T   
d+/6N	**
\]))
..	wI
 */Z_ $' 27 RKJDGU-p<Ug# #L
CA$]@e Zz$&11r   