+
    ¾¾jÃ¯  ã                  ó¬  € R t ^ RIHt ^ RIt^ RIHt ^ RIHt ^ RIH	t	HtH
t
HtHt ^ RIHt ^ RIHtHtHtHtHt ^ RIHtHtHtHtHtHtHtHtHtHt ^ R	I H!t! ^ R
I"H#t# ^ RI$H%t%H&t& ^ RI'H(t(H)t)H*t*H+t+H,t, ^ RI-H.t. ^ RI/H0t0 ^ RI1H2t2H3t3H4t4H5t5H6t6 ^ RI7H8t8 ^ RI9H:t: ]'       d   ^ RI;H<t< ^ RI=H>t> . t?] ! R R4      4       t@ ! R R]#4      tAR R ltBR.tCR# )z$The base for :rfc:`5545` components.)ÚannotationsN)Údeepcopy)Ú	dataclass)ÚdateÚdatetimeÚtimeÚ	timedeltaÚtimezone)ÚPath)ÚTYPE_CHECKINGÚAnyÚClassVarÚLiteralÚoverload)
ÚCONCEPTS_TYPE_SETTERÚLINKS_TYPE_SETTERÚRELATED_TO_TYPE_SETTERÚcomments_propertyÚconcepts_propertyÚlinks_propertyÚrefids_propertyÚrelated_to_propertyÚsingle_utc_propertyÚuid_property)ÚComponentFactory)ÚCaselessDict)ÚInvalidCalendarÚJCalParsingError)ÚContentlineÚContentlinesÚ
ParametersÚq_joinÚq_split)ÚComponentIcalParser)ÚDEFAULT_ENCODING)Ú	VPROPERTYÚTypesFactoryÚ	vDDDListsÚvTextÚvUnknown)Útzp©Úis_date)ÚIterable)ÚSelfc                  óZ   € ] tR t^0t$ RtR]R&   R]R&   RtR]R&   ^ tR]R	&   ^ tR]R
&   Rt	R# )Ú_ComponentEqFramezwA pending component-equality comparison on the iterative stack.

See ``Component.__eq__`` for how the fields are used.
Ú	ComponentÚaÚbNzlist | NoneÚ	unmatchedÚintÚa_indexÚcandidate_index© )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r4   r6   r7   Ú__static_attributes__r8   ó    ÚV/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/cal/component.pyr0   r0   0   s3   ‡ ñð ƒLØƒLð "€Iˆ{Ó!à€GˆSÓà€O�S×r@   r0   c                  ó¦  a € ] tR t^Ct$ RtRtR]R&    RqtR]R&    RqtR]R&    Rqt	R]R&    Rqt
R]R	&    RqtR
]R&    RtR]R&    ]P                  ! 4       tR]R&   RtR]R&   R]R&    ]R R l4       t]R R l4       t]R R l4       t]R R l4       tR V 3R lltR R  ltR! V 3R" lltRrR# R$ lltR% R& lt]RsR' l4       tRtR) R* lltR+ R, lt]3R- R. llt RuR/ lt!RuR0 lt"R1 R2 lt#R3 R4 lt$RR5 3R6 R7 llt%R8 R9 lt&RvR: R; llt'](]RwR< R= ll4       4       t)](]R> R? l4       4       t)]R@ RA l4       t*]RwRB RC ll4       t)]RxRD l4       t+RyRE RF llt,RyRG RH llt-RyRI RJ llt.RK RL lt/RM RN lt0]1! RORP4      ;t2t3]1! RQRR4      t4]5RS RT l4       t6]6Pn                  RU 4       t6]6Pp                  RV 4       t6]5RW RX l4       t9]9Pn                  RY 4       t9]9Pp                  RZ 4       t9R[ R\ lt:]R] R^ l4       t;]<t=]>t?]@tA]BtC]DtE]FtG]1! R_R`4      tHR(tI]Ra 4       tJ]RzRb Rc ll4       tKRd Re ltLRf Rg ltM]Rh Ri l4       tNRwRj V 3Rk llltORl Rm ltPRn Ro ltQRptRV ;tS# ){r1   zØBase class for calendar components.

Component is the base object for calendar, Event and the other
components defined in :rfc:`5545`. Normally you will not use this class
directly, but rather one of the subclasses.
NzClassVar[str | None]ÚnamezClassVar[tuple[()]]ÚrequiredÚ
singletonsÚmultipleÚ	exclusivez-ClassVar[tuple[str] | tuple[tuple[str, str]]]Ú	inclusiveFzClassVar[bool]Úignore_exceptionszClassVar[TypesFactory]Útypes_factoryz!ClassVar[ComponentFactory | None]Ú_components_factoryúlist[Component]Úsubcomponentsc               ó   € V ^8„  d   QhRR/# )é   Úreturnr   r8   )Úformats   "rA   Ú__annotate__ÚComponent.__annotate__‚   s   € ÷ 'ñ 'Ð'7ñ 'r@   c                óT   € V P                   f   \        4       V n         V P                   # )zGet the component factory.)rK   r   )Úclss   &rA   Ú_get_component_factoryÚ Component._get_component_factory�   s'   € ð ×"Ñ"Ò*Ü&6Ó&8ˆCÔ#Ø×&Ñ&Ð&r@   c               ó    € V ^8„  d   QhRRRR/# )rO   rC   ÚstrrP   útype[Component]r8   )rQ   s   "rA   rR   rS   ‰   s   € ÷ Fñ F sð F¨ñ Fr@   c                ó@   € V P                  4       P                  V4      # )zdReturn a component with this name.

Parameters:
    name: Name of the component, i.e. ``VCALENDAR``
)rV   Úget_component_class)rU   rC   s   &&rA   r\   ÚComponent.get_component_classˆ   s   € ð ×)Ñ)Ó+×?Ñ?ÀÓEÐEr@   c               ó    € V ^8„  d   QhRRRR/# )rO   Úcomponent_classrZ   rP   ÚNoner8   )rQ   s   "rA   rR   rS   ’   s   € ÷ #?ñ #? ð #?¸4ñ #?r@   c                ó"  € \        VR4      '       d   VP                  f   \        V R24      hV P                  4       pVP	                  VP                  4      pVe!   W1Jd   \        RVP                   RV 24      hVP                  V4       R# )au  Register a custom component class.

Parameters:
    component_class: Component subclass to register.
        Must have a ``name`` attribute.

Raises:
    ValueError: If ``component_class`` has no ``name`` attribute.
    ValueError: If a component with this name is already registered.

Examples:
    Create a custom icalendar component with the name ``X-EXAMPLE``:

    .. code-block:: pycon

        >>> from icalendar import Component
        >>> class XExample(Component):
        ...     name = "X-EXAMPLE"
        ...     def custom_method(self):
        ...         return "custom"
        >>> Component.register(XExample)
rC   Nz must have a 'name' attributezComponent 'z' is already registered as )ÚhasattrrC   Ú
ValueErrorrV   ÚgetÚadd_component_class)rU   r_   Úcomponent_factoryÚexistings   &&  rA   ÚregisterÚComponent.register‘   sœ   € ô0 �¨×/Ò/°?×3GÑ3GÒ3OÜ Ð0Ð0MÐNÓOÐOð  ×6Ñ6Ó8ÐØ$×(Ñ(¨×)=Ñ)=Ó>ˆØÒ HÓ$CÜØ˜o×2Ñ2Ð3ð 4Ø�jð"óð ð
 	×-Ñ-¨oÖ>r@   c               ó    € V ^8„  d   QhRRRR/# )rO   Úvaluez1date | datetime | timedelta | time | tuple | listrP   ú
