Ë
    
Þ~fßv  ã                   óŠ  — d Z ddlmZmZmZ ddlZddlZddlZddlZddl	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 ddlmZmZmZmZ 	 ddlmZ ddlmZ dd	lmZ  G d
„ de«      Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z! G d„ de«      Z" G d„ de«      Z# G d„ de«      Z$ G d„ de«      Z%y# e$ r  e«       ‚w xY w)z¨protocols is a module that contains a set of VTK Web related
protocols that can be combined together to provide a flexible way to define
very specific web application.
é    )Úabsolute_importÚdivisionÚprint_functionN)ÚvtkWebInteractionEvent)ÚWebDependencyMissingError)ÚserializeInstanceÚSynchronizationContextÚgetReferenceIdÚinitializeSerializers)Úschedule_callback)Úregister)ÚLinkProtocolc                   ó<   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
y	)
ÚvtkWebProtocolc                 ó$   — | j                  d«      S )NÚapp)ÚgetSharedObject©Úselfs    ú8lib/python3.12/site-packages/vtkmodules/web/protocols.pyÚgetApplicationzvtkWebProtocol.getApplication#   s   € Ø×#Ñ# EÓ*Ð*ó    c                  ó   — y ©N© )r   r   s     r   ÚsetApplicationzvtkWebProtocol.setApplication'   s   € Ør   c                 ó~   — t        |«      }|dk  ry| j                  «       j                  «       j                  |«      S )z{
        Maps global-id for a vtkObject to the vtkObject instance. May return None if the
        id is not valid.
        r   N)Úintr   ÚGetObjectIdMapÚGetVTKObject©r   Úids     r   ÚmapIdToObjectzvtkWebProtocol.mapIdToObject*   s:   € ô
 �‹WˆØ�Š7ØØ×"Ñ"Ó$×3Ñ3Ó5×BÑBÀ2ÓFÐFr   c                 ó\   — | j                  «       j                  «       j                  |«      S )z5
        Return the id for a given vtkObject
        )r   r   ÚGetGlobalId©r   Úobjs     r   ÚgetGlobalIdzvtkWebProtocol.getGlobalId4   s'   € ð ×"Ñ"Ó$×3Ñ3Ó5×AÑAÀ#ÓFÐFr   c                 ó\   — | j                  «       j                  «       j                  |«      S )zd
        Delete the given vtkObject from the objectIdMap. Returns true if delete succeeded.
        )r   r   Ú
FreeObjectr&   s     r   Ú
freeObjectzvtkWebProtocol.freeObject:   s'   € ð ×"Ñ"Ó$×3Ñ3Ó5×@Ñ@ÀÓEÐEr   c                 ó\   — | j                  «       j                  «       j                  |«      S )zŠ
        Delete the vtkObject corresponding to the given objectId from the objectIdMap.
        Returns true if delete succeeded.
        )r   r   ÚFreeObjectByIdr!   s     r   ÚfreeObjectByIdzvtkWebProtocol.freeObjectById@   s'   € ð
 ×"Ñ"Ó$×3Ñ3Ó5×DÑDÀRÓHÐHr   c                 ó¦   — | j                  |«      }|s-| j                  «       j                  «       j                  d«      }|st	        d|z  «      ‚|S )zª
        Returns the view for a given view ID, if vid is None then return the
        current active view.
        :param vid: The view ID
        :type vid: str
        ÚVIEWzno view provided: %s)r#   r   r   ÚGetActiveObjectÚ	Exception)r   ÚvidÚvs      r   ÚgetViewzvtkWebProtocol.getViewG   sR   € ð ×Ñ˜sÓ#ˆáà×#Ñ#Ó%×4Ñ4Ó6×FÑFÀvÓNˆAÙÜÐ2°SÑ8Ó9Ð9àˆr   c                 ó`   — | j                  «       j                  «       j                  d|«       y)z<
        Set a vtkRenderWindow to be the active one
        r0   N)r   r   ÚSetActiveObject)r   Úviews     r   ÚsetActiveViewzvtkWebProtocol.setActiveViewX   s&   € ð 	×ÑÓ×,Ñ,Ó.×>Ñ>¸vÀtÕLr   N)Ú__name__Ú
__module__Ú__qualname__r   r   r#   r(   r+   r.   r5   r9   r   r   r   r   r   "   s/   „ ò+òòGòGòFòIòó"Mr   r   c                   óD   — e Zd Z ed«      d„ «       Z ed«      d„ «       Zy)ÚvtkWebMouseHandlerzviewport.mouse.interactionc                 óÀ  — | j                  |d   «      }d}|d   r|t        j                  z  }|d   r|t        j                  z  }|d   r|t        j                  z  }d}|d   r|t        j
                  z  }|d   r|t        j                  z  }|d   r|t        j                  z  }|d	   r|t        j                  z  }t        «       }|j                  |«       |j                  |«       d
|v r|j                  |d
   «       d|v r|j                  |d   «       d|v r|j                  |d   «       |d   dk(  r|j                  d«       | j                  «       j!                  ||«      }~|d   dk(  r| j                  «       j#                  d«       |d   dk(  r| j                  «       j#                  d«       |r| j                  «       j#                  d«       |S )z6
        RPC Callback for mouse interactions.
        r8   r   Ú
buttonLeftÚbuttonMiddleÚbuttonRightÚshiftKeyÚctrlKeyÚaltKeyÚmetaKeyÚxÚyÚscrollÚactionÚdblclické   ÚdownÚStartInteractionEventÚupÚEndInteractionEventÚUpdateEvent)r5   r   ÚLEFT_BUTTONÚMIDDLE_BUTTONÚRIGHT_BUTTONÚ	SHIFT_KEYÚCTRL_KEYÚALT_KEYÚMETA_KEYÚ
SetButtonsÚSetModifiersÚSetXÚSetYÚ	SetScrollÚSetRepeatCountr   ÚHandleInteractionEventÚInvokeEvent)r   Úeventr8   ÚbuttonsÚ	modifiersÚpveventÚretVals          r   ÚmouseInteractionz#vtkWebMouseHandler.mouseInteractiong   sÙ  € ð
 �|‰|˜E &™MÓ*ˆàˆØ�ÒØÔ-×9Ñ9Ñ9ˆGØ�Ò ØÔ-×;Ñ;Ñ;ˆGØ�ÒØÔ-×:Ñ:Ñ:ˆGàˆ	Ø�ÒØÔ/×9Ñ9Ñ9ˆIØ�ÒØÔ/×8Ñ8Ñ8ˆIØ�Š?ØÔ/×7Ñ7Ñ7ˆIØ�ÒØÔ/×8Ñ8Ñ8ˆIä(Ó*ˆØ×Ñ˜7Ô#Ø×Ñ˜YÔ'Ø�%‰<Ø�L‰L˜˜s™Ô$Ø�%‰<Ø�L‰L˜˜s™Ô$Ø�uÑØ×Ñ˜e H™oÔ.Ø�‰?˜jÒ(Ø×"Ñ" 1Ô%à×$Ñ$Ó&×=Ñ=¸dÀGÓLˆØà�‰?˜fÒ$Ø×ÑÓ!×-Ñ-Ð.EÔFà�‰?˜dÒ"Ø×ÑÓ!×-Ñ-Ð.CÔDáØ×ÑÓ!×-Ñ-¨mÔ<àˆr   zviewport.mouse.zoom.wheelc                 óš  — d|d   v r| j                  «       j                  d«       | j                  |d   «      }|rÞd|v rÚd|d   dz  z
  }|j                  «       j	                  «       j                  «       }|j                  «       }|j                  «       }t        d«      D �cg c]  }||   ||   z
  ‘Œ }}|j                  |«       |j                  «       }	|j                  t        d«      D �cg c]  }|	|   ||   z   ‘Œ c}«       |j                  «        d	|d   v r | j                  «       j                  d
