§
    nÈjh  ã                   óª   — d Z ddlZddlmc mZ ddlZddlm	Z	m
Z
mZmZmZ dd„Zd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )zDCodex account rate-limit normalization: bucket and window selection.é    N)ÚINVALIDÚ	normalizeÚnormalize_notificationÚselect_snapshotÚselect_windowc                 ó*   — d| i}|�||d<   |�||d<   |S )NÚusedPercentÚresetsAtÚwindowDurationMins© )ÚusedÚresetsÚminutesÚvalues       ú_/home/lighthouse/esp32-dev/.cache/main-promotion-test-20261009/server/tests/test_codex_quota.pyÚwindowr      s2   € Ø˜DÐ!€EØÐØ"ˆˆjÑØÐØ&-ˆÐ"Ñ#Ø€Ló    c            
      ó®  — t          dddt          ddd¦  «        iii¦  «        } g }| j        }|}|r| j        }d}||k    }|}|�sLdd	t	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd	t          j        |¦  «        d
œz  }| 	                    |¦  «         |ržt          j
        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd	t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	| 	                    |	¦  «         t          j        |d¦  «        i z  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}g }| j        }d}||k    }|}|r| j        }d}||k    }|}|�s~t          j
        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd	t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }| 	                    |¦  «         |ržt          j
        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd	t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }| 	                    |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}d S )NÚrateLimitsByLimitIdÚcodexÚprimaryé   é ñSeé,  éH   ú"%(py4)s
{%(py4)s = %(py2)s.valid
}Úquota©Úpy2Úpy4©ú==©z:%(py8)s
{%(py8)s = %(py6)s.remaining_percent
} == %(py11)s©Úpy6Úpy8Úpy11ú%(py13)sÚpy13r   úassert %(py16)sÚpy16©z1%(py4)s
{%(py4)s = %(py2)s.resets_at
} == %(py7)s©r   r    Úpy7ú%(py9)sÚpy9©z:%(py13)s
{%(py13)s = %(py11)s.window_minutes
} == %(py16)s©r'   r)   r+   ú%(py18)sÚpy18úassert %(py21)sÚpy21©r   r   ÚvalidÚremaining_percentÚ@py_builtinsÚlocalsÚ
@pytest_arÚ_should_repr_global_nameÚ	_safereprÚappendÚ_call_reprcompareÚ_format_boolopÚAssertionErrorÚ_format_explanationÚ	resets_atÚwindow_minutes©r   Ú@py_assert1Ú@py_assert3Ú@py_assert0Ú@py_assert7Ú@py_assert10Ú@py_assert9Ú@py_format5Ú@py_format12Ú@py_format14Ú@py_format15Ú@py_format17Ú@py_assert6Ú@py_assert5Ú@py_assert12Ú@py_assert15Ú@py_assert14Ú@py_format8Ú@py_format10Ú@py_format19Ú@py_format20Ú@py_format22s                         r   Útest_primary_onlyr\      s  € ÝÐ,¨w¸ÅFÈ2ÈzÐ[^ÑD_ÔD_Ð8`Ð.aÐbÑcÔc€EØ8Ð8ˆ5Œ;Ð8ˆ;Ð8ˆ;Ð8˜5Ô2Ð8°bÐ8Ð2°bÒ8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆ5Ñ8Ô8Ð8Õ8Ô8ˆ5Ñ8Ô8Ð8Ð8Õ8Ô8ˆ;Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8ˆ;Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð2°bÐ8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8˜5Ñ8Ô8Ð8Õ8Ô8˜5Ñ8Ô8Ð8Ð8Õ8Ô8Ð2Ñ8Ô8Õ8Ô8°bÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8Õ8Ô8Ð8Ð8Ñ8Ô8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØHÐHˆ5Œ?ÐH˜jÐHˆ?˜jÒ(ÐHÐHÐHÐHÐH¨UÔ-AÐHÀSÐHÐ-AÀSÒ-HÐHÐHÐHÐHÑHÕHÔHÐHÐHÐHÐHˆ?˜jÐHÑHÔHÐHÕHÔHÑHÔHÐHÐHÕHÔHˆ5ÑHÔHÐHÕHÔHˆ5ÑHÔHÐHÐHÕHÔHˆ?ÑHÔHÕHÔH˜jÑHÔHÐHÐHÑHÐHÐHÐHÐHÐHÑHÐHÐH×HÒHÐHÑHÔHÐHÐHÐHÕHÔHÐHÐHÐHÐHÐ-AÀSÐHÑHÔHÐHÕHÔHÑHÔHÐHÐHÕHÔH¨UÑHÔHÐHÕHÔH¨UÑHÔHÐHÐHÕHÔHÐ-AÑHÔHÕHÔHÀSÑHÔHÐHÐHÑHÐHÐHÐHÐHÐHÑHÐHÐH×HÒHÐHÑHÔHÐHÕHÔHÐHÐHÑHÔHÐHÑHÐHÐHÐHÐHÐHÑHÐHÕHÕHÔHÐHÑHÔHÑHÔHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHÐHr   c            
      ó®  — t          dddt          ddd¦  «        iii¦  «        } g }| j        }|}|r| j        }d}||k    }|}|�sLdd	t	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd	t          j        |¦  «        d
œz  }| 	                    |¦  «         |ržt          j
        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd	t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	| 	                    |	¦  «         t          j        |d¦  «        i z  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}g }| j        }d}||k    }|}|r| j        }d}||k    }|}|�s~t          j
        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd	t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }| 	                    |¦  «         |ržt          j
        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd	t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }| 	                    |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}d S )Nr   r   Ú	secondaryé   é ^_é`'  é_   r   r   r   r!   r#   r$   r(   r)   r   r*   r+   r,   r-   r/   r0   r1   r2   r3   r4   r5   r6   r7   rF   s                         r   Útest_secondary_onlyrc      s  € ÝÐ,¨w¸ÅfÈQÐPZÐ\aÑFbÔFbÐ8cÐ.dÐeÑfÔf€EØ8Ð8ˆ5Œ;Ð8ˆ;Ð8ˆ;Ð8˜5Ô2Ð8°bÐ8Ð2°bÒ8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆ5Ñ8Ô8Ð8Õ8Ô8ˆ5Ñ8Ô8Ð8Ð8Õ8Ô8ˆ;Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8ˆ;Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð2°bÐ8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8˜5Ñ8Ô8Ð8Õ8Ô8˜5Ñ8Ô8Ð8Ð8Õ8Ô8Ð2Ñ8Ô8Õ8Ô8°bÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8Õ8Ô8Ð8Ð8Ñ8Ô8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØJÐJˆ5Œ?ÐJ˜jÐJˆ?˜jÒ(ÐJÐJÐJÐJÐJ¨UÔ-AÐJÀUÐJÐ-AÀUÒ-JÐJÐJÐJÐJÑJÕJÔJÐJÐJÐJÐJˆ?˜jÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJˆ5ÑJÔJÐJÕJÔJˆ5ÑJÔJÐJÐJÕJÔJˆ?ÑJÔJÕJÔJ˜jÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÐJ×JÒJÐJÑJÔJÐJÐJÐJÕJÔJÐJÐJÐJÐJÐ-AÀUÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ¨UÑJÔJÐJÕJÔJ¨UÑJÔJÐJÐJÕJÔJÐ-AÑJÔJÕJÔJÀUÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÐJ×JÒJÐJÑJÔJÐJÕJÔJÐJÐJÑJÔJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJr   c            
      óÎ  — t          ddt          ddd¦  «        t          ddd¦  «        d	œii¦  «        } g }| j        }|}|r| j        }d
}||k    }|}|�sLddt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }| 	                    |¦  «         |ržt          j
        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	| 	                    |	¦  «         t          j        |d¦  «        i z  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}g }| j        }d}||k    }|}|r| j        }d}||k    }|}|�s~t          j
        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }| 	                    |¦  «         |ržt          j
        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }| 	                    |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}d S ) Nr   r   r   r   r   é=   r`   ra   ©r   r^   é'   r   r   r   r!   r#   r$   r(   r)   r   r*   r+   r,   r-   r/   r0   r1   r2   r3   r4   r5   r6   r7   rF   s                         r   Ú+test_both_windows_select_tightest_remainingrh   "   s.  € ÝÐ,¨wÝ˜"˜j¨#Ñ.Ô.Ý˜B 
¨EÑ2Ô2ð9ð 9ð /ð ñ 	ô 	€Eð 9Ð8ˆ5Œ;Ð8ˆ;Ð8ˆ;Ð8˜5Ô2Ð8°bÐ8Ð2°bÒ8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆ5Ñ8Ô8Ð8Õ8Ô8ˆ5Ñ8Ô8Ð8Ð8Õ8Ô8ˆ;Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8ˆ;Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð2°bÐ8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8˜5Ñ8Ô8Ð8Õ8Ô8˜5Ñ8Ô8Ð8Ð8Õ8Ô8Ð2Ñ8Ô8Õ8Ô8°bÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8Õ8Ô8Ð8Ð8Ñ8Ô8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØJÐJˆ5Œ?ÐJ˜jÐJˆ?˜jÒ(ÐJÐJÐJÐJÐJ¨UÔ-AÐJÀUÐJÐ-AÀUÒ-JÐJÐJÐJÐJÑJÕJÔJÐJÐJÐJÐJˆ?˜jÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJˆ5ÑJÔJÐJÕJÔJˆ5ÑJÔJÐJÐJÕJÔJˆ?ÑJÔJÕJÔJ˜jÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÐJ×JÒJÐJÑJÔJÐJÐJÐJÕJÔJÐJÐJÐJÐJÐ-AÀUÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ¨UÑJÔJÐJÕJÔJ¨UÑJÔJÐJÐJÕJÔJÐ-AÑJÔJÕJÔJÀUÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÐJ×JÒJÐJÑJÔJÐJÕJÔJÐJÐJÑJÔJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJr   c            
      óÜ  — t          ddt          ddd¦  «        t          ddd¦  «        dœii¦  «        } g }| j        }d}||k    }|}|r| j        }d}||k    }|}|�s~t	          j        d	|fd
||f¦  «        dt          j        ¦   «         v st	          j        | ¦  «        rt	          j	        | ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
| 
                    |
¦  «         |ržt	          j        d	|fd||f¦  «        dt          j        ¦   «         v st	          j        | ¦  «        rt	          j	        | ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }| 
                    |¦  «         t	          j        |d¦  «        i z  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}d S )Nr   r   é2   i ³?qr   é /hYra   rf   r!   )z9%(py4)s
{%(py4)s = %(py2)s.remaining_percent
} == %(py7)sr   r-   r/   r0   )z5%(py13)s
{%(py13)s = %(py11)s.resets_at
} == %(py16)sr2   r3   r4   r   r5   r6   )r   r   r9   rD   r<   r@   r:   r;   r=   r>   r?   rA   rB   rC   )r   rG   rH   rR   rS   rI   rT   rU   rV   rW   rX   rQ   rY   rZ   r[   s                  r   Ú*test_equal_remaining_prefers_earlier_resetrl   +   sm  € ÝÐ,¨wÝ˜"˜j¨#Ñ.Ô.Ý˜B 
¨EÑ2Ô2ð9ð 9ð /ð ñ 	ô 	€Eð KÐJˆ5Ô"ÐJ bÐJÐ" bÒ(ÐJÐJÐJÐJÐJ¨U¬_ÐJÀ
ÐJ¨_À
Ò-JÐJÐJÐJÐJÑJÕJÔJÐJÐJÐJÐJÐ" bÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJˆ5ÑJÔJÐJÕJÔJˆ5ÑJÔJÐJÐJÕJÔJÐ"ÑJÔJÕJÔJ bÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÐJ×JÒJÐJÑJÔJÐJÐJÐJÕJÔJÐJÐJÐJÐJ¨_À
ÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ¨UÑJÔJÐJÕJÔJ¨UÑJÔJÐJÐJÕJÔJ¨_ÑJÔJÕJÔJÀ
ÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÐJ×JÒJÐJÑJÔJÐJÕJÔJÐJÐJÑJÔJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJr   c            
      óð  — t          ddt          dd d¦  «        t          ddd¦  «        dœii¦  «        } | j        }d}||k    }|sªt          j        d|fd	||f¦  «        d
t          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd
t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d S )Nr   r   rj   r   rk   ra   rf   r!   ©z1%(py2)s
{%(py2)s = %(py0)s.resets_at
} == %(py5)sr   ©Úpy0r   Úpy5úassert %(py7)sr.   )r   r   rD   r<   r@   r:   r;   r=   r>   rB   rC   )r   rG   Ú@py_assert4rH   Ú@py_format6rW   s         r   Ú8test_equal_remaining_invalid_reset_defers_to_valid_resetru   3   s-  € ÝÐ,¨wÝ˜"˜d CÑ(Ô(Ý˜B 
¨EÑ2Ô2ð9ð 9ð /ð ñ 	ô 	€Eð Œ?Ð(˜jÐ(ˆ?˜jÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ?˜jÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ5Ñ(Ô(Ð(Õ(Ô(ˆ5Ñ(Ô(Ð(Ð(Õ(Ô(ˆ?Ñ(Ô(Õ(Ô(˜jÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r   c                  ój  — dddt          d¦  «        iii} t          | ¦  «        }|j        }d}||k    }|sÚt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x} x}x}x}}dddt          d¦  «        iii} t          | ¦  «        }|j        }d}||k    }|sÚt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x} x}x}x}}d S )Nr   r   r   r   éd   r!   ©zW%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}.remaining_percent
} == %(py9)sr   ©rp   r   r    r%   r0   úassert %(py11)sr'   ©r   r   r9   r<   r@   r:   r;   r=   r>   rB   rC   ©rG   rH   rS   Ú@py_assert8rJ   rX   rN   s          r   Útest_used_zero_and_hundredr~   ;   sx  € Ø+¨g¸	Å6È!Á9Ä9Ð7MÐ-NÐOÐi�9ÐOÑPÔPÐiÐPÔbÐiÐfiÐiÐbÐfiÒiÐiÐiÐiÕiÔiÐiÐiÐiÐiÐbÐfiÐiÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔi�9ÑiÔiÐiÕiÔi�9ÑiÔiÐiÐiÕiÔiÐOÑiÔiÕiÔiÐPÑiÔiÕiÔiÐbÑiÔiÕiÔiÐfiÑiÔiÐiÐiÑiÐiÐiÐiÐiÐiÑiÐiÕiÕiÔiÐiÑiÔiÑiÔiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiØ+¨g¸	Å6È#Á;Ä;Ð7OÐ-PÐQÐi�9ÐQÑRÔRÐiÐRÔdÐiÐhiÐiÐdÐhiÒiÐiÐiÐiÕiÔiÐiÐiÐiÐiÐdÐhiÐiÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔi�9ÑiÔiÐiÕiÔi�9ÑiÔiÐiÐiÕiÔiÐQÑiÔiÕiÔiÐRÑiÔiÕiÔiÐdÑiÔiÕiÔiÐhiÑiÔiÐiÐiÑiÐiÐiÐiÐiÐiÑiÐiÕiÕiÔiÐiÑiÔiÑiÔiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐir   c                  ój  — dddt          d¦  «        iii} t          | ¦  «        }|j        }d}||k    }|sÚt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x} x}x}x}}dddt          d¦  «        iii} t          | ¦  «        }|j        }d}||k    }|sÚt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }t          t          j
        |¦  «        ¦  «        ‚d x} x}x}x}}d S )Nr   r   r   éŒ   r   r!   rx   r   ry   rz   r'   éûÿÿÿrw   r{   r|   s          r   Ú)test_out_of_range_used_percent_is_clampedr‚   @   sx  € Ø+¨g¸	Å6È#Á;Ä;Ð7OÐ-PÐQÐi�9ÐQÑRÔRÐiÐRÔdÐiÐhiÐiÐdÐhiÒiÐiÐiÐiÕiÔiÐiÐiÐiÐiÐdÐhiÐiÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔi�9ÑiÔiÐiÕiÔi�9ÑiÔiÐiÐiÕiÔiÐQÑiÔiÕiÔiÐRÑiÔiÕiÔiÐdÑiÔiÕiÔiÐhiÑiÔiÐiÐiÑiÐiÐiÐiÐiÐiÑiÐiÕiÕiÔiÐiÑiÔiÑiÔiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐià+¨g¸	Å6È"Á:Ä:Ð7NÐ-OÐPÐj�9ÐPÑQÔQÐjÐQÔcÐjÐgjÐjÐcÐgjÒjÐjÐjÐjÕjÔjÐjÐjÐjÐjÐcÐgjÐjÑjÔjÐjÕjÔjÑjÔjÐjÐjÕjÔj�9ÑjÔjÐjÕjÔj�9ÑjÔjÐjÐjÕjÔjÐPÑjÔjÕjÔjÐQÑjÔjÕjÔjÐcÑjÔjÕjÔjÐgjÑjÔjÐjÐjÑjÐjÐjÐjÐjÐjÑjÐjÕjÕjÔjÐjÑjÔjÑjÔjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjÐjr   c            
      óØ  — t          dddt          dd d ¦  «        iii¦  «        } g }| j        }|}|r| j        }d}||k    }|}|�sLddt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }| 	                    |¦  «         |ržt          j
        d	|fd
||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	| 	                    |	¦  «         t          j        |d¦  «        i z  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}g }| j        }d }||u }|}|r| j        }d }||u }|}|�s~t          j
        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }| 	                    |¦  «         |ržt          j
        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }| 	                    |¦  «         t          j        |d¦  «        i z  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}x}x}}dddt          ddd¦  «        iii}t          |¦  «        }|j        }d }||u }|sÚt          j
        d|fd||f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d œz  }d!d"|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}}d S )#Nr   r   r   é(   é<   r   r   r   r!   r#   r$   r(   r)   r   r*   r+   ©Úis)z1%(py4)s
{%(py4)s = %(py2)s.resets_at
} is %(py7)sr-   r/   r0   )z:%(py13)s
{%(py13)s = %(py11)s.window_minutes
} is %(py16)sr2   r3   r4   r5   r6   ÚsoonÚlater)zO%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}.resets_at
} is %(py9)sr   ry   rz   r'   r7   )r   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r}   s                          r   Ú,test_invalid_or_null_reset_keeps_quota_validrŠ   F   sO  € ÝÐ,¨w¸ÅFÈ2ÈtÐUYÑDZÔDZÐ8[Ð.\Ð]Ñ^Ô^€EØ8Ð8ˆ5Œ;Ð8ˆ;Ð8ˆ;Ð8˜5Ô2Ð8°bÐ8Ð2°bÒ8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆ5Ñ8Ô8Ð8Õ8Ô8ˆ5Ñ8Ô8Ð8Ð8Õ8Ô8ˆ;Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8ˆ;Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð2°bÐ8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8˜5Ñ8Ô8Ð8Õ8Ô8˜5Ñ8Ô8Ð8Ð8Õ8Ô8Ð2Ñ8Ô8Õ8Ô8°bÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8Õ8Ô8Ð8Ð8Ñ8Ô8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØCÐCˆ5Œ?ÐC˜dÐCˆ?˜dÐ"ÐCÐCÐCÐCÐC uÔ';ÐC¸tÐCÐ';¸tÐ'CÐCÐCÐCÐCÑCÕCÔCÐCÐCÐCÐCˆ?˜dÐCÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔCˆ5ÑCÔCÐCÕCÔCˆ5ÑCÔCÐCÐCÕCÔCˆ?ÑCÔCÕCÔC˜dÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÐC×CÒCÐCÑCÔCÐCÐCÐCÕCÔCÐCÐCÐCÐCÐ';¸tÐCÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔC uÑCÔCÐCÕCÔC uÑCÔCÐCÐCÕCÔCÐ';ÑCÔCÕCÔC¸tÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÐC×CÒCÐCÑCÔCÐCÕCÔCÐCÐCÑCÔCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCÐCØ+¨g¸	Å6È"ÈfÐV]ÑC^ÔC^Ð7_Ð-`ÐaÐt�9ÐaÑbÔbÐtÐbÔlÐtÐptÐtÐlÐptÐtÐtÐtÐtÕtÔtÐtÐtÐtÐtÐlÐptÐtÑtÔtÐtÕtÔtÑtÔtÐtÐtÕtÔt�9ÑtÔtÐtÕtÔt�9ÑtÔtÐtÐtÕtÔtÐaÑtÔtÕtÔtÐbÑtÔtÕtÔtÐlÑtÔtÕtÔtÐptÑtÔtÐtÐtÑtÐtÐtÐtÐtÐtÑtÐtÕtÕtÔtÐtÑtÔtÑtÔtÐtÐtÐtÐtÐtÐtÐtÐtÐtÐtÐtÐtÐtr   c                  óÀ  — dddddiiii} t          | ¦  «        }|t          k    }|�st          j        d|fd|t          f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        d	t	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x} x}}dddt          d¦  «        iii} t          | ¦  «        }|t          k    }|�st          j        d|fd|t          f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        d	t	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x} x}}ddi ii} t          | ¦  «        }|t          k    }|�st          j        d|fd|t          f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        d	t	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x} x}}i } t          | ¦  «        }|t          k    }|�st          j        d|fd|t          f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        d	t	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x} x}}d } t          | ¦  «        }|t          k    }|�st          j        d|fd|t          f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        d	t	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	d
œz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚d x} x}}d S )Nr   r   r   r
   é   r!   ©z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py6)sr   r   ©rp   r   r    r%   úassert %(py8)sr&   T)r   r   r<   r@   r:   r;   r=   r>   rB   rC   r   )rG   rH   rS   Ú@py_format7Ú@py_format9s        r   Ú$test_missing_used_percent_is_invalidr’   M   sÞ  € Ø+¨g¸	ÀJÐPQÀ?Ð7SÐ-TÐUÐa�9ÐUÑVÔVÐaÐVÕZaÒaÐaÐaÑaÕaÔaÐaÐaÐaÐaÐVÕZaÐaÑaÔaÐaÕaÔaÑaÔaÐaÐaÕaÔa�9ÑaÔaÐaÕaÔa�9ÑaÔaÐaÐaÕaÔaÐUÑaÔaÕaÔaÐVÑaÔaÐaÕaÔaÑaÔaÐaÐaÕaÔaÕZaÑaÔaÐaÕaÔaÕZaÑaÔaÐaÐaÐaÐaÑaÐaÐaÐaÐaÐaÑaÐaÕaÕaÔaÐaÑaÔaÑaÔaÐaÐaÐaÐaÐaÐaÐaØ+¨g¸	Å6È$Á<Ä<Ð7PÐ-QÐRÐ^�9ÐRÑSÔSÐ^ÐSÕW^Ò^Ð^Ð^Ñ^Õ^Ô^Ð^Ð^Ð^Ð^ÐSÕW^Ð^Ñ^Ô^Ð^Õ^Ô^Ñ^Ô^Ð^Ð^Õ^Ô^�9Ñ^Ô^Ð^Õ^Ô^�9Ñ^Ô^Ð^Ð^Õ^Ô^ÐRÑ^Ô^Õ^Ô^ÐSÑ^Ô^Ð^Õ^Ô^Ñ^Ô^Ð^Ð^Õ^Ô^ÕW^Ñ^Ô^Ð^Õ^Ô^ÕW^Ñ^Ô^Ð^Ð^Ð^Ð^Ñ^Ð^Ð^Ð^Ð^Ð^Ñ^Ð^Õ^Õ^Ô^Ð^Ñ^Ô^Ñ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^Ð^Ø+¨g°r¨]Ð;ÐG�9Ð;Ñ<Ô<ÐGÐ<ÅÒGÐGÐGÑGÕGÔGÐGÐGÐGÐGÐ<ÅÐGÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔG�9ÑGÔGÐGÕGÔG�9ÑGÔGÐGÐGÕGÔGÐ;ÑGÔGÕGÔGÐ<ÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔGÅÑGÔGÐGÕGÔGÅÑGÔGÐGÐGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGØÐ#�9�R‰=Œ=Ð#ˆ=�GÒ#Ð#Ð#Ñ#Õ#Ô#Ð#Ð#Ð#Ð#ˆ=�GÐ#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�9Ñ#Ô#Ð#Õ#Ô#�9Ñ#Ô#Ð#Ð#Õ#Ô#�RÑ#Ô#Õ#Ô#ˆ=Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�GÑ#Ô#Ð#Õ#Ô#�GÑ#Ô#Ð#Ð#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØÐ%�9�T‰?Œ?Ð%ˆ?�gÒ%Ð%Ð%Ñ%Õ%Ô%Ð%Ð%Ð%Ð%ˆ?�gÐ%Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%�9Ñ%Ô%Ð%Õ%Ô%�9Ñ%Ô%Ð%Ð%Õ%Ô%�TÑ%Ô%Õ%Ô%ˆ?Ñ%Ô%Ð%Õ%Ô%Ñ%Ô%Ð%Ð%Õ%Ô%�gÑ%Ô%Ð%Õ%Ô%�gÑ%Ô%Ð%Ð%Ð%Ð%Ñ%Ð%Ð%Ð%Ð%Ð%Ñ%Ð%Õ%Õ%Ô%Ð%Ñ%Ô%Ñ%Ô%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ð%r   c                  ó®  — ddt          d¦  «        iidt          d¦  «        dœdœ} t          | ¦  «        }|j        }d}||k    }|�st          j        d|fd||f¦  «        d	t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	d
