+
    ˜°³jŸ‡  ã                   ó  € ^ RI t ^ RIt^ RIt^ RIHt ^ RIt^ RIt^ RIH	t	 ^ RI
HtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^R
IHt ^RIHtHt . RDOt]P<                  ! ]4      t R R lt!R R lt"R R lt#R R lt$R R lt%/ ]PL                  RR]#3b]PN                  RR]#3b]PP                  RR]#3b]PR                  RR]%3b]PT                  RR]%3b]PV                  RR]%3b]PX                  RR]%3b]PZ                  RR]%3b]P\                  RR]%3b]P^                  RR]%3b]P`                  R R]%3b]Pb                  R R]%3b]Pd                  R!R]%3b]Pf                  R!R]%3b]Ph                  R!R]%3b]Pj                  R"R#]%3b]Pl                  R$R%]$3b]Pn                  R$R%]$3]Pp                  R&R%]$3]Pr                  R&R%]$3]Pt                  R'R(]%3]Pv                  R)R*]$3]Px                  R)R*]$3]P\                  RR+]%3]Pz                  RR+]%3]P|                  RR+]%3/	Ct?R, R- lt@RER. ltARFR/ ltBRGR0 ltCR1 tDR2 tERHR3 ltFRHR4 ltGRIR5 ltHRJR6 ltIRHR7 ltJRKR8 ltKRLR9 ltLR: tMRMR; ltNR< tOR= tPRNR> ltQRNR? ltRROR@ ltSRA tTRB tURORC ltVR# )Pé    N)ÚAny)Ú
struct_pb2)ÚHistogramProtoÚSummaryÚSummaryMetadata)ÚTensorProto)ÚTensorShapeProto)Ú
layout_pb2)ÚPrCurvePluginData)ÚTextPluginData)Úmake_np)Ú_prepare_videoÚconvert_to_HWCc                ó0   € V ^8„  d   QhR\         R\        /# )é   ÚfÚreturn)ÚfloatÚint)Úformats   "Ú`/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torch/utils/tensorboard/summary.pyÚ__annotate__r   6   s   € ÷ &ñ &”5ð &œSñ &ó    c                ól   € \         P                  ! RV 4      p\         P                  ! RV4      ^ ,          # )a-  Casts a half-precision float value into an integer.

Converts a half precision floating point value, such as `torch.half` or
`torch.bfloat16`, into an integer value which can be written into the
half_val field of a TensorProto for storage.

To undo the effects of this conversion, use int_to_half().

r   Úi©ÚstructÚpackÚunpack)r   Úbufs   & r   Úhalf_to_intr!   6   s*   € ô �+Š+�c˜1Ó
€CÜ�=Š=˜˜cÓ" 1Õ%Ð%r   c                ó0   € V ^8„  d   QhR\         R\        /# )r   r   r   )r   r   )r   s   "r   r   r   C   s   € ÷ &ñ &”3ð &œ5ñ &r   c                ól   € \         P                  ! RV 4      p\         P                  ! RV4      ^ ,          # )zŠCasts an integer value to a half-precision float.

Converts an integer value obtained from half_to_int back into a floating
point value.

r   r   r   )r   r    s   & r   Úint_to_halfr$   C   s*   € ô �+Š+�c˜1Ó
€CÜ�=Š=˜˜cÓ" 1Õ%Ð%r   c                óZ   € V ^8„  d   QhR\         P                  R\        \        ,          /# ©r   Útr   )ÚtorchÚTensorÚlistr   )r   s   "r   r   r   M   s"   € ÷ :ñ :œ5Ÿ<™<ð :¬D´­Iñ :r   c                 óz   € V P                  4       P                  4        Uu. uF  p\        V4      NK  	  up# u upi ©N)ÚflattenÚtolistr!   )r'   Úxs   & r   Ú_tensor_to_half_valr0   M   s/   € Ø$%§I¡I£K×$6Ñ$6Ô$8Ó9Ñ$8˜qŒK˜ŽNÑ$8Ñ9Ð9ùÒ9s   ¡8c                óZ   € V ^8„  d   QhR\         P                  R\        \        ,          /# r&   )r(   r)   r*   r   )r   s   "r   r   r   P   s"   € ÷ 4ñ 4œeŸl™lð 4¬t´E­{ñ 4r   c                 óf   € \         P                  ! V 4      P                  4       P                  4       # r,   )r(   Úview_as_realr-   r.   ©r'   s   &r   Ú_tensor_to_complex_valr5   P   s%   € Ü×Ò˜aÓ ×(Ñ(Ó*×1Ñ1Ó3Ð3r   c                óZ   € V ^8„  d   QhR\         P                  R\        \        ,          /# r&   )r(   r)   r*   r   )r   s   "r   r   r   S   s"   € ÷  ñ  ”u—|‘|ð  ¬¬S­	ñ  r   c                 ó>   € V P                  4       P                  4       # r,   )r-   r.   r4   s   &r   Ú_tensor_to_listr8   S   s   € Ø�9‰9‹;×ÑÓÐr   ÚDT_HALFÚhalf_valÚDT_BFLOAT16ÚDT_FLOATÚ	float_valÚ	DT_DOUBLEÚ
double_valÚDT_INT8Úint_valÚDT_UINT8ÚDT_INT16ÚDT_INT32ÚDT_INT64Ú	int64_valÚDT_COMPLEX32Úscomplex_valÚDT_COMPLEX64ÚDT_BOOLÚbool_valÚDT_COMPLEX128Údcomplex_valÚ
uint32_valc                ó$   € V ^8„  d   QhR\         /# )r   r   )r   )r   s   "r   r   r   u   s   € ÷ 5ñ 5¤#ñ 5r   c                 ó¬   € \        V \        P                  4      '       g   V P                  4       MT pVP                  \        P
                  8X  d   ^# ^ÿ# )é   )Ú
isinstanceÚnpÚndarrayÚnumpyÚdtypeÚuint8)ÚtensorÚ	converteds   & r   Ú_calc_scale_factorrZ   u   s9   € Ü&0°¼¿¹×&DÒ&D�—‘”È&€IØ—‘¤2§8¡8Ô+ˆ1Ð4°Ð4r   c	                 ó  € ^ RI Hp	Hp
 V
