Current File : //proc/self/root/usr/lib/python2.7/site-packages/urlgrabber/progress.pyc
�
�fERc@s�ddlZddlZddlZddlZddlZddlZddlZdd�Zda da
ddd�ZddGd��YZddHd ��YZ
d
ad
ad
d�Zd�Zd
�Zde
fd��YZeZde
fd��YZddId��YZddJd��YZdefd��YZddKd��YZd
d�Zd
dd�Zd�Zd�Zedkr�eej �d kr-ej dd!kr-edLdMdNfdOdPdQ�edRdSdTfdUdVdW�edXdYdZfd[d\d]�ed^d_d`fdadbdc�ej!d
�neej �d krbej dd1krbedl�ned"dd.d
d#dmdndo�ed$d d.d
d'dpdqdrds� ed&d3d.d%d'dtdudvdw� ed4d5d.d
d2dxdydz�ed6d7d.d8d2d{d|d}�ed9d:d.d;d2d~dd��ed<d=d.d
d'd��ed>d?d.d@d'd��edAdBd.dCd'd��edDd.d.d
d2d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d��ndS(�i����NicCs[yLd}tj|tj|�}tjd|�d}|dkrGdS|SWndSXdS(s Get the real terminal width tabcdefghthhhhiiiPN(tfcntltioctlttermiost
TIOCGWINSZtstructtunpack(tfdtbuftret((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytterminal_widthsg�?cCsAtj�}tdks(|t|kr=t|�a|antS(s6 Get the real terminal width, but cache it for a bit. N(ttimet_term_width_valtNonet_term_width_lastR(Rt
cache_timeouttnow((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytterminal_width_cached-s
tTerminalLinecBsMeZdZdd
ddd�Zd�Zdd�Zd
d�Zd �ZRS(sB Help create dynamic progress bars, uses terminal_width_cached(). iig�?cCsX|dkr|}n||_t||�|_|j|krK||_nt|_dS(N(Rt_min_lenRt_llentFalset_fin(tselftmin_resttbeg_lenRR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyt__init__;s cCs|j|jS(s Usable length for elements. (RR(R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyt__len__DsicCs"|j|krdS|j||S(sw After a fixed length, split the rest of the line length among
a number of different elements (default=2). i(R(Rtfixedtelements((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyt
rest_splitHscCs_|dkrt|�}nt|�|kr9t|_n|jrFdS|jt|�8_|S(s� If there is room left in the line, above min_len, add element.
Note that as soon as one add fails all the rest will fail too. tN(RtlentTrueRR(Rtelementtfull_len((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytaddOs cCs|jS(sA Current rest of line, same as .rest_split(fixed=0, elements=1). (R(R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytrest]sN( t__name__t
__module__t__doc__RRRRR%R&(((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR8s t BaseMetercBsheZd�Zddddddd�Zdd�Zdd�Zdd�Zdd�Zdd�Z RS(cCsad|_d|_d|_d|_d|_d|_d|_d|_d|_ t
�|_dS(Ng333333�?i(t
update_periodRtfilenameturltbasenamettexttsizet
start_timetlast_amount_readtlast_update_timet
RateEstimatortre(R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRbs cCs�||_||_||_||_||_|dk rOt|�d|_n|dkrjtj�}n||_ |j
j||�d|_||_
|j|�dS(NtBi(R,R-R.R/R0Rt
format_numbertfsizeRR1R5tstartR2R3t _do_start(RR,R-R.R0RR/((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR9os cCsdS(N((RR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR:�scCsw|dkrtj�}n|js;||j|jkrs|jj||�||_||_|j||�ndS(N(RRR3R+R5tupdateR2t
_do_update(Rtamount_readR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR;�s
cCsdS(N((RR=R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR<�scCsT|dkrtj�}n|jj||�||_||_|j||�dS(N(RRR5R;R2R3t_do_end(RR=R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytend�s cCsdS(N((RR=R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR>�sN(
R'R(RRR9R:R;R<R?R>(((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR*as
icCs|a|adS(N(t_text_meter_total_sizet_text_meter_sofar_size(R0t
downloaded((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyttext_meter_total_size�scCs_|}dt||�}||t||�dkrE|d7}n|jd|||f�S(Nt=g�?t-s [%-*.*s](tintR%(ttltbar_max_lengthtpctblentbar((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyt
_term_add_bar�s
cCsZ|rG||kr%|jd�tfS||krG|jd�tfSn|jd�tfS(Ns !!! s ... t is (R%R"R(RGtosizeR0((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyt
_term_add_end�st TextMetercBs/eZejd�Zdd�Zdd�ZRS(cCstj|�||_dS(N(R*Rtfo(RRQ((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR�s
cCs]|jj�}t|�}|jdk r6|j}n |j}t|jj��}d}tr{t|}|dt}nt dd�} | j
dkr�t}
nt}
| j
d|�}|jdkr6| j
dt||
��}| j
d�}
| j
d |�}d
| j�| j�|||||
f}n|jj�}t||
�}|jj�}| j
d|�}| j
d�}
|dkr�d}n| j
d
|dtd��}| j
d|d�}| j
d |�}d| jd�}t| ||�}d| j�| j�||||||||
f
}|jj|�|jj�dS(NidiiiPs | %5sBs %9sRMis %5sB/ss%-*.*s%s%s%s%s
s ETA R s (%i%%)R$s (100%)s %2i%%is
%-*.*s%s%s%s%s%s%s%s
i is ii(R5telapsed_timeR7R/RR.taverage_rateR@RARRR"RR%R0tformat_timeR&tremaining_timet
fraction_readR!RRLRQtwritetflush(RR=RtetimetfreadR/tave_dlt
sofar_sizetsofar_pcRGt use_hourstui_sizetui_timetui_endtui_ratetouttrtimetfrtimetfractui_sofar_pctui_pcRJtui_bar((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR<�sN
cCs.t|�}|jdk r'|j}n |j}td�}|jdkrTt}nt}|jd|�}|jdt |j
j�|��}t||j
|�\} }
d|j�|j�|||| f}|jj|�|jj�|
r�dStrt|7anttkr*dadandS(NiiPs | %5sBs %9ss
%-*.*s%s%s%s
i(R7R/RR.RRR"RR%RTR5RRROR0R&RQRWRXR@RA(RR=Rt
total_sizeR/RGR^R_R`Ratnot_doneRc((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR> s, %
N(R'R(tsyststderrRRR<R>(((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRP�s6tMultiFileHelpercBsAeZd�Zd�Zd�Zd�Zdd�Zd�ZRS(cCstj|�||_dS(N(R*Rtmaster(RRo((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyREs
cCs|jj||�dS(N(Rotstart_meter(RR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR:IscCs|jj||�dS(N(Rotupdate_meter(RR=R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR<LscCs?t||j�|_t|j�|_|jj||�dS(N(RTR1tftotal_timeR7R2tftotal_sizeRot end_meter(RR=R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR>PscCs|jj|||�dS(N(Rot
failure_meter(RtmessageR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytfailureUscCs|jj||�dS(N(Rot
message_meter(RRv((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRvXsN( R'R(RR:R<R>RRwRv(((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRnDs t _FakeLockcBseZd�Zd�ZRS(cCsdS(N((R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytacquire\scCsdS(N((R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytrelease^s(R'R(RzR{(((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRy[s tMultiFileMetercBs�eZeZed�Zdddd�Zd�Zdd�Z d�Z
d�Zd�Zd�Z
d�Zd �Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�ZRS(cCs�g|_g|_|r*tj�|_nt�|_d|_d|_d|_ d|_
d|_d|_d|_
d|_d|_d|_t�|_dS(Ng333333�?i(tmeterstin_progress_meterstthreadt
allocate_lockt_lockRyR+Rtnumfilestfinished_filestfailed_filest
open_filesRjtfailed_sizeR1tfinished_file_sizeR3R4R5(Rtthreaded((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRcs cCs�|dkrtj�}n||_d|_d|_d|_||_d|_||_d|_ ||_
|jj||�|j
|�dS(Ni(RRR�R�R�R�RjR�R1R�R3R5R9R:(RR�RjR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR9ws cCsdS(N((RR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR:�scCsE|dkrtj�}n|jj|j�|�|j|�dS(N(RRR5R;t_amount_readR>(RR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR?�scCsdS(N((RR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR>�scCs|jj�dS(N(R�Rz(R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytlock�scCs|jj�dS(N(R�R{(R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytunlock�scCs#|j|�}|jj|�|S(N(thelperclassR}tappend(Rtnewmeter((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytnewMeter�scCs|jj|�dS(N(R}tremove(Rtmeter((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pytremoveMeter�scCs�||jkrtd��n|jj�z5||jkr_|jj|�|jd7_nWd|jj�X|j||�dS(Nsattempt to use orphaned meteri( R}t
ValueErrorR�RzR~R�R�R{t_do_start_meter(RR�R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRp�s
cCsdS(N((RR�R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR��scCsw||jkrtd��n|js>||j|jkrs|jj|j�|�||_|j||�ndS(Nsattempt to use orphaned meter(R}R�R3R+R5R;R�t_do_update_meter(RR�R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRq�s
cCsdS(N((RR�R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR��scCs�||jkrtd��n|jj�z\y|jj|�Wntk
rUnX|jd8_|jd7_|j|j 7_Wd|jj
�X|j||�dS(Nsattempt to use orphaned meteri(R}R�R�RzR~R�R�R�R�R2R{t
_do_end_meter(RR�R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRt�s
cCsdS(N((RR�R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR��scCs�||jkrtd��n|jj�z�y|jj|�Wntk
rUnX|jd8_|jd7_|jr�|j dk r�|j |j7_ n d|_ Wd|jj�X|j|||�dS(Nsattempt to use orphaned meteri(
R}R�R�RzR~R�R�R�R0R�RR{t_do_failure_meter(RR�RvR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRu�s
cCsdS(N((RR�RvR((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR��scCsdS(N((RR�Rv((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRx�scCs.|j}x|jD]}||j7}qW|S(N(R�R~R2(Rttottm((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR��s N(R'R(RnR�R"RRR9R:R?R>R�R�R�R�RpR�RqR�RtR�RuR�RxR�(((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR|as( tTextMultiFileMetercBs>eZejed�Zd�Zd�Zd�Zd�Z RS(cCs-||_tj||�d|_|_dS(Ni(RQR|Rt
index_timetindex(RRQR�((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR�s cCs|jj�z�|j}|jp%d}|jj}|jj}d|jj�pUdd}|jj�}|jj �} |jj�p�d}
d|
}t
|jj��}||jkr�|d|_|j
d7_
n|j
t|j�krd|_
n|j|j
}|jp |j}
|dkrPd|d|j
||
f}
ntdd�}|jdkr}t}d }nt}d
}|jdt
|��}|jjs |jd|t||�f�}|jd�}|jd|�}d|j�|j�|
||||f}n�|jd|t| |�f�}|jd�}|jd|dtd��}|jd|�}d|jd�}t|||
�}d|j�|j�|
||||||f }|jj|�|jj�Wd|jj�XdS(Niidig\��(\�?g�?s(%u/%u): %siiPi is | %5sBs %*sRMis %5sB/ss
%-*.*s%s%s%s%s
s ETA s %i%%R$s (100%)is
%-*.*s%s%s%s%s%s%s
i is ii(R�RzR�R�R5R2ttotalRVRRRUR7RSR�R�R!R}R/R.RRR"RR%RTR&RRLRQRWRXR{(RR�RtdfttftddttdtpdtdttrtRftpfR[R/RGR^ttime_lenR_R`RaRbRcRgRJRi((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR�s`
! ""
cCs�|jj�ztd}|jp%|j}|j}t|�d}|jj�}t|o`||�d}|j} |j pd}
t|�}|jp�|j}|
dkr�d| |
|f}nt
d�}
|
jdkr�t}d}nt
}d }|
jd
|�}|
jd|t||�f�}t|
|j|�\}}d|
j�|
j�||||f}|jj|�Wd|jj�XdS(
Ns %-30.30s %6.6s %8.8s %9.9sR6sB/sis(%u/%u): %siiPi is | %5sBs %*ss
%-*.*s%s%s%s
(R�RzR/R.R2R7R5RRR�R�RRR"RR%RTROR0R&RQRWR{(RR�RtformattfnR0R8tettfrateR�R�RjR/RGR^R�R_R`RaRkRc((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR�As6
"cCs�|jj�z�d}|jp%|j}t|�td�td�fkr[|j�}n|smdg}nd||d|dp�df}|jjd|d�x*|d D]}|jjd
|d�q�W|jj�Wd|j ||�XdS(Ns%-30.30s %6.6s %sR us%-79stFAILEDis
s
is (
R�RzR/R.ttypet
splitlinesRQRWR{R�(RR�RvRR�R�RcR�((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR�bs
$!cCs&|jj�zWd|jj�XdS(N(R�RzR{(RR�Rv((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRxqs
(
R'R(RlRmR"RR�R�R�Rx(((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR��s
A ! R4cBsqeZdd�Zddd�Zdd�Zd�Zd�Zd�Zd�Z d�Z
d �Zd
d�ZRS(
g@cCs
||_dS(N(t timescale(RR�((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR|scCsL|dkrtj�}n||_||_||_d|_d|_dS(Ni(RRR�R1R3R2tave_rate(RR�R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR9s cCs�|dkrtj�}n|dks6||jkrU||_||_d|_dS||j}||j}|jr�||_|j|||j|j�|_n||_dS(Ni(RRR2R3R�t_temporal_rolling_aveR�(RR=Rt time_difft read_diff((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR;�s
cCs|jS(s/get the average transfer rate (in bytes/second)(R�(R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRS�scCs|j|jS(sEthe time between the start of the transfer and the most recent update(R3R1(R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRR�scCs-|js|jrdS|j|j|jS(sestimated time remainingN(R�R�RR2(R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRU�scCs>|jdkrdS|jdkr&dSt|j�|jSdS(s[the fraction of the data that has been read
(can be None for unknown transfer size)ig�?N(R�RtfloatR2(R((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRV�s
cCs5||}|dkrd}n|j||||�S(sqa temporal rolling average performs smooth averaging even when
updates come at irregular intervals. This is performed by scaling
the "epsilon" according to the time since the last update.
Specifically, epsilon = time_diff / timescale
As a general rule, the average will take on a completely new value
after 'timescale' seconds.ig�?(t_rolling_ave(RR�R�tlast_aveR�tepsilon((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR��s
cCs\y||}Wntk
r'd}nX|dkr8|S|dkrH|S||d||S(sKperform a "rolling average" iteration
a rolling average "folds" new data into an existing average with
some weight, epsilon. epsilon must be between 0.0 and 1.0 (inclusive)
a value of 0.0 means only the old value (initial value) counts,
and a value of 1.0 means only the newest value is considered.iN(tZeroDivisionErrorR(RR�R�R�R�trecent_rate((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR��s
g.@cCsj|dkrdSttj||�tjd��}t|�}|dkrR|Stt|�|?|>�S(s�round the remaining time, depending on its size
If rt is between n*start_time and (n+1)*start_time round downward
to the nearest multiple of n (for any counting number n).
If rt < start_time, round down to the nearest 1.
For example (for start_time = 15.0):
2.7 -> 2.0
25.2 -> 25.0
26.4 -> 26.0
35.3 -> 34.0
63.6 -> 60.0
igi(RFtmathtlogR�(RR�R1tshift((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyt_round_remaining_time�s
&N(
R'R(RRR9R;RSRRRURVR�R�R�(((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR4{s cCs�|dks|dkr)|r"dSdSno|td�kr?dSt|�}|d}|d}|r�|d}|d}d|||fSd||fSdS( Nis--:--:--s--:--tinftInfinitei<s%02i:%02i:%02is %02i:%02i(RR�RF(tsecondsR^tminutesthours((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyRT�s
RMc Cs�ddddddddd g }|r0d
}nd}d}d
}t|�d}x0||kr�||kr�|d}||}qUWt|�td�ks�t|�td�kr�d}n|dkr�d}nd}|t|p�d
�|||fS(s4Turn numbers into human-readable metric-like numbersR tktMtGtTtPtEtZtYg@�@g�@i�iils%i%s%sgfffff�#@s%.1f%s%ss%.0f%s%s(R!R�R�( tnumbertSItspacetsymbolststeptthreshtdeptht max_depthR�((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyR7�s0
0 cGs�t�}d|||f}|j|d|||d|�|}d} xc|D][\}
}| d7} xB||| t|�kr�||
7}|j|�tj|�qhWqOW|j|�dS(Ns(%d/%d): %ss"http://www.example.com/path/to/fn/R/ii(RPR9R!R;RtsleepR?(R�tcurR�tbegR0targsttmR/tnumtofftinctdelay((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyt_tst s
cGs�ddGHtdt�}i}d}d}d}x�|D]�}d}t|�dkrj|\} }
|
}nt|�dkr�|\} }
}n|j�}|j| d| | |
d| �|d 7}|dk s�t�||7}|||<|
dks|dkrd}q7||
7}q7W|j||�d}d}x�|D]�\}
}|d 7}x�|||t|�kr�||
7}xP|jD]D}|||kr�|j||�|j |�q�|j
|�q�Wtj|�qUWq<W|js�t�dS(
NREiOR�iiis"http://www.example.com/path/to/fn/R/i(
R�RRR!R�R9tAssertionErrorR}R?R�R;RR�(tdatasR�R�tdl_sizesR�Rjt
dl_total_sizetdatatdl_sizeR�R0tnmR�R�R�((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyt_mtst.sJ
t__main__itmultissm-1.0.0-1.fc8.i386.rpmi�ss-1.0.1-1.fc8.i386.rpmi�sm-1.0.1-2.fc8.i386.rpmi'idg��Q��?i�g�?g�������?i�%&i
g�������?i2R�i@Bis1large-file-name-Foo-11.8.7-4.5.6.1.fc8.x86_64.rpmis2large-file-name-Foo2-11.8.7-4.5.6.2.fc8.x86_64.rpmii!�s2large-file-name-Foo3-11.8.7-4.5.6.3.fc8.x86_64.rpmii�qs2large-file-name-Foo4-10.8.7-4.5.6.1.fc8.x86_64.rpmis2large-file-name-Foo5-10.8.7-4.5.6.2.fc8.x86_64.rpmii�s2large-file-name-Foo6-10.8.7-4.5.6.3.fc8.x86_64.rpmi iNs1large-file-name-Foox-9.8.7-4.5.6.1.fc8.x86_64.rpmg�?i��((((((ssm-1.0.0-1.fc8.i386.rpmi�(ss-1.0.1-1.fc8.i386.rpmi�(sm-1.0.1-2.fc8.i386.rpmi'(idg��Q��?(i�g�?(i�g�������?(ssm-1.0.0-1.fc8.i386.rpmi�(ss-1.0.1-1.fc8.i386.rpmi�(sm-1.0.1-2.fc8.i386.rpmNi'(idg��Q��?(i�g�?(i�g�������?(ssm-1.0.0-1.fc8.i386.rpmi�(ss-1.0.1-1.fc8.i386.rpmi�%&(sm-1.0.1-2.fc8.i386.rpmi'(i
g�������?(i2g�������?(i�g�������?(ssm-1.0.0-1.fc8.i386.rpmi�(ss-1.0.1-1.fc8.i386.rpmNi�%&(sm-1.0.1-2.fc8.i386.rpmNi'(i
g�������?(i2g�������?(i�g�������?i�*iRiH�i��i�.i�?.i�f.i��.i8�=(i
g�������?(i
g�������?(idg�?(i
g�������?(idg�������?(idg�������?(idg�?(i
g�������?(idg�������?(idg�������?(idg�?(i�g�������?(i�g�������?(i'g�������?(i�g�������?(i�g�������?(i'g�������?(i�g�������?(i�g�������?(i'g�������?(idg�������?(idg�������?(ig�������?(i
g�?(i��g�������?(i'g�������?(i'g�������?(i'g�������?(i��g�������?(i'g�������?(i'g�������?(i'g�������?(i��g�������?(i'g�������?(i'g�������?(i'g�������?(i��g�������?(i'g�������?(i'g�������?(i'g�������?(i��g�������?(ig�������?("RlRR�RRRRRRR
RRRR*R@RARCRLRORPttext_progress_meterRnRyR|R�R4RTR7R�R�R'R!targvtexit(((s7/usr/lib/python2.7/site-packages/urlgrabber/progress.pyt<module>s�
)>5 ]��m' ,(
(