+
    lHàj¼9  ã            
       ó6  € ^ RI HtHtHtHtHtHt ^RIHtH	t	 ]! 4       t
]
P                  t]
P                  tR*RRR]P                  /R llt]! R4      ]]! ]R	R
]P                   RR7      R 4       4       4       t]! R4      ]]! R]P$                  RR7      R 4       4       4       t]! R4      ]]! ]RR]P&                  RR7      R 4       4       4       tR t]! R4      ]]! ]R	R]P&                  RR7      R 4       4       4       t]! R4      ]]! ]R	R]P&                  RR7      R 4       4       4       t]! R4      ]]! R]P*                  RR7      R  4       4       4       t]! R!4      ]]! ]R	R"]P*                  RR7      R# 4       4       4       tR$ tR% tR& tR' tR( tR) tR# )+é    )ÚConnectorAccountsParamsÚConnectorAccountsRemoveParamsÚConnectorAccountsRenameParamsÚConnectorErrorReasonÚConnectorPolicySetParamsÚConnectorToolsParams)ÚHandlerRegistryÚbind_moduleNÚinvalidÚ Úinvalid_reasonc               ó(   a aaaaa€ VVVV VV3R lpV# )z´``creates_guest``: whether this entry point may create the guest identity when the user has
none. The page's reads never do; they answer from what a caller without a token can see.c                 ó"   <a € VV VVVVV3R  lpV# )c           	      ó¸  <€ ^ RI Hp ^ RIHp \	        4       ;_uu_ 4        \        V 4      ;p'       d   VuuRRR4       #  Sf   TMSP                  V4      pS'       d    \        T 4      ;p'       d   TuuRRR4       #  S	! Y4      uuRRR4       #   T d    \        T RSS
4      u uuRRR4       # i ; i  T d    p\        Y4      u Rp?uuRRR4       # Rp?i\         d`   p\        TRR4      R8X  d,   \        T R\        P                  R4      u Rp?uuRRR4       # \        T R	SS4      u Rp?uuRRR4       # Rp?ii ; i  + '       g   i     R# ; i)
r   )ÚValidationError)ÚGatewayAuthErrorNé   ÚcodeÚorg_requiredéú  ú1Select an organization to manage connector rules.éª  )Úpydanticr   Útools.connectors.gateway.errorsr   Ú_desktop_page_varsÚ_account_gate_closedÚmodel_validateÚ_connector_rpc_errorÚ_account_identity_errorÚ_connector_auth_errorÚ	ExceptionÚgetattrr   r   )ÚridÚparamsr   r   Ú
gate_errorÚrequestÚidentity_errorÚexcÚcreates_guestÚfnr   r   Úparams_modelÚunavailableÚunavailable_messages   &&      €€€€€€€ÚK/home/ubuntu/.hermes/hermes-agent/tui_gateway/methods_connectors_account.pyÚhandlerÚ2_account_method.<locals>.decorate.<locals>.handler   s>  ø€ Ý0ÝHä#×%Õ%Ü!5°cÓ!:Ð:�:Ö:Ø%÷ &Ò%ðTØ(4Ò(<™fÀ,×B]ÑB]Ð^dÓBe�G÷ !Ô8OÐPSÓ8TÐ&T nÖ&TØ)÷ &Ò%ð	]Ù˜cÓ+÷ &Ò%øð
 'ô TÜ/°°T¸>È7ÓSÑS÷ &Ò%ð