t          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd
t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}x}}d S )Nr   r   é
   éZ   ©ÚlimitIdr   ©r   Ú
rateLimitsr!   )zW%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
}.remaining_percent
} == %(py8)sr   Úpayload)rp   Úpy1Úpy3rq   r&   zassert %(py10)sÚpy10r{   )rš   Ú@py_assert2rs   rJ   rR   r‘   Ú@py_format11s          r   Ú-test_bucket_prefers_rateLimitsByLimitId_codexr    U   sx  € Ø'.°½FÀ2¹J¼JÐ0GÐ&HØ)0½VÀB¹Z¼ZÐHÐHðJð J€Gå�WÑÔÐ5ÐÔ/Ð5°2Ð5Ð/°2Ò5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5Ð/°2Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5�9Ñ5Ô5Ð5Õ5Ô5�9Ñ5Ô5Ð5Ð5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5�WÑ5Ô5Ð5Õ5Ô5�WÑ5Ô5Ð5Ð5Õ5Ô5ÐÑ5Ô5Õ5Ô5Ð/Ñ5Ô5Õ5Ô5°2Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5r   c                  ód  — ddt          d¦  «        ii} t          | ¦  «        }|j        }d}||k    }|sÚt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x} x}x}x}}ddt          d¦  «        dœi} t          | ¦  «        }|j        }d}||k    }|sÚt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        | ¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j
        |¦  «        ¦  «        ‚d x} x}x}x}}d S )Nr™   r   é   éK   r!   rx   r   ry   rz   r'   r   r–   r{   r|   s          r   Ú0test_fallback_to_backward_compatible_rate_limitsr¤   [   sq  € Ø" Yµ°r±
