Ë
    GKÕiƒr  ã                   ó  — d dl Z d dlmZmZmZmZmZmZmZ d dl	m
Z
mZmZmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZmZ d dlmZmZmZ d d	lmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d d
l3m4Z4 d dl3m5Z6 d dl7m8Z8 d dl7m5Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@mAZAmBZB d dlCmDZD d dlEmFZF d dlGmHZHmIZImJZJ d dlKmLZL d dlMmNZN d dlOmPZP d dlQmRZRmSZSmTZT d dlUmVZV d dlWmXZX d dlYmZZZ d dl[m\Z\  G d„ d«      Z]de)fd„Z^de+fd „Z_d!e`d"ead#eLfd$„Zbd!e`d"ead%ead#eLfd&„Zc	 dVd'ee`   d(e`d)edd*edd+ee`   d,e`fd-„Zed#eLd.e`d,eafd/„ZfdWd0„Zgd#eLfd1„Zhd#eLd,eafd2„Zid3ee`   d,e`fd4„Zjd#eLd"ead,eafd5„Zkd#eLd,eafd6„Zld#eLd7e`d,eafd8„Zmd7e`d#eLd"ead,eafd9„Zn	 dXd(ed:e`d;e`fd<„Zod=e`fd>„Zpd?e]d@e.fdA„Zqd?e]d@e/fdB„Zrd?e]d@e-fdC„Zsd?e]d@e"fdD„Ztd?e]d@e#fdE„Zud?e]d@e$fdF„Zvd?e]d@e(fdG„Zwd?e]d@e&fdH„Zxd?e]d@e%fdI„Zyde)d"ead#eLd,eeee   f   fdJ„Zz e>jö                  dK¬L«      dM„ «       Z| eBdKejú                  ejü                  e|eFjþ                  dN eA e@d!e�j                   ¬O«       e@dPe�j                  dQ¬R«       e@dSe�j                  dQ¬R«      g¬T«      g¬U«      Zƒy)Yé    N)ÚDictÚListÚ
NamedTupleÚOptionalÚSetÚTupleÚUnion)ÚaptÚ
exceptionsÚmessagesÚsystemÚutil)Úattach_with_tokenÚenable_entitlement_by_name)Ú	_initiate)ÚMagicAttachRevokeOptionsÚ_revoke)ÚMagicAttachWaitOptionsÚ_wait)Ú	FixStatusÚUnfixedPackageÚstatus_message)ÚESM_APPS_POCKETÚESM_INFRA_POCKETÚSTANDARD_UPDATES_POCKETÚFixPlanAptUpgradeStepÚFixPlanAttachStepÚFixPlanEnableStepÚFixPlanNoOpAlreadyFixedStepÚFixPlanNoOpLivepatchFixStepÚFixPlanNoOpStatusÚFixPlanNoOpStepÚFixPlanResultÚFixPlanStepÚFixPlanUSNResultÚFixPlanWarningÚ"FixPlanWarningFailUpdatingESMCacheÚ&FixPlanWarningPackageCannotBeInstalledÚ#FixPlanWarningSecurityIssueNotFixedÚNoOpAlreadyFixedDataÚNoOpLivepatchFixDataÚUSNAdditionalData)ÚCVEFixPlanOptions)Ú_plan)ÚUSNFixPlanOptions)ÚContractExpiryStatusÚ_is_attached)Úcli_util)ÚProArgumentÚProArgumentGroupÚ
ProCommand)Úaction_detach)ÚHelpCategory)ÚCLOUD_TYPE_TO_TITLEÚPRO_CLOUD_URLSÚget_cloud_type)ÚUAConfig)ÚPRINT_WRAP_WIDTH)Úentitlement_factory)ÚApplicabilityStatusÚCanEnableFailureÚUserFacingStatus)Únotices)ÚNotice)ÚPRO_HOME_PAGE)Úcolorize_commandsc                   ój   — e Zd Zdededee   defd„Zd„ Z	 ddee   d	ed
e	e   fd„Z
dee   defd„Zy)Ú
FixContextÚtitleÚdry_runÚaffected_pkgsÚcfgc                 óÊ   — d| _         g | _        t        «       | _        t        j
                  | _        || _        || _        || _	        || _
        d| _        d| _        d| _        y )Nr   TF)Ú	pkg_indexÚunfixed_pkgsÚsetÚinstalled_pkgsr   ÚSYSTEM_NON_VULNERABLEÚ
