
    @WjEX                       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mZ ddlmZ dZdZdZej$                   eed	d      z  Z G d
 de      Zd&dZd'dZd(dZd)dZd*dZd+dZd,dZd-dZd.dZd/dZ d0dZ!d1dZ"d2dZ#d3dZ$d4dZ%d5dZ&d6dZ'd7dZ(	 	 	 	 	 	 d8dZ)d9dZ*d:d Z+d;d!Z,d;d"Z-d<d#Z.d=d$Z/e0d%k(  r e1 e/             y)>zUPermission-sealed, archive-first profile reset. It has no service or network actions.    )annotationsN)Path)Anyz"task26-profile-reset-permission-v1z(task26-profile-reset-archive-manifest-v1z)task26-profile-reset-execution-receipt-v1
O_NOFOLLOWc                      e Zd Zy)
ResetErrorN)__name__
__module____qualname__     E.omo/evidence/task26/reset-controller-st_01a0054d/reset_controller.pyr   r      s    r   r   c                V    t        j                  | ddd      dz   j                         S )NT),:)	sort_keys
separatorsensure_ascii
)jsondumpsencode)values    r   	canonicalr      s'    JJuRVWZ^^ffhhr   c                H    t        j                  |       j                         S N)hashlibsha256	hexdigest)raws    r   digest_bytesr!      s    >>#((**r   c                   t        j                  | t         j                  t        z        }	 t        j                  |      }t        j                  |j                        r0|j                  dk7  s!|j                  t        j                         k7  rt        d|        t        j                  |j                        dvrt        d|        g }t        j                  |d      x}r*|j                  |       t        j                  |d      x}r*t        j                  |      }t        |      t        |      k7  rt        d|        dj!                  |      |ft        j"                  |       S # t        j"                  |       w xY w)N   zunsafe sealed file: >   @         zsealed file is not private:    z!sealed file changed during read: r   )osopenO_RDONLYO_FLAGSfstatstatS_ISREGst_modest_nlinkst_uidgetuidr   S_IMODEreadappendstablejoinclose)pathfdbeforechunkschunkafters         r   safe_external_filer@   "   s0   	r{{W,	-B"||FNN+v!/Cv}}XZXaXaXcGc3D6:;;<<'/KK;D6BCC wwr;//e/MM%  wwr;//e/&>VE]*@GHHxx'
s   C$E4 AE4 4Fc                    | j                   | j                  | j                  | j                  | j                  | j
                  | j                  | j                  fS r   )st_devst_inor0   r1   r2   st_sizest_mtime_nsst_ctime_ns)infos    r   r7   r7   5   sE    KKdllDMM4;;PTP\P\d..0 0r   c                (   | j                         }t        j                  dt        j                  t        j                  z  t
        z        }	 |j                  dd  D ]  }t        j                  |t        j                  t        j                  z  t
        z  |      }t        j                  t        j                  |      j                        s#t        j                  |       t        d|       t        j                  |       |} t        j                  |      }|j                  t        j                         k7  s"t        j                  |j                        dk7  rt        d      |S # t         $ r t        j                  |        w xY w)N/r#   dir_fdz$unsafe profile directory component: r'   z)profile root must be owner-held mode 0700)absoluter)   r*   r+   O_DIRECTORYr,   partsr.   S_ISDIRr-   r0   r9   r   r2   r3   r4   	Exception)r:   rL   r;   partnxtrG   s         r   	open_rootrS   :   s   }}H	bkkBNN2W<	=BNN12&D''$bnn <w FrRC<< 5 56 #Gv!NOOHHRLB ' xx|;;"))+%dll)Cu)LHII	 
s   D"E1 1 Fc                   |j                  d      }t        j                  |       }	 |d d D ]  }t        j                  |t        j                  t        j
                  z  t        z  |      }t        j                  |      }t        j                  |j                        rC|j                  t        j                         k7  s"t        j                  |j                        dk7  r#t        j                  |       t        d|       t        j                  |       |} ||d   fS # t         $ r t        j                  |        w xY w)NrI   rJ   r'   zunsafe authority directory: )splitr)   dupr*   r+   rM   r,   r-   r.   rO   r0   r2   r3   r4   r9   r   rP   )root_fdrelativerN   r;   rQ   rR   rG   s          r   open_parentrZ   N   s    NN3E	B#2JD''$bnn <w FrRC88C=D<<-		1Kt||\`\h\hOimrOr #?z!JKKHHRLB  59} 
