hyb
2026-01-09 4cb426cb3ae31e772a09d4ade5b2f0242aaeefa0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Ë
oñúhEãóX—ddlmZddlmZddlZddlmZddlm    Z    ddl
m Z m Z m Z mZddlmZmZmZmZmZddlmZmZdd    lmZmZdd
lmZmZmZdd lm Z dd l!m"Z"dd l#m$Z$ddl%m&Z&m'Z'ddl(m)Z)m*Z*ddl+m,Z,erddl-m.Z.ddl/m0Z0m1Z1m2Z2ddl3m4Z4gd¢Z5e5D]Z6eD]Z7e6›de7›Z8ee6ee8<ŒŒdD]Z6eD]Z7e6›de7›Z9e9ee9<ŒŒeD] Z:de:›ede:›<Œd)d„Z;                d*d„Z<Gd„d«Z=Gd„de=«Z>d+d„Z?d,d„Z@d-d „ZAd-d!„ZBd.d"„ZCd/d#„ZDd0d$„ZEd0d%„ZFd0d&„ZGd0d'„ZHgd(¢ZIy)1é)Ú annotations)Ú TYPE_CHECKINGN)Úlib)Ú unique_deltas)Ú    TimestampÚget_unit_from_dtypeÚperiods_per_dayÚtz_convert_from_utc)ÚDAYSÚ MONTH_ALIASESÚ MONTH_NUMBERSÚMONTHSÚint_to_weekday)ÚOFFSET_TO_PERIOD_FREQSTRÚfreq_to_period_freqstr)Úbuild_field_sarrayÚmonth_position_check)Ú
DateOffsetÚDayÚ    to_offset)Úget_rule_month)Úcache_readonly)Úis_numeric_dtype)ÚDatetimeTZDtypeÚ PeriodDtype)ÚABCIndexÚ    ABCSeries)Úunique)Únpt)Ú DatetimeIndexÚSeriesÚTimedeltaIndex)ÚDatetimeLikeArrayMixin)ÚQSÚBQEÚBQSÚYSÚBYEÚBYSú-)ÚYÚQúW-có.—tj|d«S)z4
    Alias to closest period strings BQ->Q etc.
    N)rÚget)Ú
offset_strs úMH:\Change_password\venv_build\Lib\site-packages\pandas/tseries/frequencies.pyÚget_period_aliasr2Ns€ô $× 'Ñ '¨
°DÓ 9Ð9ócó¦—ddlm}t|t«rs|j}t j |jd«sEt|jt«s+|jtk(std|j›«‚|}t|d«snt|jt«r td«‚t j |jd«rt|«}|j«St|j«rtd|j›«‚t||«s||«}t!|«}|j«S)    aW
    Infer the most likely frequency given the input index.
 
    Parameters
    ----------
    index : DatetimeIndex, TimedeltaIndex, Series or array-like
      If passed a Series will use the values of the series (NOT THE INDEX).
 
    Returns
    -------
    str or None
        None if no discernible frequency.
 
    Raises
    ------
    TypeError
        If the index is not datetime-like.
    ValueError
        If there are fewer than three values.
 
    Examples
    --------
    >>> idx = pd.date_range(start='2020/12/01', end='2020/12/30', periods=30)
    >>> pd.infer_freq(idx)
    'D'
    r)r ÚmMz>cannot infer freq from a non-convertible dtype on a Series of ÚdtypezJPeriodIndex given. Check the `freq` attribute instead of using infer_freq.Úmz8cannot infer freq from a non-convertible index of dtype )Úpandas.core.apir Ú