str | Noner8   )rQ   s   "rA   rR   rS   ¸   s   € ÷ ñ Ø@ðà	ñr@   c                ó�  € \        V \        4      '       d…   V '       g   R# \        ;QJ d    R V  4       F  '       d   K   RM	  RM! R V  4       4      '       d   R# \        ;QJ d    R V  4       F  '       d   K   RM	  RM! R V  4       4      '       d   R# R# \        V 4      '       d   R# \        V \        4      '       d   R# R# )a©  Infer the ``VALUE`` parameter from a Python type.

Parameters:
    value: Python native type, one of :class:`datetime.date`, :class:`datetime.datetime`,
        :class:`datetime.timedelta`, :class:`datetime.time`, :class:`tuple`,
        or :class:`list`.

Returns:
    str or None: The ``VALUE`` parameter string, for example, "DATE",
        "TIME", or other string, or ``None``
        if no specific ``VALUE`` is needed.
Nc              3  ó8   "  € T F  p\        V4      x € K  	  R # 5i©Nr+   ©Ú.0Úitems   & rA   Ú	<genexpr>Ú.Component._infer_value_type.<locals>.<genexpr>Ë   s   é € Ð3©U T”7˜4—=�=«Uùs   ‚FTÚDATEc              3  óB   "  € T F  p\        V\        4      x € K  	  R # 5iro   )Ú
isinstancer   rp   s   & rA   rs   rt   Î   s   é € Ð<±e¨d”:˜d¤D×)Ð)³eùó   ‚ÚTIME)rw   ÚlistÚallr,   r   ©rk   s   &rA   Ú_infer_value_typeÚComponent._infer_value_type·   s�   € ô  �eœT×"Ò"ßÙç‹sÑ3©UÓ3�s�sŠsÑ3©UÓ3×3Ò3Ùç‹sÑ<±eÓ<�s�sŠsÑ<±eÓ<×<Ò<ÙáÜ�5�>Š>ÙÜ�eœT×"Ò"Ùár@   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   Úargsr   ÚkwargsrP   r`   r8   )rQ   s   "rA   rR   rS   Ù   s!   € ÷ ñ ˜cð ¨Sð °Tñ r@   c                óD   <€ \         SV `  ! V/ VB  . V n        . V n        R# )z#Set keys to upper for initial dict.N)ÚsuperÚ__init__rM   Úerrors)Úselfr€   r�   Ú	__class__s   &*,€rA   r„   ÚComponent.__init__Ù   s)   ø€ ä‰Ò˜$Ð) &Ò)à.0ˆÔð ð 	Žr@   c               ó   € V ^8„  d   QhRR/# ©rO   rP   Úboolr8   )rQ   s   "rA   rR   rS   ã   s   € ÷ ñ ˜$ñ r@   c                ó   € R# )zAReturns True, CaselessDict would return False if it had no items.Tr8   ©r†   s   &rA   Ú__bool__ÚComponent.__bool__ã   s   € ár@   c               ó   € V ^8„  d   QhRR/# )rO   rP   r%   r8   )rQ   s   "rA   rR   rS   ç   s   € ÷ (ñ ( )ñ (r@   c                ó"   <€ \         SV `  V4      # )z1Get property value from the component dictionary.)rƒ   Ú__getitem__)r†   Úkeyr‡   s   &&€rA   r’   ÚComponent.__getitem__ç   s   ø€ ä‰wÑ" 3Ó'Ð'r@   c               ó   € V ^8„  d   QhRR/# )rO   rP   r   r8   )rQ   s   "rA   rR   rS   ë   s   € ÷ ñ ¨ñ r@   c                ó:   €  W,          #   \          d    Tu # i ; i)z Get property value with default.)ÚKeyError)r†   r“   Údefaults   &&&rA   rd   ÚComponent.getë   s#   € ð	Ø•9ÐøÜô 	ØŠNð	ús   ‚
 Š™c               ó   € V ^8„  d   QhRR/# rŠ   r8   )rQ   s   "rA   rR   rS   ò   s   € ÷ Bñ B˜$ñ Br@   c                ór   € \        \        V P                  4       4      V P                  ,           '       * 4      # )zDReturns True if Component has no items or subcomponents, else False.)r‹   rz   ÚvaluesrM   r�   s   &rA   Úis_emptyÚComponent.is_emptyò   s&   € äœ˜TŸ[™[›]Ó+¨d×.@Ñ.@Õ@Ô@ÓAÐAr@   c                ór  € V'       g   V# \        W P                  P                  4      '       d   TpM�RpV'       d   RV9   d   VR,          pMQ\        W P                  P                  4      '       g-   V P                  V4      pV'       d   TpVf   / pRV9  d   WsR&   V P                  P	                  W4      pV! V4      pV'       dn   \        VR4      '       g   \        4       Vn        VP                  4        F8  w  ršV
f"   W•P                  9   d   VP                  V	 K(  K*  W¥P                  V	&   K:  	  V# )a˜  Encode values to icalendar property values.

:param name: Name of the property.
:type name: string

:param value: Value of the property. Either of a basic Python type of
              any of the icalendar's own property types.
:type value: Python native type or icalendar property type.

:param parameters: Property parameter dictionary for the value. Only
                   available, if encode is set to True.
:type parameters: Dictionary

:param encode: True, if the value should be encoded to one of
               icalendar's own property types (Fallback is "vText")
               or False, if not.
:type encode: Boolean