s   C?D( ( Ec                    t        | |      \  }}	 	 t        j                  ||d      t        j                  |       S # t        $ r Y t        j                  |       y w xY w# t        j                  |       w xY w)NF)rK   follow_symlinks)rZ   r)   r.   r9   FileNotFoundError)rX   rY   parentnames       r   lstat_atr`   `   si    w1LFD	774F 	 ! 	
	 	s!   ? 	A A# A  A# #A:c                   t        | |      \  }}	 t        j                  |t        j                  t        z  |      }t        j
                  |       	 t        j                  |      }t        j                  |j                        rR|j                  t        j                         k7  s1|j                  dk7  s"t        j                  |j                        dk7  rt        d|       g }t        j                  |d      x}r*|j!                  |       t        j                  |d      x}r*t        j                  |      }t#        |      t#        |      k7  rt        d|       dj%                  |      |ft        j
                  |       S # t        j
                  |       w xY w# t        j
                  |       w xY w)NrJ   r#   r&   zFauthority file must be regular, private, owner-held, and single-link: r(   z&authority changed during stable read: r   )rZ   r)   r*   r+   r,   r9   r-   r.   r/   r0   r2   r3   r1   r4   r   r5   r6   r7   r8   )	rX   rY   r^   r_   r;   r<   r=   r>   r?   s	            r   read_regularrb   k   sO   w1LFDWWT2;;0@
"V^^,0L1$V^^(D(Mefneopqq wwr;//e/MM%  wwr;//e/&>VE]*EhZPQQxx'
 	 	s   -F CF( ,AF( F%(F?c           	     8   t        | |      }|g S t        j                  |j                        rPt	        | |      \  }}|t        |      t        |      t        t        j                  |j                        d      dgS t        j                  |j                        rC|j                  t        j                         k7  s"t        j                  |j                        dk7  rt        d|       t        | |      \  }}	 t        j                  |t        j                   t        j"                  z  t$        z  |      }t        j&                  |       	 g }t)        t        j*                  |            D ]"  }	|j-                  t/        | | d|	              $ t1        |      t1        t        j2                  |            k7  rt        d|       |t        j&                  |       S # t        j&                  |       w xY w# t        j&                  |       w xY w)N04or:   r   sizemoder'   z+authority root is not a private directory: rJ   rI   z.authority directory changed during traversal: )r`   r.   r/   r0   rb   r!   lenformatr4   rO   r2   r)   r3   r   rZ   r*   r+   rM   r,   r9   sortedlistdirextendwalk_authorityr7   r-   )
rX   rY   rG   r    observedr^   r_   	directoryrowschilds
             r   rm   rm      s   GX&D|	||DLL!$Wh7X!\#->CX-=-= >FH I 	I<<%		)Ct||TXT`T`GaejGjFxjQRRw1LFDGGD"++">"HQWX	
%'BJJy12EKKw8*AeW0EFG 3$<6"((9"566MhZXYY
 	 	s    >G( A>H (G?Hc           
        g }t        j                  | dd      D ]  \  }}}|j                          |j                          t        |      }||z   D ]v  }||z  }|j	                  |       j                         }|j                         }	t        j                  |	j                        rJ|j                  d|j                         z   dz   t        j                  |      j                         z          t        j                  |	j                        r_|j                  d|j                         z   dz   t        t        j                  |	j                        d      j                         z          t        j                   |	j                        r,t        j"                  |t         j$                  t&        z        }
	 t        j(                  |
      }t+        j,                         }t        j.                  |
d      x}r*|j1                  |       t        j.                  |
d      x}r*t        j(                  |
      }t3        |      t3        |      k7  rt5        d	|       |j                  d
