Ë
    íDºj)G  ã            
      ó  — 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mZ ddl	m
Z
mZ ddlZddl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 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' dd
l(m)Z)m*Z*m+Z+m,Z, edz  Z- ej\                   e/d e0d ejb                  «       xs d«      «      «       ejd                  fdd„Z3dd„Z4dd„Z5d d!d„Z6d"d„Z7d#d„Z8d$d„Z9d$d„Z:d$d„Z;d%d„Z<d&d„Z=d$d„Z>d$d„Z?d'd„Z@d(d„ZAeBdk(  r eA«        yy))zKRun actual-schema forward/backward smokes; real training stays label-gated.é    )ÚannotationsN)ÚPath)ÚAnyÚCallable)ÚTensorÚnné   )
Ú	CNN2DUNetÚUNet3DÚSparseUNetOptionalÚPointNetSegÚDGCNNSegÚMeshGraphProcessorÚPhysicsConstrainedRiskGNNÚUVNetFaceModelÚFNO2dÚTabularSurrogate)ÚROOTÚInputContractErrorÚimage_inputÚvoxel_inputÚsparse_voxel_inputÚsparse_batch_collateÚpoint_inputsÚgraph_inputsÚ
brep_inputÚtabular_inputÚprocess_conditions)Úseed_everythingÚfit_validated_npzÚvalidated_contract_dimensionsÚDatasetContractErrorzresults/modelsé   c                ó0   — t        j                  | |¬«      S )N)Údtype)ÚtorchÚ	as_tensor)Úar%   s     úmodels/runner.pyÚ_tensorr*      s   € Ä%Ç/Á/ÐRSÐZ_ÔB`Ð;`ó    c                óœ   — t        | t        «      r| gnt        | j                  «       «      }|rt	        d„ |D «       «      rt        d«      ‚|S )Nc              3  ó>   K  — | ]  }t        |t        «       –— Œ y ­w©N)Ú
isinstancer   ©Ú.0Úvalues     r)   Ú	<genexpr>z"_output_tensors.<locals>.<genexpr>   s   è ø€ ÐJÁ6¸%œZ¨¬fÓ5Ô5Á6ùs   ‚z>model output must be a tensor or a non-empty tensor dictionary)r/   r   ÚlistÚvaluesÚanyÚRuntimeError)Úyr5   s     r)   Ú_output_tensorsr9      s@   € Ü˜QœvÔ&ˆA‰3¬D°·±³Ó,<€FÙ”SÑJÁ6ÓJÔJÜÐ[Ó\Ð\Ø€Mr+   c                óP   — t        d„ t        | «      D «       «      rt        d«      ‚y )Nc              3  ód   K  — | ](  }t        j                  |«      j                  «        –— Œ* y ­wr.   ©r&   ÚisfiniteÚallr0   s     r)   r3   z_finite.<locals>.<genexpr>   s(   è ø€ Ð
KÑ8J¨uŒu�~‰~˜eÓ$×(Ñ(Ó*Ô*Ñ8Jùs   ‚.0zmodel output is non-finite)r6   r9   r7   )r8   s    r)   Ú_finiter?      s$   € Ü
Ñ
K¼ÈÔ8JÓ
KÔKÔS_Ð`|ÓS}ÐM}ÐKr+   c                ó˜  — |j                  «        |j                  d¬«       t        j                  «       } |«       }t        j                  «       |z
  dz  }t	        |«       t        j                  «       }t        d„ t        |«      D «       «      }	|	j                  «        t        j                  «       |z
  dz  }
|j                  «       D �cg c]  }|j                  sŒ|j                  ‘Œ }}|rt        d„ |D «       «      rt        d«      ‚t        |t        «      r7|j                  «       D ��ci c]  \  }}|t!        |j"                  «      “Œ c}}nt!        |j"                  «      }| d||t        d„ |j                  «       D «       «      t%        |d	«      t%        |
d	«      |ddd
ddœ}|r|j'                  |«       |S c c}w c c}}w )zMOne real-input forward + synthetic-gradient backward. No targets are implied.T)Úset_to_noneiè  c              3  óX   K  — | ]"  }|j                  «       j                  «       –— Œ$ y ­wr.   ©ÚsquareÚmeanr0   s     r)   r3   z_smoke.<locals>.<genexpr>   s"   è ø€ Ð2iÑVhÈU°5·<±<³>×3FÑ3F×3HÑVhùó   ‚(*c              3  óp   K  — | ].  }|d u xs$ t        j                  |«      j                  «        –— Œ0 y ­wr.   r<   )r1   Úgs     r)   r3   z_smoke.<locals>.<genexpr>   s2   è ø€ ÐPÉ%ÀQ˜˜T˜	Ò@¬¯©¸Ó):×)>Ñ)>Ó)@Ð%@Ó@É%ùs   ‚46z%non-finite/missing parameter gradientÚforward_backward_smokec              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr.   )Únumel)r1   Úps     r)   r3   z_smoke.<locals>.<genexpr>    s.   è ø€ ð  rYñ  FXð  ABÐrs×ryÑry×r{ñ  FXùs   ‚é   zLsum of mean(square(untrained output tensors)); not a label, fit, or accuracyN)ÚfamilyÚstatusÚsourceÚproduction_roleÚparamsÚforward_latency_ms_cpuÚbackward_latency_ms_cpuÚoutput_shapeÚfinite_outputÚfinite_parameter_gradientsÚsynthetic_backward_objectiveÚaccuracy)ÚtrainÚ	zero_gradÚtimeÚperf_counterr?   Úsumr9   ÚbackwardÚ
parametersÚrequires_gradÚgradr6   r7   r/   ÚdictÚitemsr4   ÚshapeÚroundÚupdate)rN   ÚmodelÚforwardrP   ÚroleÚextraÚtr8   ÚfwdÚsynthetic_objectiveÚbwdrL   ÚgradsÚkeyr2   re   Úrecords                    r)   Ú_smokers      s*  € à	‡K�K„M�5—?‘?¨t�?Ô4¼×8IÑ8IÓ8K°aÉwËyÈQÔ_c×_pÑ_pÓ_rÐstÑ_tÐvzÑ^zÐZ]ô  }Dð  EFô  }GÜ
×ÑÓ€A¬sÑ2iÔVeÐfgÔVhÓ2iÓ/iÐ.Ðk~÷  lHñ  lHô  lJô  QU÷  Qbñ  Qbó  Qdð  efñ  Qfð  hlñ  Plð  LOØ ×+Ñ+Ô-Ó
AÑ-�a°·³ˆ1�6‹6Ð-€EÐ
AÙ”CÑPÉ%ÓPÔPÔXdð  fMó  YNð  SNÜ@JÈ1ÌTÔ@R°!·'±'´)Ô
<±)¡Y S¨ˆ3Œt�E—K‘KÓ Ñ °)Ó
<ÔX\Ð]^×]dÑ]dÓXe€EØÐ%=ÀvÐ`dÔnqñ  rYð  FK÷  FVñ  FVô  FXó  rYó  oYô  sxð  y|ð  }~ó  sô  Z_ð  `cð  deó  Zfð  v{ð  LPð  nrð  R`ð  lpñ  q€FÙˆf�m‰m˜EÔ"Ø€Mùò Bùã
<s   ÃGÃ GÄ2 Gc                ó¶  — |j                  «        t        j                  j                  |j	                  «       d¬«      }g }t        d«      D ]|  }|j                  «         |«       }t        d„ t        |«      D «       «      }|j                  «        |j                  «        |j                  t        |j                  «       «      «       Œ~ t        dz  d| › d�z  }|j                  j!                  dd¬	«       t        j"                  dd
d|j%                  «       dœ|«       | ddd|t'        |d   |d   k  «      t)        |j+                  t,        «      «      ddœS )zRTwo-step synthetic-only trainability check, kept separate from actual-data status.g-Cëâ6?)Úlré   c              3  óX   K  — | ]"  }|j                  «       j                  «       –— Œ$ y ­wr.   rC   r0   s     r)   r3   z(_synthetic_checkpoint.<locals>.<genexpr>)   s"   è ø€ ÐIÑ4H¨5�—‘“×$Ñ$×&Ñ4HùrF   ÚcheckpointsÚ
synthetic_z.ptT©ÚparentsÚexist_okÚzeros_like_model_output)Úsynthetic_onlyÚtargetÚstepsÚ
state_dictÚsynthetic_learnability_smokeéÿÿÿÿr   N)rN   rO   r~   r€   ÚlossesÚloss_decreased_or_equalÚ
checkpointrY   )rZ   r&   ÚoptimÚAdamr`   Úranger[   r^   r9   r_   ÚstepÚappendÚfloatÚdetachÚOUTÚparentÚmkdirÚsaver�   ÚboolÚstrÚrelative_tor   )	Únamerh   ri   Úoptr„   Ú_ÚoutÚlossÚpaths	            r)   Ú_synthetic_checkpointr›   $   sp  € à	‡K�K„M”u—{‘{×'Ñ'¨×(8Ñ(8Ó(:¸dÐ'ÓC�3ÈBÀVÜ�1ŽXˆØ�‰Œ™W›Y˜ÜÑI´OÀCÔ4HÓIÓIˆØ�‰Œ˜Ÿ™œ V§]¡]´5¸¿¹»Ó3GÕ%Hð ô 
ˆ]Ñ	˜Z¨ v¨SÐ1Ñ	1€D°4·;±;×3DÑ3DÈTÐ[_Ð3DÔ3`Ü	‡J�J Ð/HÐQRÐ`e×`pÑ`pÓ`rÑsÐtxÔyØÐ#AÐSWÐ`aÐkqô  MQð  RXð  Y[ñ  R\ð  `fð  ghñ  `iñ  Rió  Mjô  x{ð  |@÷  |Lñ  |Lô  MQó  |Ró  xSð  _cñ  dð  dr+   c                 ó¢   — t        «       \  } }}}t        t        j                  | |j	                  t        j
                  «      gd«      «      ||fS )Nr	   )r   r*   ÚnpÚconcatenateÚastypeÚfloat32)ÚxÚmÚrunsrP   s       r)   Ú_conditionsr¤   /   sA   € Ü&Ó(�O€A€aˆˆVÜ”2—>‘> 1 Q§X¡X¬b¯j©jÓ%9Ð":¸1Ó=Ó>¸tÀFÐJÐJr+   c                ó(  ‡‡	‡
— t        «       }t        «       \  }}}t        j                  |d   |d   j	                  t        j
                  «      gd«      }t        t        j                  |D �cg c]  }|‘Œ c}d«      «      Š