«       y y c c}w c c}w )NÚStartÚtyperN   r8   ÚspinYç      ð?g      $@é   ÚEndrP   )r   r`   r5   ÚGetRenderersÚGetFirstRendererÚGetActiveCameraÚGetFocalPointÚGetPositionÚrangeÚZoomÚSetFocalPointÚModified)
r   ra   ÚrenderWindowÚ
zoomFactorÚcameraÚfpÚposÚiÚdeltaÚpos2s
             r   ÚupdateZoomFromWheelz&vtkWebMouseHandler.updateZoomFromWheelš   s=  € à�e˜F‘mÑ#Ø×ÑÓ!×-Ñ-Ð.EÔFà—|‘| E¨&¡MÓ2ˆÙ˜G uÑ,Ø˜u W™~°Ñ4Ñ4ˆJà!×.Ñ.Ó0×AÑAÓC×SÑSÓUˆFØ×%Ñ%Ó'ˆBØ×$Ñ$Ó&ˆCÜ-2°1¬XÓ6©X¨�R˜‘U˜S ™V“^¨XˆEÐ6Ø�K‰K˜
Ô#à×%Ñ%Ó'ˆDØ× Ñ ¼eÀA¼hÓ!G¹h¸ $ q¡'¨E°!©HÓ"4¸hÑ!GÔHØ×!Ñ!Ô#à�E˜&‘MÑ!Ø×ÑÓ!×-Ñ-Ð.CÕDð "ùò 7ùò "Hs   Â%EÃ2EN)r:   r;   r<   Ú	exportRpcrf   r   r   r   r   r>   r>   f   s7   „ ÙÐ+Ó,ñ0ó -ð0ñd Ð*Ó+ñEó ,ñEr   r>   c                   ó~   — e Zd Z ed«      d„ «       Z ed«      d„ «       Z ed«      d„ «       Z ed«      d
d„«       Zy	)ÚvtkWebViewPortzviewport.camera.resetc                 ó0  — | j                  |«      }|j                  «       j                  «       }|j                  «        | j	                  «       j                  |«       | j	                  «       j                  d«       t        | j                  |«      «      S )z/
        RPC callback to reset camera.
        rQ   )	r5   rn   ro   ÚResetCamerar   ÚInvalidateCacher`   Ústrr(   )r   ÚviewIdr8   Úrenderers       r   ÚresetCamerazvtkWebViewPort.resetCamera¹   sy   € ð
 �|‰|˜FÓ#ˆØ×$Ñ$Ó&×7Ñ7Ó9ˆØ×ÑÔà×ÑÓ×-Ñ-¨dÔ3Ø×ÑÓ×)Ñ)¨-Ô8ä�4×#Ñ# DÓ)Ó*Ð*r   z+viewport.axes.orientation.visibility.updatec                 óÔ   — | j                  |«      }| j                  «       j                  |«       | j                  «       j                  d«       t	        | j                  |«      «      S )z<
        RPC callback to show/hide OrientationAxis.
        rQ   ©r5   r   r…   r`   r†   r(   ©r   r‡   ÚshowAxisr8   s       r   ÚupdateOrientationAxesVisibilityz.vtkWebViewPort.updateOrientationAxesVisibilityÇ   óX   € ð
 �|‰|˜FÓ#ˆð 	×ÑÓ×-Ñ-¨dÔ3Ø×ÑÓ×)Ñ)¨-Ô8ä�4×#Ñ# DÓ)Ó*Ð*r   z&viewport.axes.center.visibility.updatec                 óÔ   — | j                  |«      }| j                  «       j                  |«       | j                  «       j                  d«       t	        | j                  |«      «      S )zA
        RPC callback to show/hide CenterAxesVisibility.
        rQ   r‹   rŒ   s       r   ÚupdateCenterAxesVisibilityz)vtkWebViewPort.updateCenterAxesVisibilityÔ   r�   r   zviewport.camera.updatec                 óf  — | j                  |«      }|j                  «       j                  «       j                  «       }|j	                  |«       |j                  |«       |j                  |«       |r?| j                  «       j                  |«       | j                  «       j                  d«       y y )NrQ   )
r5   rn   ro   rp   ru   Ú	SetViewUpÚSetPositionr   r…   r`   )r   Úview_idÚfocal_pointÚview_upÚpositionÚforceUpdater8   ry   s           r   ÚupdateCamerazvtkWebViewPort.updateCameraá   s�   € à�|‰|˜GÓ$ˆà×"Ñ"Ó$×5Ñ5Ó7×GÑGÓIˆØ×Ñ˜[Ô)Ø×Ñ˜Ô!Ø×Ñ˜8Ô$áØ×ÑÓ!×1Ñ1°$Ô7Ø×ÑÓ!×-Ñ-¨mÕ<ð r   N©T)r:   r;   r<   r€   r‰   rŽ   r‘   rš   r   r   r   r‚   r‚   ¸   sh   „ ÙÐ&Ó'ñ+ó (ð+ñ Ð<Ó=ñ
+ó >ð
+ñ Ð7Ó8ñ
+ó 9ð
+ñ Ð'Ó(ò
=ó )ñ
=r   r‚   c                   ó(   — e Zd Z ed«      d„ «       Zy)ÚvtkWebViewPortImageDeliveryzviewport.image.renderc                 óf  — t        t        t        j                  «       dz  «      «      }| j                  |d   «      }|j	                  «       d   |j	                  «       d   g}||j                  d|«      k7  }|r&|d   }|d   dkD  r|d   dkD  r|j                  |«       d}|r	d|v r|d   }d}|r	d|v r|d   }d}|r	d	|v r|d	   }i }	| j                  «       }
|dk(  r|
j                  |«       |
j                  |||«      |	d
<   d}|rt        |j	                  «       «      |k7  rc|ddgk7  r\|dkD  rW|
j                  |«       |
j                  |||«      |	d
<   |dz  }|r)t        |j	                  «       «      |k7  r|ddgk7  r|dkD  rŒW|
j                  |«      |	d<   |
j                  «       |	d<   |j	                  «       d   |j	                  «       d   g|	d<   d|	d<   t        | j                  |«      «      |	d<   ||	d	<   t        t        t        j                  «       dz  «      «      }||z
  |	d<   |	S )úN
        RPC Callback to render a view and obtain the rendered image.
        éè  r8   r   é   ÚsizeÚmtimeéd   ÚqualityÚ	localTimeÚimageé
   Ústaleújpeg;base64ÚformatÚ	global_idÚworkTime)r   ÚroundÚtimer5   ÚGetSizeÚgetÚSetSizer   r…   ÚStillRenderToStringÚlistÚGetHasImagesBeingProcessedÚGetLastStillRenderToMTimer†   r(   )r   ÚoptionsÚ	beginTimer8   r¢   ÚresizeÚtr¥   r¦   Úreplyr   ÚtriesÚendTimes                r   ÚstillRenderz'vtkWebViewPortImageDelivery.stillRender÷   sH  € ô
 œœdŸi™i›k¨DÑ0Ó1Ó2ˆ	Ø�|‰|˜G F™OÓ,ˆØ—‘“˜qÑ! 4§<¡<£>°!Ñ#4Ð5ˆà˜Ÿ™ V¨TÓ2Ñ2ˆÙØ˜6‘?ˆDØ�A‰w˜Š{˜t A™w¨š{Ø—‘˜TÔ"ØˆÙ�w 'Ñ)Ø˜Ñ ˆAØˆÙ�y GÑ+Ø˜iÑ(ˆGØˆ	Ù�{ gÑ-Ø Ñ,ˆIØˆØ×!Ñ!Ó#ˆØ�Š6Ø×Ñ Ô%Ø×0Ñ0°°q¸'ÓBˆˆg‰ð ˆÙœ˜dŸl™l›nÓ-°Ò5¸$À1ÀaÀ&º.ÈUÐUVÊYØ×Ñ Ô%Ø ×4Ñ4°T¸1¸gÓFˆE�'‰NØ�Q‰JˆEñ œ˜dŸl™l›nÓ-°Ò5¸$À1ÀaÀ&º.ÈUÐUVËYð
 ×7Ñ7¸Ó=ˆˆg‰Ø×6Ñ6Ó8ˆˆg‰ØŸ™›¨Ñ*¨D¯L©L«N¸1Ñ,=Ð>ˆˆf‰Ø'ˆˆh‰Ü  ×!1Ñ!1°$Ó!7Ó8ˆˆkÑØ&ˆˆkÑä”eœDŸI™I›K¨$Ñ.Ó/Ó0ˆØ# iÑ/ˆˆjÑàˆr   N)r:   r;   r<   r€   r¾   r   r   r   r�   r�   ö   s   „ ÙÐ&Ó'ñ-ó (ñ-r   r�   c                   óv  ‡ — e Zd Zdˆ fd„	Zdd„Zd„ Zd„ Z ed«      dd„«       Z ed«      d„ «       Z	 ed	«      dd
„«       Z
 ed«      dd„«       Z ed«      d„ «       Zd„ Z ed«      d„ «       Z ed«      d„ «       Z ed«      d d„«       Z ed«      d„ «       Z ed«      d„ «       Z ed«      d„ «       Zˆ xZS )!ÚvtkWebPublishImageDeliveryc                 ó¨   •— t         t        | �  «        i | _        d| _        d| _        d| _        || _        g | _        d| _	        d| _
        d| _        y )Nr   g      à?g      >@g      (@)ÚsuperrÀ   Ú__init__ÚtrackingViewsÚlastStaleTimeÚstaleHandlerCountÚdeltaStaleTimeBeforeRenderÚdecodeÚviewsInAnimationsÚtargetFrameRateÚminFrameRateÚmaxFrameRate)r   rÈ   Ú	__class__s     €r   rÃ   z#vtkWebPublishImageDelivery.__init__0  sX   ø€ ÜÔ(¨$Ñ8Ô:ØˆÔØˆÔØ!"ˆÔØ*-ˆÔ'ØˆŒØ!#ˆÔØ#ˆÔØ ˆÔØ ˆÕr   c                 ó  ‡ ‡— ‰‰ j                   vry ‰ j                   ‰   d   sy |st        ‰ j                  «      dkD  ry d‰ j                   ‰   vr:‰ j                  ‰«      }t	        |j                  «       «      ‰ j                   ‰   d<   d‰ j                   ‰   vrd‰ j                   ‰   d<   ‰ j                   ‰   d   }‰ j                   ‰   d   }‰ j                   ‰   d   }‰ j                   ‰   d   D �cg c]  }t        ||z  «      ‘Œ }}‰ j                  ‰|||dœ«      }	|	d	   }
