+
    ¾¾j‚t ã                  óD	  a € 0 t $ R t^ RIHt ^ RIt^ RIHtHtHt ^ RIH	t	H
t
Ht ^ RIHtHtHtHtHt ^ RIHtHt ^ RI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' ^ RI(H)t) ]	'       d   ^ RI*H+t+H,t, ^ RI-H.t. R R lt/R R lt0R R lt1]2! ]/]0]14      t3R R lt4R R lt5R R lt6]2! ]4]5]64      t7R R lt8]2! ]84      t9R R lt:RR/R  R! llt;R" R# lt<RæR% R& llt=]=! R'R(4      t>];! R)^ R*^ R+7      t?R, R- lt@R. R/ ltAR0 R1 ltB]2! ]@]A]BR24      tCR3 R4 ltDR5 R6 ltER7 R8 ltF]2! ]D]E]FR94      tG]=! R:R;4      tH]:! R<RR=4      tI]:! R>RR?4      tJ]R3R@ RA lltK]<! RBRC4      tL]<! RDRE4      tMRF RG ltNRH RI ltORJ RK ltPRLtQRM RN ltRRO RP ltS]S! R>RQ4      tT]S! RRRS4      tU]K! RTRU]]3]],          RV]4      tVRW RX ltWRY RZ ltXR[ R\ ltY]2! ]W]X]Y4      tZR] R^ lt[][! R_]]P¸                  R`4      t]Ra Rb lt^]^! 4       t_];! Rc^ Rd^ R+7      t`][! Re]]PÂ                  Rf4      tb][! Rg]]PÆ                  Rh4      td][! Ri]R$Rj4      te]=! RkRl4      tf]=! RmRn4      tg]:! RoRRp4      th]S! RqRr4      tiRs Rt ltj]j! RuRv4      tk]j! RwRx4      tl]2Ry Rz l4       tm]2R{ R| l4       tn]nPÞ                  R} R~ l4       tn]nPà                  R 4       tnR€ R� ltqR‚ Rƒ ltrR„ R… ltsR† R‡ lttRˆ R‰ ltuRŠ R‹ ltvRŒ R� ltwRŽ R� ltx]2! ]x4      tyR� R‘ ltzR’ R“ lt{R” R• lt|]2! ]z]{]|4      t}R– R— lt~]] ,          ],          ]!,          R,          ]€]] ,          ],          ]!,          ,          ,          t�R˜]‚R™&   Rš R› ltƒRœ R� lt„]2! ]~]ƒ]„4      t…R],          ],          ] ,          ],          ]€]],          ] ,          ],          ,          ,          t†R˜]‚Rž&   RŸ R  lt‡R¡ R¢ ltˆR£ R¤ lt‰]2! ]‡]ˆ]‰4      tŠR¥ R¦ lt‹]€] ],          ,          ],          ] ,          R,          tŒR˜]‚R§&   R¨ R© lt�Rª R« ltŽ]2! ]‹]�]Ž4      t�R¬ R­ lt�]�! R®R¯4      t‘]�! R°R±4      t’. R§NR™NR²NRžNR³NR´NRµNR¶NR·NR¸NR¹NRºNR»NR¼NR½NR¾NR¿NRÀNRÁNRÂNRÃNRÄNRÅNRÆNRÇNRÈNRÉNRÊNRËNRÌNRÍNRÎNRÏNRÐNRÑNRÒNRÓNRÔNRÕNRÖNR×NRØNRÙNRÚNRÛNRÜNRÝNRÞNRßNRàNRáNRâNRãNRäNRåNt“R# )çz(Attributes of Components and properties.)ÚannotationsN)ÚdateÚdatetimeÚ	timedelta)ÚTYPE_CHECKINGÚLiteralÚ	TypeAlias)ÚBUSYTYPEÚCLASSÚSTATUSÚTRANSPÚStrEnum)ÚIncompleteComponentÚInvalidCalendar)ÚSEQUENCE_TYPES)
ÚvCalAddressÚ	vCategoryÚ	vDDDTypesÚ	vDurationÚvRecurÚvTextÚvUidÚvUnknownÚvUriÚvXmlReference)Ú
Conference)ÚImage)Útzp)Úis_date)ÚCallableÚSequence)Ú	Componentc               ó    € V ^8„  d   QhRRRR/# )é   Úselfr!   ÚreturnzKlist[tuple[date, None] | tuple[datetime, None] | tuple[datetime, datetime]]© )Úformats   "ÚM/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/attr.pyÚ__annotate__r)   #   s    € ÷ ]ñ ]Ø
ð]àPñ]ó    c                óÄ  € . pV P                  R. 4      p\        V\        4      '       g   V3MT F¬  pVP                   F™  pVP                  p\        V\
        4      '       db   \        V^,          \        4      '       d2   VP                  V^ ,          V^ ,          V^,          ,           34       Ks  VP                  V4       K†  VP                  VR34       K›  	  K®  	  V# )ac  The RDATE property defines the list of DATE-TIME values for recurring components.

RDATE is defined in :rfc:`5545`.
The return value is a list of tuples ``(start, end)``.

``start`` can be a :class:`datetime.date` or a :class:`datetime.datetime`,
with and without timezone.

``end`` is :obj:`None` if the end is not specified and a :class:`datetime.datetime`
if the end is specified.

Value Type:
    The default value type for this property is DATE-TIME.
    The value type can be set to DATE or PERIOD.

Property Parameters:
    IANA, non-standard, value data type, and time
    zone identifier property parameters can be specified on this
    property.

Conformance:
    This property can be specified in recurring "VEVENT",
    "VTODO", and "VJOURNAL" calendar components as well as in the
    "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE"
    calendar component.

Description:
    This property can appear along with the "RRULE"
    property to define an aggregate set of repeating occurrences.
    When they both appear in a recurring component, the recurrence
    instances are defined by the union of occurrences defined by both
    the "RDATE" and "RRULE".

    The recurrence dates, if specified, are used in computing the
    recurrence set.  The recurrence set is the complete set of
    recurrence instances for a calendar component.  The recurrence set
    is generated by considering the initial "DTSTART" property along
    with the "RRULE", "RDATE", and "EXDATE" properties contained
    within the recurring component.  The "DTSTART" property defines
    the first instance in the recurrence set.  The "DTSTART" property
    value SHOULD match the pattern of the recurrence rule, if
    specified.  The recurrence set generated with a "DTSTART" property
    value that doesn't match the pattern of the rule is undefined.
    The final recurrence set is generated by gathering all of the
    start DATE-TIME values generated by any of the specified "RRULE"
    and "RDATE" properties, and then excluding any start DATE-TIME
    values specified by "EXDATE" properties.  This implies that start
    DATE-TIME values specified by "EXDATE" properties take precedence
    over those specified by inclusion properties (i.e., "RDATE" and
    "RRULE").  Where duplicate instances are generated by the "RRULE"
    and "RDATE" properties, only one recurrence is considered.
    Duplicate instances are ignored.

Example:
    Below, we set one RDATE in a list and get the resulting tuple of start and end.

    .. code-block:: pycon

        >>> from icalendar import Event
        >>> from datetime import datetime
        >>> event = Event()

        # Add a list of recurrence dates
        >>> event.add("RDATE", [datetime(2025, 4, 28, 16, 5)])
        >>> event.rdates
        [(datetime.datetime(2025, 4, 28, 16, 5), None)]

.. note::

    Modifying the returned list does not change the RDATE value. Assign to
    :attr:`rdates` or use :func:`icalendar.cal.Component.add` instead.

    If you want to compute recurrences, have a look at
    `Related Projects <https://github.com/collective/icalendar/blob/main/README.rst#related-projects>`_.

ÚRDATEN)ÚgetÚ
isinstanceÚlistÚdtsÚdtÚtupler   Úappend)r$   ÚresultÚrdatesr0   Úrdates   &    r(   Ú_get_rdatesr7   #   s´   € ð^ €FØ�X‰X�g˜rÓ"€FÜ#-¨f´d×#;Ò#;�6‘)ÀÒGˆØ—:”:ˆCØ—F‘FˆEÜ˜%¤×'Ò'ä˜e A�h¬	×2Ò2Ø—M‘M 5¨¥8¨U°1­X¸¸a½Õ-@Ð"AÖBà—M‘M %Ö(ð —‘˜u d˜mÖ,ó ñ Hð €Mr*   c               ó    € V ^8„  d   QhRRRR/# ©r#   r$   r!   r%   ÚNoner&   )r'   s   "r(   r)   r)   ƒ   s   € ÷ 	!ñ 	!�ið 	!¨4ñ 	!r*   c                óT   € \        V 4       V'       d   V P                  RV4       R# R# )zëSet the RDATE values, replacing any existing ones.

``value`` is a list as returned by :attr:`rdates` (each item a date, a
datetime, or a ``(start, end)`` period tuple). Setting an empty list or
:obj:`None` removes the RDATE property.
r,   N)Ú_del_rdatesÚadd©r$   Úvalues   &&r(   Ú_set_rdatesr@   ƒ   s"   € ô �ÔßØ�‰�˜%Ö ñ r*   c               ó    € V ^8„  d   QhRRRR/# r9   r&   )r'   s   "r(   r)   r)   �   s   € ÷ ñ �ið  Dñ r*   c                ó*   € V P                  RR4       R# )zDelete all RDATE values.r,   N©Úpop©r$   s   &r(   r<   r<   �   s   € à‡H�HˆW�dÖr*   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   zlist[date | datetime]r&   )r'   s   "r(   r)   r)   —   s   € ÷ Mñ M�yð MÐ%:ñ Mr*   c                óÒ   € . pV P                  R. 4      p\        V\        4      '       g   V3MT F3  pVP                   F   pVP                  pVP                  V4       K"  	  K5  	  V# )ak  EXDATE defines the list of DATE-TIME exceptions for recurring components.

EXDATE is defined in :rfc:`5545`.

Value Type:
    The default value type for this property is DATE-TIME.
    The value type can be set to DATE.

Property Parameters:
    IANA, non-standard, value data type, and time
    zone identifier property parameters can be specified on this
    property.

Conformance:
    This property can be specified in recurring "VEVENT",
    "VTODO", and "VJOURNAL" calendar components as well as in the
    "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE"
    calendar component.

Description:
    The exception dates, if specified, are used in
    computing the recurrence set.  The recurrence set is the complete
    set of recurrence instances for a calendar component.  The
    recurrence set is generated by considering the initial "DTSTART"
    property along with the "RRULE", "RDATE", and "EXDATE" properties
    contained within the recurring component.  The "DTSTART" property
    defines the first instance in the recurrence set.  The "DTSTART"
    property value SHOULD match the pattern of the recurrence rule, if
    specified.  The recurrence set generated with a "DTSTART" property
    value that doesn't match the pattern of the rule is undefined.
    The final recurrence set is generated by gathering all of the
    start DATE-TIME values generated by any of the specified "RRULE"
    and "RDATE" properties, and then excluding any start DATE-TIME
    values specified by "EXDATE" properties.  This implies that start
    DATE-TIME values specified by "EXDATE" properties take precedence
    over those specified by inclusion properties (i.e., "RDATE" and
    "RRULE").  When duplicate instances are generated by the "RRULE"
    and "RDATE" properties, only one recurrence is considered.
    Duplicate instances are ignored.

    The "EXDATE" property can be used to exclude the value specified
    in "DTSTART".  However, in such cases, the original "DTSTART" date
    MUST still be maintained by the calendaring and scheduling system
    because the original "DTSTART" value has inherent usage
    dependencies by other properties such as the "RECURRENCE-ID".

Example:
    Below, we add an exdate in a list and get the resulting list of exdates.

    .. code-block:: pycon

        >>> from icalendar import Event
        >>> from datetime import datetime
        >>> event = Event()

        # Add a list of excluded dates
        >>> event.add("EXDATE", [datetime(2025, 4, 28, 16, 5)])
        >>> event.exdates
        [datetime.datetime(2025, 4, 28, 16, 5)]

.. note::

    Modifying the returned list does not change the EXDATE value. Assign to
    :attr:`exdates` or use :func:`icalendar.cal.Component.add` instead.

    If you want to compute recurrences, have a look at
    `Related Projects <https://github.com/collective/icalendar/blob/main/README.rst#related-projects>`_.

ÚEXDATE)r-   r.   r/   r0   r1   r3   )r$   r4   Úexdatesr0   Úexdates   &    r(   Ú_get_exdatesrK   —   sb   € ðL €FØ�h‰h�x Ó$€GÜ%/°¼×%>Ò%>�G‘:ÀGÒKˆØ—;”;ˆCØ—V‘VˆFà�M‰M˜&Ö!ó ñ Lð
 €Mr*   c               ó    € V ^8„  d   QhRRRR/# r9   r&   )r'   s   "r(   r)   r)   ç   s   € ÷ "ñ "�yð "¨Dñ "r*   c                óT   € \        V 4       V'       d   V P                  RV4       R# R# )zÌSet the EXDATE values, replacing any existing ones.

``value`` is a list as returned by :attr:`exdates` (each item a date or a
datetime). Setting an empty list or :obj:`None` removes the EXDATE property.
rH   N)Ú_del_exdatesr=   r>   s   &&r(   Ú_set_exdatesrO   ç   s"   € ô �ÔßØ�‰�˜5Ö!ñ r*   c               ó    € V ^8„  d   QhRRRR/# r9   r&   )r'   s   "r(   r)   r)   ò   s   € ÷ ñ �yð  Tñ r*   c                ó*   € V P                  RR4       R# )zDelete all EXDATE values.rH   NrC   rE   s   &r(   rN   rN   ò   s   € à‡H�HˆX�tÖr*   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   zlist[vRecur]r&   )r'   s   "r(   r)   r)   ú   s   € ÷ mñ m�ið m Lñ mr*   c                ó\   € V P                  R. 4      p\        V\        4      '       g   V.# V# )a¡  RRULE defines a rule or repeating pattern for recurring components.

RRULE is defined in :rfc:`5545`.
:rfc:`7529` adds the ``SKIP`` parameter :class:`icalendar.prop.vSkip`.

Property Parameters:
    IANA and non-standard property parameters can
    be specified on this property.

Conformance:
    This property can be specified in recurring "VEVENT",
    "VTODO", and "VJOURNAL" calendar components as well as in the
    "STANDARD" and "DAYLIGHT" sub-components of the "VTIMEZONE"
    calendar component, but it SHOULD NOT be specified more than once.
    The recurrence set generated with multiple "RRULE" properties is
    undefined.