|j                  |j                  d   d«      Š	g }t        ‰
j                  d   ‰	j                  d   ¬«      Š|j                  t        d‰ˆˆ	ˆ
fd„|d   d	d
||ddœ«      «       | j                  t        d‰ˆˆ	ˆ
fd„«      «       t        ‰
j                  d   ‰	j                  d   ¬«      Š|j                  t        d‰ˆˆ	ˆ
fd„|d   dd
|dddœ«      «       | j                  t        d‰ˆˆ	ˆ
fd„«      «       |S c c}w )Nr¡   Úmaskr	   r   ©Ú
global_dimÚ2D_CNN_UNetc                 ó   •—  ‰ ‰‰«      S r.   © ©r¢   Úprocessr¡   s   €€€r)   Ú<lambda>z!_image_families.<locals>.<lambda>7   s   ø€ ÑjkÐlmÐnuÔjvr+   rP   zQCAD multiview + planned process pre-process candidate only after validated labelsé   T)ÚviewsÚprocess_runsÚprocess_sourceÚfeature_masks_appendedÚ2d_cnn_unetc                 ó   •—  ‰ ‰‰«      S r.   r«   r¬   s   €€€r)   r®   z!_image_families.<locals>.<lambda>7   s   ø€ ñ  lmð  noð  pwô  lxr+   r   c                 ó   •—  ‰ ‰‰«      S r.   r«   r¬   s   €€€r)   r®   z!_image_families.<locals>.<lambda>8   s   ø€ ÑXYÐZ[Ð\cÔXdr+   zqarchitecture smoke only: a real thermal/operator surrogate is unavailable until paired field inputs/targets existÚunavailable)r°   r±   r³   Úreal_field_trainingÚfno2dc                 ó   •—  ‰ ‰‰«      S r.   r«   r¬   s   €€€r)   r®   z!_image_families.<locals>.<lambda>8   s   ø€ ñ  @ð  ABð  CJô  Kr+   )r   r¤   r�   rž   rŸ   r    r*   Úrepeat_interleavere   r
   r‹   rs   r›   r   )ÚsynthÚdÚcondr£   ÚpsourceÚbaser—   Úrecr¢   r­   r¡   s           @@@r)   Ú_image_familiesrÂ   3   sû  ú€ Üƒm€A¤{£}Ñ&�T˜$˜w¼2¿>¹>È1ÈSÉ6ÐRSÐTZÑR[×RbÑRbÔce×cmÑcmÓRnÐJoÐpqÓ;r°däŒb�n‰n©DÓ1©D qšd¨DÑ1°!Ó4Ó5€A¸t×?UÑ?UÐVZ×V`ÑV`ÐabÑVcÐdeÓ?f°wØ
€CŒi˜Ÿ™ ™
¨g¯m©m¸AÑ.>Ô?ˆAÀÇÁÌFÐS`ÐabÕcvÐwxð  zBñ  xCð  DWð  abð  rvð  HOð  imñ  Xnó  Moô  Bpð  rw÷  r~ñ  r~ô  Tð  Ubð  cdõ  exó  yô  rzÜˆA�G‰G�A‰J '§-¡-°Ñ"2Ô3€A°S·Z±ZÄÀwÈqÕQdÐefÐgoÑepð  reð  opð  @Dð  ^bð  yFñ  fGó  AHô  6Ið  KP÷  KWñ  KWô  Xmð  nuð  vwõ  xKó  XLô  KMØ€Jùò 2s   Á/	Fc                óö  ‡‡‡‡— t        «       }t        «       \  Š}}t        j                  |d   |d   j	                  t        j
                  «      gd«      }t        t        j                  |d    t        |«      d«      «      Št        ‰j                  d   ‰j                  d   ¬«      Št        d‰ˆˆˆfd„|d   d	||d
dœ«      g}| j                  t        d‰ˆˆˆfd„«      «       	 dd lŠ	 t'        «       }t)        |d   |d   «      \  }}	t        |t*        j,                  «      t        |	«      }}
t/        |j                  d   «      Š‰|
|fˆfd„	}|j                  t        d‰||d   ddt1        t        |
«      «      t3        |
j                  «      d
d
dœ«      «       | j                  t        d‰|«      «       |S # t        $ r&}|j                  dddd|› �d dœ«       |cY d }~S d }~wt         $ r<}|j                  ddddt#        |«      j$                  › d|› �d dœ«       |cY d }~S d }~ww xY w# t         $ r;}|j                  ddddt#        |«      j$                  › d|› �d dœ«       Y d }~|S d }~ww xY w)Nr¡   r¦   r   r	   r§   Ú3D_UNetc                 ó   •—  ‰‰‰ «      S r.   r«   ©r¾   r¢   r¡   s   €€€r)   r®   z!_voxel_families.<locals>.<lambda>=   s   ø€ ÑRSÐTUÐVZÔR[r+   rP   zkCAD surface voxels + planned process pre-process candidate; sampled surface occupancy is not a filled solidT)r±   r²   r³   Ú3d_unetc                 ó   •—  ‰‰‰ «      S r.   r«   rÆ   s   €€€r)   r®   z!_voxel_families.<locals>.<lambda>=   s   ø€ ñ  ]^ð  _`ð  aeô  ]fr+   ÚSparse_UNetÚunavailable_optional_backendÚMinkowskiEnginezbackend import unavailable: )rN   rO   ÚbackendÚreasonrY   Úoptional_backend_import_errorz$backend import failed unexpectedly: z: ÚcoordsÚfeaturesc                ó>  •—  | ‰j                  ||¬«      «      }|j                  j                  |j                  k7  sJt        j                  t        j
                  |j                  d¬«      t        j
                  |d¬«      «      st        d«      ‚|j                  S )N)rÐ   Úcoordinatesr   )ÚdimzESparse U-Net output coordinates do not align with input sparse voxels)ÚSparseTensorÚCre   r&   ÚequalÚuniquer7   ÚF)r¢   ÚctÚftr˜   ÚMEs       €r)   Úsparse_forwardz'_voxel_families.<locals>.sparse_forwardJ   sr   ø€ Ù�"—/‘/¨2¸"�/Ó=Ó>ˆCð �u‰u�{‰{˜bŸh™hÒ&¬e¯k©k¼%¿,¹,ÀsÇuÁuÐQRÔ:SÔTY×T`ÑT`ÐacÐhiÔTjÔ.kÜ"Ð#jÓkÐkØ—5‘5ˆLr+   zGCAD sparse-surface geometry candidate; no process branch is implemented)rÌ   Úsparse_voxelsÚinput_coordinate_shapeÚ$output_coordinate_alignment_verifiedr³   Úsparse_unetÚoptional_backend_runtime_errorz,backend loaded but sparse execution failed: )r   r¤   r�   rž   rŸ   r    r*   ÚrepeatÚlenr   re   rs   r‹   r›   rË   ÚImportErrorÚ	ExceptionÚtypeÚ__name__r   r   r&   Úint32r   Úintr4   )r¼   r½   r£   r¿   rÀ   rÁ   ÚexcÚsdrÒ   rÐ   rÙ   rÚ   rÜ   rÛ   r¾   r¢   r¡   s                @@@@r)   Ú_voxel_familiesrì   ;   s²  û€ Üƒm€A¤{£}Ñ&�T˜$˜w¼2¿>¹>È1ÈSÉ6ÐRSÐTZÑR[×RbÑRbÔce×cmÑcmÓRnÐJoÐpqÓ;r°dÔv}ô  A÷  Hñ  Hð  IMð  NRñ  ISô  TWð  X\ó  T]ð  ^_ó  `ó  waÐtuÜˆQ�W‰W�Q‰Z 4§:¡:¨a¡=Ô1€A¼¸yÈÕK[Ð\]Ð^fÑ\gð  iVð  gkð  }Dð  ^bñ  Wcó  9dð  8e°3ð  gl÷  gsñ  gsô  tIð  JSð  TUõ  Vfó  tgô  ghðÛ$ðWÜÓˆÔ6JÈ2ÈhÉ<ÐXZÐ[eÑXfÓ6gÑ!5 ¨XÜ�k¤%§+¡+Ó.¬w°xÓ/@ˆ2ˆÜ