P                  4       pV	P	                  V 4      pWW$3w  rÞppVP                  Wß3VV3VV3Wï3Wß3.VVR7       V'       d©   TpVP                  V4      w  ppppVV,
          VV,
          pp\        P                  ! RV,          4      pVP                  VVV,
          ^V,          ,
          3VV,           V3.VR7       VP                  VV,           VV,
          V,
          3VVVR7       V # )r   )Ú	ImageDrawÚ	ImageFont)ÚwidthÚfillgš™™™™™©?)r_   )r_   Úfont)ÚPILr\   r]   Úload_defaultÚDrawÚlineÚgetbboxrS   ÚceilÚ	rectangleÚtext)ÚimageÚxminÚyminÚxmaxÚymaxÚdisplay_strÚcolorÚ
color_textÚ	thicknessr\   r]   r`   ÚdrawÚleftÚrightÚtopÚbottomÚtext_bottomÚ_leftÚ_topÚ_rightÚ_bottomÚ
text_widthÚtext_heightÚmargins   &&&&&&&&&                r   Ú_draw_single_boxr   z   s#  € ÷ )à×!Ñ!Ó#€DØ�>‰>˜%Ó €DØ"&¨dÐ!9Ñ€T�#�vØ‡I�IØ
ˆ�t˜V�n u¨f o¸°|ÀdÀ[ÐQØØð ô ÷
 Øˆà'+§|¡|°KÓ'@Ñ$ˆˆt�V˜WØ"(¨5¥.°'¸Dµ.�Kˆ
Ü—’˜ Õ+Ó,ˆØ�‰à�{ [Õ0°1°vµ:Õ=Ð>Ø˜
Õ" KÐ0ðð ð 	ô 	
ð 	�	‰	Ø�F�]˜K¨+Õ5¸Õ>Ð?ØØØð	 	ô 	
ð €Lr   c           
     óÄ
  a a€ ^ RI p^ RIHpHpHpHpHpHp	 ^ RIH	p
H
pHpHpHp ^ RIHpHpHp \%        S \&        4      '       g!   \(        P+                  R4       \-        R4      h\%        V\&        4      '       g!   \(        P+                  R4       \-        R4      hT;'       g    / p\%        V\&        4      '       g   \-        R4      hVP/                  4        Fw  w  opSS 9  g[   \%        V\0        4      '       dE   \2        ;QJ d     V V3R lV 4       F  '       d   K   R	M	  R
M! V V3R lV 4       4      '       d   Kg  \-        RS RS R24      h	  . pV! 4       pS P/                  4        EF€  w  opVf   K  \%        V\4        \6        34      '       d‘   VVP8                  S,          n        SV9   dE   \<        P>                  ! VS,           Uu. uF  p\<        P@                  ! VR7      NK  	  upR7      pMRpVPC                  V! SVPA                  R4      VR7      4       K¹  \%        V\D        4      '       d’   VVP8                  S,          n#        SV9   dE   \<        P>                  ! VS,           Uu. uF  p\<        P@                  ! VR7      NK  	  upR7      pMRpVPC                  V! SVPA                  R4      VR7      4       EK`  \%        V\H        4      '       d’   VVP8                  S,          n%        SV9   dE   \<        P>                  ! VS,           Uu. uF  p\<        P@                  ! VR7      NK  	  upR7      pMRpVPC                  V! SVPA                  R4      VR7      4       EK  \%        VVPL                  4      '       dV   \O        V4      ^ ,          pVVP8                  S,          n        VPC                  V! SVPA                  R4      R7      4       EKx  \Q        R4      h	  V! VVR7      p\S        \R        PT                  ! VVPW                  4       R7      R7      p\Y        \X        P@                  ! VVR7      .R7      pV Uu. uF  pV! V! VR7      R7      NK  	  ppV! VVR7      pV! VVR 7      p\S        \R        PT                  ! VVPW                  4       R7      R7      p\Y        \X        P@                  ! V
VR7      .R7      pV! V	PA                  R!4      R"7      pV! VVR#7      p\S        \R        PT                  ! VVPW                  4       R7      R7      p\Y        \X        P@                  ! VVR7      .R7      pVVV3# u upi u upi u upi u upi )$aö  Output three `Summary` protocol buffers needed by hparams plugin.

`Experiment` keeps the metadata of an experiment, such as the name of the
  hyperparameters and the name of the metrics.
`SessionStartInfo` keeps key-value pairs of the hyperparameters
`SessionEndInfo` describes status of the experiment e.g. STATUS_SUCCESS

Args:
  hparam_dict: A dictionary that contains names of the hyperparameters
    and their values.
  metric_dict: A dictionary that contains names of the metrics
    and their values.
  hparam_domain_discrete: (Optional[Dict[str, List[Any]]]) A dictionary that
    contains names of the hyperparameters and all discrete values they can hold

Returns:
  The `Summary` protobufs for Experiment, SessionStartInfo and
    SessionEndInfo