Description:
    The recurrence rule, if specified, is used in computing
    the recurrence set.  The recurrence set is the complete set of
    recurrence instances for a calendar component.  The recurrence set
    is generated by considering the initial "DTSTART" property along
    with the "RRULE", "RDATE", and "EXDATE" properties contained
    within the recurring component.  The "DTSTART" property defines
    the first instance in the recurrence set.  The "DTSTART" property
    value SHOULD be synchronized with the recurrence rule, if
    specified.  The recurrence set generated with a "DTSTART" property
    value not synchronized with the recurrence rule is undefined.  The
    final recurrence set is generated by gathering all of the start
    DATE-TIME values generated by any of the specified "RRULE" and
    "RDATE" properties, and then excluding any start DATE-TIME values
    specified by "EXDATE" properties.  This implies that start DATE-
    TIME values specified by "EXDATE" properties take precedence over
    those specified by inclusion properties (i.e., "RDATE" and
    "RRULE").  Where duplicate instances are generated by the "RRULE"
    and "RDATE" properties, only one recurrence is considered.
    Duplicate instances are ignored.

    The "DTSTART" property specified within the iCalendar object
    defines the first instance of the recurrence.  In most cases, a
    "DTSTART" property of DATE-TIME value type used with a recurrence
    rule, should be specified as a date with local time and time zone
    reference to make sure all the recurrence instances start at the
    same local time regardless of time zone changes.

    If the duration of the recurring component is specified with the
    "DTEND" or "DUE" property, then the same exact duration will apply
    to all the members of the generated recurrence set.  Else, if the
    duration of the recurring component is specified with the
    "DURATION" property, then the same nominal duration will apply to
    all the members of the generated recurrence set and the exact
    duration of each recurrence instance will depend on its specific
    start time.  For example, recurrence instances of a nominal
    duration of one day will have an exact duration of more or less
    than 24 hours on a day where a time zone shift occurs.  The
    duration of a specific recurrence may be modified in an exception
    component or simply by using an "RDATE" property of PERIOD value
    type.

Examples:
    Daily for 10 occurrences:

    .. code-block:: pycon

        >>> from icalendar import Event
        >>> from datetime import datetime
        >>> from zoneinfo import ZoneInfo
        >>> event = Event()
        >>> event.start = datetime(1997, 9, 2, 9, 0, tzinfo=ZoneInfo("America/New_York"))
        >>> event.add("RRULE", "FREQ=DAILY;COUNT=10")
        >>> print(event.to_ical())
        BEGIN:VEVENT
        DTSTART;TZID=America/New_York:19970902T090000
        RRULE:FREQ=DAILY;COUNT=10
        END:VEVENT
        >>> event.rrules
        [vRecur({'FREQ': ['DAILY'], 'COUNT': [10]})]

    Daily until December 24, 1997:

    .. code-block:: pycon

        >>> from icalendar import Event, vRecur
        >>> from datetime import datetime
        >>> from zoneinfo import ZoneInfo
        >>> event = Event()
        >>> event.start = datetime(1997, 9, 2, 9, 0, tzinfo=ZoneInfo("America/New_York"))
        >>> event.add("RRULE", vRecur({"FREQ": ["DAILY"]}, until=datetime(1997, 12, 24, tzinfo=ZoneInfo("UTC"))))
        >>> print(event.to_ical())
        BEGIN:VEVENT
        DTSTART;TZID=America/New_York:19970902T090000
        RRULE:FREQ=DAILY;UNTIL=19971224T000000Z
        END:VEVENT
        >>> event.rrules
        [vRecur({'FREQ': ['DAILY'], 'UNTIL': [datetime.datetime(1997, 12, 24, 0, 0, tzinfo=ZoneInfo(key='UTC'))]})]

.. note::

    You cannot modify the RRULE value by modifying the result.
    Use :func:`icalendar.cal.Component.add` to add values.

    If you want to compute recurrences, have a look at
    `Related Projects <https://github.com/collective/icalendar/blob/main/README.rst#related-projects>`_.

ÚRRULE©r-   r.   r/   )r$   Úrruless   & r(   Ú_get_rrulesrW   ú   s.   € ðT �X‰X�g˜rÓ"€FÜ�fœd×#Ò#ØˆxˆØ€Mr*   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r#   Ú	main_propÚstrÚcompatibility_propú
str | NoneÚdocr%   Úpropertyr&   )r'   s   "r(   r)   r)   m  s,   € ÷ &+ñ &+Øð&+Ø(2ð&+Ø9<ð&+àñ&+r*   c                ó`   a aa€ R VV 3R llpR VVV 3R llpR VV 3R llo\        W4SV4      # )a>  This creates a text property.

This property can be defined several times with different ``LANGUAGE`` parameters.

Parameters:
    main_prop (str): The property to set and get, such as ``NAME``
    compatibility_prop (str): An old property used before, such as ``X-WR-CALNAME``
    doc (str): The documentation string
c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   r\   r&   )r'   s   "r(   r)   Ú2multi_language_text_property.<locals>.__annotate__z  s   € ÷ 	ñ 	�9ð 	 ñ 	r*   c                óÄ   <€ V P                  S4      pVf   Se   V P                  S4      p\        V\        4      '       d   V F  pRVP                  9  g   K  Vu # 	  V# )úGet the propertyÚLANGUAGE)r-   r.   r/   Úparams)r$   r4   Úitemr[   rY   s   &  €€r(   ÚfgetÚ*multi_language_text_property.<locals>.fgetz  sZ   ø€ à—‘˜)Ó$ˆØŠ>Ð0Ò<Ø—X‘XÐ0Ó1ˆFÜ�fœd×#Ò#Û�Ø T§[¡[Ö0Ø’Kñ ð ˆr*   c               ó    € V ^8„  d   QhRRRR/# ©r#   r$   r!   r?   r\   r&   )r'   s   "r(   r)   ra   …  s   € ÷ 4ñ 4�9ð 4 Zñ 4r*   c                óx   <€ S! V 4       Ve-   V P                  SV4       Se   V P                  SV4       R# R# R# )úSet the property.N©r=   )r$   r?   r[   ÚfdelrY   s   &&€€€r(   ÚfsetÚ*multi_language_text_property.<locals>.fset…  s=   ø€ áˆTŒ
ØÒØ�H‰H�Y Ô&Ø!Ò-Ø—‘Ð+¨UÖ3ñ .ñ r*   c               ó   € V ^8„  d   QhRR/# ©r#   r$   r!   r&   )r'   s   "r(   r)   ra   �  s   € ÷ /ñ /�9ñ /r*   c                ó\   <€ V P                  SR4       Se   V P                  SR4       R# R# ©zDelete the property.NrC   )r$   r[   rY   s   &€€r(   rn   Ú*multi_language_text_property.<locals>.fdel�  s+   ø€ à�‰�˜DÔ!ØÒ)Ø�H‰HÐ'¨Ö.ñ *r*   ©r^   )rY   r[   r]   rg   ro   rn   s   ff&  @r(   Úmulti_language_text_propertyrw   m  s2   ú€ ÷	ñ 	÷4ò 4÷/ñ /ô �D  cÓ*Ð*r*   Ú	min_valuec          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r#   ÚproprZ   ÚdefaultÚintr]   rx   ú
int | Noner%   r^   r&   )r'   s   "r(   r)   r)   –  s4   € ÷ %+ñ %+Ø
ð%+Øð%+Ø"%ð%+Ø5?ð%+àñ%+r*   c               ó`   a aaa€ R VV 3R llpR VVV 3R llpR V 3R llo\        WESV4      # )a]  Create a property for an int value that exists only once.

Parameters:
    default: Required. The default value.
    doc: Required. The documentation string.
    prop: Required. The name of the property.
    min_value: If set, the value must be greater than or equal to this minimum.

..  versionadded:: 7.2.3
    Added the ``min_value`` parameter.
c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   r|   r&   )r'   s   "r(   r)   Ú)single_int_property.<locals>.__annotate__¥  s   € ÷ Cñ C�9ð C ñ Cr*   c                ó€   <€  \        V P                  SS4      4      #   \         d   p\        S R24      ThRp?ii ; i)rc   z must be an intN)r|   r-   Ú
ValueErrorr   )r$   Úer{   rz   s   & €€r(   rg   Ú!single_int_property.<locals>.fget¥  sE   ø€ ð	CÜ�t—x‘x  gÓ.Ó/Ð/øÜô 	CÜ! T F¨/Ð":Ó;ÀÐBûð	Cús   ƒ ž=©8¸=c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r?   r}   r&   )r'   s   "r(   r)   r€   ¬  s   € ÷ 	"ñ 	"�9ð 	" Zñ 	"r*   c                ó  <€ Ve\   \        V\        4      '       d   \        V\        4      '       d   \        S RV: 24      hSe   VS8  d   \	        S RS RV 24      hS! V 4       Ve   V P                  SV4       R# R# )rl   Nz must be an int, got z must be >= z, got )r.   r|   ÚboolÚ	TypeErrorr   r=   )r$   r?   rn   rx   rz   s   &&€€€r(   ro   Ú!single_int_property.<locals>.fset¬  s‚   ø€ àÒÜ˜e¤S×)Ò)¬Z¸¼t×-DÒ-DÜ 4 &Ð(=¸e¹YÐ GÓHÐHØÒ$¨°Ô):Ü%¨¨¨l¸9¸+ÀVÈEÈ7Ð&SÓTÐTÙˆTŒ
ØÒØ�H‰H�T˜5Ö!ñ r*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   r€   ·  ó   € ÷ ñ �9ñ r*   c                ó,   <€ V P                  SR4       R# rt   rC   ©r$   rz   s   &€r(   rn   Ú!single_int_property.<locals>.fdel·  ó   ø€ à�‰��tÖr*   rv   )rz   r{   r]   rx   rg   ro   rn   s   ff&d  @r(   Úsingle_int_propertyr�   –  s4   û€ ÷Cñ C÷	"ò 	"÷ð ô �D  cÓ*Ð*r*   c               ó$   € V ^8„  d   QhRRRRRR/# ©r#   ÚnamerZ   Údocsr%   r^   r&   )r'   s   "r(   r)   r)   ¾  s!   € ÷ +0ñ +0˜cð +0¨ð +0°ñ +0r*   c                ót   a a€ RS  R2V,           pR V 3R llpR VV 3R llpR V 3R llo\        W#SVR	7      # )
zŒCreate a property to access a value of datetime in UTC timezone.

Parameters:
    name: name of the property
    docs: documentation string
úThe zV property with all values converted to a
    :class:`~datetime.datetime` in UTC.

    c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   údatetime | Noner&   )r'   s   "r(   r)   Ú)single_utc_property.<locals>.__annotate__Í  s   € ÷ 'ñ '�9ð ' ñ 'r*   c                ó8  <€ SV 9  d   R# V P                  S4      p\        V\        \        34      '       d   \        P
                  ! V4      pM\        VRV4      pVe   \        V\        4      '       g   \        S RV 24      h\        P                  ! V4      # )úGet the value.Nr1   z  must be a datetime in UTC, not )r-   r.   r   r   r   Ú	from_icalÚgetattrr   r   r   Úlocalize_utc)r$   r1   r?   r“   s   &  €r(   rg   Ú!single_utc_property.<locals>.fgetÍ  s„   ø€ à�tÔÙØ�X‰X�d‹^ˆÜ�bœ5¤(Ð+×,Ò,ä×'Ò'¨Ó+‰Eä˜B  bÓ)ˆEØŠ=¤
¨5´$× 7Ò 7Ü! T FÐ*JÈ5È'Ð"RÓSÐSÜ×Ò Ó&Ð&r*   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r?   r˜   r&   )r'   s   "r(   r)   r™   Û  s   € ÷ 0ñ 0�9ð 0 _ñ 0r*   c                óÌ   <€ Vf   S! V 4       R# \        V\        4      '       g   \        S RV 24      hS! V 4       V P                  S\        P
                  ! V4      4       R# )zSet the valueNz takes a datetime in UTC, not )r.   r   rˆ   r=   r   rž   ©r$   r?   rn   r“   s   &&€€r(   ro   Ú!single_utc_property.<locals>.fsetÛ  sV   ø€ àŠ=Ù�ŒJÙÜ˜%¤×&Ò&Ü˜t˜fÐ$BÀ5À'ÐJÓKÐKÙˆTŒ
Ø�‰�”s×'Ò'¨Ó.Ö/r*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   r™   å  r‹   r*   c                ó,   <€ V P                  SR4       R# rt   rC   ©r$   r“   s   &€r(   rn   Ú!single_utc_property.<locals>.fdelå  r�   r*   ©r]   rv   ©r“   r”   rg   ro   rn   s   f&  @r(   Úsingle_utc_propertyrª   ¾  sT   ù€ ð ��ð ð 	ð õ		ð 	÷'ð '÷0ñ 0÷ð ô �D ¨$Ô/Ð/r*   Ú c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r#   r“   rZ   r”   Ú
other_namezstr | list[str] | Noner{   r%   r^   r&   )r'   s   "r(   r)   r)   ì  s4   € ÷ )0ñ )0Ø
ð)0Øð)0Ø&<ð)0ØNQð)0àñ)0r*   c                ó¸   a aaa€ Vf   . M#\        V\        4      '       d   V.M
\        V4      oR VV V3R llpR VV 3R llpR V V3R llo\        WESVR7      # )z2Create a property to access a single string value.c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   rZ   r&   )r'   s   "r(   r)   Ú,single_string_property.<locals>.__annotate__ø  s   € ÷ ñ �9ð  ñ r*   c                óÎ   <€ V P                  SR4      pVf"   S F  pV P                  VR4      pVf   K   M	  Ve   V. 8X  d   S# \        V\        4      '       d
   V^ ,          # V# )r›   NrU   )r$   r4   Úaliasr{   r“   Úother_namess   &  €€€r(   rg   Ú$single_string_property.<locals>.fgetø  si   ø€ à—‘˜$ Ó%ˆØŠ>Û$�ØŸ™ %¨Ó.�ØÔ%Ùñ %ð Š>˜V rœ\ØˆNÜ�fœd×#Ò#Ø˜!•9ÐØˆr*   c               ó    € V ^8„  d   QhRRRR/# rj   r&   )r'   s   "r(   r)   r°     s   € ÷ "ñ "�9ð " Zñ "r*   c                óH   <€ S! V 4       Ve   V P                  SV4       R# R# )z:Set the value.