:returns: icalendar property value
NÚVALUEÚparams)	rw   rJ   Ú	all_typesr}   Úfor_propertyrb   r    r¡   Úitems)rU   rC   rk   Ú
parametersÚencodeÚobjÚvalue_paramÚinferredÚklassr“   rr   s   &&&&&      rA   Ú_encodeÚComponent._encodeù   s  € ÷, ØˆLÜ�e×.Ñ.×8Ñ8×9Ò9à‰Cð ˆKß˜g¨Ô3Ø(¨Õ1‘Ü ×'8Ñ'8×'BÑ'B×CÒCØ×0Ñ0°Ó7�ßØ"*�Kà!Ò)Ø%'˜
Ø jÔ0Ø.6 7Ñ+à×%Ñ%×2Ñ2°4ÓEˆEÙ˜“,ˆCßÜ˜3 ×)Ò)Ü'›\�”
Ø'×-Ñ-Ö/‘	�Ø’<ØŸj™jÔ(ØŸJ™J sšOñ )ð '+—J‘J˜s“Oñ 0ð ˆ
r@   Tc               ó(   € V ^8„  d   QhRRRRRRRR/# )	rO   rC   rY   r¥   zdict[str, str] | Parametersr¦   r‹   rP   r`   r8   )rQ   s   "rA   rR   rS   0  s8   € ÷ Hñ HàðHð 0ð	Hð
 ðHð 
ñHr@   c           	     ó  € \        V\        4      '       d,   VP                  4       R9   d   \        P                  ! V4      pV'       dM   \        V\
        4      '       d7   VP                  4       R9  d"   V Uu. uF  qPP                  WW44      NK  	  ppMV P                  WW44      pW9   dU   W,          p\        V\
        4      '       d4   \        V\
        4      '       d
   Wb,           pMVP                  V4       TpMWb.pW V&   R# u upi )aË  Add a property to this component.

If the property already exists, the new value is appended so the
property carries a list of values rather than replacing the previous
one. When ``name`` is ``DTSTAMP``, ``CREATED``, or ``LAST-MODIFIED``
and ``value`` is a ``datetime``, the value is converted to UTC as the
RFC requires.

Parameters:
    name: Name of the property.
    value:
        Value of the property. Either a basic Python type or any of
        icalendar's own property types.
    parameters:
        Property parameter dictionary for the value. Only consulted
        when ``encode`` is ``True``.
    encode:
        ``True`` if the value should be encoded to one of icalendar's
        own property types (fallback is ``vText``); ``False`` to
        store the value as-is.

Returns:
    ``None``

Example:

    >>> from icalendar import Event
    >>> event = Event()
    >>> event.add("summary", "Team sync")
    >>> event["summary"]
    vText(b'Team sync')

N)ÚdtstampÚcreatedzlast-modified)ÚrdateÚexdateÚ
categories)rw   r   Úlowerr*   Úlocalize_utcrz   r«   Úappend)r†   rC   rk   r¥   r¦   ÚvÚoldvals   &&&&&  rA   ÚaddÚComponent.add0  sÞ   € ôP �eœX×&Ò&¨4¯:©:«<ð <
ô ,
ô ×$Ò$ UÓ+ˆE÷ Ü˜5¤$×'Ò'Ø—
‘
“Ð$EÔEñ INÓNÉÀ1—\‘\ $¨:Ö>ÉˆEÐNˆEà—L‘L ¨jÓAˆEð Œ<à•ZˆFÜ˜&¤$×'Ò'Ü˜e¤T×*Ò*Ø"�N‘Eà—M‘M %Ô(Ø"‘Eà˜�ØˆT‹
ùò! Os   Á9Dc               ó    € V ^8„  d   QhRRRR/# )rO   rC   rY   rk   r%   r8   )rQ   s   "rA   rR   rS   z  s   € ÷ ñ ˜Cð ¨	ñ r@   c                ó
  € \        VR4      '       d   VP                  # \        V\        4      '       d   V# V P                  P                  W4      p\        V\        \        34      '       d   VP                  \        4      pV# )z&Internal for decoding property values.Ú
ical_value)
rb   r½   rw   r'   rJ   Ú	from_icalr(   r)   r¦   r$   )r†   rC   rk   Údecodeds   &&& rA   Ú_decodeÚComponent._decodez  sm   € ô �5˜,×'Ò'Ø×#Ñ#Ð#Ü�eœY×'Ò'àˆLØ×$Ñ$×.Ñ.¨tÓ;ˆô �g¤¤xÐ0×1Ò1Ø—n‘nÔ%5Ó6ˆGØˆr@   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   rC   rY   r˜   r   rP   r8   )rQ   s   "rA   rR   rS   Ž  s!   € ÷ ñ ˜Cð ¨#ð ¸Cñ r@   c                óä   € W9   dP   W,          p\        V\        4      '       d!   V Uu. uF  q@P                  W4      NK  	  up# V P                  W4      # V\        J d   \	        V4      hV# u upi )z�Returns decoded value of property.

A component maps keys to icalendar property value types.
This function returns values compatible to native Python types.
)rw   rz   rÀ   Ú_markerr—   )r†   rC   r˜   rk   r·   s   &&&  rA   r¿   ÚComponent.decodedŽ  sd   € ð Œ<Ø•JˆEÜ˜%¤×&Ò&Ù7<Ó=±u°!Ÿ™ TÖ-±uÑ=Ð=Ø—<‘< Ó,Ð,Ø”gÓÜ˜4“.Ð Øˆùò	 >s   ©A-c                óÆ   € \        W,          4       Uu. uF  q3P                  R4      NK  	  ppV'       d!   V Uu. uF  qPP                  W4      NK  	  up# V# u upi u upi )z*Returns a list of values (split on comma).z" )r"   ÚstriprÀ   )r†   rC   Údecoder·   ÚvalsÚvals   &&&   rA   Ú
get_inlineÚComponent.get_inline¡  sQ   € ä'.¨t­zÔ':Ó;Ñ': !—‘˜–Ñ':ˆÐ;ßÙ7;Ó<±t°—L‘L Ö+±tÑ<Ð<Øˆùò <ùâ<s
   ”A»Ac           	     óª   € V'       d"   V Uu. uF  q@P                  W^R7      NK  	  ppV P                  R,          ! \        V4      4      W&   R# u upi )zNConverts a list of values into comma separated string and sets value
to that.
)r¦   ÚinlineN)r«   rJ   r!   )r†   rC   rœ   r¦   rk   s   &&&& rA   Ú
set_inlineÚComponent.set_inline¨  sG   € ÷ ÙGMÓNÁv¸e—l‘l 4°q�lÖ9ÁvˆFÐNØ×'Ñ'¨Ö1´&¸³.ÓAˆ‹
ùò Os   �Ac               ó    € V ^8„  d   QhRRRR/# )rO   Ú	componentr1   rP   r`   r8   )rQ   s   "rA   rR   rS   ³  s   € ÷ -ñ - yð -°Tñ -r@   c                ó<   € V P                   P                  V4       R# )z%Add a subcomponent to this component.N)rM   r¶   )r†   rÒ   s   &&rA   Úadd_componentÚComponent.add_component³  s   € à×Ñ×!Ñ! )Ö,r@   c               ó$   € V ^8„  d   QhRRRRRR/# ©rO   rC   rl   Úselectzcallable[[Component], bool]rP   rL   r8   )rQ   s   "rA   rR   rS   ·  s$   € ÷ ñ ØðØ(Cðà	ñr@   c                óô   € . pV .pV'       dk   VP                  4       pVe   VP                  V8X  d    V! V4      '       d   VP                  V4       VP                  \	        VP
                  4      4       Kr  V# )zWalk to given component.)ÚpoprC   r¶   ÚextendÚreversedrM   )r†   rC   rØ   ÚresultÚstackrÒ   s   &&&   rA   Ú_walkÚComponent._walk·  s`   € ð ˆØ�ˆßØŸ	™	›ˆIØ’ 	§¡°$Ô 6¹FÀ9×<MÒ<MØ—‘˜iÔ(Ø�L‰Lœ )×"9Ñ"9Ó:Ö;Øˆr@   c                	ó   € R # ©Tr8   )Ú_s   &rA   Ú<lambda>ÚComponent.<lambda>Ç  s   € ¹r@   c               ó$   € V ^8„  d   QhRRRRRR/# r×   r8   )rQ   s   "rA   rR   rS   Ä  s(   € ÷ (ñ (àð(ð ,ð(ð 
ñ	(r@   c                óL   € Ve   VP                  4       pV P                  W4      # )ar  Recursively traverses component and subcomponents. Returns sequence
of same. If name is passed, only components with name will be returned.

:param name: The name of the component or None such as ``VEVENT``.
:param select: A function that takes the component as first argument
  and returns True/False.
:returns: A list of components that match.
:rtype: list[Component]
)Úupperrß   )r†   rC   rØ   s   &&&rA   ÚwalkÚComponent.walkÄ  s$   € ð ÒØ—:‘:“<ˆDØ�z‰z˜$Ó'Ð'r@   c               ó    € V ^8„  d   QhRRRR/# )rO   ÚuidrY   rP   rL   r8   )rQ   s   "rA   rR   rS   Ö  s   € ÷ 	8ñ 	8˜Cð 	8 Oñ 	8r@   c                ó0   a€ V P                  V3R lR7      # )z¦Return a list of components with the given UID.

Parameters:
    uid: The UID of the component.