N)ÚDataTypeÚ
ExperimentÚ
HParamInfoÚ
MetricInfoÚ
MetricNameÚStatus)ÚEXPERIMENT_TAGÚPLUGIN_DATA_VERSIONÚPLUGIN_NAMEÚSESSION_END_INFO_TAGÚSESSION_START_INFO_TAG)ÚHParamsPluginDataÚSessionEndInfoÚSessionStartInfoz>parameter: hparam_dict should be a dictionary, nothing logged.z>parameter: metric_dict should be a dictionary, nothing logged.zIparameter: hparam_domain_discrete should be a dictionary, nothing logged.c              3   ó\   <"  € T F!  p\        V\        SS,          4      4      x € K#  	  R # 5ir,   )rR   Útype)Ú.0ÚdÚhparam_dictÚks   & €€r   Ú	<genexpr>Úhparams.<locals>.<genexpr>ì   s$   øé € ÐFÁA¸q”z !¤T¨+°a­.Ó%9×:Ð:ÃAùs   ƒ),FTz"parameter: hparam_domain_discrete[z/] should be a list of same type as hparam_dict[z].)Únumber_value)ÚvaluesÚDATA_TYPE_FLOAT64)Únamer�   Údomain_discrete)Ústring_valueÚDATA_TYPE_STRING)Ú
bool_valueÚDATA_TYPE_BOOL)rš   r�   z=value should be one of int, float, str, bool, or torch.Tensor)Úsession_start_infoÚversion©Úplugin_nameÚcontent©Úplugin_data)ÚtagÚmetadata©Úvalue©r§   )rš   )Úhparam_infosÚmetric_infos)Ú
experimentr¡   ÚSTATUS_SUCCESS)Ústatus)Úsession_end_infor¡   )-r(   Ú#tensorboard.plugins.hparams.api_pb2r�   r‚   rƒ   r„   r…   r†   Ú$tensorboard.plugins.hparams.metadatar‡   rˆ   r‰   rŠ   r‹   Ú+tensorboard.plugins.hparams.plugin_data_pb2rŒ   r�   rŽ   rR   ÚdictÚloggerÚwarningÚ	TypeErrorÚitemsr*   Úallr   r   Úhparamsr—   r   Ú	ListValueÚValueÚappendÚstrrœ   Úboolrž   r)   r   Ú
ValueErrorr   Ú
PluginDataÚSerializeToStringr   )r“   Úmetric_dictÚhparam_domain_discreter(   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   ÚvÚhpsÚssir’   r›   r¤   Úsmdr”   ÚmtsÚexpÚseis   f&&                      `   r   r»   r»   ¥   s¿  ù€ ó( ÷÷ ÷õ ÷ñ ô �k¤4×(Ò(Ü�‰ÐWÔXÜØLó
ð 	
ô �k¤4×(Ò(Ü�‰ÐWÔXÜØLó
ð 	
ð 4×9Ð9°rÐÜÐ,¬d×3Ò3ÜØWó
ð 	
ð '×,Ñ,Ö.‰ˆˆ1à�[Ô Ü˜a¤×&Ò&ß“3ÕFÁAÓF—3—3’3ÕFÁAÓF×FÔFäØ4°Q°CÐ7fÐghÐfiÐikÐlóð ñ /ð €Cá
Ó
€CØ×!Ñ!×#‰ˆˆ1ØŠ9ÙÜ�aœ#œu˜×&Ò&Ø*+ˆC�K‰K˜�NÔ'àÐ*Ô*Ü?I×?SÒ?Sð "8¸Ö!:óá!:˜Aô #×(Ò(°a×8Ù!:ñô@‘ð #'�à�J‰JÙØØ!Ÿ™Ð(;Ó<Ø$3ôôñ ä�aœ×ÒØ*+ˆC�K‰K˜�NÔ'àÐ*Ô*Ü",×"6Ò"6ð "8¸Ö!:óá!:˜Aô #×(Ò(°a×8Ù!:ñô#‘ð #'�à�J‰JÙØØ!Ÿ™Ð(:Ó;Ø$3ôôò ä�aœ×ÒØ()ˆC�K‰K˜�NÔ%àÐ*Ô*Ü",×"6Ò"6ð "8¸Ö!:óá!:˜Aô #×(Ò(°A×6Ù!:ñô#‘ð #'�à�J‰JÙØØ!Ÿ™Ð(8Ó9Ø$3ôôò ä�a˜Ÿ™×&Ò&Ü˜“
˜1•ˆAØ*+ˆC�K‰K˜�NÔ'Ø�J‰J‘z q¨x¯~©~Ð>QÓ/RÔSÔTÚÜØKó
ð 	
ñU $ñ\  °3Ð@SÔT€GÜ
Ü#×.Ò.Ø#¨W×-FÑ-FÓ-Hô
ô€Cô
 œŸšÐ+AÈCÔPÐQÔ
R€Cá7BÓ
C±{°!‰:™:¨!Ô,×-±{€CÐ
Cá
 #°CÔ
8€Cá¨3Ð8KÔL€GÜ
Ü#×.Ò.Ø#¨W×-FÑ-FÓ-Hô
ô€Cô
 œŸš¨>ÀCÔHÐIÔ
J€Cá
 §¡Ð-=Ó >Ô
?€CÙ°Ð>QÔR€GÜ
Ü#×.Ò.Ø#¨W×-FÑ-FÓ-Hô
ô€Cô
 œŸšÐ+?È#ÔNÐOÔ
P€Cà��Sˆ=ÐùòGùò,ùò,ùòD Ds   Ç U
É5 U
Ì U
ÑUc                óâ  € \        V4      P                  4       pVP                  ^ 8w  d'   \        RVP                   RVP                   R24      h\        V4      pV'       dl   \        V.RR7      pV'       d   \        V.RR7      p\        P                  ! RR	7      p\        VR
7      p\        \        P                  ! V VVR7      .R7      # \        \        P                  ! WR7      .R7      # )aØ  Output a `Summary` protocol buffer containing a single scalar value.

The generated Summary has a Tensor.proto containing the input Tensor.
Args:
  name: A name for the generated node. Will also serve as the series name in
    TensorBoard.
  tensor: A real numeric Tensor containing a single value.
  collections: Optional list of graph collections keys. The new summary op is
    added to these collections. Defaults to `[GraphKeys.SUMMARIES]`.
  new_style: Whether to use new style (tensor field) or old style (simple_value
    field). New style could lead to faster data loading.
Returns:
  A scalar `Tensor` of type `string`. Which contains a `Summary` protobuf.
Raises:
  ValueError: If tensor has the wrong shape or type.
zNTensor should contain one element (0 dimensions).             Was given size: z and z dimensions.r<   )r=   rV   r>   )r?   rV   Úscalars©r£   r¥   ©r§   rX   r¨   r©   )r§   Úsimple_value)r   ÚsqueezeÚndimÚAssertionErrorÚsizer   r   r   rÂ   r   r½   )	rš   rX   ÚcollectionsÚ	new_styleÚdouble_precisionÚscalarÚtensor_protor¦   rÉ   s	   &&&&&    r   rÙ   rÙ   b  sØ   € ô" �V‹_×$Ñ$Ó&€FØ‡{�{�aÔÜð  Ø#Ÿ[™[˜M¨¨v¯{©{¨m¸<ðIó Jð 	Jô �6‹]€FßÜ"¨f¨X¸ZÔHˆßÜ&°6°(À+ÔNˆLä%×0Ò0¸YÔGˆÜ¨+Ô6ˆÜä—’ØØ'Ø ôðô
ð 	
ô œgŸmšm°ÔJÐKÔLÐLr   c                ó,  € VP                  4       VP                  ,          R8¼  d   \        R4      hVP                  \        9   dk   \        VP                  ,          w  r#p\        R/ RTR\        VP                   Uu. uF  p\        P                  ! VR7      NK  	  upR7      W4! V4      /B pM\        V  RVP                   24      h\        P                  ! RR7      p\        VR	7      p\        \        P                  ! WVR
7      .R7      # u upi )aÊ  Outputs a `Summary` protocol buffer containing the full tensor.
The generated Summary has a Tensor.proto containing the input Tensor.
Args:
  tag: A name for the generated node. Will also serve as the series name in
    TensorBoard.
  tensor: Tensor to be converted to protobuf
Returns:
  A tensor protobuf in a `Summary` protobuf.
Raises:
  ValueError: If tensor is too big to be converted to protobuf, or
                 tensor data type is not supported
zAtensor is bigger than protocol buffer's hard limit of 2GB in sizerV   Útensor_shape©rÕ   ©Údimz has unsupported tensor dtype rX   rÏ   r¥   ©r§   r¨   rX   r©   l        © )ÚnumelÚitemsizerÁ   rV   Ú_TENSOR_TYPE_MAPr   r	   ÚshapeÚDimr   rÂ   r   r½   )	r§   rX   rV   Ú
field_nameÚconversion_fnr/   rÚ   r¦   rÉ   s	   &&       r   rÚ   rÚ   �  sõ   € ð ‡|�|ƒ~˜Ÿ™Õ'¨GÔ4ÜØOó
ð 	
ð ‡|�|Ô'Ô'Ü+;¸F¿L¹LÕ+IÑ(ˆ˜=Ü"ñ 
à˜ØÔ 0Ø?E¿|º|ÓL¹|¸!Ô)×-Ò-°1×5¹|ÑLô!ð ˜M¨&Ó1ðñ
‰ô ˜C˜5Ð >¸v¿|¹|¸nÐMÓNÐNä!×,Ò,¸ÔB€KÜ
 kÔ
2€CÜœ'Ÿ-š-¨CÀlÔSÐTÔUÐUùò Ms   Á> Dc           
     ój   € \        VVVVVVVR7      p\        \        P                  ! WR7      .R7      # )aÒ  Output a `Summary` protocol buffer with a histogram.

The generated
[`Summary`](https://www.tensorflow.org/code/tensorflow/core/framework/summary.proto)
has one summary value containing a histogram for `values`.
Args:
  name: A name for the generated node. Will also serve as a series name in
    TensorBoard.
  min: A float or int min value
  max: A float or int max value
  num: Int number of values
  sum: Float or int sum of all values
  sum_squares: Float or int sum of squares for all values
  bucket_limits: A numeric `Tensor` with upper value per bucket
  bucket_counts: A numeric `Tensor` with number of values per bucket
Returns:
  A scalar `Tensor` of type `string`. The serialized `Summary` protocol
  buffer.
©ÚminÚmaxÚnumÚsumÚsum_squaresÚbucket_limitÚbucket©r§   Úhistor©   )r   r   r½   )	rš   rë   rì   rí   rî   rï   Úbucket_limitsÚbucket_countsÚhists	   &&&&&&&& r   Úhistogram_rawr÷   ²  s<   € ô* ØØØØØØ"Øô€Dô œ'Ÿ-š-¨DÔ=Ð>Ô?Ð?r   c                óš   € \        V4      p\        VP                  \        4      W#4      p\	        \        P
                  ! WR7      .R7      # )a0  Output a `Summary` protocol buffer with a histogram.

The generated
[`Summary`](https://www.tensorflow.org/code/tensorflow/core/framework/summary.proto)
has one summary value containing a histogram for `values`.
This op reports an `InvalidArgument` error if any value is not finite.
Args:
  name: A name for the generated node. Will also serve as a series name in
    TensorBoard.
  values: A real numeric `Tensor`. Any shape. Values to use to
    build the histogram.
Returns:
  A scalar `Tensor` of type `string`. The serialized `Summary` protocol
  buffer.
rò   r©   )r   Úmake_histogramÚastyper   r   r½   )rš   r˜   ÚbinsÚmax_binsrö   s   &&&& r   Ú	histogramrý   Ó  s9   € ô" �V‹_€FÜ˜&Ÿ-™-¬Ó.°Ó?€DÜœ'Ÿ-š-¨DÔ=Ð>Ô?Ð?r   c           
     ó¨  € V P                   ^ 8X  d   \        R4      hV P                  R4      p \        P                  ! WR7      w  r4\        V4      pVe³   WR8”  d­   WR,          pWV,          pV^ 8w  d$   \        P                  ! V^ Wg,
          ..R^ R7      pVP                  RV4      P                  RR7      p\        P                  ! VP                   ^,           3VP                  4      pVRRV1,          VRR% VR,          VR&   Tp\        P                  ! \        P                  ! V^ 4      4      p	\        P                  ! V	^ V	R,          ^,
          .RR7      w  r«\        V
4      p
\        V4      ^,           p?	V
^ 8”  d   W:^,
          V M\        P                  ! ^ .VRV .4      pWJV^,            pVP                   ^ 8X  g   VP                   ^ 8X  d   \        R	4      hV P                  V 4      p\!        V P#                  4       V P%                  4       \        V 4      V P                  4       VVP'                  4       VP'                  4       R
7      # )zDConvert values into a histogram proto using logic from histogram.cc.zThe input has no element.)rû   NÚconstant)Ú	pad_widthÚmodeÚconstant_values)Úaxisrt   )Úsidez1The histogram is empty, please file a bug report.rê   éÿÿÿÿ)rÕ   rÁ   ÚreshaperS   rý   ÚlenÚpadrî   ÚemptyrV   ÚcumsumÚgreaterÚsearchsortedr   ÚconcatenateÚdotr   rë   rì   r.   )r˜   rû   rü   ÚcountsÚlimitsÚnum_binsÚsubsamplingÚsubsampling_remainderÚ
new_limitsÚ
cum_countsÚstartÚendÚsum_sqs   &&&          r   rù   rù   é  sý  € à‡{�{�aÔÜÐ4Ó5Ð5Ø�^‰^˜BÓ€FÜ—\’\ &Ô4�N€FÜ�6‹{€HØÒ Ô 3ØÕ*ˆØ (Õ 6ÐØ  AÔ%ä—V’VØØ˜{ÕBÐCÐDØØ !ô	ˆFð —‘  KÓ0×4Ñ4¸"Ð4Ó=ˆÜ—X’X˜vŸ{™{¨Q�Ð0°&·,±,Ó?ˆ
Ø   " [ Õ1ˆ
�3�BˆØ �ˆ
�2‰Øˆô —’œ2Ÿ:š: f¨aÓ0Ó1€JÜ—’ ¨a°¸BµÀ!Õ1CÐ-DÈ7ÔS�J€EÜ�‹J€EÜ
ˆc‹(�Q�,€CØð $)¨1¤9ˆ�q�y˜3Ñ´"·.².À1À#ÀvÈdÈsÀ|ÐATÓ2Uð ð ˜C !�GÐ$€Fà‡{�{�aÔ˜6Ÿ;™;¨!Ô+ÜÐLÓMÐMà�Z‰Z˜Ó€FÜØ�J‰J‹LØ�J‰J‹LÜ�‹KØ�J‰J‹LØØ—]‘]“_Ø�}‰}‹ôð r   c                óH  € \        V4      p\        W4      p\        V4      pVP                  \        P
                  4      pW,          P                  ^ ^ÿ4      P                  \        P                  4      p\        WR7      p\        \        P                  ! WR7      .R7      # )aê  Output a `Summary` protocol buffer with images.

The summary has up to `max_images` summary values containing images. The
images are built from `tensor` which must be 3-D with shape `[height, width,
channels]` and where `channels` can be:
*  1: `tensor` is interpreted as Grayscale.
*  3: `tensor` is interpreted as RGB.
*  4: `tensor` is interpreted as RGBA.
The `name` in the outputted Summary.Value protobufs is generated based on the
name, with a suffix depending on the max_outputs setting:
*  If `max_outputs` is 1, the summary value tag is '*name*/image'.
*  If `max_outputs` is greater than 1, the summary value tags are
   generated sequentially as '*name*/image/0', '*name*/image/1', etc.
Args:
  tag: A name for the generated node. Will also serve as a series name in
    TensorBoard.
  tensor: A 3-D `uint8` or `float32` `Tensor` of shape `[height, width,
    channels]` where `channels` is 1, 3, or 4.
    'tensor' can either have values in [0, 1] (float32) or [0, 255] (uint8).
    The image() function will scale the image values to [0, 255] by applying
    a scale factor of either 1 (uint8) or 255 (float32). Out-of-range values
    will be clipped.
Returns:
  A scalar `Tensor` of type `string`. The serialized `Summary` protocol
  buffer.
)Úrescale©r§   ri   r©   )r   r   rZ   rú   rS   Úfloat32ÚcliprW   Ú
make_imager   r½   )r§   rX   r  ÚdataformatsÚscale_factorri   s   &&&&  r   ri   ri   !  sx   € ô6 �V‹_€FÜ˜FÓ0€Fä% fÓ-€LØ�]‰]œ2Ÿ:™:Ó&€FØÕ#×)Ñ)¨!¨SÓ1×8Ñ8¼¿¹ÓB€FÜ�vÔ/€EÜœ'Ÿ-š-¨CÔ=Ð>Ô?Ð?r   c                ó^  € \        V4      p\        W4      p\        V4      pVP                  \        P                  4      \        V4      ,          p\        VP                  ^ ^ÿ4      P                  \        P                  4      VVVR7      p\        \        P                  ! WR7      .R7      # )z/Output a `Summary` protocol buffer with images.)r  ÚroisÚlabelsr  r©   )r   r   rú   rS   r  rZ   r  r  rW   r   r½   )r§   Útensor_imageÚtensor_boxesr  r  r#  ri   s   &&&&&& r   Úimage_boxesr&  F  sŒ   € ô ˜<Ó(€LÜ! ,Ó<€LÜ˜<Ó(€LØ×&Ñ&¤r§z¡zÓ2Ô5GÈÓ5UÕU€LÜØ×Ñ˜!˜SÓ!×(Ñ(¬¯©Ó2ØØØô	€Eô œ'Ÿ-š-¨CÔ=Ð>Ô?Ð?r   c                 óÐ   € VP                   ^ ,          p\        V4      pV FA  p\        T W^ 3,          W^3,          W^3,          W^3,          Vf   RMW%,          RR7      p KC  	  V # )r   NÚRed)rn   ro   )rå   Úranger   )Ú
disp_imageÚboxesr#  Ú	num_boxesÚlist_gtr   s   &&&   r   Ú
draw_boxesr.  W  sj   € à—‘˜A•€IÜ�IÓ€GÛˆÜ%ØØ�Q�$�KØ�Q�$�KØ�Q�$�KØ�Q�$�KØ &¢™°FµIØô
Š
ñ ð Ðr   c                óÈ  € ^ RI Hp V P                  w  rVp\        WQ,          4      p\        Wa,          4      p	VP	                  V 4      p
Ve   \        W¢VR7      p
VP                  P                  pV
P                  W˜3V4      p
^ RI	pVP                  4       pV
P                  VRR7       VP                  4       pVP                  4        \        P                  ! VVVVR7      # )z=Convert a numpy representation of an image to Image protobuf.)ÚImageN)r#  ÚPNG)r   ©Úheightr^   Ú
colorspaceÚencoded_image_string)ra   r0  rå   r   Ú	fromarrayr.  Ú
ResamplingÚLANCZOSÚresizeÚioÚBytesIOÚsaveÚgetvalueÚcloser   )rX   r  r"  r#  r0  r3  r^   ÚchannelÚscaled_heightÚscaled_widthri   Ú	ANTIALIASr:  ÚoutputÚimage_strings   &&&&           r   r  r  h  sÀ   € åà#Ÿ\™\Ñ€F�7Ü˜Õ(Ó)€MÜ�u•Ó'€LØ�O‰O˜FÓ#€EØÒÜ˜5¨vÔ6ˆØ× Ñ ×(Ñ(€IØ�L‰L˜,Ð6¸	ÓB€EÛà�Z‰Z‹\€FØ	‡J�Jˆv˜e€JÔ$Ø—?‘?Ó$€LØ
‡L�L„NÜ�=Š=ØØØØ)ô	ð r   c                 óF  € \        V4      p\        V4      p\        V4      pVP                  \        P
                  4      pW,          P                  ^ ^ÿ4      P                  \        P                  4      p\        W4      p\        \        P                  ! WR7      .R7      # )r   r  r©   )r   r   rZ   rú   rS   r  r  rW   Ú
make_videor   r½   )r§   rX   Úfpsr   Úvideos   &&&  r   rH  rH  ‚  sv   € Ü�V‹_€FÜ˜FÓ#€Fä% fÓ-€LØ�]‰]œ2Ÿ:™:Ó&€FØÕ#×)Ñ)¨!¨SÓ1×8Ñ8¼¿¹ÓB€FÜ�vÓ#€EÜœ'Ÿ-š-¨CÔ=Ð>Ô?Ð?r   c           	      óª  €  ^ RI p ^ RI Hp ^ RIpT P
                  w  rVrxTP                  \        T 4      TR7      p	TP                  RR7      ;_uu_ 4       p
T
P                  p T	P                  TR	RR
7       T
P                  ^ 4       T
P                  4       p\        P                  ! YgYŒR7      uuRRR4       #   \         d    \        R4        R# i ; i  \         d    \        RR4        R# i ; i  \         d>     T	P                  TR	R	R7        L   \         d    T	P                  TR	R7         LÁi ; ii ; i  + '       g   i     R# ; i)r   Nzadd_video needs package moviepy)Úeditorz6moviepy is installed, but can't import moviepy.editor.z2Some packages could be missing [imageio, requests])rG  z.gif)ÚsuffixF)Úverboser¶   )rL  Úprogress_bar)rL  r2  )ÚmoviepyÚImportErrorÚprintrJ  Útempfilerå   ÚImageSequenceClipr*   ÚNamedTemporaryFilerš   Ú	write_gifr¸   ÚseekÚreadr   r0  )rX   rG  rN  ÚmpyrQ  Ú_tÚhÚwÚcr  r   ÚfilenameÚtensor_strings   &&           r   rF  rF  �  s8  € ðÛðÝ)ó à—,‘,�K€Bˆ1ð × Ñ ¤ f£°3Ð Ó7€Dà	×	$Ñ	$¨FÐ	$×	3Ô	3°qØ—6‘6ˆð	8Ø�N‰N˜8¨U¸4ˆNÔ@ð 	
�‰ˆqŒ	ØŸ™›ˆä�}Š}Ø¨!ô
÷ 
4Ò	3øô% ô ÜÐ/Ô0Úðûô
 ô ÜØDØ@ô	
ò 	ðûô" ô 	8ð8Ø—‘˜x°ÀU�ÖKøÜô 8Ø—‘˜x°�×7ð8úð	8ú÷	 
4×	3Ð	3úsp   ‚B; ‡C ÁEÁ$C6Á88EÂ;CÃCÃC3Ã2C3Ã6D>ÄDÄEÄD:	Ä6D>Ä7EÄ9D:	Ä:D>Ä>EÅE	c                 ó‚  € \        V4      pVP                  4       p\        V4      P                  4       ^8”  d   \	        R4       VP                  R
^4      pVP                  ^8w  d   \        R4      hV\        P                  ! \        P                  4      P                  ,          P                  R4      p^ RIp^ RIpVP                  4       pVP                  VR4      ;_uu_ 4       pVP!                  ^4       VP#                  ^4       VP%                  V4       VP'                  VP(                  4       RRR4       VP+                  4       pVP-                  4        \.        P0                  ! V^VP2                  R
,          VRR7      p	\/        \.        P4                  ! W	R7      .R	7      #   + '       g   i     L~; i)rQ   z4warning: audio amplitude out of range, auto clipped.z%input tensor should be 1 dimensional.z<i2NÚwbz	audio/wav)Úsample_rateÚnum_channelsÚlength_framesÚencoded_audio_stringÚcontent_type)r§   Úaudior©   r  )r   rÒ   Úabsrì   rP  r  rÓ   rÔ   rS   ÚiinfoÚint16rú   r:  Úwaver;  ÚopenÚsetnchannelsÚsetsampwidthÚsetframerateÚwriteframesÚdatar=  r>  r   ÚAudiorå   r½   )
r§   rX   r`  Úarrayr:  ri  ÚfioÚ
wave_writeÚaudio_stringre  s
   &&&       r   re  re  ´  sC  € Ü�F‹O€EØ�M‰M‹O€EÜ
ˆ5ƒz‡~�~Ó˜!ÔÜÐDÔEØ—
‘
˜2˜qÓ!ˆØ‡z�z�Q„ÜÐDÓEÐEà”R—X’XœbŸh™hÓ'×+Ñ+Õ+×3Ñ3°EÓ:€EãÛà
�*‰*‹,€CØ	�‰�3˜×	Ô	 Ø×Ñ Ô"Ø×Ñ Ô"Ø×Ñ Ô,Ø×Ñ˜uŸz™zÔ*÷	 
ð
 —<‘<“>€LØ‡I�I„KÜ�MŠMØØØ—k‘k "•oØ)Ø ô€Eô œ'Ÿ-š-¨CÔ=Ð>Ô?Ð?÷ 
×	ús   Ã)AF.Æ.F>	c           
      ón  € . pV P                  4        EF  w  r#. pVP                  4        FÛ  w  rVV^,          pV^ ,          R8X  d�   \        V4      ^8w  d   \        R4      h\        P                  ! \        P                  P                  V^ ,          V^,          V^,          R7      .R7      p\        P                  ! WXR7      p	M.\        P                  ! VR7      p
