ó
    x[h£@  ã                   ó„  • S SK r S SKrS SKrS SKJrJrJr  S SKJr  S SK	J	r	  S SK
JrJrJrJr  S SKJrJrJrJr  \R(                  " \5      r " S S\5      r " S	 S
5      r " S S5      r " S S5      rS r " S S5      r " S S5      r " S S5      r " S S5      r  " S S\RB                  5      r" " S S\5      r#g)é    N)ÚNoOptionErrorÚNoSectionErrorÚRawConfigParser)ÚStringIO)Útime)ÚpersistenceÚsettingsÚ
type_utilsÚutil)ÚCFG_ENV_NAMEÚ
PER_ALWAYSÚPER_INSTANCEÚPER_ONCEc                   ó   • \ rS rSrSrg)ÚLockFailureé   © N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú3/usr/lib/python3/dist-packages/cloudinit/helpers.pyr   r      ó   † Úr   r   c                   ó   • \ rS rSrSrg)Ú	DummyLocké   r   Nr   r   r   r   r   r      r   r   r   c                   óN   • \ rS rSrS r\R                  SS j5       rS rS r	Sr
g)	ÚDummySemaphoresé    c                 ó   • g ©Nr   ©Úselfs    r   Ú__init__ÚDummySemaphores.__init__!   s   € Ør   c              #   ó$   #   • [        5       v •  g 7fr$   )r   )r&   Ú_nameÚ_freqÚ_clear_on_fails       r   ÚlockÚDummySemaphores.lock$   s   é € ä‹kÓùs   ‚c                 ó   • g©NFr   ©r&   r*   r+   s      r   Úhas_runÚDummySemaphores.has_run(   s   € Ør   c                 ó   • g)NTr   r1   s      r   ÚclearÚDummySemaphores.clear+   s   € Ør   r   N©F)r   r   r   r   r'   Ú
contextlibÚcontextmanagerr-   r2   r5   r   r   r   r   r!   r!       s+   † òð ×Ñóó ðòõr   r!   c                   ó    • \ rS rSrS rS rSrg)ÚFileLocké/   c                 ó   • Xl         g r$   ©Úfn)r&   r?   s     r   r'   ÚFileLock.__init__0   s   € Ø�r   c                 óT   • S[         R                  " U 5      < SU R                  < S3$ )NÚ<z using file Ú>)r
   Úobj_namer?   r%   s    r   Ú__str__ÚFileLock.__str__3   s   � Ü'1×':Ò':¸4Ö'@À$Ç'Ä'ÐJÐJr   r>   N)r   r   r   r   r'   rE   r   r   r   r   r;   r;   /   s   † òõKr   r;   c                 ó&   • U R                  SS5      $ )NÚ-Ú_)Úreplace)Únames    r   Úcanon_sem_namerL   7   s   € Ø�<‰<˜˜SÓ!Ð!r   c                   óZ   • \ rS rSrS r\R                  S