isinstancerÚ_valuesrÚ is_np_dtyper6rÚobjectÚ    TypeErrorÚhasattrrÚ_TimedeltaFrequencyInfererÚget_freqrÚ_FrequencyInferer)Úindexr ÚvaluesÚinferers    r1Ú
infer_freqrEYs€õ:.ä%œÔ#Ø—‘ˆä O‰O˜FŸL™L¨$Ô /ܘ&Ÿ,™,¬Ô8؏|‰|œvÒ%äð"Ø"'§+¡+ ð0óð ðˆô 5˜'Ô "Ø Ü    E—K‘K¤Ô    -Üð +ó
ð    
ô
‰˜Ÿ™ cÔ    *ä,¨UÓ3ˆØ×ÑÓ!Ð!ä    ˜%Ÿ+™+Ô    &ÜØFÀuÇ{Á{ÀmÐ Tó
ð    
ô e˜]Ô +Ù˜eÓ$ˆä Ó&€GØ × Ñ Ó Ðr3có—eZdZdZdd„Zedd„«Zedd„«Zedd„«Zedd„«Z    dd„Z
edd„«Z edd    „«Z edd
„«Z edd „«Zdd „Zedd „«Zedd„«Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zy)rAz8
    Not sure if I can avoid the state machine here
    có$—||_|j|_t|t«r/t |j jj«|_    n$t |jj«|_    t|d«r=|j1t|j|j|j¬«|_t|«dkr td«‚|jjxs|jj |_y)NÚtz©Úresoéz(Need at least 3 dates to infer frequency)rBÚasi8Úi8valuesr9rrÚ_dataÚ_ndarrayr6Ú_cresor>rHr
ÚlenÚ
ValueErrorÚ_is_monotonic_increasingÚ_is_monotonic_decreasingÚ is_monotonic)ÚselfrBs  r1Ú__init__z_FrequencyInferer.__init__¤s̀؈Œ
ØŸ
™
ˆŒ ô eœXÔ &ô.Ø— ‘ ×$Ñ$×*Ñ*óˆDKô
.¨e¯n©n×.BÑ.BÓCˆDŒKô 5˜$Ô Øx‰xÐ#Ü 3Ø—M‘M 5§8¡8°$·+±+ô!” ô ˆu‹:˜Š>ÜÐGÓHÐ Hð J‰J× /Ñ /Ò V°4·:±:×3VÑ3Vð     Õr3có,—t|j«S©N)rrM©rVs r1Údeltasz_FrequencyInferer.deltasÃs€ä˜TŸ]™]Ó+Ð+r3có@—t|jj«SrY)rrBrLrZs r1Ú deltas_asi8z_FrequencyInferer.deltas_asi8Çs€ô˜TŸZ™ZŸ_™_Ó-Ð-r3có2—t|j«dk(S©Né)rQr[rZs r1Ú    is_uniquez_FrequencyInferer.is_uniqueÍs€ä4—;‘;Ó 1Ñ$Ð$r3có2—t|j«dk(Sr_)rQr]rZs r1Úis_unique_asi8z _FrequencyInferer.is_unique_asi8Ñs€ä4×#Ñ#Ó$¨Ñ)Ð)r3có—|jr|jjsy|jd}t    |j
«}|rt ||«r|j«S|jddgddggd¢fvry|jsy|jd}|dz}|d    z}|d    z}t ||«rtd
||z «St ||«rtd ||z «St ||«rtd ||z «St ||d z«rtd||d zz «St ||dz«rtd||dzz «Std|«S)z¨
        Find the appropriate frequency string to describe the inferred
        frequency of self.i8values
 
        Returns
        -------
        str or None
        Nrr`ééA)r`rerfÚbhéé<ÚhÚminÚsièÚmsi@BÚusÚns) rUrBÚ