|j                         z   dz   |j7                         j                         z          t        j8                  |
       kt5        d|         t;        dj=                  |            S # t        j8                  |
       w xY w)NTF)topdownfollowlinkss   L     s   D or(   ztree changed during read: s   F zunsupported tree entry:    
)r)   walksortr   relative_toas_posixlstatr.   S_ISLNKr0   r6   r   readlinkrO   ri   r4   r/   r*   r+   r,   r-   r   r   r5   updater7   r   r   r9   r!   r8   )r:   rp   rootdirsfilesbaser_   itemrelrG   r;   r<   hr>   r?   s                  r   tree_digestr      s2   DWWT4UKKdE		UZZ\Dz5LD$;D""4(113C::<D||DLL)FSZZ\1E9BKK<M<T<T<VVWdll+FSZZ\1E9F4<<PTP\P\C]_b<c<j<j<llmdll+WWT2;;#89&XXb\Fw~~/?1#%772{#;;%;QXXe_2772{#;;%;HHRLEf~6jKefjekIl>m8mKK 5 =@T@T@V VW" #;D6!BCC% ! L, 

4()) "s   >A*K*)A>K**Lc                   | j                   j                  ddd       t        j                  d| j                         \  }}	 t	        j
                  |d       d}|t        |      k  r+|t	        j                  |||d        z  }|t        |      k  r+t	        j                  |       t	        j                  |       d}t	        j                  ||        t	        j                  | j                   t        j                  t        j                  z  t        z        }t	        j                  |       t	        j                  |       	 |dk\  rt	        j                  |       t	        j                  |       y # t	        j                  |       w xY w# t         $ r Y y w xY w# |dk\  rt	        j                  |       t	        j                  |       w # t         $ r Y w w xY wxY w)	Nr'   Trg   parentsexist_okz.reset-)prefixdirr&   r   rU   )r^   mkdirtempfilemkstempr)   fchmodrh   writefsyncr9   replacer*   r+   rM   r,   unlinkr]   )r:   r    r;   	temporaryoffsetro   s         r   atomic_writer      sJ   KK5$>$$I4;;GMB	'
		"es3x288BFG+E!Efs3x
bhhrlB


9d#GGDKKr~~)E)OP	XXi )$7BHHRLYYy! )$ !&$& 7BHHRLYYy! &$&sb   AF! BF! E8 2F! "F 8FF! 	FF!G!<GG!	GG!GG!c                   t        | |      \  }}t        ||       t        |j                               t        |      k7  rt	        d|       |t        |      t        |      t        t        j                  |j                        d      dS )Nzarchive copy mismatch: rd   re   )
rb   r   r!   
read_bytesr   rh   ri   r.   r4   r0   )rX   rY   destinationr    rG   s        r   copy_stabler      s{    Wh/ICc"K**,-c1BB28*=>>S(93s84<<5u=? ?r   c                   |d   }d}|D ]  }|d   }|j                  d      s||vrt        d|       t        | |      \  }}t        j                  |      }	||   }|d   dk(  rt        |	t              st        d	|       t        |j                  d
d            j                  |	      st        d|       d|v r%|	j                  d      |d   k7  rt        d|       |j                  d      s|	j                  d      }t        |t              st        d      t        |d         }|D ]R  }t        |t              r6|j                  d      |vs#|j                  d      s|j                  d      sIt        d       t        |      } |S # t
        t        j                  f$ r}
t        d|       |
d }
~
ww xY w)Njson_schemasr   r:   z.jsonzunknown JSON schema: zinvalid JSON schema: typeobjectzwrong JSON root: required_keysr   zunknown/incomplete schema: schema_valueschemazunknown schema value: z*telegram-customer-bootstrap-v1/ledger.jsonsessionsz)customer-bootstrap sessions is not a listbootstrap_terminal_statesstaterole_claimsrecovery_attemptsz8customer-bootstrap ledger contains nonterminal authority)endswithr   rb   r   loadsUnicodeDecodeErrorJSONDecodeError
isinstancedictsetgetissubsetlistrh   )rX   rp   contractschemasbootstrap_countrowrY   r    _r   excruler   terminalsessions                  r   validate_json_schemasr      s   ~&GOv;  )7"4XJ?@@gx0QZZ_Ux <8#Jud,C:XijrisVtKuEu488OR01::5AVqrzq{T|I}C}T!eii&9T.=Q&QYcf|  ~F  }G  eH  ZI  TIIJyy,Hh-Z@k5l/l8$?@AH#"7D1W[[5IQY5YM2gkkBU6V$%_`` $ "(mO+ ,  #D$8$89
UjksjtSuHv|Bs   FG3GGc                r   t        |d         }t        j                  dt        j                  t        j                  z  t
        z  |       }t        t        j                  |            }t        j                  |       t        |d         }|D ch c]<  }|j                  d      s|j                  dd      d   j                  dd      d   > }}|d	   }|D ]C  }	d|	 |	|v s|	|v rt        fd