\        P                  ! WZR7      p	VP                  V	4       KÝ  	  VP                  \        P                  ! W$R7      4       EK   	  \        P                  ! VR	7      p \        P                  ! R
R7      p\        VR7      p\        RV P                  4       .\        4       R7      p\!        \         P"                  ! RWÜR7      .R7      # )rQ   ÚMarginzlen(tags) != 3)rª   ÚlowerÚupper)Úseries)Útitler~   r«   )rz  Ú	multiline)rz  Úchart)ÚcategoryÚcustom_scalarsrÏ   r¥   Ú	DT_STRING©rV   Ú
string_valrÜ   Úcustom_scalars__config__rÐ   r©   )r¹   r  rÔ   r
   ÚMarginChartContentÚSeriesÚChartÚMultilineChartContentr¾   ÚCategoryÚLayoutr   rÂ   r   rÃ   r	   r   r½   )ÚlayoutÚ
categoriesr”   rÆ   ÚchartsÚ
chart_nameÚchart_metadataÚtagsÚmgccr|  Úmlccr¦   rÉ   rX   s   &             r   r~  r~  Ô  sk  € Ø€JØ—‘—‰ˆØˆØ*+¯'©'®)Ñ&ˆJØ! !Õ$ˆDØ˜aÕ  HÔ,Ü�t“9 ”>Ü(Ð)9Ó:Ð:Ü!×4Ò4ä"×5Ñ5×<Ñ<Ø"& q¥'°°aµÀÀQÅð =ó ðô�ô #×(Ò(¨zÔG‘ä!×7Ò7¸DÔA�Ü"×(Ò(¨zÔJ�Ø�M‰M˜%Ö ñ! +4ð" 	×Ñœ*×-Ò-°AÔD×Eñ' ô* ×Ò¨
Ô3€FÜ!×,Ò,Ð9IÔJ€KÜ
 kÔ