fix_statusrG   rI   rH   rJ   Úshould_print_pkg_headerÚ warn_package_cannot_be_installedÚfixed_by_livepatch)ÚselfrG   rH   rI   rJ   s        ú2/usr/lib/python3/dist-packages/uaclient/cli/fix.pyÚ__init__zFixContext.__init__R   s_   € ð ˆŒØˆÔÜ!›eˆÔÜ#×9Ñ9ˆŒØˆŒ
Ø*ˆÔØˆŒØˆŒØ'+ˆÔ$Ø05ˆÔ-Ø"'ˆÕó    c                 óZ  — | j                   rŸt        j                  j                  t	        | j                   «      «      j                  t	        | j                   «      dj                  t        | j                   «      «      ¬«      }t        t        j                  |t        dd¬«      «       y y )Nú, )ÚcountÚpkgsú    F)ÚwidthÚsubsequent_indentÚreplace_whitespace)rI   r   ÚSECURITY_AFFECTED_PKGSÚ	pluralizeÚlenÚformatÚjoinÚsortedÚprintÚtextwrapÚfillr<   )rU   Úmsgs     rV   Úprint_fix_headerzFixContext.print_fix_headere   s�   € Ø×ÒÜ×1Ñ1×;Ñ;Ü�D×&Ñ&Ó'óç‰fÜ˜$×,Ñ,Ó-Ø—Y‘Yœv d×&8Ñ&8Ó9Ó:ð ó ð ô Ü—‘ØÜ*Ø&,Ø',ô	õð rX   NÚsource_pkgsÚstatusÚpocketc                 ó¤   — | j                   rDt        t        ||| j                  t	        | j
                  «      |rt        |«      nd ¬«      «       y y )N)Úpkg_listrm   rL   Únum_pkgsÚpocket_source)rR   rg   Ú_format_packages_messagerL   rc   rI   Úget_pocket_description)rU   rl   rm   rn   s       rV   Úprint_pkg_headerzFixContext.print_pkg_headerv   sJ   € ð ×'Ò'ÜÜ(Ø(Ø!Ø"Ÿn™nÜ  ×!3Ñ!3Ó4á:@Ô.¨vÔ6Àdôõ
ð (rX   r\   Úunfixed_reasonc                 ó^   — |D ](  }| j                   j                  t        ||¬«      «       Œ* y )N)Úpkgrv   )rM   Úappendr   )rU   r\   rv   rx   s       rV   Úadd_unfixed_packageszFixContext.add_unfixed_packages‰   s/   € Øò 	ˆCØ×Ñ×$Ñ$Ü 3°~ÔFõñ	rX   ©N)Ú__name__Ú
__module__Ú__qualname__ÚstrÚboolr   r;   rW   rk   r   ru   rz   © rX   rV   rF   rF   Q   s{   „ ð(àð(ð ð(ð ˜C‘yð	(ð
 ó(ò&ð* !%ñ	à˜#‘Yðð ðð ˜‘ó	ð&¨¨c©ð ÀCô rX   rF   Úcvec                 óô   — dj                  | j                  j                  «       | j                  ¬«      dj                  | j                  j                  «       «      g}t	        dj                  |«      «       y )Nú{issue}: {description}©ÚissueÚdescriptionz! - https://ubuntu.com/security/{}ú
)rd   rG   Úupperr‡   rg   re   )r‚   Úliness     rV   Úprint_cve_headerr‹   �   s^   € à ×'Ñ'Ø—)‘)—/‘/Ó#°·±ð 	(ó 	
ð 	,×2Ñ2°3·9±9·?±?Ó3DÓEð	€Eô 
ˆ$�)‰)�EÓ
ÕrX   Úfix_planc                 óž  — | j                   }dj                  |j                  j                  «       |j                  ¬«      g}|j
                  }t        |t        «      rÕ|j                  ry|j                  t        j                  «       |j                  D ]J  }|j                  dj                  t        j                  j                  j                  |¬«      «      «       ŒL nP|j                  rD|j                  t        j                  «       |j                  D ]  }|j                  d|z   «       Œ t!        dj#                  |«      «       y )Nr„   r…   z - {})r‚   z - rˆ   )Útarget_usn_planrd   rG   r‰   r‡   Úadditional_dataÚ
isinstancer,   Úassociated_cvesry   r   ÚSECURITY_FOUND_CVESÚurlsÚSECURITY_CVE_PAGEÚassociated_launchpad_bugsÚSECURITY_FOUND_LAUNCHPAD_BUGSrg   re   )rŒ   Ú
target_usnrŠ   r�   r‚   Úlp_bugs         rV   Úprint_usn_headerr™   ›   s  € Ø×)Ñ)€Jà ×'Ñ'Ø×"Ñ"×(Ñ(Ó*¸
×8NÑ8Nð 	(ó 	
ð€Eð !×0Ñ0€OÜ�/Ô#4Ô5Ø×*Ò*Ø�L‰Lœ×5Ñ5Ô6Ø&×6Ñ6ò �Ø—‘Ø—N‘NÜ Ÿ™×7Ñ7×>Ñ>À3Ð>ÓGóõñð ×6Ò6Ø�L‰Lœ×?Ñ?Ô@Ø)×CÑCò -�Ø—‘˜U V™^Õ,ð-ô 
ˆ$�)‰)�EÓ
ÕrX   Úsecurity_issuerH   rJ   c                 óÂ  — t        t        | g¬«      |¬«      }|j                  j                  d   j                  }|rN|j
                  rBt        j                  t        j                  |j                  xs d|j
                  «      ¬«      ‚t        |j                  j                  d   «       t        «        t        |j                  j                  d   ||«      \  }}|S )N)Úcves©ÚoptionsrJ   r   úunexpected-error©Ú	named_msg)Úcve_planr-   Ú	cves_datarœ   Úerrorrj   r   ÚAnonymousUbuntuProErrorr   ÚNamedMessageÚcoder‹   rg   Úexecute_fix_plan)rš   rH   rJ   rŒ   r¤   rm   Ú_s          rV   Úfix_cverª   µ   s¼   € ÜÜ!¨Ð'7Ô8¸cô€Hð ×Ñ×#Ñ# AÑ&×,Ñ,€EÙ�—’Ü×0Ñ0Ü×+Ñ+Ø—
‘
Ò0Ð0°%·)±)óô
ð 	
ô
 �X×'Ñ'×,Ñ,¨QÑ/Ô0Ü	„Gä  ×!3Ñ!3×!8Ñ!8¸Ñ!;¸WÀcÓJ�I€FˆAØ€MrX   Ú
no_relatedc           	      ó¢  — t        t        | g¬«      |¬«      }|j                  j                  d   j                  j
                  }|rN|j                  rBt        j                  t        j                  |j                  xs d|j                  «      ¬«      ‚t        |j                  j                  d   «       t        dt        j                  j                  | ¬«      z   «       t!        |j                  j                  d   j                  ||«      \  }}|t"        j$                  t"        j&                  fvr|S |j                  j                  d   j(                  }|r|r|S t        dt        j*                  j                  dj-                  d	„ |D «       «      ¬