|D              r|j                         7t        d        g }
|D ]   t        |       |
j                         " g }t        t        |
      d       D ](  t        fd|D              r|j                         * t        |      S # t        j                  |       w xY wc c}w )Napproved_clear_scopesdatarJ   protected_data_rootszdata/rI   r#   r   dynamic_clear_patternsc              3  J   K   | ]  }t        j                  |        y wr   )fnmatchfnmatchcase).0patternrY   s     r   	<genexpr>z#effective_scopes.<locals>.<genexpr>   s     NX'w""8W5Xs    #zunknown data authority root: c                (    | j                  d      | fS )NrI   )countps    r   <lambda>z"effective_scopes.<locals>.<lambda>   s    QWWS\14Er   keyc              3  T   K   | ]  }|k(  xs j                  |d z          ! yw)rI   N)
startswith)r   r^   scopes     r   r   z#effective_scopes.<locals>.<genexpr>   s/     ZSY5F?De&6&6v|&DDSYs   %()r   r)   r*   r+   rM   r,   rj   rk   r9   r   r   rV   anyr6   r   r`   )rX   r   scopesdata_fdchildren	protectedr   approved_toppatternsrq   presentresultrY   r   s               @@r   effective_scopesr      s   (234FggfbkkBNN:WDWUG2::g./XXgH345IAGaA1<<X_K`AGGCOA&,,S!4Q7La01H5'?I,!6NXNNPVP]P]^fPgiq8
CDD	 
 GGU#/1F  FG*EFZSYZZ\b\i\ijo\p G&>! XXgas   F F4+*F4F1c           
        t        | j                        \  }}t        | j                        \  }}t        j                  |      }t        j                  |      }|j                  d      dk7  rt        d      t        | j                  | j                  | j                  | j                  t        t        t              j!                               t        |      dd}||k7  rt        d      | j                  dk7  rt        d	      t#        | j$                        d
k  st'        d | j$                  D              rt        d      ||fS # t        j
                  $ r}t        d      |d }~ww xY w)Nz(contract or permission is not valid JSONr   z task26-profile-reset-contract-v1zunknown reset contractT)r   approvalcandidate_digestwheel_sha256plan_sha256controller_sha256contract_sha256execute_allowedz&permission seal or exact pins mismatch@2e0894eac92bc396cc4723bf1f18ebc653b95018dd41574df435941c235da925z-candidate is not the exact approved successor   c              3  $   K   | ]  }|d v 
 yw)z@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_Nr   )r   cs     r   r   z"validate_inputs.<locals>.<genexpr>  s%       #E  yDst1,n#n  yDs   zinvalid deterministic run id)r@   r   