Tûð (ô ;Ü0°Ó:Ô:÷ &Ò%ûô !ô ]Ü˜s F¨DÓ1°^ÔCÜ3Ø Ô';×'HÑ'HÐJ}ó ô ÷ &Ò%ô$ 0°°T¸;ÐH[Ó\Ô\÷% &Ò%ûð]ú÷ &×%Ð%ús�    EÁBÁEÁ EÂ B7ÂB4Â'EÂ3B4Â4EÂ7EÂ>
CÃEÃ	EÃEÃ%EÃ&-E ÄEÄEÄ#E Ä0EÄ1EÅ EÅEÅE	© )r*   r/   r)   r   r   r+   r,   r-   s   f €€€€€€r.   ÚdecorateÚ!_account_method.<locals>.decorate   s   ù€ ÷	]ó 	]ð0 ˆó    r1   )r+   r)   r   r   r,   r-   r2   s   fddddd r.   Ú_account_methodr5      s   ý€ ÷ò ð6 €Or4   zconnectors.toolsTz(slug and refresh are required parametersz Connector tools are unavailable.)r)   r   r,   r-   c                 óR  € ^ RI Hp ^ RIHp ^ RIHp ^ RIHp ^ RIH	pH
p V! 4       pVP                  4         V! VP                  W�P                  R7      p	\!        YP#                  T	R	R
7      P%                  RR7      4      #   YB3 d    \        T RTP                  R4      u # i ; i)r   )ÚGatewayUnavailable©ÚPortalConnectorClient)ÚInvalidConnectorSlug)Ú
read_tools)r   ÚConnectorToolsResult)ÚclientÚrefreshéÉ  zConnector not found.T©Úfrom_attributesÚjson©Úmode)r   r7   Útools.connectors.portal.clientr9   Útools.connectors.portal.errorsr:   Ú#tools.connectors.portal.tools_cacher;   Ú tui_gateway.contracts.connectorsr   r<   Úrequire_authenticationÚslugr>   r   Úconnector_not_foundÚ_okr   Ú
model_dump)
r#   r&   r7   r9   r:   r;   r   r<   r=   Úlistings
   &&        r.   Ú_rO   3   sž   € õ CÝDÝCÝ>ß[á"Ó$€FØ
×!Ñ!Ô#ðqÙ˜WŸ\™\°&Ç/Á/ÔRˆô ˆs×7Ñ7¸ÐQUÐ7ÓV×aÑaÐgmÐaÓnÓoÐoøð !Ð5ô qÜ# C¨Ð/C×/WÑ/WÐYoÓpÒpðqús   ¹B Â B&Â%B&zconnectors.catalogFz!Connector catalog is unavailable.)r)   r,   r-   c                 óæ   € ^ RI Hp ^ RIHp ^ RIHp V! 4       pV! 4       '       d   VP                  4       MVP                  4       p\        WP                  VRR7      P                  RR7      4      # )r   r8   ©Úread_nous_access_token)ÚConnectorsCatalogResultTr@   rB   rC   )rE   r9   Útools.managed_tool_gatewayrR   rH   rS   ÚcatalogÚpublic_catalogrL   r   rM   )r#   Ú_paramsr9   rR   rS   r=   rU   s   &&     r.   rO   rO   L   s`   € õ EÝAÝHá"Ó$€FÙ"8×":Ò":ˆf�n‰nÔÀ×@UÑ@UÓ@W€GÜˆs×:Ñ:¸7ÐTXÐ:ÓY×dÑdÐjpÐdÓqÓrÐrr4   zconnectors.accountszconnector must be a slug.ú#Connector accounts are unavailable.c                 óp  € ^ RI Hp ^ RIHp ^ RIHpHp V! 4       '       d   V! 4       P                  4       M. pV Uu. uF,  qqP                  e   VR,          VP                  8X  g   K*  VNK.  	  ppT! V Uu. uF  p\        V4      NK  	  upR7      p	\        W	P                  RR7      4      # u upi u upi )r   r8   rQ   )ÚConnectorAccountRowÚConnectorAccountsResultÚ	connector)ÚaccountsrB   rC   )rE   r9   rT   rR   rH   rZ   r[   Úlist_accountsr\   Ú_account_rowrL   rM   )
r#   r&   r9   rR   rZ   r[   r]   ÚaccountÚrowsÚresults
   &&        r.   rO   rO   ]   s¡   € õ EÝAß]á:P×:RÒ:RÑ$Ó&×4Ñ4Ô6ÐXZ€HÙ#+Óv¡8˜×/@Ñ/@Ò/HÈGÐT_ÕL`Ðdk×duÑduÑLu�GˆG¡8€DÐvÙ$ÑTXÓ.YÑTXÈ¬|¸GÖ/DÑTXÑ.YÔZ€FÜˆs×%Ñ%¨6Ð%Ó2Ó3Ð3ùò wùÚ.Ys   ½'B.Á)B.Á7B3c                 ó   € ^ RI Hp V! V R,          V R,          V R,          V P                  R4      V R,          V P                  R4      V R,          \        V P                  R	4      4      V R