«      z   «       t        dt        j.                  z   «       i }	|D ]J  }
t        dj                  |
j0                  «      «       t!        |
||«      |	|
j0                  <   t        «        ŒL t        t        j2                  «       t5        || t        j6                  ¬«       d}|D ]Ô  }
|	|
j0                     \  }}t5        ||
j0                  t        j8                  ¬«       |t"        j:                  k(  r.t        dt        j<                  j                  d¬«      z   «       d}|t"        j>                  k(  sŒ�|D ]>  }|j@                  sŒt        dj                  |jB                  |j@                  «      «       Œ@ d}ŒÖ |r,t        dt        jD                  j                  | ¬«      z   «       |S )N)Úusnsr�   r   rŸ   r    rˆ   )Úissue_idz
- c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr{   )rG   )Ú.0Úusns     rV   ú	<genexpr>zfix_usn.<locals>.<genexpr>ñ   s   è ø€ Ò$L°3 S§Y¥YÑ$Lùs   ‚)Úrelated_usnsz- {})ÚcontextFú- úfix operation©Ú	operationTz
  - {}: {})#Úusn_planr/   Ú	usns_datar­   rŽ   r¤   rj   r   r¥   r   r¦   r§   r™   rg   ÚSECURITY_FIXING_REQUESTED_USNrd   r¨   r   rP   ÚSYSTEM_NOT_AFFECTEDÚrelated_usns_planÚSECURITY_RELATED_USNSre   ÚSECURITY_FIXING_RELATED_USNSrG   ÚSECURITY_USN_SUMMARYÚ_handle_fix_status_messageÚFIX_ISSUE_CONTEXT_REQUESTEDÚFIX_ISSUE_CONTEXT_RELATEDÚSYSTEM_VULNERABLE_UNTIL_REBOOTÚENABLE_REBOOT_REQUIRED_TMPLÚSYSTEM_STILL_VULNERABLErv   rx   ÚSECURITY_RELATED_USN_ERROR)rš   rH   r«   rJ   rŒ   r¤   Útarget_usn_statusr©   r½   Úrelated_usn_statusÚrelated_usn_planÚfailure_on_related_usnrm   rM   Úunfixed_pkgs                  rV   Úfix_usnrÍ   È   s2  € ô Ü!¨Ð'7Ô8¸cô€Hð ×Ñ×#Ñ# AÑ&×6Ñ6×<Ñ<€EÙ�—’Ü×0Ñ0Ü×+Ñ+Ø—
‘
Ò0Ð0°%·)±)óô
ð 	
ô
 �X×'Ñ'×,Ñ,¨QÑ/Ô0ä	ØÜ
×
0Ñ
0×
7Ñ
7Ø#ð 8ó 
ñ	
ôô ,Ø×Ñ×Ñ Ñ"×2Ñ2ØØóÑÐ�qð Ü×'Ñ'Ü×%Ñ%ð!ñ ð !Ð à ×*Ñ*×/Ñ/°Ñ2×DÑDÐÙ¡
Ø Ð ä	ØÜ
×
(Ñ
(×
/Ñ
/ØŸ™Ñ$LÐ:KÔ$LÓLð 0ó 
ñ	
ôô 
ˆ$”×6Ñ6Ñ
6Ô7à
ð ð .ò ÐÜˆf�m‰mÐ,×2Ñ2Ó3Ô4Ü5EØØØó6
ÐÐ+×1Ñ1Ñ2ô
 	�ðô 
Œ(×
'Ñ
'Ô(ÜØØÜ×4Ñ4õð #ÐØ-ò *ÐØ1Ð2B×2HÑ2HÑIÑˆ�Ü"ØØ×"Ñ"Ü×6Ñ6õ	
ð ”Y×=Ñ=Ò=ÜØÜ×6Ñ6×=Ñ=Ø-ð >ó ñôð &*Ð"Ø”Y×6Ñ6Ó6Ø+ò �Ø×-Ó-ÜØ$×+Ñ+Ø'ŸO™O¨[×-GÑ-Góõðð &*Ñ"ð1*ñ4 ÜØÜ×1Ñ1×8Ñ8Ø'ð 9ó ñô	
ð ÐrX   rp   rm   rL   rq   rr   Úreturnc           
      óv  — | syg }g }| D ]9  }|dz  }|j                  dj                  ||«      «       |j                  |«       Œ; t        j                  dj                  ddj	                  |«      z   dz   dj	                  t        |«      «      «      t        d¬	«      }d
j                  |t        ||«      «      S )z;Format the packages and status to an user friendly message.Ú é   z{}/{}z{} {}:ú(rZ   ú)r]   ©r^   r_   z{}
{})ry   rd   rh   ri   re   rf   r<   r   )	rp   rm   rL   rq   rr   Ú	msg_indexÚsrc_pkgsÚsrc_pkgÚ
msg_headers	            rV   rs   rs   /  sµ   € ñ Øà€IØ€HØò !ˆØ�Q‰ˆ	Ø×Ñ˜Ÿ™¨	°8Ó<Ô=Ø�‰˜Õ ð!ô
 —‘Ø�‰Ø�$—)‘)˜IÓ&Ñ&¨Ñ,¨d¯i©i¼¸xÓ8HÓ.Ió	
ô Ø ô€Jð �?‰?˜:¤~°f¸mÓ'LÓMÐMrX   Útokenc                 ó¼   — t        t        dd|gg«      «       	 t        | |d¬«       y# t        j                  $ r}t        |j
                  «       Y d}~yd}~ww xY w)ztAttach to an Ubuntu Pro subscription with a given token.

    :return: True if attach performed without errors.
    ÚproÚattachT)rÙ   Úallow_enableNF)rg   rD   r   r   ÚUbuntuProErrorrj   )rJ   rÙ   Úerrs      rV   Ú_run_ua_attachrà   K  sT   € ô
 
Ô
˜e X¨uÐ5Ð6Ó
7Ô8ðÜ˜# U¸Õ>ØøÜ×$Ñ$ò Üˆc�g‰gŒÜûðús   š) ©A¼AÁAc                  óì   — t        «       \  } }| t        j                  «       v rQt        t        j
                  j                  t        j                  | «      t        j                  | «      ¬«      «       yy)z:Alert the user when running Pro on cloud with PRO support.)rG   Úcloud_specific_urlN)	r:   r9   Úkeysrg   r   ÚSECURITY_USE_PRO_TMPLrd   r8   Úget)Ú