|	d
   ro‰ j                  rt        j                  |	d
   «      |	d
<   ‰ j                  |	d
   «      |	d
<   d|	d<   |	d   ‰ j                   ‰   d<   ‰|	d<   ‰ j                  d|	«       |
rYt        j                  «       ‰ _        ‰ j                  dk(  r0‰ xj                  dz  c_        t!        ‰ j"                  ˆ ˆfd„«       y y d‰ _        y c c}w )NÚenabledr   ÚoriginalSizeÚratior¡   r£   r¥   )r8   r£   r¥   r¢   r©   r§   Újpegr«   r"   z viewport.image.push.subscriptionc                  ó&   •— ‰ j                  ‰«      S r   ©ÚrenderStaleImage©r   ÚvIds   €€r   Ú<lambda>z7vtkWebPublishImageDelivery.pushRender.<locals>.<lambda>g  s   ø€ ¸T×=RÑ=RÐSVÔ=Wr   )rÄ   ÚlenrÉ   r5   r´   r°   r   r¾   rÈ   Úbase64Ústandard_b64decodeÚaddAttachmentÚpublishr¯   rÅ   rÆ   r   rÇ   )r   r×   ÚignoreAnimationr8   rÑ   r£   r¥   Úsr¢   r»   r©   s   ``         r   Ú
pushRenderz%vtkWebPublishImageDelivery.pushRender<  s  ù€ Ø�d×(Ñ(Ñ(Øà×!Ñ! #Ñ& yÒ1Øá¤3 t×'=Ñ'=Ó#>ÀÒ#BØà ×!3Ñ!3°CÑ!8Ñ8Ø—<‘< Ó$ˆDÜ6:¸4¿<¹<»>Ó6JˆD×Ñ˜sÑ# NÑ3à˜$×,Ñ,¨SÑ1Ñ1Ø/0ˆD×Ñ˜sÑ# GÑ,à×"Ñ" 3Ñ'¨Ñ0ˆØ×"Ñ" 3Ñ'¨Ñ0ˆØ×$Ñ$ SÑ)¨)Ñ4ˆØ(,×(:Ñ(:¸3Ñ(?ÀÒ(OÓPÑ(O 1”�A˜‘I•Ð(OˆÐPà× Ñ Ø 5°WÀdÑKó
ˆð �g‘ˆØ�Š>à�{Š{Ü!'×!:Ñ!:¸5À¹>Ó!J��g‘à!×/Ñ/°°g±Ó?ˆE�'‰NØ$ˆE�(‰Oà/4°W©~ˆD×Ñ˜sÑ# GÑ,àˆE�$‰KØ�L‰LÐ;¸UÔCÙÜ!%§¡£ˆDÔØ×%Ñ%¨Ò*Ø×&Ò&¨!Ñ+Õ&Ü!Ø×3Ñ3Ô5Wõð +ð "#ˆDÕùò5 Qs   Ã8Hc                 ó@  ‡ ‡— ‰ xj                   dz  c_         ‰ j                  dk7  rxt        j                  «       ‰ j                  z
  }|‰ j                  k\  r‰ j	                  ‰«       y ‰ xj                   dz  c_         t        ‰ j                  |z
  dz   ˆ ˆfd„«       y y )Nr¡   r   çü©ñÒMbP?c                  ó&   •— ‰ j                  ‰«      S r   rÔ   rÖ   s   €€r   rØ   z=vtkWebPublishImageDelivery.renderStaleImage.<locals>.<lambda>w  s   ø€ ˜D×1Ñ1°#Ô6r   )rÆ   rÅ   r¯   rÇ   rà   r   )r   r×   r}   s   `` r   rÕ   z+vtkWebPublishImageDelivery.renderStaleImagel  s†   ù€ Ø×Ò !Ñ#Õà×Ñ Ò"Ü—I‘I“K $×"4Ñ"4Ñ4ˆEØ˜×7Ñ7Ò7Ø—‘ Õ$à×&Ò&¨!Ñ+Õ&Ü!Ø×3Ñ3°eÑ;¸eÑCÜ6õð #r   c                 ój  ‡ — t        ‰ j                  «      dk(  ry t        j                  «       d‰ j                  z  z   }‰ j                  D ]  }‰ j	                  |d«       Œ |t        j                  «       z  }‰ j                  ‰ j
                  kD  r‰ j
                  ‰ _        |dk  rJ|dk  rd‰ _        ‰ j                  ‰ j                  kD  r‰ xj                  dz  c_        t        dˆ fd„«       y ‰ j                  ‰ j
                  k  r|dkD  r‰ xj                  dz  c_        t        |ˆ fd	„«       y )
Nr   rk   Tg      ð¿r¡   râ   c                  ó$   •— ‰ j                  «       S r   ©Úanimater   s   €r   rØ   z4vtkWebPublishImageDelivery.animate.<locals>.<lambda>Œ  s   ø€ ¨T¯\©\¬^r   g{®Gázt?c                  ó$   •— ‰ j                  «       S r   ræ   r   s   €r   rØ   z4vtkWebPublishImageDelivery.animate.<locals>.<lambda>�  s   ø€ °t·|±|´~r   )rÙ   rÉ   r¯   rÊ   rà   rÌ   rË   r   )r   ÚnextAnimateTimer×   s   `  r   rç   z"vtkWebPublishImageDelivery.animatez  s  ø€ Üˆt×%Ñ%Ó&¨!Ò+ØäŸ)™)›+¨¨d×.BÑ.BÑ(BÑBˆØ×)Ô)ˆCØ�O‰O˜C Õ&ð *ð 	œ4Ÿ9™9›;Ñ&ˆà×Ñ $×"3Ñ"3Ò3Ø#'×#4Ñ#4ˆDÔ à˜QÒØ Ò%Ø'(�Ô$Ø×#Ñ# d×&7Ñ&7Ò7Ø×$Ò$¨Ñ+Õ$Ü˜eÓ%;Õ<à×#Ñ# d×&7Ñ&7Ò7¸OÈeÒ<SØ×$Ò$¨Ñ+Õ$Ü˜oÓ/EÕFr   z viewport.image.animation.fps.maxc                 ó   — || _         y r   )rÌ   )r   Úfpss     r   ÚsetMaxFrameRatez*vtkWebPublishImageDelivery.setMaxFrameRate’  s
   € àˆÕr   z viewport.image.animation.fps.getc                 ó   — | j                   S r   )rÊ   r   s    r   ÚgetCurrentFrameRatez.vtkWebPublishImageDelivery.getCurrentFrameRate–  s   € à×#Ñ#Ð#r   zviewport.image.animation.startc                 óâ   — | j                  |«      }t        | j                  |«      «      }| j                  j	                  |«       t        | j                  «      dk(  r| j                  «        y y ©Nr¡   )r5   r†   r(   rÉ   ÚappendrÙ   rç   ©r   r‡   ÚsViewÚ
realViewIds       r   ÚstartViewAnimationz-vtkWebPublishImageDelivery.startViewAnimationš  sZ   € à—‘˜VÓ$ˆÜ˜×)Ñ)¨%Ó0Ó1ˆ
à×Ñ×%Ñ% jÔ1Üˆt×%Ñ%Ó&¨!Ò+Ø�L‰L�Nð ,r   zviewport.image.animation.stopc                 ó®   — | j                  |«      }t        | j                  |«      «      }|| j                  v r| j                  j	                  |«       y y r   )r5   r†   r(   rÉ   Úremoverò   s       r   ÚstopViewAnimationz,vtkWebPublishImageDelivery.stopViewAnimation£  sL   € à—‘˜VÓ$ˆÜ˜×)Ñ)¨%Ó0Ó1ˆ
à˜×/Ñ/Ñ/Ø×"Ñ"×)Ñ)¨*Õ5ð 0r   zviewport.image.pushc                 óÀ   — | j                  |d   «      }t        | j                  |«      «      }| j                  «       j	                  |«       | j                  |«       y )Nr8   )r5   r†   r(   r   r…   rà   )r   r·   ró   rô   s       r   Ú	imagePushz$vtkWebPublishImageDelivery.imagePush«  sL   € à—‘˜W V™_Ó-ˆÜ˜×)Ñ)¨%Ó0Ó1ˆ
à×ÑÓ×-Ñ-¨eÔ4Ø�‰˜
Õ#r   c                 ó2  — t        t        t        j                  «       dz  «      «      }| j                  |d   «      }|j	                  «       dd }||j                  d|«      k7  }|r&|d   }|d   dkD  r|d   dkD  r|j                  |«       d}|r	d|v r|d   }d	}|r	d
|v r|d
   }d}|r	d|v r|d   }i }	| j                  «       }
|dk(  r|
j                  |«       | j                  r|
j                  }n|
j                  } ||||«      }d}|rst        |j	                  «       «      |k7  rW|ddgk7  rP|dkD  rK|
j                  |«        ||||«      }|dz  }|r)t        |j	                  «       «      |k7  r|ddgk7  r|dkD  rŒK|s&|r$d|v r |d   r|
j                  |«        ||||«      }|
j                  |«      |	d<   |
j                  «       |	d<   |j	                  «       dd |	d<   |r|j                  «       nd|	d<   | j                  rdnd|	d<   t!        | j#                  |«      «      |	d<   ||	d<   | j                  r||	d<   n |rt%        |«      j'                  «       nd|	d<   t        t        t        j                  «       dz  «      «      }||z
  |	d<   |	S )rŸ   r    r8   r   rL   r¢   r¨   r¡   r£   r¤   r¥   r¦   Ú
clearCacher©   Úmemsizerª   rÒ   r«   r¬   r§   Nr­   )r   r®   r¯   r5   r°   r±   r²   r   r…   rÈ   r³   ÚStillRenderToBufferr´   rµ   r¶   ÚGetDataSizer†   r(   Ú
memoryviewÚtobytes)r   r·   r¸   r8   r¢   r¹   rº   r¥   r¦   r»   r   r¾   Úreply_imager¼   r½   s                  r   r¾   z&vtkWebPublishImageDelivery.stillRenderµ  s¶  € ô œœdŸi™i›k¨DÑ0Ó1Ó2ˆ	Ø�|‰|˜G F™OÓ,ˆØ�|‰|‹~˜a Ð"ˆØ˜Ÿ™ V¨TÓ2Ñ2ˆÙØ˜6‘?ˆDØ�A‰w˜Š|  Q¡¨"¢Ø—‘˜TÔ"ØˆÙ�w 'Ñ)Ø˜Ñ ˆAØˆÙ�y GÑ+Ø˜iÑ(ˆGØˆ	Ù�{ gÑ-Ø Ñ,ˆIØˆØ×!Ñ!Ó#ˆØ�Š6Ø×Ñ Ô%Ø�;Š;Ø×1Ñ1‰Kà×1Ñ1ˆKÙ! $¨¨7Ó3ˆð ˆÙœ˜dŸl™l›nÓ-°Ò5¸$À1ÀaÀ&º.ÈUÐUVÊYØ×Ñ Ô%Ù% d¨A¨wÓ7ˆKØ�Q‰JˆEñ œ˜dŸl™l›nÓ-°Ò5¸$À1ÀaÀ&º.ÈUÐUVËYñ ÙØ Ñ(Ø˜Ò%à×Ñ Ô%Ù% d¨A¨wÓ7ˆKà×7Ñ7¸Ó=ˆˆg‰Ø×6Ñ6Ó8ˆˆg‰ØŸ™› q¨Ð+ˆˆf‰Ù8C˜;×2Ñ2Ô4ÈˆˆiÑØ+/¯;ª;™-¸Fˆˆh‰Ü  ×!1Ñ!1°$Ó!7Ó8ˆˆkÑØ&ˆˆkÑØ�;Š;Ø(ˆE�'ŠNñ CNœZ¨Ó4×<Ñ<Ô>ÐSWˆE�'‰Nä”eœDŸI™I›K¨$Ñ.Ó/Ó0ˆØ# iÑ/ˆˆjÑàˆr   z viewport.image.push.observer.addc                 ó   ‡ ‡	— ‰ j                  |«      }|sdd|z  iS t        ‰ j                  |«      «      Š	‰	‰ j                  vr‹ˆ	ˆ fd„}ˆ	ˆ fd„}ˆ	ˆ fd„}‰ j	                  «       j                  d|«      }‰ j	                  «       j                  d|«      }‰ j	                  «       j                  d|«      }|||gd	d
dddœ‰ j                  ‰	<   n‰ j                  ‰	   dxx   d	z  cc<   ‰ j                  ‰	«       d‰	dœS )NÚerrorúUnable to get view with id %sc                  ó&   •— ‰j                  ‰«      S r   )rà   ©ÚargsÚkwargsrô   r   s     €€r   rØ   z>vtkWebPublishImageDelivery.addRenderObserver.<locals>.<lambda>   s   ø€ °t·±ÀzÔ7Rr   c                  ó&   •— ‰j                  ‰«      S r   )rõ   r  s     €€r   rØ   z>vtkWebPublishImageDelivery.addRenderObserver.<locals>.<lambda>  s   ø€ °D×4KÑ4KÈJÔ4Wr   c                  ó&   •— ‰j                  ‰«      S r   )rø   r  s     €€r   rØ   z>vtkWebPublishImageDelivery.addRenderObserver.<locals>.<lambda>  s   ø€ °4×3IÑ3IÈ*Ô3Ur   rQ   rN   rP   r¡   r   Tr¤   )ÚtagsÚobserverCountr£   rÏ   r¥   r  ©Úsuccessr‡   )r5   r†   r(   rÄ   r   ÚAddObserverrà   )
r   r‡   ró   ÚobserverCallbackÚstartCallbackÚstopCallbackÚtagÚtagStartÚtagStoprô   s
   `        @r   ÚaddRenderObserverz,vtkWebPublishImageDelivery.addRenderObserver÷  s  ù€ à—‘˜VÓ$ˆÙØÐ<¸vÑEÐFÐFä˜×)Ñ)¨%Ó0Ó1ˆ