´
Ð$;Ð<ÐU�9Ð<Ñ=Ô=ÐUÐ=ÔOÐUÐSUÐUÐOÐSUÒUÐUÐUÐUÕUÔUÐUÐUÐUÐUÐOÐSUÐUÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔU�9ÑUÔUÐUÕUÔU�9ÑUÔUÐUÐUÕUÔUÐ<ÑUÔUÕUÔUÐ=ÑUÔUÕUÔUÐOÑUÔUÕUÔUÐSUÑUÔUÐUÐUÑUÐUÐUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUØ"°ÅFÈ2ÁJÄJÐ$OÐ$OÐPÐi�9ÐPÑQÔQÐiÐQÔcÐiÐgiÐiÐcÐgiÒiÐiÐiÐiÕiÔiÐiÐiÐiÐiÐcÐgiÐiÑiÔiÐiÕiÔiÑiÔiÐiÐiÕiÔi�9ÑiÔiÐiÕiÔi�9ÑiÔiÐiÐiÕiÔiÐPÑiÔiÕiÔiÐQÑiÔiÕiÔiÐcÑiÔiÕiÔiÐgiÑiÔiÐiÐiÑiÐiÐiÐiÐiÐiÑiÐiÕiÕiÔiÐiÑiÔiÑiÔiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐiÐir   c                  ó
  — ddt          d¦  «        iidt          d¦  «        dœdœ} t          | ¦  «        }|t          k    }|�s,t          j        d|fd|t          f¦  «        d	t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	d