Returns:
    list[Component]: List of components with the given UID.
c                ó"   <€ V P                   S8H  # ro   )rì   )Úcrì   s   &€rA   rä   Ú$Component.with_uid.<locals>.<lambda>ß  s   ø€ ¨!¯%©%°3ª,r@   )rØ   )ré   )r†   rì   s   &frA   Úwith_uidÚComponent.with_uidÖ  s   ø€ ð �y‰yÔ 6ˆyÓ7Ð7r@   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   Ú	recursiver‹   ÚsortedrP   zlist[tuple[str, object]]r8   )rQ   s   "rA   rR   rS   ä  s(   € ÷ )ñ )àð)ð ð)ð 
"ñ	)r@   c                óä  € . pV P                   R,          pV R3.pV'       EdM   VP                  4       w  rgV'       d4   VP                  RV! VP                  4      P	                  4       34       KV  VP                  RV! VP                  4      P	                  4       34       V'       d   VP                  4       MVP                  4       pV FP  p	Wi,          p
\        V
\        4      '       d   V
 F  pVP                  W›34       K  	  K>  VP                  Wš34       KR  	  VP                  VR34       V'       g   EK#  \        VP                  4       F  pVP                  VR34       K  	  EKU  V# )zoReturns properties in this component and subcomponents as a list.

The list contains ``(name, value)`` tuples.
ÚtextFÚENDÚBEGINT)rJ   rÚ   r¶   rC   Úto_icalÚsorted_keysÚkeysrw   rz   rÜ   rM   )r†   rô   rõ   rÝ   Úv_textrÞ   ÚcompÚis_endÚproperty_namesrC   rœ   rk   Úsubcomponents   &&&          rA   Úproperty_itemsÚComponent.property_itemsä  s$  € ð ˆØ×#Ñ# FÕ+ˆð ˜��ˆßˆeØ Ÿ9™9›;‰LˆDßØ—‘˜u¡f¨T¯Y©YÓ&7×&?Ñ&?Ó&AÐBÖCà—‘˜w©¨t¯y©yÓ(9×(AÑ(AÓ(CÐDÔEß7= ×!1Ñ!1Ô!3À4Ç9Á9Ã;�ã*�DØ!�Z�FÜ! &¬$×/Ò/ã%+˜EØ"ŸM™M¨4¨-Ö8ó &,ð Ÿ™ t nÖ5ñ +ð —‘˜d D˜\Ô*ç’9ä(0°×1CÑ1CÖ(D˜ØŸ™ l°EÐ%:Ö;ô )Eð ˆr@   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   Ústústr | bytesrF   zLiteral[False]rP   r1   r8   )rQ   s   "rA   rR   rS     s$   € ÷ ñ ØðØ(6ðà	ñr@   c                	ó   € R # ro   r8   ©rU   r  rF   s   &&&rA   r¾   ÚComponent.from_ical  s   € ñ r@   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   r  r  rF   zLiteral[True]rP   rL   r8   )rQ   s   "rA   rR   rS     s   € ×XÑX˜;ÐX°-ÐXÀOÑXr@   c                	ó   € R # ro   r8   r  s   &&&rA   r¾   r	    s   € áUXr@   c               ó    € V ^8„  d   QhRRRR/# )rO   r  r  rP   r#   r8   )rQ   s   "rA   rR   rS     s   € ÷ Xñ X +ð XÐ2Eñ Xr@   c                óJ   € \        WP                  4       V P                  4      # )z/Get the iCal parser for the given input string.)r#   rV   rJ   )rU   r  s   &&rA   Ú_get_ical_parserÚComponent._get_ical_parser  s    € ô # 2×'AÑ'AÓ'CÀS×EVÑEVÓWÐWr@   c               ó$   € V ^8„  d   QhRRRRRR/# )rO   r  zstr | bytes | PathrF   r‹   rP   zComponent | list[Component]r8   )rQ   s   "rA   rR   rS     s$   € ÷ 4ñ 4Ø#ð4Ø/3ð4à	$ñ4r@   c                óT  € \        V\        4      '       d   VP                  4       pM_\        V\        4      '       dJ   RV9  dC   RV9  d<    \        V4      P	                  4       pV'       d   \        V4      P                  4       pV P                  V4      pVP                  4       pV'       d   V# \        V4      ^8”  d   \        V P                  RV4      4      h\        V4      ^8  d   \        V P                  RV4      4      hV^ ,          #   \
        \        3 d    Rp LÀi ; i)aÏ  Parse iCalendar data into component instances.

Handles standard and custom components (``X-*``, IANA-registered).

Parameters:
    st: iCalendar data as bytes or string, or a path to an iCalendar file as
        :class:`pathlib.Path` or string.
    multiple: If ``True``, returns list. If ``False``, returns single component.

Returns:
    Component or list of components

See Also:
    :doc:`/how-to/custom-components` for examples of parsing custom components
Ú
ÚFz3Found multiple components where only one is allowedz1Found no components where exactly one is required)rw   r
   Ú
read_bytesrY   Úis_fileÚOSErrorrc   r  ÚparseÚlenÚ_format_error)rU   r  rF   r  ÚparserÚ
componentss   &&&   rA   r¾   r	    s
  € ô& �bœ$×ÒØ—‘“‰BÜ˜œC× Ò  T°¤^¸ÀB¼ð Ü˜r›(×*Ñ*Ó,�÷ Ü˜"“X×(Ñ(Ó*�Ø×%Ñ% bÓ)ˆØ—\‘\“^ˆ
ßØÐÜˆz‹?˜QÔÜØ×!Ñ!ØIÈ2óóð ô
 ˆz‹?˜QÔÜØ×!Ñ!ØGÈóóð ð
 ˜!�}Ðøô1 œZÐ(ô  ð
  ’ð ús   ÁD ÄD'Ä&D'c                	óÒ   € ^ap\        V 4      \        V4      ,           \        V4      ,           V8”  d0   V\        V 4      ,
          \        V4      ,
          pV  RVRV  RV 2# V  RV 2# )éd   z: NÚ )r  )Úerror_descriptionÚ	bad_inputÚelipsisÚmax_error_lengthÚtruncate_tos   &&&  rA   r  ÚComponent._format_errorU  sv   € ð #ÐÜÐ Ó!¤C¨	£NÕ2´S¸³\ÕAÐDTÔTØ*¬SÐ1BÓ-CÕCÄcÈ'ÃlÕRˆKØ'Ð(¨¨9°\°kÐ+BÐ*CÀ1ÀWÀIÐNÐNØ#Ð$ B y kÐ2Ð2r@   c               ó   € V ^8„  d   QhRR/# ©rO   rõ   r‹   r8   )rQ   s   "rA   rR   rS   ^  s   € ÷ Jñ J°ñ Jr@   c                ó\   € \        VR\        4       4      p\        P                  ! WW#R7      # )z!Returns property as content line.r¡   ©rõ   )Úgetattrr    r   Ú
from_parts)r†   rC   rk   rõ   r¡   s   &&&& rA   Úcontent_lineÚComponent.content_line^  s%   € ä˜ ¬*«,Ó7ˆÜ×%Ò% d°EÔIÐIr@   c               ó   € V ^8„  d   QhRR/# r&  r8   )rQ   s   "rA   rR   rS   c  s   € ÷ ñ  Dñ r@   c                óº   € \        4       pV P                  VR7       F)  w  r4V P                  W4VR7      pVP                  V4       K+  	  VP                  R4       V# )z<Converts the Component and subcomponents into content lines.r(  Ú )r   r  r+  r¶   )r†   rõ   ÚcontentlinesrC   rk   Úcls   &&    rA   Úcontent_linesÚComponent.content_linesc  s\   € ä#“~ˆØ×.Ñ.°fÐ.Ö=‰KˆDØ×"Ñ" 4°vÐ"Ó>ˆBØ×Ñ Ö#ñ >ð 	×Ñ˜BÔØÐr@   c               ó   € V ^8„  d   QhRR/# r&  r8   )rQ   s   "rA   rR   rS   l  s   € ÷ 'ñ '˜dñ 'r@   c                óF   € V P                  VR7      pVP                  4       # )ze
:param sorted: Whether parameters and properties should be
               lexicographically sorted.