à˜T×/Ñ/Ñ/ÜRÐÜWˆMÜUˆLØ×%Ñ%Ó'×3Ñ3°MÐCSÓTˆCØ×*Ñ*Ó,×8Ñ8Ø'¨óˆHð ×)Ñ)Ó+×7Ñ7Ø% |óˆGð
 ˜h¨Ð0Ø!"ØØØñ.ˆD×Ñ˜zÒ*ð ×Ñ˜zÑ*¨?Ó;¸qÑ@Ó;à�‰˜
Ô#Ø¨:Ñ6Ð6r   z#viewport.image.push.observer.removec                 óX  — | j                  |«      }|sdd|z  iS t        | j                  |«      «      }d }|| j                  v r| j                  |   }|sdd|z  iS |dxx   dz  cc<   |d   dk  r6|d   D ]!  }| j	                  «       j                  |«       Œ# | j                  |= dd	iS ©
Nr  r  ú'Unable to find subscription for view %sr  r¡   r   r  Úresultr  )r5   r†   r(   rÄ   r   ÚRemoveObserver©r   r‡   ró   rô   ÚobserverInfor  s         r   ÚremoveRenderObserverz/vtkWebPublishImageDelivery.removeRenderObserver  sÌ   € à—‘˜VÓ$ˆÙØÐ<¸vÑEÐFÐFä˜×)Ñ)¨%Ó0Ó1ˆ
àˆØ˜×+Ñ+Ñ+Ø×-Ñ-¨jÑ9ˆLáØÐFÈÑSÐTÐTà�_Ó%¨Ñ*Ó%à˜Ñ(¨AÒ-Ø# FÔ+�Ø×#Ñ#Ó%×4Ñ4°SÕ9ð ,à×"Ñ" :Ð.à˜)Ð$Ð$r   zviewport.image.push.qualityc                 ó¨  — | j                  |«      }|sdd|z  iS t        | j                  |«      «      }d }|| j                  v r| j                  |   }|sdd|z  iS ||d<   ||d<   d| j                  |   v rS| j                  |   d   D �cg c]  }t	        ||z  «      ‘Œ }}t        |d«      r|j                  |«       dd	iS ||_        dd	iS c c}w )
Nr  r  r  r¥   rÑ   rÐ   r²   r  r  )r5   r†   r(   rÄ   r   Úhasattrr²   ÚViewSize)	r   r‡   r¥   rÑ   ró   rô   r  rß   r¢   s	            r   ÚsetViewQualityz)vtkWebPublishImageDelivery.setViewQuality1  s  € à—‘˜VÓ$ˆÙØÐ<¸vÑEÐFÐFä˜×)Ñ)¨%Ó0Ó1ˆ
ØˆØ˜×+Ñ+Ñ+Ø×-Ñ-¨jÑ9ˆLáØÐFÈÑSÐTÐTà")ˆ�YÑØ %ˆ�WÑð ˜T×/Ñ/°
Ñ;Ñ;à(,×(:Ñ(:¸:Ñ(FÀ~Ò(VóÙ(V 1”�A˜‘I•Ð(Vð ð ô �u˜iÔ(Ø—‘˜dÔ#ð ˜)Ð$Ð$ð "&�”à˜)Ð$Ð$ùòs   ÂCz!viewport.image.push.original.sizec                 óÐ   — | j                  |«      }|sdd|z  iS t        | j                  |«      «      }d }|| j                  v r| j                  |   }|sdd|z  iS ||g|d<   ddiS )Nr  r  r  rÐ   r  r  ©r5   r†   r(   rÄ   )r   r‡   ÚwidthÚheightró   rô   r  s          r   ÚsetViewSizez&vtkWebPublishImageDelivery.setViewSizeN  s‰   € à—‘˜VÓ$ˆÙØÐ<¸vÑEÐFÐFä˜×)Ñ)¨%Ó0Ó1ˆ
ØˆØ˜×+Ñ+Ñ+Ø×-Ñ-¨jÑ9ˆLáØÐFÈÑSÐTÐTà(-¨v ˆ�^Ñ$à˜)Ð$Ð$r   zviewport.image.push.enabledc                 óÌ   — | j                  |«      }|sdd|z  iS t        | j                  |«      «      }d }|| j                  v r| j                  |   }|sdd|z  iS ||d<   ddiS )Nr  r  r  rÏ   r  r  r%  )r   r‡   rÏ   ró   rô   r  s         r   Ú
enableViewz%vtkWebPublishImageDelivery.enableView`  s…   € à—‘˜VÓ$ˆÙØÐ<¸vÑEÐFÐFä˜×)Ñ)¨%Ó0Ó1ˆ
ØˆØ˜×+Ñ+Ñ+Ø×-Ñ-¨jÑ9ˆLáØÐFÈÑSÐTÐTà")ˆ�YÑà˜)Ð$Ð$r   z$viewport.image.push.invalidate.cachec                 óº   — | j                  |«      }|sdd|z  iS | j                  «       j                  |«       | j                  «       j                  d«       ddiS )Nr  r  rQ   r  r  )r5   r   r…   r`   )r   r‡   ró   s      r   ÚinvalidateCachez*vtkWebPublishImageDelivery.invalidateCacher  s]   € à—‘˜VÓ$ˆÙØÐ<¸vÑEÐFÐFà×ÑÓ×-Ñ-¨eÔ4Ø×ÑÓ×)Ñ)¨-Ô8Ø˜)Ð$Ð$r   r›   ©F)é   )z-1)r¡   )r:   r;   r<   rÃ   rà   rÕ   rç   r€   rì   rî   rõ   rø   rú   r¾   r  r  r#  r(  r*  r,  Ú__classcell__©rÍ   s   @r   rÀ   rÀ   /  s?  ø„ õ
!ó.#ò`òGñ0 Ð1Ó2ò ó 3ð ñ Ð1Ó2ñ$ó 3ð$ñ Ð/Ó0òó 1ðñ Ð.Ó/ò6ó 0ð6ñ Ð$Ó%ñ$ó &ð$ò@ñD Ð1Ó2ñ7ó 3ð7ñB Ð4Ó5ñ%ó 6ð%ñ. Ð,Ó-ò%ó .ð%ñ8 Ð2Ó3ñ%ó 4ð%ñ" Ð,Ó-ñ%ó .ð%ñ" Ð5Ó6ñ%ó 7ô%r   rÀ   c                   óD   — e Zd Z ed«      d„ «       Z ed«      d„ «       Zy)ÚvtkWebViewPortGeometryDeliveryzviewport.webgl.metadatac                 óf   — | j                  |«      }| j                  «       j                  |«      }|S r   )r5   r   ÚGetWebGLSceneMetaData)r   r•   r8   Údatas       r   ÚgetSceneMetaDataz/vtkWebViewPortGeometryDelivery.getSceneMetaData…  s.   € à�|‰|˜GÓ$ˆØ×"Ñ"Ó$×:Ñ:¸4Ó@ˆØˆr   zviewport.webgl.datac                 ó‚   — | j                  |«      }| j                  «       j                  |t        |«      |dz
  «      }|S rð   )r5   r   ÚGetWebGLBinaryDatar†   )r   r•   Ú	object_idÚpartr8   r5  s         r   ÚgetWebGLDataz+vtkWebViewPortGeometryDelivery.getWebGLData‹  s;   € à�|‰|˜GÓ$ˆØ×"Ñ"Ó$×7Ñ7¸¼cÀ)»nÈdÐUVÉhÓWˆØˆr   N)r:   r;   r<   r€   r6  r;  r   r   r   r2  r2  „  s4   „ ÙÐ(Ó)ñó *ðñ
 Ð$Ó%ñó &ñr   r2  c                   ó4   — e Zd Z	 dd„Z ed«      dd„«       Zy)ÚvtkWebFileBrowserc                 óˆ   — || _         || _        t        j                  |«      | _        t        j                  |«      | _        y)aU  
        Configure the way the WebFile browser will expose the server content.
         - basePath: specify the base directory that we should start with
         - name: Name of that base directory that will show up on the web
         - excludeRegex: Regular expression of what should be excluded from the list of files/directories
        N)ÚbaseDirectoryÚrootNameÚreÚcompileÚpatternÚgPattern)r   ÚbasePathÚnameÚexcludeRegexÚ