cloud_typer©   s     rV   Ú*_inform_ubuntu_pro_existence_if_applicablerç   Y  sa   € ä"Ó$�M€J�Ø”^×(Ñ(Ó*Ñ*ÜÜ×*Ñ*×1Ñ1Ü)×-Ñ-¨jÓ9Ü#1×#5Ñ#5°jÓ#Að 2ó õ	
ð +rX   c                 ó  — t        t        j                  «       t        | ¬«      }t        dt        j                  j                  |j                  ¬«      z   «       t        |j                  ¬«      }	 t        || ¬«      }t        dt        j                  z   «       t!        | |j"                  «      S # t        j                  $ rC}t        t        j                  «       t        |j                  ¬«      }t        || ¬«       |‚d }~ww xY w)N)rJ   rˆ   )Ú	user_code)Úmagic_tokenr�   )rg   r   ÚCLI_MAGIC_ATTACH_INITr   ÚCLI_MAGIC_ATTACH_SIGN_INrd   ré   r   rÙ   r   r   ÚMagicAttachTokenErrorÚCLI_MAGIC_ATTACH_FAILEDr   r   ÚCLI_MAGIC_ATTACH_PROCESSINGrà   Úcontract_token)rJ   Úinitiate_respÚwait_optionsÚ	wait_respÚeÚrevoke_optionss         rV   Ú_perform_magic_attachrö   e  sá   € Ü	Œ(×
(Ñ
(Ô)Ü #Ô&€MÜ	ØÜ
×
+Ñ
+×
2Ñ
2Ø#×-Ñ-ð 3ó 
ñ	
ôô *°m×6IÑ6IÔJ€Lð	Ü ,°CÔ8ˆ	ô 
ˆ$”×5Ñ5Ñ
5Ô6Ü˜#˜y×7Ñ7Ó8Ð8øô ×+Ñ+ò ÜŒh×.Ñ.Ô/ä1Ø%×+Ñ+ô
ˆô 	˜¨CÕ0Øˆûðús   Á3B2 Â2DÃ>DÄDc                 ó.  — t        «        t        t        j                  «       t	        j
                  t        j                  g d¢¬«      }|dk(  ry|dk(  rt        | «      S |dk(  r0t        t        j                  «       t        d«      }t        | |«      S y)	zZPrompt for attach to a subscription or token.

    :return: True if attach performed.
    )ÚsÚaÚc©Úvalid_choicesrú   Frø   rù   ú> T)rç   rg   r   Ú*SECURITY_UPDATE_NOT_INSTALLED_SUBSCRIPTIONr   Úprompt_choicesÚSECURITY_FIX_ATTACH_PROMPTrö   ÚPROMPT_ENTER_TOKENÚinputrà   )rJ   ÚchoicerÙ   s      rV   Ú_prompt_for_attachr  €  s€   € ô
 /Ô0Ü	Œ(×
=Ñ
=Ô>Ü× Ñ Ü×+Ñ+Ú%ô€Fð �‚}ØØ�‚}Ü$ SÓ)Ð)Ø�‚}ÜŒh×)Ñ)Ô*Ü�d“ˆÜ˜c 5Ó)Ð)àrX   rM   c           
      óÜ   — t        | «      }t        j                  t        j                  j                  |«      j                  |dj                  t        | «      «      ¬«      t        d¬«      S )z—Format the list of unfixed packages into an message.

    :returns: A string containing the message output for the unfixed
              packages.
    rZ   )rq   r\   r]   rÔ   )
rc   rh   ri   r   ÚSECURITY_PKG_STILL_AFFECTEDrb   rd   re   rf   r<   )rM   Únum_pkgs_unfixeds     rV   Ú_format_unfixed_packages_msgr  —  sb   € ô ˜<Ó(ÐÜ�=‰=Ü×,Ñ,×6Ñ6Øó	
ç
‰&Ø%Ø—‘œ6 ,Ó/Ó0ð ó 
ô Ø ô	ð 	rX   c                 ó¦   — t        | «      j                  }|r:|t        j                  j                  k(  r|rt        t        j                  «       yyy)zuCheck if the Ubuntu Pro subscription is expired.

    :returns: True if subscription is expired and not renewed.
    FT)r1   Úcontract_statusr0   ÚEXPIREDÚvaluerg   r   Ú(SECURITY_DRY_RUN_UA_EXPIRED_SUBSCRIPTION)rJ   rH   Úcontract_expiry_statuss      rV   Ú_check_subscription_is_expiredr  ª  sG   € ô
 *¨#Ó.×>Ñ>ÐáØ"Ô&:×&BÑ&B×&HÑ&HÒHáÜ”(×CÑCÔDØØàrX   c                 óš  — ddl }t        «        t        t        j                  «       t        j                  t        j                  j                  t        ¬«      ddg¬«      }|dk(  rdt        t        j                  «       t        d«      }t        t        dd	gg«      «       t        |j                  d
d¬«      | «       t        | |«      S y)zdPrompt for attach a new subscription token to the user.

    :return: True if attach performed.
    r   N)ÚurlÚrrú   rû   rý   rÛ   ÚdetachTÚcli)Ú
assume_yesrd   F)Úargparserç   rg   r   Ú%SECURITY_UPDATE_NOT_INSTALLED_EXPIREDr   rÿ   ÚSECURITY_FIX_RENEW_PROMPTrd   rC   ÚPROMPT_EXPIRED_ENTER_TOKENr  rD   r6   Ú	Namespacerà   )rJ   r  r  rÙ   s       rV   Ú_prompt_for_new_tokenr  ¼  s©   € ó
 ä.Ô0Ü	Œ(×
8Ñ
8Ô9Ü× Ñ Ü×*Ñ*×1Ñ1´mÐ1ÓDØ˜C�jô€Fð �‚}ÜŒh×1Ñ1Ô2Ü�d“ˆÜÔ %¨Ð!2Ð 3Ó4Ô5Ü�h×(Ñ(°DÀÐ(ÓGÈÔMÜ˜c 5Ó)Ð)àrX   Úservicec                 ó   — t        t        j                  j                  |¬«      «       t	        j
                  t        j                  j                  |¬«      ddg¬«      }|dk(  rit        t        dd|gg«      «       t        | |¬«      \  }}|s=|�;t        |t        «      r+|j                  �t        |j                  j                  «       |S y)	zMPrompt for enable a pro service.

    :return: True if enable performed.
    ©r  rô   rú   rû   rÛ   Úenable©rJ   ÚnameF)rg   r   ÚSECURITY_SERVICE_DISABLEDrd   r   rÿ   ÚSECURITY_FIX_ENABLE_PROMPTrD   r   r�   r?   Úmessagerj   )rJ   r  r  ÚretÚreasons        rV   Ú_prompt_for_enabler'  Ó  s¹   € ô
 