permissionr   r   r   r   r   APPROVAL_SCHEMAr   	candidater   r   r!   r   __file__r   rh   run_idr   )argscontract_rawr   permission_rawr   r   r   expecteds           r   validate_inputsr     sJ   (7OL!M_`d`o`oMp9JJJ|,4::n;Uj||H!CC:VnKoEo)t}}Z^ZhZh $ 1 1$BRBR%1$x.2K2K2M%N#/#=RVXH XZ0X%YY~~[[HII
4;;!s  #Ex|  yD  yD  #E   E788Z mj9c.djm(mms   *E E/E**E/c                   dt        j                  | j                               z   }g }t        d      j	                         D ]h  }|j
                  j                         s|dz  j                         j                  d      }||v sE|j                  t        |j
                               j t        |      S # t        t        t        t        f$ r Y w xY w)Ns   HERMES_HOME=z/procenvironru   )r)   fsencoderL   r   iterdirr_   	isdecimalr   rV   r]   PermissionErrorProcessLookupErrorOSErrorr6   intrj   )profileneedlefoundentryvaluess        r   processes_forr     s    r{{7+;+;+=>>FEg&&(zz##%xy(446<<UCVVU\\#ejj/:	 )
 %= "?4FPZRZZs    "B88CCc                ~   | j                   dz  | j                  g}g }|D ]  }|j                         s|j                         s|j	                         st        d|       t        |j                         d       D ]  }|j                  j                  d      s(|| j                  k(  r|j                  | j                  k(  rG|j                         s|j	                         st        d|       |j                  |j                  | j                         j                         t        |      d         |S )Nzdata/rehearsal-reset-archivesz unsafe archive collection root: c                    | j                   S r   )r_   r   s    r   r   z prior_archives.<locals>.<lambda>(  s    !&&r   r   	.pending-zunsafe prior archive root: r:   r   )r   archive_rootexists
is_symlinkis_dirr   rj   r   r_   r   r   r6   rz   r{   r   )r   rootsarchivesr   rq   s        r   prior_archivesr     s
   \\;;T=N=NOE%'H{{}??DKKM?vFGGDLLN0@AEzz$$[1dd>O>O6OTYT^T^bfbmbmTm! #>ug!FGGOOU%6%6t||%D%M%M%O[fgl[mno B  Or   c                X   t        | j                        }	 t        ||      }g }|D ]  }|j                  t	        ||              |j                  d        |D ch c]  }|d   	 }}t        t        |d         |z
        }|r| j                  dk7  rt        d|       t        |||      }	t        |       }
| j                  D ci c]%  }t!        |j#                               t%        |      ' }}||||	|
|fS c c}w # t        $ r t        j                  |        w xY wc c}w )Nc                    | d   S )Nr:   r   )r   s    r   r   zpreflight.<locals>.<lambda>7  s    #f+r   r   r:   required_current_scopesverifyz$required current authority missing: )rS   r   r   rl   rm   ry   rj   r   rg   r   r   rP   r)   r9   r  other_profilestrrL   r   )r   r   rX   r   rp   r   r   existingmissingr   r
  r:   others                r   	preflightr  1  s)   %G
!!'84%'ET[[)GHV		-	.+/04CCK40X&?@AHLMtyyH,JAefmen?o4p.p/xH d#HAEASASTASS!;t#44ASETFD/8UBB 1  !
5! Us%   AD C?*AD *D'?D  D$c                    t         | j                  | j                  | j                  | j                  | j
                  t        d |D              ||||dd}t        t        |            |d<   |S )Nc              3  ,   K   | ]  }|d    dk(    yw)r:   z:data/onboarding/telegram-customer-bootstrap-v1/ledger.jsonNr   )r   r   s     r   r   z!manifest_value.<locals>.<genexpr>G  s"      HnhladV \\hls   F)r   r   r   r   r   r   bootstrap_ledger_coveredbootstrap_session_countentriesr  other_profiles_pre_sha256restore_or_prepopulateevidence_digest)	MANIFEST_SCHEMAr   r   r   r   r   r   r!   r   )r   rp   r   r
  r  r   s         r   manifest_valuer  C  sw    &$++SWSaSa!..t?O?OC HnhlHn En(-$RZ*/5RE  ,Ie,<=E
Lr   c                   t        | |      \  }}||z  }|j                  j                  ddd       t        j                  |j                  t        j
                  t        j                  z  t        z        }t        j                  ||j                  ||       t        j                  |       t        j                  |       y # t        j                  |       t        j                  |       w xY w)Nr'   Tr   
src_dir_fd
dst_dir_fd)rZ   r^   r   r)   r*   r+   rM   r,   renamer_   r9   )rX   r   
quarantinesource_parentr_   r   dest_parents          r   
move_scoper(  O  s    %gu5M4u$K%E''+,,bkkBNN.JW.TUK	4))mP[	\XXm$bhh{&;RXXm$bhh{&;s   9#C ,C3c                   t        |      D ]  }||z  }|j                         st        | |      \  }}t        j                  |j
                  t        j                  t        j                  z  t        z        }t        j                  |j                  |||       t        j                  |       t        j                  |        y # t        j                  |       t        j                  |       w xY w)Nr!  )reversedr  rZ   r)   r*   r^   r+   rM   r,   r$  r_   r9   )rX   r   r%  r   sourcedestination_parentr_   
src_parents           r   rollbackr.  X  s    &!e#}}#.w#> DWWV]]BKK"..,H7,RS
YYv{{DZL^_*%rxx0B'C " *%rxx0B'Cs   :#C

,C6c                
   t        | j                        rt        d      t        | |      \  }}}}}}| j                  d| j
                   z  }| j                  | j
                  z  }	|j                         s|	j                         r t        j                  |       t        d      |j                  dd       |dz  }
|
j                  d       g }d	}	 |D cg c]  }t        ||d
   |
|d
   z         }}||k7  rt        d      t        | ||||      }t        |dz  t        |             |D ]#  }t        |||dz         |j                  |       % |D ]  }t!        ||      t        d|        | j"                  rt        d      | j$                  D ci c]%  }t'        |j)                               t+        |      ' }}||k7  rt        d      t-        |       |k7  rt        d      t.        dd| j
                  t1        t        |            |d   |d   dddd
}t        |dz  t        |             t        j2                  ||	       d}|t        j                  |       |s'|j                         rdd l}|j7                  |       S S S c c}w c c}w # t8        $ r |st;        |||dz          w xY w# t        j                  |       |s'|j                         rdd l}|j7                  |       w w w xY w)Nz#profile still has running processesr  zarchive run id already existsr'   T)rg   r   payload)rg   Fr:   z staged archive manifest mismatchmanifest.jsonzrollback-originalszclear mismatch: zinjected precommit mismatchz#other profile changed before commitz#prior archive changed before commitPASSexecuter  r  z!archive directory rename (commit))
r   statusrg   r   manifest_sha256r  r  post_reset_empty_baselineother_profiles_unchangedrollback_boundaryreceipt.jsonr   )r   r   r   r  r  r   r  r)   r9   r   r   r  r   r   r(  r6   r`   test_fail_before_commitr  r  rL   r   r  RECEIPT_SCHEMAr!   r$  shutilrmtreerP   r.  )r   r   rX   r   rp   r   priorr  pendingfinalr0  moved	committedr   copiedmanifestr   r:   other_afterreceiptr<  s                        r   r3  r3  b  s   T\\"*5Z*[$[1:41J.GVT5%Idkk]";;G+E~~5<<>288G+<JOnDo>oMMudM+	!G7==e=#<EI#VZ[VZs+gs6{Gc&k4IJVZ[T>,N!OO!$eUEBW.	(0CDEww1E'EFUZH[ E'3:HXY^X_F`;a5a ''z:W/X)XKOK]K]^K]4s4==?+[->>K]^%z2W'X!X$5(BCC+vy\`\g\g&29X3F&G\dev\w/78R/Srv/3Jmo 	W~-y/AB
		'5!t9
 	W^^-MM'" .y3 \ _  (7E7=Q3QR 	W^^-MM'" .ys?   J" J9A2J" ,4J"  *J
