/opt/dedrads/__pycache__
NameSizeModeActions
alp.cpython-313.pyc188170644editdlrm
check_prov.cpython-313.pyc63940644editdlrm
clean_exim.cpython-313.pyc89020644editdlrm
cmspass.cpython-313.pyc63780644editdlrm
cms_check.cpython-313.pyc140790644editdlrm
cms_counter.cpython-313.pyc329480644editdlrm
cpanel_postgres_manager.cpython-313.pyc407620644editdlrm
docroot.cpython-313.pyc54920644editdlrm
envinfo.cpython-313.pyc81840644editdlrm
exclude_rbl.cpython-313.pyc66820644editdlrm
first_setup.cpython-313.pyc204930644editdlrm
fixwpcron.cpython-313.pyc72230644editdlrm
innodb_converter.cpython-313.pyc143470644editdlrm
mail_sources.cpython-313.pyc99690644editdlrm
modsec_disable.cpython-313.pyc158380644editdlrm
mysql_selector.cpython-313.pyc867480644editdlrm
show-conns-adv.cpython-313.pyc684140644editdlrm
sparta.cpython-313.pyc4909030644editdlrm
vhost_data.cpython-313.pyc69830644editdlrm
Edit: /opt/dedrads/__pycache__/cpanel_postgres_manager.cpython-313.pyc (40762B)
}jLqSrSSKrSSKJr SSKrSSKrSSKrSSKrSSK r SSK r SSK r SSK r SSK Jr SSKJrJrJrJrJrJr \"S5r\S- r\R0rSr\"S 5r\"S 5r/S Qr/S Qr\"S 5rSr \RB"\"5r#"SS\$5r%S\RL4Sjr'SSSSS.S\\(S\)S\)S\)S\\\(\(4S\ RT4 Sjjr+SUSjr,S\(S\)4Sjr-S\)S\)4Sjr.S\)4S jr/S\\(4S!jr0S\\(4S"jr1S#\\2S\(4S$jr3SUS%jr4SSS&.S'\(S(\)S)\)S\)4S*jjr5S\\\2\(44S+jr6S,\(S\(4S-jr7S.\\\2\(4SS4S/jr8S\\24S0jr9S#\\2SS4S1jr:SUS2jr;S3\S\)SS4S4jrS\)SS4S8jr?\S\)S\S4S9j5r@S\)SS4S:jrAS\)S\\(4S;jrBS\)SS4S<jrCS=\\(S\)4S>jrDS?\(S\\(\\(44S@jrE\S\)S\S4SAj5rFS\)S)\)SS4SBjrGS\)S)\)SS4SCjrHS\)SS4SDjrIS#\\2S\)S)\)SS4SEjrJS\)SS4SFjrKSG\(S\)S\\4SHjrLS\)SS4SIjrMS\)SS4SJjrNSK\S\)SS4SLjrOSM\RLSG\(SS4SNjrPSM\RLSK\SS4SOjrQSM\RLS\\4SPjrRSM\RLS#\\2SS4SQjrSSM\RLS#\\2SS4SRjrTS\24SSjrU\"ST:Xa\ R"\U"55 gg)Va Install, reset, or logically upgrade PostgreSQL for cPanel on AlmaLinux 8/9. When a PostgreSQL version is passed, the script resets/enables that dnf module stream before running /scripts/installpostgres. When no version is passed, it prompts for one before continuing. N)contextmanager)Path)DictIteratorListOptionalSequenceTuplez/var/lib/pgsql/dataz pg_hba.conf postgresqlz/scripts/installpostgresz/root/postgresql-backups)runuserz-upostgresz--)r postgresql-serverpostgresql-libszpostgresql-private-libszpostgresql[0-9]*z/etc/yum.repos.d)pgdgzpostgresql.orgzyum.postgresql.orgzftp.postgresql.orgc\rSrSrSrg)Fatal0N)__name__ __module__ __qualname____firstlineno____static_attributes__r'/opt/dedrads/cpanel_postgres_manager.pyrr0srrreturnc[R"SS9nURSS[SS9 URSSS S 9 URS SS S 9 URS SSS 9 URS[ [ 5S[ 3S9 URSSSS 9 URSSSS 9 URSSSS 9 URSSSS 9 UR 5$)Nz;Install, reset, or logically upgrade PostgreSQL for cPanel.) descriptionversion?znPostgreSQL module stream to enable before install. Omit to display available streams and choose interactively.)nargstypehelpz --upgrade store_truezLBackup the current cluster, reinstall/init the target version, then restore.)actionr#z--allow-logical-downgradezAllow --upgrade to attempt a pg_dumpall restore into an older major version. This is best-effort and may fail if the dump uses newer PostgreSQL features.z --reset-datazDDestroy /var/lib/pgsql/data contents and initialize a fresh cluster.z --backup-dirz+Directory for pg_dumpall backups. Default: )defaultr#z --skip-backupz=Allow destructive reset without creating a pg_dumpall backup.--yesz[Answer yes to required prompts. Destructive prompts still require --i-understand-data-loss.z--i-understand-data-lossz9Required with --yes for destructive data directory reset.z --dry-runz"Log commands without running them.)argparseArgumentParser add_argumentintstr BACKUP_DIR parse_args)parsers rr.r.4sF  $ $QF   :   [  # #   S  J::, G   L   j  " H   1    rFT)dry_runcheckcaptureenvcommandr0r1r2r3c DSRSU55n[RSU5 U(a[R"USSS5$[R "[ U5USU(a[ROSU(a[RUS9$SUS9$)N c38# UHn[U5v M g7fNr,).0parts r run..xs7wtTwz+ %srT)r1textstdoutstderrr3)joinLOGGERinfo subprocessCompletedProcessrunlistPIPE)r4r0r1r2r3 printables rrHrHps7w77I KK "**7Ar2>> >> W  ")zt")z    04   rcL[R"5S:wa [S5eg)NrzRun this script as root.)osgeteuidrrrr require_rootrOs! zz|q.//rnamec2[R"U5SL$r8)shutilwhichrPs rcommand_existsrUs << T ))rcTU(ag[SSS[/SS9nURS:H$)NF systemctlz is-activez--quiet)r1r)rHPOSTGRES_SERVICE returncode)r0results rservice_is_activer[s0 +{I7GHPU VF    !!rc0[S- R5$)N PG_VERSION)DATA_DIRexistsrrrexisting_data_dir_has_clusterr`s | # + + --rc:[S- nUR5(aUR5R5$[ S5(aO[ SS/SSS9n[ R"SUR=(d S5nU(aURS 5$g) Nr]r --versionFTr1r2(\d+)(?:\.\d+)?r?) r^r_ read_textstriprUrHresearchrAgroup) pg_versionrZmatchs rexisting_cluster_versionrmsL(J##%++--j!!j+.eTJ ,fmm.ArB ;;q> ! rc[S5(dg[SS/SSS9n[R"SUR=(d S5nU(aUR S5$g) Nr rbFTrcrdr?re)rUrHrhrirArj)rZrls r!installed_postgres_server_versionrosQ * % % *k*% FF II(&--*=2 >E {{1~ rrc~[5nUc [S5eUb!U[U5:wa[SUSUS35eU$)Nz=postgres executable was not found after package installation.z'Installed PostgreSQL server is version , but target module stream is z. Refusing to initialize, start, restore, or run cPanel setup against the data directory. Check the enabled DNF module stream and repository state.)rorr,)r installeds r'require_installed_server_matches_targetrss^13ISTTyCL85i[A "+ +  rc [5(dg[5n[5nUbUcgX:wa[SUSUS[S35eg)N.Existing PostgreSQL data directory is version z1, but the installed PostgreSQL server is version z(. Refusing to run cPanel setup or start zl with an incompatible cluster. Use --upgrade for a logical dump/restore or --reset-data for a fresh cluster.)r`rmrorrX)clusterrrs r)require_data_dir_matches_installed_serverrwsk ( * *&(G13IGOyyes)rDrEinputrglower)rzrxrysuffixanswers rpromptrsT Hg&%Z:F 7# $ * * , 2 2 4F ~ \ !!rc[/SQSSS9n/n[5nUR=(d SR5HnUR 5n[ U5S:d USS:waM-US R 5(dMG[US 5nXR;aM\URU5 [ U5S:aUSRS 5(aUSOSnURXV45 M U$) N)dnfmodulerIr FTrcr?rr re[) rHsetrA splitlinessplitlenisdigitr+add startswithappend)rZversionsseenlinepartsrflagss ravailable_postgresql_versionsrs 8t TF&(H 5D$"002  u:>U1X5 Qx!! eAh- ?  JNuQx/B/B3/G/GaR()3 Orrc/nSU;aURS5 SU;aURS5 SU;aURS5 SU;aURS5 S RU5$) Neenableddr&irrxdisabled, )rrC)rlabelss rversion_flag_labelsrsb F e| i  e| i  e| k" e| j! 99V rrcU(d[RS5 g[RS5 UH5up[U5nU(aSUS3OSn[RSX5 M7 g)Nz6No PostgreSQL module streams were found in DNF output.z$Available PostgreSQL module streams:z ()r?z %s%s)rDrEr)rrrrrs r!log_available_postgresql_versionsrsW  LM KK67"$U+#)2fXQr Hg.#rc[5n[U5 [S5R5nU(dgUR 5(d[ SU35e[ U5nUVVs1sHup4UiM nnnU(a7X%;a2SRS[U555n[ SUSU35eU$s snnf)NzDPostgreSQL version to install [press Enter for repository default]: zInvalid PostgreSQL version: rc38# UHn[U5v M g7fr8r9r:available_versions rr<%prompt_for_version.."eSd>O3'8#9#9Sdr>PostgreSQL version ) is not in the available module streams: ) rrr~rgrrr+rCsorted)rrrr_ availableavailable_lists rprompt_for_versionrs,.H%h/ N eg   >>  26(;<<&kG?GHx';'8"xIHW-"eSYZcSd"ee!'*S    NIs*B;cUcg[5nUVVs1sHup#UiM nnnU(a8X;a2SRS[U555n[SUSU35eggs snnf)Nrc38# UHn[U5v M g7fr8r9rs rr<,validate_selected_version.. rr>rr)rrCrr)rrrrrrs rvalidate_selected_versionrs},.H?GHx';'8"xIHW-"eSYZcSd"ee!'*S   .yIsA%cZ[R5(d[[S35eg)Nz/ was not found. This does not look like cPanel.)CPANEL_INSTALLPOSTGRESr_rrrrrequire_cpanelr's+ ! ( ( * *-..]^__ +rpathcbU(a[RSU5 gURSSSS9 g)N + mkdir -p %sTmodeparentsexist_ok)rDrEmkdir)rr0s rensure_backup_directoryr,s( OT*JJE4$J7r backup_dirc [X5 [RR5R S5nUSUS3- n[ S5(d [ S5e[U5(d[SS[/US9 [RS U5 [U5 U(dURS 5O[[RS 5n[RS 5 U(d [ R"/["QSPS S US S9 SSS5 SSS5 U$!,(df  N=f!,(df  U$=f)N %Y%m%d-%H%M%Szpostgresql-all-z.sql pg_dumpallz:+:\:! M + M L + * s$3D2=D!D2! D/ +D22 Ec([SS[/USS9 g)NrWstopFr0r1rHrXrs rstop_postgresqlrLsf./Nrc([SS[/USS9 g)NrWreloadFrrrs rreload_postgresqlrPsh 017%Prc## SnU(a_[RS[UR55 [ U5 Sv [RS[5 [ U5 g[R 5(dSv g[R 5nURU5(aSv g[RX-5 [ U5 Sv [RU5 [ U5 g![RS[5 [ U5 f=f![RU5 [ U5 f=f7f)Nzlocal all postgres peer z+ temporarily prepend to %s: %sz+ restore original %s) rDrEPG_HBArgrr_rfr write_text)r0ruleoriginals rrrTs &D 5vtzz|L'" '  KK/ 8 g & ==?? !H4    do&g# (#'"' KK/ 8 g &" (#'"s6>EDBED*!E'D''E*"E  EcU(aU[RS5 [RS5 [RS5 [RS5 g[/SQSSS9nURS :XaNURR 5R 5S n[RS U5 [/S Q5 [/S QSSS9nUR=(d S R 5HFn[R"SU5(dM![RSU5 [SSSU/5 MH g)Nz+ rpm -q libpq5z-+ rpm -e --nodeps libpq5 # only if installedz+ rpm -qa 'postgresql*-libs'zC+ rpm -e --nodeps postgresqlNN-libs # only for PGDG versioned libs)rpmz-qlibpq5FTrcrz4Removing installed %s; it obsoletes AlmaLinux libpq.)r-e--nodepsr)r-qazpostgresql*-libsr?z^postgresql\d+-libs-z>Removing installed %s; it is from an external PostgreSQL repo.rrr) rDrErHrYrArgrrhrl)r0rrpackageversioned_libss r"remove_external_postgres_librariesrss %& CD 23 YZ+5$GIq ""((*557: JGT /0;5RVWN"))/R;;= 88+W 5 5 KKP  j'2 3 >rcLU(a[RS5 /SQ$/n[5n[Hmn[ SSU/SSS9nUR =(d SR 5H5nU(dM XR;dMURU5 URU5 M7 Mo U$) Nza+ rpm -qa postgresql postgresql-server postgresql-libs postgresql-private-libs 'postgresql[0-9]*')r rrrrFTrcr?) rDrEr!POSTGRESQL_PACKAGE_QUERY_PATTERNSrHrArrr)r0packagesrpatternrZrs rinstalled_postgresql_packagesrs  9 FEH 5D4eUG,E4H +779Gw7.!(:5 Orc[U5nU(d[RS5 g[RS5 [U5 [ SSS/UQUS9 g)Nz5No installed PostgreSQL RPM packages found to remove.zXRemoving installed PostgreSQL RPM packages before installing the selected module stream.rrrr)rrDrErrH)r0rs r$remove_installed_postgresql_packagesrsP,W5H  KL KK Gj,8,g>rlinesct^SRU5R5m[U4Sj[55$)N c3,># UH oT;v M g7fr8r)r:rr@s rr<'repo_section_matches..sN.M7$.Ms)rCranyEXTERNAL_POSTGRES_REPO_PATTERNS)rr@s @rrepo_section_matchesrs, 99U  ! ! #D N.MN NNrr@c,^^^^URSS9n/m/m/mSmSUUUU4SjjnUHOn[R"SU5nU(aU"5 U/mURS5mM>TR U5 MQ U"5 SR T5T4$)NT)keependsc^>T(dgT b[T5(dTRT5 /mSm gSnSn[T5Heup#[R"SU5(dM#Sn[R"SU5(d$UR S5(aSOSnSU-TU'Sn O U(dOT(a)TSR 5RS 5(aS O [T5nTRUS 5 SnU(aTRT 5 TRT5 /mSm g) NFz^\s*enabled\s*=Tz"^\s*enabled\s*=\s*0\s*(?:[#;].*)?$rr?z enabled=0rrrez enabled=0 ) rextend enumeraterhrlendswithlstriprrinsertr) saw_enabledchangedindexrnewline insert_atchanged_sectionsrsection section_names rflush-disable_matching_repo_sections..flushs   ';G'D'D MM' "GL  $W-KExx*D11" xx EtLL&*mmD&9&9drG%07%:GEN"G.$):):)<)G)G)L)LRUV]R^I NN9m 4G   # #L 1 g rz^\s*\[([^\]]+)\]\s*$rer?rN)rrhrlrjrrC) r@rr rrlrrr r s @@@@rdisable_matching_repo_sectionsrs OOTO *EF"$G"&L@0$7  GfG ;;q>L NN4  G 776?, ,,rc#^# U(a[RS5 Sv g0n/n[[R S55HYmTR 5n[ U5upEU(dM)X1T'TRU5 URU4SjU55 M[ U(a%[RSSRU55 Sv UR5HumnTRU5 M U(a[RS5 gg!UR5HumnTRU5 M U(a[RS5 ff=f7f)NzE+ temporarily disable external PostgreSQL repos during cPanel installz*.repoc3F># UHnTRSU3v M g7f):NrT)r:r  repo_files rr<3external_postgres_repos_disabled..s!QWinn-Qwi8s!z2Temporarily disabled external PostgreSQL repos: %srz0Restored external PostgreSQL repo configuration.) rDrEr YUM_REPO_DIRglobrfrrrrCitems)r0 originalsrrupdatedsectionsrs @r external_postgres_repos_disabledrs% [\ !#IGL--h78 &&(:8D 8#+i   ) NNQQ Q 9 @$))GBT L #,??#4 Ix   *$5  KKJ K $-??#4 Ix   *$5  KKJ K s'A)E+0A E+DA E+A E((E+cPU(d [5 [[5/nU(aURS5 [ X SS9nUR S:XaU(d [5 g[ 5(a<U(d [5 [R"UR UR5e[S5(d+[R"UR UR5e[RS5 [U5 [ X S9 U(d [5 gg)Nr'Frrpostgresql-setupzcPanel installpostgres failed before a PostgreSQL cluster existed; initializing the cluster and rerunning cPanel configuration.r)rwr,rrrHrYr`rFCalledProcessErrorargsrUrDrEinitdb_and_start)r0ryr4rZs rinstallpostgres_with_recoveryr s 13)*+Gw  7F A 5 7$&& 5 7++F,=,=v{{KK , - -++F,=,=v{{KK KK GW! 13 rc[RS5 [U5 [X5 SSS5 g!,(df  g=f)Nz.Finalizing PostgreSQL configuration for cPanel)rDrErr )r0rys rfinalize_cpanel_postgresqlr"s+ KK@A )' 2%g: 3 2 2s 6 Ac[5(d [U5 gU(d [5 [SSS[/US9 [SSS[/USS9 g) NrWenable--nowrstatus --no-pagerFr)r`rrwrHrXrs rensure_cluster_runningr(%sJ ( * *! 13h)9:GLh .>?X]^rcVUb [U5 [/SQUS9 Ub[SSSSSU3/US9 O[RS5 [ U5 [ U5 [ X5 SSS5 U(d"[U5n[RS U5 gg!,(df  N8=f) N)r-yrresetr rrr*rr$z postgresql:zCNo PostgreSQL module stream selected; using the repository default.z'Installed PostgreSQL server version: %s)rrHrDrErrr rs)rr0ryrrs rreset_module_and_installr,/s,W56H UD(H G9.E FPWX YZ&w/ )' 2%g: 3 ;GD  =yI  3 2s  B B(c[R5(dg[RS[5 U(a[RS[5 g[R 5HUnUR 5(a-UR 5(d[R"U5 MEUR5 MW g)NzClearing %s contentsz+ remove all entries under %s) r^r_rDrEiterdiris_dir is_symlinkrRrmtreeunlink)r0childs rclear_data_dirr4Asw ??   KK&1 3X>!!# <<>>%"2"2"4"4 MM% LLN $rreasoncP[R5(dg[RR 5R S5n[ SUSU3- n[RSU5 U(a[RS[U5 U$[RU5 U$)Nrzdata..z/Moving existing PostgreSQL data directory to %sz + mv %s %s) r^r_rrrrPGSQL_BASE_DIRrDrErename)r5r0r destinations rmove_data_dir_asider;Os ??   LL    ' ' 8E U6(!E7#;;K KKA;O L(K8 OOK rc[U5 [SS/US9 U(d [5 [SSS[/US9 [SSS[/US S 9 g) Nrz--initdbrrWr$r%r&r'Fr)ensure_pgsql_base_dirrHrwrXrs rrr\sN'" Z(': 13h)9:GLh .>?X]^rc8U(aO[RS[5 [RS[5 [RS[5 g[RSSSS9 [R "[SSS9 [R S5 g) Nrz+ chown postgres:postgres %sz+ chmod 700 %srTrr )userrj)rDrEr8rrRchownchmodrs rr=r=esg O^4 2NC $n5eTDA LLj Crrc UR5(dU(d[SU35e[RSU5 [RSU5 [ U5 U(d8UR 5n[ R"/[QSPSSUS9 SSS5 SSS5 g!,(df  N=f!,(df  g=f)NzBackup file does not exist: z Restoring %sz"+ runuser -u postgres -- psql < %spsqlTr)r1rstdin) r_rrDrErrrFrHr)rr0 input_files rrestore_backuprFps     2;-@AA KK , KK4kB !' *!!#z4+4V4$ $ + *## + *s$"B<: B+B<+ B9 5B<< C rc\UR(aUR(ag[RS5 [RSU5 [RS[5 [ SSS9(d [ S5e[S5R5nUS :wa [ S 5eg) NzGWARNING: This operation destroys the current PostgreSQL data directory.z Reason: %szTarget directory: %sz'Have you created and verified a backup?Fryz-Cancelled. Create a backup before continuing.z*Type "DESTROY POSTGRES DATA" to continue: zDESTROY POSTGRES DATA Cancelled.) r}i_understand_data_lossrDwarningr^rrr~rg)rr5phrases rdestructive_confirmationrMs xxD// NN\] NN<( NN)84 ; NCDD ? @ F F HF ((L!!)rcUR(a[RSU5 g[RS5 [RSU5 [RS[5 [ S5(d [ S5eg)NzProceeding with logical upgrade using backup %s. The existing data directory will be moved aside before the target cluster is initialized.z@WARNING: Logical upgrade requires a clean target data directory.z Backup that will be restored: %szJThe current PostgreSQL data directory will be moved aside, not deleted: %sz!Proceed with the logical upgrade?rI)r}rDrErKr^rr)rrs rlogical_upgrade_confirmationrOso xx  V   NNUV NN5{C NNT 5 6 6L!! 7rct[UR5n[5nU(dgUR(a8[ SUR =(a UR S9(d [S5eg[ SUR S9(a[XR5$[ SSS9(d [S5eg)Nz=You used --skip-backup. Continue without a pg_dumpall backup?rHrIz6Create a pg_dumpall backup before changing PostgreSQL?z'Continue without creating a new backup?F) rrr` skip_backuprr}rJrrr0)rr has_clusters rmaybe_backup_before_destructiverSsdoo&J/1K   Kxx?D$?$?  % % FSWS[S[\j,,77 ; NL!! rc[5nU(a [5OSnU(a[RSU5 U(a8Ub5Ub2U[ U5:wa#UR (d[ SUSUS35eUR (aHU(aA[U5 [US5 [UR5 [UR5 [XRUR5 UR (aWUR(d[5(d6[UR5 [URUR5 gg[5(d6[UR5 [URUR5 gUR(d [!5 [#SSS[$/URS 9 [#SS S [$/URS S 9 g)N0Detected existing PostgreSQL cluster version: %srurqzm. Use --upgrade for a logical dump/restore or --reset-data if you intend to destroy and recreate the cluster.z1Fresh initialization requested with --reset-data.rWr$r%rr&r'Fr)r`rmrDrEr, reset_datarrSrMrr0r4r,r}rr"rwrHrX)rrrRcurrents rinstall_or_resetrXsa/1K,7&(TG FP     s7| #> T\\ * &t||TXX > ?+ , ,&"4<<:|| 5 7 [(G-= > U [(L2B CT\\afgrc[5(d![RS5 [X5 g[ 5n[RSU=(d S5 Ub [ U5OSn[RSU5 Ub5Ub2[ U5U:a#UR(d[SUSUS35eUb.Ub+[ U5U:a[RS USUS 35 [U5nUc [S 5e[X5 Sn[UR5 [S UR5n[XRUR 5 [#UR5 [RS 5 [%X@R5 ['SS[(/URS9 ['SSS[(/URSS9 [+URUR 5 g![,a` [R/S5 [R/SU5 Ub[R/SU5 [R/S[05 ef=f)NzFNo existing PostgreSQL data directory found; running a normal install.rUunknownzrepository defaultzTarget PostgreSQL version: %sz"Logical downgrade from PostgreSQL z to z is not supported. Use --allow-logical-downgrade to attempt a best-effort pg_dumpall restore, or --reset-data with a verified backup if you need to recreate the cluster.z6WARNING: Attempting logical downgrade from PostgreSQL zF. The restore can fail if the dump contains newer PostgreSQL features.zDUpgrade requires a pg_dumpall backup so the cluster can be restored.z pre-upgradez9Restoring logical backup into the new PostgreSQL cluster.rWrestartrr&r'FrzUpgrade did not complete.zLogical backup: %szPrevious data directory: %szCurrent data directory: %s)r`rDrErXrmr,r+allow_logical_downgraderrKrSrOrr0r;r,r}r(rFrHrXr" Exceptionerrorr^)rrrWtargetrmoved_data_dirs rlogical_upgraderas ( * * \]'&(G KKBGDXyY$0S\6JF KK/8   L7 ",,0 gYGZ Z  w2s7|g7MDWITRYQZ[S S 2$7KZ[[ 3%)N %,]DLLI ,,At||, OP{LL1 [)%5 6 M [(L2B CT\\afg"4<<:  01 );7  % LL6 G 18< sC"G33A*Ic[R"[RSS9 [5n[ 5 [ 5 UR b UR O [5n[U5 UR(a [X5 O [X5 [RS[R"55 g![ a- [RS5 [RS5 g["R$an[R'SUR(S R+UR,55 UR.(a.[R'S UR.R155 UR2(a.[R'S UR2R155 UR(=(d S sSnA$SnAf[4a n[R'S U5 SnAg SnAff=f) Nz %(message)s)levelformatz Done on %s.rr?rIz$Command failed with exit code %s: %sr6z%srez ERROR: %s)logging basicConfigINFOr.rOrrrrupgraderarXrDrEsocket gethostnameKeyboardInterruptrFrr^rYrCcmdrArstriprBr)rrexcs rmainrp sK gll=A r}s+%  BB % & M !89 , - ;%!&' #   8 $ L 9H&&9~$(  c]     $sCx. !   ,0 ***"t"".t. (3- 8C= Xc] s  "04"C"""RV"tE#s(O'<& s s /sCx0I/d/HSM*  x}    ` 8$88$8tdx~2OTOdOQtQQ#d#x~##<44404DI& ?$ ?4 ?O O$O 0-0-sDI~1F0-fLdLx~LL:444T4d4:;;$;4; _D_T_J c]J%)J7;J J$ D T   d x~ _d_t_ 4 D   t   "8#5#5 "s "t ""x'9'9""QU"$(*<*<$&%h8--%h %h$%hP0(,,0x}00f!c!H zHHTVr