2€CÜØØ×,Ñ,Ó.Ð/Ü%Ó'ô€Fô
 ä�MŠMÐ8ÀÔVð
ôð r   c           
      óL  € \         P                  ! R \        ^ R7      P                  4       R7      p\        VR7      p\	        RVP                  RR7      .\        \        P                  ! ^R7      .R7      R	7      p\        \        P                  ! V R
,           W4R7      .R7      # )rh   )r¡   r¢   r¥   r  Úutf_8)ÚencodingrÝ   rÞ   r€  z/text_summaryrà   r©   )
r   rÂ   r   rÃ   r   Úencoder	   ræ   r   r½   )r§   rh   r¦   rÉ   rX   s   &&   r   rh   rh   ú  s‹   € Ü!×,Ò,Ø¤N¸1Ô$=×$OÑ$OÓ$Qô€Kô  kÔ
2€CÜØØ—K‘K¨�KÓ1Ð2Ü%Ô+;×+?Ò+?ÀQÔ+GÐ*HÔIô€Fô
 Ü�}Š}  Õ!6ÀÔTÐUôð r   c	                 ó  € V^8”  d   ^p\         P                  ! WW4WV34      p	\        ^ VR7      P                  4       p
\        P
                  ! RV
R7      p\	        VR7      p\        RV	P                  R4      P                  4       \        \        P                  ! V	P                  ^ ,          R7      \        P                  ! V	P                  ^,          R7      .R7      R7      p\        \        P                  ! WVR	7      .R
7      # )é   ©r¡   Únum_thresholdsÚ	pr_curvesr¢   r¥   r<   rÝ   rÞ   ©rV   r=   rÜ   rà   r©   r  )rS   Ústackr   rÃ   r   rÂ   r   r  r.   r	   ræ   rå   r   r½   )r§   ÚtpÚfpÚtnÚfnÚ	precisionÚrecallr˜  Úweightsro  Úpr_curve_plugin_datar¦   rÉ   rX   s   &&&&&&&&&     r   Úpr_curve_rawr¤  	  sÛ   € ð ˜ÔØˆÜ�8Š8�R˜R YÐ7Ó8€DÜ,Ø .ôçÑÓð ô "×,Ò,ØÐ)=ô€Kô  kÔ
2€CÜØØ—,‘,˜rÓ"×)Ñ)Ó+Ü%ä ×$Ò$¨$¯*©*°Q­-Ô8Ü ×$Ò$¨$¯*©*°Q­-Ô8ðô
ô	€Fô œ'Ÿ-š-¨CÀfÔMÐNÔOÐOr   c                 óþ  € \        V^4      p\        WW4R7      p\        ^ VR7      P                  4       p\        P
                  ! RVR7      p\	        VR7      p\        RVP                  R4      P                  4       \        \        P                  ! VP                  ^ ,          R7      \        P                  ! VP                  ^,          R7      .R7      R	7      p	\        \        P                  ! WV	R
