+
    jk                        ^ RI t ^ RIt^ RIt^ RItR tR tR tR t]R8X  Ed?   ]	! ]P                  4      ^8  d	   ]! R4       ]P                  R,          t/ tR	]9   d   ]P                  R	4      t]R] ]]^,           R utt] F  t ]P%                  R
^4      w  tt]'       dl   ]P,                  P/                  ]4      '       gK   R]9   gD   ]	! ]4      ^@8w  g7   ];QJ d    R ] 4       F  '       g   K   RM	  RM! R ] 4       4      '       d	   ]! R4       ]P3                  ]]! 4       4      P7                  ]4       K  	  M]t]! ]P                  ^,          ]]4       R# R#   ] d    ]! R4        Li ; i)    Nc                 h    \        V \        P                  R 7       \        P                  ! ^4       R# ))fileN)printsysstderrexit)msgs   &B/home/user/.cache/overdeck-diagnostics/runtime-subset-validator.pyfailr      s    	#CJJHHQK    c                    \         P                  P                  \         P                  P                  V4      4      p\         P                  P	                  \         P                  P                  W24      4      p\         P                  P                  V 4      p W@8H  ;'       g'    VP                  V \         P                  ,           4      # N)ospathdirnameabspathnormpathjoin
startswithsep)root	link_path	link_textparentresolveds   &&&  r
   symlink_resolves_insider   
   sx    WW__RWW__Y78FwwV ?@H77??4 DAAx224"&&=AAr   c                    \         P                  ! 4       p\        V R 4      ;_uu_ 4       p VP                  R4      pV'       g   VP	                  4       uuRRR4       # VP                  V4       KG    + '       g   i     R# ; i)rbN   )hashlibsha256openread	hexdigestupdate)r   digestfhchunks   &   r
   file_sha256r)      s_    ^^F	dD		RGGK(E'')	 
	
 MM%  
		s   *A2A22B	c                 B
   \         P                  P                  V 4      pV Uu. uF"  p\         P                  P                  V4      NK$  	  pp\         P                  P                  V4      '       g   \	        R 4       V'       d;   \
        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \	        R4       \         P                  ! VRRR7       EF  w  rgp\         P                  P                  Wc4      p	V	R8X  d   Rp	. p
\        \        V4      \        V4      ,          4       EF/  pVR8X  g   VP                  R	4      '       d   K$  V	'       g   TMV	 R
V 2p\         P                  P                  Wk4      p \         P                  ! V4      p. pRpV FK  p\         P                  P                  VV4      p VP                  V\         P                  ! V4      34       KM  	  V'       g   \	        V'       d   RV 2MRV 24       \         P"                  ! XP$                  4      pV UUu. uF1  w  pp\         P"                  ! VP$                  4      V8X  g   K-  VV3NK3  	  pppV'       g   \	        RV 24       V\         P&                  8X  d   RpV F  w  ppVP(                  VP(                  8w  d   K#  \+        VR4      ;_uu_ 4       p\+        VR4      ;_uu_ 4       p VP-                  R4      pVP-                  R4      pVV8w  d   MV'       d   K5  Rp RRR4       RRR4       V'       g   K   M	  V'       g+   \/        V4      VP1                  V\        4       4      9   d   RpV'       g   \	        RV 24       EK_  EKb  V\         P2                  8X  d    \         P4                  ! V4      p\7        W=X4      '       g   \	        RV 24       RpV F&  w  pp V\         P4                  ! V4      8X  d   Rp MK(  	  V'       g   \	        RV 24       EK  EK  V\         P8                  8X  d   V
P                  V4       EK!  \	        RV 24       EK2  	  WR&   EK  	  R# u upi   \         d    \	        RT 24        ELi ; i  \         d     EK  \         d    Rp EK  i ; iu uppi   + '       g   i     EL; i  + '       g   i     EL; i  \         d    \	        RT 24        ELCi ; i  \         d     EK2  i ; i)zsubset:not-a-directoryc              3   j   "   T F)  p\         P                  P                  V4      '       * x  K+  	  R # 5ir   )r   r   exists).0r   s   & r
   	<genexpr>validate.<locals>.<genexpr>   s#     EfdRWW^^D111fs   13TFzsubset:target-missing)topdownfollowlinks. __pycache__z.pyc/zsubset:unreadable:zsubset:target-unreadable:zsubset:unknown:zsubset:type-mismatch:r   Nzsubset:content-mismatch:zsubset:symlink-unreadable:zsubset:unsafe-symlink:zsubset:symlink-mismatch:zsubset:special-file::NNNr   )r   r   r   isdirr   anywalkrelpathsortedsetendswithr   lstatOSErrorappendFileNotFoundErrorstatS_IFMTst_modeS_IFREGst_sizer"   r#   r)   getS_IFLNKreadlinkr   S_IFDIR)quarantine_roottarget_rootslegacyqrootr   trootsdirpathdirnames	filenamesrel_dirdescendnamerelqpathqsttargetstarget_errortroottpathqmoder   tsttypedmatchedqftfqbtbqlink_tsts   &&&                           r
   validaterf      s   GGOOO,E0<=bggood#F=77==%&SSEfESSSEfEEE$%(*tQV(W(W$9''//'1c>G3x=3y>9:D }$f(=(=%$gYav+>CGGLL/E1hhuo G LUC0(NNE288E?#;<   ,06o^a]bLcdKK,E29_'YT3T[[=UY^=^[dC['E_,SE23$"'JE3{{ckk1 eT**b$ud2C2Cr"!#!5B!#!5B!Rx %#%2*. % 3D* w #( ;u#5C9O#O"G3C59: $,,&=KK.E /uUCC1#78#(KE4! BKK$66&*G! 7 $) 3C59: $,,&t$+C512G ;H S )X >&  1)#/01 )  (#'L(
 ` 3D2C2C***$  =5cU;<= # ! !s   (Q8Q='R*S 
0S 
!S61S,S/S1S.2T=RRR=	,R=	5R=	<R=	S	SS+.T
TT	T	__main__zsubset:usage:   NNz--legacy=zsubset:legacy-usagez..c              #   *   "   T F	  qR 9  x  K  	  R# 5i)0123456789abcdefN )r-   cs   & r
   r.   r.   x   s#       XE  ~DxyasXs  ~Ds   TF)r    r   rA   r   r   r   r)   rf   __name__lenargvargsrL   indexsplitrK   specsspecrsplitrU   r&   
ValueErrorr   isabsr7   
setdefaultr;   addrl   r   r
   <module>r{      s~    	  
B!Pd z
388}q^88B<DFT

:&"6ElD,<eD,"kk#q1V "''--,,s6{b?PTW  XE  ~D  XETWTWTW  XE  ~D  XE  UE  UE*+c35)--f5  SXXa[,/%   ,*+,s   	E%%E76E7