BJ" 
J" "J??K A Lc                   | j                   xs | j                  | j                  z  }t        |dz        \  }}t        |dz        \  }}t	        j
                  |      }t	        j
                  |      }|j                  d      t        k7  s|j                  d      t        k7  rt        d      t        |      }|j                  dd       }	|	t        t        |            k7  rt        d      |j                  d      t        |      k7  rt        d      |d	   D ]L  }
t        |d
z  |
d   z        \  }}t        |      |
d   k7  st        |      |
d   k7  s=t        d|
d           t        | j                         }	 t#        ||      }|rt        d|       	 t%        j&                  |       g }|d   D ]4  }
| j                   |
d   z  }|j)                  |
d   t+        |      d       6 ||d   k7  rt        d      | j,                  D ci c]%  }t/        |j1                               t+        |      ' }}||d   k7  rt        d      dddt/        |      t        |      |d   ddS # t%        j&                  |       w xY wc c}w )Nr1  r9  r   zunknown archive schemar  z!manifest evidence digest mismatchr5  zreceipt manifest pin mismatchr  r0  r:   rf   r   zarchive payload mismatch: z#post-reset authority is not empty: r  r  zprior archive hash mismatchr  zother profile mismatchz0task26-profile-reset-independent-verification-v1r2  r  r  T)r   r4  rg   archiver5  r  r6  )rH  r  r   r@   r   r   r   r  r;  r   r   popr!   r   rh   rS   r   r   r)   r9   r6   r   r  r  rL   )r   r   rH  manifest_rawr   receipt_rawrD  rF  evidenceclaimedr   r    rX   r   current_priorr:   r  s                    r   verify_archiverO    s   ll?t004;;>G(?)BCOL!'.(@ANKzz,'H4::k3J||H0GKK4I^4[cm  oG  dH  ^HH~H6G)Nw,y233:Fi;j5j{{$%l)CC:VuKvEv	"#Gi$7#f+$EFQs8s6{"l3&73x=&HPZ]wx{  }C  yD  xE  \F  QG  KG # %G!'84&I&$RSS6XXgM()||c&k)c&k[=NOP * !122*Eb:c4cAEASASTASS!;t#44ASET455ZH`=a7aHTZdl7|\8R(01K(Lkoq q XXg Us    I/ *J	/Jc                 v   t        j                         } | j                  dd       | j                  dt        d       | j                  dt        dg 	       | j                  d
t        d       | j                  dt               | j                  dt        d       | j                  dt        d       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  dd       | j                  ddt         j                         | S )Nrg   )dry-runr  r3  )choicesz	--profileT)r   requiredz--other-profiler6   )r   actiondefaultz--archive-rootz	--archive)r   z
--contractz--permissionz--candidate)rS  z--wheel-sha256z--plan-sha256z
--approvalz--run-idz--test-fail-before-commit
store_true)rT  help)argparseArgumentParseradd_argumentr   SUPPRESS)r   s    r   parserr\    s%   $$&F
(HI
$>
)XrR
(tdC
$/
4$?
TDA
5
(48
$7
t4

T2
3LxO`O`aMr   c                    t               j                         } 	 t        |       \  }}| j                  dk(  rt	        | |      }n|| j                  dk(  rt        | |      }n`t        | |      \  }}}}}}	t        j                  |       dddt        | j                  j                               |t        | ||||	      dd}t        j                  j                  j!                  t#        |             y# t$        t&        t(        t*        t,        f$ r-}
t        j.                  j!                  d|
 d	       Y d }
~
y
d }
~
ww xY w)Nr3  r  ztask26-profile-reset-dry-run-v1r2  rQ  r   )r   r4  rg   r   r   rD  	mutationszFAIL: r      )r\  
parse_argsr   rg   r3  rO  r  r)   r9   r  r   rL   r  sysstdoutbufferr   r   r   r   
ValueErrorKeyError	TypeErrorstderr)r   r   r   r   rX   r   rp   r   r>  r  r   s              r   mainrh    s   8 D5%d+!99	!74+B5YY("N4,JE9B49R6GVT5%HHW@F\e #DLL$9$9$; <!/dE5%!P_`bE 	

	% 01!XyA 5

