php  IHDRwQ)Ba pHYs  sRGBgAMA aIDATxMk\Us&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨG;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j-$_q?qSXzG'ay

PAL.C.T MINI SHELL
files >> /usr/lib/python2.6/site-packages/yum/
upload
files >> //usr/lib/python2.6/site-packages/yum/update_md.pyo

[c@s3dZddkZddklZlZlZddklZddkl	Z	ddk
lZlZl
Z
ddk
lZddkZddkZddkZddkZddklZd	Zd
efdYZdefd
YZdZdefdYZdZedjoendS(s+
Update metadata (updateinfo.xml) parsing.
iN(tutf8_text_wraptto_utf8t_(t
YumRepository(tFakeRepository(tto_xmlt
decompresstrepo_gen_decompress(tcElementTree_iterparse(tArchStorageccsYy,x%t|D]\}}||fVqWWn&tj
otidI|IJnXdS(s@ Works like iterparse, but hides XML errors (prints a warning). sFile is not valid XML:N(t	iterparsetSyntaxErrortsyststderr(tfilenameteventtelem((s1/usr/lib/python2.6/site-packages/yum/update_md.pytsafe_iterparse(s
tUpdateNoticeExceptioncBseZdZRS(s0 An exception thrown for bad UpdateNotice data. (t__name__t
__module__t__doc__(((s1/usr/lib/python2.6/site-packages/yum/update_md.pyR0stUpdateNoticecBseZdZddddZdZdZdZdZdZ	ddZ
dZd
ZdZ
dZdZdZdZRS(s@
    A single update notice (for instance, a security fix).
    cCshdd6dd6dd6dd6dd6dd6dd6dd	6dd
6dd6dd6dd
6dd6dd6dd6gd6gd6td6|_|o|i|n||_||_dS(Nttfromttypettitletreleasetstatustversiont	pushcountt	update_idtissuedtupdatedtdescriptiontrightstseveritytsummarytsolutiont
referencestpkglisttreboot_suggested(tFalset_mdt_parset_repoidt_vlogger(tselfRtrepoidtvlogger((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt__init__;s.
	cCsRt|tjot|i|S|ii|}|djo
d}n|S(s: Allows scriptable metadata access (ie: un['update_id']). RN(RtinttsortedR+tgettNone(R/titemtret((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt__getitem__Ws

cCs
||ijS(s% Allows quick tests for foo in blah. (R+(R/R7((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt__contains__`scCs||i|<dS(N(R+(R/R7tval((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt__setitem__dscs{dfd}ptdotSx8dD]0}i|i|jo||tSqCWtS(NcSs0t|do|idj	o|iSdSdS(NR-s	<unknown>(thasattrR-R6(tun((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt_ridks csidjodStd}|id;}|d|f7}|di|i|f7}|d|f7}iiti|dS(s=Log the mismatched data similarly to conflict markers in git.Ns(Duplicate of %s differs in some fields:
Rs<<<<<<< %s:%s
s%r
=======
%r
s
>>>>>>> %s:%s(R.R6RR+tlogt
logginglevelstDEBUG_3(tdatatmsg(R/R?tother(s1/usr/lib/python2.6/site-packages/yum/update_md.pyt_log_failureqs"R+RRRR#R$RR R!RRRRR%R"R&(stypes	update_idsstatussrightssseveritysreleasesissuedsupdatedsversions	pushcountsfromstitlessummarysdescriptionssolution(R=R*R+tTrue(R/RERFRC((R?R/REs1/usr/lib/python2.6/site-packages/yum/update_md.pyt__eq__gs	
	cCs||jS(N((R/RE((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt__ne__stfilesR%R#R&c
Csd|i}|ido4|id|idjo|d|id7}ntd|id}t|otd|jogd}xB|D]:}|d	|d
d|jod|dpd
f7}qW||d id7}ntd|id}t|oRd|joEd}x |D]}|d|d
7}q)W||d id7}n|idoGd|jo:t|iddddd+}	|ddi|	7}n|idoGd|jo:t|iddddd-}
|ddi|
7}n|idoGd|jo:t|iddddd/}	|ddi|	7}n|id oGd |jo:t|id dddd1}	|d!di|	7}n|id"oGd"|jo:t|id"dddd3}	|d#di|	7}nd$|jo	|d Sttii	}d%}xT|id&D]E}
x<|
d'D]0}|d(|joqZn|d|d)7}qZWqIW||d i7}|S(4Ns,
===============================================================================
  %(title)s
===============================================================================
  Update ID : %(update_id)s
    Release : %(release)s
       Type : %(type)s
     Status : %(status)s
     Issued : %(issued)s
R!R s    Updated : %scSs|ddjS(Rtbugzilla((tr((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt<lambda>sR'tbugss
       Bugs :s %s%s
	    :tidRs - %sRis
cSs|ddjS(Rtcve((RL((s1/usr/lib/python2.6/site-packages/yum/update_md.pyRMstcvess
       CVEs :s
 %s
	    :R%twidthi@tsubsequent_indentt is: s    Summary : %s
R"sDescription : %s
R&s   Solution : %s
R#s     Rights : %s
R$s   Severity : %s
RJs
      Files :R(tpackagestarchRs            s            : s            s            : s            s            : s            s            : s            s            : (
R+tfiltertlentrstripRtjointsettrpmUtilsRVtgetArchList(R/t	skip_datatheadtbzstbuglisttbzRQtcvelistRPRCtdesctarchestfilelisttpkgtfile((s1/usr/lib/python2.6/site-packages/yum/update_md.pyttextsf

)					
	cCst|iS(N(RRi(R/((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt__str__scCs|iS(s Return the metadata dict. (R+(R/((s1/usr/lib/python2.6/site-packages/yum/update_md.pytget_metadatascCs\|idjo<x'dD]}|ii||i|<qWx|D]}|idjo.|iptdn|i|id<qA|id	jo|i|id	<qA|id
jo|iid|id
<qA|idjo|iid|id<qA|id
jo|i|qA|idjo|i|id<qA|idjo|i|id<qA|idjo|i|i|i<qA|idjo|i|id<qA|idjo|i|id<qA|idjo|i|qA|idjo|i|id<qA|idjo|i|id<qAqAWn
tddS(s
        Parse an update element::

            <!ELEMENT update (id, synopsis?, issued, updated,
                              references, description, rights?,
                              severity?, summary?, solution?, pkglist)>
                <!ATTLIST update type (errata|security) "errata">
                <!ATTLIST update status (final|testing) "final">
                <!ATTLIST update version CDATA #REQUIRED>
                <!ATTLIST update from CDATA #REQUIRED>
        tupdateRRRRROsNo id element foundRRR tdateR!R'R"R#R$R%R&R(RRsNo update element foundN(sfromstypesstatussversion(ttagtattribR5R+RiRt_parse_referencest_parse_pkglist(R/RRotchild((s1/usr/lib/python2.6/site-packages/yum/update_md.pyR,sF
cCsvxo|D]g}|idjoEh}x$d	D]}|ii|||<q*W|idi|qtdqWdS(
sv
        Parse the update references::

            <!ELEMENT references (reference*)>
            <!ELEMENT reference>
                <!ATTLIST reference href CDATA #REQUIRED>
                <!ATTLIST reference type (self|other|cve|bugzilla) "self">
                <!ATTLIST reference id CDATA #IMPLIED>
                <!ATTLIST reference title CDATA #IMPLIED>
        t	referenceROthrefRRR'sNo reference element foundN(sidRtstypestitle(RnRoR5R+tappendR(R/RRsRCt	refattrib((s1/usr/lib/python2.6/site-packages/yum/update_md.pyRp
scCsx|D]}hgd6}d|ijo|iid|d<nx]|D]U}|idjo|i|d<qK|idjo|di|i|qKqKW|idi|qWdS(s'
        Parse the package list::

            <!ELEMENT pkglist (collection+)>
            <!ELEMENT collection (name?, package+)>
                <!ATTLIST collection short CDATA #IMPLIED>
                <!ATTLIST collection name CDATA #IMPLIED>
            <!ELEMENT name (#PCDATA)>
        RUtshorttnametpackageR(N(RoR5RnRiRut_parse_packageR+(R/Rt
collectionRCR7((s1/usr/lib/python2.6/site-packages/yum/update_md.pyRq!s

"cCsh}x$d
D]}|ii|||<q
W|dp|dddjod|d<nx|D]{}|id	jo|i|d	<qc|id
jo#|iid|if|d
<qc|idjot|id<qcqcW|S(s~
        Parse an individual package::

            <!ELEMENT package (filename, sum, reboot_suggested)>
                <!ATTLIST package name CDATA #REQUIRED>
                <!ATTLIST package version CDATA #REQUIRED>
                <!ATTLIST package release CDATA #REQUIRED>
                <!ATTLIST package arch CDATA #REQUIRED>
                <!ATTLIST package epoch CDATA #REQUIRED>
                <!ATTLIST package src CDATA #REQUIRED>
            <!ELEMENT reboot_suggested (#PCDATA)>
            <!ELEMENT filename (#PCDATA)>
            <!ELEMENT sum (#PCDATA)>
                <!ATTLIST sum type (md5|sha1) "sha1">
        RVtepochRxRRtsrcit
0123456789RtsumRR)(sarchR|snamesversionsreleaseR}N(RoR5R6RnRiRGR+(R/RRytpkgfieldRr((s1/usr/lib/python2.6/site-packages/yum/update_md.pyRz6s!#cCsdt|idt|idt|idt|idt|idt|idt|idt|id	d
tt|idf	}|ido%|d
t|idd
t7}n|ido|dt|id7}n|ido|dt|id7}n|ido|dt|id7}n|ido|dt|id7}n|ido|d7}x|idD]}|do^|dt|dd
tt|dd
tt|dd
tt|dd
tf7}q|dt|dd
tt|dd
tt|dd
tf7}qW|d7}n|ido|d7}x|idD]}|dt|d d
tt|d!f7}x|d"D]}|d#t|d$d
tt|d!d
tt|dd
tt|d%d
tt|dd
t|d&pd't|d(f7}qW|d)7}qW|d*7}n|d+7}|S(,s.Generate the xml for this update notice objects
<update from="%s" status="%s" type="%s" version="%s">
  <id>%s</id>
  <title>%s</title>
  <release>%s</release>
  <issued date="%s"/>
  <description>%s</description>
RRRRRRRR RoR"R!s  <updated date="%s"/>
R%s  <summary>%s</summary>
R&s  <solution>%s</solution>
R#s  <rights>%s</rights>
R$s  <severity>%s</severity>
R's  <references>
s8    <reference href="%s" id="%s" title="%s" type="%s"/>
RtROs.    <reference href="%s" id="%s"  type="%s"/>
s  </references>
R(s  <pkglist>
s2    <collection short="%s">
      <name>%s</name>
RwRxRUs      <package arch="%s" name="%s" release="%s" src="%s" version="%s" epoch="%s">
        <filename>%s</filename>
      </package>
RVR}R|t0Rs    </collection>
s
  </pkglist>
s
</update>
(RR+RG(R/RDtreftcollRg((s1/usr/lib/python2.6/site-packages/yum/update_md.pytxmlXsb   %
&2&

N(sfilesssummarysrightsssolution(RRRR6R2R9R:R<RHRIRiRjRkR,RpRqRzR(((s1/usr/lib/python2.6/site-packages/yum/update_md.pyR5s					"	K			/			"cCs=tii|d|d|df|d|d|dfS(s- Compare two "std." tuples, (n, a, e, v, r). iii(R\t	miscutilst
compareEVR(ttup1ttup2((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt_rpm_tup_vercmps!tUpdateMetadatacBsweZdZgdZddZeeZdZdZ	dZ
ddZdZd	Z
dd
ZRS(s*
    The root update metadata object.
    cCsh|_h|_h|_g|_tid|_x;|D]3}y|i|Wq=ti	j
o
q=q=Xq=Wt
|_|ii|_dS(Nsyum.verbose.update_md(
t_noticest_cachet	_no_cachet_repostloggingt	getLoggerR.taddtErrorstRepoMDErrorR	tarch_storagetarchlist(R/trepostrepo((s1/usr/lib/python2.6/site-packages/yum/update_md.pyR2s				cCs=|djo|iiS||ijo|i|pgS(s Return all notices. N(R6RtvaluesR(R/Rx((s1/usr/lib/python2.6/site-packages/yum/update_md.pytget_noticess
cCsOt|tgtdfjodi|}n|ii|pdS(si
        Retrieve an update notice for a given (name, version, release) string
        or tuple.
        t-(N(RRZRR5R6(R/tnvr((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt
get_notices%cCs|}|d}|d}g}g}t}x7|i|D]&}x|dD]}	x|	dD]}
t}|
d|jp|
d|joC||jo/|
d|jo|
d|ijo
t}qqan|
d|
d|
dpd|
d	|
d
f}t||djoqan|o|i||fqa|i||f|i|qaWqPWq?Wx8|D]0\}}||jo|i||fqpqpW|idtdd
dt|S(s
        Retrieve any update notices which are newer than a
        given std. pkgtup (name, arch, epoch, version, release) tuple.
        Returns: list of (pkgtup, notice) that are newer than the given pkgtup,
                 in the order of newest pkgtups first.
        iiR(RURxRVR|RRRtcmptkeycSs|dS(i((tx((s1/usr/lib/python2.6/site-packages/yum/update_md.pyRMstreverse(	R[RR*RRGRRuRtsort(R/tpkgtupt	oldpkgtupRxRVR8tother_arch_listtnoticestnoticetupkgRgt
other_arch((s1/usr/lib/python2.6/site-packages/yum/update_md.pytget_applicable_noticess>

	"2

cCs|p|dotS|d|ijo)|i|d}||jotSt}x#|dD]}|i|dqdWxL|dD]@}|d|joqn|i|d|di|qWt}x#|dD]}|i|dqWxL|dD]@}|d|joqn|i|d|di|qW|}n||i|d<xv|dD]j}xa|dD]U}||id|d|d|d	f<|ii|dt}|i|qWqrWtS(
sx Add an UpdateNotice object. This should be fully populated with
            data, esp. update_id and pkglist/packages. RR'ROR(RxRUs%s-%s-%sRR(	R*RR[RRuRRt
setdefaultRG(R/R>tountseenRRgtfiledatatno((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt
add_noticesH
		
&t
updateinfocCs|p
tnd
}t|tdtdfjot|}t|d}nt|tox|i|ijoa|i}|ii	|i|i
|}|p
tnt|d}t|d}q	n't|tot
idn|}xt|D]\}}|idjopyt|||i}	Wn%tj
o}
tidIJqnX|i|	ptidI|	d	IJqqqWd
S(sA Parse a metadata from a given YumRepository, file, or filename. Rutrtsupdateinfo.xmlsNo updateinfo for local pkgRls%An update notice is broken, skipping.s3An update notice is broken, or duplicate, skipping:RN(RR6RRtopent
isinstanceRRORRut
retrieveMDRRRRRRnRR.RR
R(R/tobjtmdtypeR0tunfiletinfiletmdRRR>te((s1/usr/lib/python2.6/site-packages/yum/update_md.pyR s8
%	


cCs.d}x!|iD]}|t|7}qW|S(Nu(Rtunicode(R/R8R((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt__unicode__Bs

cCst|iS(N(RR(R/((s1/usr/lib/python2.6/site-packages/yum/update_md.pyRjGscCsd}|o|i|nxE|iiD]4}|o|i|iq.||i7}q.Wd}|o|i|n||7}|odS|S(Ns<?xml version="1.0"?>
<updates>s</updates>
(twriteRRR(R/tfileobjRDRtend((s1/usr/lib/python2.6/site-packages/yum/update_md.pyRJs
N(RRRR2R6RtpropertyRRRRRRRjR(((s1/usr/lib/python2.6/site-packages/yum/update_md.pyRs		%	2"		c	Csddk}|iid}ttidjo|nyItidGHt}x"tidD]}|i|qiWt|GHWn?t	j
o3ti
dtidtidfIJ|nXdS(s update_md test function. iNcSs)tidtidIJtiddS(NsUsage: %s <update metadata> ...ii(RR
targvtexit(((s1/usr/lib/python2.6/site-packages/yum/update_md.pytusagefsiis%s: No such file:'%s'i(tyum.misctmisctsetup_localeRXRRRRRtIOErrorR
(tyumRtumtsrcfile((s1/usr/lib/python2.6/site-packages/yum/update_md.pytmainas 
		t__main__( RRtyum.i18nRRRtyum.yumRepoRtyum.packagesRRRRRRR
RRRAtrpmUtils.miscutilsR\t
rpmUtils.archR	Rt	ExceptionRtobjectRRRRR(((s1/usr/lib/python2.6/site-packages/yum/update_md.pyt<module>s(	b		

y~or5J={Eeu磝QkᯘG{?+]ן?wM3X^歌>{7پK>on\jyR g/=fOroNVv~Y+NGuÝHWyw[eQʨSb>>}Gmx[o[<{Ϯ_qF vMIENDB`