˜RŸX™X a™[Ó
)ˆØ "¨õ 	ð 	�
‰
”6˜-¨¨.¸¸H¹ð  GPð  \mô  ~Aô  BEð  FHó  BIó  ~Jô  dhð  ik÷  iqñ  iqó  drð  Z^ð  x|ñ  Q}ó  ~ô  	Ø�‰Ô*¨=¸¸>ÓJÔKð €Jøô+ ò Ø�
‰
˜]Ð4RÐ]nð  {Wð  X[ð  W\ð  y]ð  imñ  nô  	oØ�
ûÜò Ø�
‰
˜]Ð4SÐ^oð  |`ô  aeð  fió  aj÷  asñ  asð  `tð  tvð  wzð  v{ð  z|ð  HLñ  Mô  	NØ�
ûðûô  ò WØ�
‰
˜]Ð4TÐ_pð  }iô  jnð  oró  js÷  j|ñ  j|ð  i}ð  }ð  @Cð  Dð  {Eð  QUñ  V÷  	Wð  	WØ€JûðWúsI   Ã*F? Ã/CH4 Æ?	H1ÇG)Ç#H1Ç)H1Ç51H,È&H1È,H1È4	I8È=0I3É3I8c                ó|  — g }t        «       D �]«  }t        t        j                  |d   |d   j	                  t        j
                  «      gd«      d    «      }t        |j                  d   «      }|j                  t        d|||fd„|d   |d   d	k(  rd
nd|d   t        |j                  d   «      ddœ«      «       | j                  t        dt        |d   «      j                  z   |||fd„«      «       |d d …d t        d|j                  d   «      …f   }t        |j                  d   d¬«      }|j                  t        d|||fd„|d   |d   d	k(  rd
nd|d   t        |j                  d   «      dddœ«      «       | j                  t        dt        |d   «      j                  z   |||fd„«      «       �Œ® |S )Nr¡   r¦   r	   rƒ   ÚPointNet_segmentationc                ó   —  | |«      S r.   r«   ©r¢   r¡   s     r)   r®   z!_point_families.<locals>.<lambda>[   s   € Ñ`aÐbcÔ`dr+   rP   ÚtimingÚpost_scan_diagnosticÚpost_scan_inspectionz;CAD geometry pre-process candidate after validated outcomesT)rñ   Úpointsr³   Ú	pointnet_c                ó   —  | |«      S r.   r«   rð   s     r)   r®   z!_point_families.<locals>.<lambda>[   s   € ñ  [\ð  ]^ô  [_r+   i   é   )ÚkÚDGCNN_dynamic_feature_knnc                ó   —  | |«      S r.   r«   ©r¢   Úzs     r)   r®   z!_point_families.<locals>.<lambda>]   s   € ñ  DEð  FGô  DHr+   z2feature-neighbor graph recomputed at each EdgeConv)rñ   rô   Údynamic_graphsr³   Údgcnn_c                ó   —  | |«      S r.   r«   rû   s     r)   r®   z!_point_families.<locals>.<lambda>]   s   € ñ  ABð  CDô  AEr+   )r   r*   r�   rž   rŸ   r    r   re   r‹   rs   ré   r›   r   ÚstemÚminr   )r¼   Úrowsr½   r¡   r¢   rü   s         r)   Ú_point_familiesr  W   s!  € Ø	€DÜ�^ˆÜ
”"—.‘. ! C¡&¨¨6©×)9Ñ)9¼"¿*¹*Ó)EÐ!FÀqÓIÈ$ÑOÓ
PˆÜ
�a—g‘g˜b‘kÓ
"ˆ D§K¡K´Ð7NÈqÐZ[Ð^_ÒQdÐefÐgoÑepð  LMð  NVñ  LWð  Yoò  Loñ  rHð  urð  }~ð  Gñ  }Hô  RUð  VW÷  V]ñ  V]ð  ^_ñ  V`ó  Rað  {ñ  s@ó  1Aô  %Bð  DI÷  DPñ  DPô  Qfð  grô  swð  xyð  zBñ  xCó  sD÷  sIñ  sIñ  gIð  JKð  UVð  YZò  L_ó  Q`ô  Daà
ŠAÐ"Œs�3�q—w‘w˜q‘zÓ"Ð"Ð"Ñ
#ˆ¤x°·±¸±¸bÔ'A QÀ4Ç;Á;ÌvÐVqÐrsÐ}~ð  BCò  uHð  IJð  KSñ  ITð  opð  qyñ  ozð  |Rò  oRñ  Ukð  XUð  `að  bjñ  `kô  uxð  yz÷  y@ñ  y@ð  ABñ  yCó  uDð  VJð  dhñ  Vió  Pjô  Dkð  mr÷  myñ  myô  zOð  PXô  Y]ð  ^_ð  `hñ  ^ió  Yj÷  Yoñ  Yoñ  Poð  pqð  {|ð  @ò  rEó  zFö  mGð	 ð
 €Kr+   c                ó|  — t        j                  | d   | d   j                  t         j                  «      gd«      }t	        |«      }t	        |«      }| d   }t        j
                  | d   ddd¬«      j                  t         j                  «      }|j                  d   r|d d …dfxx   d	z  cc<   t        j                  t        |«      D �cg c]  }|‘Œ c}d«      }t        j                  t        |«      D �	cg c]
  }	||	|z  z   ‘Œ c}	d«      }