,          V R,          R7
      # )r   )rZ   ÚconnectionIdr\   ÚstatusÚstatusReasonÚlabelÚaliasÚactiveÚdisabledÚ	createdAtÚ	updatedAt)
Úconnection_idr\   re   Ústatus_reasonrg   rh   ri   rj   Ú
created_atÚ
updated_at)rH   rZ   ÚgetÚbool)r`   rZ   s   & r.   r_   r_   q   ss   € ÝDáØ˜nÕ-Ø˜+Õ&Ø�xÕ Ø—k‘k .Ó1Ø�gÕØ�k‰k˜'Ó"Ø�xÕ Ü�g—k‘k *Ó-Ó.Ø˜;Õ'Ø˜;Õ'ôð r4   zconnectors.accounts.renamez-connection_id and a valid alias are required.c                 ó¤  € ^ RI HpHpHpHp ^ RIHp ^ RIHp  V! 4       P                  VP                  VP                  4      p\'        T \)        T4      P+                  RR7      4      #   T d    \        T RTP                  R4      u # T dQ   p	T	P                  R8X  d   \        T RTP                  R4      u R	p	?	# \        T R
TP                   R4      u R	p	?	# R	p	?	iT d    h T dc   p	T	P                  R8X  d   h T	P"                  R8X  d   \        T RTP$                  R4      u R	p	?	# \        T R
TP                   R4      u R	p	?	# R	p	?	ii ; i)r   )r   r7   ÚIdempotencyConflictÚToolGatewayErrorr8   )r   r   zThat name is already used.Úconnection_not_foundr?   úConnector account not found.Nr   rX   r   é�  r   zThat name is invalid.rB   rC   )r   r   r7   rt   ru   rE   r9   rH   r   Úrename_accountrm   rh   r   Úalias_takenr   rv   Úaccounts_unavailablere   Úinvalid_paramsrL   r_   rM   )
r#   r&   r   r7   rt   ru   r9   r   r`   r(   s
   &&        r.   rO   rO   ‚   sB  € ÷ó õ EÝEðAÙ'Ó)×8Ñ8¸×9NÑ9NÐPW×P]ÑP]Ó^ˆô ˆs”L Ó)×4Ñ4¸&Ð4ÓAÓBÐBøð ô oÜ# C¨Ð/C×/OÑ/OÐQmÓnÒnØô AØ�8‰8Ð-Ô-Ü'¨¨TÐ3G×3\Ñ3\Ð^|Ó}Õ}Ü# C¨Ð/C×/XÑ/XÐZó  Aõ  	AûØô ØØô AØ�8‰8�~Ô%ØØ�:‰:˜ÔÜ'¨¨TÐ3G×3VÑ3VÐXoÓpÕpÜ# C¨Ð/C×/XÑ/XÐZó  Aõ  	AûðAús_   š+A* Á*EÂEÂEÂ(CÂ9EÂ?CÃEÃEÃ%EÃ,EÃ-:E