t          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd
t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}t          | ¦  «        }d }||u }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndd
t          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd
t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}x}}d S )NÚotherr   rj   r”   r–   r˜   r!   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py5)sr   rš   r   )rp   r›   rœ   rq   rr   r.   r†   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} is %(py6)sr   )rp   r›   rœ   r%   r�   r&   )r   r   r   r<   r@   r:   r;   r=   r>   rB   rC   r   )rš   rž   rs   rt   rW   rS   r�   r‘   s           r   Ú7test_fallback_rejected_when_bucket_labels_another_limitr§   `   s›  € Ø'.°½FÀ2¹J¼JÐ0GÐ&HØ)0½VÀB¹Z¼ZÐHÐHðJð J€Gå�WÑÔÐ(Ð¥Ò(Ð(Ð(Ñ(Õ(Ô(Ð(Ð(Ð(Ð(Ð¥Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(�9Ñ(Ô(Ð(Õ(Ô(�9Ñ(Ô(Ð(Ð(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(�WÑ(Ô(Ð(Õ(Ô(�WÑ(Ô(Ð(Ð(Õ(Ô(ÐÑ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(¥Ñ(Ô(Ð(Õ(Ô(¥Ñ(Ô(Ð(Ð(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ý˜7Ñ#Ô#Ð+ tÐ+Ð# tÐ+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð# tÐ+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�?Ñ+Ô+Ð+Õ+Ô+�?Ñ+Ô+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+˜7Ñ+Ô+Ð+Õ+Ô+˜7Ñ+Ô+Ð+Ð+Õ+Ô+Ð#Ñ+Ô+Õ+Ô+ tÑ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r   c                  óì  — t          dt          d¦  «        dœ¦  «        d         } d}| |k    }|slt          j        d|fd| |f¦  «        t          j        | ¦  «        t          j        |¦  «        dœz  }d	d
|iz  }t          t          j        |¦  «        ¦  «        ‚d x} x}}ddi}t          |¦  «        }d }||u }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}d }t          |¦  «        }d }||u }|sÇt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j	        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d x}x}x}}d S )NÚnopeé   rf   Ú	remainingéF   r!   )z%(py1)s == %(py4)s)r›   r    zassert %(py6)sr%   r   r†   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} is %(py7)sr   )rp   r   r    r.   zassert %(py9)sr0   )
r   r   r<   r@   r>   rB   rC   r:   r;   r=   )
rI   rH   rž   rM   r�   rG   rR   rS   rW   rX   s
             r   Ú+test_select_window_ignores_non_dict_entriesr­   g   sÐ  € Ý V½&À¹*¼*ÐEÐEÑFÔFÀ{ÔSÐYÐWYÐYÐSÐWYÒYÐYÐYÐYÕYÔYÐYÐYÐYÐYÐSÐWYÐYÑYÔYÕYÔYÐSÑYÔYÕYÔYÐWYÑYÔYÐYÐYÑYÐYÐYÐYÐYÐYÑYÐYÕYÕYÔYÐYÑYÔYÑYÔYÐYÐYÐYÐYÐYÐYÐYØ# VÐ,Ð5�=Ð,Ñ-Ô-Ð5°Ð5Ð-°Ð5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð-°Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5�=Ñ5Ô5Ð5Õ5Ô5�=Ñ5Ô5Ð5Ð5Õ5Ô5Ð,Ñ5Ô5Õ5Ô5Ð-Ñ5Ô5Õ5Ô5°Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ØÐ&�=˜ÑÔÐ& $Ð&Ð $Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�=Ñ&Ô&Ð&Õ&Ô&�=Ñ&Ô&Ð&Ð&Õ&Ô&˜Ñ&Ô&Õ&Ô&ÐÑ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&r   c            	      óÆ  — t          dt          ddd¦  «        t          ddd¦  «        dœi¦  «        } g }| j        }|}|r| j        }d	}||k    }|}|�sLd
dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }| 	                    |¦  «         |ržt          j
        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }	| 	                    |	¦  «         t          j        |d¦  «        i z  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}x}}| j        }d}||k    }|sªt          j
        d|fd||f¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}di i}t          |¦  «        }|t          k    }|�st          j
        d|fd|t          f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}i }t          |¦  «        }|t          k    }|�st          j
        d|fd|t          f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d }t          |¦  «        }|t          k    }|�st          j
        d|fd|t          f¦  «        dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}}d S )Nr™   é-   r   r   r¬   r`   ra   rf   rª   r   r   r   r!   r#   r$   r(   r)   r   r*   r+   rn   ro   rr   r.   r�   r   r   rŽ   r�   r&   )r   r   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   r   )r   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rs   rt   rW   rS   r�   r‘   s                     r   Ú*test_notification_normalizes_sparse_updater°   m   s[  € Ý" L½fÀRÈÐUXÑ>YÔ>YÝ@FÀrÈ:ÐW\Ñ@]Ô@]ð3_ð 3_ð $`ñ aô a€Eà8Ð8ˆ5Œ;Ð8ˆ;Ð8ˆ;Ð8˜5Ô2Ð8°bÐ8Ð2°bÒ8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆ5Ñ8Ô8Ð8Õ8Ô8ˆ5Ñ8Ô8Ð8Ð8Õ8Ô8ˆ;Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8ˆ;Ð8Õ8Ô8Ð8Ð8Ð8Ð8Ð2°bÐ8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8˜5Ñ8Ô8Ð8Õ8Ô8˜5Ñ8Ô8Ð8Ð8Õ8Ô8Ð2Ñ8Ô8Õ8Ô8°bÑ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Ð8×8Ò8Ð8Ñ8Ô8Ð8Õ8Ô8Ð8Ð8Ñ8Ô8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØŒ?Ð(˜jÐ(ˆ?˜jÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ?˜jÐ(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ5Ñ(Ô(Ð(Õ(Ô(ˆ5Ñ(Ô(Ð(Ð(Õ(Ô(ˆ?Ñ(Ô(Õ(Ô(˜jÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(à#/°Ð"4Ð@Õ!Ð"4Ñ5Ô5Ð@Ð5½Ò@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@Ð5½Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@Õ!Ñ@Ô@Ð@Õ@Ô@Õ!Ñ@Ô@Ð@Ð@Õ@Ô@Ð"4Ñ@Ô@Õ@Ô@Ð5Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@½Ñ@Ô@Ð@Õ@Ô@½Ñ@Ô@Ð@Ð@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ø"$Ð0Õ! "Ñ%Ô%Ð0Ð%­Ò0Ð0Ð0Ñ0Õ0Ô0Ð0Ð0Ð0Ð0Ð%­Ð0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0Õ!Ñ0Ô0Ð0Õ0Ô0Õ!Ñ0Ô0Ð0Ð0Õ0Ô0 "Ñ0Ô0Õ0Ô0Ð%Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0­Ñ0Ô0Ð0Õ0Ô0­Ñ0Ô0Ð0Ð0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ø"&Ð2Õ! $Ñ'Ô'Ð2Ð'­7Ò2Ð2Ð2Ñ2Õ2Ô2Ð2Ð2Ð2Ð2Ð'­7Ð2Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2Õ!Ñ2Ô2Ð2Õ2Ô2Õ!Ñ2Ô2Ð2Ð2Õ2Ô2 $Ñ2Ô2Õ2Ô2Ð'Ñ2Ô2Ð2Õ2Ô2Ñ2Ô2Ð2Ð2Õ2Ô2­7Ñ2Ô2Ð2Õ2Ô2­7Ñ2Ô2Ð2Ð2Ð2Ð2Ñ2Ð2Ð2Ð2Ð2Ð2Ñ2Ð2Õ2Õ2Ô2Ð2Ñ2Ô2Ñ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2Ð2r   c            	      ó$  — t          dt          ddd¦  «        dddœidd	d