Setting the value to None will delete it.
Nrm   r¢   s   &&€€r(   ro   Ú$single_string_property.<locals>.fset  s%   ø€ ñ
 	ˆTŒ
ØÒØ�H‰H�T˜5Ö!ñ r*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   r°     s   € ÷ "ñ "�9ñ "r*   c                ób   <€ V P                  SR4       S F  pV P                  VR4       K  	  R# rt   rC   )r$   r²   r“   r³   s   & €€r(   rn   Ú$single_string_property.<locals>.fdel  s)   ø€ à�‰��tÔÛ ˆEØ�H‰H�U˜DÖ!ó !r*   r¨   )r.   rZ   r/   r^   )r“   r”   r­   r{   rg   ro   rn   r³   s   f&&f  @@r(   Úsingle_string_propertyr»   ì  sb   û€ ð Òñ 	ô �j¤#×&Ò&ð ‰\ä�*Óð ÷ò ÷"ñ "÷"ñ "ô �D ¨$Ô/Ð/r*   ÚCOLORaV  This property specifies a color used for displaying the component.

    This implements :rfc:`7986` ``COLOR`` property.

    Property Parameters:
        IANA and non-standard property parameters can
        be specified on this property.

    Conformance:
        This property can be specified once in an iCalendar
        object or in ``VEVENT``, ``VTODO``, or ``VJOURNAL`` calendar components.

    Description:
        This property specifies a color that clients MAY use
        when presenting the relevant data to a user.  Typically, this
        would appear as the "background" color of events or tasks.  The
        value is a case-insensitive color name taken from the CSS3 set of
        names, defined in Section 4.3 of `W3C.REC-css3-color-20110607 <https://www.w3.org/TR/css-color-3/>`_.

    Example:
        ``"turquoise"``, ``"#ffffff"``

        .. code-block:: pycon

            >>> from icalendar import Todo
            >>> todo = Todo()
            >>> todo.color = "green"
            >>> print(todo.to_ical())
            BEGIN:VTODO
            COLOR:green
            END:VTODO
    ÚSEQUENCEaÆ  This property defines the revision sequence number of the calendar component within a sequence of revisions.

Value Type:
    INTEGER

Property Parameters:
    IANA and non-standard property parameters can be specified on this property.

Conformance:
    The property can be specified in "VEVENT", "VTODO", or
    "VJOURNAL" calendar component.

Description:
    When a calendar component is created, its sequence
    number is 0.  It is monotonically incremented by the "Organizer's"
    CUA each time the "Organizer" makes a significant revision to the
    calendar component.

    The "Organizer" includes this property in an iCalendar object that
    it sends to an "Attendee" to specify the current version of the
    calendar component.

    The "Attendee" includes this property in an iCalendar object that
    it sends to the "Organizer" to specify the version of the calendar
    component to which the "Attendee" is referring.

    A change to the sequence number is not the mechanism that an
    "Organizer" uses to request a response from the "Attendees".  The
    "RSVP" parameter on the "ATTENDEE" property is used by the
    "Organizer" to indicate that a response from the "Attendees" is
    requested.

    Recurrence instances of a recurring component MAY have different
    sequence numbers.

Examples:
    The following is an example of this property for a calendar
    component that was just created by the "Organizer":

    .. code-block:: pycon

        >>> from icalendar import Event
        >>> event = Event()
        >>> event.sequence
        0

    The following is an example of this property for a calendar
    component that has been revised 10 different times by the
    "Organizer":

    .. code-block:: pycon

        >>> from icalendar import Calendar
        >>> calendar = Calendar.example("issue_156_RDATE_with_PERIOD_TZID_khal")
        >>> event = calendar.events[0]
        >>> event.sequence
        10

    Raises:
        TypeError: If the value is not an ``int``. Booleans are rejected, too,
            even though ``bool`` subclasses ``int``.

        ~icalendar.error.InvalidCalendar: If the value is negative.

    ..  versionchanged:: 7.2.3
        Negative values are no longer accepted.
    ©rx   c               ó    € V ^8„  d   QhRRRR/# )r#   Ú	componentr!   r%   ú	list[str]r&   )r'   s   "r(   r)   r)   †  s   € ÷ ñ ˜yð ¨Yñ r*   c           	     ó2  € V P                  R4      p\        V\        4      '       dE   \        V \        \        P
                  P                  R V 4       4      4      4       \        V 4      # Vf   \        . 4      pV P                  RV4       VP                  # )zGet all the categories.Ú
CATEGORIESc              3  ó8   "  € T F  qP                   x € K  	  R # 5i©N)Úcats)Ú.0Úcats   & r(   Ú	<genexpr>Ú"_get_categories.<locals>.<genexpr>Œ  s   é € Ð.NÁ:¸C¯x®xÃ:ùó   ‚)r-   r.   r/   Ú_set_categoriesÚ	itertoolsÚchainÚfrom_iterableÚ_get_categoriesr   r=   rÆ   )rÀ   Ú
categoriess   & r(   rÐ   rÐ   †  sy   € à5>·]±]À<Ó5P€JÜ�*œd×#Ò#ÜØÜ”—‘×.Ñ.Ñ.NÁ:Ó.NÓNÓOô	
ô ˜yÓ)Ð)ØÒÜ˜r“]ˆ
Ø�‰�l JÔ/Ø�?‰?Ðr*   c               ó$   € V ^8„  d   QhRRRRRR/# )r#   rÀ   r!   rÆ   zSequence[str] | Noner%   r:   r&   )r'   s   "r(   r)   r)   •  s"   € ÷ 	ñ 	˜yð 	Ð0Dð 	Èñ 	r*   c                óð   € V'       g   V. 8w  d   \        V 4       R# \        V4      ;V R&   p\        V\        4      '       d4   VP	                  4        VP                  VP                  4       Wn        R# R# )zSet the categories.NrÃ   )Ú_del_categoriesr   r.   r/   ÚclearÚextendrÆ   )rÀ   rÆ   rÑ   s   && r(   rÌ   rÌ   •  sY   € ç�D˜B”JÜ˜	Ô"ÙÜ+4°T«?Ð:€IˆlÑ˜jÜ�$œ×ÒØ�
‰
ŒØ�‰�J—O‘OÔ$ØŽñ r*   c               ó    € V ^8„  d   QhRRRR/# )r#   rÀ   r!   r%   r:   r&   )r'   s   "r(   r)   r)   ¡  s   € ÷ &ñ &˜yð &¨Tñ &r*   c                ó*   € V P                  RR4       R# )zDelete the categories.rÃ   NrC   ©rÀ   s   &r(   rÔ   rÔ   ¡  s   € à‡M�M�, Ö%r*   a¶  This property defines the categories for a component.

The categories property is used to specify categories or subtypes of the
calendar component. The categories are useful to search for a calendar
component of a particular type and category.

Within the calendar components, specify categories as a list of strings.
You can get, set, and delete categories for a component.

This property can be used in icalendar through its Python attributes of:

-   :attr:`Available.categories <icalendar.cal.available.Available.categories>`
-   :attr:`Availability.categories <icalendar.cal.availability.Availability.categories>`
-   :attr:`Calendar.categories <icalendar.cal.calendar.Calendar.categories>`
-   :attr:`Event.categories <icalendar.cal.event.Event.categories>`
-   :attr:`Journal.categories <icalendar.cal.journal.Journal.categories>`
-   :attr:`Todo.categories <icalendar.cal.todo.Todo.categories>`

The categories property for ``Available`` and ``Availability`` complies with
:rfc:`7953#section-3.1`, for ``Event``, ``Journal``, and ``Todo`` with
:rfc:`5545#section-3.8.1.2`, and for ``Calendar`` with :rfc:`7986#section-5.6`.

Note:
    At present, icalendar doesn't take the LANGUAGE parameter as defined
    in :rfc:`5545#section-3.2.10` into account.

Parameters:
    categories(list[str]): A list of categories as strings.

Example:
    Create an event, add categories to it, print its ical representation,
    append another category, and finally compare the result
    against its expected value.

    ..  code-block:: pycon

        >>> from icalendar import Event
        >>> event = Event()
        >>> event.categories = ["Work", "Meeting"]
        >>> print(event.to_ical())
        BEGIN:VEVENT
        CATEGORIES:Work,Meeting
        END:VEVENT
        >>> event.categories.append("Lecture")
        >>> event.categories == ["Work", "Meeting", "Lecture"]
        True

See also:
    :attr:`Component.concepts <icalendar.cal.component.Component.concepts>`
c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   zlist[vCalAddress]r&   )r'   s   "r(   r)   r)   ß  s   € ÷ 	ñ 	˜ð 	Ð'8ñ 	r*   c                ór   € V P                  R4      pVf	   . pWR&   V# \        V\        4      '       d   V.# V# )zGet attendees.ÚATTENDEE)r-   r.   r   r>   s   & r(   Ú_get_attendeesrÝ   ß  s@   € à�H‰H�ZÓ €EØ‚}ØˆØ ˆZÑØˆÜ�%œ×%Ò%ØˆwˆØ€Lr*   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r?   z&list[vCalAddress] | vCalAddress | Noner&   )r'   s   "r(   r)   r)   ë  s   € ÷ ñ ˜ð Ð+Qñ r*   c                ób   € \        V 4       Vf   R# \        V\        4      '       g   V.pWR&   R# )zSet attendees.NrÜ   )Ú_del_attendeesr.   r/   r>   s   &&r(   Ú_set_attendeesrá   ë  s.   € ä�4ÔØ‚}ÙÜ�eœT×"Ò"Ø�ˆØˆÓr*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   r)   õ  s   € ÷ ñ ˜ñ r*   c                ó*   € V P                  RR4       R# )zDelete all attendees.rÜ   NrC   rE   s   &r(   rà   rà   õ  s   € à‡H�HˆZ˜Ör*   ab  ATTENDEE defines one or more "Attendees" within a calendar component.

Conformance:
    This property MUST be specified in an iCalendar object
    that specifies a group-scheduled calendar entity.  This property
    MUST NOT be specified in an iCalendar object when publishing the
    calendar information (e.g., NOT in an iCalendar object that
    specifies the publication of a calendar user's busy time, event,
    to-do, or journal).  This property is not specified in an
    iCalendar object that specifies only a time zone definition or
    that defines calendar components that are not group-scheduled
    components, but are components only on a single user's calendar.

Description:
    This property MUST only be specified within calendar
    components to specify participants, non-participants, and the
    chair of a group-scheduled calendar entity.  The property is
    specified within an "EMAIL" category of the "VALARM" calendar
    component to specify an email address that is to receive the email
    type of iCalendar alarm.

Examples:
    Add a new attendee to an existing event.

    .. code-block:: pycon

        >>> from icalendar import Event, vCalAddress
        >>> event = Event()
        >>> event.attendees.append(vCalAddress("mailto:me@my-domain.com"))
        >>> print(event.to_ical())
        BEGIN:VEVENT
        ATTENDEE:mailto:me@my-domain.com
        END:VEVENT

    Create an email alarm with several attendees:

        >>> from icalendar import Alarm, vCalAddress
        >>> alarm = Alarm.new(attendees = [
        ...     vCalAddress("mailto:me@my-domain.com"),
        ...     vCalAddress("mailto:you@my-domain.com"),
        ... ], summary = "Email alarm")
        >>> print(alarm.to_ical())
        BEGIN:VALARM
        ATTENDEE:mailto:me@my-domain.com
        ATTENDEE:mailto:you@my-domain.com
        SUMMARY:Email alarm
        END:VALARM
ÚUIDa¿  UID specifies the persistent, globally unique identifier for a component.

We recommend using :func:`uuid.uuid4` to generate new values.

Returns:
    The value of the UID property as a string or ``""`` if no value is set.

Description:
    The "UID" itself MUST be a globally unique identifier.
    The generator of the identifier MUST guarantee that the identifier
    is unique.

    This is the method for correlating scheduling messages with the
    referenced "VEVENT", "VTODO", or "VJOURNAL" calendar component.
    The full range of calendar components specified by a recurrence
    set is referenced by referring to just the "UID" property value
    corresponding to the calendar component.  The "RECURRENCE-ID"
    property allows the reference to an individual instance within the
    recurrence set.

    This property is an important method for group-scheduling
    applications to match requests with later replies, modifications,
    or deletion requests.  Calendaring and scheduling applications
    MUST generate this property in "VEVENT", "VTODO", and "VJOURNAL"
    calendar components to assure interoperability with other group-
    scheduling applications.  This identifier is created by the
    calendar system that generates an iCalendar object.

    Implementations MUST be able to receive and persist values of at
    least 255 octets for this property, but they MUST NOT truncate
    values in the middle of a UTF-8 multi-octet sequence.

    :rfc:`7986` states that UID can be used, for
    example, to identify duplicate calendar streams that a client may
    have been given access to.  It can be used in conjunction with the
    "LAST-MODIFIED" property also specified on the "VCALENDAR" object
    to identify the most recent version of a calendar.

Conformance:
    :rfc:`5545` states that the "UID" property can be specified on "VEVENT", "VTODO",
    and "VJOURNAL" calendar components.
    :rfc:`7986` modifies the definition of the "UID" property to
    allow it to be defined in an iCalendar object.
    :rfc:`9074`  adds a "UID" property to "VALARM" components to allow a unique
    identifier to be specified. The value of this property can then be used
    to refer uniquely to the "VALARM" component.

    This property can be specified once only.

Security:
    :rfc:`7986` states that UID values MUST NOT include any data that
    might identify a user, host, domain, or any other security- or
    privacy-sensitive information.  It is RECOMMENDED that calendar user
    agents now generate "UID" values that are hex-encoded random
    Universally Unique Identifier (UUID) values as defined in
    Sections 4.4 and 4.5 of :rfc:`4122`.
    You can use the :mod:`uuid` module to generate new UUIDs.

Compatibility:
    For Alarms, ``X-ALARMUID`` is also considered.

Examples:
    The following is an example of such a property value:
    ``5FC53010-1267-4F8E-BC28-1D7AE55A7C99``.

    Set the UID of a calendar:

    .. code-block:: pycon

        >>> from icalendar import Calendar
        >>> from uuid import uuid4
        >>> calendar = Calendar()
        >>> calendar.uid = uuid4()
        >>> print(calendar.to_ical())
        BEGIN:VCALENDAR
        UID:d755cef5-2311-46ed-a0e1-6733c9e15c63
        END:VCALENDAR

ÚSUMMARYa   SUMMARY defines a short summary or subject for the calendar component.

Property Parameters:
    IANA, non-standard, alternate text
    representation, and language property parameters can be specified
    on this property.

Conformance:
    The property can be specified in "VEVENT", "VTODO",
    "VJOURNAL", or "VALARM" calendar components.

Description:
    This property is used in the "VEVENT", "VTODO", and
    "VJOURNAL" calendar components to capture a short, one-line
    summary about the activity or journal entry.

    This property is used in the "VALARM" calendar component to
    capture the subject of an EMAIL category of alarm.

