dp3/dp3.sh

863 lines
70 KiB
Bash
Executable File

#!/usr/bin/env bash
################################################################################################# VERSION 1.8 ### SOF
echo -e '\033[0;31m'" .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::. "
echo -e '\033[0;31m'" /mMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNd- "
echo -e '\033[0;31m'"-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMN."
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmNMMMMMMMMMMMmMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh:NMMMMMMMMMMoyMMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMm -NMMMMMMMMMs.NMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMy -hmmmmmNNm- sMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmdyo+:. ......... .NMMMymMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMmy+-.. -hNm-+MMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMms:. ... /MMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMh/. /MMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMmMMMMMMMMMMMmhN:. /MMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMM+sNMMMMMMMMMN-h: .-+syyys/- -NMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMs +NMMMMMMMhm--d. :. -sdNMMMMMNNmy. :ydMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMM+ :yhyyyhhso. os yhshNMMMMMMMh+:-:. :s- .NMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMmho. . .yo.h:sMMMMMMMMMMNd+. -NNs- yMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMNh/. :++.-MMMMMMMMMMMMMm+. :ymds. -NMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMmo- .MMMMMMMMMMMMMMMdo. ..-. yMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMmo. .NMMMMMMMMMMMMMMMMNy/.. .mMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMNs. hMMMMMMMMMMMMMMMMMMMNho-. :NMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMm: ./syyyo- -hmNMMMMMMMMMMMMMMMMMMMMmho:.. /NMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMd. .smMMMNNNms. . .+MMMMMMMMMMMMMMMMMMMMMMMMNdy/ ..yMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMd. /mMMMMMy/:--. so. .mMMMMMMMMMMMMMMMMMMMMMMMNdo--:+sdNMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMN- /NMMMMMMMMdo. oMm+. /MMMMMMMMMMMMMMMMdNMMMMMMNNNMMmMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMo -NMMMMMMMMMMdso-. /hmm+ sMMMMMMMMMMMMMMMs-mMMMMMMMMMM:dMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMN. sMMMMMMMMMMMo .os/..... .dMMMMMMMMMMMMMMs -NMMMMMMMMM-:MMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMd mMMMMMMMMMMM/ .:os+-. .dMMMMMMMMMMMNm. -soosyhdms .mMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMs mMMMMMMMMMMM: .hNhs/.. .dMMMMNmhs+:-. +MMMNoMMMMMMMMMM-"
echo -e '\033[0;31m'"/MMy hMMMMMMMMMMM: oMMMMMNdyo/. .mNh+-. +mNy.mMMMMMMMMM-"
echo -e '\033[0;31m'"/MMd +MMMMMMMMMMM/ :MMMMMMMMNs...:ohh/. . mMMMMMMMMM-"
echo -e '\033[0;31m'"/MMN. .mMMMMMMMMMMo .NMMMMMMNhhdNMMh: mMMMMMMMMM-"
echo -e '\033[0;31m'"/MMM+ /MMMMMMMMMMh yMMMMMMMMMMMN+ .NMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMm. +MMMMMMMMMN. .NMMMMMMMMMN- :sdmNNNdy+. dMMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMo +MMMMMMMMM+ +MMMMMMMMM/ -dMMMMMMNmmNN/ .sdMMMMMMM-"
echo -e '\033[0;31m'"/MMMMN: :mMMMMMMMm. oMMMMMMMh .mMMMMMMMms- .. /o. .mMMMMMM-"
echo -e '\033[0;31m'"/MMMMMm. .yMMMMMMMo oMMMMMM/ sMMMMMMMMMMMh: :NNo. sMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMm. -hMMMMMN: /NMMMM. dMMMMMMMMMMMMMh- :hmNy. .NMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMm- -yNMMMm. .yMMM. dMMMMMMMMMMMMMMNh:. .... yMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMN+ .+hNMd. :hM: dMMMMMMMMMMMMMMMMNmo- .NMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMh- ./ss. .:: sMMMMMMMMMMMMMMMMMMMNms/. /MMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMNo. . :MMMMMMMMMMMMMMMMMMMMMMMNdo:.. oMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMmo. .mMMMMMMMMMMMMMMMMMMMMMMMMMMNmh: .dMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMNy:. +MMMMMMMMMMMMMMMMMMMMMMMMMMNh+::/+sdNMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMNdo- .dMMMMMMMMMMMMMMMMMMMMMMMMMNNNNNMMMMMMMM-"
echo -e '\033[0;31m'"/MMMMMMMMMMMMMMMMMMMMNd+-. -NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-"
echo -e '\033[0;31m'"-NMMMMMMMMMMMMMMMMMMMMMMNdo:. /NMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd."
echo -e '\033[0;31m'" -ymNNNNNNNNNNNNNNNNNNNNNNNNdo-. +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNmy. "
echo -e '\033[0;31m'" ............................ .-................................ "
echo -e '\033[0;31m'" ...... ......... .............. .......... ...... "
#####################################################################################################################
PLAYLIST_URL=$3
PLAYLIST_NAME="$1"
PLAYLIST_GENRE="$2"
PLAYLIST_ARTWORK="_cover.png"
PLAYLIST_URLBATCH="_url_batch.log"
PLAYLIST_URLSTEXT="_playlist_urls.txt"
PREFIX="dr1p__"
THREADS=20
#####################################################################################################################
usage () {
echo -e "\n\t\033[0;31m INFO: \033[0;91m[\033[0m COMMAND LINE HELP \033[0;91m]\033[0m"
echo -e "\n\t\033[0;31m USAGE: \033[0;91m./$0 name_of_playlist genre_of_playlist url_of_playlist\033[0m"
echo -e "\t\033[0;31mEXAMPLE: \033[0;91m./$0 dr1pp1ng rap https://www.youtu.be/playlist?list=BLABLABLABLABLA\033[0m"
echo -e "\n\t\033[0;31m INFO: \033[0;91m[\033[0m MULTI-LINE HELP \033[0;91m]\033[0m"
echo -e "\n\033[0;31m USAGE_LINE_1:\033[0;91m first line: what to name this playlist, it's just a chosen name\033[0m"
echo -e "\033[0;31m USAGE_LINE_2: \033[0;91msecond line: genre of this playlist, can be anything you want \033[0m"
echo -e "\033[0;31m USAGE_LINE_3: \033[0;91mthird line and more: a url to a song, playlist, set or channel \033[0m\n"
echo -e "\t\033[0;31mEXAMPLE: \033[0;91m[\033[0m TRY THE SIX LINE BATCH BELOW IF YOU ARE UNSURE\033[0;91m ]\033[0m\n"
echo -e "\033[0;31m EXAMPLE_LINE_1: \033[0;91mdr1pp1ng_m1x3s\033[0m"
echo -e "\033[0;31m EXAMPLE_LINE_2: \033[0;91mindustrial\033[0m"
echo -e "\033[0;31m EXAMPLE_LINE_3: \033[0;91mwww.youtube.com/playlist?list=PLrdcKN79B4UG1xoQ8-L3eiaI1cYzFCiWD\033[0m"
echo -e "\033[0;31m EXAMPLE_LINE_4: \033[0;91mhttps://soundcloud.com/vanta_sec/sets/dr1pp1ng\033[0m"
echo -e "\033[0;31m EXAMPLE_LINE_5: \033[0;91mhttps://the--hacker.bandcamp.com/\033[0m"
echo -e "\033[0;31m EXAMPLE_LINE_6: \033[0;91mhttps://soundcloud.com/user-786674423\033[0m"
}
#####################################################################################################################
if [ $# -lt 3 ]; then
echo -e "\n\t\033[0;31m ERROR: \033[0;91m[\033[0m NOT ENOUGH PARAMETERS SUPPLIED \033[0;91m]"; usage
fi
#####################
if [ $# -lt 3 ]; then
echo -e "\n\033[0;91m[ \033[0;31mMULTI-LINE MODE, PRESS CTRL+D WHEN DONE OR CTRL+C TO ABORT\033[0;91m ]\033[0;91m\n";
DP3=$(cat);
fi
#####################################################################################################################
echo -e "\033[0;33m\n[ PREREQUISITES CHECK ]\033[0;91m\n"
#####################################################################################################################
[ -e _cover.png ] || wget https://dr1p.black/assets/dr1p.pentagram.png -O $PLAYLIST_ARTWORK
#####################################################################################################################
PREREQUISITES_PROGS=(tmux parallel jq elinks ffmpeg youtube-dl)
PREREQUISITES_PMODS=("pip eyed3")
FOUND_PROGS=()
#####################################################################################################################
for p in ${PREREQUISITES_PROGS[@]}; do
which $p >> /dev/null 2>&1
if [ $? -eq 0 ]; then
echo -e "\033[0;32mlocated $p\033[0m"
#[ "parallel" == $p ] && (echo -e "nosite\r\n"|parallel --citation)
else
FOUND_PROGS+=("$p")
[ "youtube-dl" == $p ] && PREREQUISITES_PMODS+=("youtube-dl")
fi
done
#####################################################################################################################
MISSING_PMODS=()
################
for p in ${PREREQUISITES_PMODS[@]}; do
sp=$p
[ "youtube-dl" == $sp ] && ( sp=youtube_dl )
python3 -c "import $sp" >> /dev/null 2>&1
[ $? -eq 0 ] || MISSING_PMODS+=("$p")
done
#####################################################################################################################
for ap in ${MISSING_PMODS[@]}; do
echo -e "\033[0;33m[ automating $ap ]\033[0;34m"
################################################
[ "pip" == $ap ] && ( wget https://bootstrap.pypa.io/get-pip.py; python3 get-pip.py )
[ "eyed3" == $ap ] && ( python3 -m pip install $ap )
[ "youtube-dl" == $ap ] && ( python3 -m pip install $ap )
done
#####################################################################################################################
for p in ${PREREQUISITES_PMODS[@]}; do
python3 -c "import $p" >> /dev/null 2>&1
########################################
[ $? -eq 0 ] && echo -e "\033[0;32mlocated $p\033[0m" || ( echo -e "\033[0;31mmissing $p python3 module\033[0m")
done
#####################################################################################################################
for p in ${FOUND_PROGS[@]}; do
MESSAGE="\033[0;91minstallation required\033[0;0m"
##################################################
[ "tmux" == $p ] && echo -e "\033[0;31mmissing $p -\033[0;34m $MESSAGE"
[ "parallel" == $p ] && echo -e "\033[0;31mmissing $p -\033[0;34m $MESSAGE"
[ "jq" == $p ] && echo -e "\033[0;31mmissing $p -\033[0;34m $MESSAGE"
[ "elinks" == $p ] && echo -e "\033[0;31mmissing $p -\033[0;34m $MESSAGE"
[ "ffmpeg" == $p ] && echo -e "\033[0;31mmissing $p -\033[0;34m $MESSAGE"
done
#####################################################################################################################
[ 0 -ne "${#FOUND_PROGS[@]}" ] && echo -e "\n\033[0;33m[ PREREQUISITES CHECK - \033[0;33mFAILED \033[0;33m]\033[0m\n"
######################################
[ 0 -ne "${#FOUND_PROGS[@]}" ] && exit
#####################################################################################################################
echo -e "\033[0;33m\n[ PREREQUISITES CHECK - \033[0;34mPASSED \033[0;33m]\033[0m"
#####################################################################################################################
if [ -z "$DP3" ]; then
###################################################################################################### COMMAND LINE
echo -e "\033[0;33m[ FETCHING CONTENT IDS FROM PLAYLISTS ]\033[0m"
##################################################################
youtube-dl -j --flat-playlist $PLAYLIST_URL | jq -r '.url' > $PLAYLIST_URLSTEXT
###################################################################################################################
echo -e "\033[0;33m[ REBUILDING URLS FOR DOWNLOAD BATCHLIST ]\033[0m"
#####################################################################
cat $PLAYLIST_URLSTEXT|grep -v "soundcloud\|bandcamp"|xargs -n 1|sed 's_^_https://youtu.be/_' > $PLAYLIST_URLBATCH
cat $PLAYLIST_URLSTEXT|grep "soundcloud\|bandcamp" >> $PLAYLIST_URLBATCH
####################################################################################
if [ $(cat $PLAYLIST_URLBATCH|grep youtu.be|wc -c) -eq 18 ]; then
cat $PLAYLIST_URLBATCH|grep -v youtu.be >> buffer && mv buffer $PLAYLIST_URLBATCH;
fi
####################################################################################
echo -e "\033[0;34m[ `cat $PLAYLIST_URLSTEXT|wc -l` OF `cat $PLAYLIST_URLBATCH|wc -l` URLS PARSED ]\033[0m"
rm $PLAYLIST_URLSTEXT
else
######################################################################################################## MULTILINE
PLAYLIST_NAME=$(echo $DP3|xargs -n1|sed -n 1p)
PLAYLIST_GENRE=$(echo $DP3|xargs -n1|sed -n 2p)
PLAYLIST_URL=$(echo $DP3|xargs -n1|sed -n '3,$p')
####################################################################################
echo -e "\033[0;33m[ FETCHING CONTENT IDS FROM PLAYLISTS ]\033[0m"
####################################################################################
echo $PLAYLIST_URL|xargs -n1|grep youtube|xargs -I{} youtube-dl -j --flat-playlist {}|jq -r '.url'|grep -v \
youtube|sed 's_^_https://youtu.be/_' > $PLAYLIST_URLBATCH
echo $PLAYLIST_URL|xargs -n1|grep youtube|xargs -I{} youtube-dl -j --flat-playlist {}| jq -r '.url'|grep \
youtube|xargs -I{} youtube-dl -j --flat-playlist {}|jq -r '.id'|sed 's_^_https://youtu.be/_' >> $PLAYLIST_URLBATCH & disown
YOUTUBE_PID=$!
####################################################################################
echo $PLAYLIST_URL|xargs -n1|grep soundcloud|xargs -I{} youtube-dl -j \
--flat-playlist {}|jq -r '.url' >> $PLAYLIST_URLBATCH & disown
SOUNDCLOUD_PID=$!
####################################################################################
echo $PLAYLIST_URL|xargs -n1|grep bandcamp| awk -F[/:] '{print $4}'|xargs -I{} elinks --dump --no-numbering \
{}|grep -e '.com/album' -e '.com/track'|sed 's/.*https/https/g'|uniq|xargs -I{} youtube-dl -j --flat-playlist \
{}|jq -r '.url' >> $PLAYLIST_URLBATCH & disown
BANDCAMP_PID=$!
####################################################################################
[ -e dp3_finished_yt ] && rm dp3_finished_yt; [ -e dp3_finished_sc ] && rm dp3_finished_sc; [ -e dp3_finished_bc ] && rm dp3_finished_bc
while [ -z $YOUTUBE_TRAP ]; do if [ $(ps -aux|grep $YOUTUBE_PID|grep -v "grep" > /dev/null 2>&1;echo $?) -eq 1 ]; then YOUTUBE_TRAP=1; touch dp3_finished_yt; echo -e "\n\033[0;31m[\033[0m YOUTUBE INDEX DONE \033[0;31m]\n"; fi; done & disown
while [ -z $SOUNDCLOUD_TRAP ]; do if [ $(ps -aux|grep $SOUNDCLOUD_PID|grep -v "grep" > /dev/null 2>&1;echo $?) -eq 1 ]; then SOUNDCLOUD_TRAP=1; touch dp3_finished_sc; echo -e "\n\033[0;31m[\033[0m SOUNDCLOUD INDEX DONE \033[0;31m]\n"; fi; done & disown
while [ -z $BANDCAMP_TRAP ]; do if [ $(ps -aux|grep $BANDCAMP_PID|grep -v "grep" > /dev/null 2>&1;echo $?) -eq 1 ]; then BANDCAMP_TRAP=1; touch dp3_finished_bc; echo -e "\n\033[0;31m[\033[0m BANDCAMP INDEX DONE \033[0;31m]\n"; fi; done & disown
####################################################################################
echo -e "\033[0;31m" && tail -f $PLAYLIST_URLBATCH & disown && TAIL_PID=$!
####################################################################################
FINITE_TRAP=0
while [ $FINITE_TRAP == 0 ]; do
if [ -e dp3_finished_yt ] && [ -e dp3_finished_sc ] && [ -e dp3_finished_bc ]; then
FINITE_TRAP=1;
sleep .1;
echo -e "\n\033[0;31m[\033[0m JOBS FINITE \033[0;31m]"
rm dp3_finished_* > /dev/null 2>&1;
kill -9 $TAIL_PID;
echo -e "\033[0;31m[\033[0m FINISHED INDEXING \033[0;31m-\033[0m `wc -l $PLAYLIST_URLBATCH` ITEMS SORTED \033[0;31m]\033[0m\n"
else
sleep 1; echo -n .
fi
done
####################################################################################
fi
#####################################################################################################################
[ -d "$PLAYLIST_NAME" ] || mkdir "$PLAYLIST_NAME"
##################################################
mv "$PLAYLIST_URLBATCH" "$PLAYLIST_NAME/url_batch.log"; cd "$PLAYLIST_NAME"
#####################################################################################################################
ENABLED_YOUTUBE=0; ENABLED_BANDCAMP=0; ENABLED_SOUNDCLOUD=0;
cat "url_batch.log"|grep "youtu.\|YOUTU.\|youtube.\|YOUTUBE." 2>&1>/dev/null
############################################################################
if [ $? -eq 0 ]; then
cat "url_batch.log"|grep "youtu.\|YOUTU.\|youtube.\|YOUTUBE." > "youtube_url_batch.log"
ENABLED_YOUTUBE=1
fi
#####################################################################################################################
cat "url_batch.log"|grep "soundcloud.\|SOUNDCLOUD." 2>&1>/dev/null
##################################################################
if [ $? -eq 0 ]; then
cat "url_batch.log"|grep "soundcloud.\|SOUNDCLOUD." > "soundcloud_url_batch.log"
ENABLED_SOUNDCLOUD=1
fi
#####################################################################################################################
cat "url_batch.log"|grep "bandcamp.\|BANDCAMP." 2>&1>/dev/null
##############################################################
if [ $? -eq 0 ]; then
cat "url_batch.log"|grep "bandcamp.\|BANDCAMP." > "bandcamp_url_batch.log"
ENABLED_BANDCAMP=1
fi
#####################################################################################################################
echo -e "\033[0;33m[ STARTING PARALLEL DOWNLOADS ]\033[0m\n"
#####################################################################################################################
echo $PWD
#####################################################################################################################
if [ -f "youtube_url_batch.log" ]; then
[ ! -d "rips_youtube" ] && mkdir "rips_youtube"
mv "youtube_url_batch.log" "rips_youtube/youtube_url_batch.log"
echo 'cd rips_youtube; touch youtube_downloaded.log; clear; echo -e "\033[0;3mprogress window - \
youtube - [ initializing ]"; while :; do clear; [ $(ps -aux|grep youtube_download.sh|grep -v \
"eval\|grep" > /dev/null 2>&1;echo $?) -eq 1 ] && exit; echo -e "\033[0;31mprogress window -\
youtube - \033[0;92m`cat youtube_downloaded.log|wc -l`\033[0;31m/\033[0;92m\
`cat youtube_url_batch.log|wc -l`\033[0;31m files downloaded - \033[0;92m`ls -al *|grep \
-v "log\|mp3"|wc -l`\033[0;31m files actively downloading\033[0;94m"; ls -al|grep webm; sleep 0.3; \
done' > youtube_progress.sh
fi
#####################################################################################################################
if [ -f "soundcloud_url_batch.log" ]; then
[ ! -d "rips_soundcloud" ] && mkdir "rips_soundcloud"
mv "soundcloud_url_batch.log" "rips_soundcloud/soundcloud_url_batch.log"
echo 'cd rips_soundcloud; touch soundcloud_downloaded.log; clear; echo -e "\033[0;3mprogress window - \
soundcloud - [ initializing ]"; while :; do clear; [ $(ps -aux|grep soundcloud_download.sh|grep -v \
"eval\|grep" > /dev/null 2>&1;echo $?) -eq 1 ] && exit;echo -e "\033[0;31mprogress window -\
soundcloud - \033[0;92m `cat soundcloud_downloaded.log|wc -l`\033[0;31m/\033[0;92m\
`cat soundcloud_url_batch.log|wc -l`\033[0;31m files downloaded - \033[0;92m`ls -al *|grep \
-v "log\|mp3"|wc -l`\033[0;31m files actively downloading\033[0;94m"; ls -al|grep wav; sleep 0.3; \
done' > soundcloud_progress.sh
fi
#####################################################################################################################
if [ -f "bandcamp_url_batch.log" ]; then
[ ! -d "rips_bandcamp" ] && mkdir "rips_bandcamp"
mv "bandcamp_url_batch.log" "rips_bandcamp/bandcamp_url_batch.log"
echo 'cd rips_bandcamp; touch bandcamp_downloaded.log; clear; echo -e "\033[0;3mprogress window - \
bandcamp - [ initializing ]"; while :; do clear; [ $(ps -aux|grep bandcamp_download.sh|grep -v \
"eval\|grep" > /dev/null 2>&1;echo $?) -eq 1 ] && exit;echo -e "\033[0;31mprogress window -\
bandcamp - \033[0;92m `cat bandcamp_downloaded.log|wc -l`\033[0;31m/\033[0;92m\
`cat bandcamp_url_batch.log|wc -l`\033[0;31m files downloaded - \033[0;92m`ls -al *|grep \
-v "log\|mp3"|wc -l`\033[0;31m files actively downloading\033[0;94m"; ls -al|grep aiff; sleep 0.3; \
done' > bandcamp_progress.sh
fi
#####################################################################################################################
echo "cd rips_youtube; clear; echo -e '\033[0;31mdownload window - youtube\033[0;94m'; parallel \
-j $THREADS youtube-dl -f bestaudio -i --download-archive youtube_downloaded.log \
--socket-timeout 180 --fragment-retries 10 --abort-on-unavailable-fragment --no-part --no-post-overwrites \
-ciw --extract-audio --audio-format mp3 --audio-quality 0 < youtube_url_batch.log" > youtube_download.sh
#####################################################################################################################
CMD_YT_D="bash youtube_download.sh"
#####################################################################################################################
echo "cd rips_soundcloud; clear; echo -e '\033[0;31mdownload window - soundcloud\033[0;94m'; \
parallel -j $THREADS youtube-dl -f bestaudio -i --download-archive soundcloud_downloaded.log \
--socket-timeout 180 --fragment-retries 10 --abort-on-unavailable-fragment --no-part --no-post-overwrites \
-ciw -o '%\(uploader\)s-%\(title\)s-%\(id\)s.%\(ext\)s' --extract-audio --audio-format mp3 --audio-quality \
0 < soundcloud_url_batch.log" > soundcloud_download.sh
#####################################################################################################################
CMD_SC_D="bash soundcloud_download.sh"
#####################################################################################################################
echo "cd rips_bandcamp; clear; echo -e '\033[0;31mdownload window - bandcamp\033[0;94m'; parallel \
-j $THREADS youtube-dl -f bestaudio -i --download-archive bandcamp_downloaded.log \
--socket-timeout 180 --fragment-retries 10 --abort-on-unavailable-fragment --no-part --no-post-overwrites \
-ciw --extract-audio --audio-format mp3 --audio-quality 0 < bandcamp_url_batch.log" > bandcamp_download.sh
#####################################################################################################################
CMD_BC_D="bash bandcamp_download.sh"
#####################################################################################################################
#####################################################################################################################
#####################################################################################################################
CMD_YT_P="bash youtube_progress.sh"
####################################
CMD_SC_P="bash soundcloud_progress.sh"
######################################
CMD_BC_P="bash bandcamp_progress.sh"
#####################################################################################################################
#####################################################################################################################
#####################################################################################################################
COUNT=0; TASKS=(); LENGTH=()
if [ $ENABLED_YOUTUBE -eq 1 ]; then
COUNT=$((COUNT+2))
LENGTH+=(${#TASKS[@]}); TASKS+=($CMD_YT_D); LENGTH+=(${#TASKS[@]}); TASKS+=($CMD_YT_P);
fi
###############################################################################################
if [ $ENABLED_SOUNDCLOUD -eq 1 ]; then
COUNT=$((COUNT+2))
LENGTH+=(${#TASKS[@]}); TASKS+=($CMD_SC_D); LENGTH+=(${#TASKS[@]}); TASKS+=($CMD_SC_P);
fi
###############################################################################################
if [ $ENABLED_BANDCAMP -eq 1 ]; then
COUNT=$((COUNT+2))
LENGTH+=(${#TASKS[@]}); TASKS+=($CMD_BC_D); LENGTH+=(${#TASKS[@]}); TASKS+=($CMD_BC_P);
fi
#####################################################################################################################
if [ $COUNT -eq 2 ]; then
DYNARGS_A=$(echo ${TASKS[@]}|cut -d ' ' -f 1-${LENGTH[1]})
DYNARGS_B=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[1]+1))-${LENGTH[2]})
tmux \
new-session "eval $DYNARGS_A; exit; read" \; \
split-window "eval $DYNARGS_B; exit; read" \; \
select-layout tiled
fi
################################################
if [ $COUNT -eq 4 ]; then
DYNARGS_A=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[0]+1))-${LENGTH[1]})
DYNARGS_B=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[1]+1))-${LENGTH[2]})
DYNARGS_C=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[2]+1))-${LENGTH[3]})
DYNARGS_D=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[3]+1))-${LENGTH[4]})
tmux \
new-session "eval $DYNARGS_A; exit; read" \; \
split-window "eval $DYNARGS_B; exit; read" \; \
split-window "eval $DYNARGS_C; exit; read" \; \
split-window "eval $DYNARGS_D; exit; read" \; \
select-layout tiled
fi
################################################
if [ $COUNT -eq 6 ]; then
DYNARGS_A=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[0]+1))-${LENGTH[1]})
DYNARGS_B=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[1]+1))-${LENGTH[2]})
DYNARGS_C=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[2]+1))-${LENGTH[3]})
DYNARGS_D=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[3]+1))-${LENGTH[4]})
DYNARGS_E=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[4]+1))-${LENGTH[5]})
DYNARGS_F=$(echo ${TASKS[@]}|cut -d ' ' -f $((LENGTH[5]+1))-${LENGTH[6]})
tmux \
new-session "eval $DYNARGS_B; exit; read" \; \
select-pane -t 0 \; \
split-window -h "eval $DYNARGS_A; exit; read" \; \
split-window -v -p 33 "eval $DYNARGS_C; exit; read" \; \
select-pane -t 0 \; \
split-window -v -p 33 "eval $DYNARGS_D; exit; read" \; \
select-pane -t 0 \; \
split-window -v -p 50 "eval $DYNARGS_F; exit; read" \; \
select-pane -t 3 \; \
split-window -v -p 50 "eval $DYNARGS_E; exit; read" \; \
select-layout default
fi
#####################################################################################################################
if [ $ENABLED_YOUTUBE -eq 1 ]; then
cd rips_youtube
ls *.mp3|xargs -I{} -d"\n" mv {} youtube_{}
mv *.{mp3,log} .. && cd ..
rm -Rf rips_youtube && rm -f youtube_progress.sh
fi
########################################################
if [ $ENABLED_SOUNDCLOUD -eq 1 ]; then
cd rips_soundcloud
ls *.mp3|xargs -I{} -d"\n" mv {} soundcloud_{}
mv *.{mp3,log} .. && cd ..
rm -Rf rips_soundcloud && rm -f soundcloud_progress.sh
fi
########################################################
if [ $ENABLED_BANDCAMP -eq 1 ]; then
cd rips_bandcamp
ls *.mp3|xargs -I{} -d"\n" mv {} bandcamp_{}
mv *.{mp3,log} .. && cd ..
rm -Rf rips_bandcamp && rm -f bandcamp_progress.sh
fi
#####################################################################################################################
cd .. ###################################################################################### DP3 TOOL ENCODED BELOW #
#####################################################################################################################
echo "IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0NCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" > dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMgU09GDQpfX2RvY19fID0gJycnOjo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6" >> dr1p
echo "Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Lg0KIC9tTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU5kLQ0KLU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTi4NCi9NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU0tDQovTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1tTk1NTU1NTU1NTU1N" >> dr1p
echo "bU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NLQ0KL01NTU1NTU1NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NaDpOTU1NTU1NTU1NTW95TU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTS0NCi9NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTW0gLU5NTU1NTU1NTU1zLk5NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU0tDQov" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU15ICAtaG1t" >> dr1p
echo "bW1tTk5tLSBzTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NLQ0KL01NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NbWR5bys6LiAgIC4uLi4uLi4uLiAgLk5NTU15bU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTS0NCi9NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NbXkrLS4uICAgICAgICAgICAgICAgICAgICAtaE5tLStNTU1NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU0tDQovTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTW1zOi4gICAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgIC4uLiAvTU1NTU1NTU1NTU1NTU1NTU1NTU1NLQ0KL01NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NaC8uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgL01NTU1NTU1NTU1NTU1NTU1NTU1NTS0NCi9NTU1NTU1NTU1NTU1NTU1NTU1NbU1NTU1NTU1N" >> dr1p
echo "TU1NbWhOOi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU0tDQovTU1NTU1NTU1NTU1NTU1NTU1NTStzTk1NTU1NTU1NTU4taDogICAgICAgICAu" >> dr1p
echo "LStzeXl5cy8tICAgICAgICAgICAgICAgICAtTk1NTU1NTU1NTU1NTU1NTU1NTU1NLQ0KL01NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1zICtOTU1NTU1NTWhtLS1kLiAgOi4gIC1zZE5NTU1NTU5ObXkuICAgICAg" >> dr1p
echo "ICAgICAgICAgIDp5ZE1NTU1NTU1NTU1NTU1NTU1NTS0NCi9NTU1NTU1NTU1NTU1NTU1NTU1NKyAg" >> dr1p
echo "OnloeXl5aGhzby4gb3MgIHloc2hOTU1NTU1NTWgrOi06LiAgOnMtICAgICAgICAgICAgIC5OTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU0tDQovTU1NTU1NTU1NTU1NTU1NTW1oby4gICAgICAgICAgLiAgIC55by5o" >> dr1p
echo "OnNNTU1NTU1NTU1NTmQrLiAgIC1OTnMtICAgICAgICAgICAgeU1NTU1NTU1NTU1NTU1NTU1NLQ0K" >> dr1p
echo "L01NTU1NTU1NTU1NTU1OaC8uICAgICAgICAgICAgICAgICAgIDorKy4tTU1NTU1NTU1NTU1NTW0r" >> dr1p
echo "LiAgOnltZHMuICAgICAgICAgIC1OTU1NTU1NTU1NTU1NTU1NTS0NCi9NTU1NTU1NTU1NTW1vLSAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICAgICAgICAgLk1NTU1NTU1NTU1NTU1NTWRvLiAgLi4tLiAgICAgICAg" >> dr1p
echo "ICAgeU1NTU1NTU1NTU1NTU1NTU0tDQovTU1NTU1NTU1NbW8uICAgICAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgIC5OTU1NTU1NTU1NTU1NTU1NTU55Ly4uICAgICAgICAgICAgIC5tTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NLQ0KL01NTU1NTU1Ocy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaE1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1OaG8tLiAgICAgICAgICAgOk5NTU1NTU1NTU1NTU1NTS0NCi9NTU1NTU1tOiAg" >> dr1p
echo "ICAgICAgLi9zeXl5by0gICAgICAgICAgICAgICAgIC1obU5NTU1NTU1NTU1NTU1NTU1NTU1NTW1o" >> dr1p
echo "bzouLiAgICAgICAvTk1NTU1NTU1NTU1NTU0tDQovTU1NTU1kLiAgICAgICAuc21NTU1OTk5tcy4g" >> dr1p
echo "IC4gICAgICAgICAgICAgIC4rTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTmR5LyAgICAuLnlNTU1N" >> dr1p
echo "TU1NTU1NTU1NLQ0KL01NTU1kLiAgICAgICAvbU1NTU1NeS86LS0uICBzby4gICAgICAgICAgICAg" >> dr1p
echo "Lm1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU5kby0tOitzZE5NTU1NTU1NTU1NTU1NTS0NCi9NTU1O" >> dr1p
echo "LSAgICAgICAvTk1NTU1NTU1NZG8uICAgb01tKy4gICAgICAgICAgICAvTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TWROTU1NTU1NTk5OTU1tTU1NTU1NTU1NTU1NTU1NTU0tDQovTU1NbyAgICAgICAtTk1NTU1NTU1N" >> dr1p
echo "TU1kc28tLiAvaG1tKyAgICAgICAgICAgIHNNTU1NTU1NTU1NTU1NTU1zLW1NTU1NTU1NTU1NOmRN" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NLQ0KL01NTi4gICAgICAgc01NTU1NTU1NTU1NbyAub3MvLi4uLi4gICAg" >> dr1p
echo "ICAgICAgICAuZE1NTU1NTU1NTU1NTU1NcyAtTk1NTU1NTU1NTS06TU1NTU1NTU1NTU1NTU1NTS0N" >> dr1p
echo "Ci9NTWQgICAgICAgIG1NTU1NTU1NTU1NTS8gICAuOm9zKy0uICAgICAgICAgICAgIC5kTU1NTU1N" >> dr1p
echo "TU1NTU1ObS4gIC1zb29zeWhkbXMgLm1NTU1NTU1NTU1NTU1NTU0tDQovTU1zICAgICAgICBtTU1N" >> dr1p
echo "TU1NTU1NTU06ICAgICAgIC5oTmhzLy4uICAgICAgICAgLmRNTU1NTm1ocys6LS4gICAgICAgICAg" >> dr1p
echo "ICAgICArTU1NTm9NTU1NTU1NTU1NLQ0KL01NeSAgICAgICAgaE1NTU1NTU1NTU1NOiAgICAgICAg" >> dr1p
echo "b01NTU1NTmR5by8uICAgICAubU5oKy0uICAgICAgICAgICAgICAgICAgICAgICttTnkubU1NTU1N" >> dr1p
echo "TU1NTS0NCi9NTWQgICAgICAgICtNTU1NTU1NTU1NTS8gICAgICAgIDpNTU1NTU1NTU5zLi4uOm9o" >> dr1p
echo "aC8uICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIG1NTU1NTU1NTU0tDQovTU1OLiAgICAg" >> dr1p
echo "ICAubU1NTU1NTU1NTU1vICAgICAgICAuTk1NTU1NTU5oaGROTU1oOiAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICBtTU1NTU1NTU1NLQ0KL01NTSsgICAgICAgIC9NTU1NTU1NTU1NaCAg" >> dr1p
echo "ICAgICAgIHlNTU1NTU1NTU1NTU4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu" >> dr1p
echo "Tk1NTU1NTU1NTS0NCi9NTU1tLiAgICAgICAgK01NTU1NTU1NTU4uICAgICAgICAuTk1NTU1NTU1N" >> dr1p
echo "TU4tICAgICAgICAgOnNkbU5OTmR5Ky4gICAgICAgICAgICAgICAgIGRNTU1NTU1NTU0tDQovTU1N" >> dr1p
echo "TW8gICAgICAgICArTU1NTU1NTU1NKyAgICAgICAgICtNTU1NTU1NTU0vICAgICAgICAtZE1NTU1N" >> dr1p
echo "TU5tbU5OLyAgICAgICAgICAgICAgICAuc2RNTU1NTU1NLQ0KL01NTU1OOiAgICAgICAgIDptTU1N" >> dr1p
echo "TU1NTW0uICAgICAgICAgb01NTU1NTU1oICAgICAgICAubU1NTU1NTU1tcy0gLi4gIC9vLiAgICAg" >> dr1p
echo "ICAgICAgICAubU1NTU1NTS0NCi9NTU1NTW0uICAgICAgICAgLnlNTU1NTU1NbyAgICAgICAgICBv" >> dr1p
echo "TU1NTU1NLyAgICAgICAgc01NTU1NTU1NTU1NaDogICA6Tk5vLiAgICAgICAgICAgIHNNTU1NTU0t" >> dr1p
echo "DQovTU1NTU1NbS4gICAgICAgICAgLWhNTU1NTU46ICAgICAgICAgIC9OTU1NTS4gICAgICAgIGRN" >> dr1p
echo "TU1NTU1NTU1NTU1NaC0gIDpobU55LiAgICAgICAgICAuTk1NTU1NLQ0KL01NTU1NTU1tLSAgICAg" >> dr1p
echo "ICAgICAgLXlOTU1NbS4gICAgICAgICAgLnlNTU0uICAgICAgICBkTU1NTU1NTU1NTU1NTU1OaDou" >> dr1p
echo "IC4uLi4gICAgICAgICAgIHlNTU1NTS0NCi9NTU1NTU1NTU4rICAgICAgICAgICAgLitoTk1kLiAg" >> dr1p
echo "ICAgICAgICAgOmhNOiAgICAgICAgZE1NTU1NTU1NTU1NTU1NTU1ObW8tICAgICAgICAgICAgICAu" >> dr1p
echo "Tk1NTU0tDQovTU1NTU1NTU1NTWgtICAgICAgICAgICAgIC4vc3MuICAgICAgICAgICAuOjogICAg" >> dr1p
echo "ICAgIHNNTU1NTU1NTU1NTU1NTU1NTU1NTm1zLy4gICAgICAgICAgIC9NTU1NLQ0KL01NTU1NTU1N" >> dr1p
echo "TU1NTm8uICAgICAgICAgICAgICAuICAgICAgICAgICAgICAgICAgICAgICA6TU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1OZG86Li4gICAgICAgb01NTS0NCi9NTU1NTU1NTU1NTU1NbW8uICAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICAgICAgICAgICAgLm1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU5t" >> dr1p
echo "aDogICAgIC5kTU0tDQovTU1NTU1NTU1NTU1NTU1NTnk6LiAgICAgICAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICArTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1OaCs6Oi8rc2ROTU1NLQ0KL01N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTmRvLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRNTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU1NTU1NTk5OTk5NTU1NTU1NTS0NCi9NTU1NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU5kKy0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtTk1NTU1NTU1NTU1NTU1NTU1NTU1N" >> dr1p
echo "TU1NTU1NTU1NTU1NTU1NTU0tDQotTk1NTU1NTU1NTU1NTU1NTU1NTU1NTU1OZG86LiAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICAgIC9OTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1k" >> dr1p
echo "Lg0KIC15bU5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTmRvLS4gICAgICAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgK05OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTm15Lg0KICAgLi4uLi4uLi4uLi4u" >> dr1p
echo "Li4uLi4uLi4uLi4uLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgIC4tLi4uLi4uLi4uLi4u" >> dr1p
echo "Li4uLi4uLi4uLi4uLi4uLi4uLi4NCiAgICAuLi4uLi4gICAgICAgLi4uLi4uLi4uICAgICAgICAg" >> dr1p
echo "IC4uLi4uLi4uLi4uLi4uICAgICAgICAgIC4uLi4uLi4uLi4gICAgICAgICAgICAgIC4uLicnJw0K" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmltcG9ydCBvcyxzeXMscmUs" >> dr1p
echo "c3RyaW5nLHNodXRpbCxleWVkMw0KZnJvbSBleWVkMy5pZDMgaW1wb3J0IElEM19WMV8xLCBJRDNf" >> dr1p
echo "VjJfMywgSUQzX1YyXzQNCmZyb20gZXllZDMuaWQzLmZyYW1lcyBpbXBvcnQgSW1hZ2VGcmFtZQ0K" >> dr1p
echo "ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUNCmZyb20gZ2xvYiBpbXBvcnQgZ2xvYg0KIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmV5ZWQzLmxvZy5zZXRMZXZlbCgi" >> dr1p
echo "RVJST1IiKQ0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCmlmIF9fbmFt" >> dr1p
echo "ZV9fPT0nX19tYWluX18nOg0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN" >> dr1p
echo "CiAgICBlbW9qaV9wYXR0ZXJuID0gcmUuY29tcGlsZSgiWyINCiAgICAgICAgdSJcVTAwMDFGNjAw" >> dr1p
echo "LVxVMDAwMUY2NEYiICAjIGVtb3RpY29ucw0KICAgICAgICB1IlxVMDAwMUYzMDAtXFUwMDAxRjVG" >> dr1p
echo "RiIgICMgc3ltYm9scyAmIHBpY3RvZ3JhcGhzDQogICAgICAgIHUiXFUwMDAxRjY4MC1cVTAwMDFG" >> dr1p
echo "NkZGIiAgIyB0cmFuc3BvcnQgJiBtYXAgc3ltYm9scw0KICAgICAgICB1IlxVMDAwMUYxRTAtXFUw" >> dr1p
echo "MDAxRjFGRiIgICMgZmxhZ3MgKGlPUykNCiAgICAgICAgIl0rIiwgZmxhZ3M9cmUuVU5JQ09ERSkg" >> dr1p
echo "ICAgDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHRyeToNCiAg" >> dr1p
echo "ICAgICAgc29uZ19hbGJ1bT1zdHIoc3lzLmFyZ3ZbMV0pDQogICAgZXhjZXB0Og0KICAgICAgICBw" >> dr1p
echo "cmludCgnbm8gYWxidW0gc3BlY2lmaWVkJykNCiAgICAgICAgc3lzLmV4aXQoMSkNCiAgICAjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBzb25nX2dl" >> dr1p
echo "bnJlPXN0cihzeXMuYXJndlsyXSkNCiAgICBleGNlcHQ6DQogICAgICAgIHByaW50KCdubyBnZW5y" >> dr1p
echo "ZSBzcGVjaWZpZWQnKQ0KICAgICAgICBzeXMuZXhpdCgxKQ0KICAgICMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMNCiAgICB0cnk6DQogICAgICAgIHBhdGhfdG9faW1hZ2U9c3RyKHN5" >> dr1p
echo "cy5hcmd2WzNdKQ0KICAgIGV4Y2VwdDoNCiAgICAgICAgcHJpbnQoIm5vIHBhdGggdG8gJ2NvdmVy" >> dr1p
echo "LmpwZycgc3BlY2lmaWVkIikNCiAgICAgICAgc3lzLmV4aXQoMSkNCiAgICAjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgc2h1dGlsLmNvcHkocGF0aF90b19pbWFnZSxzb25n" >> dr1p
echo "X2FsYnVtKQ0KICAgIG9zLmNoZGlyKHNvbmdfYWxidW0pDQogICAgIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIw0KICAgIGV4cG9ydF90aW1lPWRhdGV0aW1lLm5vdygpLnN0cmZ0aW1l" >> dr1p
echo "KCclbSVkJVkuJUglTSVTJykNCiAgICBleHBvcnRfdGltZVs6NF0rZXhwb3J0X3RpbWVbNjpdDQog" >> dr1p
echo "ICAgZXhwb3J0X2RpcmVjdG9yeT1mImRyMXBfX3tzb25nX2FsYnVtfSINCiAgICB0cnk6DQogICAg" >> dr1p
echo "ICAgIHNodXRpbC5ybXRyZWUoZXhwb3J0X2RpcmVjdG9yeSkNCiAgICBleGNlcHQ6DQogICAgICAg" >> dr1p
echo "IHBhc3MNCiAgICBvcy5ta2RpcihleHBvcnRfZGlyZWN0b3J5KQ0KICAgIHByaW50KGYiXG5ceDFi" >> dr1p
echo "WzkwbVsgXHgxYlszMW1leHBvcnQgZGlyZWN0b3J5XHgxYls5MG06IFx4MWJbOTFte2V4cG9ydF9k" >> dr1p
echo "aXJlY3Rvcnl9IFx4MWJbOTBtXSIpDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIw0KICAgIGZpbGVsaXN0PWdsb2IoJyoubXAzJykNCiAgICB0cmFja19jb3VudD1sZW4oZmls" >> dr1p
echo "ZWxpc3QpDQogICAgcHJpbnQoZiJceDFiWzkwbVsgXHgxYls5MW17dHJhY2tfY291bnR9IFx4MWJb" >> dr1p
echo "MzFtc29uZ3MgZGlzY292ZXJlZCBceDFiWzkwbV0iKQ0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMNCiAgICBwbGF5bGlzdD0iX3BsYXlsaXN0Lm0zdSINCiAgICBwbGF5bGlz" >> dr1p
echo "dF9wYXRoMmZpbGU9Zid7ZXhwb3J0X2RpcmVjdG9yeX0ve3BsYXlsaXN0fScNCiAgICBmPW9wZW4o" >> dr1p
echo "cGxheWxpc3RfcGF0aDJmaWxlLCd3JykNCiAgICBmLndyaXRlKCIjRVhUTTNVXG4iKQ0KICAgIGYu" >> dr1p
echo "Y2xvc2UoKQ0KICAgIHByaW50KGYiXHgxYls5MG1bIFx4MWJbMzFtcGxheWxpc3QgY3JlYXRlZFx4" >> dr1p
echo "MWJbOTBtOiBceDFiWzkxbXtwbGF5bGlzdH0gXHgxYls5MG1dXHgxYlswbVxuIikNCiAgICAjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBmb3IgdHJh" >> dr1p
echo "Y2tfaW5kZXgsdGhlbXAzIGluIGVudW1lcmF0ZShmaWxlbGlzdCk6DQogICAgICAgICAgICAjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgdHJhY2tfcGFkPWxlbihzdHIodHJh" >> dr1p
echo "Y2tfY291bnQpKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAg" >> dr1p
echo "ICAgICAgIHByaW50KGYiXHgxYls5MG1bIFx4MWJbMzFtcHJvY2Vzc2luZyBzb25nIFx4MWJbOTFt" >> dr1p
echo "e3N0cih0cmFja19pbmRleCsxKS56ZmlsbCh0cmFja19wYWQpfSBceDFiWzkwbS8gXHgxYls5MW17" >> dr1p
echo "c3RyKHRyYWNrX2NvdW50KS56ZmlsbCh0cmFja19wYWQpfSBceDFiWzkwbV1ceDFiWzBtIikNCiAg" >> dr1p
echo "ICAgICAgICAgIHByaW50KGYiXHgxYls5MG1cdGZpbGVuYW1lOiB7dGhlbXAzfVx4MWJbMG0iKQ0K" >> dr1p
echo "ICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIHNodXRp" >> dr1p
echo "bC5jb3B5KHRoZW1wMyxmJ3tleHBvcnRfZGlyZWN0b3J5fScpDQogICAgICAgICAgICBzb25nPWV5" >> dr1p
echo "ZWQzLmxvYWQoZid7ZXhwb3J0X2RpcmVjdG9yeX0ve3RoZW1wM30nKQ0KICAgICAgICAgICAgIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIGlmIG5vdCBzb25nLnRhZzoNCiAg" >> dr1p
echo "ICAgICAgICAgICAgICBzb25nLmluaXRUYWcoKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMNCiAgICAgICAgICAgIHNvbmdfZmlsZW5hbWU9dGhlbXAzDQogICAgICAgICAg" >> dr1p
echo "ICBzb25nX2V4dGVuc2lvbj1zb25nX2ZpbGVuYW1lWy0zOl0NCiAgICAgICAgICAgICMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICBpZiBzb25nX2ZpbGVuYW1lLmZpbmQoJ1BS" >> dr1p
echo "RU1JRVJFIC0gJyk+LTE6DQogICAgICAgICAgICAgICAgc29uZ19maWxlbmFtZT1zb25nX2ZpbGVu" >> dr1p
echo "YW1lLnJlcGxhY2UoJ1BSRU1JRVJFIC0gJywnJykNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjDQogICAgICAgICAgICBpZiBzb25nX2ZpbGVuYW1lLmZpbmQoJ1BSRU1JRVJF" >> dr1p
echo "IF8gJyk+LTE6DQogICAgICAgICAgICAgICAgc29uZ19maWxlbmFtZT1zb25nX2ZpbGVuYW1lLnJl" >> dr1p
echo "cGxhY2UoJ1BSRU1JRVJFIF8gJywnJykNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIDw8PCBZT1VUVUJFIDw8PCBZT1VUVUJFDQogICAgICAgICAgICBpZiBzb25nX2ZpbGVu" >> dr1p
echo "YW1lLnN0YXJ0c3dpdGgoJ3lvdXR1YmVfJyk6DQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIHNvbmdfdmlkZW9pZD1zb25nX2ZpbGVuYW1lWy0x" >> dr1p
echo "NTotNF0NCiAgICAgICAgICAgICAgICBzb25nX2FydGlzdD1zb25nX2ZpbGVuYW1lWzotMTZdLnNw" >> dr1p
echo "bGl0KCcgLSAnKVswXS5zdHJpcCgpW2xlbigneW91dHViZV8nKTpdDQogICAgICAgICAgICAgICAg" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIHRyeToNCiAgICAgICAgICAg" >> dr1p
echo "ICAgICAgICAgc29uZ190aXRsZT1zb25nX2ZpbGVuYW1lWzotMTZdLnNwbGl0KCcgLSAnKVsxXS5z" >> dr1p
echo "dHJpcCgpDQogICAgICAgICAgICAgICAgZXhjZXB0Og0KICAgICAgICAgICAgICAgICAgICBzb25n" >> dr1p
echo "X3RpdGxlPScnDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAg" >> dr1p
echo "ICAgICAgICAgIHVybD1mImh0dHA6Ly95b3V0dS5iZS97c29uZ192aWRlb2lkfSINCiAgICAgICAg" >> dr1p
echo "ICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICAjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyA8PDwgQkFORENBTVAgPDw8IEJBTkRDQU1QDQogICAgICAgICAgICBpZiBz" >> dr1p
echo "b25nX2ZpbGVuYW1lLnN0YXJ0c3dpdGgoJ2JhbmRjYW1wXycpOg0KICAgICAgICAgICAgICAgICMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBzb25nX3ZpZGVvaWQ9c29uZ19m" >> dr1p
echo "aWxlbmFtZS5zcGxpdCgnLScpWy0xXVs6LTRdDQogICAgICAgICAgICAgICAgYnVmZmVyPXNvbmdf" >> dr1p
echo "ZmlsZW5hbWUucmVwbGFjZSgiLSIrc29uZ19maWxlbmFtZS5zcGxpdCgnLScpWy0xXSwnJylbbGVu" >> dr1p
echo "KCdiYW5kY2FtcF8nKTpdLnNwbGl0KCcgLSAnKQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBpZiBsZW4oYnVmZmVyKT09MzoNCiAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgaWYgYnVmZmVyWzBdID09IGJ1ZmZlclsxXToNCiAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgIHNvbmdfYXJ0aXN0PWJ1ZmZlclsxXQ0KICAgICAgICAgICAgICAgICAgICAgICAgc29u" >> dr1p
echo "Z190aXRsZT1idWZmZXJbMl0NCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "DQogICAgICAgICAgICAgICAgaWYgbGVuKGJ1ZmZlcik9PTI6DQogICAgICAgICAgICAgICAgICAg" >> dr1p
echo "IHNvbmdfYXJ0aXN0PWJ1ZmZlclswXQ0KICAgICAgICAgICAgICAgICAgICBzb25nX3RpdGxlPWJ1" >> dr1p
echo "ZmZlclsxXQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAg" >> dr1p
echo "ICAgICAgICB1cmw9ZiJodHRwczovL2JhbmRjYW1wLmNvbS9FbWJlZGRlZFBsYXllci92PTIvdHJh" >> dr1p
echo "Y2s9e3NvbmdfdmlkZW9pZH0iDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "Iw0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgPDw8IFNPVU5EQ0xPVUQg" >> dr1p
echo "PDw8IFNPVU5EQ0xPVUQNCiAgICAgICAgICAgIGlmIHNvbmdfZmlsZW5hbWUuc3RhcnRzd2l0aCgn" >> dr1p
echo "c291bmRjbG91ZF8nKToNCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQog" >> dr1p
echo "ICAgICAgICAgICAgICAgc29uZ192aWRlb2lkPXNvbmdfZmlsZW5hbWUuc3BsaXQoJy0nKVstMV1b" >> dr1p
echo "Oi00XQ0KICAgICAgICAgICAgICAgIGJ1ZmZlcj1zb25nX2ZpbGVuYW1lW2xlbignc291bmRjbG91" >> dr1p
echo "ZF8nKTotbGVuKHNvbmdfZmlsZW5hbWUuc3BsaXQoJy0nKVstMV0pLTFdDQogICAgICAgICAgICAg" >> dr1p
echo "ICAgdW5jbG9zZWRfY291bnQ9MA0KICAgICAgICAgICAgICAgIGlmIGJ1ZmZlci5maW5kKCcoJyk+" >> dr1p
echo "LTE6IHVuY2xvc2VkX2NvdW50Kz0xDQogICAgICAgICAgICAgICAgaWYgYnVmZmVyLmZpbmQoJykn" >> dr1p
echo "KT4tMTogdW5jbG9zZWRfY291bnQrPTENCiAgICAgICAgICAgICAgICBpZiB1bmNsb3NlZF9jb3Vu" >> dr1p
echo "dD09MTogYnVmZmVyPWJ1ZmZlci5yZXBsYWNlKCcoJywnIC0gJykucmVwbGFjZSgnKScsJyAtICcp" >> dr1p
echo "DQogICAgICAgICAgICAgICAgaWYgKHVuY2xvc2VkX2NvdW50ICUgMikgPT0gMDoNCiAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgYnVmZmVyPXNvbmdfZmlsZW5hbWVbOi1sZW4oc29uZ192aWRlb2lkKS1sZW4o" >> dr1p
echo "c29uZ19leHRlbnNpb24pLWxlbignLicpLWxlbignLScpXS5yZXBsYWNlKCcoICcsJycpLnJlcGxh" >> dr1p
echo "Y2UoJyApJywnJykubG93ZXIoKS5yZXBsYWNlKCdzb3VuZGNsb3VkXycsJycpLnNwbGl0KCctJykN" >> dr1p
echo "CiAgICAgICAgICAgICAgICAgICAgYnVmZmVyDQogICAgICAgICAgICAgICAgaWYgbGVuKGJ1ZmZl" >> dr1p
echo "cik9PTM6DQogICAgICAgICAgICAgICAgICAgIGlmIGJ1ZmZlclswXT09YnVmZmVyWzFdOg0KICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICAgICAgc29uZ19hcnRpc3Q9YnVmZmVyWzFdLnN0cmlwKCkNCiAgICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0bGU9YnVmZmVyWzJdLnN0cmlwKCkNCiAgICAgICAg" >> dr1p
echo "ICAgICAgICAgICAgZWxzZToNCiAgICAgICAgICAgICAgICAgICAgICAgIHNvbmdfYXJ0aXN0PWJ1" >> dr1p
echo "ZmZlclswXS5zdHJpcCgpK2J1ZmZlclsxXS5zdHJpcCgpDQogICAgICAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICBzb25nX3RpdGxlPWJ1ZmZlclsyXS5zdHJpcCgpDQogICAgICAgICAgICAgICAgZWxpZiBsZW4o" >> dr1p
echo "YnVmZmVyKT09MjoNCiAgICAgICAgICAgICAgICAgICAgc29uZ19hcnRpc3Q9YnVmZmVyWzBdLnN0" >> dr1p
echo "cmlwKCkNCiAgICAgICAgICAgICAgICAgICAgc29uZ190aXRsZT1idWZmZXJbMV0uc3RyaXAoKQ0K" >> dr1p
echo "ICAgICAgICAgICAgICAgIGVsaWYgbGVuKGJ1ZmZlcik+PTQ6DQogICAgICAgICAgICAgICAgICAg" >> dr1p
echo "IHRyeToNCiAgICAgICAgICAgICAgICAgICAgICAgIHNvbmdfYXJ0aXN0PWJ1ZmZlci5zcGxpdCgn" >> dr1p
echo "LScpWzBdLnN0cmlwKCkNCiAgICAgICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0bGU9YnVmZmVy" >> dr1p
echo "LnNwbGl0KCctJylbMV0uc3RyaXAoKS5yZXBsYWNlKCdfJywnLicpDQogICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgICBzb25nX3RpdGxlKz0iX18iKycnLmpvaW4oYnVmZmVyLnNwbGl0KCctJylbMjpdKS5z" >> dr1p
echo "dHJpcCgpLnJlcGxhY2UoJyAnLCcuJykNCiAgICAgICAgICAgICAgICAgICAgZXhjZXB0Og0KICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICAgICAgc29uZ19hcnRpc3Q9YnVmZmVyWzBdLnNwbGl0KCctJylbMF0u" >> dr1p
echo "c3RyaXAoKQ0KICAgICAgICAgICAgICAgICAgICAgICAgc29uZ190aXRsZT1idWZmZXJbMV0uc3Bs" >> dr1p
echo "aXQoIi0iKVswXS5zdHJpcCgpLnJlcGxhY2UoIl8iLCAiLiIpLnJlcGxhY2UoIlsiLCIuIikucmVw" >> dr1p
echo "bGFjZSgiXSIsIi4iKQ0KICAgICAgICAgICAgICAgICAgICAgICAgc29uZ190aXRsZSs9c3RyKCJf" >> dr1p
echo "XyIgKyAiIi5qb2luKGJ1ZmZlclsyOl0pKS5zdHJpcCgpLnJlcGxhY2UoIiAiLCAiLiIpDQogICAg" >> dr1p
echo "ICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIGlmIHNv" >> dr1p
echo "bmdfYXJ0aXN0LmZpbmQoJ2ZyZWUgZGwnKSA+IC0xOg0KICAgICAgICAgICAgICAgICAgICBzb25n" >> dr1p
echo "X2FydGlzdD1zb25nX2FydGlzdC5yZXBsYWNlKCdmcmVlIGRsJywnJykNCiAgICAgICAgICAgICAg" >> dr1p
echo "ICBpZiBzb25nX3RpdGxlLmZpbmQoJ2ZyZWUgZGwnKSA+IC0xOg0KICAgICAgICAgICAgICAgICAg" >> dr1p
echo "ICBzb25nX3RpdGxlPXNvbmdfdGl0bGUucmVwbGFjZSgnZnJlZSBkbCcsJycpDQogICAgICAgICAg" >> dr1p
echo "ICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIHVybD1mImh0dHBz" >> dr1p
echo "Oi8vdy5zb3VuZGNsb3VkLmNvbS9wbGF5ZXIvP3VybD1odHRwczovL2FwaS5zb3VuZGNsb3VkLmNv" >> dr1p
echo "bS90cmFja3Mve3NvbmdfdmlkZW9pZH0iDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIw0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAg" >> dr1p
echo "ICAgIGlmIHNvbmdfYXJ0aXN0LmZpbmQoJ1snKSA+IC0xOg0KICAgICAgICAgICAgICAgICMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBzeD1zb25nX2FydGlzdC5maW5kKCdb" >> dr1p
echo "JykNCiAgICAgICAgICAgICAgICBzeT1zb25nX2FydGlzdC5maW5kKCddJykrMQ0KICAgICAgICAg" >> dr1p
echo "ICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBpZiBsZW4oc29u" >> dr1p
echo "Z19hcnRpc3Rbc3g6c3ldKSA+IDU6DQogICAgICAgICAgICAgICAgICAgIHNvbmdfYXJ0aXN0PXNv" >> dr1p
echo "bmdfYXJ0aXN0LnJlcGxhY2Uoc29uZ19hcnRpc3Rbc3g6c3ldLCcnKS5zdHJpcCgpDQogICAgICAg" >> dr1p
echo "ICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIGlmIHNvbmdfdGl0bGUuZmluZCgnWycpID4gLTE6" >> dr1p
echo "DQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAg" >> dr1p
echo "IHN4PXNvbmdfdGl0bGUuZmluZCgnWycpDQogICAgICAgICAgICAgICAgc3k9c29uZ190aXRsZS5m" >> dr1p
echo "aW5kKCddJykrMQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAg" >> dr1p
echo "ICAgICAgICAgICBpZiBsZW4oc29uZ190aXRsZVtzeDpzeV0pID4gNToNCiAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgc29uZ190aXRsZT1zb25nX3RpdGxlLnJlcGxhY2Uoc29uZ190aXRsZVtzeDpzeV0sJycp" >> dr1p
echo "LnN0cmlwKCkNCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAg" >> dr1p
echo "ICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgaWYgc29uZ19hcnRp" >> dr1p
echo "c3QuZmluZCgnKCcpID4gLTE6DQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "Iw0KICAgICAgICAgICAgICAgIHN4PXNvbmdfYXJ0aXN0LmZpbmQoJygnKQ0KICAgICAgICAgICAg" >> dr1p
echo "ICAgIHN5PXNvbmdfYXJ0aXN0LmZpbmQoJyknKSsxDQogICAgICAgICAgICAgICAgIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgICAgIGlmIHNvbmdfYXJ0aXN0W3N4OnN5XS5sb3dl" >> dr1p
echo "cigpLmZpbmQoJ29mZmljaWFsJykgPiAtMToNCiAgICAgICAgICAgICAgICAgICAgaWYgc29uZ19h" >> dr1p
echo "cnRpc3Rbc3g6c3ldLmxvd2VyKCkuZmluZCgnYXVkaW8nKSA+IC0xIG9yIHNvbmdfYXJ0aXN0W3N4" >> dr1p
echo "OnN5XS5sb3dlcigpLmZpbmQoJ3ZpZGVvJykgPiAtMToNCiAgICAgICAgICAgICAgICAgICAgICAg" >> dr1p
echo "IHNvbmdfYXJ0aXN0PXNvbmdfYXJ0aXN0LnJlcGxhY2Uoc29uZ19hcnRpc3Rbc3g6c3ldLCcnKS5z" >> dr1p
echo "dHJpcCgpDQogICAgICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAg" >> dr1p
echo "ICAgICAgIGlmIHNvbmdfYXJ0aXN0W3N4OnN5XS5sb3dlcigpLmZpbmQoJyMnKSA+IC0xOg0KICAg" >> dr1p
echo "ICAgICAgICAgICAgICAgICBzb25nX2FydGlzdD1zb25nX2FydGlzdC5yZXBsYWNlKHNvbmdfYXJ0" >> dr1p
echo "aXN0W3N4OnN5XSwnJykuc3RyaXAoKQ0KICAgICAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAg" >> dr1p
echo "ICBpZiBzb25nX3RpdGxlLmZpbmQoJygnKSA+IC0xOg0KICAgICAgICAgICAgICAgICMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgICAgICBzeD1zb25nX3RpdGxlLmZpbmQoJygnKQ0K" >> dr1p
echo "ICAgICAgICAgICAgICAgIHN5PXNvbmdfdGl0bGUuZmluZCgnKScpKzENCiAgICAgICAgICAgICAg" >> dr1p
echo "ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICAgICAgaWYgc29uZ190aXRsZVtz" >> dr1p
echo "eDpzeV0ubG93ZXIoKS5maW5kKCdvZmZpY2lhbCcpID4gLTE6DQogICAgICAgICAgICAgICAgICAg" >> dr1p
echo "IGlmIHNvbmdfdGl0bGVbc3g6c3ldLmxvd2VyKCkuZmluZCgnYXVkaW8nKSA+IC0xIG9yIHNvbmdf" >> dr1p
echo "dGl0bGVbc3g6c3ldLmxvd2VyKCkuZmluZCgndmlkZW8nKSA+IC0xOg0KICAgICAgICAgICAgICAg" >> dr1p
echo "ICAgICAgICAgc29uZ190aXRsZT1zb25nX3RpdGxlLnJlcGxhY2Uoc29uZ190aXRsZVtzeDpzeV0s" >> dr1p
echo "JycpLnN0cmlwKCkNCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAg" >> dr1p
echo "ICAgICAgICAgICAgaWYgc29uZ190aXRsZVtzeDpzeV0ubG93ZXIoKS5maW5kKCcjJykgPiAtMToN" >> dr1p
echo "CiAgICAgICAgICAgICAgICAgICAgc29uZ190aXRsZT1zb25nX3RpdGxlLnJlcGxhY2Uoc29uZ190" >> dr1p
echo "aXRsZVtzeDpzeV0sJycpLnN0cmlwKCkNCiAgICAgICAgICAgICAgICAjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjDQogICAgICAgICAgICAgICAgaWYgc29uZ190aXRsZVtzeDpzeV0ubG93ZXIoKS5maW5k" >> dr1p
echo "KCdleGNsdXNpdmUnKSA+IC0xOg0KICAgICAgICAgICAgICAgICAgICBpZiBzb25nX3RpdGxlW3N4" >> dr1p
echo "OnN5XS5sb3dlcigpLmZpbmQoJ2JvbnVzJykgPiAtMSBvciBzb25nX3RpdGxlW3N4OnN5XS5sb3dl" >> dr1p
echo "cigpLmZpbmQoJ3ZpZGVvJykgPiAtMToNCiAgICAgICAgICAgICAgICAgICAgICAgIHNvbmdfdGl0" >> dr1p
echo "bGU9c29uZ190aXRsZS5yZXBsYWNlKHNvbmdfdGl0bGVbc3g6c3ldLCcnKS5zdHJpcCgpDQogICAg" >> dr1p
echo "ICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIHNvbmcudGFnLmFydGlzdD1zb25nX2FydGlz" >> dr1p
echo "dA0KICAgICAgICAgICAgc29uZy50YWcuYWxidW09c29uZ19hbGJ1bQ0KICAgICAgICAgICAgc29u" >> dr1p
echo "Zy50YWcuZ2VucmU9c29uZ19nZW5yZQ0KICAgICAgICAgICAgc29uZy50YWcudHJhY2tfbnVtPSh0" >> dr1p
echo "cmFja19pbmRleCsxLHRyYWNrX2NvdW50KQ0KICAgICAgICAgICAgc29uZy50YWcuZGlzY19udW09" >> dr1p
echo "KDEsMSkNCiAgICAgICAgICAgIHNvbmcudGFnLnRpdGxlPXNvbmdfdGl0bGUNCiAgICAgICAgICAg" >> dr1p
echo "IHNvbmcudGFnLmNvbW1lbnRzLnNldCh1Ii5bZF0uIGlyY2QuY2hhdC82Njk3I3RjcGRpcmVjdFxu" >> dr1p
echo "XG57fSBwbGF5bGlzdCIuZm9ybWF0KHNvbmdfYWxidW0pKQ0KICAgICAgICAgICAgc29uZy50YWcu" >> dr1p
echo "dXNlcl91cmxfZnJhbWVzLnNldChieXRlcyh1cmwuZW5jb2RlKCkpKQ0KICAgICAgICAgICAgc29u" >> dr1p
echo "Zy50YWcucmVjb3JkaW5nX2RhdGU9ZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZLSVtLSVkJykN" >> dr1p
echo "CiAgICAgICAgICAgIHNvbmcudGFnLm9yaWdpbmFsX3JlbGVhc2VfZGF0ZT1kYXRldGltZS5ub3co" >> dr1p
echo "KS5zdHJmdGltZSgnJVknKQ0KICAgICAgICAgICAgc29uZy50YWcucG9wdWxhcml0aWVzLnNldChl" >> dr1p
echo "bWFpbD0iZEBhb2wuY29tIixyYXRpbmc9NSxwbGF5X2NvdW50PTApDQogICAgICAgICAgICBzb25n" >> dr1p
echo "LnRhZy5pbWFnZXMuc2V0KEltYWdlRnJhbWUuRlJPTlRfQ09WRVIsIG9wZW4ocGF0aF90b19pbWFn" >> dr1p
echo "ZSwncmInKS5yZWFkKCksICdpbWFnZS9qcGVnJykNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjDQogICAgICAgICAgICBzb25nLnRhZy5zYXZlKHZlcnNpb249SUQzX1YyXzQp" >> dr1p
echo "DQogICAgICAgICAgICBzb25nLnRhZy5zYXZlKHZlcnNpb249SUQzX1YyXzMpDQogICAgICAgICAg" >> dr1p
echo "ICBzb25nLnRhZy5zYXZlKHZlcnNpb249SUQzX1YxXzEpDQogICAgICAgICAgICAjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIw0KICAgICAgICAgICAgZmlsZXJlbmFtZWQ9Zid7c29uZ19hcnRpc3R9" >> dr1p
echo "Jy5sb3dlcigpLnJlcGxhY2UoJyAnLCcuJykNCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjDQogICAgICAgICAgICBpZiBzb25nX3RpdGxlOg0KICAgICAgICAgICAgICAgIGZp" >> dr1p
echo "bGVyZW5hbWVkKz0iX18iK2Yie3NvbmdfdGl0bGV9Ii5sb3dlcigpLnJlcGxhY2UoJyAnLCcuJykN" >> dr1p
echo "CiAgICAgICAgICAgIGZpbGVyZW5hbWVkKz1mIi57c29uZ19leHRlbnNpb259Ig0KICAgICAgICAg" >> dr1p
echo "ICAgZmlsZXJlbmFtZWQ9ZmlsZXJlbmFtZWQucmVwbGFjZSgnJicsJ2FuZCcpDQogICAgICAgICAg" >> dr1p
echo "ICBmaWxlcmVuYW1lZD1maWxlcmVuYW1lZC5yZXBsYWNlKCcuKCcsJ19fJykNCiAgICAgICAgICAg" >> dr1p
echo "IGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJlcGxhY2UoJykuJywnLicpDQogICAgICAgICAgICBm" >> dr1p
echo "aWxlcmVuYW1lZD1maWxlcmVuYW1lZC5yZXBsYWNlKCcsLicsJy5hbmQuJykNCiAgICAgICAgICAg" >> dr1p
echo "IGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJlcGxhY2UoJy5fLicsJ19fJykNCiAgICAgICAgICAg" >> dr1p
echo "IGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJlcGxhY2UoJ8KpJywnJykNCiAgICAgICAgICAgIGZp" >> dr1p
echo "bGVyZW5hbWVkPWVtb2ppX3BhdHRlcm4uc3ViKHInJywgZmlsZXJlbmFtZWQpDQogICAgICAgICAg" >> dr1p
echo "ICBmaWxlcmVuYW1lZD0nJy5qb2luKGZpbHRlcihsYW1iZGEgeDogeCBpbiBzdHJpbmcucHJpbnRh" >> dr1p
echo "YmxlLGZpbGVyZW5hbWVkKSkNCiAgICAgICAgICAgIGZpbGVyZW5hbWVkPWZpbGVyZW5hbWVkLnJl" >> dr1p
echo "cGxhY2UoJygnLCcnKQ0KICAgICAgICAgICAgZmlsZXJlbmFtZWQ9ZmlsZXJlbmFtZWQucmVwbGFj" >> dr1p
echo "ZSgnKScsJycpDQogICAgICAgICAgICBmaWxlcmVuYW1lZD1yZS5zdWIoJ1wuKycsJy4nLGZpbGVy" >> dr1p
echo "ZW5hbWVkKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAgICAg" >> dr1p
echo "ICAgIG9zLnJlbmFtZShmJ3tleHBvcnRfZGlyZWN0b3J5fS97dGhlbXAzfScsZid7ZXhwb3J0X2Rp" >> dr1p
echo "cmVjdG9yeX0ve2ZpbGVyZW5hbWVkfScpDQogICAgICAgICAgICBwcmludChmJ1x4MWJbOTBtXHQg" >> dr1p
echo "cmVuYW1lZDoge2ZpbGVyZW5hbWVkfVx4MWJbMG0nKQ0KICAgICAgICAgICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMNCiAgICAgICAgICAgIHNvbmdfbGVuZ3RoPXNvbmcuaW5mby50aW1lX3Nl" >> dr1p
echo "Y3MNCiAgICAgICAgICAgIGR1cmF0aW9uX21pbixkdXJhdGlvbl9zZWM9Ins6LjJmfSIuZm9ybWF0" >> dr1p
echo "KDU2NS4wMzIvNjApLnNwbGl0KCcuJykNCiAgICAgICAgICAgIHByaW50KGYnXHgxYls5MG1cdGR1" >> dr1p
echo "cmF0aW9uOiB7ZHVyYXRpb25fbWlufW17ZHVyYXRpb25fc2VjfXNceDFiWzBtJykNCiAgICAgICAg" >> dr1p
echo "ICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgICAgICAgICBmPW9wZW4ocGxheWxp" >> dr1p
echo "c3RfcGF0aDJmaWxlLCdhJykNCiAgICAgICAgICAgIGFydGlzdF9yZW5hbWVkPXNvbmdfYXJ0aXN0" >> dr1p
echo "Lmxvd2VyKCkNCiAgICAgICAgICAgIGFydGlzdF9yZW5hbWVkPScnLmpvaW4oZmlsdGVyKGxhbWJk" >> dr1p
echo "YSB4OiB4IGluIHN0cmluZy5wcmludGFibGUsYXJ0aXN0X3JlbmFtZWQpKQ0KICAgICAgICAgICAg" >> dr1p
echo "YXJ0aXN0X3JlbmFtZWQ9cmUuc3ViKCdcLisnLCcuJyxhcnRpc3RfcmVuYW1lZCkNCiAgICAgICAg" >> dr1p
echo "ICAgIHRpdGxlX3JlbmFtZWQ9c29uZ190aXRsZS5sb3dlcigpDQogICAgICAgICAgICB0aXRsZV9y" >> dr1p
echo "ZW5hbWVkPScnLmpvaW4oZmlsdGVyKGxhbWJkYSB4OiB4IGluIHN0cmluZy5wcmludGFibGUsdGl0" >> dr1p
echo "bGVfcmVuYW1lZCkpDQogICAgICAgICAgICB0aXRsZV9yZW5hbWVkPXJlLnN1YignXC4rJywnLics" >> dr1p
echo "dGl0bGVfcmVuYW1lZCkNCiAgICAgICAgICAgIGYud3JpdGUoZiIjRVhUSU5GOntpbnQoc29uZ19s" >> dr1p
echo "ZW5ndGgpfSx7YXJ0aXN0X3JlbmFtZWR9IC0ge3RpdGxlX3JlbmFtZWR9XG4iKQ0KICAgICAgICAg" >> dr1p
echo "ICAgZi53cml0ZShmIntmaWxlcmVuYW1lZH1cbiIpDQogICAgICAgICAgICBmLmNsb3NlKCkNCiAg" >> dr1p
echo "ICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCiAgICAgICAg" >> dr1p
echo "cHJpbnQoZiJlcnJvcjoge2V9IikNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjDQogICAgdHJ5Og0KICAgICAgICBmaWxlbGlzdD1nbG9iKCcqLm1wMycpDQogICAgICAgIGZv" >> dr1p
echo "ciBfIGluIGZpbGVsaXN0OiBvcy5yZW1vdmUoXykNCiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MN" >> dr1p
echo "CiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAg" >> dr1p
echo "ICBvcy5yZW1vdmUocGF0aF90b19pbWFnZSkNCiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MNCiAg" >> dr1p
echo "ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBm" >> dr1p
echo "aWxlbGlzdD1nbG9iKCcqLmxvZycpDQogICAgICAgIGxvZ2ZpbGVzPVtdDQogICAgICAgIGZvciBf" >> dr1p
echo "IGluIGZpbGVsaXN0Og0KICAgICAgICAgICAgZj1vcGVuKF8sJ3InKQ0KICAgICAgICAgICAgbD1m" >> dr1p
echo "LnJlYWQoKS5zcGxpdGxpbmVzKCkNCiAgICAgICAgICAgIGYuY2xvc2UoKQ0KICAgICAgICAgICAg" >> dr1p
echo "bG9nZmlsZXMuYXBwZW5kKFtfLGxdKQ0KICAgICAgICAgICAgb3MucmVtb3ZlKF8pDQogICAgZXhj" >> dr1p
echo "ZXB0Og0KICAgICAgICBwYXNzDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "Iw0KICAgIHRyeToNCiAgICAgICAgbG9na2V5PVtdDQogICAgICAgIGZvciBpLF8gaW4gZW51bWVy" >> dr1p
echo "YXRlKGxvZ2ZpbGVzKToNCiAgICAgICAgICAgIGlmIF9bMF0gPT0gInVybF9iYXRjaC5sb2ciOg0K" >> dr1p
echo "ICAgICAgICAgICAgICAgIGxvZ2tleS5hcHBlbmQoaSkNCiAgICBleGNlcHQ6DQogICAgICAgIHBh" >> dr1p
echo "c3MNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAg" >> dr1p
echo "ICAgICBmb3IgaSxfIGluIGVudW1lcmF0ZShsb2dmaWxlcyk6DQogICAgICAgICAgICBpZiBfWzBd" >> dr1p
echo "ID09ICJ5b3V0dWJlX3VybF9iYXRjaC5sb2ciOg0KICAgICAgICAgICAgICAgIGxvZ2tleS5hcHBl" >> dr1p
echo "bmQoaSkNCiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBmb3IgaSxfIGluIGVudW1lcmF0ZShs" >> dr1p
echo "b2dmaWxlcyk6DQogICAgICAgICAgICBpZiBfWzBdID09ICJ5b3V0dWJlX2Rvd25sb2FkZWQubG9n" >> dr1p
echo "IjoNCiAgICAgICAgICAgICAgICBsb2drZXkuYXBwZW5kKGkpDQogICAgZXhjZXB0Og0KICAgICAg" >> dr1p
echo "ICBwYXNzDQogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHRyeToN" >> dr1p
echo "CiAgICAgICAgZm9yIGksXyBpbiBlbnVtZXJhdGUobG9nZmlsZXMpOg0KICAgICAgICAgICAgaWYg" >> dr1p
echo "X1swXSA9PSAic291bmRjbG91ZF91cmxfYmF0Y2gubG9nIjoNCiAgICAgICAgICAgICAgICBsb2dr" >> dr1p
echo "ZXkuYXBwZW5kKGkpDQogICAgZXhjZXB0Og0KICAgICAgICBwYXNzDQogICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHRyeToNCiAgICAgICAgZm9yIGksXyBpbiBlbnVt" >> dr1p
echo "ZXJhdGUobG9nZmlsZXMpOg0KICAgICAgICAgICAgaWYgX1swXSA9PSAic291bmRjbG91ZF9kb3du" >> dr1p
echo "bG9hZGVkLmxvZyI6DQogICAgICAgICAgICAgICAgbG9na2V5LmFwcGVuZChpKQ0KICAgIGV4Y2Vw" >> dr1p
echo "dDoNCiAgICAgICAgcGFzcw0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMN" >> dr1p
echo "CiAgICB0cnk6DQogICAgICAgIGZvciBpLF8gaW4gZW51bWVyYXRlKGxvZ2ZpbGVzKToNCiAgICAg" >> dr1p
echo "ICAgICAgIGlmIF9bMF0gPT0gImJhbmRjYW1wX3VybF9iYXRjaC5sb2ciOg0KICAgICAgICAgICAg" >> dr1p
echo "ICAgIGxvZ2tleS5hcHBlbmQoaSkNCiAgICBleGNlcHQ6DQogICAgICAgIHBhc3MNCiAgICAjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgdHJ5Og0KICAgICAgICBmb3IgaSxf" >> dr1p
echo "IGluIGVudW1lcmF0ZShsb2dmaWxlcyk6DQogICAgICAgICAgICBpZiBfWzBdID09ICJiYW5kY2Ft" >> dr1p
echo "cF9kb3dubG9hZGVkLmxvZyI6DQogICAgICAgICAgICAgICAgbG9na2V5LmFwcGVuZChpKQ0KICAg" >> dr1p
echo "IGV4Y2VwdDoNCiAgICAgICAgcGFzcw0KICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMNCiAgICBsb2djbXA9W107IGxvZ2Nscj1bXTsgcHJpbnQoJycpDQogICAgIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIGZvciBkLF8gaW4gZW51bWVyYXRlKGxvZ2tl" >> dr1p
echo "eSk6DQogICAgICAgIG9mZnNldD1sZW4oZiJ7c3RyKF8pLnpmaWxsKDIpfS97c3RyKGxlbihsb2dm" >> dr1p
echo "aWxlcyktMSkuemZpbGwoMil9IHtsb2dmaWxlc1tfXVswXX0gaURyMXAiKQ0KICAgICAgICBsb2dj" >> dr1p
echo "bHIuYXBwZW5kKCJceDFiWzkwbSIpDQogICAgICAgIGxvZ2Nsci5hcHBlbmQoIlx4MWJbOTBtIikN" >> dr1p
echo "CiAgICAgICAgbG9nY21wLmFwcGVuZChmIi5TT0YuIHsnIycqaW50KDEwMC1vZmZzZXQpfSB7bG9n" >> dr1p
echo "ZmlsZXNbX11bMF19IHtzdHIoZCsxKS56ZmlsbCgyKX0ve3N0cihsZW4obG9nZmlsZXMpKS56Zmls" >> dr1p
echo "bCgyKX0iKQ0KICAgICAgICBsb2djbXAuYXBwZW5kKCIiKQ0KICAgICAgICBmb3IgX18gaW4gcmFu" >> dr1p
echo "Z2UobGVuKGxvZ2ZpbGVzW19dWzFdKSk6DQogICAgICAgICAgICBsb2djbHIuYXBwZW5kKCJceDFi" >> dr1p
echo "WzMxbSIpDQogICAgICAgICAgICBsb2djbXAuYXBwZW5kKCBmIntzdHIoX18rMSkuemZpbGwoMil9" >> dr1p
echo "L3tzdHIobGVuKGxvZ2ZpbGVzW19dWzFdKSkuemZpbGwoMil9IHtsb2dmaWxlc1tfXVsxXVtfX119" >> dr1p
echo "IiApDQogICAgICAgIGxvZ2Nsci5hcHBlbmQoIlx4MWJbOTBtIikNCiAgICAgICAgbG9nY2xyLmFw" >> dr1p
echo "cGVuZCgiXHgxYls5MG0iKQ0KICAgICAgICBsb2djbHIuYXBwZW5kKCJceDFiWzkwbSIpDQogICAg" >> dr1p
echo "ICAgIGxvZ2NtcC5hcHBlbmQoIiIpDQogICAgICAgIGxvZ2NtcC5hcHBlbmQoZiJ7c3RyKGQrMSku" >> dr1p
echo "emZpbGwoMil9L3tzdHIobGVuKGxvZ2ZpbGVzKSkuemZpbGwoMil9IHtsb2dmaWxlc1tfXVswXX0g" >> dr1p
echo "eycjJyppbnQoMTAwLW9mZnNldCl9IC5FT0YuIikNCiAgICAgICAgbG9nY21wLmFwcGVuZCgiIikN" >> dr1p
echo "CiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQogICAgZj1vcGVuKGYne2V4" >> dr1p
echo "cG9ydF9kaXJlY3Rvcnl9L19wcm9jZXNzZWRfYmF0Y2gubG9nJywndycpDQogICAgZm9yIGksXyBp" >> dr1p
echo "biBlbnVtZXJhdGUobG9nY21wKToNCiAgICAgICAgcHJpbnQoZiJ7bG9nY2xyW2ldfXtffSIpDQog" >> dr1p
echo "ICAgICAgIGYud3JpdGUoZid7X31cbicpDQogICAgZi5jbG9zZSgpDQogICAgIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KICAgIHByaW50KCdmaW5pc2hlZCcpDQojIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj" >> dr1p
echo "IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEVPRg==" >> dr1p
#####################################################################################################################
base64 -d <<< cat dr1p > dp3.py && python3 dp3.py "$PLAYLIST_NAME" "$PLAYLIST_GENRE" "$PLAYLIST_ARTWORK" ############
#####################################################################################################################
mv "$PLAYLIST_ARTWORK" "$PLAYLIST_NAME/$PREFIX$PLAYLIST_NAME/_folder.png" && rm "dr1p" && rm "dp3.py" ###############
#####################################################################################################################
mv "$PLAYLIST_NAME/$PREFIX$PLAYLIST_NAME" "." && rmdir "$PLAYLIST_NAME" #############################################
#####################################################################################################################
echo -e "\n\033[0;31m[\033[0m DIRECTORY LISTING \033[0;31m]\n"; ls -al "$PREFIX$PLAYLIST_NAME" ######################
#####################################################################################################################
echo -e "\n\033[0;31m[\033[0m PLAYLIST CREATED \033[0;31m]\n"; cat "$PREFIX$PLAYLIST_NAME/_playlist.m3u" ############
#####################################################################################################################
echo "$PLAYLIST_URL" >> "$PREFIX$PLAYLIST_NAME/_processed_batch.log" ################################################
#####################################################################################################################
echo -e "\n\033[0;31m[\033[0m ARCHIVING PLAYLIST \033[0;31m]\n" #####################################################
#####################################################################################################################
tar cvfz "dr1p__$PLAYLIST_NAME.tar.gz" "$PREFIX$PLAYLIST_NAME" ######################################################
#####################################################################################################################
echo -e "\n\033[0;31m[\033[0m FILENAME OF PLAYLIST ARCHIVE \033[0;31m]\n" ###########################################
#####################################################################################################################
ls -al "$PREFIX$PLAYLIST_NAME.tar.gz" ###############################################################################
#####################################################################################################################
echo -e "\n\033[0;31m[\033[0m OPERATION COMPLETE \033[0;31m]" #######################################################
################################################################################################################# EOF