r(  )r2  rú   )r†   rõ   r2  s   && rA   rú   ÚComponent.to_icall  s&   € ð ×*Ñ*°&Ð*Ó9ˆØ×$Ñ$Ó&Ð&r@   c               ó   € V ^8„  d   QhRR/# ©rO   rP   rY   r8   )rQ   s   "rA   rR   rS   u  s   € ÷ +ñ +˜#ñ +r@   c                óÆ  € . pRV 3.pV'       EdB   VP                  4       pV^ ,          pVR8X  d   VP                  R4       K<  VR8X  d   VP                  R4       KV  V^,          p\        V\        4      '       d¹   TP                  VP                  ;'       g    \        V4      P                   R\        V4       24       VP                  pV'       dK   VP                  R4       \        V4       F'  pVP                  RV34       VP                  R	4       K)  	  EK  VP                  R4       EK-  VP                  \        V4      4       EKJ  RP                  V4      # )
a¬  String representation of class with all of its subcomponents.

Implemented iteratively rather than recursively so that calendars
with deeply nested subcomponents do not raise ``RecursionError``.
A pathological ``.ics`` payload of only ~13 KB can otherwise nest
``BEGIN:VEVENT`` ~500 levels and crash any caller that performs
``repr()``/``str()``/``f"{cal}"`` on the parsed calendar
(e.g. logging, error reporting, debug pages).
ÚopenÚcommaz, ÚcloseÚ)Ú(r/  )r<  )r;  )rÚ   r¶   rw   r1   rC   Útyper9   ÚdictrM   rÜ   rY   Újoin)r†   ÚoutrÞ   ÚframeÚkindÚnodeÚsubsÚsubs   &       rA   Ú__repr__ÚComponent.__repr__u  s  € ð ˆØ% t˜nÐ-ˆßˆeØ—I‘I“KˆEØ˜•8ˆDØ�wŒØ—
‘
˜4Ö Ø˜”Ø—
‘
˜3–à˜Q•x�Ü˜d¤I×.Ò.Ø—J‘J $§)¡)×"BÐ"B¬t°D«z×/BÑ/BÐ!CÀ1ÄTÈ$ÃZÀLÐQÔRØ×-Ñ-�Dßð
 Ÿ™ ZÔ0Ü#+¨D¦>˜CØ!ŸL™L¨&°#¨Ô7Ø!ŸL™L¨Ö4ô $2ð Ÿ
™
 3Ÿð —J‘Jœs 4›y×)Ø�w‰w�s‹|Ðr@   c               ó    € V ^8„  d   QhRRRR/# )rO   Úotherr1   rP   r‹   r8   )rQ   s   "rA   rR   rS   ¢  s   € ÷ 6ñ 6˜Ið 6¨$ñ 6r@   c                	ób  € \        V\        4      '       g   \        # \        W4      .pR pV'       Edü   VR,          pVP                  f¬   \        VP                  P                  4      \        VP                  P                  4      8w  g2   \        P                  ! VP                  VP                  4      '       g   VP                  4        RpK¦  \        VP                  P                  4      Vn        M_Ve\   V'       d9   VP                  VP                   V;P                  ^,          un        ^ Vn        MV;P                  ^,          un        R pVP                  \        VP                  P                  4      8¼  d   VP                  4        RpEKm  VP                  \        VP                  4      8¼  d   VP                  4        RpEK¦  VP                  \        VP                  P                  VP                  ,          VP                  VP                  ,          4      4       EK  V# )NFTéÿÿÿÿ)rw   r1   ÚNotImplementedr0   r4   r  r2   rM   r3   r   Ú__eq__rÚ   rz   r7   r6   r¶   )r†   rK  rÞ   Úchild_resultrC  s   &&   rA   rO  ÚComponent.__eq__¢  s‚  € Ü˜%¤×+Ò+Ü!Ð!ô& # 4Ó/Ð0ˆØˆßˆeØ˜"•IˆEØ�‰Ò&Ü�u—w‘w×,Ñ,Ó-´°U·W±W×5JÑ5JÓ1KÔKÜ ×'Ò'¨¯©°·±×9Ò9à—I‘I”KØ#(�LÙÜ"& u§w¡w×'<Ñ'<Ó"=�•ØÒ)ßØŸ™¨×(=Ñ(=Ð>Ø—M’M QÕ&•MØ,-�EÕ)à×)Ò)¨QÕ.Õ)Ø#�Ø�}‰}¤ E§G¡G×$9Ñ$9Ó :Ô:Ø—	‘	”Ø#“Ø×&Ñ&¬#¨e¯o©oÓ*>Ô>Ø—	‘	”Ø$“à—‘Ü%ØŸ™×-Ñ-¨e¯m©mÕ<ØŸ™¨×(=Ñ(=Õ>ó÷ð Ðr@   ÚDTSTAMPa   The UTC datetime stamp recording when this component instance was created or last revised.

    This property is defined in :rfc:`5545#section-3.8.7.2`. It's required
    in ``VEVENT``, ``VTODO``, ``VJOURNAL``, and ``VFREEBUSY`` components.

    When the calendar object carries a ``METHOD`` property, such as for
    scheduling, this value is the creation time of *this particular revision*.
    Without a ``METHOD`` property, it's equivalent to :attr:`LAST_MODIFIED`.

    The value is always in UTC. It's also accessible as :attr:`stamp`.

    Example:
        .. code-block:: pycon

            >>> from datetime import timezone, datetime
            >>> from icalendar import Event
            >>> event = Event()
            >>> event.DTSTAMP = datetime(2024, 6, 1, 12, 0, 0, tzinfo=timezone.utc)
            >>> event.DTSTAMP
            datetime.datetime(2024, 6, 1, 12, 0, tzinfo=ZoneInfo(key='UTC'))

    See also:
        :attr:`CREATED`, :attr:`DTSTAMP`, :attr:`LAST_MODIFIED`,
        :attr:`created`, :attr:`stamp`, :attr:`last_modified`
    zLAST-MODIFIEDa—  The UTC datetime when this component's information was last revised, per :rfc:`5545#section-3.8.7.3`.

    It's analogous to a file's modification timestamp. This property is optional.
    When it's absent, :attr:`last_modified` falls back to :attr:`DTSTAMP`.

    This property is applicable to ``VEVENT``, ``VTODO``, ``VJOURNAL``, and ``VTIMEZONE``
    components. The value is always in UTC.

    Example:
        .. code-block:: pycon

            >>> from datetime import timezone, datetime
            >>> from icalendar import Event
            >>> event = Event()
            >>> event.LAST_MODIFIED = datetime(2024, 6, 1, 9, 0, 0, tzinfo=timezone.utc)
            >>> event.LAST_MODIFIED
            datetime.datetime(2024, 6, 1, 9, 0, tzinfo=ZoneInfo(key='UTC'))

    See also:
        :attr:`CREATED`, :attr:`DTSTAMP`, :attr:`LAST_MODIFIED`,
        :attr:`created`, :attr:`stamp`, :attr:`last_modified`
    c               ó   € V ^8„  d   QhRR/# ©rO   rP   r   r8   )rQ   s   "rA   rR   rS     s   € ÷ 2ñ 2˜xñ 2r@   c                óB   € V P                   ;'       g    V P                  # )zÆDatetime when the information associated with the component was last revised.