S j5       rS rS r	S r
S rSrg	)ÚFileSemaphoresé;   c                 ó   • Xl         g r$   ©Úsem_path)r&   rR   s     r   r'   ÚFileSemaphores.__init__<   s   € Ø �r   c              #   ó˜   #   • [        U5      n U R                  X5      v •  g ! [         a    U(       a  U R                  X5        e f = f7fr$   )rL   Ú_acquireÚ	Exceptionr5   )r&   rK   ÚfreqÚclear_on_fails       r   r-   ÚFileSemaphores.lock?   sC   é € ä˜dÓ#ˆð	Ø—-‘- Ó+Ó+øÜó 	ÞØ—
‘
˜4Ô&Øð	üs   ‚A
�# ¢A
£$AÁA
c                 óÎ   • [        U5      nU R                  X5      n [        R                  " U5        g! [        [
        4 a    [        R                  " [        SU5         gf = f)NzFailed deleting semaphore %sFT)rL   Ú	_get_pathr   Údel_fileÚIOErrorÚOSErrorÚlogexcÚLOG)r&   rK   rW   Úsem_files       r   r5   ÚFileSemaphores.clearI   sZ   € Ü˜dÓ#ˆØ—>‘> $Ó-ˆð	Ü�MŠM˜(Ô#ð øô œÐ!ó 	Ü�KŠKœÐ;¸XÔFÙð	ús   ž5 µ,A$Á#A$c                 óD  • U R                  X5      (       a  g U R                  X5      n[        R                  " 5       < S[	        5       < S3n [
        R                  " X45        [        U5      $ ! [        [        4 a    [
        R                  " [        SU5         g f = f)Nz: Ú
z Failed writing semaphore file %s)r2   r[   ÚosÚgetpidr   r   Ú
write_filer]   r^   r_   r`   r;   )r&   rK   rW   ra   Úcontentss        r   rU   ÚFileSemaphores._acquireS   s~   € à�<‰<˜×#Ñ#Øð —>‘> $Ó-ˆÜ!#§¢¦¬d®fÐ5ˆð	Ü�OŠO˜HÔ/ô ˜Ó!Ð!øô œÐ!ó 	Ü�KŠKœÐ?ÀÔJÙð	ús   ÁA0 Á0,BÂBc                 óœ   • U(       a
  U[         :X  a  g[        U5      nU R                  X25      n[        R                  R                  U5      $ r0   )r   rL   r[   re   ÚpathÚexists)r&   rK   rW   Úcnamera   s        r   r2   ÚFileSemaphores.has_runc   s<   € Þ�tœzÓ)Øä˜tÓ$ˆØ—>‘> %Ó.ˆô �w‰w�~‰~˜hÓ'Ð'r   c                 óÆ   • U R                   nU(       a
  U[        :X  a  [        R                  R	                  X15      $ [        R                  R	                  X1< SU< 35      $ )NÚ.)rR   r   re   rk   Újoin)r&   rK   rW   rR   s       r   r[   ÚFileSemaphores._get_pathm   sB   € Ø—=‘=ˆÞ�tœ|Ó+Ü—7‘7—<‘< Ó/Ð/ä—7‘7—<‘< ²Tº4Ð*@ÓAÐAr   rQ   Nr7   )r   r   r   r   r'   r8   r9   r-   r5   rU   r2   r[   r   r   r   r   rN   rN   ;   s6   † ò!ð ×Ñóó ðòò"ò (õBr   rN   c                   ó*   • \ rS rSrS rS rSS jrSrg)ÚRunnerséu   c                 ó   • Xl         0 U l        g r$   ©ÚpathsÚsems)r&   rx   s     r   r'   ÚRunners.__init__v   s   € ØŒ
Øˆ�	r   c                 ó<  • U[         :X  d  U(       d  g S nU[        :X  a  U R                  R                  S5      nO%U[        :X  a  U R                  R                  S5      nU(       d  g X R                  ;  a  [        U5      U R                  U'   U R                  U   $ )NÚsem)r   r   rx   Ú	get_ipathr   Ú	get_cpathry   rN   )r&   rW   rR   s      r   Ú_get_semÚRunners._get_semz   s€   € Ø”:Ó¦TØØˆØ”<Óð —z‘z×+Ñ+¨EÓ2‰HØ”XÓØ—z‘z×+Ñ+¨EÓ2ˆHÞØØŸ9™9Ó$Ü"0°Ó":ˆD�I‰I�hÑØ�y‰y˜Ñ"Ð"r   Nc                 ó°  • U R                  U5      nU(       d
  [        5       nU(       d  / nUR                  X5      (       a  [        R	                  SX5        gUR                  XU5       nU(       d  [        SU-  5      e[        R	                  SX5        [        U[        5      (       a	  U" S0 UD6nOU" U6 nSU4sS S S 5        $ ! , (       d  f       g = f)Nz%s already ran (freq=%s))FNzFailed to acquire lock for %szRunning %s using lock (%s)Tr   )	r   r!   r2   r`   Údebugr-   r   Ú
isinstanceÚdict)	r&   rK   ÚfunctorÚargsrW   rX   r|   ÚlkÚresultss	            r   ÚrunÚRunners.run�   s«   € Ø�m‰m˜DÓ!ˆÞÜ!Ó#ˆCÞØˆDØ�;‰;�t×"Ñ"Ü�I‰IÐ0°$Ô=Ø Ø�X‰X�d -Ô0°BÞÜ!Ð"AÀDÑ"HÓIÐIä—	‘	Ð6¸ÔAÜ˜d¤T×+Ñ+Ù%™o¨™o‘Gá% t˜n�GØ˜g�÷ 1×0×0ús   Á+ACÃ
Crw   r0   )r   r   r   r   r'   r   r‰   r   r   r   r   rt   rt   u   s   † òò#÷&'r   rt   c                   óX   • \ rS rSr     SS jrS rS rS rS\4S jr	\
S	 5       rS
rg)ÚConfigMergeré¢   Nc                 óN   • Xl         X l        X0l        X@l        XPl        S U l        g r$   )Ú_pathsÚ_dsÚ_fnsÚ	_base_cfgÚ_include_vendorÚ_cfg)r&   rx   Ú
datasourceÚadditional_fnsÚbase_cfgÚinclude_vendors         r   r'   ÚConfigMerger.__init__£   s%   € ð ŒØŒØ"Œ	Ø!ŒØ-Ôàˆ�	r   c                 ó.  • / nU R                   (       aJ   U R                   R                  5       nU(       a&  [        U[        5      (       a  UR	                  U5        U$ U$ ! [
         a*    [        R                  " [        SU R                   5         U$ f = f)Nz2Failed loading of datasource config object from %s)	r�   Úget_config_objrƒ   r„   ÚappendrV   r   r_   r`   )r&   Úd_cfgsÚds_cfgs      r   Ú_get_datasource_configsÚ$ConfigMerger._get_datasource_configs³   s|   € ØˆØ�8�8ð	ØŸ™×0Ñ0Ó2�Þœj¨´$×8Ñ8Ø—M‘M &Ô)ð ˆˆvˆøô ó Ü—’ÜØHØ—H‘Hõð
 ˆðús   •AA  Á 0BÂBc                 ó  • / n[         [        R                  ;   a?  [        R                  [            n UR                  [        R
                  " U5      5        U$ U$ ! [         a     [        R                  " [        SU5         U$ f = f)Nz%Failed loading of env. config from %s)	r   re   Úenvironrœ   r   Ú	read_confrV   r_   r`   )r&   Úe_cfgsÚe_fns      r   Ú_get_env_configsÚConfigMerger._get_env_configsÂ   sp   € ØˆÜœ2Ÿ:™:Ó%Ü—:‘:œlÑ+ˆDðPØ—‘œdŸnšn¨TÓ2Ô3ð ˆˆvˆøô ó PÜ—’œCÐ!HÈ$ÕOØˆðPús   ³%A Á&BÂBc                 ó,  • / nU R                   (       d  U$ S/nU R                  (       a"  UR                  S5        UR                  S5        U Hs  nU R                   R                  U5      nU(       d  M'  [        R
                  R                  U5      (       d  MM   UR                  [        R                  " U5      5        Mu     U$ ! [         a    [        R                  SU5         Mœ  [         a     [        R                  " [        SU5         MÄ  f = f)NÚcloud_configÚvendor2_cloud_configÚvendor_cloud_configz5Skipped loading cloud-config from %s due to non-root.z&Failed loading of cloud-config from %s)r�   r“   rœ   Úget_ipath_curre   rk   Úisfiler   r£   ÚPermissionErrorr`   r‚   rV   r_   )r&   Úi_cfgsÚcc_pathsÚcc_pÚcc_fns        r   Ú_get_instance_configsÚ"ConfigMerger._get_instance_configsÌ   sÛ   € Øˆð �{�{ØˆMà"Ð#ˆØ××ð �O‰OÐ2Ô3Ø�O‰OÐ1Ô2ãˆDØ—K‘K×-Ñ-¨dÓ3ˆEßˆuœŸ™Ÿ™¨×.Ó.ðØ—M‘M¤$§.¢.°Ó"7Ö8ñ	 ð ˆøô 'ó Ü—I‘Ið%à÷ô
 !ó Ü—K’KÜÐEÀu÷ðús   Â%CÃ DÃ*%DÄDÚreturnc                 ó2  • / nU R                   (       a9  U R                    H)  n UR                  [        R                  " U5      5        M+     UR                  U R                  5       5        UR                  U R                  5       5        UR                  U R                  5       5        U R                  (       a  UR                  U R                  5        [        R                  " U5      $ ! [         a     [        R
                  " [        SU5         Mõ  f = f)Nz'Failed loading of configuration from %s)r‘   rœ   r   r£   rV   r_   r`   Úextendr¦   r³   rŸ   r’   Úmergemanydict)r&   ÚcfgsÚc_fns      r   Ú	_read_cfgÚConfigMerger._read_cfgì   sÆ   € ð ˆØ�9�9ØŸ	œ	�ðØ—K‘K¤§¢¨tÓ 4Ö5ñ "ð 	�‰�D×)Ñ)Ó+Ô,Ø�‰�D×.Ñ.Ó0Ô1Ø�‰�D×0Ñ0Ó2Ô3Ø�>�>Ø�K‰K˜Ÿ™Ô'Ü×!Ò! $Ó'Ð'øô !ó Ü—K’KÜÐFÈ÷ðús   ¤%C,Ã,&DÄDc                 ó^   • U R                   c  U R                  5       U l         U R                   $ r$   )r”   r»   r%   s    r   ÚcfgÚConfigMerger.cfg  s&   € ð �9‰9ÑØŸ™Ó(ˆDŒIØ�y‰yÐr   )r’   r”   r�   r‘   r“   r�   )NNNNT)r   r   r   r   r'   rŸ   r¦   r³   r„   r»   Úpropertyr¾   r   r   r   r   rŒ   rŒ   ¢   sH   † ð ØØØØôò òòð@(˜4ô (ð0 ñó ór   rŒ   c                   óB   • \ rS rSrS rS rS rS rSS jrS r	S r
S	rg
)ÚContentHandlersi  c                 ó    • 0 U l         / U l        g r$   )Ú
registeredÚinitializedr%   s    r   r'   ÚContentHandlers.__init__  s   € ØˆŒØˆÕr   c                 ó$   • U R                  U5      $ r$   )Úis_registered)r&   Úitems     r   Ú__contains__ÚContentHandlers.__contains__  s   € Ø×!Ñ! $Ó'Ð'r   c                 ó$   • U R                  U5      $ r$   )Ú_get_handler)r&   Úkeys     r   Ú__getitem__ÚContentHandlers.__getitem__  s   € Ø× Ñ  Ó%Ð%r   c                 ó   • XR                   ;   $ r$   ©rÄ   ©r&   Úcontent_types     r   rÈ   ÚContentHandlers.is_registered  s   € ØŸ™Ñ.Ð.r   c                 ó^  • [        5       nUR                  5        HF  nU(       a  UR                  U5        M  U R                  U5      (       a  M5  UR                  U5        MH     U H  nXR                  U'   M     U(       a*  XR
                  ;  a  U R
                  R                  U5        U$ r$   )ÚsetÚ
list_typesÚaddrÈ   rÄ   rÅ   rœ   )r&   ÚmodrÅ   Ú	overwriteÚtypesÚts         r   ÚregisterÚContentHandlers.register  sƒ   € Ü“ˆØ—‘Ö!ˆAÞØ—	‘	˜!–à×)Ñ)¨!×,Ó,Ø—I‘I˜a–Lñ "ó ˆAØ!$�O‰O˜AÓñ æ˜3×&6Ñ&6Ó6Ø×Ñ×#Ñ# CÔ(Øˆr   c                 ó    • U R                   U   $ r$   rÒ   rÓ   s     r   rÍ   ÚContentHandlers._get_handler(  s   € Ø�‰˜|Ñ,Ð,r   c                 óH   • [        U R                  R                  5       5      $ r$   )ÚlistrÄ   Úitemsr%   s    r   rä   ÚContentHandlers.items+  s   € Ü�D—O‘O×)Ñ)Ó+Ó,Ð,r   )rÅ   rÄ   N)FT)r   r   r   r   r'   rÊ   rÏ   rÈ   rÞ   rÍ   rä   r   r   r   r   rÂ   rÂ     s%   † òò(ò&ò/ôò-õ-r   rÂ   c                   ó€   • \ rS rSrSrSS\4S jjrS\SS4S jrSS	 jr	SS
 jr
SS jrSS jrSS\4S jjrSS jrSrg)ÚPathsi/  é   NÚ	path_cfgsc           
      óÔ  • Xl         UR                  SS5      U l        UR                  SS5      U l        UR                  S[        R
                  5      U l        [        R                  R                  U R                  S5      U l
        [        R                  R                  U R                  S5      U l        [        R                  R                  U R                  S5      U l        UR                  S	S
5      n[        R                  R                  US5      U l        0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S _S!S"_S#S$_S%S&_S'S(_S)S*S+S,S-S.S/S0S1.EU l        X l        g )2NÚ	cloud_dirz/var/lib/cloudÚdocs_dirz/usr/share/doc/cloud-init/Úrun_dirÚinstancezboot-finishedÚseedÚtemplates_dirz/etc/cloud/templates/z%s.tmplÚ	boothooksr©   zcloud-config.txtÚdataÚhandlersÚinstance_dataúinstance-data.jsonÚinstance_data_sensitiveúinstance-data-sensitive.jsonÚcombined_cloud_configúcombined-cloud-config.jsonÚnetwork_configznetwork-config.jsonÚinstance_idz.instance-idÚmanual_clean_markerzmanual-cleanÚobj_pklzobj.pklÚscriptsr|   Úuserdatazuser-data.txt.iÚuserdata_rawzuser-data.txtÚ
vendordatazvendor-data.txt.iÚvendordata2zvendor-data2.txt.izvendor-data2.txtzvendor-data.txtzvendor2-cloud-config.txtzvendor-cloud-config.txtzscripts/vendorÚwarningsúhotplug.enabledú.skip-network)Úvendordata2_rawÚvendordata_rawrª   r«   Úvendor_scriptsr  r  r  )r¹   Úgetrë   rì   r	   ÚDEFAULT_RUN_DIRrí   re   rk   rq   Úinstance_linkÚboot_finishedÚseed_dirÚtemplate_tplÚlookupsr•   )r&   ré   ÚdsÚtemplate_dirs       r   r'   ÚPaths.__init__2  sÎ  € ØŒ	à'Ÿm™m¨KÐ9IÓJˆŒØ&Ÿ]™]ØÐ4ó
ˆŒð &ŸM™M¨)´X×5MÑ5MÓNˆŒÜ"$§'¡'§,¡,¨t¯~©~¸zÓ"JˆÔÜ"$§'¡'§,¡,Ø×Ñ ó#
ˆÔô  ŸW™WŸ\™\¨$¯.©.¸&ÓAˆŒà%ŸM™MØÐ4ó
ˆô "$§¡§¡¨l¸IÓ!FˆÔð
Ø˜ð
àÐ.ð
ð �Fð
ð ˜
ð	
ð Ð1ð
ð &Ð'Eð
ð $Ð%Að
ð Ð3ð
ð ˜>ð
ð " >ð
ð  �yð!
ð" �yð#
ð$ �5ð%
ð& Ð)ð'
ð( ˜Oð)
ð* Ð-ð+
ð, Ð/ð-
ð.  2Ø/Ø$>Ø#<Ø.Ø"Ø0Ø,ò=
ˆŒðB �r   Úci_pkl_versionrµ   c                 óz  • [        U S5      (       d-  [        U R                  U R                  S9R                  U l        SU R
                  ;  a  SU R
                  S'   SU R
                  ;  a  SU R
                  S'   SU R
                  ;  a  SU R
                  S'   S	U R
                  ;  a  S	U R
                  S	'   g
g
)z(Perform deserialization fixes for Paths.rí   )ré   r  rô   rõ   rö   r÷   rø   rù   r  N)Úhasattrrç   r¹   r•   rí   r  )r&   r  s     r   Ú	_unpickleÚPaths._unpickleg  s®   € ä�t˜Y×'Ñ'ô !ØŸ)™)¨¯©ñç‰gð ŒLð  $§,¡,Ó.Ø,@ˆD�L‰L˜Ñ)Ø$¨D¯L©LÓ8à.ð �L‰LÐ2Ñ3ð #¨$¯,©,Ó6à,ð �L‰LÐ0Ñ1ð  D§L¡LÓ0Ø.?ˆD�L‰LÐ*Ò+ð 1r   c                 ó:   • U R                  U R                  U5      $ r$   )r[   r  ©r&   rK   s     r   r¬   ÚPaths.get_ipath_cur€  s   € Ø�~‰~˜d×0Ñ0°$Ó7Ð7r   c                 ó:   • U R                  U R                  U5      $ r$   )r[   rë   r  s     r   r~   ÚPaths.get_cpath…  s   € Ø�~‰~˜dŸn™n¨dÓ3Ð3r   c                 ó�  • U R                   (       d  g U R                   R                  5       nUc  g [        U5      R                  [        R
                  S5      n[        R                  R                  U R                  SU5      nU R                  R                  U5      nU(       a  [        R                  R                  XE5      nU$ )NrI   Ú	instances)r•   Úget_instance_idÚstrrJ   re   Úseprk   rq   rë   r  r	  )r&   rK   ÚiidÚpath_safe_iidÚipathÚadd_ons         r   Ú
