ó
    ëŒ«j£  ã                  ó€   • S SK Jr  S SKrS SKr\R                  " S5      r\R                  " S5      rS rS rS r	S r
g)	é    )ÚannotationsNz^[0-9a-f]{64}$z^[0-9a-f]{40}$c                ó.   • XS.o3R                  U5        U$ )N)ÚdecisionÚfailed_boundary)Úupdate)r   ÚboundaryÚextraÚouts       Úy/mnt/data/sec015_macrob_work/build/SEC-015_ACCEPTED_CANDIDATE_QUERY2/lab/SEC015-LAB1/learner/src/supply_chain_evidence.pyÚ_denyr      s   € ØÑ8€C¿*¹*ÀUÔ:KÐTWÈZó    c                ó&  • [         R                  " U 5      o!S   R                  S5      o2nUS S  H)  oUR                  5       (       a  U[	        U5         OXE   nM+     US   nUR                  5       (       a  US   U[	        U5      '   U$ US   XF'   U$ )NÚpathÚ.éÿÿÿÿÚvalue)ÚcopyÚdeepcopyÚsplitÚisdigitÚint)ÚdataÚprobeÚdÚpartsÚcurÚpartÚlasts          r   Úapply_prober   
   sƒ   € Ü
‡m‚m�DÓ€A v¡×!4Ñ!4°SÓ!9˜5¸3Ø�c�r“
ˆ·,±,·.±. ¤C¨£I¢ÀcÁišC‘
Ø	ˆr‰€DØ‡|�|‡~�~ e¨G¡n�sœ3˜t›9‘~à€Hð ˜'‘Nˆ#‰)Ø€Hr   c                ó~  • U R                  S5      n[        U[        5      (       a  U(       d  g/ nU Hâ  n[        U[        5      (       d    gUR                  S5      oCR                  S5      oSR                  S5      n[        UR                  S5      [        5      (       a)  UR                  S5      =(       d    0 R                  S5      OS n[	        S	 XEXg4 5       5      (       d    g
[
        R                  U5      (       d    gUR                  U5        Mä     [        [        U5      5      [        U5      :w  a  gUS 4$ )NÚ
components)Nz#components must be a non-empty list)Nzcomponent must be objectÚnameÚversionÚpurlÚdigestÚsha256c              3  óp   #   • U  H,  n[        U[        5      =(       a    UR                  5       v •  M.     g 7f©N)Ú
isinstanceÚstrÚstrip©Ú.0Úxs     r   Ú	<genexpr>Ú0_component_names_and_validate.<locals>.<genexpr>   s'   é € ÐTÒ<S°q”:˜a¤Ó$×2¨¯©«Ô2Ò<Sùs   ‚46)Nzcomponent metadata missing)Nzcomponent sha256 invalid)Nz7duplicate component names are ambiguous in this fixture)
Úgetr)   ÚlistÚdictÚallÚHEX64Ú	fullmatchÚappendÚlenÚset)ÚsbomÚcompsÚnamesÚcr"   r#   r$   Údigs           r   Ú_component_names_and_validater?      s"  € Ø
�(‰(�<Ó
 €EÜ�eœD×!Ñ!®Ð7aØ
€EÛˆÜ˜!œD×!Ñ!Ñ*IØ�U‰U�6‹]ˆ§E¡E¨)Ó$4˜G¿5¹5À»=°dô  xBð  CD÷  CHñ  CHð  IQó  CRô  SW÷  xXñ  xXÈqÏuÉuÐU]Ë×OdÐbd×NiÑNiÐjrÔNsð  ^bÈ#ÜÑT¸TÈ$Ñ<SÓT×TÑTÑ]~Ü�‰˜s×#Ñ#Ñ,KØ�‰�TÖñ ô Œ3ˆu‹:ƒœ˜E›
Ó"Ð+iØ�ˆ:Ðr   c                ó  ^!^"•  [        U [        5      (       a  [        U[        5      (       d  [        SS5      $ U R                  S5      m!U R                  S5      o R                  S5      o0R                  S5      n[	        S T!X#U4 5       5      (       d  [        SS5      $ [        T!R                  S5      [        5      (       a)  T!R                  S5      =(       d    0 R                  S	5      OS nUR                  S
5      UR                  S5      UR                  S5      UR                  S5      /nT!R                  S5      T!R                  S5      T!R                  S5      U/n[	        S Xg-    5       5      (       d  [        SS5      $ [
        R                  U5      (       d  [        SS5      $ Xv:w  a  [        SS5      $ UR                  S5      n[        U[        5      (       a$  [        UR                  S5      [        5      (       d  [        SS5      $ UR                  S5      T!S   :w  d0  UR                  S5      T!S   :w  d  US   R                  S	5      U:w  a  [        SS5      $ [        U5      u  m"n	U	(       a  [        SSU	S9$ UR                  S/ 5       V
s/ s H  oª[        T"5      ;  d  M  U
PM     nn
U(       a  [        SSUS9$ [        U!4S jUS    5       S 5      nU(       a=  UR                  S5      T!S   :w  d%  UR                  S0 5      R                  S	5      U:w  a  [        SS 5      $ UR                  S!5      n[        U[        5      (       a&  [        UR                  5       5      [        T"5      :w  a  [        S"S#5      $ UR                  5        HB  u  pï[        U[        5      (       a  [        U"4S$ jU 5       5      (       d  M6  [        S"S#5      s  $    UR                  S%/ 5       H*  u  nnUUR                  U/ 5      ;  d  M  [        S"S#5      s  $    UR                  S&/ 5       H&  nUR                  U5      / :w  d  M  [        S"S#5      s  $    UR                  S'5      UR                  S(5      :w  d$  UR                  S)5      UR                  S*5      :w  a  [        S+S,5      $ UR                  S-5      n[        U[        5      (       a'  [        U5      S.:w  d  [        US/   [        5      (       d  [        S0S15      $ [        US/   R                  S5      [        5      (       a,  US/   R                  S5      =(       d    0 R                  S	5      OS nUS/   R                  S5      T!S   :w  d  UU:w  a  [        S0S15      $ UR                  S25      n[        U[        5      (       d  [        SS5      $ UR                  S35      nUR                  S45      n[        U[        5      (       a  [        U[        5      (       d  [        SS5      $ [        UR                  S55      [        5      (       a)  UR                  S55      =(       d    0 R                  S5      OS n[        U[        5      (       a  UUR                  S6/ 5      ;  a  [        S7S8US99$ UR                  S:5      S;LdI  [        UR                  S<5      [        5      (       a%  UR                  S<5      UR                  S=/ 5      ;  a  [        S>S?5      $ UR                  S@5      n[        U[        5      (       d  [        SS5      $ UR                  SA5      nUR                  SB5      nSCn/ nU HÃ  n[        U[        5      (       d  M  UR                  SD5      n[        UR                  S5      [        5      (       a  UR                  S5      O0 nUR                  SE5      n [        U[        5      (       a)  [        U [        5      (       a  UR!                  UU SF.5        UU:X  d  M¹  U U:X  d  MÁ  S;nMÅ     U(       d  [        SGSHUSI9$ SJS U[        US   5      UUUS<   SK.$ s  sn
f ! ["        [$        [&        [(        [*        4 a    [        SS5      s $ f = f)LNÚDENY_MALFORMED_EVIDENCEÚMALFORMED_EVIDENCEÚartifactr:   Ú
provenanceÚattestationc              3  óB   #   • U  H  n[        U[        5      v •  M     g 7fr(   )r)   r3   r,   s     r   r/   Úevaluate.<locals>.<genexpr>#   s   é € Ð7ª; aŒz˜!œD×!Ð!ª;ùs   ‚r%   r&   Úexpected_artifact_idÚexpected_artifact_nameÚexpected_artifact_versionÚexpected_artifact_digestÚidr"   r#   c              3  óT   #   • U  H  n[        U[        5      =(       a    Uv •  M      g 7fr(   )r)   r*   r,   s     r   r/   rG   '   s   é € Ð@²¨1Œz˜!œCÓ ×& QÔ&²ùs   ‚&(ÚDENY_ARTIFACT_IDENTITYÚARTIFACT_IDENTITYÚtargetÚDENY_SBOM_ARTIFACT_MISMATCHÚSBOM_ARTIFACT_BINDINGÚSBOM_COMPONENT_METADATA)ÚreasonÚrequired_componentsÚDENY_SBOM_COVERAGEÚSBOM_COVERAGE)Úmissing_componentsc              3  óZ   >#   • U  H   oR                  S 5      TS    :X  d  M  Uv •  M"     g7f)r"   N)r1   )r-   r=   Úas     €r   r/   rG   4   s$   øé € ÐIš_˜·±°f³¸qÀ¹yÑ0H—!‘!š_ùs   ƒ+¢	+r!   ÚDENY_SBOM_COMPONENT_BINDINGÚSBOM_COMPONENT_BINDINGÚdependenciesÚDENY_SBOM_DEPENDENCY_GRAPHÚSBOM_DEPENDENCY_GRAPHc              3  óx   >#   • U  H/  n[        U[        5      (       + =(       d    U[        T5      ;  v •  M1     g 7fr(   )r)   r*   r9   )r-   r=   r<   s     €r   r/   rG   ;   s2   øé € Ð/qÒhpÐcd´ZÀÄ#Ó5FÔ1F×1]È!ÔSVÐW\ÓS]ÑJ]Ô1]Òhpùs   ƒ7:Úrequired_dependency_edgesÚrequired_dependency_terminalsÚ_typeÚexpected_statement_typeÚpredicateTypeÚexpected_predicate_typeÚDENY_PROVENANCE_TYPEÚPROVENANCE_TYPEÚsubjecté   r   Ú DENY_PROVENANCE_SUBJECT_MISMATCHÚPROVENANCE_SUBJECT_BINDINGÚ	predicateÚ
runDetailsÚbuildDefinitionÚbuilderÚapproved_buildersÚDENY_UNAPPROVED_BUILDERÚBUILDER_POLICY)Ú
builder_idÚsynthetic_verifiedTÚidentityÚapproved_attestorsÚDENY_ATTESTATION_IDENTITYÚATTESTATION_POLICYÚresolvedDependenciesÚexpected_source_uriÚexpected_source_revisionFÚuriÚ	gitCommit)r}   r~   ÚDENY_SOURCE_REVISIONÚSOURCE_REVISION_BINDING)Úobserved_sourcesÚACCEPT_EVIDENCE_SET)r   r   Úartifact_digestÚcomponent_countrt   Úsource_revisionÚattestation_identity)r)   r3   r   r1   r4   r5   r6   r?   r9   ÚnextÚkeysÚitemsr2   Úanyr8   r*   r7   ÚKeyErrorÚ	TypeErrorÚ
IndexErrorÚAttributeErrorÚ
ValueError)#r   ÚpolicyÚsÚpÚattÚadÚexpectedÚactualrP   Úerrr.   ÚmissingÚprimaryÚdepsÚparentÚchildrenÚchildÚterminalÚsubjectsÚsdÚpredÚrdÚbdrp   Údeps2Úexpected_uriÚexpected_revÚmatchÚobservedÚdepr}   r>   ÚrevrZ   r<   s#                                    @@r   Úevaluater«      sÄ  ù€ ð?AÜ�dœ4× Ñ ¬
°6¼$×(?Ñ(?ÌÐNgÐh|ÓH}ÐA}Ø
‡h�hˆzÓ€A˜dŸh™h vÓ.˜A·(±(¸<Ó2H°ÏhÉhÐWdÓNeÈ#ÜÑ7¨A¨a°#©;Ó7×7Ñ7ÄÐF_Ð`tÓ@uÐ9uÜ0:¸1¿5¹5À»?Ì4×0PÑ0Pˆ�‰ˆh‹×˜2×"Ñ" 8Ô,ÐVZ€BØ�j‰jÐ/Ó0°·±Ð<TÓ1UÐV\×V`ÑV`Ða|ÓV}ð  E÷  Iñ  Ið  Jdó  eð  f€HØ�E‰E�$‹K˜Ÿ™˜f› a§e¡e¨IÓ&6°rÐ:€FÜÑ@°²Ó@×@Ñ@ÌÐOhÐi}ÓI~ÐB~Ü�?‰?˜2×Ñ¤uÐ-FÐG[Ó'\Ð \ØÓ¤Ð&>Ð?RÓ SÐSà�5‰5�‹?€FÜ�fœT×"Ñ"¬*°V·Z±ZÀÓ5IÌ$×*OÑ*OÔX]Ð^wð  yMó  YNð  RNØ‡z�z�&Ó˜1˜V™9Ó$¨¯
©
°9Ó(=¸qÀ¹|Ó(KÈvÐV^ÑO_×OcÑOcÐdlÓOmÐoqÓOqÜÐ2Ð3JÓKÐKä+¨AÓ.�I€Eˆ#Þ
”5Ð2Ð3LÐTWÑXÐXØŸ
™
Ð#8¸Ô<ÓTÒ<�1ÌÈUËÑ@S�QÑ<€GÐTÞ”uÐ1°/ÐU\Ñ]Ð]ÜÔI˜Q˜|š_ÓIÈ$ÓO€GÞ�g—k‘k )Ó,¨a°	©lÓ:¸g¿k¹kÈ(ÐSUÓ>V×>ZÑ>ZÐ[cÓ>dÐfhÓ>hÜÐ2Ð3KÓLÐLà	
�‰ˆ~Ó	€DÜ�dœ4× Ñ ¤C¨¯	©	«Ó$4´c¸%³jÓ$@ÌÐOkð  mDó  JEð  CEØŸ:™:ž<‰ˆÜ˜(¤4×(Ñ(¬CÔ/qÑhpÓ/q×,qÓ,qÜÐ5Ð6MÓNÒNñ (ð Ÿ
™
Ð#>¸rÖB‰ˆˆuØ˜Ÿ™ ¨Ó+Õ+´EÐ:VÐWnÓ4oÒ-oñ Cà—J‘JÐ>¸rÖBˆØ�8‰8�HÓ˜rÕ!¬%Ð0LÐMdÓ*eÒ#eñ Cð 	‡u�uˆWƒ~�v—z‘zÐ";Ó<Ó<ÀÇÁÀoÓ@VÐX^×XbÑXbÐc|ÓX}Ó@}ÜÐ+Ð,=Ó>Ð>Ø�U‰U�9Ó€HÜ�hœt×$Ñ$¬¨H«°qÓ(8Ä
È8ÐTUÉ;ÔW[×@\Ñ@\Ôejð  lNð  Okó  flð  _lÜ:DÀXÈaÁ[Ç_Á_ÐU]ÓE^Ô_c×:dÑ:dˆ�‰�‰˜Ó!×' R×,Ñ,¨XÔ6Ðjn€BØ��{‡��vÓ  $¡Ó'¨2¨r«6¼%Ð@bÐcó  ;Að  4Aà	
�‰ˆ{Ó	€DÜ�dœ4× Ñ ¬Ð/HÐI]Ó)^Ð"^Ø‡x�x�Ó€B $§(¡(Ð+<Ó"=˜rÜ�bœ×Ñ¤j°´D×&9Ñ&9Ä%ÐHaÐbvÓBwÐ;wÜ3=¸b¿f¹fÀYÓ>OÔPT×3UÑ3UˆR�V‰V�IÓ×$ "×)Ñ)¨$Ô/Ð[_€GÜ�gœc×"Ñ" g°V·Z±ZÐ@SÐTVÓ5WÓ&WÔ`eÐfð  AQð  ]dñ  aeð  ZeØ
‡w�wÐ#Ó$¨DÒ0¼
À3Ç7Á7È:ÓCVÔWZ×8[Ñ8[Ð_b×_fÑ_fÐgqÓ_rð  {A÷  {Eñ  {Eð  FZð  []ó  {^ó  `^ÜÐ0Ð1EÓFÐFà
�&‰&Ð'Ó
(€EÜ�eœD×!Ñ!¬%Ð0IÐJ^Ó*_Ð#_Ø—‘Ð1Ó2€LÀÇÁÐLfÓAg°LØ
€E˜"�ÛˆÜ˜#œd×#Ñ#¡XØ�G‰G�E‹Nˆ´ZÀÇÁÈÓ@QÔRV×5WÑ5W §¡¨Ô 1Ð]_˜CØ�G‰G�KÓ ˆÜ�cœ#×Ñ¤:¨c´#×#6Ñ#6¸¿¹ÈsÐ_bÑHcÔ8dØ�Õ  lÕ!2¸$²Eñ ö œÐ5Ð6OÐaiÑjÐjØ,¸tÐVXÔknÐopÐq}Ño~Ókð  NUð  htð  LOð  PZñ  L[ñ  \ð  \ùòW UøôX ”9œZ¬´zÐ	Bó AÜÐ*Ð+?Ó@Ò@ðAúsÞ   „5a ºA'a Â"C(a Æ%a Æ1a ÇAa ÈAa É,a Êa Ê aÊ6aÊ<a ËA(a Ì9Aa ÎAa Ïa Ï%.a Ða Ð%*a Ña Ñ!Aa Ò7Aa ÔBa Ö1a ×Aa ØBa Ú!A(a Ü
1a Ü<Ca àa à%a à=a áa á+b	âb	)Ú
__future__r   r   ÚreÚcompiler5   ÚHEX40r   r   r?   r«   © r   r   Ú<module>r±      s@   ðÝ "ß à‡j‚jÐ"Ó#€Ø‡j‚jÐ"Ó#€òXòòó@Ar   