Since :attr:`LAST_MODIFIED` is an optional property,
this returns :attr:`DTSTAMP` if :attr:`LAST_MODIFIED` is not set.
)ÚLAST_MODIFIEDrR  r�   s   &rA   Úlast_modifiedÚComponent.last_modified  s   € ð ×!Ñ!×1Ð1 T§\¡\Ð1r@   c                	ó   € Wn         R # ro   ©rV  ©r†   rk   s   &&rA   rW  rX    s   € à"Ör@   c                	ó
   € V = R # ro   rZ  r�   s   &rA   rW  rX    s   € àÒr@   c               ó   € V ^8„  d   QhRR/# rT  r8   )rQ   s   "rA   rR   rS   #  s   € ÷ ,ñ ,˜ñ ,r@   c                óB   € V P                   ;'       g    V P                  # )zµDatetime when the information associated with the component was created.

Since :attr:`CREATED` is an optional property,
this returns :attr:`DTSTAMP` if :attr:`CREATED` is not set.
)ÚCREATEDrR  r�   s   &rA   r°   ÚComponent.created"  s   € ð �|‰|×+Ð+˜tŸ|™|Ð+r@   c                	ó   € Wn         R # ro   ©r_  r[  s   &&rA   r°   r`  +  s   € àŽr@   c                	ó
   € V = R # ro   rb  r�   s   &rA   r°   r`  /  s   € àŠLr@   c               ó   € V ^8„  d   QhRR/# rŠ   r8   )rQ   s   "rA   rR   rS   3  s   € ÷ Fñ F ñ Fr@   c                ó¢   € \         ;QJ d*    R V P                  4        4       F  '       g   K   R# 	  R# ! R V P                  4        4       4      # )zXWhether this component has attributes that indicate that Mozilla Thunderbird created it.c              3  óB   "  € T F  qP                  R 4      x € K  	  R# 5i)zX-MOZ-N)Ú
startswith)rq   Úattrs   & rA   rs   Ú+Component.is_thunderbird.<locals>.<genexpr>5  s   é € ÐE¹°—?‘? 8×,Ð,»ùrx   TF)Úanyrü   r�   s   &rA   Úis_thunderbirdÚComponent.is_thunderbird3  s7   € ç‹sÑE¸¿¹¼ÓE�sŒsÐEŠsÐEˆsÑE¸¿¹¼ÓEÓEÐEr@   c               ó   € V ^8„  d   QhRR/# rT  r8   )rQ   s   "rA   rR   rS   8  s   € ÷ *ñ *�hñ *r@   c                 óJ   € \         P                  ! \        P                  4      # )zReturn now as UTC value.)r   Únowr	   Úutcr8   r@   rA   Ú_utc_nowÚComponent._utc_now7  s   € ô �|Š|œHŸL™LÓ)Ð)r@   r_  a—  The UTC datetime when this calendar component was first created, per :rfc:`5545#section-3.8.7.1`.

    This property records when the calendar user agent originally stored the component.
    This property is optional. When it's absent, :attr:`created` falls back to
    :attr:`DTSTAMP`.

    This property is applicable to ``VEVENT``, ``VTODO``, and ``VJOURNAL`` components.
    The value is always in UTC.

    Example:
        .. code-block:: pycon

            >>> from datetime import timezone, datetime
            >>> from icalendar import Event
            >>> event = Event()
            >>> event.CREATED = datetime(2024, 1, 1, 8, 0, 0, tzinfo=timezone.utc)
            >>> event.CREATED
            datetime.datetime(2024, 1, 1, 8, 0, tzinfo=ZoneInfo(key='UTC'))

    See also:
        :attr:`CREATED`, :attr:`DTSTAMP`, :attr:`LAST_MODIFIED`,
        :attr:`created`, :attr:`stamp`, :attr:`last_modified`
    c                ó<   € V e   Vf   R# W8”  d   \        R4      hR# )zcThis validates start and end.

Raises:
    ~error.InvalidCalendar: If the information is not valid