_get_ipathÚPaths._get_ipathŠ  sˆ   € Ø��ØØ�o‰o×-Ñ-Ó/ˆØ‰;ØÜ˜C›×(Ñ(¬¯©°Ó5ˆÜ—‘—‘˜TŸ^™^¨[¸-ÓHˆØ—‘×!Ñ! $Ó'ˆÞÜ—G‘G—L‘L Ó/ˆEØˆr   c                 ób   • U R                  U5      nU(       d  [        R                  S5        g U$ )Nz?No per instance data available, is there an datasource/iid set?)r&  r`   Úwarning)r&   rK   r$  s      r   r}   ÚPaths.get_ipathš  s.   € Ø—‘ Ó%ˆÞÜ�K‰Kð2ôð àˆLr   Úbasec                 ód   • Uc  U$ [         R                  R                  XR                  U   5      $ r$   )re   rk   rq   r  )r&   r+  rK   s      r   r[   ÚPaths._get_path¥  s(   € Ø‰<ØˆKÜ�w‰w�|‰|˜D§,¡,¨tÑ"4Ó5Ð5r   c                 ó:   • U R                  U R                  U5      $ r$   )r[   rí   r  s     r   Úget_runpathÚPaths.get_runpathª  s   € Ø�~‰~˜dŸl™l¨DÓ1Ð1r   )
r  r¹   rë   r•   rì   r  r  rí   r  r  r$   )r   r   r   r   Ú_ci_pkl_versionr„   r'   Úintr  r¬   r~   r&  r}   r   r[   r/  r   r   r   r   rç   rç   /  sO   † Ø€Oñ3 $õ 3ðj@¨ð @°ô @ô28ô
4ô
ô 	ñ6˜cõ 6÷
2r   rç   c                   óV   • \ rS rSrSrSrSrSrS rSS jr	S r
S	 rS
 rS rSS jrSrg)ÚDefaultingConfigParseri¸  r   g        FNc                 óˆ   • U R                   n [        R                  " XU5      nU$ ! [         a     U$ [         a     U$ f = fr$   )ÚDEF_BASEr   r	  r   r   ©r&   ÚsectionÚoptionÚvalues       r   r	  ÚDefaultingConfigParser.get¾  sV   € Ø—‘ˆð	Ü#×'Ò'¨°vÓ>ˆEð
 ˆøô	 ó 	Øð ˆô ó 	ØØˆð	ús   Ž' §
A´	AÁ Ac                 ó¨   • U R                  U5      (       d%  UR                  5       S:w  a  U R                  U5        [        R                  " XX#5        g )NÚdefault)Úhas_sectionÚlowerÚadd_sectionr   r×   r7  s       r   r×   ÚDefaultingConfigParser.setÈ  s>   € Ø×Ñ ×(Ñ(¨W¯]©]«_À	Ó-IØ×Ñ˜WÔ%Ü×Ò˜D¨6Õ9r   c                 ó`   • U R                  X5      (       a  [        R                  " XU5        g g r$   )Ú
has_optionr   Úremove_option©r&   r8  r9  s      r   rD  Ú$DefaultingConfigParser.remove_optionÍ  s&   € Ø�?‰?˜7×+Ñ+Ü×)Ò)¨$¸Õ@ð ,r   c                 ót   • U R                  X5      (       d  U R                  $ [        R                  " XU5      $ r$   )rC  ÚDEF_BOOLEANr   Ú
getbooleanrE  s      r   rI  Ú!DefaultingConfigParser.getbooleanÑ  s0   € Ø�‰˜w×/Ñ/Ø×#Ñ#Ð#Ü×)Ò)¨$¸Ó@Ð@r   c                 ót   • U R                  X5      (       d  U R                  $ [        R                  " XU5      $ r$   )rC  Ú	DEF_FLOATr   ÚgetfloatrE  s      r   rM  ÚDefaultingConfigParser.getfloatÖ  s.   € Ø�‰˜w×/Ñ/Ø—>‘>Ð!Ü×'Ò'¨°vÓ>Ð>r   c                 ót   • U R                  X5      (       d  U R                  $ [        R                  " XU5      $ r$   )rC  ÚDEF_INTr   ÚgetintrE  s      r   rQ  ÚDefaultingConfigParser.getintÛ  s.   € Ø�‰˜w×/Ñ/Ø—<‘<ÐÜ×%Ò% d°VÓ<Ð<r   c                 ó´   • Sn[        5       nU R                  U5        UR                  5         UR                  5       nU(       a  SR	                  XS/5      nU$ )NÚ rd   )r   ÚwriteÚflushÚgetvaluerq   )r&   Úheaderrh   Úoutputstreams       r   Ú	stringifyÚ DefaultingConfigParser.stringifyà  sO   € ØˆÜ“zˆØ�
‰
�<Ô Ø×ÑÔØ×(Ñ(Ó*ˆÞØ—y‘y &°BÐ!7Ó8ˆHØˆr   r   r$   )r   r   r   r   rP  rL  rH  r6  r	  r×   rD  rI  rM  rQ  rZ  r   r   r   r   r4  r4  ¸  s;   † Ø€GØ€IØ€KØ€Hòô:ò
AòAò
?ò
=÷
r   r4  )$r8   Úloggingre   Úconfigparserr   r   r   Úior   r   Ú	cloudinitr   r	   r
   r   Úcloudinit.settingsr   r   r   r   Ú	getLoggerr   r`   rV   r   r   r!   r;   rL   rN   rt   rŒ   rÂ   ÚCloudInitPickleMixinrç   r4  r   r   r   Ú<module>rc     sº   ðó Û Û 	ß GÑ GÝ Ý ç =Ó =ß OÓ Oà×Ò˜Ó!€ô	�)ô 	÷	ñ 	÷ñ ÷Kñ Kò"÷7Bñ 7B÷t*'ñ *'÷Zgñ g÷T -ñ  -ôF|2ˆK×,Ñ,ô |2ôR0˜_õ 0r   