7      .R7      # )r–  )r˜  r¢  r—  r™  r¢   r¥   r<   rÝ   rÞ   rš  rà   r©   r  )rë   Úcompute_curver   rÃ   r   rÂ   r   r  r.   r	   ræ   rå   r   r½   )
r§   r#  Úpredictionsr˜  r¢  ro  r£  r¦   rÉ   rX   s
   &&&&&     r   Úpr_curver¨  #  sÔ   € ä˜¨Ó-€NÜØ¨Nô€Dô -Ø .ôçÑÓð ô "×,Ò,ØÐ)=ô€Kô  kÔ
2€CÜØØ—,‘,˜rÓ"×)Ñ)Ó+Ü%ä ×$Ò$¨$¯*©*°Q­-Ô8Ü ×$Ò$¨$¯*©*°Q­-Ô8ðô
ô	€Fô œ'Ÿ-š-¨CÀfÔMÐNÔOÐOr   c                 ó  € R pVf   Rp\         P                  ! \         P                  ! W^,
          ,          4      4      pV P                  \         P                  4      p^ V^,
          3p\         P
                  ! VVVWc,          R7      w  r‰\         P
                  ! VVVRV,
          V,          R7      w  r©\         P                  ! VRRR1,          4      RRR1,          p\         P                  ! V