Examples:
    The following is an example of this property:

    .. code-block:: pycon

        SUMMARY:Department Party
ÚDESCRIPTIONa’  DESCRIPTION provides a more complete description of the calendar component than that provided by the "SUMMARY" property.

Property Parameters:
    IANA, non-standard, alternate text
    representation, and language property parameters can be specified
    on this property.

Conformance:
    The property can be specified in the "VEVENT", "VTODO",
    "VJOURNAL", or "VALARM" calendar components.  The property can be
    specified multiple times only within a "VJOURNAL" calendar
    component.

Description:
    This property is used in the "VEVENT" and "VTODO" to
    capture lengthy textual descriptions associated with the activity.

    This property is used in the "VALARM" calendar component to
    capture the display text for a DISPLAY category of alarm, and to
    capture the body text for an EMAIL category of alarm.

Examples:
    The following is an example of this property with formatted
    line breaks in the property value:

    .. code-block:: pycon

        DESCRIPTION:Meeting to provide technical review for "Phoenix"
         design.\nHappy Face Conference Room. Phoenix design team
         MUST attend this meeting.\nRSVP to team leader.

    c               ó4   € V ^8„  d   QhRRRRRRRRR	RR
RRR/# )r#   rz   rZ   Ú
value_attrr\   Ú
value_typeztuple[type]Útype_defÚtyper]   ÚvPropÚconvertz!Callable[[object], object] | Noner&   )r'   s   "r(   r)   r)   È  sW   € ÷ C0ñ C0Ø
ðC0àðC0ð ðC0ð ð	C0ð
 
ðC0ð ðC0ð /ñC0r*   c                óÈ   a aaaaa
€ R VV VV3R llpR VV
V VV3R llpVR,          ;VP                   R&   VP                   R&   R V 3R	 llo
R
S  RV R2p	\        WxS
V	4      # )aU  Create a single property getter and setter.

Parameters:
    prop: The name of the property.
    value_attr: The name of the attribute to get the value from.
    value_type: The type of the value.
    type_def: The type of the property.
    doc: The docstring of the property.
    vProp: The type of the property from :mod:`icalendar.prop`.
c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   Ú,create_single_property.<locals>.__annotate__Ü  s   € ÷ ñ �Iñ r*   c                óR  <€ \        4       pV P                  SV4      pW!J d   R # \        V\        4      '       d   \	        RS R24      hSf   TM\        VSV4      pSf   TMS! V4      p\        VS4      '       g+   \	        S RRP                  R S 4       4       RV R24      hV# )Nz	Multiple z	 defined.z must be either a ú or c              3  ó8   "  € T F  qP                   x € K  	  R # 5irÅ   ©Ú__name__©rÇ   Úts   & r(   rÉ   Ú8create_single_property.<locals>.p_get.<locals>.<genexpr>è  s   é € Ð>±:¨aŸzžz³:ùrË   ú, not Ú.)Úobjectr-   r.   r/   r   r�   Újoin)r$   r{   r4   r?   rí   rz   rè   ré   s   &   €€€€r(   Úp_getÚ%create_single_property.<locals>.p_getÜ  s¸   ø€ Ü“(ˆØ—‘˜$ Ó(ˆØÓÙÜ�fœd×#Ò#Ü! I¨d¨V°9Ð"=Ó>Ð>Ø$Ò,‘´'¸&À*ÈfÓ2UˆØ š‘©g°e«nˆÜ˜% ×,Ò,Ü!Ø�&Ð*Ø—;‘;Ñ>±:Ó>Ó>Ð?ð @Ø�w˜að!óð ð
 ˆr*   c               ó    € V ^8„  d   QhRRRR/# r9   r&   )r'   s   "r(   r)   rð   í  s   € ÷ /ñ /�Ið /¨ñ /r*   c                ór  <€ Vf   S! V 4       R # Se	   S! V4      MTp\        VS4      '       g<   \        RRP                  R S 4       4       R\        V4      P                   R24      hS! V4      V S&   SV P
                  9   d1   V P
                   F  pVS8w  g   K  V P                  VR 4       K   	  R # R # )NzUse rò   c              3  ó8   "  € T F  qP                   x € K  	  R # 5irÅ   rô   rö   s   & r(   rÉ   Ú8create_single_property.<locals>.p_set.<locals>.<genexpr>ô  s   é € Ð"B±z°!§:¦:³zùrË   rù   rú   )r.   rˆ   rü   rë   rõ   Ú	exclusiverD   )r$   r?   Ú
other_proprí   Úp_delrz   rì   ré   s   && €€€€€r(   Úp_setÚ%create_single_property.<locals>.p_setí  s´   ø€ ØŠ=Ù�$ŒKÙØ")Ò"5‘˜”¸5ˆÜ˜% ×,Ò,ÜØ�v—{‘{Ñ"B±zÓ"BÓBÐCð DÜ˜E“{×+Ñ+Ð,¨Að/óð ñ ˜5“\ˆˆT‰
Ø�4—>‘>Ô!Ø"Ÿnœn�
Ø Ö%Ø—H‘H˜Z¨Ö.ó -ñ "r*   Nr?   r%   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   rð   ÿ  s   € ÷ ñ �Iñ r*   c                ó*   <€ V P                  S4       R # rÅ   rC   r�   s   &€r(   r  Ú%create_single_property.<locals>.p_delÿ  s   ø€ Ø�‰�Žr*   r–   z property.

    z”

    To delete the value, either use ``del`` or set it to ``None``.

    Raises:
        InvalidCalendar: if the attribute has invalid values.
    )Ú__annotations__r^   )rz   rè   ré   rê   r]   rì   rí   rý   r  Úp_docr  s   fff&&ff   @r(   Úcreate_single_propertyr  È  sz   ý€ ÷(ó ÷"/ô /ð  HPÐRVÅÐV€E×Ñ˜'Ñ" U×%:Ñ%:¸8Ñ%D÷ð ð �T�Fð à€Eð 
ð€Eô �E %¨Ó/Ð/r*   zX-MOZ-SNOOZE-TIMEz1Thunderbird: Alarms before this time are snoozed.zX-MOZ-LASTACKz6Thunderbird: Alarms before this time are acknowledged.c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   útimedelta | Noner&   )r'   s   "r(   r)   r)     s   € ÷ ñ  	ð Ð.>ñ r*   c                ó²   € \        4       pV P                  RV4      pW!J d   R# \        VRR4      pVf#   \        R\	        V4      P
                   R24      hV# )zGetter for property DURATION.ÚdurationNÚtdz"DURATION must be a timedelta, not rú   )rû   r-   r�   r   rë   rõ   )r$   r{   r  r4   s   &   r(   Úproperty_get_durationr    s`   € ä‹h€GØ�x‰x˜
 GÓ,€HØÓÙÜ�X˜t TÓ*€FØ‚~ÜØ0´°h³×1HÑ1HÐ0IÈÐKó
ð 	
ð €Mr*   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r?   r  r&   )r'   s   "r(   r)   r)   $  s   € ÷ 	ñ 	 	ð 	Ð2Bñ 	r*   c                ó  € Vf   V P                  RR4       R# \        V\        4      '       g#   \        R\	        V4      P
                   R24      h\        V4      V R&   V P                  R4       V P                  R4       R# )zSetter for property DURATION.Nr  úUse timedelta, not rú   ÚDTENDÚDUE)rD   r.   r   rˆ   rë   rõ   r   r>   s   &&r(   Úproperty_set_durationr  $  sk   € à‚}Ø�‰�˜TÔ"ÙÜ�eœY×'Ò'ÜÐ-¬d°5«k×.BÑ.BÐ-CÀ1ÐEÓFÐFÜ  Ó'€DˆÑØ‡H�HˆWÔØ‡H�HˆU†Or*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   r)   0  s   € ÷ ñ  	ñ r*   c                ó(   € V P                  R4       R# )zDelete property DURATION.ÚDURATIONNrC   rE   s   &r(   Úproperty_del_durationr  0  s   € à‡H�HˆZÖr*   a‹  The DURATION property.

The "DTSTART" property for a "{component}" specifies the inclusive
start of the {component}.
The "DURATION" property in conjunction with the DTSTART property
for a "{component}" calendar component specifies the non-inclusive end
of the event.

If you would like to calculate the duration of a {component}, do not use this.
Instead use the duration property (lower case).
c               ó    € V ^8„  d   QhRRRR/# )r#   rÀ   rZ   r%   r^   r&   )r'   s   "r(   r)   r)   B  s   € ÷ ñ  ð ¨ñ r*   c           	     ó^   € \        \        \        \        \        P                  V R7      4      # )zReturn the duration property.rÙ   )r^   r  r  r  Úproperty_doc_duration_templater'   rÙ   s   &r(   Úduration_propertyr!  B  s)   € äÜÜÜÜ&×-Ñ-¸	Ð-ÓBó	ð r*   c               ó$   € V ^8„  d   QhRRRRRR/# r’   r&   )r'   s   "r(   r)   r)   L  s!   € ÷ ,ñ ,˜cð ,¨ð ,°ñ ,r*   c                óX   a a€ R V 3R llpR VV 3R llpR V 3R llo\        W#SV4      # )ziGet a property that can occur several times and is text.

Examples: Journal.descriptions, Event.comments
c               ó    € V ^8„  d   QhRRRR/# ©r#   r$   r!   r%   rÁ   r&   )r'   s   "r(   r)   Ú)multi_text_property.<locals>.__annotate__R  s   € ÷ ñ �9ð  ñ r*   c                óh   <€ V P                  S4      pVf   . # \        V\        4      '       g   V.# V# )zGet the values.)r-   r.   r   )r$   Údescriptionsr“   s   & €r(   rg   Ú!multi_text_property.<locals>.fgetR  s6   ø€ à—x‘x “~ˆØÒØˆIÜ˜,¬×7Ò7Ø �>Ð!ØÐr*   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   Úvalueszstr | Sequence[str] | Noner&   )r'   s   "r(   r)   r&  [  s   € ÷ 	,ñ 	,�9ð 	,Ð&@ñ 	,r*   c                ó®   <€ S! V 4       Vf   R# \        V\        4      '       d   V P                  SV4       R# V F  pV P                  SV4       K  	  R# )zSet the values.N)r.   rZ   r=   )r$   r+  Údescriptionrn   r“   s   && €€r(   ro   Ú!multi_text_property.<locals>.fset[  sE   ø€ áˆTŒ
ØŠ>ÙÜ�fœc×"Ò"Ø�H‰H�T˜6Ö"ã%�Ø—‘˜˜{Ö+ó  &r*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   r&  f  s   € ÷ ñ �9ñ r*   c                ó*   <€ V P                  S4       R# )zDelete the values.NrC   r¦   s   &€r(   rn   Ú!multi_text_property.<locals>.fdelf  s   ø€ à�‰�Žr*   rv   r©   s   f&  @r(   Úmulti_text_propertyr2  L  s2   ù€ ÷ð ÷	,ñ 	,÷ð ô �D  dÓ+Ð+r*   aS  DESCRIPTION provides a more complete description of the calendar component than that provided by the "SUMMARY" property.

Property Parameters:
    IANA, non-standard, alternate text
    representation, and language property parameters can be specified
    on this property.

Conformance:
    The property can be
    specified multiple times only within a "VJOURNAL" calendar component.

Description:
    This property is used in the "VJOURNAL" calendar component to
    capture one or more textual journal entries.

Examples:
    The following is an example of this property with formatted
    line breaks in the property value:

    .. code-block:: pycon

        DESCRIPTION:Meeting to provide technical review for "Phoenix"
         design.\nHappy Face Conference Room. Phoenix design team
         MUST attend this meeting.\nRSVP to team leader.

ÚCOMMENTa“  COMMENT is used to specify a comment to the calendar user.

Purpose:
    This property specifies non-processing information intended
    to provide a comment to the calendar user.

Conformance:
    In :rfc:`5545`, this property can be specified multiple times in
    "VEVENT", "VTODO", "VJOURNAL", and "VFREEBUSY" calendar components
    as well as in the "STANDARD" and "DAYLIGHT" sub-components.
    In :rfc:`7953`, this property can be specified multiple times in
    "VAVAILABILITY" and "VAVAILABLE".

Property Parameters:
    IANA, non-standard, alternate text
    representation, and language property parameters can be specified
    on this property.

zRECURRENCE-IDr1   aU  
Identify a specific occurrence of a recurring calendar object.

This property is used together with ``UID`` and ``SEQUENCE`` to refer to one
particular instance in a recurrence set. The value is the original start
date or datetime of that instance, not the rescheduled time.

The value is usually a DATE-TIME and must use the same value type as the
``DTSTART`` property in the same component. A DATE value may be used for
all-day items instead.

This property corresponds to ``RECURRENCE-ID`` as defined in RFC 5545 and
may appear in recurring ``VEVENT``, ``VTODO``, and ``VJOURNAL`` components.
c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   zvCalAddress | Noner&   )r'   s   "r(   r)   r)   ¹  s   € ÷ $!ñ $!˜ð $!Ð'9ñ $!r*   c                ó$   € V P                  R4      # )a¹  ORGANIZER defines the organizer for a calendar component.

Property Parameters:
    IANA, non-standard, language, common name,
    directory entry reference, and sent-by property parameters can be
    specified on this property.

Conformance:
    This property MUST be specified in an iCalendar object
    that specifies a group-scheduled calendar entity.  This property
    MUST be specified in an iCalendar object that specifies the
    publication of a calendar user's busy time.  This property MUST
    NOT be specified in an iCalendar object that specifies only a time
    zone definition or that defines calendar components that are not
    group-scheduled components, but are components only on a single
    user's calendar.

Description:
    This property is specified within the "VEVENT",
    "VTODO", and "VJOURNAL" calendar components to specify the
    organizer of a group-scheduled calendar entity.  The property is
    specified within the "VFREEBUSY" calendar component to specify the
    calendar user requesting the free or busy time.  When publishing a
    "VFREEBUSY" calendar component, the property is used to specify
    the calendar that the published busy time came from.

    The property has the property parameters "CN", for specifying the
    common or display name associated with the "Organizer", "DIR", for
    specifying a pointer to the directory information associated with
    the "Organizer", "SENT-BY", for specifying another calendar user
    that is acting on behalf of the "Organizer".  The non-standard
    parameters may also be specified on this property.  If the
    "LANGUAGE" property parameter is specified, the identified
    language applies to the "CN" parameter value.