_is_uniquer[r    rPÚ _is_multipleÚ_infer_daily_ruleÚ hour_deltasrcr]Ú_maybe_add_count)rVÚdeltaÚppdÚpphÚppmÚppss      r1r@z_FrequencyInferer.get_freqÕsW€ð× Ò ¨¯
©
×(=Ò(=Øà— ‘ ˜A‘ˆÜ˜dŸk™kÓ*ˆÙ ”\ %¨Ô-Ø×)Ñ)Ó+Ð +ð × Ñ   B ¨!¨R¨²+Ð>Ñ >Øð
×"Ò"Øà× Ñ  Ñ#ˆØR‰iˆØR‰iˆØR‰iˆÜ ˜˜sÔ #ä# C¨°©Ó5Ð 5Ü ˜% Ô %ä# E¨5°3©;Ó7Ð 7Ü ˜% Ô %ä# C¨°©Ó5Ð 5Ü ˜% #¨¡+Ô /ä# D¨%°3¸$±;Ñ*?Ó@Ð @Ü ˜% #¨Ñ"2Ô 4ä# D¨%°3¸)Ñ3CÑ*DÓEÐ Eô$ D¨%Ó0Ð 0r3cóp—t|j«}|jDcgc]}||z ‘Œ    c}Scc}wrY©r    rPr[)rVrvÚxs   r1Ú
day_deltasz_FrequencyInferer.day_deltass,€ä˜dŸk™kÓ*ˆØ!%§¡Ö-˜AC“Ò-Ð-ùÒ-s¤ 3cóv—t|j«dz}|jDcgc]}||z ‘Œ    c}Scc}w)Nrhr{)rVrwr|s   r1rsz_FrequencyInferer.hour_deltas s1€ä˜dŸk™kÓ*¨bÑ0ˆØ!%§¡Ö-˜AC“Ò-Ð-ùÒ-s§ 6cóD—t|j|j¬«S)NrI)rrMrPrZs r1Úfieldsz_FrequencyInferer.fieldss€ä! $§-¡-°d·k±kÔBÐBr3có^—t|jd|jj¬«S)Nr)Úunit)rrMrBr‚rZs r1Ú    rep_stampz_FrequencyInferer.rep_stamps €ä˜Ÿ™ qÑ)°·
±
·±Ô@Ð@r3cóV—t|j|jj«SrY)rr€rBÚ    dayofweekrZs r1rz&_FrequencyInferer.month_position_checks€Ü# D§K¡K°·±×1EÑ1EÓFÐFr3cóz—|jddz|jdz}t|jd««S)Nr+é ÚMÚi8)r€rÚastype)rVÚnmonthss  r1Úmdiffsz_FrequencyInferer.mdiffss7€à—+‘+˜cÑ" RÑ'¨$¯+©+°cÑ*:Ñ:ˆÜ˜WŸ^™^¨DÓ1Ó2Ð2r3cóP—t|jdjd««S)Nr+r‰)rr€rŠrZs r1Úydiffsz_FrequencyInferer.ydiffs!s!€ä˜TŸ[™[¨Ñ-×4Ñ4°TÓ:Ó;Ð;r3có>—|j«}|r?|jd}t|jj}|›d|›}t ||«S|j «}|rN|jddz }ddddœ}t||jjdz}|›d|›}t ||«S|j«}|rt ||jd«S|jr|j«S|j«ry|j«}    |    r|    Sy)    Nrr*rKr‡é é
)rér`ÚB) Ú_get_annual_rulerŽr rƒÚmonthrtÚ_get_quarterly_rulerŒÚ_get_monthly_ruleraÚ_get_daily_ruleÚ_is_business_dailyÚ _get_wom_rule)
rVÚ annual_ruleÚnyearsr•ÚaliasÚquarterly_ruleÚ    nquartersÚmod_dictÚ monthly_ruleÚwom_rules
          r1rrz#_FrequencyInferer._infer_daily_rule%s €Ø×+Ñ+Ó-ˆ Ù Ø—[‘[ ‘^ˆFÜ! $§.¡.×"6Ñ"6Ñ7ˆEØ"m 1 U GÐ,ˆEÜ# E¨6Ó2Ð 2à×1Ñ1Ó3ˆÙ ØŸ ™  A™¨Ñ*ˆIØ "¨Ñ,ˆHÜ! (¨4¯>©>×+?Ñ+?À!Ñ+CÑ"DÑEˆEØ%Ð& a¨ wÐ/ˆEÜ# E¨9Ó5Ð 5à×-Ñ-Ó/ˆ Ù Ü# L°$·+±+¸a±.ÓAÐ Aà >Š>Ø×'Ñ'Ó)Ð )à × "Ñ "Ô $Øà×%Ñ%Ó'ˆÙ ؈Oàr3cóâ—t|j«}|jd|z }|dzdk(r5t|jj «}d|›}t ||dz «St d|«S)Nrér-ÚD)r    rPr[rrƒÚweekdayrt)rVrvÚdaysÚwdrs     r1r˜z!_FrequencyInferer._get_daily_ruleEsm€Ü˜dŸk™kÓ*ˆØ{‰{˜1‰~ Ñ#ˆØ !‰8qŠ=ä §¡× 6Ñ 6Ó 8Ñ9ˆBؘ˜IˆEÜ# E¨4°!©8Ó4Ð 4ä# C¨Ó.Ð .r3cóЗt|j«dkDrytt|jd««dkDry|j    «}|€ydddddœj |«S)Nr`rˆr'r)ÚYEr(©ÚcsÚbsÚceÚbe)rQrŽrr€rr/©rVÚ    pos_checks  r1r”z"_FrequencyInferer._get_annual_rulePse€Ü ˆt{‰{Ó ˜aÒ Øä Œvd—k‘k #Ñ&Ó'Ó (¨1Ò ,Øà×-Ñ-Ó/ˆ    à Ð Øà e°4¸uÑE×IÑIÈ)ÓTÐ Tr3có²—t|j«dkDry|jddzdk(sy|j«}|€ydddddœj|«S)    Nr`rrKr$r&ÚQEr%r«©rQrŒrr/r°s  r1r–z%_FrequencyInferer._get_quarterly_rule^s_€Ü ˆt{‰{Ó ˜aÒ Øà{‰{˜1‰~ Ñ! QÒ&Øà×-Ñ-Ó/ˆ    à Ð Øà e°4¸uÑE×IÑIÈ)ÓTÐ Tr3có†—t|j«dkDry|j«}|€ydddddœj|«S)Nr`ÚMSÚBMSÚMEÚBMEr«r´r°s  r1r—z#_FrequencyInferer._get_monthly_rulelsG€Ü ˆt{‰{Ó ˜aÒ ØØ×-Ñ-Ó/ˆ    à Ð Øà e°4¸uÑE×IÑIÈ)ÓTÐ Tr3có¾—|jddgk7ry|jdj«}tj|j