Œ(×
,Ñ
,×
3Ñ
3¸GÐ
3Ó
DÔEÜ× Ñ Ü×+Ñ+×2Ñ2¸7Ð2ÓCØ˜C�jô€Fð
 �‚}ÜÔ %¨°7Ð!;Ð <Ó=Ô>Ü0°S¸wÔG‰ˆˆVñ ØÐ"Ü˜6Ô#3Ô4à�~‰~Ð)Ü�f—n‘n×(Ñ(Ô)àˆ
àrX   c                 ó,  — t        || ¬«      }|�r|j                  «       \  }}|t        j                  k(  ry|j	                  «       \  }}|t
        j                  k(  r„|r7t        dt        j                  j                  |j                  ¬«      z   «       yt        ||j                  «      ryt        t        j                  j                  |j                  ¬«      «       yt        t        j                  j                  |j                  ¬«      «       y)zQ
    Verify if the Ubuntu Pro subscription has the required service enabled.
    r   Trˆ   r  F)r=   Úuser_facing_statusr@   ÚACTIVEÚapplicability_statusr>   Ú
APPLICABLErg   r   Ú'SECURITY_DRY_RUN_UA_SERVICE_NOT_ENABLEDrd   r!  r'  ÚSECURITY_UA_SERVICE_NOT_ENABLEDÚ SECURITY_UA_SERVICE_NOT_ENTITLED)r  rJ   rH   ÚentÚ
ent_statusr©   r+  s          rV   Ú)_handle_subscription_for_required_servicer2  ï  s  € ô  #¨GÔ
4€CÚ
Ø×.Ñ.Ó0‰ˆ
�AàÔ)×0Ñ0Ò0Øà"%×":Ñ":Ó"<ÑÐ˜aØÔ#6×#AÑ#AÒAÙÜØÜ×FÑF×MÑMØ #§¡ð Nó ñôð ä! # s§x¡xÔ0ØäÜ×<Ñ<×CÑCØ #§¡ð Dó ôð ô Ü×9Ñ9×@Ñ@ØŸH™Hð Aó ôð rX   r®   r´   c                 óŒ  — | t         j                  k(  rc|r"t        j                  j	                  ||¬«      }n t        j
                  j	                  |¬«      }t        t        j                  |«      «       y | t         j                  k(  rc|r"t        j                  j	                  ||¬«      }n t        j                  j	                  |¬«      }t        t        j                  |«      «       y | t         j                  k(  rc|r"t        j                  j	                  ||¬«      }n t        j                  j	                  |¬«      }t        t        j                  |«      «       y |r"t        j                  j	                  ||¬«      }n t        j                  j	                  |¬«      }t        t        j                  |«      «       y )N)r†   r´   )r†   )r   rP   r   Ú%SECURITY_ISSUE_RESOLVED_ISSUE_CONTEXTrd   ÚSECURITY_ISSUE_RESOLVEDrg   r   Úhandle_unicode_charactersr¼   Ú'SECURITY_ISSUE_UNAFFECTED_ISSUE_CONTEXTÚSECURITY_ISSUE_UNAFFECTEDrÄ   Ú)SECURITY_ISSUE_NOT_RESOLVED_ISSUE_CONTEXTÚSECURITY_ISSUE_NOT_RESOLVED)rm   r®   r´   rj   s       rV   rÁ   rÁ     sv  € ð ”×0Ñ0Ò0ÙÜ×@Ñ@×GÑGØ¨ð Hó ‰Cô ×2Ñ2×9Ñ9ÀÐ9ÓIˆCÜŒd×,Ñ,¨SÓ1Õ2Ø	”9×0Ñ0Ò	0ÙÜ×BÑB×IÑIØ¨ð Jó ‰Cô ×4Ñ4×;Ñ;À(Ð;ÓKˆCÜŒd×,Ñ,¨SÓ1Õ2Ø	”9×;Ñ;Ò	;ÙÜ×DÑD×KÑKØ¨ð Ló ‰Cô ×6Ñ6×=Ñ=ÀHÐ=ÓMˆCÜŒd×,Ñ,¨SÓ1Õ2áÜ×DÑD×KÑKØ¨ð Ló ‰Cô ×6Ñ6×=Ñ=ÀHÐ=ÓMˆCÜŒd×,Ñ,¨SÓ1Õ2rX   rn   c                 óœ   — | t         k(  rt        j                  S | t        k(  rt        j                  S | t
        k(  rt        j                  S | S r{   )r   r   Ú'SECURITY_UBUNTU_STANDARD_UPDATES_POCKETr   ÚSECURITY_UA_INFRA_POCKETr   ÚSECURITY_UA_APPS_POCKET)rn   s    rV   rt   rt   ?  sE   € ØÔ(Ò(Ü×?Ñ?Ð?Ø	Ô#Ò	#Ü×0Ñ0Ð0Ø	”?Ò	"Ü×/Ñ/Ð/àˆrX   Úfix_contextÚstepc                 óÀ  — | j                  |j                  j                  d|j                  j                  ¬«       d| _        t
        j                  j                  |j                  j                  |j                  j                  ¬«      }t        d|z   «       | j                  |j                  j                  g|¬«       d| _        t        j                  | _        y )NÚreleased©rl   rm   rn   F)ÚpackageÚversionrµ   ©r\   rv   T)ru   ÚdataÚrelated_source_packagesrn   rR   r   ÚFIX_CANNOT_INSTALL_PACKAGErd   Úbinary_packageÚbinary_package_versionrg   rz   Úsource_packagerS   r   rÆ   rQ   )r?  r@  Úwarn_msgs      rV   Ú)_execute_package_cannot_be_installed_steprN  J  s¾   € ð × Ñ Ø—I‘I×5Ñ5ØØ�y‰y×Ñð !ô ð
 +0€KÔ'ä×2Ñ2×9Ñ9Ø—	‘	×(Ñ(Ø—	‘	×0Ñ0ð :ó €Hô 