t        j                  t        |«      D �cg c]  }|‘Œ c}d«      }t        j                  t        j                  |«      |«      }t        |«      t        |
t        j                  «      t        |«      |t        |t        j                  «      fS c c}w c c}	w c c}w )
Nr¡   r¦   r	   Ú
edge_indexÚ	edge_attrg        )ÚnanÚposinfÚneginfr   ç     @�@)r�   rž   rŸ   r    rã   Ú
nan_to_numre   r‰   râ   Úaranger*   r&   Úlong)r½   r¾   r¡   ÚnÚbÚer(   r—   ÚnodeÚiÚedgeÚattrÚbatchs                r)   Ú_batched_graphr  `   s   € Ü‡n�n�a˜‘f˜Q˜v™Y×-Ñ-¬b¯j©jÓ9Ð:¸1Ó=€AÄÀQÃ¸qÌ3ÈtË9ÈÐXYÐZfÑXgÐVWÔkm×kxÑkxÐyzð  |Gñ  zHð  MOð  WYð  acô  ld÷  lkñ  lkô  ln÷  lvñ  lvó  lwÐijà‡w�wˆq‚z�1’Q�q�S“6˜5‘=“6Ü	�‰¤E¨!¤HÓ-¡H˜qš HÑ-¨aÓ	0€D´r·~±~ÔV[Ð\]ÔV^ÓF_ÑV^ÐQRÀqÈÈ1ÉÃuÐV^ÑF_Ð`aÓ7b°$Ôik×iwÑiwô  EJð  KLô  EMó  yNñ  EMð  @AÒyzð  EMñ  yNð  OPó  jQÐdhô  Y[÷  Ybñ  Ybô  ce÷  clñ  clð  mnó  coð  pqó  Yrð  SXÜ�4‹=œ ¤e§j¡jÓ1´'¸$³-ÀÄWÈUÔSX×S]ÑS]ÓE^Ð^Ð^ùò .ùÒF_ùò  yNs   Ã	F/Ã9F4Ä,	F9c                óÞ  ‡‡‡‡‡— dŠt        j                  t        j                  dd‰«      t        j                  dd‰«      d¬«      \  ŠŠdˆˆˆˆˆfd„} |d«      \  }}} |d«      \  }}	}
| j                  «        t	        j
                  «       5  t         | ||||d	d «       | ||	|
|d	d «      z
  j                  «       j                  «       «      }d	d	d	«       d
dœS # 1 sw Y   ŒxY w)zXSeparate procedural mesh change; topology/features are recomputed, not stale CAD fields.é   rƒ   r	   Úij)Úindexingc                óD	  •— | t        j                  t         j                  ‰z  «      z  t        j                  t         j                  ‰z  «      z  }t         j                  ‰j	                  «       ‰j	                  «       |j	                  «       f   j                  t         j                  «      }| t         j                  z  t        j                  t         j                  ‰z  «      z  t        j                  t         j                  ‰z  «      z  }| t         j                  z  t        j                  t         j                  ‰z  «      z  t        j                  t         j                  ‰z  «      z  }t         j                  |j	                  «        |j	                  «        t        j                  ‰‰z  «      f   }|t         j                  j                  |dd¬«      z  }g }t        ‰dz
  «      D ]<  }t        ‰dz
  «      D ])  }|‰z  |z   }	||	|	dz   |	‰z   f|	dz   |	‰z   dz   |	‰z   fgz  }Œ+ Œ> t        j                  t        j                  t        j                  |D �
�	�cg c]+  }
|
d   |
d   f|
d   |
d   f|
d   |
d   ffD ]	  \  }	}|	|f‘Œ Œ- c}}	}
«      d¬«      d¬«      }t         j                  t         j                  |d d …df   |d d …df   f   t         j                  |d d …df   |d d …df   f   f   j                   }||d      ||d      z
  }t         j                  j                  |d¬«      }t        j"                  t%        |d   «      ‰ft         j                  «      }|dz  |d d …df<   |d d …d t'        dt)        d‰dz
  «      «      …f   t        j*                  |d d …d f   d	«      z  |d d …dt)        d
‰«      …f<   ‰d
kD  r'||d      ||d      z  j-                  d«      |d d …d
f<   t        j"                  ‰‰z  ‰dz  ft         j                  «      }t        j.                  |«      }||d d …d d…f<   ||d d …dd…f<   d|d d …d d…f<   t1        t         j                  ||f   «      t1        |t2        j4                  «      t1        |«      fS c c}}	}
w )Nr	   T)ÚaxisÚkeepdimsr   rv   )r  r
  rM   g:Œ0âŽyE>r#   r¯   )r�   ÚsinÚpiÚc_ÚravelrŸ   r    ÚcosÚonesÚlinalgÚnormr‰   r×   ÚsortÚasarrayÚr_ÚTÚzerosrã   Úmaxr  Úmaximumr^   Ú