Ú	ORGANIZER)r-   rE   s   &r(   Ú_get_organizerr7  ¹  s   € ðH �8‰8�KÓ Ð r*   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r?   zvCalAddress | str | Noner&   )r'   s   "r(   r)   r)   à  s   € ÷ %ñ %˜ð %Ð+Cñ %r*   c                óL   € \        V 4       Ve   V P                  RV4       R# R# )úSet the value.Nr6  )Ú_del_organizerr=   r>   s   &&r(   Ú_set_organizerr<  à  s#   € ä�4ÔØÒØ�‰�˜eÖ$ñ r*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   r)   ç  s   € ÷ ñ ˜ñ r*   c                ó(   € V P                  R4       R# )zDelete the value.r6  NrC   rE   s   &r(   r;  r;  ç  s   € à‡H�Hˆ[Ör*   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r#   r“   rZ   Úenumztype[StrEnum]r{   r   r”   r%   r^   r&   )r'   s   "r(   r)   r)   ï  s4   € ÷ 5ñ 5Ø
ð5Ø"ð5Ø-4ð5Ø<?ð5àñ5r*   c                óz   aaa€ \        WSR7      oR VVV3R llpR V3R llp\        WESP                  VR7      # )zLCreate a property to access a single string value and convert it to an enum.)r{   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   r   r&   )r'   s   "r(   r)   Ú1single_string_enum_property.<locals>.__annotate__õ  s   € ÷  ñ  �9ð   ñ  r*   c                óZ   <€ SP                  V 4      pVS8X  d   S# S! \        V4      4      # )r›   )rg   rZ   )r$   r?   r{   r@  rz   s   & €€€r(   rg   Ú)single_string_enum_property.<locals>.fgetõ  s,   ø€ à—	‘	˜$“ˆØ�GÔØˆNÙ”C˜“JÓÐr*   c               ó$   € V ^8„  d   QhRRRRRR/# )r#   r$   r!   r?   zstr | StrEnum | Noner%   r:   r&   )r'   s   "r(   r)   rC  ü  s"   € ÷ ñ �9ð Ð%9ð ¸dñ r*   c                ó<   <€ VR8X  d   RpSP                  W4       R# )r:  r«   N)ro   )r$   r?   rz   s   &&€r(   ro   Ú)single_string_enum_property.<locals>.fsetü  s   ø€ à�BŒ;ØˆEØ�	‰	�$Ör*   r¨   )r»   r^   rn   )r“   r@  r{   r”   rg   ro   rz   s   &ff&  @r(   Úsingle_string_enum_propertyrI  ï  s:   ú€ ô " $°gÔ>€D÷ ò  ÷ð ô �D §	¡	¨tÔ4Ð4r*   r	   aÆ  BUSYTYPE specifies the default busy time type.

Returns:
    :class:`icalendar.enums.BUSYTYPE`

Description:
    This property is used to specify the default busy time
    type. The values correspond to those used by the "FBTYPE"
    parameter used on a "FREEBUSY" property, with the exception that
    the "FREE" value is not used in this property.  If not specified
    on a component that allows this property, the default is "BUSY-
    UNAVAILABLE".
c               ó   € V ^8„  d   QhRR/# )r#   r%   r^   r&   )r'   s   "r(   r)   r)     s   € ÷ Añ A˜xñ Ar*   c                 ó–   aa€ ^ RI Ho \        R^ R^ R7      oVV3R lp \        V SP                  SP
                  SP                  4      # )é    )Ú_clamp_repeatÚREPEATaG  The number of additional times the alarm is triggered after the
initial trigger.

Defaults to ``0``, meaning the alarm fires once. Must be paired with
:attr:`~icalendar.cal.alarm.Alarm.DURATION`. Conforms with :rfc:`5545#section-3.8.6.2`.
The value is capped at :data:`icalendar.config.MAX_ALARM_REPEAT` on read.

Raises:
    TypeError: If the value is not an ``int``. Booleans are rejected, too,
        even though ``bool`` subclasses ``int``.

    ~icalendar.error.InvalidCalendar: If the value is negative.

..  versionchanged:: 7.2.3
    Negative values are no longer accepted.
r¾   c                ó2   <€ S! SP                  V 4      4      # rÅ   )rg   )r$   Ú_baserM  s   &€€r(   rg   Ú#_make_repeat_property.<locals>.fget2  s   ø€ Ù˜UŸZ™Z¨Ó-Ó.Ð.r*   )Úicalendar.configrM  r�   r^   ro   rn   Ú__doc__)rg   rP  rM  s    @@r(   Ú_make_repeat_propertyrT    sD   ù€ Ý.äØØ	ð	ð  ô'€Eö,/ô �D˜%Ÿ*™* e§j¡j°%·-±-Ó@Ð@r*   ÚPRIORITYa-  

Conformance:
    This property can be specified in "VEVENT" and "VTODO" calendar components
    according to :rfc:`5545`.
    :rfc:`7953` adds this property to "VAVAILABILITY".

Description:
    This priority is specified as an integer in the range 0
    to 9.  A value of 0 specifies an undefined priority.  A value of 1
    is the highest priority.  A value of 2 is the second highest
    priority.  Subsequent numbers specify a decreasing ordinal
    priority.  A value of 9 is the lowest priority.

    A CUA with a three-level priority scheme of "HIGH", "MEDIUM", and
    "LOW" is mapped into this property such that a property value in
    the range of 1 to 4 specifies "HIGH" priority.  A value of 5 is
    the normal or "MEDIUM" priority.  A value in the range of 6 to 9
    is "LOW" priority.

    A CUA with a priority schema of "A1", "A2", "A3", "B1", "B2", ...,
    "C3" is mapped into this property such that a property value of 1
    specifies "A1", a property value of 2 specifies "A2", a property
    value of 3 specifies "A3", and so forth up to a property value of
    9 specifies "C3".

    Other integer values are reserved for future use.

    Within a "VEVENT" calendar component, this property specifies a
    priority for the event.  This property may be useful when more
    than one event is scheduled for a given time period.

    Within a "VTODO" calendar component, this property specified a
    priority for the to-do.  This property is useful in prioritizing
    multiple action items for a given time period.

    Raises:
        TypeError: If the value is not an ``int``. Booleans are rejected, too,
            even though ``bool`` subclasses ``int``.

        ~icalendar.error.InvalidCalendar: If the value is negative.

    ..  versionchanged:: 7.2.3
        Negative values are no longer accepted.
r
   a   CLASS specifies the class of the calendar component.

Returns:
    :class:`icalendar.enums.CLASS`

Description:
    An access classification is only one component of the
    general security system within a calendar application.  It
    provides a method of capturing the scope of the access the
    calendar owner intends for information within an individual
    calendar entry.  The access classification of an individual
    iCalendar component is useful when measured along with the other
    security components of a calendar system (e.g., calendar user
    authentication, authorization, access rights, access role, etc.).
    Hence, the semantics of the individual access classifications
    cannot be completely defined by this memo alone.  Additionally,
    due to the "blind" nature of most exchange processes using this
    memo, these access classifications cannot serve as an enforcement
    statement for a system receiving an iCalendar object.  Rather,
    they provide a method for capturing the intention of the calendar
    owner for the access to the calendar component.  If not specified
    in a component that allows this property, the default value is
    PUBLIC.  Applications MUST treat x-name and iana-token values they
    don't recognize the same way as they would the PRIVATE value.
r   ar  TRANSP defines whether or not an event is transparent to busy time searches.

Returns:
    :class:`icalendar.enums.TRANSP`

Description:
    Time Transparency is the characteristic of an event
    that determines whether it appears to consume time on a calendar.
    Events that consume actual time for the individual or resource
    associated with the calendar SHOULD be recorded as OPAQUE,
    allowing them to be detected by free/busy time searches.  Other
    events, which do not take up the individual's (or resource's) time
    SHOULD be recorded as TRANSPARENT, making them invisible to free/
    busy time searches.
r   a  STATUS defines the overall status or confirmation for the calendar component.

Returns:
    :class:`icalendar.enums.STATUS`

The default value is ``""``.

Description:
    In a group-scheduled calendar component, the property
    is used by the "Organizer" to provide a confirmation of the event
    to the "Attendees".  For example in a "VEVENT" calendar component,
    the "Organizer" can indicate that a meeting is tentative,
    confirmed, or cancelled.  In a "VTODO" calendar component, the
    "Organizer" can indicate that an action item needs action, is
    completed, is in process or being worked on, or has been
    cancelled.  In a "VJOURNAL" calendar component, the "Organizer"
    can indicate that a journal entry is draft, final, or has been
    cancelled or removed.
ÚURLa.	  A Uniform Resource Locator (URL) associated with a calendar component.

This property specifies a URI where a more dynamic rendition of the calendar
information can be found. It is commonly used to reference related resources
or provide additional information about the component.

According to :rfc:`5545#section-3.8.4.6`, this property can be specified
once in "VEVENT", "VTODO", "VJOURNAL", or "VFREEBUSY" calendar components.
Since :rfc:`7986#section-5.5`, this property can also be defined on a
"VCALENDAR". :rfc:`7953#section-3.1` allows this property in "VAVAILABILITY" components.

This property may be used in a calendar component to convey a location
where a more dynamic rendition of the calendar information can be found.
If both the URL property and Content-Location MIME header are specified,
they MUST point to the same resource.

This differs from the SOURCE property, which identifies where calendar
data can be refreshed from, whereas URL provides an alternative
representation of the current calendar data.

Examples:

    Set a URL for an event that references additional information:

    .. code-block:: pycon

        >>> from icalendar import Event
        >>> event = Event()
        >>> event.add('url', 'http://example.com/events/meeting-2025')
        >>> print(event.to_ical().decode('utf-8'))
        BEGIN:VEVENT
        URL:http://example.com/events/meeting-2025
        END:VEVENT

    Set a URL for a calendar:

    .. code-block:: pycon

        >>> from icalendar import Calendar
        >>> calendar = Calendar()
        >>> calendar.add('url', 'http://example.com/pub/calendars/jsmith/mytime.ics')
        >>> print(calendar.to_ical().decode('utf-8'))
        BEGIN:VCALENDAR
        URL:http://example.com/pub/calendars/jsmith/mytime.ics
        END:VCALENDAR

See also:
    :attr:`~icalendar.cal.calendar.Calendar.source` for specifying from where
    calendar data can be refreshed.

    icalendar implementations:

    -   :attr:`Availability.url <icalendar.cal.availability.Availability.url>`
    -   :attr:`Calendar.url <icalendar.cal.calendar.Calendar.url>`
    -   :attr:`Event.url <icalendar.cal.event.Event.url>`
    -   :attr:`FreeBusy.url <icalendar.cal.free_busy.FreeBusy.url>`
    -   :attr:`Journal.url <icalendar.cal.journal.Journal.url>`
    -   :attr:`Todo.url <icalendar.cal.todo.Todo.url>`


ÚSOURCEa²  A URI from where calendar data can be refreshed.

Description:
    This property identifies a location where a client can
    retrieve updated data for the calendar.  Clients SHOULD honor any
    specified "REFRESH-INTERVAL" value when periodically retrieving
    data.  Note that this property differs from the "URL" property in
    that "URL" is meant to provide an alternative representation of
    the calendar data rather than the original location of the data.

Conformance:
    This property can be specified once in an iCalendar object.

Example:
    The following is an example of this property:

    .. code-block:: ics

        SOURCE;VALUE=URI:https://example.com/holidays.ics

ÚLOCATIONa»  The intended venue for the activity defined by a calendar component.

Property Parameters:
    IANA, non-standard, alternate text
    representation, and language property parameters can be specified
    on this property.

Conformance:
    Since :rfc:`5545`, this property can be specified in "VEVENT" or "VTODO"
    calendar component.
    :rfc:`7953` adds this property to "VAVAILABILITY" and "VAVAILABLE".

Description:
    Specific venues such as conference or meeting rooms may
    be explicitly specified using this property.  An alternate
    representation may be specified that is a URI that points to
    directory information with more structured specification of the
    location.  For example, the alternate representation may specify
    either an LDAP URL :rfc:`4516` pointing to an LDAP server entry or a
    CID URL :rfc:`2392` pointing to a MIME body part containing a
    Virtual-Information Card (vCard) :rfc:`2426` for the location.

ÚCONTACTaa  Contact information associated with the calendar component.

Purpose:
    This property is used to represent contact information or
    alternately a reference to contact information associated with the
    calendar component.

Property Parameters:
    IANA, non-standard, alternate text
    representation, and language property parameters can be specified
    on this property.

Conformance:
    In :rfc:`5545`, this property can be specified in a "VEVENT", "VTODO",
    "VJOURNAL", or "VFREEBUSY" calendar component.
    In :rfc:`7953`, this property can be specified in a "VAVAILABILITY"
    amd "VAVAILABLE" calendar component.

Description:
    The property value consists of textual contact
    information.  An alternative representation for the property value
    can also be specified that refers to a URI pointing to an
    alternate form, such as a vCard :rfc:`2426`, for the contact
    information.

Example:
    The following is an example of this property referencing
    textual contact information:

    .. code-block:: ics

        CONTACT:Jim Dolittle\, ABC Industries\, +1-919-555-1234

    The following is an example of this property with an alternate
    representation of an LDAP URI to a directory entry containing the
    contact information:

    .. code-block:: ics

        CONTACT;ALTREP="ldap://example.com:6666/o=ABC%20Industries\,
        c=US???(cn=Jim%20Dolittle)":Jim Dolittle\, ABC Industries\,
        +1-919-555-1234

    The following is an example of this property with an alternate
    representation of a MIME body part containing the contact
    information, such as a vCard :rfc:`2426` embedded in a text/
    directory media type :rfc:`2425`:

    .. code-block:: ics

        CONTACT;ALTREP="CID:part3.msg970930T083000SILVER@example.com":
         Jim Dolittle\, ABC Industries\, +1-919-555-1234

    The following is an example of this property referencing a network
    resource, such as a vCard :rfc:`2426` object containing the contact
    information:

    .. code-block:: ics

        CONTACT;ALTREP="http://example.com/pdi/jdoe.vcf":Jim
         Dolittle\, ABC Industries\, +1-919-555-1234