Ä'EÄ-E
ÅEÅ
Ezconnectors.accounts.removezconnection_id is required.c                 óz  € ^ RI HpHpHp ^ RIHp ^ RIHpHp  V! 4       P                  VP                  4      pT! TR,          TR,          TR,          R7      p
\!        Y
P#                  RR7      4      #   T dQ   p	T	P                  R8X  d   \        T RTP                  R4      u Rp	?	# \        T RTP                  R	4      u Rp	?	# Rp	?	iT d    h T dc   p	T	P                  R
8X  d   h T	P                  R8X  d   \        T RTP                  R4      u Rp	?	# \        T RTP                  R	4      u Rp	?	# Rp	?	ii ; i)r   )r   r7   ru   r8   )ÚConnectorAccountsRemoveResultr   rv   r?   rw   Nr   rX   r   Úinvalid_connection_idr   zConnection id is invalid.rd   r\   re   )rm   r\   re   rB   rC   )r   r   r7   ru   rE   r9   rH   r~   r   Údelete_accountrm   r   r   rv   r{   r|   rL   rM   )r#   r&   r   r7   ru   r9   r~   r   Úremovedr(   rb   s   &&         r.   rO   rO   ¨   s1  € ÷ gÑfÝDßdðAÙ'Ó)×8Ñ8¸×9NÑ9NÓOˆñ +Ø˜nÕ-¸ÀÕ9MÐV]Ð^fÕVgô€Fô ˆs×%Ñ%¨6Ð%Ó2Ó3Ð3øð ô AØ�8‰8Ð-Ô-Ü'¨¨TÐ3G×3\Ñ3\Ð^|Ó}Õ}Ü# C¨Ð/C×/XÑ/XÐZó  Aõ  	AûØô ØØô AØ�8‰8�~Ô%ØØ�8‰8Ð.Ô.Ü'¨¨TÐ3G×3VÑ3VÐXsÓtÕtÜ# C¨Ð/C×/XÑ/XÐZó  Aõ  	AûðAúsS   š A5 Á5D:Á<(CÂ$D:Â*CÃD:ÃD:ÃD:ÃD:Ã:D5ÄD:ÄD5Ä/D:Ä5D:zconnectors.policy.getú Connector policy is unavailable.c                 ó.  € ^ RI HpHp ^ RIHp ^ RIHpHpHp  V! 4       pVP                  4        VP                  4       p	T! T	P                   Uu. uF5  pT! TP                  TP                   \#        TP$                  4      R7      NK7  	  up\'        T	P(                  4      R7      p\+        YP-                  RR7      4      #   T d!   p
\        T .\        Y¥4      O5!  u Rp
?
# Rp
?
iT d!   p
\        T .\        Y¥4      O5!  u Rp
?
# Rp
?
ii ; iu upi )	r   ©r   ru   r8   )r   ÚConnectorPolicyGetResultÚConnectorPolicyLayerN)ÚkindÚrevisionÚbody)ÚlayersÚ	effectiverB   rC   )r   r   ru   rE   r9   rH   r   r…   r†   rI   Úpolicyr   Ú_policy_auth_errorÚ_policy_errorrŠ   r‡   rˆ   Ú_contract_policy_bodyr‰   Ú_contract_policy_effectiver‹   rL   rM   )r#   rW   r   ru   r9   r   r…   r†   r=   rŒ   r(   Úlayerrb   s   &&           r.   rO   rO   Ê   sù   € ÷ SÝDßuÑuðTÙ&Ó(ˆØ×%Ñ%Ô'Ø—‘“ˆñ
 &ð  Ÿšó
á&�ñ ! e§j¡j¸5¿>¹>ÔPeÐfk×fpÑfpÓPq×rÙ&ñ
ô -¨V×-=Ñ-=Ó>ô€Fô ˆs×%Ñ%¨6Ð%Ó2Ó3Ð3øð ô YÜ# CÐXÔ*<¸SÓ*WÓXÕXûØô TÜ# CÐS¬-¸Ó*RÓSÕSûðTüò
s;   š'C Á;DÃDÃ
C%ÃDÃ%DÃ.DÃ/D
ÄDÄ
Dzconnectors.policy.setz!Connector parameters are invalid.c           	      óÖ  € ^ RI HpHp ^ RIHp ^ RIHpHpHp ^ RI	H
pHp	Hp
  V! 4       pVP                  4        VP                  4       p\        R VP                    4       R4      p\#        VP$                  V