Nzend must be after start)r   )ÚstartÚends   &&rA   Ú_validate_start_and_endÚ!Component._validate_start_and_end`  s&   € ð Š=˜CšKÙØŒ;Ü!Ð";Ó<Ð<ñ r@   c               ó@   € V ^8„  d   QhRRRRRRRRRR	R
RRRRRRRRR/
# )rO   r°   zdate | NoneÚcommentszlist[str] | str | NoneÚconceptsr   rW  Úlinksr   ÚrefidsÚ
related_tor   ÚstamprM   zIterable[Component] | NonerP   r.   r8   )rQ   s   "rA   rR   rS   m  sn   € ÷ .ñ .àð.ð )ð.ð 'ð	.ð
 #ð.ð !ð.ð 'ð.ð +ð.ð ð.ð 2ð.ð 
ñ.r@   c
                óÌ   € V ! 4       p
WŠn         Wn        WJn        W*n        WZn        Wzn        W:n        Wjn        V	e)   \        V	\        4      '       d   T	M
\        V	4      V
n
        V
# )aƒ  Create a new component.

Parameters:
    comments: The :attr:`comments` of the component.
    concepts: The :attr:`concepts` of the component.
    created: The :attr:`created` of the component.
    last_modified: The :attr:`last_modified` of the component.
    links: The :attr:`links` of the component.
    related_to: The :attr:`related_to` of the component.
    stamp: The :attr:`DTSTAMP` of the component.
    subcomponents: The subcomponents of the component.

Raises:
    ~error.InvalidCalendar: If the content is not valid
        according to :rfc:`5545`.

.. warning:: As time progresses, we will be stricter with the
    validation.
)rR  r°   rW  ry  r{  r}  rz  r|  rw   rz   rM   )rU   r°   ry  rz  rW  r{  r|  r}  r~  rM   rÒ   s   &&&&&&&&&& rA   ÚnewÚComponent.newl  sm   € ñ@ “Eˆ	Ø!ÔØ#ÔØ"/ÔØ%ÔØŒØ)ÔØ%ÔØ!ÔØÒ$ô ˜m¬T×2Ò2ñ ä˜-Ó(ð Ô#ð
 Ðr@   c               ó   € V ^8„  d   QhRR/# )rO   rP   rz   r8   )rQ   s   "rA   rR   rS   �  s   € ÷ -ñ -˜ñ -r@   c                óð   € R R lpV! V 4      pW3.pV'       d\   VP                  4       w  rEV^,          pVP                   F.  pV! V4      pVP                  V4       VP                  Wx34       K0  	  Kc  V# )a„  Convert this component to a jCal object.

Returns:
    jCal object

See also :attr:`to_json`.

In this example, we create a simple VEVENT component and convert it to jCal:

.. code-block:: pycon

    >>> from icalendar import Event
    >>> from datetime import date
    >>> from pprint import pprint
    >>> event = Event.new(summary="My Event", start=date(2025, 11, 22))
    >>> pprint(event.to_jcal())
    ['vevent',
     [['dtstamp', {}, 'date-time', '2025-05-17T08:06:12Z'],
      ['summary', {}, 'text', 'My Event'],
      ['uid', {}, 'text', 'd755cef5-2311-46ed-a0e1-6733c9e15c63'],
      ['dtstart', {}, 'date', '2025-11-22']],
     []]
c               ó    € V ^8„  d   QhRRRR/# )rO   rþ   r1   rP   rz   r8   )rQ   s   "rA   rR   Ú'Component.to_jcal.<locals>.__annotate__¸  s   € ÷ 	7ñ 	7˜Ið 	7¨$ñ 	7r@   c           
     ó  € V P                  4        UUUu. uFF  w  r\        V\        4      '       d   TMV. F"  pVP                  VP	                  4       4      NK$  	  KH  	  ppppV P
                  P	                  4       V. .# u upppi ro   )r¤   rw   rz   Úto_jcalr´   rC   )rþ   r“   rk   rr   Ú
propertiess   &    rA   Ú	make_nodeÚ$Component.to_jcal.<locals>.make_node¸  sz   € ð #'§*¡*¤,õá".‘J�CÜ&0°¼×&=Ò&=™UÀEÀ7ÒJ�Dð —‘˜SŸY™Y›[Ö)áJñ *Ù".ð ò ð
 —I‘I—O‘OÓ% z°2Ð6Ð6ùôs   •AB)rÚ   rM   r¶   )	r†   r‰  Ú	root_noderÞ   rþ   rE  Úchildrenr  Ú
child_nodes	   &        rA   r‡  ÚComponent.to_jcal�  ss   € õ6	7ñ ˜d“Oˆ	à04Ð/@Ð.AˆßØŸ™›‰JˆDØ˜A•wˆHØ $× 2Ô 2�Ù& |Ó4�
Ø—‘ 
Ô+Ø—‘˜lÐ7Ö8ó !3ð Ðr@   c               ó   € V ^8„  d   QhRR/# r8  r8   )rQ   s   "rA   rR   rS   Ì  s   € ÷ *ñ *˜ñ *r@   c                óJ   € \         P                  ! V P                  4       4      # )zbReturn this component as a jCal JSON string.

Returns:
    JSON string

See also :attr:`to_jcal`.
)ÚjsonÚdumpsr‡  r�   s   &rA   Úto_jsonÚComponent.to_jsonÌ  s   € ô �zŠz˜$Ÿ,™,›.Ó)Ð)r@   c               ó    € V ^8„  d   QhRRRR/# )rO   Újcalz
str | listrP   r1   r8   )rQ   s   "rA   rR   rS   ×  s   € ÷ Cñ C˜Zð C¨Iñ Cr@   c           	     óð  € \        V\        4      '       d   \        P                  ! V4      p\	        W4      w  r#W#. 3.pV'       d�   VP                  4       w  rVp\        V4       Fx  w  r‰. VO^NVNp
\        P                  ! V
!  ;_uu_ 4        \	        V	\        V4      4      w  r¼RRR4       VP                  P                  X4       VP                  VXV
34       Kz  	  K¤  V#   + '       g   i     LG; i)aò  Create a component from a jCal list.

Parameters:
    jcal: jCal list or JSON string according to :rfc:`7265`.

Raises:
    ~error.JCalParsingError: If the jCal provided is invalid.
    ~json.JSONDecodeError: If the provided string is not valid JSON.

This reverses :func:`to_json` and :func:`to_jcal`.

The following code parses an example from :rfc:`7265`:

.. code-block:: pycon

    >>> from icalendar import Component
    >>> jcal = ["vcalendar",
    ...   [
    ...     ["calscale", {}, "text", "GREGORIAN"],
    ...     ["prodid", {}, "text", "-//Example Inc.//Example Calendar//EN"],
    ...     ["version", {}, "text", "2.0"]
    ...   ],
    ...   [
    ...     ["vevent",
    ...       [
    ...         ["dtstamp", {}, "date-time", "2008-02-05T19:12:24Z"],
    ...         ["dtstart", {}, "date", "2008-10-06"],
    ...         ["summary", {}, "text", "Planning meeting"],
    ...         ["uid", {}, "text", "4088E990AD89CB3DBB484909"]
    ...       ],
    ...       []
    ...     ]
    ...   ]
    ... ]
    >>> calendar = Component.from_jcal(jcal)
    >>> print(calendar.name)
    VCALENDAR
    >>> print(calendar.prodid)
    -//Example Inc.//Example Calendar//EN
    >>> event = calendar.events[0]
    >>> print(event.summary)
    Planning meeting

N)rw   rY   r‘  ÚloadsÚ_node_from_jcalrÚ   Ú	enumerater   Úreraise_with_path_addedr?  rM   r¶   )rU   r–  ÚrootÚroot_subcomponentsrÞ   ÚparentrM   ÚprefixÚir  Úchild_prefixÚchildÚchild_subcomponentss   &&           rA   Ú	from_jcalÚComponent.from_jcalÖ  sÜ   € ô\ �dœC× Ò Ü—:’:˜dÓ#ˆDô $3°4Ó#=Ñ ˆØ6:ÐPRÐ5SÐ4TˆßØ,1¯I©I«KÑ)ˆF 6Ü#,¨]Ö#;‘�Ø. ˜¨˜¨A˜�ô &×=Ò=¸|×LÓLÜ1@Ø$¤d¨6£ló2Ñ.�E÷ Mð ×$Ñ$×+Ñ+¨EÔ2Ø—‘˜eÐ%8¸,ÐGÖHó $<ð ˆ÷ M×Lús   ÂC%Ã%C5c               ó    € V ^8„  d   QhRRRR/# )rO   rô   r‹   rP   r.   r8   )rQ   s   "rA   rR   rS     s   € ÷ 3ñ 3˜dð 3¨tñ 3r@   c                óF   <€ V'       d   \        V 4      # \        SV `	  4       # )aÑ  Copy the component.

Parameters:
    recursive:
        If ``True``, this creates copies of the component, its subcomponents,
        and all its properties.
        If ``False``, this only creates a shallow copy of the component.

Returns:
    A copy of the component.

Examples:

    Create a shallow copy of a component:

    .. code-block:: pycon

        >>> from icalendar import Event
        >>> event = Event.new(description="Event to be copied")
        >>> event_copy = event.copy()
        >>> str(event_copy.description)
        'Event to be copied'

    Shallow copies lose their subcomponents:

    .. code-block:: pycon

        >>> from icalendar import Calendar
        >>> calendar = Calendar.example()
        >>> len(calendar.subcomponents)
        3
        >>> calendar_copy = calendar.copy()
        >>> len(calendar_copy.subcomponents)
        0

    A recursive copy also copies all the subcomponents:

    .. code-block:: pycon

        >>> full_calendar_copy = calendar.copy(recursive=True)
        >>> len(full_calendar_copy.subcomponents)
        3
        >>> full_calendar_copy.events[0] == calendar.events[0]
        True
        >>> full_calendar_copy.events[0] is calendar.events[0]
        False

)r   rƒ   Úcopy)r†   rô   r‡   s   &&€rA   r¨  ÚComponent.copy  s   ø€ ÷b Ü˜D“>Ð!Ü‰w‰|‹~Ðr@   c               ó   € V ^8„  d   QhRR/# rŠ   r8   )rQ   s   "rA   rR   rS   Q  s   € ÷ ñ ˜ñ r@   c                ó   € R# )zThis component is fully parsed.Fr8   r�   s   &rA   Úis_lazyÚComponent.is_lazyQ  s   € ár@   c               ó   € V ^8„  d   QhRR/# )rO   rP   r.   r8   )rQ   s   "rA   rR   rS   U  s   € ÷ ñ �tñ r@   c                ó   € V # )z—Return the fully parsed component.