c               ó    € V ^8„  d   QhRRRR/# )r#   r“   rZ   r”   r&   )r'   s   "r(   r)   r)   r  s   € ÷ +ñ + cð +°ñ +r*   c                ó   € \        W4      # )z>Create a property to access the values with a proper timezone.)rª   )r“   r”   s   &&r(   Ú_timezone_datetime_propertyr\  r  s   € ô ˜tÓ*Ð*r*   ÚDTSTARTa÷  Start of the component.

    This is almost the same as
    :attr:`Event.DTSTART <icalendar.cal.event.Event.DTSTART>` with one exception:
    The values MUST have a timezone and DATE is not allowed.

    Description:
        :rfc:`7953`: If specified, the "DTSTART" and "DTEND" properties in
        "VAVAILABILITY" components and "AVAILABLE" subcomponents MUST be
        "DATE-TIME" values specified as either the date with UTC time or
        the date with local time and a time zone reference.

    r  aò  Start of the component.

    This is almost the same as
    :attr:`Event.DTEND <icalendar.cal.event.Event.DTEND>` with one exception:
    The values MUST have a timezone and DATE is not allowed.

    Description:
        :rfc:`7953`: If specified, the "DTSTART" and "DTEND" properties in
        "VAVAILABILITY" components and "AVAILABLE" subcomponents MUST be
        "DATE-TIME" values specified as either the date with UTC time or
        the date with local time and a time zone reference.
    c               ó   € V ^8„  d   QhRR/# ©r#   r%   r  r&   )r'   s   "r(   r)   r)   ›  s   € ÷ ñ Ð(8ñ r*   c                ó˜   € V P                   pV'       d   V# V P                  pVf   R# V P                  pVf   \        R4      hW#,
          # )á?  Compute the duration of this component.

If there is no :attr:`DTEND` or :attr:`DURATION` set, this is None.
Otherwise, the duration is calculated from :attr:`DTSTART` and
:attr:`DTEND`/:attr:`DURATION`.

This is in accordance with :rfc:`7953`:
If "DTEND" or "DURATION" are not present, then the end time is unbounded.
Nz&Cannot compute duration without start.)r  r  r]  r   )r$   r  ÚendÚstarts   &   r(   Úrfc_7953_duration_propertyrd  š  sH   € ð �}‰}€HßØˆØ
�*‰*€CØ
‚{ÙØ�L‰L€EØ‚}Ü!Ð"JÓKÐKØ�;Ðr*   c               ó   € V ^8„  d   QhRR/# r_  r&   )r'   s   "r(   r)   r)   ²  s   € ÷ ñ Ð#3ñ r*   c                ó˜   € V P                   pV'       d$   V P                  pVf   \        R4      hW!,           # V P                  pVf   R# V# )ra  Nz!Cannot compute end without start.)r  r]  r   r  )r$   r  rc  rb  s   &   r(   Úrfc_7953_end_propertyrg  ±  sI   € ð �}‰}€HßØ—‘ˆØŠ=Ü%Ð&IÓJÐJØÕÐØ
�*‰*€CØ
‚{ÙØ€Jr*   c               ó   € V ^8„  d   QhRR/# )r#   r?   r   r&   )r'   s   "r(   r)   r)   É  s   € ÷ ñ  xñ r*   c                ó   € Wn         R # rÅ   ©r  r>   s   &&r(   rg  rg  È  s   € à†Jr*   c                ó
   € V = R # rÅ   rj  rE   s   &r(   rg  rg  Í  s   € àŠ
r*   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r#   rÀ   r!   Ústart_propertyrZ   Úend_propertyÚcomponent_namer%   zGtuple[date | datetime | None, date | datetime | None, timedelta | None]r&   )r'   s   "r(   r)   r)   Ò  s;   € ÷ : ñ : Øð: àð: ð ð: ð ð	: ð
 Mñ: r*   c                óˆ  € \        WR4      p\        WR4      pV P                  pVe$   Ve    VR8X  d   RMRpRV RV R2p\        V4      hVe4   \        V4      '       d#   Ve   VP                  ^ 8w  d   Rp\        V4      hVe:   Ve6   \        V4      \        V4      8w  d   VR8X  d   RMRpRV R	2p\        V4      hWEV3# )
a�  
Validate the component and return start, end, and duration.

This tests validity according to :rfc:`5545` rules
for ``Event`` and ``Todo`` components.

Parameters:
    component: The component to validate, either ``Event`` or ``Todo``.
    start_property: The start property name, ``DTSTART``.
    end_property: The end property name, either ``DTEND`` for ``Event`` or
        ``DUE`` for ``Todo``.
    component_name: The component name for error messages,
        either ``VEVENT`` or ``VTODO``.

Returns:
    tuple: (start, end, duration) values from the component.

Raises:
    ~error.InvalidCalendar: If the component violates RFC 5545 constraints.

Nr  r  zOnly one of z and DURATION may be in a z, not both.ú:When DTSTART is a date, DURATION must be of days or weeks.zDTSTART and z3 must be of the same type, either date or datetime.)r�   r  r   r   Úseconds)	rÀ   rm  rn  ro  rc  rb  r  Úend_nameÚmsgs	   &&&&     r(   Ú&get_start_end_duration_with_validationru  Ò  sô   € ô6 �I¨tÓ4€EÜ
�)¨4Ó
0€CØ×!Ñ!€Hð Ò ¢Ø*¨gÔ5‘7¸5ˆà˜8˜*ð %Ø)Ð*¨+ð7ð 	ô ˜cÓ"Ð"ð 	ÒÜ�E�NŠNØÒ Ø×Ñ Ô!àJˆÜ˜cÓ"Ð"ð Ò˜Sš_´¸³Ä7È3Ã<Ô1OØ*¨gÔ5‘7¸5ˆà˜8˜*Ð$WÐXð 	ô ˜cÓ"Ð"à�xÐÐr*   c               ó    € V ^8„  d   QhRRRR/# )r#   rÀ   r!   r%   údate | datetimer&   )r'   s   "r(   r)   r)     s   € ÷ ñ  )ð °ñ r*   c                óN   € V P                  4       w  rpVf   Rp\        V4      hV# )zæ
Get the start property with validation.

Parameters:
    component: The component from which to get its start property.

Returns:
    The ``DTSTART`` value.

Raises:
    ~error.IncompleteComponent: If no ``DTSTART`` is present.

zNo DTSTART given.)Ú_get_start_end_durationr   )rÀ   rc  Ú_endÚ	_durationrt  s   &    r(   Úget_start_propertyr|    s1   € ð '×>Ñ>Ó@Ñ€E�Ø‚}Ø!ˆÜ! #Ó&Ð&Ø€Lr*   c               ó$   € V ^8„  d   QhRRRRRR/# )r#   rÀ   r!   rn  rZ   r%   rw  r&   )r'   s   "r(   r)   r)   %  s!   € ÷ *ñ * 	ð *¸ð *Àñ *r*   c                ó~  € V P                  4       w  r#pVfR   VfN   Vf   VR8X  d   RMRpRV R2p\        V4      hVR8X  d%   \        V4      '       d   V\        ^R7      ,           # V# VeQ   Ve1   V P                  R8X  d   VP                  4       ^ 8:  d   V# W$,           # VR8X  d   RMRpRV R2p\        V4      hV# )a“  
Get the end property with fallback logic for ``Event`` and ``Todo`` components.

Parameters:
    component: The component to get end from
    end_property: The end property name, either ``DTEND`` for ``Event`` or
        ``DUE`` for ``Todo``.

Returns:
    The computed end value.

Raises:
    ~error.IncompleteComponent: If the provided information is incomplete
        to compute the end property.

r  r  zNo z or DURATION+DTSTART given.)ÚdaysÚVEVENT)ry  r   r   r   r“   Útotal_seconds)rÀ   rn  rc  rb  r  rs  rt  s   &&     r(   Úget_end_propertyr‚  %  sØ   € ð$ %×<Ñ<Ó>Ñ€E�à
‚{�xÒ'ØŠ=Ø".°'Ô"9‘w¸uˆHØ˜�zÐ!<Ð=ˆCÜ% cÓ*Ð*ð
 ˜7Ô"¤w¨u§~¢~Øœ9¨!Ô,Õ,Ð,ØˆàÒØÒØ�~‰~ Ô)¨h×.DÑ.DÓ.FÈ!Ô.KØ�ØÕ#Ð#Ø*¨gÔ5‘7¸5ˆØ�H�:Ð8Ð9ˆÜ! #Ó&Ð&à€Jr*   c               ó    € V ^8„  d   QhRRRR/# )r#   rÀ   r!   r%   r   r&   )r'   s   "r(   r)   r)   R  s   € ÷ +ñ + Yð +°9ñ +r*   c                óp   € RV 9   d   V R,          P                   # V P                  V P                  ,
          # )zÈ
Get the duration property with fallback calculation from start and end.

Parameters:
    component: The component from which to get its duration property.

Returns:
    The duration as a timedelta.

r  )r1   rb  rc  rÙ   s   &r(   Úget_duration_propertyr…  R  s2   € ð �YÔØ˜Õ$×'Ñ'Ð'ð �=‰=˜9Ÿ?™?Õ*Ð*r*   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r#   rÀ   r!   r  r  ÚlockedzLiteral['start', 'end']rn  rZ   r%   r:   r&   )r'   s   "r(   r)   r)   e  s:   € ÷ 2ñ 2Øð2àð2ð $ð2ð ð	2ð
 
ñ2r*   c                ó0  € Vf   RV 9   d   R# V P                   pW@n        R# \        V\        4      '       g%   R\	        V4      P
                   R2p\        V4      hV P                  pVe0   \        V4      '       d   VP                  ^ 8w  d   Rp\        V4      hVR8X  d,   Vf   Rp\        V4      hV P                  VR4       Wn        R# VR8X  d4   V P                  pWq,
          V n        V P                  VR4       Wn        R# R	V: 2p\        V4      h)
a©  
Set the duration with explicit locking behavior for ``Event`` and ``Todo``.

Parameters:
    component: The component to modify, either ``Event`` or ``Todo``.
    duration: The duration to set, or ``None`` to convert to ``DURATION`` property.
    locked: Which property to keep unchanged, either ``start`` or ``end``.
    end_property: The end property name, either ``DTEND`` for ``Event`` or
        ``DUE`` for ``Todo``.

Nr  r  rú   rq  rc  z:Cannot set duration without DTSTART. Set start time first.rb  z%locked must be 'start' or 'end', not )r  r  r.   r   rë   rõ   rˆ   r]  r   rr  r   r   rD   rb  r‚   )rÀ   r  r‡  rn  Úcurrent_durationrt  rc  Úcurrent_ends   &&&&    r(   Úset_duration_with_lockingr‹  e  s  € ð$ ÒØ˜Ô"ÙØ$×-Ñ-ÐØ-ÔÙä�h¤	×*Ò*Ø#¤D¨£N×$;Ñ$;Ð#<¸AÐ>ˆÜ˜‹nÐð ×Ñ€EØÒœW UŸ^š^°×0@Ñ0@ÀAÔ0EØJˆÜ˜cÓ"Ð"à�ÔàŠ=ØNˆCÜ% cÓ*Ð*Ø�‰�l DÔ)Ø%ÖØ	�5Œà—m‘mˆØ'Õ2ˆ	ÔØ�‰�l DÔ)Ø%Öà5°f±ZÐ@ˆÜ˜‹oÐr*   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r#   rÀ   r!   rc  rw  r‡  z!Literal['duration', 'end'] | Nonern  rZ   r%   r:   r&   )r'   s   "r(   r)   r)   š  s:   € ÷ /ñ /Øð/àð/ð .ð/ð ð	/ð
 
ñ/r*   c                óX  € Vf   RV 9   d   RpMW09   d   RpMRpVR8X  dB   RV 9   g   W09   d   V P                   MRpWn        Ve   V P                  VR4       W@n        R# R# VR8X  d3   V P                  pWn        V P                  RR4       \        WV4       R# RV: 2p\        V4      h)a¥  
Set the start with explicit locking behavior for ``Event`` and ``Todo`` components.

Parameters:
    component: The component to modify, either ``Event`` or ``Todo``.
    start: The start time to set.
    locked: Which property to keep unchanged, either ``duration``, ``end``,
        or ``None`` for auto-detect.
    end_property: The end property name, either ``DTEND`` for ``Event`` or
        ``DUE`` for ``Todo``.

Nr  r  rb  z/locked must be 'duration', 'end', or None, not )r  r]  rD   r  rb  Úsetattrr‚   )rÀ   rc  r‡  rn  r‰  rŠ  rt  s   &&&&   r(   Úset_start_with_lockingr�  š  s¿   € ð$ ‚~à˜Ô"Ø‰FØÔ&Ø‰Fð  ˆFà�Ôð ˜YÔ&¨,Ô*Cð ×Òàð 	ð
 "ÔØÒ'Ø�M‰M˜,¨Ô-Ø!1Öñ (ð 
�5Œà—m‘mˆØ!ÔØ�‰�j $Ô'Ü�	¨Ö5à?À¹zÐJˆÜ˜‹oÐr*   c          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r#   rÀ   r!   rb  rw  r‡  zLiteral['start', 'duration']rn  rZ   r%   r:   r&   )r'   s   "r(   r)   r)   Ì  s:   € ÷ ñ Øðà	ðð )ðð ð	ð
 
ñr*   c                óæ   € VR8X  d!   V P                  RR4       \        WV4       R# VR8X  d4   V P                  pW,
          V n        V P                  VR4       W@n        R# RV: 2p\        V4      h)av  
Set the end with explicit locking behavior for Event and Todo components.

Parameters:
    component: The component to modify, either ``Event`` or ``Todo``.
    end: The end time to set.
    locked: Which property to keep unchanged, either ``start`` or ``duration``.
    end_property: The end property name, either ``DTEND`` for ``Event`` or ``DUE``
        for ``Todo``.

rc  r  Nr  z*locked must be 'start' or 'duration', not )rD   rŽ  r  r]  r  r‚   )rÀ   rb  r‡  rn  r‰  rt  s   &&&&  r(   Úset_end_with_lockingr’  Ì  sm   € ð" �Ôà�‰�j $Ô'Ü�	¨Ö-Ø	�:Ô	à$×-Ñ-ÐØÕ2ˆ	ÔØ�‰�l DÔ)Ø-Öà:¸6¹*ÐEˆÜ˜‹oÐr*   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   zlist[Image]r&   )r'   s   "r(   r)   r)   ì  s   € ÷ >ñ >�ið > Kñ >r*   c                ó®   € V P                  R. 4      p\        V\        4      '       g   V.pV Uu. uF  p\        P                  ! V4      NK  	  up# u upi )aÔ  IMAGE specifies an image associated with the calendar or a calendar component.

Description:
    This property specifies an image for an iCalendar
    object or a calendar component via a URI or directly with inline
    data that can be used by calendar user agents when presenting the
    calendar data to a user.  Multiple properties MAY be used to
    specify alternative sets of images with, for example, varying
    media subtypes, resolutions, or sizes.  When multiple properties
    are present, calendar user agents SHOULD display only one of them,
    picking one that provides the most appropriate image quality, or
    display none.  The "DISPLAY" parameter is used to indicate the
    intended display mode for the image.  The "ALTREP" parameter,
    defined in :rfc:`5545`, can be used to provide a "clickable" image
    where the URI in the parameter value can be "launched" by a click
    on the image in the calendar user agent.