4      '       d   TMTpV! WÑP$                  4      pVP&                  VR&   VP)                  V4      p\3        Y	! TP4                  \7        TP8                  4      R
7      P;                  RR7      4      #   T d"   p\+        T .\-        TT4      O5!  u Rp?# Rp?iT d    \+        T RTP.                  R	4      u # T d"   p\+        T .\1        TT4      O5!  u Rp?# Rp?ii ; i)r   r„   r8   )ÚInvalidMemberPolicyÚcompose_connector_writeÚcompose_tools_write)r   ÚConnectorPolicySetResultÚToolsChangec              3   ó^   "  € T F#  qP                   R 8X  g   K  VP                  x € K%  	  R# 5i)ÚmemberN)r‡   r‰   )Ú.0r‘   s   & r.   Ú	<genexpr>Ú_.<locals>.<genexpr>û   s   é € ÐW©} eÇ
Á
ÈhÑ@V”z�u—z–z«}ùs   ‚-™-NÚexpectedRevisionr   ú#Connector policy change is invalid.)rˆ   r‹   rB   rC   )r   r   ru   rE   r9   Útools.connectors.portal.policyr“   r”   r•   rH   r   r–   r—   rI   rŒ   ÚnextrŠ   Ú
isinstanceÚchangeÚexpected_revisionÚ
set_policyr   r�   Úinvalid_policyrŽ   rL   rˆ   r�   r‹   rM   )r#   r&   r   ru   r9   r“   r”   r•   r   r–   r—   r=   rŒ   r™   Úcomposer‰   rb   r(   s   &&                r.   rO   rO   è   sF  € ÷ SÝDßpÑpßlÑlðTÙ&Ó(ˆØ×%Ñ%Ô'Ø—‘“ˆÜÑW¨v¯}ª}ÓWÐY]Ó^ˆÜ)3°G·N±NÀK×)PÒ)PÑ%ÐVmˆÙ�vŸ~™~Ó.ˆØ#*×#<Ñ#<ˆÐÑ Ø×"Ñ" 4Ó(ˆô ˆsÐ,Ø—‘Ô,FÀv×GWÑGWÓ,Xôç�j�f€jÓóð øð ô YÜ# CÐXÔ*<¸SÐBVÓ*WÓXÕXûØô {Ü# C¨Ð/C×/RÑ/RÐTyÓzÒzØô TÜ# CÐS¬-¸Ð=QÓ*RÓSÕSûðTúsB   ¤BC: Ã:E(ÄDÄE(ÄE(Ä&E(ÅE(ÅE(ÅE#ÅE(Å#E(c                 óž  € ^ RI Hp V P                  R	9   d   / # V P                  f   RM1V! V P                  P                  V P                  P
                  R7      pRV P                  P                  4        UUu/ uF  w  r4W4P
                  bK  	  uppRV/pV P                  R8X  d   RV P                  /VC# RV P                  /VC# u uppi )