zeros_liker*   r&   r  )Ú	amplituderü   rL   ÚdzduÚdzdvÚnormalÚfacesr  Újr(   Úfr  Úundr  ÚdeltaÚlengthr  r¡   r¢   Úedge_dimÚnode_dimÚqÚuÚvs                      €€€€€r)   Úbuildz)_procedural_geometry_probe.<locals>.buildj   s#  ø€ Ø
”B—F‘Fœ2Ÿ5™5 ™7“OÑ
#¤B§F¡F¬2¯5©5°©7£OÑ
3ˆ´r·u±u¸Q¿W¹W»YÀqÇwÁwÃyÐQR×QXÑQXÓQZÐ=ZÑ7[×7bÑ7bÔce×cmÑcmÓ7n°QØ”r—u‘u‰_œRŸV™V¤B§E¡E¨!¡G›_Ñ,¬R¯V©V´B·E±E¸!±G«_Ñ<ˆÀ9ÌRÏUÉUÁ?ÔSU×SYÑSYÔZ\×Z_ÑZ_Ð`aÑZaÓSbÑCbÔce×ciÑciÔjl×joÑjoÐpqÑjqÓcrÑCr¸dÔ{}÷  |Añ  |Að  CG÷  CMñ  CMó  COð  BOð  QU÷  Q[ñ  Q[ó  Q]ð  P]ô  ^`÷  ^eñ  ^eð  fgð  hiñ  fió  ^jð  Bjñ  |kÐtzð  msô  uw÷  u~ñ  u~÷  uCñ  uCð  DJð  PQð  [_ð  uCó  u`ñ  m`ð  msØˆÜ�q˜‘s–ˆAÜ˜1˜Q™3–Z�Ø�A‘#�a‘%�˜ A a¨¡c¨!¨A©# ;°°!±°A°a±C¸±E¸!¸A¹#¨Ð"?Ñ?™ñ  ð ô �I‰I”b—g‘gœbŸj™j¹Õ)p¹°AÈAÈaÉDÐQRÐSTÑQUÈ;ÐXYÐZ[ÑX\Ð]^Ð_`Ñ]aÐWbÐdeÐfgÑdhÐijÐklÑimÐcnÓJoÁ3À1ÀQ¨1¨Qª%ÐJo¨%¸Ó)pÓqÐwxÔyð  @Aô  Bˆô  FH÷  FKñ  FKô  LN÷  LQñ  LQð  RUò  VWð  XYð  VYñ  RZð  [^ò  _`ð  abð  _bñ  [cð  Rcñ  Ldô  eg÷  ejñ  ejð  knò  opð  qrð  orñ  ksð  twò  xyð  z{ð  x{ñ  t|ð  k|ñ  e}ð  L}ñ  F~÷  F@ñ  F@ð  DEð  HIð  JKð  LMñ  JNñ  HOð  PQð  RSð  TUñ  RVñ  PWñ  HWð  BGô  `b÷  `iñ  `i÷  `nñ  `nð  otð  z{ð  `nó  `|ð  Y_ô  CE÷  CKñ  CKô  MPð  QRð  STñ  QUó  MVð  W_ð  L`ô  ac÷  akñ  akó  Clð  ~BØ˜‘,ˆŠQˆqˆS‰	¸%ÂÐB[Ä3ÀqÌÈQÈxÐXYÉzÓIZÓC[ÐB[Ð@[Ñ:\Ô]_×]gÑ]gÐhnÒopÐquÐouÑhvÐw{Ó]|Ñ:| ¢Q q¬¨Q¨x«Ð'8Ð%8Ñ 9Ø�AŠ: &¨¨1©¡,¨v°a¸±d©|Ñ";×!@Ñ!@ÀÓ!C�tšA˜a˜C‘yÜ
�(‰(�A�a‘C˜ !™Ð$¤R§Z¡ZÓ
0ˆ´B·M±MÀ!Ó4D°!ÈaÀaÊÈ"È1È"ÈÁgÐZ`ÐQRÒSTÐUVÐWXÐUXÐSXÑQYÐjkÐbcÒdeÐfhÐghÐfhÐdhÑbiÜ”r—u‘u˜Q˜q˜S‘zÓ"¤7¨1¬U¯Z©ZÓ#8¼À»ÐFÐFùô	 *qs   É"0Rgš™™™™™©?ç      Ð?Nz procedural meshes have recomputed positions, normals, topology and edge attributes. This is architecture sensitivity, not AC28 CAD-revision transfer validation.)Ú1changed_geometry_architecture_only_mean_abs_deltaÚchanged_geometry_note)r.  rŒ   )	r�   ÚmeshgridÚlinspaceÚevalr&   Úno_gradrŒ   ÚabsrE   )rh   r¾   r9  r8  r=  r(   ÚaeÚaar  ÚbeÚbar6  r:  r;  r<  s     ``        @@@r)   Ú_procedural_geometry_proberJ  g   s×   ü€ à€AŒR�[‰[œŸ™ R¨¨!Ó,¬R¯[©[¸¸A¸aÓ-@È$ÔO‰ˆˆ1÷Gñ Gñ �#‹J�G€A€bˆ¡ c£
™˜˜"˜R¨E¯J©J¬LÜ	�‰�¤¡u¨Q¨r°"°T¸"¸1°XÓ'>¹uÀQÀrÈ"ÈTÐRTÐSTÈXÓ?VÑ'V×&[Ñ&[Ó&]×&bÑ&bÓ&dÓ e˜%�Ø@Eð  _Añ  Bð  B÷ 
ˆús   ÂAC#Ã#C,c                ó  ‡‡‡‡‡‡ — t        «       }t        «       \  }}}|d   d   j                  d   dz  }|d   d   j                  d   }t        |||j                  d   «      }g }|D ]H  }	t	        |	|«      \  }
}}}}|j                  t        d|||
||||fd„|	d   d	|	d
   ||ddddœ«      «       ŒJ t        |d„ ¬«      }	t	        |	|«      \  Š ŠŠŠŠt        |||j                  d   d¬«      Š|j                  t        d‰ˆˆˆˆˆˆ fd„|	d   d|	d
   ||g d¢dddddœ«      «       | j                  t        d‰ˆˆˆˆˆˆ fd„«      «       |d   }	t	        |	|d d «      \  }
}}}}t        |	d   «      }t        j                  |«      }t        j                  |«      }||   }|j                  «        t        j                  «       5  t!         ||
||||«       ||
|   |||||   «      |   z
  j#                  «       j                  «       «      }d d d «       t	        |	|«      \  }}}}}t        j                  «       5   ||||||«      }t        |«      dkD  r0t!        |d | ||d  z
  j#                  «       j%                  «       «      nd }d d d «       |d   d<   |d   d<   d|d   d <   |d   j'                  t)        ||||«      «       | j                  t        d!|||
||||fd"„«      «       |S # 1 sw Y   ŒâxY w# 1 sw Y   ŒsxY w)#Nr   r¡   r	   rv   r  ÚGNN_MeshGraphNet_stylec                ó   —  | |||||«      S r.   r«   ©r¢   r¡   ÚeiÚearH   r  s         r)   r®   z!_graph_families.<locals>.<lambda>}   s/   € Ñ}~ð  @Að  BDð  EGð  HIð  JKô  ~Lr+   rP   zTpre-process predictive candidate only with CAD/process inputs and validated outcomesÚnodesT)Úactual_nodesr±   r²   Úfull_prepared_topologyr³   Ú$shared_model_instance_across_budgetsc                ó   — | d   S )NrQ  r«   )Úitems    r)   r®   z!_graph_families.<locals>.<lambda>€   s   €   g¢r+   )rq   rM   )Údefect_typesÚ"GNN_CAD_risk_deformation_multitaskc                 ó   •—  ‰‰‰‰‰‰ «      S r.   r«   ©ÚmbÚmeaÚmeiÚmgÚmultiÚmxs   €€€€€€r)   r®   z!_graph_families.<locals>.<lambda>„   s   ø€ ‰u�R˜˜C  2Ô&r+   zgnode-wise pre-process candidate: STEP graph + XLS process -> defect segmentation and deformation fields)Údefect_risk_logitÚsigned_normal_deformationÚdeformation_magnitudeÚgraph_defect_type_logitszHthree placeholder output slots; class vocabulary requires validated dataz7deformation_magnitude >= abs(signed_normal_deformation)zJdata_processed/paired; currently weak/diagnostic with training_valid=falsezDtraining/validation target construction only; not an inference input)Úactual_nodes_per_runr±   r²   Úoutput_channelsÚdefect_type_classesÚhard_constraintÚtarget_scaffoldÚply_roleÚcad_risk_deformation_multitaskc                 ó   •—  ‰‰‰‰‰‰ «      S r.   r«   rZ  s   €€€€€€r)   r®   z!_graph_families.<locals>.<lambda>�   s   ø€ ©e°B°s¸3¸rÀ"Ô.Er+   rƒ   Ú permutation_equivariance_max_absÚ9actual_process_condition_architecture_only_mean_abs_deltaz…Different prepared process values/masks were supplied; untrained response is architecture sensitivity, not process-effect validation.Úprocess_sensitivity_noteÚmeshgraphnetc                ó   —  | |||||«      S r.   r«   rN  s         r)   r®   z!_graph_families.<locals>.<lambda>–   s3   € ñ  LMð  NOð  PRð  SUð  VWð  XYô  LZr+   )r   r¤   re   r   r  r‹   rs   r+  r   r›   rã   r&   ÚrandpermÚargsortrC  rD  rŒ   rE  rE   rg   rJ  )!r¼   Úgraphsr¾   r£   rP   Úcr  r¢   r  r½   r¡   rO  rP  rH   r  r  ÚpermÚinvÚepÚequivÚpxÚpeiÚpeaÚpgÚpbÚtwoÚprocess_deltar[  r\  r]  r^  r_  r`  s!                              @@@@@@r)   Ú_graph_familiesr�  z   sP  ý€ Ü‹>€F¬K«MÑ+˜4  V¸VÀA¹YÀs¹^×=QÑ=QÐRSÑ=TÐUVÑ=V¸1ÐZ`ÐabÑZcÐdoÑZp×ZvÑZvÐwxÑZyÐXYô  ~Pð  QRð  STð  UY÷  U_ñ  U_ð  `añ  Ubó  ~cÐ{|ð  jlð  eiÛˆÜ" 1 TÓ*‰ˆˆ"ˆR��!¨D¯K©K¼Ð?WÐXYÐcdÐghÐlnÐrtÐwxÐ{|ò  [Lð  MNð  OWñ  MXð  Yoð  @Að  BIñ  @Jð  Z^ð  pvð  PTð  nrð  Z^ñ  p_ó  9`õ  -að ô 
ˆ&Ñ.Ô/€AÄ.ÐQRÐSWÓBXÑ1A°°C¸¸B¸rÜ
# A a¨¯
©
°1©À1Ô
E€EØ‡K�K”Ø,¨eß&Ð&¨¨(©ØqØ ! '¡
¸4ÐRXÚØiØTØgØZñ	\ó		]ô 	^ð 
‡L�LÔ&Ð'GÈß'EÐ'EóGô Hð ˆR�j€Aœn¨Q¨t°B°Q¨xÓ8‘+�!�B�r˜!˜A¼CÀÀ#Á»K¸!ÌeÏnÉnÐ]^ÓN_ÈÔej×erÑerÐswÓexÐadð  ~Að  BDñ  ~EÐz|Ø‡F�F„HÜ	�‰�¤¡q¨¨2¨b°°1£~±a¸¸$¹ÀÀ2ÀaÈÈ$ÉÓ6PÐQTÑ6UÑ'U×&ZÑ&ZÓ&\×&`Ñ&`Ó&bÓ c˜%�Ü# A dÓ+Ñ€B€sˆ3ˆr�"Ü	�‰�Ùˆb��S˜˜BÓˆÜ?BÀ4»yÈº{”e˜S  !˜W S¨¨ W™_×1Ñ1Ó3×8Ñ8Ó:Ô;ÐPTˆ÷ 
ð 38€Dˆ�GÐ.Ñ/ð  AN¸¸a¹ÐA|Ñ9}ð  t{ð  PTð  UVñ  PWð  Xrñ  Psð  }Að  BCñ  }D÷  }Kñ  }Kô  Lfð  ghð  imð  noð  pqó  Lrô  }sð  uz÷  uAñ  uAô  BWð  Xfð  ghð  rsð  vwð  {}ð  ACð  FGð  JKò  iZó  B[ô  u\Ø€K÷ 
ˆúç	ˆús   ÇAK1È>AK=Ë1K:Ë=Lc                ó¸  ‡‡‡‡— g }t        «       }t        |d   «      t        |d   t        j                  «      cŠŠt	        ‰j
                  d   «      Š|j                  t        d‰ˆˆˆfd„|d   d|d   |d	   d
ddœ«      «       | j                  t        d‰ˆˆˆfd„«      «       t        «       }t        t        j                  |d   |d   j                  t        j                  «      gd«      «      Št        ‰j
                  d   «      Š|j                  t        d‰ˆˆfd„|d   d|d   d
dœ«      «       | j                  t        d‰ˆˆfd„«      «       |S )NÚgridsÚ	adjacencyr	   ÚUVNet_face_grid_adjacencyc                 ó   •—  ‰‰‰ «      S r.   r«   ©Úadr¢   rü   s   €€€r)   r®   z&_uv_tabular_families.<locals>.<lambda>š   s   ø€ ñ  qrð  stð  uwô  qxr+   rP   zBCAD B-Rep pre-process candidate only with validated outcome labelsr2  Úadjacency_edgesTz_Used exactly as prepared from shared B-Rep topological edges; no proximity edges were invented.)r2  Úface_adjacency_directed_edgesÚtrim_and_feature_masks_encodedÚadjacency_noteÚuvnetc                 ó   •—  ‰‰‰ «      S r.   r«   r‡  s   €€€r)   r®   z&_uv_tabular_families.<locals>.<lambda>š   s   ø€ ñ  deð  fgð  hjô  dkr+   r¡   r¦   Útabular_surrogatec                 ó   •—  ‰ ‰«      S r.   r«   rð   s   €€r)   r®   z&_uv_tabular_families.<locals>.<lambda>›   s   ø€ ñ  lmð  noô  lpr+   z?pre-process candidate only after independent validated outcomesr£   )Úactual_runsr³   c                 ó   •—  ‰ ‰«      S r.   r«   rð   s   €€r)   r®   z&_uv_tabular_families.<locals>.<lambda>›   s   ø€ ñ  z{ð  |}ô  z~r+   )r   r*   r&   r  r   re   r‹   rs   r›   r   r�   rž   rŸ   r    r   )r¼   r  r½   rl   rˆ  r¢   r¡   rü   s       @@@@r)   Ú_uv_tabular_familiesr“  ™   s+  û€ Ø	€DŒz‹|ˆQ¤'¨!¨G©*Ó"5´g¸aÀ¹nÌUÏZÉZÓ6X˜T˜Q˜rÔ\jÐkl×krÑkrÐstÑkuÓ\vÐZ[Ðx|÷  yDñ  yDô  EKð  Lgð  hiõ  jxð  yzð  {Cñ  yDð  EIð  STð  U\ñ  S]ð  ~ð  @Qñ  ~Rð  txð  Jkñ  Jló  Emô  ynð  pu÷  p|ñ  p|ô  }Rð  SZð  [\õ  ]kó  }lô  pmÜƒo€Aœ¤§¡°°3±¸¸&¹	×8HÑ8HÌÏÉÓ8TÐ0UÐVWÓ!XÓY�qÔ]mÐno×nuÑnuÐvwÑnxÓ]yÐ[\Ð{÷  |Gñ  |Gô  HNð  Obð  cdô  epð  qrð  s{ñ  q|ð  }~ð  NOð  PVñ  NWð  quñ  vó  Hwô  |xð  z÷  zFñ  zFô  G\ð  ]pð  qrô  s~ó  Gô  z@Ø€Kr+   c            	     ó¾  — ddl m}  ddlm}m} ddlm} t        j                  j                  d«      }|j                  ddgddgd	«      }|d d …df   d
z
  dz  d|d d …df   dz
  dz  z  z   } |  |d¬«       |d«      z   dd¬«      j                  ||«      }|j                  ddgddgd«      }|j                  |d¬«      \  }	}
|j                  «       |	z
  |j                  |j                  «       |	z
  |
dz   z  «      z  |
|j                  |j                  «       |	z
  |
dz   z  «      z  z   }|d d …df   dk\  |d d …df   dk  z  |d d …df   dk\  z  |d d …df   dk  z  }t!        t        j"                  t        j$                  ||t        j&                   «      «      «      }dddddgddgdœ||   j)                  d«      j+                  «       t-        ||   «      ddœS ) Nr   )ÚGaussianProcessRegressor)ÚMaternÚWhiteKernel)r%  é   gš™™™™™É?r	   gš™™™™™é?)é   rv   g×£p=
×ã?rv   gffffffö?gáz®GáÚ?g      @)Únugü©ñÒMbP?T)Únormalize_yÚrandom_state)iÐ  rv   )Ú
return_stdg•Ö&è.>g333333Ã?g333333ë?r>  g      è?Ú+sklearn_GP_constrained_expected_improvementÚsynthetic_demo)Úp0Úp1é   zENo AC28 condition recommendation, accuracy, or feasibility inference.)rN   rO   r~   Úhard_feasibility_boundsÚ	candidateÚexpected_improvementÚwarning)Úsklearn.gaussian_processr•  Ú sklearn.gaussian_process.kernelsr–  r—  Úscipy.statsr%  r�   ÚrandomÚdefault_rngÚuniformÚfitÚpredictr  ÚcdfÚpdfré   ÚargmaxÚwhereÚinfrf   ÚtolistrŒ   )r•  r–  r—  r%  Úrngr¡   r8   ÚgpÚcandrE   rë   rO  ÚfeasibleÚpicks                 r)   Úsynthetic_borº  ž   sû  € ÝAßCÝ Ü
�	‰	×Ñ˜bÓ!€C S§[¡[°!°B°¸¸2¸¸vÓ%F 1È1ÊQÈqÈSÉ6ÐRUÉ:ÐXYÉ/ÐZ]Ð_`ÒabÐcdÐadÑ_eÐfiÑ_iÐlmÑ^mÑZmÑJmÈñ  sKñ  LRð  VYô  LZñ  [fð  gkó  [lñ  Llð  y}ð  KMô  sN÷  sRñ  sRð  STð  UVó  sWÐoqØ	�‰�a˜�V˜Q˜r˜F 8Ó	,€D°b·j±jÀÐQU°jÓ6V©g¨d°2Ð\]×\aÑ\aÓ\cÐdhÑ\hÐjn×jrÑjrÐtu×tyÑtyÓt{ð  }Añ  uAð  DFð  GKñ  DKñ  tLó  kMñ  \Mð  NPð  QU÷  QYñ  QYð  [\÷  [`ñ  [`ó  [bð  cgñ  [gð  jlð  mqñ  jqñ  Zró  Qsñ  Nsñ  \sÐXZð  Cò  DEð  FGð  DGñ  Hð  JMñ  Mð  PTò  UVð  WXð  UXñ  PYð  [^ñ  P^ñ  ~_ð  aeò  fgð  hið  fiñ  ajð  loñ  aoñ  ~pð  rvò  wxð  yzð  wzñ  r{ð  }@ñ  r@ñ  ~Að  u}ô  HKô  LN÷  LUñ  LUô  VX÷  V^ñ  V^ð  _gð  hjô  ln÷  lrñ  lrð  kró  Vsó  Ltó  Huð  CGØBÐL\Ðnrð  UXð  Y\ð  T]ð  dgð  hkð  clñ  Nmð  z~ð  Cñ  zD÷  zJñ  zJð  KLó  zM÷  zTñ  zTó  zVô  nsð  tvð  w{ñ  t|ó  n}ð  HOñ  Pð  Pr+   c            	     óŠ  — t        j                  t        ¬«      } | j                  dd¬«       | j                  dd¬«       | j                  dt        ¬«       | j                  dt        t
        d	z  ¬
«       | j                  «       }|j                  s)|j                  s|j                  s| j                  d«       t
        j                  dd¬«       t        «        dg g g dœ}|j                  rIt        |j                  «      \  }}t        t        |dz  |«      |j                  |j                   «      |d<   |j                  s|j                  r=t"        t$        t&        t(        t*        fD ]  }|d   j-                   ||d   «      «       Œ! |j                  r|d   j5                  t;        «       «       t
        dz  j=                  t?        j@                  |d¬«      d¬«       tC        t
        dz  «       y # t.        t0        t2        f$ r6}|d   j5                  |j6                  dt9        |«      ddœ«       Y d }~ŒÑd }~ww xY w)N)Údescriptionz--smokeÚ
store_true)Úactionz--allz--train)ræ   z--checkpointz checkpoints/validated_tabular.pt)ræ   Údefaultz!choose --smoke, --all, or --trainTrz   z}Current prepared training_valid masks are false. Real supervised training is refused; forward/backward smoke has no accuracy.)Úlabel_policyÚmodelsr·   Ú	syntheticrv   ÚtrainingrÁ  rÂ  r·   Ú$unavailable_input_or_execution_errorzDinspect the named prepared schema; no fallback/random input was used)rN   rO   rÍ   r¾  zreport.json)ÚindentÚutf8)Úencoding)"ÚargparseÚArgumentParserÚ__doc__Úadd_argumentr   rŽ   Ú
parse_argsÚsmoker>   rZ   Úerrorr�   r   r!   r    r   r†   rÂ   rì   r  r�  r“  Úextendr   r7   Ú
ValueErrorr‹   rç   r“   rº  Ú
write_textÚjsonÚdumpsÚprint)rL   ÚargsÚreportÚcinÚcoutÚfunrê   s          r)   ÚmainrÚ  ¦   sn  € Ü×Ñ¬'Ô2€A°A·N±NÀ9ÐT`°NÔ4aÐcd×cqÑcqÐryð  BNÐcqô  dOð  QR÷  Q_ñ  Q_ð  `iô  osð  Q_ô  Qtð  vw÷  vDñ  vDð  ESô  Y]ô  fið  jLñ  fLð  vDô  vMð  TU÷  T`ñ  T`ó  Tbð  OSØ�:Š:˜Ÿš T§Z¢Z°!·'±'Ð:]Ô2^Ü‡I�I�d D€IÔ)¬?Ô+<ð  VUð  _að  prð  Añ  FB¸fØ‡z‚zä.¨t¯z©zÓ:‰ˆˆDÜ,Ô-=¸cÀ!¹eÀDÓ-IÈ$Ï*É*ÐUY×UdÑUdÓeˆˆzÑØ‡z‚z�T—X’XÜ#¤O´OÄOÔThÓiˆCØ˜Ñ!×(Ñ(©¨V°KÑ-@Ó)AÕBð jð ‡x‚x�˜Ñ$×+Ñ+¬L«NÔ;ÜˆÑ×"Ñ"¤4§:¡:¨f¸AÔ#>ÈÐ"ÔOÔQVÔWZÐ[hÑWhÕQiøô '¤|´JÐ?ò  PÈÈ}ÑH]×HdÑHdÐor×o{Ño{ð  Flô  vyð  z}ó  v~ð  HNñ  fO÷  IPñ  IPûð  Pús   Å/G8Ç8IÈ,H=È=IÚ__main__)r(   z
np.ndarrayÚreturnr   )r8   úTensor | dict[str, Tensor]rÜ  zlist[Tensor])r8   rÝ  rÜ  ÚNoner.   )rN   r“   rh   ú	nn.Moduleri   ú(Callable[[], Tensor | dict[str, Tensor]]rP   r“   rj   r“   rk   zdict[str, Any] | NonerÜ  údict[str, Any])r•   r“   rh   rß  ri   rà  rÜ  rá  )rÜ  ztuple[Tensor, list[str], str])r¼   úlist[dict[str, Any]]rÜ  râ  )r½   rá  r¾   r   rÜ  z-tuple[Tensor, Tensor, Tensor, Tensor, Tensor])
rh   r   r¾   r   r9  ré   r8  ré   rÜ  rá  )rÜ  rá  )rÜ  rÞ  )CrÊ  Ú
__future__r   rÈ  rÒ  Úosr\   Úpathlibr   Útypingr   r   Únumpyr�   r&   r   r   Úarchitecturesr
   r   r   r   r   r   r   r   r   r   Údatar   r   r   r   r   r   r   r   r   r   r   rÃ  r   r    r!   r"   rŽ   Úset_num_threadsr+  r  Ú	cpu_countr    r*   r9   r?   rs   r›   r¤   rÂ   rì   r  r  rJ  r�  r“  rº  rÚ  rç   r«   r+   r)   Ú<module>rì     sî   ðÙ QÝ "ß × Ý ß  Û Û ß ÷ p÷  p÷  p÷ z÷  z÷  zñ  zß mÓ màÐ	Ñ€Ð0˜5×0Ñ0±°Q±s¸1¸\¸R¿\¹\»^Ò=PÈqÓ7QÓ1RÔSà!&§¡Ô `óó~ô	ó	dóKóóó8ó_óBó&ó>ó
Pójð ˆZÒ™�Ðr+   