idœ¦  «        } | j        } |¦   «         }t          |¦  «        }h d£}||k    }|�st	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        | ¦  «        rt	          j	        | ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}x}}d}| j        }	 |	¦   «         }
t          |
¦  «        }||v}|�st	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        | ¦  «        rt	          j	        | ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}	x}
}d}| j        }	 |	¦   «         }
t          |
¦  «        }||v}|�st	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        | ¦  «        rt	          j	        | ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}x}	x}
}d S )Nr   r   r   r   ÚproÚCodex)r   ÚplanTypeÚ	limitNameÚsecretÚavailableCounté   )r   Ú	accountIdÚrateLimitResetCredits>   Úcodex_resets_atÚcodex_quota_validÚcodex_window_minutesÚcodex_remaining_percentr!   )zb%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.wire
}()
})
} == %(py10)sÚsetr   )rp   r›   rœ   rq   r.   r�   zassert %(py12)sÚpy12)únot in)zg%(py1)s not in %(py10)s
{%(py10)s = %(py3)s(%(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s.wire
}()
})
}Úrepr)r›   rœ   r    r%   r&   r�   )r   r   Úwirer¿   r<   r@   r:   r;   r=   r>   rB   rC   rÂ   )r   rž   rs   rR   rL   r}   rŸ   Ú@py_format13rI   rS   rJ   s              r   Ú$test_account_metadata_is_not_exposedrÅ   x   sœ  € Ý¨wÅFÈ2ÈzÐ[^ÑD_ÔD_ØDIÐX_ð9að 9að /bà$,ÐHXÐZ[ÐG\ð^ð ^ñ _ô _€Eð Œzð Lˆzˆz‰|Œ|ð L�3ˆ|ÑÔð Lð !Lð !Lð !Lð LÐð !Lò Lð Lð Lñ Lõ LÜ:KðLð Lð Lð LÐð !Lð Lñ Lô Lð Lõ LÜEKñLô Lð Lð Lõ LÜ3Kõ ñ Lô Lð Lõ LÜBKõ ñ Lô Lð Lð Lð Lõ LÜEKñLô Lð Lð Lõ LÜ3Kð ñ Lô Lð Lõ LÜBKð ñ Lô Lð Lð Lõ LÜBKð ñ Lô Lõ LÜBKð ñ Lô Lõ LÜBKð ñ Lô Lõ LÜBKð!Lñ Lô Lð Lð Lñ Lð Lð Lð Lð Lð Lñ Lð Lõ Lõ LÜ8KðLñ Lô Lñ Lô Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð Lð LàÐ- ¤
Ð- 
 
¡¤Ð-�4 Ñ-Ô-Ð-ˆ8Ð-Ð-Ð-Ð-Ñ-Õ-Ô-Ð-Ð-Ð-Ð-ˆ8Ð-Ð-Ñ-Ô-Õ-Ô-ˆ8Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-�4Ñ-Ô-Ð-Õ-Ô-�4Ñ-Ô-Ð-Ð-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô- Ñ-Ô-Ð-Õ-Ô- Ñ-Ô-Ð-Ð-Õ-Ô- 
Ñ-Ô-Õ-Ô- Ñ-Ô-Õ-Ô-Ð-Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÐ*˜UœZÐ*˜Z˜Z™\œ\Ð*�˜\Ñ*Ô*Ð*ˆ5Ð*Ð*Ð*Ð*Ñ*Õ*Ô*Ð*Ð*Ð*Ð*ˆ5Ð*Ð*Ñ*Ô*Õ*Ô*ˆ5Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*�Ñ*Ô*Ð*Õ*Ô*�Ñ*Ô*Ð*Ð*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*˜UÑ*Ô*Ð*Õ*Ô*˜UÑ*Ô*Ð*Ð*Õ*Ô*˜ZÑ*Ô*Õ*Ô*˜\Ñ*Ô*Õ*Ô*Ð*Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*Ð*r   )NN)Ú__doc__Úbuiltinsr:   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter<   ÚpytestÚ"device_gateway.control.codex_quotar   r   r   r   r   r   r\   rc   rh   rl   ru   r~   r‚   rŠ   r’   r    r¤   r§   r­   r°   rÅ   r   r   r   ú<module>rÍ      s‹  ðØ JÐ JØ  € € € € € € € € € € € € €€€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ðIð Ið IðKð Kð KðKð Kð KðKð Kð Kð)ð )ð )ðjð jð jð
kð kð kðuð uð uð&ð &ð &ð6ð 6ð 6ðjð jð jð
,ð ,ð ,ð'ð 'ð 'ð3ð 3ð 3ð+ð +ð +ð +ð +r   