ˆ$�‰/Ôà×$Ñ$Ø�i‰i×&Ñ&Ð'¸ð %ô ð 48€KÔ0Ü&×>Ñ>€KÕrX   c                 ó�  — | j                  |j                  j                  |j                  j                  ¬«       | xj                  t        |j                  j                  «      z  c_        | j                  |j                  j                  t        |j                  j                  «      ¬«       t        j                  | _
        y )N)rl   rm   rF  )ru   rG  Úsource_packagesrm   rL   rc   rz   r   r   rÆ   rQ   ©r?  r@  s     rV   Ú&_execute_security_issue_not_fixed_steprR  c  s•   € ð × Ñ Ø—I‘I×-Ñ-Ø�y‰y×Ñð !ô ð ×ÒœS §¡×!:Ñ!:Ó;Ñ;Õà×$Ñ$Ø�Y‰Y×&Ñ&Ü% d§i¡i×&6Ñ&6Ó7ð %ô ô '×>Ñ>€KÕrX   c                 óž   — t        j                  «       rt        t        j                  «       y t        dt        j
                  z   dz   «       y )Nrˆ   )r   Úwe_are_currently_rootrg   r   ÚCLI_FIX_FAIL_UPDATING_ESM_CACHEÚ(CLI_FIX_FAIL_UPDATING_ESM_CACHE_NON_ROOTrQ  s     rV   Ú%_execute_fail_updating_esm_cache_steprW  s  s6   € ô ×!Ñ!Ô#ÜŒh×6Ñ6Õ7äˆd”X×FÑFÑFÈÑMÕNrX   c                 óP  — | j                  |j                  j                  d|j                  j                  ¬«       | xj                  t        |j                  j                  «      z  c_        |j                  j                  s;| j                  st        t        j                  «       t        j                  | _        y t        j                  «       sp| j                   sdt        t        j"                  «       t        j$                  | _        | j'                  |j                  j                  t        j"                  ¬«       y t        t)        g d¢g d¢z   t+        |j                  j                  «      z   g«      «       | j                   rt        j                  | _        y 	 t-        j.                  «        t-        j0                  g d¢|j                  j                  z   ddi¬	«       t        j                  | _        d| _        | j:                  j=                  |j                  j                  «       y # t2        $ rg}t5        |d
t7        |«      «      }t        |«       t        j$                  | _        | j'                  |j                  j                  |¬«       Y d }~y d }~ww xY w)NrB  rC  rF  )r
   Úupdatez&&)r
   Úinstallú--only-upgradeú-y)zapt-getrZ  r[  r\  ÚDEBIAN_FRONTENDÚnoninteractive)ÚcmdÚoverride_env_varsrj   T)ru   rG  rP  rn   rL   rc   Úbinary_packagesrS   rg   r   ÚSECURITY_UPDATE_INSTALLEDr   rP   rQ   r   rT  rH   ÚSECURITY_APT_NON_ROOTrÆ   rz   rD   rf   r
   Úrun_apt_update_commandÚrun_apt_commandÚ	ExceptionÚgetattrr   rR   rO   rY  )r?  r@  rô   rj   s       rV   Ú_execute_apt_upgrade_steprh  |  s  € ð × Ñ Ø—I‘I×-Ñ-ØØ�y‰y×Ñð !ô ð
 ×ÒœS §¡×!:Ñ!:Ó;Ñ;Õà�9‰9×$Ò$Ø×;Ò;Ü”(×4Ñ4Ô5Ü!*×!@Ñ!@ˆÔØä×%Ñ%Ô'°×0CÒ0CÜŒh×,Ñ,Ô-Ü!*×!BÑ!BˆÔØ×(Ñ(Ø—‘×*Ñ*Ü#×9Ñ9ð 	)ô 	
ð 	ä	Üâ'Ú<ñ=ä˜Ÿ™×2Ñ2Ó3ñ4ðó	
ôð ×ÒÜ!*×!@Ñ!@ˆÔØðÜ×"Ñ"Ô$Ü×ÑÚ>Ø�i‰i×'Ñ'ñ(à0Ð2BÐCõ	
ô '×<Ñ<€KÔØ*.€KÔ'Ø×Ñ×%Ñ% d§i¡i×&?Ñ&?Õ@øô ò Ü�a˜¤ A£Ó'ˆÜˆcŒ
Ü!*×!BÑ!BˆÔØ×(Ñ(Ø—‘×*Ñ*Øð 	)ô 	
ô 	ûðús   Æ#AH5 È5	J%È>AJ Ê J%c                 ó  — |j                   j                  dk(  rt        nt        }| j	                  |j                   j
                  d|¬«       d| _        t        | j                  «      j                  s¯| j                  rt        dt        j                  z   «       �nPt        | j                  «      �s:t        j                   | _        | j%                  |j                   j
                  t        j&                  j)                  |j                   j                  ¬«      ¬«       y t+        | j                  | j                  ¬«      rª| j                  rt        t        j,                  «       n„t/        | j                  «      sot        j                   | _        | j%                  |j                   j
                  t        j0                  j)                  |j                   j                  ¬«      ¬«       y t        j2                  | _        y )	Nú	esm-infrarB  rC  Frˆ   r  rF  )rJ   rH   )rG  Úrequired_servicer   r   ru   rP  rR   r1   rJ   Úis_attachedrH   rg   r   Ú SECURITY_DRY_RUN_UA_NOT_ATTACHEDr  r   rÆ   rQ   rz   ÚSECURITY_UA_SERVICE_REQUIREDrd   r  r  r  Ú$SECURITY_UA_SERVICE_WITH_EXPIRED_SUBrP   ©r?  r@  rn   s      rV   Ú_execute_attach_steprq  º  s�  € ð �9‰9×%Ñ%¨Ò4õ 	äð ð
 × Ñ Ø—I‘I×-Ñ-ØØð !ô ð +0€KÔ'Ü˜Ÿ™Ó(×4Ò4Ø×ÒÜ�$œ×BÑBÑBÖCä% k§o¡oÕ6Ü)2×)JÑ)J�Ô&Ø×0Ñ0ØŸ™×2Ñ2Ü#+×#HÑ#H×#OÑ#OØ $§	¡	× :Ñ :ð $Pó $ð 1ô ð Ü	'Ø�O‰O [×%8Ñ%8õ
ð ×ÒÜ”(×CÑCÕDÜ& {§¡Ô7Ü%.×%FÑ%FˆKÔ"Ø×,Ñ,Ø—Y‘Y×.Ñ.Ü'×LÑL×SÑSØ ŸI™I×6Ñ6ð  Tó  ð -ô ð ä&×<Ñ<€KÕrX   c                 ó  — |j                   j                  dk(  rt        nt        }| j	                  |j                   j
                  d|¬«       d| _        t        |j                   j                  | j                  | j                  «      so| j                  |j                   j
                  t        j                  j                  |j                   j                  ¬«      ¬«       t        j                  | _        y t        j"                  S )Nrj  rB  rC  Fr  rF  )rG  r  r   r   ru   rP  rR   r2  rJ   rH   rz   r   Ú%SECURITY_UA_SERVICE_NOT_ENABLED_SHORTrd   r   rÆ   rQ   rP   rp  s      rV   Ú_execute_enable_steprt  é  sâ   € ð �9‰9×Ñ Ò+õ 	äð ð
 × Ñ Ø—I‘I×-Ñ-ØØð !ô ð
 +0€KÔ'ä4Ø�	‰	×ÑØ�‰Ø×Ñôð
 	×(Ñ(Ø—‘×*Ñ*Ü#×IÑI×PÑPØŸ	™	×)Ñ)ð Qó ð 	)ô 	
ô "+×!BÑ!BˆÔØä×*Ñ*Ð*rX   c                 óÄ   — |j                   j                  t        j                  j                  k(  r/t        t        j                  «       t        j                  | _
        y y r{   )rG  rm   r!   ÚNOT_AFFECTEDr  rg   r   ÚSECURITY_NO_AFFECTED_PKGSr   r¼   rQ   rQ  s     rV   Ú_execute_noop_not_affected_steprx  
  sE   € ð ‡y�y×ÑÔ,×9Ñ9×?Ñ?Ò?ÜŒh×0Ñ0Ô1Ü!*×!>Ñ!>ˆÕð @rX   c                 óØ   — t        |j                  t        «      rPt        t        j
                  j                  | j                  |j                  j                  ¬«      «       d| _	        y y )N)r†   rE  T)
r�   rG  r+   rg   r   ÚCVE_FIXED_BY_LIVEPATCHrd   rG   Úpatch_versionrT   rQ  s     rV   Ú%_execute_noop_fixed_by_livepatch_stepr|    sY   € ô �$—)‘)Ô1Ô2ÜÜ×+Ñ+×2Ñ2Ø!×'Ñ'ØŸ	™	×/Ñ/ð 3ó ô	
ð *.ˆÕ&ð 3rX   c                 óH  — t        |j                  t        «      rˆ| j                  |j                  j                  d|j                  j
                  ¬«       t        t        j                  «       | xj                  t        |j                  j                  «      z  c_	        y y )NrB  rC  )r�   rG  r*   ru   rP  rn   rg   r   rb  rL   rc   rQ  s     rV   Ú _execute_noop_already_fixed_stepr~    sx   € ô �$—)‘)Ô1Ô2Ø×$Ñ$ØŸ	™	×1Ñ1ØØ—9‘9×#Ñ#ð 	%ô 	