Conformance:
    This property can be specified multiple times in an
    iCalendar object or in "VEVENT", "VTODO", or "VJOURNAL" calendar
    components.

.. note::

    At the present moment, this property is read-only. If you require a setter,
    please open an issue or a pull request.
ÚIMAGE)r-   r.   r   r   Úfrom_property_value)r$   ÚimagesÚimgs   &  r(   Ú_get_imagesr™  ì  sK   € ð8 �X‰X�g˜rÓ"€FÜ�fœn×-Ò-Ø�ˆÙ6<Ó=±f¨sŒE×%Ò% cÖ*±fÑ=Ð=ùÒ=ó   °Ac               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   zlist[Conference]r&   )r'   s   "r(   r)   r)     s#   € ÷ YKñ YK˜9ð YKÐ)9ñ YKr*   c                ó®   € V P                  R. 4      p\        V\        4      '       g   V.pV Uu. uF  p\        P                  ! V4      NK  	  up# u upi )a-  Return the CONFERENCE properties as a list.

Purpose:
    This property specifies information for accessing a conferencing system.

Conformance:
    This property can be specified multiple times in a
    "VEVENT" or "VTODO" calendar component.

Description:
    This property specifies information for accessing a
    conferencing system for attendees of a meeting or task.  This
    might be for a telephone-based conference number dial-in with
    access codes included (such as a tel: URI :rfc:`3966` or a sip: or
    sips: URI :rfc:`3261`), for a web-based video chat (such as an http:
    or https: URI :rfc:`7230`), or for an instant messaging group chat
    room (such as an xmpp: URI :rfc:`5122`).  If a specific URI for a
    conferencing system is not available, a data: URI :rfc:`2397`
    containing a text description can be used.

    A conference system can be a bidirectional communication channel
    or a uni-directional "broadcast feed".

    The "FEATURE" property parameter is used to describe the key
    capabilities of the conference system to allow a client to choose
    the ones that give the required level of interaction from a set of
    multiple properties.

    The "LABEL" property parameter is used to convey additional
    details on the use of the URI.  For example, the URIs or access
    codes for the moderator and attendee of a teleconference system
    could be different, and the "LABEL" property parameter could be
    used to "tag" each "CONFERENCE" property to indicate which is
    which.

    The "LANGUAGE" property parameter can be used to specify the
    language used for text values used with this property (as per
    Section 3.2.10 of :rfc:`5545`).

Example:
    The following are examples of this property:

    .. code-block:: ics

        CONFERENCE;VALUE=URI;FEATURE=PHONE,MODERATOR;
         LABEL=Moderator dial-in:tel:+1-412-555-0123,,,654321
        CONFERENCE;VALUE=URI;FEATURE=PHONE;
         LABEL=Attendee dial-in:tel:+1-412-555-0123,,,555123
        CONFERENCE;VALUE=URI;FEATURE=PHONE;
         LABEL=Attendee dial-in:tel:+1-888-555-0456,,,555123
        CONFERENCE;VALUE=URI;FEATURE=CHAT;
         LABEL=Chat room:xmpp:chat-123@conference.example.com
        CONFERENCE;VALUE=URI;FEATURE=AUDIO,VIDEO;
         LABEL=Attendee dial-in:https://chat.example.com/audio?id=123456

    Get all conferences:

    .. code-block:: pycon

        >>> from icalendar import Event
        >>> event = Event()
        >>> event.conferences
        []

    Set a conference:

    .. code-block:: pycon

        >>> from icalendar import Event, Conference
        >>> event = Event()
        >>> event.conferences = [
        ...     Conference(
        ...         "tel:+1-412-555-0123,,,654321",
        ...         feature="PHONE,MODERATOR",
        ...         label="Moderator dial-in",
        ...         language="EN",
        ...     )
        ... ]
        >>> print(event.to_ical())
        BEGIN:VEVENT
        CONFERENCE;FEATURE="PHONE,MODERATOR";LABEL=Moderator dial-in;LANGUAGE=EN;V
         ALUE=URI:tel:+1-412-555-0123,,,654321
        END:VEVENT

Ú
CONFERENCE)r-   r.   r   r   Úfrom_uri©r$   ÚconferencesÚ
conferences   &  r(   Ú_get_conferencesr¢    sL   € ðl —(‘(˜<¨Ó,€KÜ�k¤>×2Ò2Ø"�mˆÙ>IÓJ¹k°
ŒJ×Ò 
Ö+¹kÑJÐJùÒJrš  c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r   zlist[Conference] | Noner&   )r'   s   "r(   r)   r)   m  s   € ÷ 4ñ 4˜9ð 4Ð3Jñ 4r*   c                ó‚   € \        V 4       T;'       g    .  F#  pV P                  RVP                  4       4       K%  	  R# )zSet the conferences.r�  N)Ú_del_conferencesr=   Úto_urirŸ  s   && r(   Ú_set_conferencesr§  m  s6   € ä�TÔØ!×'Ð' RÒ'ˆ
Ø�‰�˜z×0Ñ0Ó2Ö3ó (r*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   r)   t  s   € ÷ ñ ˜9ñ r*   c                ó(   € V P                  R4       R# )zDelete all conferences.r�  NrC   rE   s   &r(   r¥  r¥  t  s   € à‡H�Hˆ\Ör*   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   z!list[vUri | vUid | vXmlReference]r&   )r'   s   "r(   r)   r)   |  s   € ÷ mñ m�Yð mÐ#Dñ mr*   c                ó\   € V P                  R. 4      p\        V\        4      '       g   V.pV# )aæ  LINK properties as a list.

Purpose:
    LINK provides a reference to external information related to a component.

Property Parameters:
    The VALUE parameter is required.
    Non-standard, link relation type, format type, label, and language parameters
    can also be specified on this property.
    The LABEL parameter is defined in :rfc:`7986`.

Conformance:
    This property can be specified zero or more times in any iCalendar component.
    LINK is specified in :rfc:`9253`.
    The LINKREL parameter is required.

Description:
    When used in a component, the value of this property points to
    additional information related to the component.
    For example, it may reference the originating web server.

    This property is a serialization of the model in :rfc:`8288`,
    where the link target is carried in the property value,
    the link context is the containing calendar entity,
    and the link relation type and any target attributes
    are carried in iCalendar property parameters.

    The LINK property parameters map to :rfc:`8288` attributes as follows:

    LABEL
        This parameter maps to the "title"
        attribute defined in Section 3.4.1 of :rfc:`8288`.
        LABEL is used to label the destination
        of a link such that it can be used as a human-readable identifier
        (e.g., a menu entry) in the language indicated by the LANGUAGE
        (if present).
    LANGUAGE
        This parameter maps to the "hreflang" attribute defined in Section 3.4.1
        of :rfc:`8288`. See :rfc:`5646`. Example: ``en``, ``de-ch``.
    LINKREL
        This parameter maps to the link relation type defined in Section 2.1 of
        :rfc:`8288`. See `Registered Link Relation Types
        <https://www.iana.org/assignments/link-relations/link-relations.xhtml>`_.
    FMTTYPE
        This parameter maps to the "type" attribute defined in Section 3.4.1 of
        :rfc:`8288`.

    There is no mapping for "title*", "anchor", "rev", or "media" :rfc:`8288`.

Examples:
    The following is an example of this property,
    which provides a reference to the source for the calendar object.

    .. code-block:: ics

        LINK;LINKREL=SOURCE;LABEL=Venue;VALUE=URI:
         https://example.com/events

    The following is an example of this property,
    which provides a reference to an entity from which this one was derived.
    The link relation is a vendor-defined value.

    .. code-block:: ics

        LINK;LINKREL="https://example.com/linkrel/derivedFrom";
         VALUE=URI:
         https://example.com/tasks/01234567-abcd1234.ics

    The following is an example of this property,
    which provides a reference to a fragment of an XML document.
    The link relation is a vendor-defined value.

    .. code-block:: ics

        LINK;LINKREL="https://example.com/linkrel/costStructure";
         VALUE=XML-REFERENCE:
         https://example.com/xmlDocs/bidFramework.xml
         #xpointer(descendant::CostStruc/range-to(
         following::CostStrucEND[1]))

    Set a link :class:`icalendar.prop.uri.vUri` to the event page:

    .. code-block:: pycon

        >>> from icalendar import Event, vUri
        >>> from datetime import datetime
        >>> link = vUri(
        ...     "http://example.com/event-page",
        ...     params={"LINKREL":"SOURCE"}
        ... )
        >>> event = Event.new(
        ...     start=datetime(2025, 9, 17, 12, 0),
        ...     summary="An Example Event with a page"
        ... )
        >>> event.links = [link]
        >>> print(event.to_ical())
        BEGIN:VEVENT
        SUMMARY:An Example Event with a page
        DTSTART:20250917T120000
        DTSTAMP:20250517T080612Z
        UID:d755cef5-2311-46ed-a0e1-6733c9e15c63
        LINK;LINKREL="SOURCE":http://example.com/event-page
        END:VEVENT

ÚLINKrU   )r$   Úlinkss   & r(   Ú
_get_linksr®  |  s.   € ðT �H‰H�V˜RÓ €EÜ�eœT×"Ò"Ø�ˆØ€Lr*   r   ÚLINKS_TYPE_SETTERc               ó$   € V ^8„  d   QhRRRRRR/# )r#   r$   r!   r­  r¯  r%   r:   r&   )r'   s   "r(   r)   r)   ñ  s"   € ÷ 
ñ 
�Yð 
Ð'8ð 
¸Tñ 
r*   c                óô   € \        V 4       Vf   R# \        V\        \        \        \
        34      '       d   V.pV F7  p\        V4      \        J d   \        VRR/R7      pV P                  RV4       K9  	  R# )zSet the LINKs.NÚVALUEÚURI)re   r¬  )Ú
_del_linksr.   rZ   r   r   r   rë   r=   )r$   r­  Úlinks   && r(   Ú
_set_linksr¶  ñ  sd   € äˆtÔØ‚}ÙÜ�%œ#œt¤T¬=Ð9×:Ò:Ø�ˆÛˆÜ�‹:œÓÜ˜ g¨uÐ%5Ô6ˆDØ�‰�˜Öó r*   c               ó    € V ^8„  d   QhRRRR/# r9   r&   )r'   s   "r(   r)   r)   þ  s   € ÷ ñ �Yð  4ñ r*   c                ó(   € V P                  R4       R# )zDelete all links.r¬  NrC   rE   s   &r(   r´  r´  þ  s   € à‡H�HˆVÖr*   ÚRELATED_TO_TYPE_SETTERc               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   zlist[vText | vUri | vUid]r&   )r'   s   "r(   r)   r)   
	  s   € ÷ @ñ @˜)ð @Ð(Añ @r*   c                ó\   € V P                  R. 4      p\        V\        4      '       g   V.# V# )aÍ  RELATED-TO properties as a list.

Purpose:
    This property is used to represent a relationship or reference
    between one calendar component and another.
    :rfc:`9523` allows URI or UID values and a GAP parameter.

Value Type:
    :rfc:`5545`: TEXT
    :rfc:`9253`: URI, UID

Conformance:
    Since :rfc:`5545`. this property can be specified in the "VEVENT",
    "VTODO", and "VJOURNAL" calendar components.
    Since :rfc:`9523`, this property MAY be specified in any
    iCalendar component.

Description (:rfc:`5545`):
    The property value consists of the persistent, globally
    unique identifier of another calendar component.  This value would
    be represented in a calendar component by the "UID" property.

    By default, the property value points to another calendar
    component that has a PARENT relationship to the referencing
    object.  The "RELTYPE" property parameter is used to either
    explicitly state the default PARENT relationship type to the
    referenced calendar component or to override the default PARENT
    relationship type and specify either a CHILD or SIBLING
    relationship.  The PARENT relationship indicates that the calendar
    component is a subordinate of the referenced calendar component.
    The CHILD relationship indicates that the calendar component is a
    superior of the referenced calendar component.  The SIBLING
    relationship indicates that the calendar component is a peer of
    the referenced calendar component.

    Changes to a calendar component referenced by this property can
    have an implicit impact on the related calendar component.  For
    example, if a group event changes its start or end date or time,
    then the related, dependent events will need to have their start
    and end dates changed in a corresponding way.  Similarly, if a
    PARENT calendar component is cancelled or deleted, then there is
    an implied impact to the related CHILD calendar components.  This
    property is intended only to provide information on the
    relationship of calendar components.  It is up to the target
    calendar system to maintain any property implications of this
    relationship.

Description (:rfc:`9253`):
    By default or when VALUE=UID is specified, the property value
    consists of the persistent, globally unique identifier of another
    calendar component. This value would be represented in a calendar
    component by the UID property.

    By default, the property value
    points to another calendar component that has a PARENT relationship
    to the referencing object. The RELTYPE property parameter is used
    to either explicitly state the default PARENT relationship type to
    the referenced calendar component or to override the default
    PARENT relationship type and specify either a CHILD or SIBLING
    relationship or a temporal relationship.

    The PARENT relationship
    indicates that the calendar component is a subordinate of the
    referenced calendar component. The CHILD relationship indicates
    that the calendar component is a superior of the referenced calendar
    component. The SIBLING relationship indicates that the calendar
    component is a peer of the referenced calendar component.

    To preserve backwards compatibility, the value type MUST
    be UID when the PARENT, SIBLING, or CHILD relationships
    are specified.

    The FINISHTOSTART, FINISHTOFINISH, STARTTOFINISH,
    or STARTTOSTART relationships define temporal relationships, as
    specified in the RELTYPE parameter definition.

    The FIRST and NEXT
    define ordering relationships between calendar components.

    The DEPENDS-ON relationship indicates that the current calendar
    component depends on the referenced calendar component in some manner.
    For example, a task may be blocked waiting on the other,
    referenced, task.

    The REFID and CONCEPT relationships establish
    a reference from the current component to the referenced component.
    Changes to a calendar component referenced by this property
    can have an implicit impact on the related calendar component.
    For example, if a group event changes its start or end date or
    time, then the related, dependent events will need to have their
    start and end dates and times changed in a corresponding way.
    Similarly, if a PARENT calendar component is canceled or deleted,
    then there is an implied impact to the related CHILD calendar
    components. This property is intended only to provide information
    on the relationship of calendar components.

    Deletion of the target component, for example, the target of a
    FIRST, NEXT, or temporal relationship, can result in broken links.

    It is up to the target calendar system to maintain any property
    implications of these relationships.

Examples:
    :rfc:`5545` examples of this property:

    .. code-block:: ics

        RELATED-TO:jsmith.part7.19960817T083000.xyzMail@example.com

    .. code-block:: ics

        RELATED-TO:19960401-080045-4000F192713-0052@example.com

    :rfc:`9253` examples of this property:

    .. code-block:: ics

        RELATED-TO;VALUE=URI;RELTYPE=STARTTOFINISH:
         https://example.com/caldav/user/jb/cal/
         19960401-080045-4000F192713.ics

See also :class:`icalendar.enums.RELTYPE`.

ú
RELATED-TOrU   )r$   r4   s   & r(   Ú_get_related_tor½  
	  s.   € ðz �X‰X�l BÓ'€FÜ�fœd×#Ò#ØˆxˆØ€Mr*   c               ó$   € V ^8„  d   QhRRRRRR/# )r#   r$   r!   r+  r¹  r%   r:   r&   )r'   s   "r(   r)   r)   �	  s"   € ÷ &ñ &˜)ð &Ð-Cð &Èñ &r*   c                ó�   € \        V 4       Vf   R# \        V\        4      '       g   V.pV F  pV P                  RV4       K  	  R# )zSet the RELATED-TO properties.Nr¼  )Ú_del_related_tor.   r/   r=   )r$   r+  r?   s   && r(   Ú_set_related_torÁ  �	  s>   € ä�DÔØ‚~ÙÜ�fœd×#Ò#Ø�ˆÛˆØ�‰�˜uÖ%ó r*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   r)   ˜	  s   € ÷ !ñ !˜)ñ !r*   c                ó*   € V P                  RR4       R# )z!Delete the RELATED-TO properties.r¼  NrC   rE   s   &r(   rÀ  rÀ  ˜	  s   € à‡H�Hˆ\˜4Ö r*   c               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   r%   z