6#b)*15s   CC3 3D>#D99D>__main__)r   r   returnbytes)r    rk  rj  r  )r:   r   rj  tuple[bytes, os.stat_result])rG   zos.stat_resultrj  ztuple[int, ...])r:   r   rj  r   )rX   r   rY   r  rj  ztuple[int, str])rX   r   rY   r  rj  zos.stat_result | None)rX   r   rY   r  rj  rl  )rX   r   rY   r  rj  list[dict[str, Any]])r:   r   rj  r  )r:   r   r    rk  rj  None)rX   r   rY   r  r   r   rj  dict[str, Any])rX   r   rp   rm  r   ro  rj  r   )rX   r   r   ro  rj  	list[str])r   argparse.Namespacerj  z%tuple[dict[str, Any], dict[str, Any]])r   r   rj  z	list[int])r   rq  rj  list[dict[str, str]])r   rq  r   ro  rj  zVtuple[int, list[str], list[dict[str, Any]], int, list[dict[str, str]], dict[str, str]])r   rq  rp   rm  r   r   r
  rr  r  zdict[str, str]rj  ro  )rX   r   r   r  r%  r   rj  rn  )rX   r   r   rp  r%  r   rj  rn  )r   rq  r   ro  rj  ro  )rj  zargparse.ArgumentParser)rj  r   )2__doc__
__future__r   rX  r   r   r   r)   r.   ra  r   pathlibr   typingr   r   r  r;  	O_CLOEXECgetattrr,   RuntimeErrorr   r   r!   r@   r7   rS   rZ   r`   rb   rm   r   r   r   r   r   r   r   r  r  r  r(  r.  r3  rO  r\  rh  r	   
SystemExitr   r   r   <module>r{     s   [ "     	  
   6<<
,,\15
5	 	i+&0
($,4*6'$?8. ""C$	1	:H	M[	<D&#Rq:$5" z
TV
 r   