groupRegexs        r   rÃ   zvtkWebFileBrowser.__init__š  s3   € ð &ˆÔØˆŒÜ—z‘z ,Ó/ˆŒÜŸ
™
 :Ó.ˆ�r   zfile.server.directory.listc                 óÆ  — | j                   g}t        |«      t        | j                   «      kD  r?|t        | j                   «      dz   d }||j                  dd«      j                  d«      z  }t        j
                  j                  | j                  |«      }|g g g |dœ}|dk(  r| j                   |d<   t	        j                  |«      D ]ê  }t        j
                  j                  t        j
                  j                  ||«      «      r8t        j                  | j                  |«      s|d   j                  |d	d
œ«       Œxt        j
                  j                  t        j
                  j                  ||«      «      sŒ¶t        j                  | j                  |«      rŒ×|d   j                  |«       Œì |d   }|j                  «        |d   }i }g }	|D ]•  }t        j                  | j                   |d   «      }
t        |
«      dk(  sŒ5|	j                  |«       dj                  |
«      }||v r||   d   j                  |d   «       Œv|d   g|dœ||<   |j                  ||   «       Œ— |	D ]n  }dj                  t        j                  | j                   |d   «      «      }t        ||   d   «      dkD  r|j#                  |«       Œ[|j#                  ||   «       Œp |S )zp
        RPC Callback to list a server directory relative to the basePath
        provided at start-up.
        r¡   NÚ\Ú/)ÚlabelÚfilesÚdirsÚgroupsÚpathÚ.rL  rM  éÿÿÿÿ)rL  r¢   rN  rO  rL   z*.)rM  rL  )r@  rÙ   ÚreplaceÚsplitÚosrP  Újoinr?  ÚlistdirÚisfilerA  ÚsearchrC  rñ   ÚisdirÚsortrD  r÷   )r   ÚrelativeDirrP  ÚcurrentPathr  ÚfilerM  rO  ÚgroupIdxÚfilesToRemoveÚ	fileSplitÚgNames               r   ÚlistServerDirectoryz%vtkWebFileBrowser.listServerDirectory¨  sp  € ð —‘ˆˆÜˆ{Óœc $§-¡-Ó0Ò0Ø%¤c¨$¯-©-Ó&8¸1Ñ&<Ð&>Ð?ˆKØ�K×'Ñ'¨¨cÓ2×8Ñ8¸Ó=Ñ=ˆDä—g‘g—l‘l 4×#5Ñ#5°{ÓCˆà ØØØØñ
ˆð ˜#ÒØ"Ÿm™mˆF�7‰OÜ—J‘J˜{Ö+ˆDÜ�w‰w�~‰~œbŸg™gŸl™l¨;¸Ó=Ô>ÄrÇyÁyØ—‘˜dôHð �w‘×&Ñ&°¸rÑ'BÕCÜ—‘—‘œrŸw™wŸ|™|¨K¸Ó>Õ?ÌÏ	É	Ø—‘˜dõIð �v‘×%Ñ% dÕ+ð ,ð �w‘ˆØ�
‰
ŒØ˜Ñ!ˆØˆØˆÛˆDÜŸ™ §¡°°W±Ó>ˆIÜ�9‹~ Ó"Ø×$Ñ$ TÔ*ØŸ	™	 )Ó,�Ø˜HÑ$Ø˜U‘O GÑ,×3Ñ3°D¸±MÕBà15°g±°È%Ñ&P�H˜U‘OØ—M‘M (¨5¡/Õ2ð ó "ˆDØ—I‘IœbŸh™h t§}¡}°d¸7±mÓDÓEˆEÜ�8˜E‘? 7Ñ+Ó,¨qÒ0Ø—‘˜TÕ"à—‘˜h u™oÕ.ð "ð ˆr   N)z
^\.|~$|^\$z[0-9]+\.)rQ  )r:   r;   r<   rÃ   r€   rc  r   r   r   r=  r=  ™  s$   „ àEPó/ñ Ð+Ó,ò5ó -ñ5r   r=  c                   ó’   ‡ — e Zd Zˆ fd„Z ed«      d
d„«       Z ed«      d„ «       Z ed«      d„ «       Z ed«      d
d	„«       Zˆ xZ	S )ÚvtkWebLocalRenderingc                 óx   •— t         t        | �  «        t        «        t	        «       | _        i | _        d| _        y )Nr   )rÂ   re  rÃ   r   r	   ÚcontextrÄ   r£   )r   r	  rÍ   s     €r   rÃ   zvtkWebLocalRendering.__init__ê  s0   ø€ ÜÔ" DÑ2Ô4ÜÔÜ-Ó/ˆŒØˆÔØˆ�
r   zviewport.geometry.array.getc                 ó”   — |r+| j                  | j                  j                  ||«      «      S | j                  j                  ||«      S r   )rÜ   rg  ÚgetCachedDataArray)r   ÚdataHashÚbinarys      r   ÚgetArrayzvtkWebLocalRendering.getArrayò  s?   € áØ×%Ñ% d§l¡l×&EÑ&EÀhÐPVÓ&WÓXÐXØ�|‰|×.Ñ.¨x¸Ó@Ð@r   z#viewport.geometry.view.observer.addc                 ó¢  ‡ ‡‡— ‰ j                  |«      }|sdd|z  iS ‰ j                  «       j                  «       j                  |«      Šdˆˆ fd„	Š‰‰ j                  vr:ˆˆ fd„}‰ j                  «       j                  d|«      }|gddœ‰ j                  ‰<   n‰ j                  ‰   dxx   dz  cc<   ‰ j                  d	 ‰d
«      «       d
‰dœS )Nr  r  c                 ó|   •— ‰j                  ‰| «      }| rdn‰j                  |d<   ‰xj                  dz  c_        |S )Nr   r£   r¡   )ÚgetViewStater£   )ÚnewSubscriptionÚstateToReturnrô   r   s     €€r   ÚpushGeometryz:vtkWebLocalRendering.addViewObserver.<locals>.pushGeometry  s:   ø€ Ø ×-Ñ-¨j¸/ÓJˆMÙ*9¡Q¸t¿z¹zˆM˜'Ñ"Ø�JŠJ˜!‰O�JØ Ð r   c                  ó2   •— ‰j                  d ‰«       «      S )Nú#viewport.geometry.view.subscription)rÝ   )r  r	  rr  r   s     €€r   rØ   z6vtkWebLocalRendering.addViewObserver.<locals>.<lambda>  s   ø€ °t·|±|Ø5±|³~ô8r   rQ   r¡   )r  r  r  rt  Tr  r-  )r5   r   r   r%   rÄ   r  rÝ   )r   r‡   ró   r  r  rr  rô   s   `    @@r   ÚaddViewObserverz$vtkWebLocalRendering.addViewObserverù  sÕ   ú€ à—‘˜VÓ$ˆÙØÐ<¸vÑEÐFÐFà×(Ñ(Ó*×9Ñ9Ó;×GÑGÈÓNˆ
ö	!ð ˜T×/Ñ/Ñ/ô Ðð ×%Ñ%Ó'×3Ñ3°MÐCSÓTˆCØ7:°eÈaÑ-PˆD×Ñ˜zÒ*ð ×Ñ˜zÑ*¨?Ó;¸qÑ@Ó;à�‰Ð:¹LÈÓ<NÔOØ¨:Ñ6Ð6r   z&viewport.geometry.view.observer.removec                 ó~  — | j                  |«      }|sdd|z  iS | j                  «       j                  «       j                  |«      }d }|| j                  v r| j                  |   }|sdd|z  iS |dxx   dz  cc<   |d   dk  r6|d   D ]!  }| j                  «       j                  |«       Œ# | j                  |= dd	iS r  )r5   r   r   r%   rÄ   r  r  s         r   ÚremoveViewObserverz'vtkWebLocalRendering.removeViewObserver  sÙ   € à—‘˜VÓ$ˆÙØÐ<¸vÑEÐFÐFà×(Ñ(Ó*×9Ñ9Ó;×GÑGÈÓNˆ
àˆØ˜×+Ñ+Ñ+Ø×-Ñ-¨jÑ9ˆLáØÐFÈÑSÐTÐTà�_Ó%¨Ñ*Ó%à˜Ñ(¨AÒ-Ø# FÔ+�Ø×#Ñ#Ó%×4Ñ4°SÕ9ð ,à×"Ñ" :Ð.à˜)Ð$Ð$r   z viewport.geometry.view.get.statec                 ó  — | j                  |«      }|sdd|z  iS | j                  j                  |«       |}|j                  «       j	                  «       }|j                  «       }| j                  «       j                  «       j                  |«      }t        d ||| j                  d«      }t        |«      |j                  «       t        |«      dœ|d<   | j                  j                  d«       | j                  j                  «        |r|S y )Nr  r  r¡   )ÚvtkRefIdÚcenterOfRotationry   ÚextraF)r5   rg  ÚsetIgnoreLastDependenciesrn   ro   rp   r   r   r%   r   r
   rq   ÚcheckForArraysToRelease)	r   r‡   rp  ró   rw   rˆ   ry   ÚrenderWindowIdÚviewInstances	            r   ro  z!vtkWebLocalRendering.getViewState.  s÷   € à—‘˜VÓ$ˆÙØÐ<¸vÑEÐFÐFà�‰×.Ñ.¨Ô?ð ˆØ×,Ñ,Ó.×?Ñ?ÓAˆØ×)Ñ)Ó+ˆØ×,Ñ,Ó.×=Ñ=Ó?×KÑKÈEÓRˆÜ(Ø�, °·±¸aó
ˆô ' |Ó4Ø &× 4Ñ 4Ó 6Ü$ VÓ,ñ!
ˆ�WÑð 	�‰×.Ñ.¨uÔ5Ø�‰×,Ñ,Ô.áØÐàr   r-  )
r:   r;   r<   rÃ   r€   rl  ru  rw  ro  r/  r0  s   @r   re  re  é  sr   ø„ ôñ Ð,Ó-òAó .ðAñ Ð4Ó5ñ7ó 6ð7ñ6 Ð7Ó8ñ%ó 9ð%ñ0 Ð1Ó2òó 3ôr   re  )&Ú__doc__Ú
__future__r   r   r   rU  ÚsysÚloggingÚtypesÚinspectÚ	tracebackrA  rÚ   r¯   Úvtkmodules.vtkWebCorer   Úvtkmodules.web.errorsr   Ú'vtkmodules.web.render_window_serializerr   r	   r
   r   Úwslinkr   r   r€   Úwslink.websocketr   ÚImportErrorr   r>   r‚   r�   rÀ   r2  r=  re  r   r   r   Ú<module>r�     sÍ   ðñ÷
 AÑ @ç D× D× D× DÓ Då 8å ;÷ó ð&Ý(Ý,Ý-ô:M�\ô :MôHHE˜ô HEôd4=�^ô 4=ô|/ .ô /ôrK% ô K%ôj
 ^ô ô*E˜ô Eô`a˜>õ aøðc ò &Ù
#Ó
%Ð%ð&ús   Á
B5 Â5C