list[vUri]r&   )r'   s   "r(   r)   r)    	  s   € ÷ )ñ )˜	ð ) jñ )r*   c                ó\   € V P                  R. 4      p\        V\        4      '       g   V.pV# )aÕ  CONCEPT

Purpose:
    CONCEPT defines the formal categories for a calendar component.

Conformance:
    Since :rfc:`9253`,
    this property can be specified zero or more times in any iCalendar component.

Description:
    This property is used to specify formal categories or classifications of
    the calendar component. The values are useful in searching for a calendar
    component of a particular type and category.

    This categorization is distinct from the more informal "tagging" of components
    provided by the existing CATEGORIES property. It is expected that the value of
    the CONCEPT property will reference an external resource that provides
    information about the categorization.

    In addition, a structured URI value allows for hierarchical categorization of
    events.

    Possible category resources are the various proprietary systems, for example,
    the Library of Congress, or an open source of categorization data.

Examples:
    The following is an example of this property.
    It points to a server acting as the source for the calendar object.

    .. code-block:: ics

        CONCEPT:https://example.com/event-types/arts/music

.. seealso::

    :attr:`icalendar.prop.categories.vCategory`
ÚCONCEPTrU   )r$   Úconceptss   & r(   Ú_get_conceptsrÈ   	  s.   € ðL �x‰x˜	 2Ó&€HÜ�h¤×%Ò%Ø�:ˆØ€Or*   ÚCONCEPTS_TYPE_SETTERc               ó    € V ^8„  d   QhRRRR/# )r#   r$   r!   rÇ  rÉ  r&   )r'   s   "r(   r)   r)   Ï	  s   € ÷ #ñ #˜	ð #Ð-Añ #r*   c                ó�   € \        V 4       Vf   R# \        V\        4      '       g   V.pV F  pV P                  RV4       K  	  R# )zSet the concepts.NrÆ  )Ú_del_conceptsr.   r/   r=   )r$   rÇ  r?   s   && r(   Ú_set_conceptsrÍ  Ï	  s?   € ä�$ÔØÒÙÜ�h¤×%Ò%Ø�:ˆÛˆØ�‰�˜EÖ"ó r*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   r)   Ú	  s   € ÷ ñ ˜	ñ r*   c                ó*   € V P                  RR4       R# )zDelete the concepts.rÆ  NrC   rE   s   &r(   rÌ  rÌ  Ú	  s   € à‡H�HˆY˜Ör*   c               ó    € V ^8„  d   QhRRRR/# )r#   r“   rZ   r]   r&   )r'   s   "r(   r)   r)   â	  s   € ÷ /ñ / ð /¨#ñ /r*   c                óZ   a a€ R V 3R llpR VV 3R llpR V 3R llo\        W#SVR7      # )zCA property for an iCalendar Property that can occur multiple times.c               ó    € V ^8„  d   QhRRRR/# r%  r&   )r'   s   "r(   r)   Ú+multi_string_property.<locals>.__annotate__å	  s   € ÷ ñ �9ð  ñ r*   c                ó^   <€ V P                  S. 4      p\        V\        4      '       g   V.pV# )z*Get the values of a multi-string property.rU   )r$   r?   r“   s   & €r(   rg   Ú#multi_string_property.<locals>.fgetå	  s,   ø€ à—‘˜˜rÓ"ˆÜ˜%¤×&Ò&Ø�GˆEØˆr*   c               ó$   € V ^8„  d   QhRRRRRR/# )r#   r$   r!   r?   zlist[str] | str | Noner%   r:   r&   )r'   s   "r(   r)   rÓ  ì	  s"   € ÷ "ñ "�9ð "Ð%;ð "Àñ "r*   c                óŒ   <€ S! V 4       Vf   R# \        V\        4      '       g   V.pV F  pV P                  SV4       K  	  R# )z*Set the values of a multi-string property.N)r.   r/   r=   r¢   s   &&€€r(   ro   Ú#multi_string_property.<locals>.fsetì	  s>   ø€ áˆTŒ
ØŠ=ÙÜ˜%¤×&Ò&Ø�GˆEÛˆEØ�H‰H�T˜5Ö!ó r*   c               ó   € V ^8„  d   QhRR/# rr   r&   )r'   s   "r(   r)   rÓ  ö	  r‹   r*   c                ó,   <€ V P                  SR4       R# )z-Delete the values of a multi-string property.NrC   r¦   s   &€r(   rn   Ú#multi_string_property.<locals>.fdelö	  r�   r*   r¨   rv   )r“   r]   rg   ro   rn   s   f&  @r(   Úmulti_string_propertyrÜ  â	  s2   ù€ ÷ð ÷"ñ "÷ð ô �D ¨#Ô.Ð.r*   ÚREFIDaž  REFID

Purpose:
    REFID acts as a key for associated iCalendar entities.

Conformance:
    Since :rfc:`9253`,
    this property can be specified zero or more times in any iCalendar component.

Description:
    The value of this property is free-form text that creates an
    identifier for associated components.
    All components that use the same REFID value are associated through
    that value and can be located or retrieved as a group.
    For example, all of the events in a travel itinerary
    would have the same REFID value, so as to be grouped together.

Examples:
    The following is an example of this property.

    .. code-block:: ics

        REFID:itinerary-2014-11-17

    Use a REFID to associate several VTODOs:

    .. code-block:: pycon

        >>> from icalendar import Todo
        >>> todo_1 = Todo.new(
        ...     summary="turn off stove",
        ...     refids=["travel", "alps"]
        ... )
        >>> todo_2 = Todo.new(
        ...     summary="pack backpack",
        ...     refids=["travel", "alps"]
        ... )
        >>> todo_1.refids == todo_2.refids
        True

.. note::

    List modifications do not modify the component.
zREQUEST-STATUSaÑ  This property defines the status code returned for a scheduling request.

Setting this property replaces all existing REQUEST-STATUS values. A :class:`str`
is stored as-is. Setting ``None`` or an empty list removes all
REQUEST-STATUS values, as does deleting the property.

The value consists of a short return status component, a longer
return status description component, and optionally a status-specific
data component, separated by semicolons (statcode;statdesc[;extdata]).
The return status components are defined in :rfc:`5545#section-3.8.8.3`.

Note:
    List modifications do not modify the component. Methods such as
    ``append()``, ``extend()``, and ``remove()``, as well as item
    assignment, act on a copy. Assign the list back to the property, or
    use :meth:`Component.add <icalendar.cal.component.Component.add>`
    with a typed value instead.

Parameters:
    request_status(str | list[str] | None):
        A single status string, or a list of status strings to set.

Example:
    Add a request status to an event:

    .. code-block:: pycon

        >>> from icalendar import Event
        >>> event = Event.new(request_status="2.0;Success")
        >>> event.REQUEST_STATUS == ["2.0;Success"]
        True
ÚRECURRENCE_IDÚREQUEST_STATUS_propertyÚattendees_propertyÚbusy_type_propertyÚcategories_propertyÚclass_propertyÚcolor_propertyÚcomments_propertyÚconcepts_propertyÚconferences_propertyÚcontacts_propertyr  Údescription_propertyÚdescriptions_propertyr!  Úexdates_propertyr…  r‚  ru  r|  Úimages_propertyÚlinks_propertyÚlocation_propertyrw   rÜ  Úorganizer_propertyÚpriority_propertyr  r   r  r  Úrdates_propertyÚrefids_propertyÚrelated_to_propertyÚrepeat_propertyÚrfc_7953_dtend_propertyÚrfc_7953_dtstart_propertyrd  rg  Úrrules_propertyÚsequence_propertyr‹  r’  r�  r�   rª   Úsource_propertyÚstatus_propertyÚsummary_propertyÚtransparency_propertyÚuid_propertyÚurl_property)Nr«   )”Ú__conditional_annotations__rS  Ú
__future__r   rÍ   r   r   r   Útypingr   r   r   Úicalendar.enumsr	   r
   r   r   r   Úicalendar.errorr   r   Úicalendar.parser_toolsr   Úicalendar.propr   r   r   r   r   r   r   r   r   r   Úicalendar.prop.conferencer   Úicalendar.prop.imager   Úicalendar.timezoner   Úicalendar.toolsr   Úcollections.abcr   r    Úicalendar.calr!   r7   r@   r<   r^   rñ  rK   rO   rN   rë  rW   r÷  rw   r�   rª   r»   rä  rø  rÐ   rÌ   rÔ   râ  rÝ   rá   rà   rà  rý  rû  ré  r  ÚX_MOZ_SNOOZE_TIME_propertyÚX_MOZ_LASTACK_propertyr  r  r  r   r!  r2  rê  rå  rÞ  r7  r<  r;  rï  rI  ÚBUSY_UNAVAILABLErá  rT  rô  rð  ÚPUBLICrã  ÚOPAQUErü  rú  rþ  rù  rî  rè  r\  rö  rõ  rd  rg  ÚsetterÚdeleterru  r|  r‚  r…  r‹  r�  r’  r™  rì  r¢  r§  r¥  rç  r®  rZ   r/   r¯  r  r¶  r´  rí  r¹  r½  rÁ  rÀ  ró  rÈ  rÉ  rÍ  rÌ  ræ  rÜ  rò  rß  Ú__all__)rÿ  s   @r(   Ú<module>r     sÝ  øðÜ .å "ã ß .Ñ .ß 4Ñ 4ç DÕ Dß @Ý 1÷÷ ÷ õ 1Ý &Ý "Ý #çß2å'õ]õ@	!õñ
 ˜;¨°[ÓA€õMõ`"õñ
 ˜L¨,¸ÓEÐ õmñ` ˜;Ó'€õ&+ðR%+ØBF÷%+õP+0÷\)0ñX (Øðó"€ñH (ØØðBðF ôMGÐ õTõ	õ&ñ
 ØØØð1ó	6Ð õr	õõñ
 ØØØð/ó	4Ð ñl &Ø	ðNóQ€ñf 0ØØðóÐ ñ> 4ØØðó#Ð ðX Ø15÷C0ñL 1ØÐLóÐ ñ -ØÐMóÐ õ
õ	õð

"Ð õõ,ñB ,ØðóÐ ñ< (ØðóÐ ñ. 'ØØØ	ˆ8ÐØˆ8…Oðð ó'€õ.$!õN%õñ
 ˜n¨n¸nÓMÐ õ5ñ, 1ØØØ×Ñðó	Ð õ(Añ> (Ó)€á'ØØð,ðZ ôa1Ð ñf -ØØ	Ø	‡L�Lðó	€ñ> 4ØØ
Ø
‡M�Mðó	Ð ñ( .ØØ
Øðó	€ñ2 &Ø	ð<ó?€ñB )Øðó€ñ2 1ØØðóÐ ñ8 (Øð=ó@Ð õF+ñ 8ØðóÐ ñ" 6ØðóÐ ð" 
ôó 
ðð, 
ôó 
ðð, ×Ñôó ðð ×Ññó ðõ: õzõ,*õZ+õ&2õj/õdõ@>ñD ˜;Ó'€õYKõx4õñ
  Ð 0Ð2BÐDTÓUÐ õmðb ˆ$…J�Õ˜Õ%¨Õ,¨t°C¸$µJÀÕ4EÈÕ4UÕ/VÕVð �9ó õ

õñ
 ˜* j°*Ó=€ð 	ˆ3…J�Õ˜Õ Õ$ t¨C°%­K¸$Õ,>ÀÕ,EÕ'FÕFð ˜	ó õ
@õF&õ!ñ
 ˜°ÀÓQÐ õ)ðX #' t¨c¥zÕ"2°SÕ"8¸4Õ"?À$Õ"FÐ �iÓ Fõ#õñ
 ˜]¨M¸=ÓIÐ õ/ñ6 (Øð+ó.€ñ` 0Øðó"Ð ðJ8Øð8àð8ð ð8ð ð	8ð
 ð8ð ð8ð ð8ð ð8ð ð8ð ð8ð ð8ð ð8ð ð8ð ð8ð ð8ð  ð!8ð" ð#8ð$ ð%8ð& ð'8ð( ð)8ð* ð+8ð, -ð-8ð. ð/8ð0 ð18ð2 ð38ð4 ð58ð6 #ð78ð8 ð98ð: ð;8ð< ð=8ð> ð?8ð@ %ðA8ðB ðC8ðD ðE8ðF ðG8ðH ðI8ðJ ðK8ðL ðM8ðN ðO8ðP  ðQ8ðR !ðS8ðT ðU8ðV ðW8ðX ðY8ðZ  ð[8ð\ ð]8ð^ ð_8ð` ða8ðb ðc8ðd ðe8ðf ðg8ðh ði8ðj ðk8ðl ðm8ðn ðo8‚r*   