«}t |j«}tj||«}tj|tj|«zd«}ttj|dk(|dk(z|dkD|dkz|dk(zz««S)Nr`rKFrr¤é) r}rBr¦ÚnpÚdiffrMr    rPÚ floor_divideÚmodÚcumsumÚboolÚall)rVÚ first_weekdayÚshiftsrvÚweekdayss     r1r™z$_FrequencyInferer._is_business_dailyvsÀà ?‰?˜q !˜fÒ $ØðŸ
™
 1™ ×-Ñ-Ó/ˆ Ü—‘˜Ÿ™Ó'ˆÜ˜dŸk™kÓ*ˆÜ—‘ ¨Ó-ˆÜ—6‘6˜-¬"¯)©)°FÓ*;Ñ;¸QÓ?ˆäÜ F‰Fؘa‘- F¨a¡KÑ0ؘq‘L X°¡]Ñ3°vÀ±{ÑCñEó ó
ð    
r3có(—t|jj«}t|«dkDryt|jjdz
dz«}||dk}t|«dk(st|«dkDry|ddz}t
|d}d|›|›S)Nr`r¤r»rzWOM-)rrBr¦rQÚdayr)rVrÅÚweek_of_monthsÚweekr¨s     r1ršz_FrequencyInferer._get_wom_rule‰sœ€Ü˜$Ÿ*™*×,Ñ,Ó-ˆÜ ˆx‹=˜1Ò Øä §¡§¡°!Ñ!3¸Ñ 9Ó:ˆà'¨¸Ñ(:Ñ;ˆÜ ˆ~Ó  !Ò #¤s¨>Ó':¸QÒ'>Øð˜aÑ  1Ñ$ˆÜ ˜H Q™KÑ (ˆàdV˜B˜4РРr3N)ÚreturnÚNone)rÊznpt.NDArray[np.int64]©rÊrÁ)rÊú
str | None)rÊz    list[int])rÊz
np.ndarray)rÊr)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rWrr[r]rarcr@r}rsr€rƒrrŒrŽrrr˜r”r–r—r™rš©r3r1rArAŸs „ñó
ð>ò,óð,ðò.óð.ð
ò%óð%ðò*óð*ó01ðdò.óð.ðò.óð.ðòCóðCðòAóðAóGðò3óð3ðò<óð<óó@    /ó Uó UóUó
ô&!r3rAcó—eZdZd„Zy)r?có<—|jr|j«SyrY)rar˜rZs r1rrz,_TimedeltaFrequencyInferer._infer_daily_ruleœs€Ø >Š>Ø×'Ñ'Ó)Ð )ð r3N)rÎrÏrÐrrrÒr3r1r?r?›s„ó*r3r?có—||zdk(S)NrrÒ)rnÚmults  r1rqrq¡s€Ø ‰9˜‰>Ðr3cóR—|dk7r!|t|«k(sJ‚t|«}|›|›S|Sr_)Úint)ÚbaseÚcounts  r1rtrt¥s8€Ø ‚zØœ˜E›
Ò"Ð"Ð"ܐE“
ˆØ˜˜ÐÐàˆ r3c óº—||€yt|«}t|«}t|«r-t|«rtt    |«t    |««S|dvSt|«r|dvSt |«r|dvSt |«r||dddddd    d
d d h
vS|dk(r|d vS|dk(r|dvS|dk(r|dvS|dk(r|dvS|dk(r|dvS|d    k(r|dvS|d
k(r|dvS|d k(r|dvS|d k(r|dvSy)a
    Returns True if downsampling is possible between source and target
    frequencies
 
    Parameters
    ----------
    source : str or DateOffset
        Frequency converting from
    target : str or DateOffset
        Frequency converting to
 
    Returns
    -------
    bool
    F>
r“ÚCr¥rˆrjrlrmrornrk>    r“rÜr¥rjrlrmrornrkr¥rÜr“rjrkrlrmrnro>r“rjrlrmrornrk>rÜrjrlrmrornrk>r¥rjrlrmrornrk>rjrlrmrornrk>rlrmrornrk>rlrmrorn>rmrorn>rorn>ro)Ú_maybe_coerce_freqÚ
_is_annualÚ _is_quarterlyÚ_quarter_months_conformrÚ _is_monthlyÚ
_is_weekly)ÚsourceÚtargets  r1Ú is_subperiodrå²sZ€ð €~˜˜ØÜ  Ó '€FÜ  Ó '€Fä&ÔÜ ˜Ô  Ü*ܘvÓ&¬°vÓ(>óð ðÐPÐPÐPÜ    vÔ    ØÐPÐPÐPÜ    VÔ    ØÐKÐKÐKÜ    FÔ    Ø˜& # s¨C°°e¸SÀ$ÈÈdÐSÐSÐSØ    3ŠØÐAÐAÐAØ    3ŠØÐAÐAÐAØ    3ŠØÐAÐAÐAØ    3ŠØÐ<Ð<Ð<Ø    5ŠØÐ7Ð7Ð7Ø    3ŠØÐ0Ð0Ð0Ø    4ŠØÐ+Ð+Ð+Ø    4ŠØ˜Ð%Ð%Ø    4ŠØ˜ÐÐàr3c ó—||€yt|«}t|«}t|«rSt|«rt|«t|«k(St|«r"t|«}t|«}t    ||«S|dvSt|«r|dvSt |«r|dvSt |«r||dddddd    d
d d h
vS|dk(r|dvS|dk(r|dvS|dk(r|dvS|dk(r|d vS|dk(r|dvS|d    k(r|dvS|d
k(r|dvS|d k(r|dvS|d k(r|dvSy)a
    Returns True if upsampling is possible between source and target
    frequencies
 
    Parameters
    ----------
    source : str or DateOffset
        Frequency converting from
    target : str or DateOffset
        Frequency converting to
 
    Returns
    -------
    bool
    F>
r“rÜr¥rˆrjrlrmrornrk>    r“rÜr¥rjrlrmrornrkr¥rÜr“rjrkrlrmrnro>rjrlrmrornrk>rlrmrornrk>rlrmrorn>rmrorn>rorn>ro)rÝrÞrrßràrárâ)rãräÚsmonthÚtmonths    r1Úis_superperiodréész€ð €~˜˜ØÜ  Ó '€FÜ  Ó '€Fä&ÔÜ fÔ Ü! &Ó)¬^¸FÓ-CÑCÐ Cä ˜Ô  Ü# FÓ+ˆFÜ# FÓ+ˆFÜ*¨6°6Ó:Ð :ØÐPÐPÐPÜ    vÔ    ØÐPÐPÐPÜ    VÔ    ØÐKÐKÐKÜ    FÔ    Ø˜& # s¨C°°e¸SÀ$ÈÈdÐSÐSÐSØ    3ŠØÐKÐKÐKØ    3ŠØÐKÐKÐKØ    3ŠØÐKÐKÐKØ    3ŠØÐ<Ð<Ð<Ø    5ŠØÐ7Ð7Ð7Ø    3ŠØÐ0Ð0Ð0Ø    4ŠØÐ+Ð+Ð+Ø    4ŠØ˜Ð%Ð%Ø    4ŠØ˜ÐÐàr3có‚—|€J‚t|t«rtd|j«}|dvr|S|j    «S)zÈwe might need to coerce a code to a rule_code
    and uppercase it
 
    Parameters
    ----------
    source : str or DateOffset
        Frequency converting from
 
    Returns
    -------
    str
    r`>rjrlrmrornrk)r9rrÚnameÚupper)Úcodes r1rÝrÝ#sD€ð Ð ÐРܐ$œ
Ô#Ü% a¨¯©Ó3ˆØ Ð2Ñ2؈ àz‰z‹|Ðr3có<—t|}t|}|dz|dzk(S)NrK)r )rãräÚsnumÚtnums    r1ràrà9s)€Ü ˜Ñ  €DÜ ˜Ñ  €DØ !‰8t˜a‘xÑ Ðr3cóR—|j«}|dk(xs|jd«S)Nr+zY-©rìÚ
startswith©Úrules r1rÞrÞ?ó%€Ø :‰:‹<€DØ 3‰;Ò /˜$Ÿ/™/¨$Ó/Ð/r3cóR—|j«}|dk(xs|jd«S)Nr,)zQ-ÚBQròrôs r1rßrßDs%€Ø :‰:‹<€DØ 3‰;Ò 7˜$Ÿ/™/¨,Ó7Ð7r3có*—|j«}|dvS)N)rˆÚBM)rìrôs r1ráráIs€Ø :‰:‹<€DØ ;Ð Ðr3cóR—|j«}|dk(xs|jd«S)NÚWr-ròrôs r1rârâNrör3)rr2rErårér)r0ÚstrrÊrÍ)rBz@DatetimeIndex | TimedeltaIndex | Series | DatetimeLikeArrayMixinrÊrÍ)rÖrØrÊrÁ)rÙrýrÚÚfloatrÊrýrÌ)rÊrý)rãrýrärýrÊrÁ)rõrýrÊrÁ)JÚ
__future__rÚtypingrÚnumpyr¼Ú pandas._libsrÚpandas._libs.algosrÚpandas._libs.tslibsrrr    r
Úpandas._libs.tslibs.ccalendarr r r rrÚpandas._libs.tslibs.dtypesrrÚpandas._libs.tslibs.fieldsrrÚpandas._libs.tslibs.offsetsrrrÚpandas._libs.tslibs.parsingrÚpandas.util._decoratorsrÚpandas.core.dtypes.commonrÚpandas.core.dtypes.dtypesrrÚpandas.core.dtypes.genericrrÚpandas.core.algorithmsrÚpandas._typingrÚpandasr r!r"Úpandas.core.arrays.datetimeliker#Ú _need_suffixÚ_prefixÚ_mÚkeyÚ_aliasÚ_dr2rErAr?rqrtrårérÝràrÞrßrárâÚ__all__rÒr3r1ú<module>rs‹ðÝ"å ãåÝ,÷ó÷ õ÷÷÷ñõ
7Ý2å6÷÷õ
*áÝ"÷ñõ
Gò8€ àòJ€GØòJˆØ    ˜˜2˜$ЈØ(@ÀÑ(IР Ò%ñJðJð
ò2€GØò2ˆØ9˜A˜b˜TÐ"ˆØ+1Р Ò(ñ2ð2ð
ò4€BØ,.¨r¨d¨)Иr " ˜YÒ'ð4ó:ðCØ KðCàóC÷Ly!ñy!ôx*Ð!2ô*ó óó4ón7ótó, ó 0ó
8ó
ó
0ò
 r3