ô
 	Œh×0Ñ0Ô1Ø×Ò¤ T§Y¡Y×%>Ñ%>Ó!?Ñ?Öð 3rX   c                 ó@  — g | j                   ¢| j                  ¢}t        | j                  || j                  xs g |¬«      }|j                  «        t        |d„ ¬«      D �]^  }t        |t        «      rt        ||«       t        |t        «      rt        ||«       t        |t        «      rt        ||«       t        |t        «      r+t        ||«       |j                   t"        j$                  k7  r nÏt        |t&        «      r+t)        ||«       |j                   t"        j$                  k7  r n”t        |t*        «      r+t-        ||«       |j                   t"        j$                  k7  r nYt        |t.        «      rt1        ||«       t        |t2        «      rt5        ||«       t        |t6        «      s�ŒSt9        ||«       �Œa t;        «        |j<                  r]t;        t?        tA        tC        |j<                  D �cg c]  }|jD                  ‘Œ c}«      «      «      «       t"        jF                  |_        |j                   t"        j$                  k(  r…tI        jJ                  |jL                  ¬«      ret"        jN                  |_        tP        jR                  jU                  d¬«      }t;        |«       tW        jX                  tZ        j\                  d¬«       |j^                  s ta        |j                   | j                  «       |j                   |j<                  fS c c}w )N)rG   rH   rI   rJ   c                 ó   — | j                   S r{   )Úorder)Úxs    rV   ú<lambda>z"execute_fix_plan.<locals>.<lambda><  s
   € °·±€ rX   )Úkey)rO   r¶   r·   )1ÚplanÚwarningsrF   rG   Úaffected_packagesrk   rf   r�   r(   rN  r)   rR  r'   rW  r   rh  rQ   r   rP   r   rq  r   rt  r"   rx  r    r|  r   r~  rg   rM   r  ÚlistrN   rx   rÆ   r   Úshould_rebootrO   rÄ   r   rÅ   rd   rA   ÚaddrB   ÚENABLE_REBOOT_REQUIREDrT   rÁ   )rŒ   rH   rJ   Ú	full_planr?  r@  rÌ   Ú