r   )ÚConnectorPolicyTagsN)ÚenableÚdisableÚtoolsÚtagsÚallowÚ
connectorsÚdisabled_connectors)Úunrestrictedúdeny-all)
rH   r¨   rD   r¬   r©   rª   r«   Úitemsr®   r¯   )r‰   r¨   r¬   r\   ÚruleÚruless   &     r.   Ú_policy_rule_fieldsrµ     s¹   € ÝDà‡y�yÐ0Ô0Øˆ	Ø—9‘9Ò$‰4Ñ*=ÀTÇYÁY×EUÑEUÐ_c×_hÑ_h×_pÑ_pÔ*q€DØÀdÇjÁj×FVÑFVÔFXÔYÑFX±?°9�y§,¡,Ò.ÑFXÒYÐ[aÐcgÐh€EØ‡y�y�GÔØ˜dŸo™oÐ7°Ð7Ð7Ø! 4×#;Ñ#;ÐE¸uÐEÐEùó Zs   Á:C	c                 óÌ   € ^ RI Hp RVP                  RVP                  RVP                  RVP
                  /pW P                  ,          ! RRV P                  /\        V 4      B # )r   ©r®   r°   r±   r­   ÚdenyrD   r1   )Útui_gateway.contractsr®   ÚConnectorPolicyUnrestrictedBodyÚConnectorPolicyDenyAllBodyÚConnectorPolicyAllowBodyÚConnectorPolicyDenyBodyrD   rµ   )r‰   ÚcontractÚmodelss   &  r.   r�   r�     s`   € Ý<ð 	˜×@Ñ@Ø�H×7Ñ7Ø�×2Ñ2Ø�×0Ñ0ð	€Fð —)‘)ÖÑI $§)¡)ÐIÔ/BÀ4Ó/HÑIÐIr4   c                 ó  € ^ RI Hp RVP                  RVP                  RVP                  RVP
                  /pW P                  ,          ! R
RV P                  RV P                  RV P                  R	V P                  /\        V 4      B # )r   r·   r°   r±   r­   r¸   rD   Úversionrˆ   Úissued_at_msr1   )r¹   r®   Ú$ConnectorPolicyEffectiveUnrestrictedÚConnectorPolicyEffectiveDenyAllÚConnectorPolicyEffectiveAllowÚConnectorPolicyEffectiveDenyrD   rÁ   rˆ   rÂ   rµ   )r‹   r¾   r¿   s   &  r.   r�   r�   #  s“   € Ý<ð 	˜×EÑEØ�H×<Ñ<Ø�×7Ñ7Ø�×5Ñ5ð	€Fð —.‘.Ö!ñ Ø�^‰^ðØ%.×%6Ñ%6ðØAJ×ASÑASðà×+Ñ+ðä/BÀ9Ó/Mñð r4   c                 ó  € V P                   R
9   d   RVP                  R3# V P                   R8X  d   RVP                  R3# V P                  R8X  g   V P                   R9   d   RVP                  R3# RVP
                  R	3# )Ú	no_accessé¾  ú<This account cannot manage connectors for this organization.Ú	forbiddenú3Connector policy cannot be changed for this member.i‘  iÀ  zSign in to use connectors.r   r‚   >   rÈ   ÚORG_ACCESS_DENIED>   ÚNO_TOKENÚINVALID_TOKENÚinvalid_token)r   Úorg_access_deniedÚforbidden_scopere   Úneeds_nous_authÚpolicy_unavailable)r(   Úreasonss   &&r.   r�   r�   2  sƒ   € Ø
‡x�xÐ5Ô5Ø�W×.Ñ.Ð0nÐnÐnØ
‡x�x�;ÔØ�W×,Ñ,Ð.cÐcÐcØ
‡z�z�SÔ˜CŸH™HÐ(VÔVØ�W×,Ñ,Ð.JÐJÐJØ�×+Ñ+Ð-OÐOÐOr4   c                 ó|  € R RVP                   R3RRVP                  R3RRVP                  R3RRVP                  R	3R
RVP                  R3/pV P
                  V9   d   W P
                  ,          # V P
                  RV P                   28X  d!   V P                  R8X  d   RVP                  R3# RVP                  R3# )Úpolicy_changedr   z0Connector policy changed. Refresh and try again.r   r   rË   rÉ   rÌ   rÈ   rÊ   Úinvalid_connector_policyr   rž   ÚHTTP_rx   r   r‚   )Úpolicy_conflictr   rÒ   rÑ   r¥   r   re   rÔ   )r(   rÕ   Úby_codes   && r.   rŽ   rŽ   <  sÍ   € à˜4 ×!8Ñ!8Ð:lÐmØ˜˜w×3Ñ3Ð5hÐiØ�d˜G×3Ñ3Ð5jÐkØ�d˜G×5Ñ5Ð7uÐvØ" T¨7×+AÑ+AÐChÐ$ið€Gð ‡x�x�7ÔØ—x‘xÕ Ð Ø
‡x�x�U˜3Ÿ:™:˜,Ð'Ô'¨C¯J©J¸#Ô,=Ø�W×+Ñ+Ð-RÐRÐRØ�×+Ñ+Ð-OÐOÐOr4   c                 ó†   € \        \        4       V RR7       V P                  \        P	                  4       ,          V n        R# )rO   )ÚskipN)rO   )r
   ÚglobalsÚ_LONG_HANDLERSÚ	_registryÚnames)Úservers   &r.   Úregisterrã   K  s*   € Ü”“	˜6¨Õ/Ø"×1Ñ1´I·O±OÓ4EÕE€FÖr4   )N)rH   r   r   r   r   r   r   Ú
method_ctxr	   r
   rà   ÚmethodÚprofile_scopedÚ_profile_scopedr|   r5   Útools_unavailablerO   Úcatalog_unavailabler{   r_   rÔ   rµ   r�   r�   r�   rŽ   rã   r1   r4   r.   Ú<module>rê      sK  ð÷÷ ÷ 5áÓ€	Ø	×	Ñ	€Ø×*Ñ*€ñÀð ÐTh×TwÑTwõ ñD ÐÓØÙØØØ6Ø$×6Ñ6Ø:ôñpóó ó ðpñ  ÐÓØÙØØ$×8Ñ8Ø;ôñ
sóó ó ðsñ ÐÓØÙØØØ'Ø$×9Ñ9Ø=ôñ4óó ó ð4òñ" Ð$Ó%ØÙØ!ØØ;Ø$×9Ñ9Ø=ôñCóó ó &ðCñ: Ð$Ó%ØÙØ!ØØ(Ø$×9Ñ9Ø=ôñ4óó ó &ð4ñ2 ÐÓ ØÙØØ$×7Ñ7Ø:ôñ
4óó ó !ð4ñ. ÐÓ ØÙØØØ/Ø$×7Ñ7Ø:ôñóó ó !ðò4	Fò	JòòPòPôFr4   