RRR1,          4      RRR1,          pV^ ,          V,
          pV^ ,          V,
          pV\         P                  ! WKV,           4      ,          pV\         P                  ! WKV,           4      ,          p\         P                  ! W¼WÞVV34      # )gH¯¼šò×z>Ng      ð?)rû   r)  r¢  r  )	rS   Úint32Úfloorrú   Úfloat64rý   r
  Úmaximumr›  )r#  r§  r˜  r¢  Ú_MINIMUM_COUNTÚbucket_indicesÚfloat_labelsÚhistogram_rangeÚ
tp_bucketsÚ_Ú
fp_bucketsrœ  r�  rž  rŸ  r   r¡  s   &&&&             r   r¦  r¦  >  s<  € Ø€Nà‚Øˆô —X’XœbŸhšh {ÀqÕ6HÕ'IÓJÓK€NØ—=‘=¤§¡Ó,€Là˜.¨1Õ,Ð-€OÜ—L’LØàØØÕ&ô�M€Jô —L’LØàØØ�|Õ# wÕ.ô�M€Jô 
�Š�:™d ˜dÕ#Ó	$¡T r TÕ	*€BÜ	�Š�:™d ˜dÕ#Ó	$¡T r TÕ	*€BØ	ˆA���€BØ	ˆA���€BØ”R—Z’Z °RµÓ8Õ8€IØ”"—*’*˜^°"­WÓ5Õ5€FÜ�8Š8�R˜R Y°Ð7Ó8Ð8r   c                ó&  € ^ RI p^ RIHp VP                  ! V4      pVP	                  V VVVVP
                  VVR7      p	\        RVP                  R	4      P                  4       \        \        P                  ! VP
                  ^ ,          R7      \        P                  ! VP
                  ^,          R7      \        P                  ! VP
                  ^,          R7      .R7      R7      p\        P                  ! VP                  W4      VV	R7      p
V
# )
a×  Create a tensor summary with summary metadata.

Args:
  name: Uniquely identifiable name of the summary op. Could be replaced by
    combination of name and type to make it unique even outside of this
    summary.
  display_name: Will be used as the display name in TensorBoard.
    Defaults to `name`.
  description: A longform readable description of the summary data. Markdown
    is supported.
  tensor: Tensor to display in summary.
  content_type: Type of content inside the Tensor.
  components: Bitmask representing present parts (vertices, colors, etc.) that
    belong to the summary.
  json_config: A string, JSON-serialized dictionary of ThreeJS classes
    configuration.

Returns:
  Tensor summary with metadata.
N©r¨   )Újson_configr<   rÝ   rÞ   rš  rÐ   r  )r(   Útensorboard.plugins.meshr¨   Ú	as_tensorÚcreate_summary_metadatarå   r   r  r.   r	   ræ   r   r½   Úget_instance_name)rš   Údisplay_nameÚdescriptionrX   rd  Ú
componentsr·  r(   r¨   Útensor_metadataÚtensor_summarys   &&&&&&&    r   Ú_get_tensor_summaryrÁ  c  så   € ó. Ý1à�_Š_˜VÓ$€Fà×6Ñ6ØØØØØ�‰ØØð 7ó €Oô ØØ—.‘. Ó$×+Ñ+Ó-Ü%ä ×$Ò$¨&¯,©,°q­/Ô:Ü ×$Ò$¨&¯,©,°q­/Ô:Ü ×$Ò$¨&¯,©,°q­/Ô:ðô
ô
€Fô —]’]Ø×&Ñ& tÓ:ØØ ô€Nð Ðr   c                óB   € RpV e   \         P                  ! V RR7      pV# )z5Parse and returns JSON string from python dictionary.z{}T)Ú	sort_keys)ÚjsonÚdumps)Úconfig_dictr·  s   & r   Ú_get_json_configrÇ  ž  s#   € à€KØÒÜ—j’j ¸Ô=ˆØÐr   c                óˆ  € ^ RI Hp ^ RIHp \	        V4      p	. p
WP
                  3W8P                  3W(P                  3.pV Uu. uF  qÌ^ ,          f   K  VNK  	  ppTP                  V UUu. uF  w  rÍVNK	  	  upp4      pV F%  w  rÍV
P                  \        V VVVVVV	4      4       K'  	  \        V
R7      # u upi u uppi )aç  Output a merged `Summary` protocol buffer with a mesh/point cloud.

Args:
  tag: A name for this summary operation.
  vertices: Tensor of shape `[dim_1, ..., dim_n, 3]` representing the 3D
    coordinates of vertices.
  faces: Tensor of shape `[dim_1, ..., dim_n, 3]` containing indices of
    vertices within each triangle.
  colors: Tensor of shape `[dim_1, ..., dim_n, 3]` containing colors for each
    vertex.
  display_name: If set, will be used as the display name in TensorBoard.
    Defaults to `name`.
  description: A longform readable description of the summary data. Markdown
    is supported.
  config_dict: Dictionary with ThreeJS classes names and configuration.

Returns:
  Merged summary for mesh/point cloud representation.
r¶  )ÚMeshPluginDatar©   )r¸  r¨   Ú(tensorboard.plugins.mesh.plugin_data_pb2rÉ  rÇ  ÚVERTEXÚFACEÚCOLORÚget_components_bitmaskr¾   rÁ  r   )r§   ÚverticesÚcolorsÚfacesrÆ  r¼  r½  r¨   rÉ  r·  Ú	summariesÚtensorsrX   rd  r¾  s   &&&&&&&        r   ÚmeshrÔ  §  sÕ   € õ, 2ÝGä" ;Ó/€Kà€Ià	×(Ñ(Ð)Ø	×#Ñ#Ð$Ø	×%Ñ%Ð&ð€Gñ
 %,ÓE¡G˜&°a­y�vˆv¡G€GÐEØ×0Ñ0Ù4;Ô<±GÑ0˜6‹±GÒ<ó€Jó !(ÑˆØ×ÑÜØØØØØØØóö
	
ñ !(ô ˜Ô#Ð#ùò% Fùã<s   ÁB9ÁB9Á-B>
)r!   r$   r»   rÙ   r÷   rý   rù   ri   r&  r.  r  rH  rF  re  r~  rh   rÚ   r¤  r¨  r¦  rÔ  )ÚblackrÕ  r   )NNN)NFFr,   )rQ   ÚNCHW)rQ   ÚCHWN)rQ   NN)é   )iD¬  )r–  N)NN)WrÄ  Úloggingr   Útypingr   r(   rU   rS   Úgoogle.protobufr   Ú$tensorboard.compat.proto.summary_pb2r   r   r   Ú#tensorboard.compat.proto.tensor_pb2r   Ú)tensorboard.compat.proto.tensor_shape_pb2r	   Ú!tensorboard.plugins.custom_scalarr
   Ú,tensorboard.plugins.pr_curve.plugin_data_pb2r   Ú(tensorboard.plugins.text.plugin_data_pb2r   Ú_convert_npr   Ú_utilsr   r   Ú__all__Ú	getLoggerÚ__name__r¶   r!   r$   r0   r5   r8   ÚhalfÚfloat16Úbfloat16r  r   r¬  ÚdoubleÚint8rW   Úqint8rh  Úshortr   rª  Úqint32Úint64Ú	complex32ÚchalfÚ	complex64ÚcfloatrÀ   Ú
complex128ÚcdoubleÚquint8Úquint4x2rä   rZ   r   r»   rÙ   rÚ   r÷   rý   rù   ri   r&  r.  r  rH  rF  re  r~  rh   r¤  r¨  r¦  rÁ  rÇ  rÔ  rá   r   r   Ú<module>rø     s&  ðã Û Û å ã Û õ '÷ñ õ
 <Ý FÝ 8Ý JÝ Cå  ß 2ò€ð0 
×	Ò	˜8Ó	$€õ&õ&õ:õ4õ ðØ	‡J�J�˜JÐ(;Ð<ðà	‡M�M�I˜zÐ+>Ð?ðð 
‡N�N�] JÐ0CÐDðð 
‡M�M�J ¨_Ð=ð	ð
 
‡K�K�*˜k¨?Ð;ðð 
‡M�M�K ¨Ð?ðð 
‡L�L�; ¨oÐ>ðð 
‡J�J�˜I Ð7ðð 
‡K�K�*˜i¨Ð9ðð 
‡K�K�*˜i¨Ð9ðð 
‡K�K�*˜i¨Ð9ðð 
‡K�K�*˜i¨Ð9ðð 
‡I�I�
˜I Ð7ðð 
‡K�K�*˜i¨Ð9ðð 
‡L�L�:˜y¨/Ð:ðð  
‡K�K�*˜k¨?Ð;ð!ð" 
‡O�O�n nÐ6LÐMð#ð$ 
‡K�K�. .Ð2HÐIØ	‡O�O�n nÐ6LÐMØ	‡L�L�> >Ð3IÐJØ	‡J�J�˜J¨Ð8Ø	×Ñ�¨Ð8NÐOØ	‡M�M�O ^Ð5KÐLØ	‡K�K�*˜l¨OÐ<Ø	‡L�L�:˜|¨_Ð=Ø	‡N�N�Z ¨Ð?ñ5Ð õ<5ô
(ôVzôz(MòV"VòJ@ôB@ô,5ôp"@ôJ@ô"ô"ô4@ò$
ôN@ò@#òLôPô4Pô6"9òJ8òvö3$r   