From da8e8869e103c9dc775977ea33b1110c7b5688b6 Mon Sep 17 00:00:00 2001 From: TCWG BuildSlave Date: Thu, 23 Nov 2023 20:09:04 +0000 Subject: onsuccess: #74: 1: [TCWG CI] https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/74/ Results : | # reset_artifacts: | -10 | # build_bmk_llvm: | -3 | # benchmark -- -O2_marm: | 1 check_regression status : 0 --- jenkins/build-name | 2 +- jenkins/notify-full.log | 5222 ++++++++++++++++++++++++++++++++++++++++++++++- jenkins/notify-init.log | 130 +- jenkins/rewrite.log | 20 +- jenkins/run-build.env | 11 +- 5 files changed, 5262 insertions(+), 123 deletions(-) (limited to 'jenkins') diff --git a/jenkins/build-name b/jenkins/build-name index 1b8a7c1..cab733c 100644 --- a/jenkins/build-name +++ b/jenkins/build-name @@ -1 +1 @@ -#73-R# leela_r_base.default,541.leela_r failed to run-force +#74-llvm-R1 diff --git a/jenkins/notify-full.log b/jenkins/notify-full.log index 2211690..48c0cea 100644 --- a/jenkins/notify-full.log +++ b/jenkins/notify-full.log @@ -1,27 +1,27 @@ ++ pwd ++ cat -+ remote_exec 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh ++ remote_exec 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh + set -euf -o pipefail + local host -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -d: -f 1 -+ host=tcwg-jade-03 ++ host=tcwg-snow_bmk-02 + local port -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -s -d: -f 2 + port= + local dir -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -s -d: -f 3 + dir=/home/tcwg-buildslave/workspace/tcwg_bmk_2 + local opts -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -s -d: -f 4 -+ opts=-p56191 ++ opts=-p37754 + local env_vars -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -s -d: -f 5 -+ env_vars='ssh_host=tcwg-jade-03 ssh_port=56191' ++ env_vars='ssh_host=tcwg-snow_bmk-02 ssh_port=37754' + shift + local -a cmd + cmd=() @@ -59,7 +59,7 @@ + cmd+=("$(printf '%q' "$i")") ++ printf %q tcwg_bmk-build.sh ++ printf %q /home/tcwg-buildslave/workspace/tcwg_bmk_2 -+ ssh -p56191 tcwg-jade-03 'export ssh_host=tcwg-jade-03 ssh_port=56191 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_2 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh' ++ ssh -p37754 tcwg-snow_bmk-02 'export ssh_host=tcwg-snow_bmk-02 ssh_port=37754 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_2 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh' /home/tcwg-buildslave/workspace/tcwg_bmk_2/jenkins-scripts/round-robin-notify.sh @@rr[top_artifacts] artifacts __TCWG_JIRA_TOKEN ijQW9spm0p7HwZnUtLFx7CCA __stage full __verbose true __build_script tcwg_bmk-build.sh @@ -70,9 +70,9 @@ + declare -a changed_components + declare print_commits_f print_result_f print_config_f print_last_icommit_f + dump_model_only=false +# setup_notify_environment + setup_notify_environment + echo '# setup_notify_environment' -# setup_notify_environment + top_artifacts=artifacts ++ get_current_manifest '{rr[ci_project]}' ++ get_manifest artifacts/manifest.sh '{rr[ci_project]}' @@ -81,37 +81,37 @@ ++ get_current_manifest '{rr[ci_config]}' ++ get_manifest artifacts/manifest.sh '{rr[ci_config]}' ++ set +x +# Debug traces : + ci_config=llvm-arm-master-O2 + echo '# Debug traces :' -# Debug traces : ++ get_baseline_manifest BUILD_URL ++ get_manifest base-artifacts/manifest.sh BUILD_URL false ++ set +x -# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/71/ -+ echo '# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/71/' +# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/ # Using dir : base-artifacts ++ echo '# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/' + echo '# Using dir : base-artifacts' ++ get_current_manifest BUILD_URL ++ get_manifest artifacts/manifest.sh BUILD_URL ++ set +x -# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/ +# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/74/ # Using dir : artifacts -+ echo '# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/' -+ echo '# Using dir : artifacts' ++ echo '# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/74/' ++ echo '# Using dir : artifacts' + echo '' + mkdir -p artifacts/notify + '[' -f /home/tcwg-buildslave/.jipdate.yml ']' + set +x + declare -Ag pw + '[' ignore = precommit ']' -+ check_source_changes # check_source_changes ++ check_source_changes + echo '# check_source_changes' ++ get_current_manifest '{rr[update_baseline]}' ++ get_manifest artifacts/manifest.sh '{rr[update_baseline]}' ++ set +x -+ '[' force '!=' init ']' ++ '[' onsuccess '!=' init ']' + IFS=' ' + read -r -a changed_components ++ print_changed_components @@ -121,19 +121,95 @@ +++ set -euf -o pipefail +++ local c delim= +++ for c in ${rr[components]} -+++ '[' xbaseline '!=' xbaseline ']' ++++ '[' xhttps://github.com/llvm/llvm-project.git#main '!=' xbaseline ']' ++++ echo -ne llvm ++++ delim=' ' +++ echo +++ for c in $(print_updated_components) ++++ get_current_git llvm_rev ++++ set -euf -o pipefail ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat artifacts/git/llvm_rev ++++ get_baseline_git llvm_rev ++++ set -euf -o pipefail ++++ local base_artifacts=base-artifacts ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat base-artifacts/git/llvm_rev +++ '[' x777a6e6f10b2b90496d248b7fa904fce834484be '!=' xa09e32e5fe13e3b64bef1defddf71a9e83022e76 ']' +++ echo -ne llvm +++ delim=' ' ++ echo + local c base_rev cur_rev c_commits -+ '[' 0 = 0 ']' ++ '[' 1 = 0 ']' ++ '[' 1 = 1 ']' ++ changed_single_component=llvm +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ first_bad=777a6e6f10b2b90496d248b7fa904fce834484be +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ last_good=a09e32e5fe13e3b64bef1defddf71a9e83022e76 ++ local res ++ res=0 ++ wait 46839 ++ git -C llvm rev-parse --verify HEAD ++ assert_with_msg 'Cannot parse HEAD in repo llvm' '[' 0 = 0 ']' ++ set -euf -o pipefail +x ++ single_commit_p llvm ++ set -euf -o pipefail ++ local c=llvm ++ local base_rev cur_rev sha1 +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=a09e32e5fe13e3b64bef1defddf71a9e83022e76 +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=777a6e6f10b2b90496d248b7fa904fce834484be +++ git -C llvm rev-parse '777a6e6f10b2b90496d248b7fa904fce834484be^@' ++ for sha1 in $(git -C "$c" rev-parse "$cur_rev^@") ++ '[' f04aa1f8149a9c36e28f985400bcea3e1e5d624d = a09e32e5fe13e3b64bef1defddf71a9e83022e76 ']' ++ return 1 ++ change_kind=single_component # Debug traces : -# change_kind=no_change : -+ change_kind=no_change -+ changed_single_component= + echo '# Debug traces :' -+ echo '# change_kind=no_change : ' -+ echo '' +# change_kind=single_component : llvm ++ echo '# change_kind=single_component : llvm' ++ for c in "${changed_components[@]}" +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=a09e32e5fe13e3b64bef1defddf71a9e83022e76 +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=777a6e6f10b2b90496d248b7fa904fce834484be +++ git -C llvm rev-list --count a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be ++ c_commits=923 ++ echo '# rev for llvm : a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be (923 commits)' +# rev for llvm : a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be (923 commits) ++ echo '' + setup_stages_to_run + '[' ignore = onregression ']' + '[' ignore = precommit ']' @@ -156,28 +232,32 @@ + generate_extra_details_f=bmk_generate_extra_details + post_interesting_commits init + set -euf -o pipefail -+ echo '# post_interesting_commits' # post_interesting_commits ++ echo '# post_interesting_commits' + local stage=init -+ '[' no_change '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return + '[' full '!=' full ']' + bmk_generate_extra_details + set -euf -o pipefail + local artifacts_mail_dir + artifacts_mail_dir=artifacts/notify ++ local res=0 ++ wait 46863 + /home/tcwg-buildslave/workspace/tcwg_bmk_2/jenkins-scripts/../bmk-scripts/output-bmk-results.py artifacts/results-vs-prev/compare-results-internal.csv artifacts/results-vs-prev/bmk-specific-variability.csv artifacts/notify/ sample build verbose ++ assert_with_msg 'ERROR while trying to regenerate bmk-data results. Aborting..' '[' 0 = 0 ']' ++ set -euf -o pipefail +x + check_if_first_report + declare -g first_icommit_to_report + first_icommit_to_report=false -+ '[' xno_change '!=' xsingle_commit ']' ++ '[' xsingle_component '!=' xsingle_commit ']' + return + post_interesting_commits full -+ set -euf -o pipefail # post_interesting_commits ++ set -euf -o pipefail + echo '# post_interesting_commits' + local stage=full -+ '[' no_change '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return + true + generate_jira_dir @@ -188,7 +268,7 @@ ++ set -euf -o pipefail ++ local print_arg=--entry ++ shift 1 -++ '[' xno_change '!=' xsingle_commit ']' +++ '[' xsingle_component '!=' xsingle_commit ']' ++ return 0 + icommit_entry= + '[' '' '!=' '' ']' @@ -208,7 +288,8 @@ ++ '[' full '!=' full ']' ++ local improved_or_regressed ++ '[' -f artifacts/notify/exe.regression ']' -++ improved_or_regressed=regression +++ '[' -f artifacts/notify/symbol.regression ']' +++ improved_or_regressed=improvement ++ declare -A changed_by_msg ++ changed_by_msg[size-regression]='grew in size by' ++ changed_by_msg[size-improvement]='reduced in size by' @@ -218,45 +299,4972 @@ ++ changed_by_msg[num_vect_loops-improvement]='increased the number of vect loops by' ++ changed_by_msg[num_sve_loops-regression]='reduced the number of sve instructions by' ++ changed_by_msg[num_sve_loops-improvement]='increased the number of sve instructions by' -++ changed_by='slowed down by' +++ changed_by='speeds up by' ++ case ${rr[metric_id]} in ++ exe_threshold=3 ++ symbol_threshold=15 ++ case "$print_arg" in -++ assert_with_msg 'Builds with infra problems should never get here' '[' 1 '!=' 125 ']' +++ assert_with_msg 'Builds with infra problems should never get here' '[' 0 '!=' 125 ']' ++ set -euf -o pipefail +x ++ local metric bmk symbol short_diag long_diag -++ '[' -f artifacts/notify/exe.regression ']' -++ IFS=, -++ read metric bmk symbol short_diag long_diag -+++ head -n1 artifacts/notify/exe.regression -++ echo '541.leela_r failed to run' +++ '[' -f artifacts/notify/exe.improvement ']' +++ '[' -f artifacts/notify/symbol.improvement ']' +++ short_diag='No change' +++ echo 'No change' ++ print_artifacts_url 'notify/mail-body.txt/*view*/' ++ set -euf -o pipefail ++ local url +++ get_current_manifest BUILD_URL +++ get_manifest artifacts/manifest.sh BUILD_URL +++ set +x -++ url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/artifact/artifacts +++ url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/74/artifact/artifacts ++ '[' '' '!=' '' ']' -++ echo 'https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/artifact/artifacts/notify/mail-body.txt/*view*/' -# print all notification files +++ echo 'https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/74/artifact/artifacts/notify/mail-body.txt/*view*/' + echo '# print all notification files' +# print all notification files + true + generate_mail_files + set -euf -o pipefail + print_mail_recipients + set -euf -o pipefail -+ local c= ++ local c=llvm ++ '[' llvm = '' ']' ++ local -A emails ++ emails["tcwg-validation@linaro.org"]=bcc ++ emails["author"]=cc ++ emails["committer"]=to ++ case "$ci_project/$ci_config:$c" in ++ emails["author"]=no ++ emails["committer"]=no ++ emails["maxim.kuvyrkov@linaro.org"]=to ++ local c email base_rev cur_rev +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=a09e32e5fe13e3b64bef1defddf71a9e83022e76 +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=777a6e6f10b2b90496d248b7fa904fce834484be ++ read -r email +++ git -C llvm log --pretty=%ae a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ local precommit_postcommit=postcommit + '[' '' = '' ']' -+ echo bcc:tcwg-validation@linaro.org -+ return 0 +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=a09e32e5fe13e3b64bef1defddf71a9e83022e76 +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=777a6e6f10b2b90496d248b7fa904fce834484be ++ read -r email +++ git -C llvm log --pretty=%ce a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ emails["$email"]=no ++ read -r email ++ unset 'emails[author]' 'emails[committer]' ++ local type ++ recipients=() ++ local -a recipients ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=bcc ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ recipients+=("$type:$email") ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=to ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ recipients+=("$email") ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ for email in "${!emails[@]}" ++ type=no ++ case "$precommit_postcommit:$type" in ++ case "$type" in ++ IFS=, ++ echo bcc:tcwg-validation@linaro.org,maxim.kuvyrkov@linaro.org ++ print_commits --oneline ++ set -euf -o pipefail ++ false ++ local print_arg=--oneline -++ '[' no_change = no_change ']' -++ echo 'baseline build' +++ '[' single_component = no_change ']' +++ local more_lines +++ '[' single_component = single_commit ']' +++ '[' single_component = single_component ']' +++ local new_commits c base_rev cur_rev c_commits components +++ local commits_or_patches +++ '[' '' '!=' '' ']' +++ commits_or_patches=commits +++ new_commits=0 +++ for c in "${changed_components[@]}" ++++ get_baseline_git llvm_rev ++++ set -euf -o pipefail ++++ local base_artifacts=base-artifacts ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat base-artifacts/git/llvm_rev +++ base_rev=a09e32e5fe13e3b64bef1defddf71a9e83022e76 ++++ get_current_git llvm_rev ++++ set -euf -o pipefail ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat artifacts/git/llvm_rev +++ cur_rev=777a6e6f10b2b90496d248b7fa904fce834484be ++++ git -C llvm rev-list --count a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be +++ c_commits=923 +++ new_commits=923 ++++ echo llvm ++++ tr ' ' , +++ components=llvm +++ echo '923 commits in llvm' +++ '[' --oneline = --oneline ']' ++ return 0 ++ bmk_print_result --oneline ++ set -euf -o pipefail @@ -266,7 +5274,8 @@ ++ '[' full '!=' full ']' ++ local improved_or_regressed ++ '[' -f artifacts/notify/exe.regression ']' -++ improved_or_regressed=regression +++ '[' -f artifacts/notify/symbol.regression ']' +++ improved_or_regressed=improvement ++ declare -A changed_by_msg ++ changed_by_msg[size-regression]='grew in size by' ++ changed_by_msg[size-improvement]='reduced in size by' @@ -276,38 +5285,87 @@ ++ changed_by_msg[num_vect_loops-improvement]='increased the number of vect loops by' ++ changed_by_msg[num_sve_loops-regression]='reduced the number of sve instructions by' ++ changed_by_msg[num_sve_loops-improvement]='increased the number of sve instructions by' -++ changed_by='slowed down by' +++ changed_by='speeds up by' ++ case ${rr[metric_id]} in ++ exe_threshold=3 ++ symbol_threshold=15 ++ case "$print_arg" in -++ assert_with_msg 'Builds with infra problems should never get here' '[' 1 '!=' 125 ']' +++ assert_with_msg 'Builds with infra problems should never get here' '[' 0 '!=' 125 ']' ++ set -euf -o pipefail +x ++ local metric bmk symbol short_diag long_diag -++ '[' -f artifacts/notify/exe.regression ']' -++ IFS=, -++ read metric bmk symbol short_diag long_diag -+++ head -n1 artifacts/notify/exe.regression -++ echo '541.leela_r failed to run' -+ echo '[Linaro-TCWG-CI]' 'baseline build: 541.leela_r failed to run' +++ '[' -f artifacts/notify/exe.improvement ']' +++ '[' -f artifacts/notify/symbol.improvement ']' +++ short_diag='No change' +++ echo 'No change' ++ echo '[Linaro-TCWG-CI]' '923 commits in llvm: No change' + print_mail_body + local bad_artifacts_url good_artifacts_url ++ get_current_manifest BUILD_URL ++ get_manifest artifacts/manifest.sh BUILD_URL ++ set +x -+ bad_artifacts_url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/artifact/artifacts ++ bad_artifacts_url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/74/artifact/artifacts ++ get_baseline_manifest BUILD_URL ++ get_manifest base-artifacts/manifest.sh BUILD_URL false ++ set +x -+ good_artifacts_url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/71/artifact/artifacts ++ good_artifacts_url=https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/artifact/artifacts + cat ++ print_commits --short ++ sed -e 's/^/ | /' ++ set -euf -o pipefail ++ false ++ local print_arg=--short -++ '[' no_change = no_change ']' -++ echo 'baseline build' +++ '[' single_component = no_change ']' +++ local more_lines +++ '[' single_component = single_commit ']' +++ '[' single_component = single_component ']' +++ local new_commits c base_rev cur_rev c_commits components +++ local commits_or_patches +++ '[' '' '!=' '' ']' +++ commits_or_patches=commits +++ new_commits=0 +++ for c in "${changed_components[@]}" ++++ get_baseline_git llvm_rev ++++ set -euf -o pipefail ++++ local base_artifacts=base-artifacts ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat base-artifacts/git/llvm_rev +++ base_rev=a09e32e5fe13e3b64bef1defddf71a9e83022e76 ++++ get_current_git llvm_rev ++++ set -euf -o pipefail ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat artifacts/git/llvm_rev +++ cur_rev=777a6e6f10b2b90496d248b7fa904fce834484be ++++ git -C llvm rev-list --count a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be +++ c_commits=923 +++ new_commits=923 ++++ tr ' ' , ++++ echo llvm +++ components=llvm +++ echo '923 commits in llvm' +++ '[' --short = --oneline ']' +++ for c in "${changed_components[@]}" ++++ get_baseline_git llvm_rev ++++ set -euf -o pipefail ++++ local base_artifacts=base-artifacts ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat base-artifacts/git/llvm_rev +++ base_rev=a09e32e5fe13e3b64bef1defddf71a9e83022e76 ++++ get_current_git llvm_rev ++++ set -euf -o pipefail ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat artifacts/git/llvm_rev +++ cur_rev=777a6e6f10b2b90496d248b7fa904fce834484be ++++ git -C llvm rev-list --count a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be +++ c_commits=923 +++ '[' '' '!=' '' ']' +++ git -C llvm log -n 5 --oneline a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be +++ '[' 923 -gt 5 ']' +++ echo '... and 918 more commits in llvm' +++ '[' '' '!=' '' ']' ++ return 0 ++ bmk_print_result --short ++ set -euf -o pipefail @@ -317,7 +5375,8 @@ ++ '[' full '!=' full ']' ++ local improved_or_regressed ++ '[' -f artifacts/notify/exe.regression ']' -++ improved_or_regressed=regression +++ '[' -f artifacts/notify/symbol.regression ']' +++ improved_or_regressed=improvement ++ declare -A changed_by_msg ++ changed_by_msg[size-regression]='grew in size by' ++ changed_by_msg[size-improvement]='reduced in size by' @@ -327,23 +5386,16 @@ ++ changed_by_msg[num_vect_loops-improvement]='increased the number of vect loops by' ++ changed_by_msg[num_sve_loops-regression]='reduced the number of sve instructions by' ++ changed_by_msg[num_sve_loops-improvement]='increased the number of sve instructions by' -++ changed_by='slowed down by' +++ changed_by='speeds up by' ++ case ${rr[metric_id]} in ++ exe_threshold=3 ++ symbol_threshold=15 ++ case "$print_arg" in -++ '[' -f artifacts/notify/exe.regression ']' -++ sort -gr -o artifacts/notify/exe.regression artifacts/notify/exe.regression -++ echo 'the following benchmarks slowed down by more than 3%:' -++ local metric exe symbol short_diag long_diag -++ IFS=, -++ read metric exe symbol short_diag long_diag -++ echo '- 541.leela_r failed to run ' -++ '[' -f artifacts/notify/541.leela_r.symbols-regression ']' -++ IFS=, -++ read metric exe symbol short_diag long_diag -++ '[' -f artifacts/notify/symbol.regression ']' -++ '[' -f artifacts/notify/exe.regression ']' +++ '[' -f artifacts/notify/exe.improvement ']' +++ '[' -f artifacts/notify/symbol.improvement ']' +++ '[' -f artifacts/notify/exe.improvement ']' +++ '[' -f artifacts/notify/symbol.improvement ']' +++ echo 'No change' ++ bmk_print_config ++ . /home/tcwg-buildslave/workspace/tcwg_bmk_2/jenkins-scripts/tcwg_bmk-config.sh +++ [[ -v rr[ci_project] ]] @@ -439,16 +5491,16 @@ +++ case "$target" in +++ target=arm-linux-gnueabihf +++ echo arm-linux-gnueabihf -+ '[' no_change '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return # generate dashboard -+ echo '# generate dashboard' -+ generate_dashboard_squad -+ local results_date # generate_dashboard_squad ... Skipping # post_dashboard_squad ... Skipping ++ echo '# generate dashboard' ++ generate_dashboard_squad ++ local results_date + echo '# generate_dashboard_squad' + false + echo '... Skipping' @@ -458,11 +5510,21 @@ + false + echo '... Skipping' + return ++ generate_lnt_report ++ wait 46998 ++ set -euf -o pipefail +# generate_lnt_report ++ echo '# generate_lnt_report' ++ true ++ case "$ci_project" in +... Skipping ++ echo '... Skipping' ++ return + false + post_to_jira + set -euf -o pipefail -# post_to_jira + echo '# post_to_jira' +# post_to_jira + local post_card_comment=false + local post_template_comment=false + false diff --git a/jenkins/notify-init.log b/jenkins/notify-init.log index 018b5c9..03f997d 100644 --- a/jenkins/notify-init.log +++ b/jenkins/notify-init.log @@ -1,27 +1,27 @@ ++ pwd ++ cat -+ remote_exec 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh ++ remote_exec 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ./jenkins-scripts/round-robin-notify.sh '@@rr[top_artifacts]' artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh + set -euf -o pipefail + local host -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -d: -f 1 -+ host=tcwg-jade-03 ++ host=tcwg-snow_bmk-02 + local port -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -s -d: -f 2 + port= + local dir -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -s -d: -f 3 + dir=/home/tcwg-buildslave/workspace/tcwg_bmk_2 + local opts -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -s -d: -f 4 -+ opts=-p56191 ++ opts=-p37754 + local env_vars -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -s -d: -f 5 -+ env_vars='ssh_host=tcwg-jade-03 ssh_port=56191' ++ env_vars='ssh_host=tcwg-snow_bmk-02 ssh_port=37754' + shift + local -a cmd + cmd=() @@ -59,7 +59,7 @@ + cmd+=("$(printf '%q' "$i")") ++ printf %q tcwg_bmk-build.sh ++ printf %q /home/tcwg-buildslave/workspace/tcwg_bmk_2 -+ ssh -p56191 tcwg-jade-03 'export ssh_host=tcwg-jade-03 ssh_port=56191 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_2 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh' ++ ssh -p37754 tcwg-snow_bmk-02 'export ssh_host=tcwg-snow_bmk-02 ssh_port=37754 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_2 && exec ./jenkins-scripts/round-robin-notify.sh @@rr\[top_artifacts\] artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh' /home/tcwg-buildslave/workspace/tcwg_bmk_2/jenkins-scripts/round-robin-notify.sh @@rr[top_artifacts] artifacts --notify ignore __stage init __verbose true __build_script tcwg_bmk-build.sh @@ -81,23 +81,23 @@ ++ get_current_manifest '{rr[ci_config]}' ++ get_manifest artifacts/manifest.sh '{rr[ci_config]}' ++ set +x +# Debug traces : + ci_config=llvm-arm-master-O2 + echo '# Debug traces :' -# Debug traces : ++ get_baseline_manifest BUILD_URL ++ get_manifest base-artifacts/manifest.sh BUILD_URL false ++ set +x -# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/71/ -+ echo '# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/71/' -+ echo '# Using dir : base-artifacts' +# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/ # Using dir : base-artifacts ++ echo '# Baseline : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/' ++ echo '# Using dir : base-artifacts' ++ get_current_manifest BUILD_URL ++ get_manifest artifacts/manifest.sh BUILD_URL ++ set +x -# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/ +# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/74/ # Using dir : artifacts -+ echo '# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/73/' ++ echo '# Artifacts : https://ci.linaro.org/job/tcwg_bmk-code_speed-cpu2017rate--llvm-arm-master-O2-build/74/' + echo '# Using dir : artifacts' + echo '' + mkdir -p artifacts/notify @@ -105,13 +105,13 @@ + set +x + declare -Ag pw + '[' ignore = precommit ']' -+ check_source_changes # check_source_changes ++ check_source_changes + echo '# check_source_changes' ++ get_current_manifest '{rr[update_baseline]}' ++ get_manifest artifacts/manifest.sh '{rr[update_baseline]}' ++ set +x -+ '[' force '!=' init ']' ++ '[' onsuccess '!=' init ']' + IFS=' ' + read -r -a changed_components ++ print_changed_components @@ -121,19 +121,95 @@ +++ set -euf -o pipefail +++ local c delim= +++ for c in ${rr[components]} -+++ '[' xbaseline '!=' xbaseline ']' ++++ '[' xhttps://github.com/llvm/llvm-project.git#main '!=' xbaseline ']' ++++ echo -ne llvm ++++ delim=' ' +++ echo +++ for c in $(print_updated_components) ++++ get_current_git llvm_rev ++++ set -euf -o pipefail ++++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat artifacts/git/llvm_rev ++++ get_baseline_git llvm_rev ++++ set -euf -o pipefail ++++ local base_artifacts=base-artifacts ++++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' ++++ set -euf -o pipefail +x ++++ cat base-artifacts/git/llvm_rev +++ '[' x777a6e6f10b2b90496d248b7fa904fce834484be '!=' xa09e32e5fe13e3b64bef1defddf71a9e83022e76 ']' +++ echo -ne llvm +++ delim=' ' ++ echo + local c base_rev cur_rev c_commits -+ '[' 0 = 0 ']' -+ change_kind=no_change -# Debug traces : -# change_kind=no_change : - -+ changed_single_component= ++ '[' 1 = 0 ']' ++ '[' 1 = 1 ']' ++ changed_single_component=llvm +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ first_bad=777a6e6f10b2b90496d248b7fa904fce834484be +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ last_good=a09e32e5fe13e3b64bef1defddf71a9e83022e76 ++ local res ++ res=0 ++ git -C llvm rev-parse --verify HEAD ++ wait 46726 ++ assert_with_msg 'Cannot parse HEAD in repo llvm' '[' 0 = 0 ']' ++ set -euf -o pipefail +x ++ single_commit_p llvm ++ set -euf -o pipefail ++ local c=llvm ++ local base_rev cur_rev sha1 +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=a09e32e5fe13e3b64bef1defddf71a9e83022e76 +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=777a6e6f10b2b90496d248b7fa904fce834484be +++ git -C llvm rev-parse '777a6e6f10b2b90496d248b7fa904fce834484be^@' ++ for sha1 in $(git -C "$c" rev-parse "$cur_rev^@") ++ '[' f04aa1f8149a9c36e28f985400bcea3e1e5d624d = a09e32e5fe13e3b64bef1defddf71a9e83022e76 ']' ++ return 1 ++ change_kind=single_component + echo '# Debug traces :' -+ echo '# change_kind=no_change : ' +# Debug traces : +# change_kind=single_component : llvm ++ echo '# change_kind=single_component : llvm' ++ for c in "${changed_components[@]}" +++ get_baseline_git llvm_rev +++ set -euf -o pipefail +++ local base_artifacts=base-artifacts +++ assert_with_msg 'ERROR: No llvm_rev in baseline git' '[' -f base-artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat base-artifacts/git/llvm_rev ++ base_rev=a09e32e5fe13e3b64bef1defddf71a9e83022e76 +++ get_current_git llvm_rev +++ set -euf -o pipefail +++ assert_with_msg 'ERROR: No llvm_rev in current git' '[' -f artifacts/git/llvm_rev ']' +++ set -euf -o pipefail +x +++ cat artifacts/git/llvm_rev ++ cur_rev=777a6e6f10b2b90496d248b7fa904fce834484be +++ git -C llvm rev-list --count a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be ++ c_commits=923 +# rev for llvm : a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be (923 commits) ++ echo '# rev for llvm : a09e32e5fe13e3b64bef1defddf71a9e83022e76..777a6e6f10b2b90496d248b7fa904fce834484be (923 commits)' + echo '' + + setup_stages_to_run + '[' ignore = onregression ']' + '[' ignore = precommit ']' @@ -159,7 +235,7 @@ # post_interesting_commits + echo '# post_interesting_commits' + local stage=init -+ '[' no_change '!=' single_commit ']' ++ '[' single_component '!=' single_commit ']' + return + '[' init '!=' full ']' + echo 'Init stage ran successfully.' diff --git a/jenkins/rewrite.log b/jenkins/rewrite.log index fd61248..db6c2b6 100644 --- a/jenkins/rewrite.log +++ b/jenkins/rewrite.log @@ -1,27 +1,27 @@ ++ pwd ++ cat -+ remote_exec 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' ./jenkins-scripts/round-robin-baseline.sh '@@rr[top_artifacts]' artifacts __build_script tcwg_bmk-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100 ++ remote_exec 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ./jenkins-scripts/round-robin-baseline.sh '@@rr[top_artifacts]' artifacts __build_script tcwg_bmk-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100 + set -euf -o pipefail + local host -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -d: -f 1 -+ host=tcwg-jade-03 ++ host=tcwg-snow_bmk-02 + local port -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' ++ cut -s -d: -f 2 +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' + port= + local dir -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -s -d: -f 3 + dir=/home/tcwg-buildslave/workspace/tcwg_bmk_2 + local opts -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ cut -s -d: -f 4 -+ opts=-p56191 ++ opts=-p37754 + local env_vars -++ echo 'tcwg-jade-03::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p56191:ssh_host=tcwg-jade-03 ssh_port=56191' ++ cut -s -d: -f 5 -+ env_vars='ssh_host=tcwg-jade-03 ssh_port=56191' +++ echo 'tcwg-snow_bmk-02::/home/tcwg-buildslave/workspace/tcwg_bmk_2:-p37754:ssh_host=tcwg-snow_bmk-02 ssh_port=37754' ++ env_vars='ssh_host=tcwg-snow_bmk-02 ssh_port=37754' + shift + local -a cmd + cmd=() @@ -59,7 +59,7 @@ + cmd+=("$(printf '%q' "$i")") ++ printf %q 100 ++ printf %q /home/tcwg-buildslave/workspace/tcwg_bmk_2 -+ ssh -p56191 tcwg-jade-03 'export ssh_host=tcwg-jade-03 ssh_port=56191 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_2 && exec ./jenkins-scripts/round-robin-baseline.sh @@rr\[top_artifacts\] artifacts __build_script tcwg_bmk-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100' ++ ssh -p37754 tcwg-snow_bmk-02 'export ssh_host=tcwg-snow_bmk-02 ssh_port=37754 && cd /home/tcwg-buildslave/workspace/tcwg_bmk_2 && exec ./jenkins-scripts/round-robin-baseline.sh @@rr\[top_artifacts\] artifacts __build_script tcwg_bmk-build.sh __push_base_artifacts true __rewrite_base_artifacts true __rewrite_num 100' + declare -g rewrite_base_artifacts_first=true + true + update_baseline diff --git a/jenkins/run-build.env b/jenkins/run-build.env index 86d5fbb..c00b07d 100644 --- a/jenkins/run-build.env +++ b/jenkins/run-build.env @@ -1,14 +1,15 @@ -build_name="#73" +build_name="#74" docker_opts=(--distro default --arch armhf --node -tcwg-jade-03 +tcwg-snow_bmk-02 --ssh_info true ) source build_container.sh trap "cleanup_all_containers" EXIT -build_name="#73" -branch_opt=() -build_name="#73-R# leela_r_base.default,541.leela_r failed to run-force" +build_name="#74-llvm" +branch_opt=(==rr\[llvm_git\] +https://github.com/llvm/llvm-project.git#main ) +build_name="#74-llvm-R1" -- cgit v1.2.3