For non-lazy components, this returns self.
For lazy components, this parses the component and returns the result.
r8   r�   s   &rA   r  ÚComponent.parseU  s	   € ð ˆr@   )r_  rV  r…   rM   r8   ro   )Né   )NT)r±  )TT)F)z[...]râ   )	NNNNNNNNN)Tr9   r:   r;   r<   r=   rC   r>   rD   rE   rF   rG   rH   rI   r&   ÚinstancerJ   rK   ÚclassmethodrV   r\   rh   Ústaticmethodr}   r„   rŽ   r’   rd   r�   r«   r¹   rÀ   rÄ   r¿   rË   rÏ   rÔ   rß   ré   rñ   r  r   r¾   r  r  r+  r2  rú   rH  rO  r   rR  r~  rV  ÚpropertyrW  ÚsetterÚdeleterr°   rk  rq  r   rì   r   ry  r   r{  r   r}  r   rz  r   r|  r_  Ú_validate_newrv  r€  r‡  r“  r¤  r¨  r¬  r  r?   Ú__classcell__)r‡   s   @rA   r1   r1   C   sm  ø‡ ñð "&€DÐ
Ó%ðð %'€HÐ!Ó&Ø(à&(€JÐ#Ó(Ø1à$&€HÐ!Ó&Ø4à%'€IÐ"Ó'Ø2àAC€IÐ>ÓCð
ð ).Ð�~Ó-ðð -9×,AÒ,AÓ,C€MÐ)ÓCØ=AÐÐ:ÓAà"Ó"Ø.àô'ó ð'ð ôFó ðFð ô#?ó ð#?ðJ ôó ð÷Bð õ÷(ð (÷õBð ó4ó ð4÷lHõTð( 18÷ ô&ôBõ-õð  Ù.<÷(õ$	8÷)ðV Øöó ó ðð ØÜXó ó àXàôXó ðXð ö4ó ð4ðl ó3ó ð3÷J÷
÷'õ+õZ6ñp *Øð	óð €Gˆeñ: (Øð	ó€Mð4 ô2ó ð2ð ×Ññ#ó ð#ð ×Ññó ðð ô,ó ð,ð ‡^�^ñó ðð ‡_�_ñó ðõFð ô*ó ð*ð €CØ €HØ€EØ$€JØ €HØ€Fá!Øð	ó€Gð6 €Màñ	=ó ð	=ð ö.ó ð.õ`-õ^*ð ôCó ðC÷J3ò 3õj÷ó r@   r1   c               ó    € V ^8„  d   QhRRRR/# )rO   Ústarting_clsrZ   rP   ztuple[Component, list]r8   )rQ   s   "rA   rR   rR   ^  s   € ÷ L$ñ L$¨ð L$Ð<Rñ L$r@   c                ó>  € \        V \        4      '       d   \        V 4      ^8w  d   \        RWR7      hV w  r#p\        V\        4      '       g   \        RV^ .VR7      hVP                  4       VP                  8w  d!   VP                  VP                  4       4      pMTpV! 4       p\        V\        4      '       g   \        RV^VR7      h\        V4       EF  w  rx\        P                  ! W…^V.R7       V^ ,          p	V^,          p
VP                  P                  Wš4      p\        P                  ! ^V4      ;_uu_ 4        VP                  V4      pRRR4       VP                  P                  V	4      p\        V
\        4      '       d.   V
P                  4       RV39  d   V
P                  4       Xn        MR	XP"                  9   d   V=VP%                  Wœ4       EK  	  \        V\        4      '       g   \        R
V^VR7      hWd3#   + '       g   i     L¿; i)a9  Parse a single jCal component without recursing into subcomponents.

Module-level helper for :meth:`Component.from_jcal`: it has no ties to a
class or instance (the relevant class is passed in as ``starting_cls``), so
it is a plain function rather than a (static) method.

Parameters:
    jcal: The jCal list for one component.
    starting_cls: The class used as the parser for structural validation
        before the component type is resolved from its name (the entry
        class for the root, the parent's resolved class for a child).

Returns:
    A ``(component, raw_subcomponents)`` tuple. The raw subcomponents are
    returned for the caller to walk iteratively.

Raises:
    ~error.JCalParsingError: If this component node is invalid. The path
        is relative to this node; callers prepend the nesting path.
z(A component must be a list with 3 items.r|   zThe name must be a string.)Úpathrk   zThe properties must be a list.)r½  NÚunknownr    z!The subcomponents must be a list.)rw   rz   r  r   rY   rè   rC   r\   rš  Úvalidate_propertyrJ   r£   r›  r¤  Údefault_value_typer´   r    r¡   r¹   )r–  r»  rC   rˆ  rM   Úcomponent_clsrÒ   r   ÚpropÚ	prop_nameÚ
prop_valueÚprop_clsÚv_propÚdefault_types   &&            rA   r™  r™  ^  sä  € ô* �dœD×!Ò!¤S¨£Y°!¤^ÜØ6¸ô
ð 	
ð '+Ñ#€D�mÜ�dœC× Ò ÜØ(¨,¸a¸SÈô
ð 	
ð ‡z�zƒ|�|×(Ñ(Ô(à$×8Ñ8¸¿¹»ÓF‰à$ˆÙ“€IÜ�j¤$×'Ò'ÜØ,ØØØô	
ð 	
ô ˜Z×(‰ˆÜ×*Ò*¨4ÀaÈÀVÕLØ˜•Gˆ	Ø˜!•Wˆ
Ø$1×$?Ñ$?×$LÑ$LØó%
ˆô ×5Ò5°a¸×;Õ;Ø×'Ñ'¨Ó-ˆF÷ <ð %×2Ñ2×EÑEÀiÓPˆÜ�j¤#×&Ò&¨:×+;Ñ+;Ó+=ØØðF
ô ,
ð &×+Ñ+Ó-ˆF�LØ˜Ÿ™Ô%Ø�Ø�‰�i×(ñ3 )ô4 �m¤T×*Ò*ÜØ/ØØØô	
ð 	
ð Ð#Ð#÷5 <×;ús   ÅHÈH)Dr=   Ú
__future__r   r‘  r¨  r   Údataclassesr   r   r   r   r   r	   Úpathlibr
   Útypingr   r   r   r   r   Úicalendar.attrr   r   r   r   r   r   r   r   r   r   Úicalendar.cal.component_factoryr   Úicalendar.caselessdictr   Úicalendar.errorr   r   Úicalendar.parserr   r   r    r!   r"   Úicalendar.parser.ical.componentr#   Úicalendar.parser_toolsr$   Úicalendar.propr%   r&   r'   r(   r)   Úicalendar.timezoner*   Úicalendar.toolsr,   Úcollections.abcr-   Úicalendar.compatibilityr.   rÄ   r0   r1   r™  Ú__all__r8   r@   rA   Ú<module>rÙ     s¢   ðÙ *å "ã Ý Ý !ß >Õ >Ý ß BÕ B÷÷ ÷ õ =Ý /ß =÷õ õ @Ý 3ß NÕ NÝ "Ý #çÝ(å,à
€ð ÷ð ó ðô$X�ô Xõv L$ð^ ˆ-‚r@   