reboot_msgs           rV   r¨   r¨   ,  sˆ  € ðØ	�‰ðà	×	Ñ	ð€Iô
 Ø�n‰nØØ×0Ñ0Ò6°BØô	€Kð × Ñ Ô"ä�yÑ&7Ô8ó @ˆÜ�dÔBÔCÜ5°kÀ4ÔHÜ�dÔ?Ô@Ü2°;ÀÔEÜ�dÔ>Ô?Ü1°+¸tÔDÜ�dÔ1Ô2Ü% k°4Ô8à×%Ñ%¬×)HÑ)HÒHÙÜ�dÔ-Ô.Ü  ¨dÔ3à×%Ñ%¬×)HÑ)HÒHÙÜ�dÔ-Ô.Ü  ¨dÔ3à×%Ñ%¬×)HÑ)HÒHÙä�dœOÔ,Ü+¨K¸Ô>Ü�dÔ7Ô8Ü1°+¸tÔDÜ�dÔ7Ö8Ü,¨[¸$Ö?ð9@ô< 
„GØ×ÒÜÜ(ÜÜð 0;×/GÑ/Göà +ð (ŸO›Oòóóó	ô	
ô "+×!BÑ!BˆÔð 	×Ñ¤)×"AÑ"AÒAÜ× Ñ °×0JÑ0JÕKä!*×!IÑ!IˆÔÜ×9Ñ9×@Ñ@Ø%ð Aó 
ˆ
ô 	ˆjÔÜ�‰Ü×)Ñ)Ø%õ	
ð
 ×)Ò)Ü" ;×#9Ñ#9¸8¿>¹>ÔJà×"Ñ" K×$<Ñ$<Ð=Ð=ùò7s   Ç:LÚfix)r_  c                óN  — | j                   rt        t        j                  «       d| j                  j                  «       v r-t        | j                  | j                   |«      }|j                  S t        | j                  | j                   | j                  |«      }|j                  S )Nr‚   )
rH   rg   r   ÚSECURITY_DRY_RUN_WARNINGrš   Úlowerrª   rÍ   r«   Ú	exit_code)ÚargsrJ   Úkwargsrm   s       rV   Ú
action_fixr•  ~  s…   € à‡|‚|ÜŒh×/Ñ/Ô0à�×#Ñ#×)Ñ)Ó+Ñ+Ü˜×,Ñ,¨d¯l©l¸CÓ@ˆð ×ÑÐô	 Ø×Ñ §¡¨t¯©Àó
ˆð ×ÑÐrX   T)Úhelpz	--dry-runÚ
store_true)r–  Úactionz--no-related)Ú	arguments)r–  r‡   r˜  Úhelp_categoryÚpreserve_descriptionÚargument_groupsr{   )rÎ   N)rÐ   )„rh   Útypingr   r   r   r   r   r   r	   Úuaclientr
   r   r   r   r   Úuaclient.actionsr   r   Ú+uaclient.api.u.pro.attach.magic.initiate.v1r   Ú)uaclient.api.u.pro.attach.magic.revoke.v1r   r   Ú'uaclient.api.u.pro.attach.magic.wait.v1r   r   Ú'uaclient.api.u.pro.security.fix._commonr   r   r   Ú/uaclient.api.u.pro.security.fix._common.plan.v1r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   Ú+uaclient.api.u.pro.security.fix.cve.plan.v1r-   r.   r¢   Ú+uaclient.api.u.pro.security.fix.usn.plan.v1r/   r¹   Ú(uaclient.api.u.pro.status.is_attached.v1r0   r1   Úuaclient.clir2   Úuaclient.cli.commandsr3   r4   r5   Úuaclient.cli.detachr6   Úuaclient.cli.parserr7   Úuaclient.clouds.identityr8   r9   r:   Úuaclient.configr;   Úuaclient.defaultsr<   Úuaclient.entitlementsr=   Ú(uaclient.entitlements.entitlement_statusr>   r?   r@   Úuaclient.filesrA   Úuaclient.files.noticesrB   Úuaclient.messages.urlsrC   Úuaclient.statusrD   rF   r‹   r™   r   r€   rª   rÍ   Úintrs   rà   rç   rö   r  r  r  r  r'  r2  rÁ   rt   rN  rR  rW  rh  rq  rt  rx  r|  r~  r¨   Ú assert_vulnerability_issue_validr•  ÚCLI_ROOT_FIXÚCLI_FIX_DESCÚSECURITYÚCLI_FIX_ISSUEÚCLI_FIX_DRY_RUNÚCLI_FIX_NO_RELATEDÚfix_commandr�   rX   rV   ú<module>r¾     sû  ðÛ ÷÷ ñ ÷ =Õ <ß JÝ A÷÷÷ñ ÷
÷ ÷ ÷ ÷ ó õ, JÝ IÝ IÝ I÷õ "ß KÑ KÝ -Ý ,÷ñ õ
 %Ý .Ý 5÷ñ õ
 #Ý )Ý 0Ý -÷<ñ <ð~˜-ó ðÐ/ó ð4˜Cð ¨$ð °Xó ð&dØðdØ"&ðdØ48ðdØ?GódðX $(ñNØ�3‰iðNàðNð ðNð ð	Nð
 ˜C‘=ðNð 	óNð8˜ð ¨ð °ó ó	
ð9˜xó 9ð6˜Hð ¨ó ð.¨t°C©yð ¸Só ð&¨ð ¸4ð ÀDó ð$˜xð ¨Dó ð.˜Hð ¨sð °tó ð8(Øð(Øð(Ø*.ð(à	ó(ðX 68ñ"3Øð"3Ø!$ð"3Ø/2ó"3ðJ 3ó ð?Øð?à
0ó?ð2?Øð?Ø#Fó?ð OØðOØ#EóOð;AØð;Aà
ó;Að|,=Øð,=à
ó,=ð^+Øð+à
ó+ðB?Øð?Ø#2ó?ð
.Øð
.Ø#>ó
.ð
@Øð
@Ø#>ó
@ðO>ØðO>Ø&*ðO>Ø19ðO>à
ˆ9�d˜>Ñ*Ð*Ñ+óO>ðd +€×*Ñ*¨uÔ5ñó 6ðñ Ø	Ø	×	Ñ	Ø×%Ñ%ØØ×'Ñ'ØááÐ,°8×3IÒ3IÔJÙØØ!×1Ò1Ø'ôñ
 Ø"Ø!×4Ò4Ø'ôðô	
ðô�rX   