Skip to content

Instantly share code, notes, and snippets.

@fcard
Last active September 12, 2020 20:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fcard/f4aec7e567da2a8e97962d5d3f025ad4 to your computer and use it in GitHub Desktop.
Save fcard/f4aec7e567da2a8e97962d5d3f025ad4 to your computer and use it in GitHub Desktop.
popbench.sh: benchmarks for pop.sh
/benchmarks
/bench

All Times

Generated with

$ sh popbench_run.sh --fast

This simulates calling each function 10000 times with each argument count.

value counts 1 5 10 100 1000 10000
bash/subarray 0m 0.157s 0m 0.203s 0m 0.244s 0m 1.475s 0m19.543s 3m26.949s
zsh/subarray 0m 0.225s 0m 0.246s 0m 0.248s 0m 0.486s 0m 3.868s 0m41.325s
bash/bash-unset 0m 0.907s 0m 0.774s 0m 0.818s 0m 2.401s 0m19.370s 3m15.918s
zsh/zsh-unset 0m 0.745s 0m 0.576s 0m 0.532s 0m 0.778s 0m 4.707s 0m41.935s
dash/basic 0m 0.149s 0m 0.290s 0m 0.336s 0m 4.077s 1m 3.991s 69m10.859s
ash/basic 0m 0.143s 0m 0.226s 0m 0.372s 0m 2.986s 0m57.807s 69m 5.373s
ksh/basic 0m 0.394s 0m 0.689s 0m 0.874s 0m 4.918s 0m53.345s 16m26.308s
bash/basic 0m 1.935s 0m 1.330s 0m 2.069s 0m11.108s 6m36.475s 523m 2.542s
zsh/basic 0m 0.717s 0m 0.988s 0m 1.178s 0m 6.176s 2m38.037s 223m54.796s
ksh/basic-ext 0m 0.341s 0m 0.425s 0m 0.556s 0m 2.349s 0m19.849s 4m38.749s
bash/basic-ext 0m 0.610s 0m 0.754s 0m 0.862s 0m 6.006s 1m14.119s 50m30.017s
zsh/basic-ext 0m 0.491s 0m 0.661s 0m 0.771s 0m 2.764s 0m55.845s 53m24.479s
dash/final 0m 0.332s 0m 0.218s 0m 0.268s 0m 2.306s 0m15.492s 1m12.351s
ash/final 0m 0.111s 0m 0.192s 0m 0.325s 0m 2.575s 0m16.449s 1m10.999s
ksh/final 0m 0.384s 0m 0.518s 0m 0.754s 0m 3.942s 0m21.462s 1m45.162s
bash/final 0m 0.369s 0m 0.433s 0m 0.606s 0m 1.936s 0m18.432s 3m16.546s
zsh/final 0m 0.423s 0m 0.449s 0m 0.423s 0m 0.673s 0m 3.728s 0m36.444s
bash/g100 0m 0.329s 0m 0.430s 0m 1.057s 0m 5.813s 1m14.039s 50m27.588s
dash/g100 0m 0.101s 0m 0.102s 0m 0.213s 0m 1.285s 0m10.952s 2m32.395s
ash/g100 0m 0.094s 0m 0.106s 0m 0.232s 0m 1.194s 0m10.938s 2m31.385s
ksh/g100 0m 0.280s 0m 0.310s 0m 0.717s 0m 2.502s 0m24.781s 4m22.427s
zsh/g100 0m 0.620s 0m 0.492s 0m 0.782s 0m 3.061s 1m13.832s 89m13.652s
bash/g100-ext 0m 0.280s 0m 0.383s 0m 0.972s 0m 5.780s 1m10.797s 45m42.810s
ksh/g100-ext 0m 0.276s 0m 0.300s 0m 0.643s 0m 2.519s 0m25.967s 4m28.754s
dash/posix 0m 0.171s 0m 0.290s 0m 0.447s 0m 3.610s 0m17.376s 1m 8.852s
ash/posix 0m 0.109s 0m 0.192s 0m 0.285s 0m 2.457s 0m14.942s 1m10.062s
ksh/posix 0m 0.416s 0m 0.581s 0m 0.768s 0m 4.677s 0m18.790s 1m40.407s
bash/posix 0m 0.409s 0m 0.739s 0m 1.145s 0m10.048s 0m58.449s 40m33.024s
zsh/posix 0m 0.718s 0m 0.913s 0m 1.182s 0m 6.200s 0m46.516s 42m27.224s
bash/pure-tool 0m13.420s 0m17.283s 0m14.500s 0m20.177s 0m58.152s 39m41.456s
dash/pure-tool 0m12.053s 0m11.008s 0m15.362s 0m12.033s 0m20.204s 1m 7.662s
ash/pure-tool 0m13.209s 0m 9.390s 0m 9.738s 0m10.369s 0m15.917s 1m10.476s
ksh/pure-tool 0m10.223s 0m11.032s 0m10.549s 0m11.457s 0m19.668s 1m40.265s
zsh/pure-tool 0m13.763s 0m13.563s 0m13.340s 0m14.102s 0m48.371s 42m49.117s
bash/pure-ctool 0m 6.809s 0m 6.859s 0m 6.637s 0m10.272s 0m52.334s 40m40.125s
dash/pure-ctool 0m 3.880s 0m 3.827s 0m 3.721s 0m 4.357s 0m 9.206s 0m56.823s
ash/pure-ctool 0m 4.282s 0m 4.066s 0m 4.341s 0m 4.752s 0m 9.541s 0m56.756s
ksh/pure-ctool 0m 6.318s 0m 7.031s 0m 6.486s 0m 7.357s 0m14.518s 1m33.253s
zsh/pure-ctool 0m 5.951s 0m 6.036s 0m 6.081s 0m 7.294s 0m39.701s 43m 7.165s
bash/tool 0m 0.283s 0m 0.382s 0m 0.896s 0m 5.859s 0m59.353s 40m32.236s
dash/tool 0m 0.079s 0m 0.104s 0m 0.232s 0m 1.163s 0m15.033s 1m 9.174s
ash/tool 0m 0.079s 0m 0.096s 0m 0.194s 0m 1.166s 0m15.887s 1m 7.822s
ksh/tool 0m 0.298s 0m 0.309s 0m 0.834s 0m 3.063s 0m18.253s 1m39.460s
zsh/tool 0m 0.683s 0m 0.740s 0m 1.249s 0m 4.532s 1m 5.296s 42m57.209s
bash/ctool 0m 0.283s 0m 0.362s 0m 0.845s 0m 5.529s 0m51.037s 39m 7.538s
dash/ctool 0m 0.086s 0m 0.110s 0m 0.186s 0m 1.159s 0m 9.371s 0m55.712s
ash/ctool 0m 0.089s 0m 0.096s 0m 0.198s 0m 1.219s 0m 9.346s 0m55.922s
ksh/ctool 0m 0.259s 0m 0.290s 0m 0.647s 0m 3.156s 0m13.438s 1m30.011s
zsh/ctool 0m 0.441s 0m 0.608s 0m 1.039s 0m 2.987s 0m40.164s 41m50.496s

Functions

basic

The simplest function to compute the pop expression, uses a naive algorithm to generate a list of parameters minus the last one.

$ sh popgen.sh
value counts 1 5 10 100 1000 10000
dash 0m 0.149s 0m 0.290s 0m 0.336s 0m 4.077s 1m 3.991s 69m10.859s
ash 0m 0.143s 0m 0.226s 0m 0.372s 0m 2.986s 0m57.807s 69m 5.373s
ksh 0m 0.394s 0m 0.689s 0m 0.874s 0m 4.918s 0m53.345s 16m26.308s
bash 0m 1.935s 0m 1.330s 0m 2.069s 0m11.108s 6m36.475s 523m 2.542s
zsh 0m 0.717s 0m 0.988s 0m 1.178s 0m 6.176s 2m38.037s 223m54.796s

basic-ext

The same as basic but use bash/ksh/zsh extensions. Causes immense speed ups in bash and ksh by using the += operator instead of concatenating strings with =.

$ sh popgen.sh -+
value counts 1 5 10 100 1000 10000
ksh 0m 0.341s 0m 0.425s 0m 0.556s 0m 2.349s 0m19.849s 4m38.749s
bash 0m 0.610s 0m 0.754s 0m 0.862s 0m 6.006s 1m14.119s 50m30.017s
zsh 0m 0.491s 0m 0.661s 0m 0.771s 0m 2.764s 0m55.845s 53m24.479s

posix

A function that is meant to be small but efficient on POSIX shells. Uses the basic algorithm for arguments less than 500, otherwise use external tools.

$ sh popgen.sh -t500
value counts 1 5 10 100 1000 10000
dash 0m 0.171s 0m 0.290s 0m 0.447s 0m 3.610s 0m17.376s 1m 8.852s
ash 0m 0.109s 0m 0.192s 0m 0.285s 0m 2.457s 0m14.942s 1m10.062s
ksh 0m 0.416s 0m 0.581s 0m 0.768s 0m 4.677s 0m18.790s 1m40.407s
bash 0m 0.409s 0m 0.739s 0m 1.145s 0m10.048s 0m58.449s 40m33.024s
zsh 0m 0.718s 0m 0.913s 0m 1.182s 0m 6.200s 0m46.516s 42m27.224s

subarray

Uses the subarray method of removing the last parameter, i.e. set -- "${@:1:$# - 1}".

$ sh popgen.sh -+ -@
value counts 1 5 10 100 1000 10000
bash 0m 0.157s 0m 0.203s 0m 0.244s 0m 1.475s 0m19.543s 3m26.949s
zsh 0m 0.225s 0m 0.246s 0m 0.248s 0m 0.486s 0m 3.868s 0m41.325s

final

Combines subarray and posix, using the former for zsh and bash and the latter for the rest.

$ sh popgen.sh -@ -t500
value counts 1 5 10 100 1000 10000
dash 0m 0.332s 0m 0.218s 0m 0.268s 0m 2.306s 0m15.492s 1m12.351s
ash 0m 0.111s 0m 0.192s 0m 0.325s 0m 2.575s 0m16.449s 1m10.999s
ksh 0m 0.384s 0m 0.518s 0m 0.754s 0m 3.942s 0m21.462s 1m45.162s
bash 0m 0.369s 0m 0.433s 0m 0.606s 0m 1.936s 0m18.432s 3m16.546s
zsh 0m 0.423s 0m 0.449s 0m 0.423s 0m 0.673s 0m 3.728s 0m36.444s

g100

Used to test an alternative to external tools, concatenating the strings in batches.

$ sh popgen.sh -x9 -g10,100
value counts 1 5 10 100 1000 10000
bash 0m 0.329s 0m 0.430s 0m 1.057s 0m 5.813s 1m14.039s 50m27.588s
dash 0m 0.101s 0m 0.102s 0m 0.213s 0m 1.285s 0m10.952s 2m32.395s
ash 0m 0.094s 0m 0.106s 0m 0.232s 0m 1.194s 0m10.938s 2m31.385s
ksh 0m 0.280s 0m 0.310s 0m 0.717s 0m 2.502s 0m24.781s 4m22.427s
zsh 0m 0.620s 0m 0.492s 0m 0.782s 0m 3.061s 1m13.832s 89m13.652s

g100-ext

Same as g100 but uses bash/ksh/zsh extensions, specifically the += string concatenation.

$ sh popgen.sh -+ -x9 -g10,100
value counts 1 5 10 100 1000 10000
bash 0m 0.280s 0m 0.383s 0m 0.972s 0m 5.780s 1m10.797s 45m42.810s
ksh 0m 0.276s 0m 0.300s 0m 0.643s 0m 2.519s 0m25.967s 4m28.754s

tool

Combines batch concatenation with external tools. Merges all types of universal optimizations for a complex but consistently speedy function.

$ sh popgen.sh -x9 -g10 -t1000
value counts 1 5 10 100 1000 10000
bash 0m 0.283s 0m 0.382s 0m 0.896s 0m 5.859s 0m59.353s 40m32.236s
dash 0m 0.079s 0m 0.104s 0m 0.232s 0m 1.163s 0m15.033s 1m 9.174s
ash 0m 0.079s 0m 0.096s 0m 0.194s 0m 1.166s 0m15.887s 1m 7.822s
ksh 0m 0.298s 0m 0.309s 0m 0.834s 0m 3.063s 0m18.253s 1m39.460s
zsh 0m 0.683s 0m 0.740s 0m 1.249s 0m 4.532s 1m 5.296s 42m57.209s

ctool

Same as tool but uses the command popsh instead of seq/sed. This benchmark uses the implementation contained in popsh.c.

$ sh popgen.sh -x9 -g10 -t1000
value counts 1 5 10 100 1000 10000
bash 0m 0.283s 0m 0.362s 0m 0.845s 0m 5.529s 0m51.037s 39m 7.538s
dash 0m 0.086s 0m 0.110s 0m 0.186s 0m 1.159s 0m 9.371s 0m55.712s
ash 0m 0.089s 0m 0.096s 0m 0.198s 0m 1.219s 0m 9.346s 0m55.922s
ksh 0m 0.259s 0m 0.290s 0m 0.647s 0m 3.156s 0m13.438s 1m30.011s
zsh 0m 0.441s 0m 0.608s 0m 1.039s 0m 2.987s 0m40.164s 41m50.496s

pure-tool

Uses only external tools. Has the advantage of being a one-liner but the disadvantage of a high overhead, so it's inefficient for low argument counts.

$ sh popgen.sh -t0
value counts 1 5 10 100 1000 10000
bash 0m13.420s 0m17.283s 0m14.500s 0m20.177s 0m58.152s 39m41.456s
dash 0m12.053s 0m11.008s 0m15.362s 0m12.033s 0m20.204s 1m 7.662s
ash 0m13.209s 0m 9.390s 0m 9.738s 0m10.369s 0m15.917s 1m10.476s
ksh 0m10.223s 0m11.032s 0m10.549s 0m11.457s 0m19.668s 1m40.265s
zsh 0m13.763s 0m13.563s 0m13.340s 0m14.102s 0m48.371s 42m49.117s

pure-ctool

Same as pure-tool but uses popsh.

$ sh popgen.sh -c -t0
value counts 1 5 10 100 1000 10000
bash 0m 6.809s 0m 6.859s 0m 6.637s 0m10.272s 0m52.334s 40m40.125s
dash 0m 3.880s 0m 3.827s 0m 3.721s 0m 4.357s 0m 9.206s 0m56.823s
ash 0m 4.282s 0m 4.066s 0m 4.341s 0m 4.752s 0m 9.541s 0m56.756s
ksh 0m 6.318s 0m 7.031s 0m 6.486s 0m 7.357s 0m14.518s 1m33.253s
zsh 0m 5.951s 0m 6.036s 0m 6.081s 0m 7.294s 0m39.701s 43m 7.165s
# All Times
Generated with
```sh
$ sh popbench_run.sh --fast
```
This simulates calling each function 10000 times with each argument count.
<table:all>
# Functions
## basic
The simplest function to compute the pop expression, uses a naive algorithm to
generate a list of parameters minus the last one.
```sh
$ sh popgen.sh
```
<table:basic>
## basic-ext
The same as basic but use bash/ksh/zsh extensions. Causes immense speed ups in
bash and ksh by using the `+=` operator instead of concatenating strings with `=`.
```sh
$ sh popgen.sh -+
```
<table:basic-ext>
## posix
A function that is meant to be small but efficient on POSIX shells.
Uses the basic algorithm for arguments less than 500, otherwise use external tools.
```sh
$ sh popgen.sh -t500
```
<table:posix>
## subarray
Uses the subarray method of removing the last parameter, i.e. `set -- "${@:1:$# - 1}"`.
```sh
$ sh popgen.sh -+ -@
```
<table:subarray>
## final
Combines subarray and posix, using the former for zsh and bash and the latter for the rest.
```sh
$ sh popgen.sh -@ -t500
```
<table:final>
## g100
Used to test an alternative to external tools, concatenating the strings in batches.
```sh
$ sh popgen.sh -x9 -g10,100
```
<table:g100>
## g100-ext
Same as `g100` but uses bash/ksh/zsh extensions, specifically the `+=` string concatenation.
```sh
$ sh popgen.sh -+ -x9 -g10,100
```
<table:g100-ext>
## tool
Combines batch concatenation with external tools. Merges all types of universal
optimizations for a complex but consistently speedy function.
```sh
$ sh popgen.sh -x9 -g10 -t1000
```
<table:tool>
## ctool
Same as `tool` but uses the command `popsh` instead of `seq`/`sed`. This benchmark uses the implementation contained in `popsh.c`.
```sh
$ sh popgen.sh -x9 -g10 -t1000
```
<table:ctool>
## pure-tool
Uses only external tools. Has the advantage of being a one-liner but the disadvantage of a high overhead, so it's inefficient for low argument counts.
```sh
$ sh popgen.sh -t0
```
<table:pure-tool>
## pure-ctool
Same as pure-tool but uses `popsh`.
```sh
$ sh popgen.sh -c -t0
```
<table:pure-ctool>
MIT License
Copyright (c) 2020 fcard
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
# remove last parameter from parameter list
# usage: pop $#; eval "$POP_EXPR"
pop() {
local n=$(($1 - ${2:-1}))
if [ -n "$ZSH_VERSION" -o -n "$BASH_VERSION" ]; then
POP_EXPR='set -- "${@:1:'$n'}"'
elif [ $n -ge 500 ]; then
POP_EXPR="set -- $(seq -s " " 1 $n | sed 's/[0-9]\+/"${\0}"/g')"
else
local index=0
local arguments=""
while [ $index -lt $n ]; do
index=$((index+1))
arguments="$arguments \"\${$index}\""
done
POP_EXPR="set -- $arguments"
fi
}
pop_next() {
if [ -n "$BASH_VERSION" -o -n "$ZSH_VERSION" ]; then
local np="${POP_EXPR##*:}"
np="${np%\}*}"
POP_EXPR="${POP_EXPR%:*}:$((np == 0 ? 0 : np - 1))}\""
return
fi
POP_EXPR="${POP_EXPR% \"*}"
}
test_pop() {
pop $#
eval "$POP_EXPR"
echo "$@"
}
#!/usr/bin/env sh
. ./popksh.sh
. ./poputil.sh
FunctionFiles="all ext array zsh bash"
main() {
local benchmark_type='' func='' shell='' iterations=10000 argnum=1000 pattern='\0'
local output=/dev/stdout verbose=false multiply=''
set_benchmark() {
case "$1" in
posix-dash|posix-bash|gen-dash|gen-bash|subarray-bash)
benchmark_type=$1
;;
*)
echo "Invalid benchmark type: $1" >&2
return 1
;;
esac
}
set_argnum() {
argnum="$(echo "$1" | sed -e 's/,/ /g')"
}
set_shell() {
case "$1" in
bash|zsh|dash|ksh|ash)
shell="$1"
;;
*)
echo "Invalid shell: $1" >&2
return 1
;;
esac
}
set_function() {
case "$1" in
''|[0-9]*|*[!a-zA-Z0-9-]*) echo "invalid function: $1" >&2 ;;
final) func="test_pop" ;;
shift) func="test_shift" ;;
*-*) func="test_${1%-*}_${1#*-}_pop" ;;
*) func="test_$1_pop" ;;
esac
}
while [ $# -gt 0 ]; do
case "$1" in
--shell=*)
set_shell "${1#--shell=}"
shift
;;
-s)
set_shell "$2"
shift 2
;;
--zsh|--bash|--dash|--ksh|--ash)
shell=${1#--}
shift
;;
--function=*)
set_function "${1#--function=}"
shift
;;
-f)
set_function "$2"
shift 2
;;
-f*)
set_function "${1#-f}"
shift
;;
--list-functions|-l)
local file line
printf 'final'
for file in $FunctionFiles; do
while read -r line; do
case "$line" in
*test*_pop\(\)*)
local name
name="${line#*test_}"
name="${name%_pop*}"
printf ' %s' "$name" | sed 's/_/-/g'
;;
esac
done <"popfunctions_$file.sh"
done
printf '\n'
shift
;;
--output=*)
output="${1#--output=}"
shift
;;
-o)
output="$2"
shift 2
;;
--benchmark=*)
set_benchmark "${1#--benchmark=}"
shift
;;
-b)
set_benchmark "$2"
shift 2
;;
-b*)
set_benchmark "${1#-b}"
shift
;;
--iterations=*)
set_number iterations "${1#--iterations=}"
shift
;;
-i)
set_number iterations "$2"
shift 2
;;
-i*)
set_number iterations "${1#-i}"
shift
;;
--argument-numbers=*)
set_number_list argnum "${1#--argument-number=}"
shift
;;
-n)
set_number_list argnum "$2"
shift 2
;;
-n*)
set_number_list argnum "${1#-n}"
shift
;;
--argument-pattern=*)
pattern="${#1--argument-pattern=}"
shift
;;
--argument-pattern|-a)
pattern="$2"
shift 2
;;
-a*)
pattern="${1#-a}"
shift
;;
--verbose|-v)
verbose=true
shift
;;
--multiply-timer=*)
set_number multiply "${1#--multiply-timer=}"
shift
;;
--multiply-timer|-x)
set_number multiply "$2"
shift 2
;;
-x*)
set_number multiply "${1#-x}"
shift
;;
*)
echo "invalid argument: $1"
shift
;;
esac
done
if [ -n "$benchmark_type" ]; then
case "$benchmark_type" in
posix-dash)
shell=dash
func=posix_pop
;;
posix-bash)
shell=bash
func=posix_pop
;;
gen-dash)
shell=dash
func=test_pop
;;
gen-bash)
shell=bash
func=test_pop
;;
subarray-bash)
shell=bash
func=subarray_pop
;;
esac
fi
if [ -n "$shell" -a -n "$func" ]; then
export LC_ALL=C
benchmark $shell $func $iterations $pattern "$output" $verbose "$multiply" $argnum
fi
}
benchexpr() {
local func="$1"
local times="$2"
local args="$3"
local arg="${4:-\0}"
local multiply="$5"
printf '%s' "{
__i=0
printf '\nval $args\n'
start=\$(date +%s.%N)
while [ \$__i -lt $times ]; do
$func $(seq -s ' ' 1 $args | sed -e "s/\(.*\)/$arg/");
__i=\$((__i+1))
done
finish=\$(date +%s.%N)
format_elapsed \$start \$finish $multiply
}"
}
test_expr() {
local shell="$1" func="$2" args="$3" files="$4"
if [ "$func" = "test_shift" ]; then
return 0
fi
local test="$(printf '%s' "$func $(seq -s ' ' 1 "$args") || exit 1" | handle_ksh "$shell" $files -)"
local test_result="$(printf '%s' "$test" | "$shell")"
if [ "$test_result" != "$(seq -s ' ' 1 $((args - 1)))" ]; then
echo "error: test failed! got the following results: $test_result" >&2
return 1
else
return 0
fi
}
benchmark() {
local shell="$1" func="$2" iter="$3" pat="$4" output="$5" verbose="$6" multiply="$7"
local files="poputil.sh pop.sh popfunctions.sh"
local val='' real='' user='' sys='' int=''
shift 7
for args in "$@"; do
test_expr "$shell" "$func" "$args" "$files" || return 1
code=$(benchexpr "$func" "$iter" "$args" "$pat" "$multiply" | handle_ksh "$shell" $files -)
while IFS="" read -r line; do
case "$line" in
val*) val="$val $(printf '% 4d%-6s' "${line#val}" '')" ;;
real*) real="$real$(format_time ${line#real} $multiply)" ;;
user*) user="$user$(format_time ${line#user} $multiply)" ;;
sys*) sys="$sys$(format_time ${line#sys} $multiply)" ;;
int*) int="$int${line#int}" ;;
esac
if $verbose; then
echo "$shell/$func: $line"
fi
done <<WHILE
$( { printf '%s' "$code" | time -p $shell; } 2>&1 )
WHILE
done
echo "val $val" >>"$output"
echo "real $real" >>"$output"
echo "user $user" >>"$output"
echo "sys $sys" >>"$output"
echo "int $int" >>"$output"
}
main "$@"
Files="a b c d e f g h i j k l m n o p q r s"
Fast=false
VeryFast=false
NoMultiply=false
existing_files() {
for file in $Files; do
if [ -f "bench/$file" ]; then
echo "bench/$file"
fi
done
}
procs() {
for file in $Files; do
eval "echo \$$file"
done
}
cleanup() {
echo "cleaning up..."
for file in $(existing_files); do
rm $file
done
for proc in $(procs); do
if kill -0 $proc 2>/dev/null; then
eval "echo \"ending process \$name$proc\""
kill $proc
fi
done
pkill -P $$
exit 1
}
trap 'cleanup' KILL QUIT INT TERM
bench() {
local shell="$1"
local func="$2"
local letter="$3"
local multiply="${4:-1}"
local iter=10000
if [ -n "$multiply" ]; then
$NoMultiply && multiply=1
$Fast && multiply=$((multiply * 10))
$VeryFast && multiply=$((multiply * 10))
iter=$((iter / multiply))
fi
echo "$shell/$func" >bench/$letter
{
echo "starting $shell/$func..."
sh popbench.sh ${multiply:+-x}$multiply -s $shell -f $func -i $iter -n 1,5,10,100,1000,10000 -o bench/$letter &
trap "{ kill -9 $!; exit 1; }" KILL QUIT INT TERM
wait
echo "finished $shell/$func!"
} &
eval "$letter=$!"
eval "name$!=$shell/$func"
eval "name_$letter=$shell/$func"
}
bench_group() {
local func="$1"
$func
results="${2:-bench/results}"
if [ -n "$(existing_files)" ]; then
printf '' >$results
for file in $(existing_files); do
local name="$(eval "printf '%-16s' \$name_${file#bench/}")"
name="$(echo "$name" | sed 's/\//\\\//')"
while IFS="" read -r line; do
case "$line" in
int*) echo "$line" | sed "s/int/$name/" >>$results ;;
esac
done <"$file"
done
rm $(existing_files)
fi
}
print_value_count() {
printf '%-16s' 'value count'
for value in "$@"; do
printf ' %13s' "$(printf '%-3s' "$value")"
done
printf '\n'
}
first() {
printf '%s' "$1"
}
main() {
local all=false any=false
local benchmarks=''
while [ $# -gt 0 ]; do
case "$1" in
--fast|-f)
Fast=true
shift
;;
--very-fast|-v)
Fast=true
VeryFast=true
shift
;;
--no-multiply|-n)
NoMultiply=true
shift
;;
all)
all=true
shift
;;
final|posix|array|basic|g100|tool|eval)
any=true
benchmarks="$benchmarks $1"
shift
;;
pure-tool)
any=true
benchmarks="$benchmarks $(echo "$1" | tr '-' '_')"
shift
;;
esac
done
if $all || ! $any; then
all=true
benchmarks=" final posix array basic g100 tool pure_tool"
fi
mkdir -p bench
for benchmark in $benchmarks; do
bench_group $benchmark bench/$benchmark
done
wait
print_value_count 1 5 10 100 1000 10000 >benchmarks.temp
cat bench/* >>benchmarks.temp
rm -r bench
if [ -f benchmarks ] && ! $all; then
sed -i '1d' benchmarks.temp
printf '' >benchmarks.temp2
local line new_line key
while IFS= read -r line; do
key="$(first $line)"
new_line="$(grep -e "^$key " benchmarks.temp 2>/dev/null)"
if [ -n "$new_line" ]; then
printf '%s\n' "$new_line" >>benchmarks.temp2
sed -i "/^$(echo "$key" | sed 's/\//\\\//g') /d" benchmarks.temp
else
printf '%s\n' "$line" >>benchmarks.temp2
fi
done <benchmarks
cat benchmarks.temp2 benchmarks.temp >benchmarks
rm benchmarks.temp benchmarks.temp2
else
cat benchmarks.temp >benchmarks
rm benchmarks.temp
fi
}
final() {
bench dash final a; wait
bench ash final b; wait
bench ksh final c; wait
bench bash final d; wait
bench zsh final e; wait
}
posix() {
bench dash posix a; wait
bench ash posix b; wait
bench ksh posix c; wait
bench bash posix d; wait
bench zsh posix e 10; wait
}
array() {
bench bash subarray a
bench zsh subarray b
wait
bench bash bash-unset c
bench zsh zsh-unset d
wait
}
basic() {
bench dash basic a 5
bench ash basic b 5
bench ksh basic c
wait
bench bash basic d 50
bench zsh basic e 25
wait
bench ksh basic-ext f
bench bash basic-ext g 10
bench zsh basic-ext h 10
wait
}
g100() {
bench bash g100 a
bench dash g100 b
bench ash g100 c
wait
bench ksh g100 d
bench zsh g100 e 10
wait
bench bash g100-ext g
bench ksh g100-ext h
wait
}
tool() {
bench bash tool a; wait
bench dash tool b; wait
bench ash tool c; wait
bench ksh tool d; wait
bench zsh tool e 10; wait
bench bash ctool f; wait
bench dash ctool g; wait
bench ash ctool h; wait
bench ksh ctool i; wait
bench zsh ctool j 10; wait
}
pure_tool() {
bench bash pure-tool a; wait
bench dash pure-tool b; wait
bench ash pure-tool c; wait
bench ksh pure-tool d; wait
bench zsh pure-tool e 10; wait
bench bash pure-ctool f; wait
bench dash pure-ctool g; wait
bench ash pure-ctool h; wait
bench ksh pure-ctool i; wait
bench zsh pure-ctool j 10; wait
}
eval() {
bench zsh eval-zsh a 10; wait
bench bash eval-bash b 10; wait
}
main "$@"
. ./popfunctions_all.sh
if [ -n "$BASH_VERSION" -o -n "$ZSH_VERSION" ]; then
. ./popfunctions_array.sh
fi
if [ -n "$BASH_VERSION" -o -n "$ZSH_VERSION" -o -n "$KSH_VERSION" ]; then
. ./popfunctions_ext.sh
fi
if [ -n "$BASH_VERSION" ]; then
. ./popfunctions_bash.sh
elif [ -n "$ZSH_VERSION" ]; then
. ./popfunctions_zsh.sh
fi
test_shift() {
shift
}
test_inline_basic_pop() {
local index=0 index2 index3 index4
local arguments=""
while [ $index -lt $(($#-1)) ]; do
index=$((index+1))
arguments="$arguments \"\$$index\""
done
eval "set -- $arguments"
}
subshell_basic_pop() {
local index=0
local arguments=""
while [ $index -lt $(($1-1)) ]; do
index=$((index+1))
arguments="$arguments \"\$$index\""
done
echo "$arguments"
}
test_subshell_basic_pop() {
eval "set -- $(subshell_basic_pop $#)"
echo "$@"
}
basic_pop() {
local n=$(($1 - ${2:-1} + 1))
local index=0
local arguments=""
while [ $index -lt $((n - 1)) ]; do
index=$((index+1))
arguments="$arguments \"\${$index}\""
done
POP_EXPR="set -- $arguments"
}
test_basic_pop() {
basic_pop $#
eval "$POP_EXPR"
echo "$@"
}
basic_pop_next() {
POP_EXPR="${POP_EXPR% \"*}"
}
batch_ctool_pop10() {
local n="$1"
local arguments=''
local index=0 i1=1 i2=2 i3=3 i4=4 i5=5 i6=6 i7=7 i8=8 i9=9 i10=10
while [ $index -lt $((n-10)) ]; do
arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\""
index=$i10
i1=$((index+1))
i2=$((index+2))
i3=$((index+3))
i4=$((index+4))
i5=$((index+5))
i6=$((index+6))
i7=$((index+7))
i8=$((index+8))
i9=$((index+9))
i10=$((index+10))
done
case $((n%10)) in
2) arguments="$arguments \"\${$i1}\"" ;;
3) arguments="$arguments \"\${$i1}\" \"\${$i2}\"" ;;
4) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\"" ;;
5) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\"" ;;
6) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\"" ;;
7) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\"" ;;
8) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\"" ;;
9) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\"" ;;
0) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\"" ;;
esac
POP_EXPR="set -- $arguments"
}
ctool_pop() {
local n=$(($1 - ${2:-1} + 1))
case $n in
1) POP_EXPR='set -- ' ;;
2) POP_EXPR='set -- "${1}"' ;;
3) POP_EXPR='set -- "${1}" "${2}"' ;;
4) POP_EXPR='set -- "${1}" "${2}" "${3}"' ;;
5) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}"' ;;
6) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}"' ;;
7) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}"' ;;
8) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}" "${7}"' ;;
9) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}" "${7}" "${8}"' ;;
*)
if [ $1 -ge 1000 ]; then
POP_EXPR="set -- $(popsh $n)"
else
batch_ctool_pop10 $n
fi
;;
esac
}
ctool_pop_next() {
POP_EXPR="${POP_EXPR% \"*}"
}
test_ctool_pop() {
ctool_pop $#
eval "$POP_EXPR"
echo "$@"
}
batch_g100_pop100() {
local n="$1"
local arguments=''
local index=0 i1=1 i2=2 i3=3 i4=4 i5=5 i6=6 i7=7 i8=8 i9=9 i10=10 i11=11 i12=12 i13=13 i14=14 i15=15 i16=16 i17=17 i18=18 i19=19 i20=20 i21=21 i22=22 i23=23 i24=24 i25=25 i26=26 i27=27 i28=28 i29=29 i30=30 i31=31 i32=32 i33=33 i34=34 i35=35 i36=36 i37=37 i38=38 i39=39 i40=40 i41=41 i42=42 i43=43 i44=44 i45=45 i46=46 i47=47 i48=48 i49=49 i50=50 i51=51 i52=52 i53=53 i54=54 i55=55 i56=56 i57=57 i58=58 i59=59 i60=60 i61=61 i62=62 i63=63 i64=64 i65=65 i66=66 i67=67 i68=68 i69=69 i70=70 i71=71 i72=72 i73=73 i74=74 i75=75 i76=76 i77=77 i78=78 i79=79 i80=80 i81=81 i82=82 i83=83 i84=84 i85=85 i86=86 i87=87 i88=88 i89=89 i90=90 i91=91 i92=92 i93=93 i94=94 i95=95 i96=96 i97=97 i98=98 i99=99 i100=100
while [ $index -lt $((n-100)) ]; do
arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\" \"\${$i96}\" \"\${$i97}\" \"\${$i98}\" \"\${$i99}\" \"\${$i100}\""
index=$i100
i1=$((index+1))
i2=$((index+2))
i3=$((index+3))
i4=$((index+4))
i5=$((index+5))
i6=$((index+6))
i7=$((index+7))
i8=$((index+8))
i9=$((index+9))
i10=$((index+10))
i11=$((index+11))
i12=$((index+12))
i13=$((index+13))
i14=$((index+14))
i15=$((index+15))
i16=$((index+16))
i17=$((index+17))
i18=$((index+18))
i19=$((index+19))
i20=$((index+20))
i21=$((index+21))
i22=$((index+22))
i23=$((index+23))
i24=$((index+24))
i25=$((index+25))
i26=$((index+26))
i27=$((index+27))
i28=$((index+28))
i29=$((index+29))
i30=$((index+30))
i31=$((index+31))
i32=$((index+32))
i33=$((index+33))
i34=$((index+34))
i35=$((index+35))
i36=$((index+36))
i37=$((index+37))
i38=$((index+38))
i39=$((index+39))
i40=$((index+40))
i41=$((index+41))
i42=$((index+42))
i43=$((index+43))
i44=$((index+44))
i45=$((index+45))
i46=$((index+46))
i47=$((index+47))
i48=$((index+48))
i49=$((index+49))
i50=$((index+50))
i51=$((index+51))
i52=$((index+52))
i53=$((index+53))
i54=$((index+54))
i55=$((index+55))
i56=$((index+56))
i57=$((index+57))
i58=$((index+58))
i59=$((index+59))
i60=$((index+60))
i61=$((index+61))
i62=$((index+62))
i63=$((index+63))
i64=$((index+64))
i65=$((index+65))
i66=$((index+66))
i67=$((index+67))
i68=$((index+68))
i69=$((index+69))
i70=$((index+70))
i71=$((index+71))
i72=$((index+72))
i73=$((index+73))
i74=$((index+74))
i75=$((index+75))
i76=$((index+76))
i77=$((index+77))
i78=$((index+78))
i79=$((index+79))
i80=$((index+80))
i81=$((index+81))
i82=$((index+82))
i83=$((index+83))
i84=$((index+84))
i85=$((index+85))
i86=$((index+86))
i87=$((index+87))
i88=$((index+88))
i89=$((index+89))
i90=$((index+90))
i91=$((index+91))
i92=$((index+92))
i93=$((index+93))
i94=$((index+94))
i95=$((index+95))
i96=$((index+96))
i97=$((index+97))
i98=$((index+98))
i99=$((index+99))
i100=$((index+100))
done
case $((n%100)) in
2) arguments="$arguments \"\${$i1}\"" ;;
3) arguments="$arguments \"\${$i1}\" \"\${$i2}\"" ;;
4) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\"" ;;
5) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\"" ;;
6) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\"" ;;
7) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\"" ;;
8) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\"" ;;
9) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\"" ;;
10) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\"" ;;
11) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\"" ;;
12) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\"" ;;
13) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\"" ;;
14) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\"" ;;
15) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\"" ;;
16) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\"" ;;
17) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\"" ;;
18) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\"" ;;
19) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\"" ;;
20) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\"" ;;
21) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\"" ;;
22) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\"" ;;
23) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\"" ;;
24) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\"" ;;
25) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\"" ;;
26) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\"" ;;
27) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\"" ;;
28) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\"" ;;
29) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\"" ;;
30) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\"" ;;
31) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\"" ;;
32) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\"" ;;
33) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\"" ;;
34) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\"" ;;
35) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\"" ;;
36) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\"" ;;
37) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\"" ;;
38) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\"" ;;
39) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\"" ;;
40) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\"" ;;
41) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\"" ;;
42) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\"" ;;
43) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\"" ;;
44) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\"" ;;
45) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\"" ;;
46) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\"" ;;
47) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\"" ;;
48) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\"" ;;
49) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\"" ;;
50) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\"" ;;
51) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\"" ;;
52) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\"" ;;
53) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\"" ;;
54) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\"" ;;
55) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\"" ;;
56) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\"" ;;
57) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\"" ;;
58) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\"" ;;
59) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\"" ;;
60) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\"" ;;
61) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\"" ;;
62) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\"" ;;
63) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\"" ;;
64) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\"" ;;
65) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\"" ;;
66) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\"" ;;
67) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\"" ;;
68) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\"" ;;
69) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\"" ;;
70) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\"" ;;
71) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\"" ;;
72) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\"" ;;
73) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\"" ;;
74) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\"" ;;
75) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\"" ;;
76) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\"" ;;
77) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\"" ;;
78) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\"" ;;
79) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\"" ;;
80) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\"" ;;
81) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\"" ;;
82) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\"" ;;
83) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\"" ;;
84) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\"" ;;
85) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\"" ;;
86) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\"" ;;
87) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\"" ;;
88) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\"" ;;
89) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\"" ;;
90) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\"" ;;
91) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\"" ;;
92) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\"" ;;
93) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\"" ;;
94) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\"" ;;
95) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\"" ;;
96) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\"" ;;
97) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\" \"\${$i96}\"" ;;
98) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\" \"\${$i96}\" \"\${$i97}\"" ;;
99) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\" \"\${$i96}\" \"\${$i97}\" \"\${$i98}\"" ;;
0) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\" \"\${$i96}\" \"\${$i97}\" \"\${$i98}\" \"\${$i99}\"" ;;
esac
POP_EXPR="set -- $arguments"
}
batch_g100_pop10() {
local n="$1"
local arguments=''
local index=0 i1=1 i2=2 i3=3 i4=4 i5=5 i6=6 i7=7 i8=8 i9=9 i10=10
while [ $index -lt $((n-10)) ]; do
arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\""
index=$i10
i1=$((index+1))
i2=$((index+2))
i3=$((index+3))
i4=$((index+4))
i5=$((index+5))
i6=$((index+6))
i7=$((index+7))
i8=$((index+8))
i9=$((index+9))
i10=$((index+10))
done
case $((n%10)) in
2) arguments="$arguments \"\${$i1}\"" ;;
3) arguments="$arguments \"\${$i1}\" \"\${$i2}\"" ;;
4) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\"" ;;
5) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\"" ;;
6) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\"" ;;
7) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\"" ;;
8) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\"" ;;
9) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\"" ;;
0) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\"" ;;
esac
POP_EXPR="set -- $arguments"
}
g100_pop() {
local n=$(($1 - ${2:-1} + 1))
case $n in
1) POP_EXPR='set -- ' ;;
2) POP_EXPR='set -- "${1}"' ;;
3) POP_EXPR='set -- "${1}" "${2}"' ;;
4) POP_EXPR='set -- "${1}" "${2}" "${3}"' ;;
5) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}"' ;;
6) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}"' ;;
7) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}"' ;;
8) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}" "${7}"' ;;
9) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}" "${7}" "${8}"' ;;
*)
if [ $n -ge 100 ]; then
batch_g100_pop100 $n
else
batch_g100_pop10 $n
fi
;;
esac
}
g100_pop_next() {
POP_EXPR="${POP_EXPR% \"*}"
}
test_g100_pop() {
g100_pop $#
eval "$POP_EXPR"
echo "$@"
}
batch_posix_pop1() {
local n="$1"
local index=0
local arguments=""
while [ $index -lt $((n - 1)) ]; do
index=$((index+1))
arguments="$arguments \"\${$index}\""
done
POP_EXPR="set -- $arguments"
}
posix_pop() {
local n=$(($1 - ${2:-1} + 1))
if [ $1 -ge 1000 ]; then
POP_EXPR="set -- $(seq -s " " 1 $((n - 1)) | sed 's/[0-9]\+/"${\0}"/g')"
else
batch_posix_pop1 $n
fi
}
posix_pop_next() {
POP_EXPR="${POP_EXPR% \"*}"
}
test_posix_pop() {
posix_pop $#
eval "$POP_EXPR"
echo "$@"
}
pure_ctool_pop() {
local n=$(($1 - ${2:-1} + 1))
POP_EXPR="set -- $(popsh $n)"
}
test_pure_ctool_pop() {
pure_ctool_pop $#
eval "$POP_EXPR"
echo "$@"
}
pure_ctool_pop_next() {
POP_EXPR="${POP_EXPR% \"*}"
}
pure_tool_pop() {
local n=$(($1 - ${2:-1} + 1))
POP_EXPR="set -- $(seq -s " " 1 $((n - 1)) | sed 's/[0-9]\+/"${\0}"/g')"
}
test_pure_tool_pop() {
pure_tool_pop $#
eval "$POP_EXPR"
echo "$@"
}
pure_tool_pop_next() {
POP_EXPR="${POP_EXPR% \"*}"
}
batch_tool_pop10() {
local n="$1"
local arguments=''
local index=0 i1=1 i2=2 i3=3 i4=4 i5=5 i6=6 i7=7 i8=8 i9=9 i10=10
while [ $index -lt $((n-10)) ]; do
arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\""
index=$i10
i1=$((index+1))
i2=$((index+2))
i3=$((index+3))
i4=$((index+4))
i5=$((index+5))
i6=$((index+6))
i7=$((index+7))
i8=$((index+8))
i9=$((index+9))
i10=$((index+10))
done
case $((n%10)) in
2) arguments="$arguments \"\${$i1}\"" ;;
3) arguments="$arguments \"\${$i1}\" \"\${$i2}\"" ;;
4) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\"" ;;
5) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\"" ;;
6) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\"" ;;
7) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\"" ;;
8) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\"" ;;
9) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\"" ;;
0) arguments="$arguments \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\"" ;;
esac
POP_EXPR="set -- $arguments"
}
tool_pop() {
local n=$(($1 - ${2:-1} + 1))
case $n in
1) POP_EXPR='set -- ' ;;
2) POP_EXPR='set -- "${1}"' ;;
3) POP_EXPR='set -- "${1}" "${2}"' ;;
4) POP_EXPR='set -- "${1}" "${2}" "${3}"' ;;
5) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}"' ;;
6) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}"' ;;
7) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}"' ;;
8) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}" "${7}"' ;;
9) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}" "${7}" "${8}"' ;;
*)
if [ $1 -ge 1000 ]; then
POP_EXPR="set -- $(seq -s " " 1 $((n - 1)) | sed 's/[0-9]\+/"${\0}"/g')"
else
batch_tool_pop10 $n
fi
;;
esac
}
tool_pop_next() {
POP_EXPR="${POP_EXPR% \"*}"
}
test_tool_pop() {
tool_pop $#
eval "$POP_EXPR"
echo "$@"
}
subarray_pop() {
POP_EXPR="set -- \"\${@:1:$1 - ${2:-1}}\""
}
test_subarray_pop() {
set -- "${@:1:$# - 1}"
echo "$@"
}
subarray_pop_next() {
local np="${POP_EXPR##*:}"
np="${np%\}*}"
POP_EXPR="${POP_EXPR%:*}:$((np == 0 ? 0 : np - 1))}\""
}
bash_unset_pop() {
local cut="${2:-1}"
eval "
declare -i len=\${#$1[@]}
for (( i=0; i < cut; i++, len-- )) do
unset $1[\$len-1]
done
"
}
test_eval_bash_pop() {
eval "set -- ${@:1:$# - 1}"
echo "$@"
}
test_bash_unset_pop() {
declare -a array
array=("$@")
bash_unset_pop array
echo "${array[@]}"
}
test_bash_unset_pop_x10000() {
declare -a array
array=("$@")
declare -i len=${#array[@]}
time for x in {1...10000}; do
len+=-1
unset array[$len]
done
echo "${array[@]}"
}
basic_ext_pop() {
local n=$(($1 - ${2:-1} + 1))
local arguments=""
for (( index=1; index < n; index++ )) do
arguments+=" \"\${$index}\""
done
POP_EXPR="set -- $arguments"
}
test_basic_ext_pop() {
basic_ext_pop $#
eval "$POP_EXPR"
echo "$@"
}
basic_ext_pop_next() {
POP_EXPR="${POP_EXPR% \"*}"
}
batch_g100_ext_pop100() {
local n="$1"
local arguments=''
local index=0 i1=1 i2=2 i3=3 i4=4 i5=5 i6=6 i7=7 i8=8 i9=9 i10=10 i11=11 i12=12 i13=13 i14=14 i15=15 i16=16 i17=17 i18=18 i19=19 i20=20 i21=21 i22=22 i23=23 i24=24 i25=25 i26=26 i27=27 i28=28 i29=29 i30=30 i31=31 i32=32 i33=33 i34=34 i35=35 i36=36 i37=37 i38=38 i39=39 i40=40 i41=41 i42=42 i43=43 i44=44 i45=45 i46=46 i47=47 i48=48 i49=49 i50=50 i51=51 i52=52 i53=53 i54=54 i55=55 i56=56 i57=57 i58=58 i59=59 i60=60 i61=61 i62=62 i63=63 i64=64 i65=65 i66=66 i67=67 i68=68 i69=69 i70=70 i71=71 i72=72 i73=73 i74=74 i75=75 i76=76 i77=77 i78=78 i79=79 i80=80 i81=81 i82=82 i83=83 i84=84 i85=85 i86=86 i87=87 i88=88 i89=89 i90=90 i91=91 i92=92 i93=93 i94=94 i95=95 i96=96 i97=97 i98=98 i99=99 i100=100
while [ $index -lt $((n-100)) ]; do
arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\" \"\${$i96}\" \"\${$i97}\" \"\${$i98}\" \"\${$i99}\" \"\${$i100}\""
index=$i100
i1=$((index+1))
i2=$((index+2))
i3=$((index+3))
i4=$((index+4))
i5=$((index+5))
i6=$((index+6))
i7=$((index+7))
i8=$((index+8))
i9=$((index+9))
i10=$((index+10))
i11=$((index+11))
i12=$((index+12))
i13=$((index+13))
i14=$((index+14))
i15=$((index+15))
i16=$((index+16))
i17=$((index+17))
i18=$((index+18))
i19=$((index+19))
i20=$((index+20))
i21=$((index+21))
i22=$((index+22))
i23=$((index+23))
i24=$((index+24))
i25=$((index+25))
i26=$((index+26))
i27=$((index+27))
i28=$((index+28))
i29=$((index+29))
i30=$((index+30))
i31=$((index+31))
i32=$((index+32))
i33=$((index+33))
i34=$((index+34))
i35=$((index+35))
i36=$((index+36))
i37=$((index+37))
i38=$((index+38))
i39=$((index+39))
i40=$((index+40))
i41=$((index+41))
i42=$((index+42))
i43=$((index+43))
i44=$((index+44))
i45=$((index+45))
i46=$((index+46))
i47=$((index+47))
i48=$((index+48))
i49=$((index+49))
i50=$((index+50))
i51=$((index+51))
i52=$((index+52))
i53=$((index+53))
i54=$((index+54))
i55=$((index+55))
i56=$((index+56))
i57=$((index+57))
i58=$((index+58))
i59=$((index+59))
i60=$((index+60))
i61=$((index+61))
i62=$((index+62))
i63=$((index+63))
i64=$((index+64))
i65=$((index+65))
i66=$((index+66))
i67=$((index+67))
i68=$((index+68))
i69=$((index+69))
i70=$((index+70))
i71=$((index+71))
i72=$((index+72))
i73=$((index+73))
i74=$((index+74))
i75=$((index+75))
i76=$((index+76))
i77=$((index+77))
i78=$((index+78))
i79=$((index+79))
i80=$((index+80))
i81=$((index+81))
i82=$((index+82))
i83=$((index+83))
i84=$((index+84))
i85=$((index+85))
i86=$((index+86))
i87=$((index+87))
i88=$((index+88))
i89=$((index+89))
i90=$((index+90))
i91=$((index+91))
i92=$((index+92))
i93=$((index+93))
i94=$((index+94))
i95=$((index+95))
i96=$((index+96))
i97=$((index+97))
i98=$((index+98))
i99=$((index+99))
i100=$((index+100))
done
case $((n%100)) in
2) arguments+=" \"\${$i1}\"" ;;
3) arguments+=" \"\${$i1}\" \"\${$i2}\"" ;;
4) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\"" ;;
5) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\"" ;;
6) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\"" ;;
7) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\"" ;;
8) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\"" ;;
9) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\"" ;;
10) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\"" ;;
11) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\"" ;;
12) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\"" ;;
13) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\"" ;;
14) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\"" ;;
15) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\"" ;;
16) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\"" ;;
17) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\"" ;;
18) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\"" ;;
19) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\"" ;;
20) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\"" ;;
21) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\"" ;;
22) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\"" ;;
23) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\"" ;;
24) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\"" ;;
25) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\"" ;;
26) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\"" ;;
27) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\"" ;;
28) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\"" ;;
29) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\"" ;;
30) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\"" ;;
31) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\"" ;;
32) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\"" ;;
33) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\"" ;;
34) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\"" ;;
35) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\"" ;;
36) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\"" ;;
37) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\"" ;;
38) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\"" ;;
39) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\"" ;;
40) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\"" ;;
41) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\"" ;;
42) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\"" ;;
43) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\"" ;;
44) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\"" ;;
45) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\"" ;;
46) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\"" ;;
47) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\"" ;;
48) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\"" ;;
49) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\"" ;;
50) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\"" ;;
51) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\"" ;;
52) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\"" ;;
53) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\"" ;;
54) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\"" ;;
55) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\"" ;;
56) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\"" ;;
57) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\"" ;;
58) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\"" ;;
59) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\"" ;;
60) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\"" ;;
61) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\"" ;;
62) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\"" ;;
63) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\"" ;;
64) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\"" ;;
65) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\"" ;;
66) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\"" ;;
67) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\"" ;;
68) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\"" ;;
69) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\"" ;;
70) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\"" ;;
71) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\"" ;;
72) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\"" ;;
73) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\"" ;;
74) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\"" ;;
75) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\"" ;;
76) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\"" ;;
77) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\"" ;;
78) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\"" ;;
79) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\"" ;;
80) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\"" ;;
81) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\"" ;;
82) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\"" ;;
83) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\"" ;;
84) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\"" ;;
85) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\"" ;;
86) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\"" ;;
87) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\"" ;;
88) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\"" ;;
89) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\"" ;;
90) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\"" ;;
91) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\"" ;;
92) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\"" ;;
93) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\"" ;;
94) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\"" ;;
95) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\"" ;;
96) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\"" ;;
97) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\" \"\${$i96}\"" ;;
98) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\" \"\${$i96}\" \"\${$i97}\"" ;;
99) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\" \"\${$i96}\" \"\${$i97}\" \"\${$i98}\"" ;;
0) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\" \"\${$i11}\" \"\${$i12}\" \"\${$i13}\" \"\${$i14}\" \"\${$i15}\" \"\${$i16}\" \"\${$i17}\" \"\${$i18}\" \"\${$i19}\" \"\${$i20}\" \"\${$i21}\" \"\${$i22}\" \"\${$i23}\" \"\${$i24}\" \"\${$i25}\" \"\${$i26}\" \"\${$i27}\" \"\${$i28}\" \"\${$i29}\" \"\${$i30}\" \"\${$i31}\" \"\${$i32}\" \"\${$i33}\" \"\${$i34}\" \"\${$i35}\" \"\${$i36}\" \"\${$i37}\" \"\${$i38}\" \"\${$i39}\" \"\${$i40}\" \"\${$i41}\" \"\${$i42}\" \"\${$i43}\" \"\${$i44}\" \"\${$i45}\" \"\${$i46}\" \"\${$i47}\" \"\${$i48}\" \"\${$i49}\" \"\${$i50}\" \"\${$i51}\" \"\${$i52}\" \"\${$i53}\" \"\${$i54}\" \"\${$i55}\" \"\${$i56}\" \"\${$i57}\" \"\${$i58}\" \"\${$i59}\" \"\${$i60}\" \"\${$i61}\" \"\${$i62}\" \"\${$i63}\" \"\${$i64}\" \"\${$i65}\" \"\${$i66}\" \"\${$i67}\" \"\${$i68}\" \"\${$i69}\" \"\${$i70}\" \"\${$i71}\" \"\${$i72}\" \"\${$i73}\" \"\${$i74}\" \"\${$i75}\" \"\${$i76}\" \"\${$i77}\" \"\${$i78}\" \"\${$i79}\" \"\${$i80}\" \"\${$i81}\" \"\${$i82}\" \"\${$i83}\" \"\${$i84}\" \"\${$i85}\" \"\${$i86}\" \"\${$i87}\" \"\${$i88}\" \"\${$i89}\" \"\${$i90}\" \"\${$i91}\" \"\${$i92}\" \"\${$i93}\" \"\${$i94}\" \"\${$i95}\" \"\${$i96}\" \"\${$i97}\" \"\${$i98}\" \"\${$i99}\"" ;;
esac
POP_EXPR="set -- $arguments"
}
batch_g100_ext_pop10() {
local n="$1"
local arguments=''
local index=0 i1=1 i2=2 i3=3 i4=4 i5=5 i6=6 i7=7 i8=8 i9=9 i10=10
while [ $index -lt $((n-10)) ]; do
arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\" \"\${$i10}\""
index=$i10
i1=$((index+1))
i2=$((index+2))
i3=$((index+3))
i4=$((index+4))
i5=$((index+5))
i6=$((index+6))
i7=$((index+7))
i8=$((index+8))
i9=$((index+9))
i10=$((index+10))
done
case $((n%10)) in
2) arguments+=" \"\${$i1}\"" ;;
3) arguments+=" \"\${$i1}\" \"\${$i2}\"" ;;
4) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\"" ;;
5) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\"" ;;
6) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\"" ;;
7) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\"" ;;
8) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\"" ;;
9) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\"" ;;
0) arguments+=" \"\${$i1}\" \"\${$i2}\" \"\${$i3}\" \"\${$i4}\" \"\${$i5}\" \"\${$i6}\" \"\${$i7}\" \"\${$i8}\" \"\${$i9}\"" ;;
esac
POP_EXPR="set -- $arguments"
}
g100_ext_pop() {
local n=$(($1 - ${2:-1} + 1))
case $n in
1) POP_EXPR='set -- ' ;;
2) POP_EXPR='set -- "${1}"' ;;
3) POP_EXPR='set -- "${1}" "${2}"' ;;
4) POP_EXPR='set -- "${1}" "${2}" "${3}"' ;;
5) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}"' ;;
6) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}"' ;;
7) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}"' ;;
8) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}" "${7}"' ;;
9) POP_EXPR='set -- "${1}" "${2}" "${3}" "${4}" "${5}" "${6}" "${7}" "${8}"' ;;
*)
if [ $n -ge 100 ]; then
batch_g100_ext_pop100 $n
else
batch_g100_ext_pop10 $n
fi
;;
esac
}
g100_ext_pop_next() {
POP_EXPR="${POP_EXPR% \"*}"
}
test_g100_ext_pop() {
g100_ext_pop $#
eval "$POP_EXPR"
echo "$@"
}
zsh_unset_pop() {
local cut="${2:-1}"
eval "
typeset -i len=\${#$1}
for (( i=0; i < cut; i++, len-- )) do
$1[\$len]=()
done
"
}
test_eval_zsh_pop() {
eval "set -- ${@:1:$# - 1}"
echo "$@"
}
test_zsh_unset_pop() {
typeset -a array=("$@")
zsh_unset_pop array
echo "${array[@]}"
}
test_zsh_unset_pop_x10000() {
typeset -a array=("$@")
typeset -i len=${#array}
time for x in {1...10000}; do
len+=-1
array[len-1]=()
done
echo "${array[@]}"
}
#!/usr/bin/env sh
main() {
local generate_pop=true genpop_out='' prefix='' suffix='' batches=1
local overwrite=false print=false enhanced=false ctool=false cases=0 tools_at=''
local subarray=false nolocal=false funct=false
set_batches() {
batches="$(echo "$1" | sed -e 's/,/ /g')"
for n in $batches; do
set_number '' "$n" || batches=''
done
}
set_number() {
case "$2" in
''|*[!0-9]*) echo "error: argument not a number: $2" >&2; return 1 ;;
*) [ -n "$1" ] && eval "$1=$2" ;;
esac
return 0
}
set_number_list() {
case "$2" in
''|*[!0-9,]*) echo "error: argument not a number list: $2" >&2; return 1 ;;
*) [ -n "$1" ] && eval "$1='$(echo "$2" | sed 's/,/ /g')'" ;;
esac
return 0
}
set_name() {
case "$2" in
*[!a-zA-Z0-9_]*) echo "error: argument not a name: $2" >&2 ;;
*) eval "$1=$2" ;;
esac
}
set_prefix() {
case "$1" in
[0-9]*) echo "error: prefix cannot start with number: $1" >&2 ;;
*) set_name prefix "$1" ;;
esac
}
while [ $# -gt 0 ]; do
case "$1" in
--groups)
set_number_list batches "$2"
shift 2
;;
--generate-pop=*)
set_number_list batches "${1#--generate-pop=}"
shift
;;
--generate-pop|-g)
set_number_list batches "$2"
shift 2
;;
-g*)
set_number_list batches "${1#-g}"
shift
;;
--tools=*)
set_number tools_at "${1#--tools=}"
shift
;;
--tools|-t)
set_number tools_at "$2"
shift 2
;;
-t*)
set_number tools_at "${1#-t}"
shift
;;
--ctool|-c)
ctool=true
shift
;;
--cases=*)
set_number cases "${1#--cases=}"
shift
;;
--cases|-x)
set_number cases "$2"
shift 2
;;
-x*)
set_number cases "${1#-x}"
shift
;;
--print|-e)
print=true
shift
;;
--prefix=*)
set_prefix "${1#--prefix=}"
shift
;;
--prefix|-p)
set_prefix "$2"
shift 2
;;
-p*)
set_prefix "${1#-p}"
shift
;;
--suffix=*)
set_name suffix "${1#--suffix=}"
shift
;;
--suffix|-s)
set_name suffix "$2"
shift 2
;;
-s*)
set_name suffix "${1#-s}"
shift
;;
--generate-to=*)
genpop_out="${1#--generate-to}"
shift
;;
--generate-to|-o)
genpop_out="$2"
shift 2
;;
-o*)
genpop_out="${1#-o}"
shift
;;
--enhanced|-+)
enhanced=true
shift
;;
--overwrite|-w)
overwrite=true
shift
;;
--subarray|-@)
subarray=true
shift
;;
--no-local|-nl)
nolocal=true
shift
;;
--function|-f)
funct=true
shift
;;
*)
echo "invalid argument: $1"
shift
;;
esac
done
if $generate_pop; then
prefix="$prefix${prefix:+_}"
suffix="${suffix:+_}$suffix"
gen() {
generate_pop -@ $subarray -t "$tools_at" -c "$ctool" -x "$cases"\
-p "$prefix" -s "$suffix" -e "$enhanced" -nl $nolocal\
-f "$funct" $batches
}
if $print; then
printf '%s\n' "$(gen)"
else
genpop_out="${genpop_out:-${prefix}pop$suffix.sh}"
if [ -f "$genpop_out" ] && ! $overwrite; then
echo "error: file $genpop_out already exists!"
else
gen >"$genpop_out"
fi
fi
fi
}
NL="
"
DefaultTest='
test_<pop>() {
<pop> $#
eval "$POP_EXPR"
echo "$@"
}
'
BasicPopCode=\
' <local>index=0
<local>arguments=""
while [ $index -lt $((n - 1)) ]; do
index=$((index+1))
arguments="$arguments \"\${$index}\""
done
POP_EXPR="set -- $arguments"'
EnhancedBasicPopCode=\
' <local>arguments=""
for (( index=1; index < n; index++ )) do
arguments+=" \"\${$index}\""
done
POP_EXPR="set -- $arguments"'
BasicPop='
<pop>() {
<local>n=$(($1 - ${2:-1} + 1))
'"$BasicPopCode"'
}
'"$DefaultTest"'
'
EnhancedBasicPop='
<function><pop><parens> {
<local>n=$(($1 - ${2:-1} + 1))
'"$EnhancedBasicPopCode"'
}
'"$DefaultTest"'
'
Batch1='
<function><pop><parens> {
<local>n="$1"
'"$BasicPopCode"'
}
'
EnhancedBatch1='
<function><pop><parens> {
<local>n="$1"
'"$EnhancedBasicPopCode"'
}
'
SubArrayPop='
<function><pop><parens> {
POP_EXPR="set -- \"\${@:1:$1 - ${2:-1}}\""
}
<function>test_<pop><parens> {
set -- "${@:1:$# - 1}"
echo "$@"
}
'
SedExpr='s/[0-9]\+/"${\0}"/g'
SedCall='$(seq -s " " 1 $((n - 1)) | sed '"'$SedExpr')"
ToolPop='
<function><pop><parens> {
<local>n=$(($1 - ${2:-1} + 1))
POP_EXPR="set -- '"$SedCall"'"
}
'"$DefaultTest"'
'
CToolPop='
<function><pop><parens> {
<local>n=$(($1 - ${2:-1} + 1))
POP_EXPR="set -- $(popsh $n)"
}
'"$DefaultTest"'
'
generate_pop_batch() {
local batch="$1"
local enhanced=${2:-false}
local prefix="$3" suffix="$4"
local nolocal="$5"
local functsyn="$6"
local funct='' parens='()'
if $functsyn; then
funct='function '
parens=''
fi
local loc='local ' nl_semicolon=''
if $nolocal; then
loc=''
nl_semicolon=';'
fi
premade_batch() {
printf '%s\n' "$1" | sed "{
s/<pop>/batch_${prefix}pop$suffix$batch/g;
s/<local>/$loc/g;
s/<function>/$funct/g;
s/<parens>/$parens/g;
}"
}
if [ $batch -eq 1 ]; then
if $enhanced; then
premade_batch "$EnhancedBatch1"
else
premade_batch "$Batch1"
fi
return
fi
local code=''
args() {
local str="$(for x in $(seq 1 $1); do printf ' \\"\\${$i%d}\\"' $x; done)"
if $enhanced; then
echo "arguments+=\"$str\""
else
echo "arguments=\"\$arguments $str\""
fi
}
casex() {
printf ' %d) %s ;;\n' $x "$(args $((x-1)))"
}
indexes() {
for x in $(seq 1 $batch); do
printf ' i%d=%d%s' $x $x "$nl_semicolon"
done
}
local funcname="${funct}batch_${prefix}pop$suffix$batch$parens"
local index_decl="${loc}index=0$nl_semicolon$(indexes)"
local set_ls="$(for x in $(seq 1 $batch); do printf ' i%d=$((index+%d))\n' $x $x; done)"
local while_less="while [ \$index -lt \$((n-$batch)) ]; do$NL $(args $batch)$NL"
while_less="${while_less} index=\$i$batch$NL"
while_less="${while_less}$set_ls$NL done"
local cases="$(for x in $(seq 2 $((batch-1))); do casex $x; done)"
cases="$cases$NL 0) $(args $((batch-1))) ;;$NL esac"
local cases_rem='case $((n%'$batch')) in'"$NL$cases"
code="$funcname {"
code="$code$NL ${loc}n=\"\$1\""
code="$code$NL ${loc}arguments=''"
code="$code$NL $index_decl"
code="$code$NL $while_less"
code="$code$NL $cases_rem"
code="$code$NL POP_EXPR=\"set -- \$arguments\""
code="$code$NL}"
code="$code$NL"
printf '%s\n' "$code"
}
SubarrayPopNext=\
' <local>np="${POP_EXPR##*:}"
np="${np%\}*}"
POP_EXPR="${POP_EXPR%:*}:$((np == 0 ? 0 : np - 1))}\""
'
generate_pop_next() {
local prefix="$1" suffix="$2" subarray="$3" enhanced="$4" funct="$5" parens="$6" loc="$7"
local code="${funct}${prefix}pop${suffix}_next$parens {"
if $subarray; then
subarray_code="$(printf '%s' "$SubarrayPopNext" | sed "s/<local>/$loc/g")"
if $enhanced; then
code="$code$NL$subarray_code"
code="$code$NL}"
printf '%s' "$code"
return
else
code="$code$NL if [ -n \"\$BASH_VERSION\" -o -n \"\$ZSH_VERSION\" ]; then"
code="$code$NL$(printf '%s' "$subarray_code" | sed 's/^/ /')"
code="$code$NL return"
code="$code$NL fi"
fi
fi
code="$code$NL POP_EXPR=\"\${POP_EXPR% \\\"*}\""
code="$code$NL}"
printf '%s\n\n' "$code"
}
generate_test() {
local prefix="$1" suffix="$2" funct="$3" parens="$4" code=''
code="${funct}test_${prefix}pop$suffix$parens {"
code="$code$NL ${prefix}pop$suffix \$#"
code="$code$NL eval \"\$POP_EXPR\""
code="$code$NL echo \"\$@\""
code="$code$NL}"
code="$code$NL"
printf '%s\n' "$code"
}
reverse_sort() {
echo "$*" | tr ' ' '\n' | sort -n -u -r
}
generate_pop() {
local code=''
local read_args=true prefix='' suffix='' tools='' ctool=false
local casenum=0 enhanced=false subarray=false nolocal=false
local functsyn=false
while $read_args; do
case "$1" in
-x)
casenum="$2"
shift 2
;;
-@)
subarray="$2"
shift 2
;;
-s)
suffix="$2"
shift 2
;;
-p)
prefix="$2"
shift 2
;;
-c)
ctool="$2"
shift 2
;;
-t)
tools="$2"
shift 2
;;
-e)
enhanced="$2"
shift 2
;;
-nl)
nolocal="$2"
shift 2
;;
-f)
functsyn="$2"
shift 2
;;
*)
read_args=false
;;
esac
done
local funct='' parens='()'
if $functsyn; then
funct='function '
parens=''
fi
local loc='local '
if $nolocal; then
loc=''
fi
premade_pop() {
printf '%s\n' "$1" | sed "{
s/<pop>/${prefix}pop$suffix/g;
s/<local>/$loc/g;
s/<function>/$funct/g;
s/<parens>/$parens/g;
}"
generate_pop_next "$prefix" "$suffix" "$subarray" "$enhanced" "$funct" "$parens" "$loc"
}
if $enhanced && $subarray; then
premade_pop "$SubArrayPop"
return
elif [ "$tools" = 0 ]; then
if $ctool; then
premade_pop "$CToolPop"
else
premade_pop "$ToolPop"
fi
return
elif [ "$batches" = 1 -a "$casenum" = 0 -a -z "$tools" ] && ! $subarray; then
if $enhanced; then
premade_pop "$EnhancedBasicPop"
else
premade_pop "$BasicPop"
fi
return
fi
local sed_expr tool_call tool_set
local CI=''
if [ $casenum -gt 0 ]; then
CI=' '
fi
if $ctool; then
tool_call='$(popsh $n)'
else
tool_call="$SedCall"
fi
tool_set="POP_EXPR=\"set -- $tool_call\""
local clauses=''
if [ $# -eq 1 ]; then
generate_pop_batch "$1" "$enhanced" "$prefix" "$suffix" "$nolocal" "$functsyn"
if [ -n "$tools" ]; then
clauses="if [ \$1 -ge $tools ]; then"
clauses="$clauses$NL$CI $tool_set"
clauses="$clauses$NL$CI else"
clauses="$clauses$NL$CI batch_${prefix}pop$suffix$1 \$n"
clauses="$clauses$NL$CI fi"
else
clauses="batch_${prefix}pop$suffix$1 \$n"
fi
else
local i=1
for batch in $(reverse_sort "$*"); do
generate_pop_batch "$batch" "$enhanced" "$prefix" "$suffix" "$nolocal" "$functsyn"
if [ $i -lt $# ]; then
clauses="$clauses"${clauses:+$NL$CI el}'if [ $n -ge '"$batch"' ]; then'
else
clauses="$clauses$NL$CI else"
fi
clauses="$clauses$NL$CI batch_${prefix}pop$suffix$batch \$n"
i=$((i+1))
done
clauses="$clauses$NL$CI fi"
if [ -n "$tools" ]; then
local tool_clause
tool_clause="if [ \$n -ge $tools ]; then"
tool_clause="$tool_clause$NL$CI $tool_set"
clauses="$tool_clause$NL$CI el$clauses"
fi
fi
code="${funct}${prefix}pop$suffix$parens {"
code="$code$NL ${loc}n=\$((\$1 - \${2:-1} + 1))"
if $subarray; then
code="$code$NL if [ -n \"\$BASH_VERSION\" -o -n \"\$ZSH_VERSION\" ]; then"
code="$code$NL POP_EXPR='set -- \"\${@:1:'\$((n - 1))'}\"'"
code="$code$NL return"
code="$code$NL fi"
fi
if [ $casenum -gt 0 ]; then
args() {
seq -s ' ' 1 "$(($1 - 1))" | sed 's/[0-9]\+/"${\0}"/g'
}
local cases=''
for c in $(seq 1 $casenum); do
cases="$cases${cases:+$NL} $c) POP_EXPR='set -- $(args $c)' ;;"
done
code="$code$NL case \$n in$NL$cases"
code="$code$NL *)"
code="$code$NL $clauses"
code="$code$NL ;;"
code="$code$NL esac"
else
code="$code$NL $clauses"
fi
code="$code$NL}"
code="$code$NL"
printf '%s\n' "$code"
generate_pop_next "$prefix" "$suffix" "$subarray" "$enhanced" "$funct" "$parens" "$loc"
generate_test "$prefix" "$suffix" "$funct" "$parens"
}
main "$@"
main() {
mkdir -p popfun
sh popgen.sh -p basic -o popfun/basic.sh
sh popgen.sh -p posix -g1 -t1000 -o popfun/posix.sh
sh popgen.sh -p g100 -x9 -g10,100 -o popfun/g100.sh
sh popgen.sh -p ctool -x9 -g10 -c -t1000 -o popfun/ctool.sh
sh popgen.sh -p tool -x9 -g10 -t1000 -o popfun/tool.sh
sh popgen.sh -p pure_tool -t0 -o popfun/pure_tool.sh
sh popgen.sh -p pure_ctool -t0 -c -o popfun/pure_ctool.sh
cat popfun/* >popfunctions_all.sh
rm -r popfun
sh popgen.sh -p subarray -@ -+ -w -o popfunctions_array.sh
mkdir -p popext
sh popgen.sh -p g100_ext -x9 -g10,100 -+ -o popext/g100_ext.sh
sh popgen.sh -p basic_ext -+ -o popext/basic_ext.sh
cat popext/* >popfunctions_ext.sh
rm -r popext
}
main "$@"
convert_to_ksh() {
for file in popksh.sh "$@"; do
convert_file_to_ksh "$file"
done
}
convert_file_to_ksh() {
sed '{
s/\(^[ ]*[a-zA-Z0-9_]\+\)()[ ]*{/function \1 {/;
s/\(^[ ]*\)\. \(.*\)/\1. <(convert_file_to_ksh \2)/;
}' "$1"
}
handle_ksh() {
local shell="$1"
shift
if [ "$shell" = ksh ]; then
convert_to_ksh "$@"
else
cat "$@"
fi
}
#!/usr/bin/env sh
generate_table() {
local func="$1"
local line word
IFS= read -r line
printf '| '
local words_read=0
for word in $line; do
case "$words_read" in
0) : ;;
1) printf "%-18s" "value counts" ;;
*) printf "%12s" "$word" ;;
esac
[ $words_read -gt 0 ] && printf ' |'
words_read=$((words_read + 1))
done
printf '\n'
local first_column=true
for x in $(seq 1 7); do
if $first_column; then
printf '| :----------------- '
first_column=false
else
printf '| ----------: '
fi
done
printf '|\n'
local min='' skipped=false
while IFS= read -r line; do
first_column=true
for word in $line; do
if $first_column; then
if [ -n "$func" ]; then
case "$word" in
*/$func)
printf '| %-18s |' '`'"${word%/$func}"'`'
;;
*)
skipped=true
continue
;;
esac
else
printf '| %-18s |' '`'"$word"'`'
fi
first_column=false
else
if [ -n "$min" ]; then
printf '%12s |' "$min $word"
min=''
else
case "$word" in
*m) min="$word" ;;
*) printf '%12s |' "$word" ;;
esac
fi
fi
done
$skipped || printf '\n'
skipped=false
done
}
set_benchmarks() {
local input="$1"
sub() {
main -i"$input" ${1:+-f}$1 | tr '\n' '\r' | sed 's/\//\\\//g'
}
sed "{
s/<table:all>/`sub`/g;
s/<table:basic>/`sub basic`/g;
s/<table:basic-ext>/`sub basic-ext`/g;
s/<table:posix>/`sub posix`/g;
s/<table:subarray>/`sub subarray`/g;
s/<table:final>/`sub final`/g;
s/<table:g100>/`sub g100`/g;
s/<table:g100-ext>/`sub g100-ext`/g;
s/<table:tool>/`sub tool`/g;
s/<table:ctool>/`sub ctool`/g;
s/<table:pure-tool>/`sub pure-tool`/g;
s/<table:pure-ctool>/`sub pure-ctool`/g;
}" | tr '\r' '\n'
}
main() {
local input=benchmarks func genmd=false md_template='benchmarks.md.template'
while [ $# -gt 0 ]; do
case "$1" in
--function|-f)
func="$2"
shift 2
;;
--function=*)
func="${1#--function=}"
shift
;;
-f*)
func="${1#-f}"
shift
;;
--input|-i)
input="$2"
shift 2
;;
--input=*)
input="${1#--input=}"
shift
;;
-i*)
input="${1#-i}"
shift
;;
--generate-md|-g)
genmd=true
shift
;;
--md-template|-t)
md_template="$2"
shift 2
;;
--md-template=*)
md_template="${1#--md-template=}"
shift
;;
-t*)
md_template="${1#-t}"
shift
;;
'')
shift
;;
*)
echo "invalid argument: $1" >&2
shift
;;
esac
done
if [ -f "$input" ]; then
if $genmd && [ -f "$md_template" ]; then
cat "$md_template" | set_benchmarks "$input"
else
cat "$input" | tr '~' ' ' | generate_table $func
fi
fi
}
main "$@"
#!/usr/bin/env sh
. ./popksh.sh
test_one() {
local shell="$1"
local func="$2"
local argcount="$3"
local pattern="$4"
local files="pop.sh popfunctions.sh"
make_args() {
seq -s ' ' 1 $1 | sed 's/\([0-9]\+\)/'"$2/g"
}
local args="$(make_args $argcount "\"$pattern\"")"
local expected="$(make_args $((argcount - 1)) "$pattern")"
results="$(printf '%s\n' "$func $args" | handle_ksh "$shell" $files - | $shell)"
local ok
printf '%5s/%5s = ' "\"$pattern\"" $argcount
if [ "$results" = "$expected" ]; then
ok=Ok
else
ok='Wrong!'
fi
printf '%-8s ' "$ok"
}
test_pair() {
local shell="$1"
local func
local results
case "$2" in
''|[0-9]*|*[!a-zA-Z0-9-]*) echo "invalid function: $2" >&2 ;;
final) func="test_pop" ;;
*-*) func="test_${2%-*}_${2#*-}_pop" ;;
*) func="test_$2_pop" ;;
esac
printf 'testing %s/%s... \n' $shell $2
for arg in 1 5 10 100 1000 10000; do
test_one "$shell" "$func" "$arg" '\0'
test_one "$shell" "$func" "$arg" 'x\0'
test_one "$shell" "$func" "$arg" '(\0);'
printf '\n'
done
}
test_all_shells() {
local func="$1"
test_pair dash $func
test_pair ash $func
test_pair ksh $func
test_pair bash $func
test_pair zsh $func
}
test_function() {
local func="$1"
shift
if [ "$1" = all ]; then
test_all_shells $func
else
for shell in "$@"; do
test_pair "$shell" $func
done
fi
}
main() {
if [ $# = 0 ] || [ $1 = 'all' ]; then
test_function final all
test_function posix all
test_function basic all
test_function basic-ext bash zsh ksh
test_function subarray zsh bash
test_function bash-unset bash
test_function zsh-unset zsh
test_function g100 all
test_function g100-ext bash zsh ksh
test_function tool all
test_function ctool all
test_function pure-tool all
test_function pure-ctool all
else
test_function "$@"
fi
}
main "$@"
set_number() {
case "$2" in
''|*[!0-9]*) echo "error: argument not a number: $2" >&2; return 1 ;;
*) [ -n "$1" ] && eval "$1=$2" ;;
esac
return 0
}
set_number_list() {
case "$2" in
''|*[!0-9,]*) echo "error: argument not a number list: $2" >&2; return 1 ;;
*) [ -n "$1" ] && eval "$1='$(echo "$2" | sed 's/,/ /g')'" ;;
esac
return 0
}
set_name() {
case "$2" in
*[!a-zA-Z0-9_]*) echo "error: argument not a name: $2" >&2 ;;
*) eval "$1=$2" ;;
esac
}
format_elapsed() {
local start="$1"
local finish="$2"
local multiply="$3"
local time="$(echo "scale=3; ($finish - $start)" | bc)"
printf '\nint%s\n' "$(format_time $time $multiply)"
}
format_time() {
local time="$1"
local multiply="$2"
local tilde=''
if [ -n "$multiply" -a "$multiply" != 1 ]; then
time=$(echo "$time * $multiply" | bc)
tilde='~'
fi
local mins=$(echo "scale=0; $time / 60" | bc)
local secs=$(echo "scale=3; $time - (60 * $mins)" | bc)
case "$secs" in
.*) secs=0$secs ;;
esac
printf ' %3dm%6.3fs%-1s' $mins $secs "$tilde"
}

This is my current answer:

pop() {
  local n=$(($1 - ${2:-1}))
  if [ -n "$ZSH_VERSION" -o -n "$BASH_VERSION" ]; then
    POP_EXPR='set -- "${@:1:'$n'}"'
  elif [ $n -ge 500 ]; then
    POP_EXPR="set -- $(seq -s " " 1 $n | sed 's/[0-9]\+/"${\0}"/g')"
  else
    local index=0
    local arguments=""
    while [ $index -lt $n ]; do
      index=$((index+1))
      arguments="$arguments \"\${$index}\""
    done
    POP_EXPR="set -- $arguments"
  fi
}

Usage

pop1() {
  pop $#
  eval "$POP_EXPR"
  echo "$@"
}

pop2() {
  pop $# 2
  eval "$POP_EXPR"
  echo "$@"
}

pop1 a b c #=> a b
pop1 $(seq 1 1000) #=> 1 .. 999
pop2 $(seq 1 1000) #=> 1 .. 998

pop_next

Once you've created the POP_EXPR variable with pop, you can use the following function to change it to omit further arguments:

pop_next() {
  if [ -n "$BASH_VERSION" -o -n "$ZSH_VERSION" ]; then
    local np="${POP_EXPR##*:}"
    np="${np%\}*}"
    POP_EXPR="${POP_EXPR%:*}:$((np == 0 ? 0 : np - 1))}\""
    return
  fi
  POP_EXPR="${POP_EXPR% \"*}"
}

pop_next is a much simpler operation than pop in posix shells (though it's slightly more complex than pop on zsh and bash)

It's used like this:

main() {
  pop $#
  pop_next
  eval "$POP_EXPR"
}

main 1 2 3 #=> 1

POP_EXPR and variable scope

Note that if you're not going to be using eval "$POP_EXPR" immediately after pop and pop_next, if you're not careful with scoping some function call inbetween the operations could change the POP_EXPR variable and mess things up. To avoid this, simply put local POP_EXPR at the start of every function that uses pop.

f() {
  local POP_EXPR
  pop $#
  g 1 2
  eval "$POP_EXPR"
  printf '%s' "f=$*"
}

g() {
  local POP_EXPR
  pop $#
  eval "$POP_EXPR"
  printf '%s, ' "g=$*"
}

f a b c #=> g=1, f=a b

popgen.sh

This particular function is good enough for my purposes, but I did create a script to generate further optimized functions.

https://gist.github.com/fcard/e26c5a1f7c8b0674c17c7554fb0cd35c#file-popgen-sh

One of the ways to improve performance without using external tools here is to realize that having several small string concatenations is slow, so doing them in batches makes the function considerably faster. calling the script popgen.sh -gN1,N2,N3 creates a pop function that handles the operations in batches of N1, N2, or N3 depending on the argument count. The script also contains other tricks, exemplified and explained below:

$ sh popgen  \
>  -g 10,100 \ # concatenate strings in batches\
>  -w        \ # overwrite current file\
>  -x9       \ # hardcode the result of the first 9 argument counts\
>  -t1000    \ # starting at argument count 1000, use external tools\
>  -p posix  \ # prefix to add to the function name (with a underscore)\
>  -s ''     \ # suffix to add to the function name (with a underscore)\
>  -c        \ # use the command popsh instead of seq/sed as the external tool\
>  -@        \ # on zsh and bash, use the subarray method (checks on runtime)\
>  -+        \ # use bash/zsh extensions (removes runtime check from -@)\
>  -nl       \ # don't use 'local'\
>  -f        \ # use 'function' syntax\
>  -o pop.sh   # output file

An equivalent to the above function can be generated with popgen.sh -t500 -g1 -@. In the gist containing popgen.sh you will find a popsh.c file that can be compiled and used as a specialized, faster alternative to the default shell external tools, it will be used by any function generated with popgen.sh -c ... if it's accessible as popsh by the shell. Alternatively, you can create any function or tool named popsh and use it in its place.

Benchmark

Benchmark functions:

The script I used for benchmarking can be found on this gist: https://gist.github.com/fcard/f4aec7e567da2a8e97962d5d3f025ad4#file-popbench-sh

The benchmark functions are found in these lines: https://gist.github.com/fcard/f4aec7e567da2a8e97962d5d3f025ad4#file-popbench-sh-L233-L301

The script can be used as such:

$ sh popbench.sh   \
>   -s dash        \ # shell used by the benchmark, can be dash/bash/ash/zsh/ksh.\
>   -f posix       \ # function to be tested\
>   -i 10000       \ # number of times that the function will be called per test\
>   -a '\0'        \ # replacement pattern to model arguments by index (uses sed)
>   -o /dev/stdout \ # where to print the results to (concatenates, defaults to stdout)
>   -n 5,10,1000     # argument sizes to test

It will output a time -p style sheet with a real, user and sys time values, as well as an int value, for internal, that is calculated inside the benchmark process using date.

Times

The following are the int results of calls to

$ sh popbench.sh -s $shell -f $function -i 10000 -n 1,5,10,100,1000,10000

posix refers to the second and third clauses, subarray refers to the first, while final refers to the whole.

value count 	      1 	      5 	     10 	    100 	   1000 	   10000
---------------------------------------------------------------------------------------
dash/final  	  0m0.109s	  0m0.183s	  0m0.275s	  0m2.270s	 0m16.122s	 1m10.239s
ash/final   	  0m0.104s	  0m0.175s	  0m0.273s	  0m2.337s	 0m15.428s	 1m11.673s
ksh/final   	  0m0.409s	  0m0.557s	  0m0.737s	  0m3.558s	 0m19.200s	 1m40.264s
bash/final  	  0m0.343s	  0m0.414s	  0m0.470s	  0m1.719s	 0m17.508s	 3m12.496s
---------------------------------------------------------------------------------------
bash/subarray	  0m0.135s	  0m0.179s	  0m0.224s	  0m1.357s	 0m18.911s	 3m18.007s
dash/posix  	  0m0.171s	  0m0.290s	  0m0.447s	  0m3.610s	 0m17.376s	  1m8.852s
ash/posix   	  0m0.109s	  0m0.192s	  0m0.285s	  0m2.457s	 0m14.942s	 1m10.062s
ksh/posix   	  0m0.416s	  0m0.581s	  0m0.768s	  0m4.677s	 0m18.790s	 1m40.407s
bash/posix  	  0m0.409s	  0m0.739s	  0m1.145s	 0m10.048s	 0m58.449s	40m33.024s

On zsh

For large argument counts setting set -- ... with eval is very slow on zsh no matter no matter the method, save for eval 'set -- "${@:1:$# - 1}"'. Even as simple a modification as changing it to eval "set -- ${@:1:$# - 1}" (ignoring that it doesn't work for arguments with spaces) makes it two orders of magnitude slower.

value count 	      1 	      5 	     10 	    100 	   1000 	   10000
---------------------------------------------------------------------------------------
zsh/subarray	  0m0.203s	  0m0.227s	  0m0.233s	  0m0.461s	  0m3.643s	 0m38.396s
zsh/final   	  0m0.399s	  0m0.416s	  0m0.441s	  0m0.722s	  0m4.205s	 0m37.217s
zsh/posix   	  0m0.718s	  0m0.913s	  0m1.182s	  0m6.200s	 0m46.516s	42m27.224s
zsh/eval-zsh	  0m0.419s	  0m0.353s	  0m0.375s	  0m0.853s	  0m5.771s	32m59.576s

More benchmarks

For more benchmarks, including only using external tools, the c popsh tool or the naive algorithm, see this file:

https://gist.github.com/fcard/f4aec7e567da2a8e97962d5d3f025ad4#file-benchmarks-md

It's generated like this:

$ git clone https://gist.github.com/f4aec7e567da2a8e97962d5d3f025ad4.git popbench
$ cd popbench
$ sh popgen_run.sh
$ sh popbench_run.sh --fast # or without --fast if you have a day to spare
$ sh poptable.sh -g >benchmarks.md

Conclusion

This has been the result of a week-long research on the subject, and I thought I'd share it. Hopefully it's not too long, I tried to trim it to the main information with links to the gist. This was initially made as an answer to "https://stackoverflow.com/questions/20398499" but I felt the focus on POSIX made it off topic.

All the code in the gists linked here is licensed under the MIT license and is free to be used and modified under its conditions.

This is my current answer:
<pop>
# Usage
```sh
pop1() {
pop $#
eval "$POP_EXPR"
echo "$@"
}
pop2() {
pop $# 2
eval "$POP_EXPR"
echo "$@"
}
pop1 a b c #=> a b
pop1 $(seq 1 1000) #=> 1 .. 999
pop2 $(seq 1 1000) #=> 1 .. 998
```
# pop_next
Once you've created the `POP_EXPR` variable with pop, you can use the following
function to change it to omit further arguments:
<popnext>
`pop_next` is a much simpler operation than `pop` in posix shells (though it's
slightly more complex than `pop` on zsh and bash)
It's used like this:
```sh
main() {
pop $#
pop_next
eval "$POP_EXPR"
}
main 1 2 3 #=> 1
```
# POP_EXPR and variable scope
Note that if you're not going to be using `eval "$POP_EXPR"` immediately after
`pop` and `pop_next`, if you're not careful with scoping some function call
inbetween the operations could change the `POP_EXPR` variable and mess things
up. To avoid this, simply put `local POP_EXPR` at the start of every function
that uses `pop`.
```sh
f() {
local POP_EXPR
pop $#
g 1 2
eval "$POP_EXPR"
printf '%s' "f=$*"
}
g() {
local POP_EXPR
pop $#
eval "$POP_EXPR"
printf '%s, ' "g=$*"
}
f a b c #=> g=1, f=a b
```
# popgen.sh
This particular function is good enough for my purposes, but I did create a
script to generate further optimized functions.
https://gist.github.com/fcard/e26c5a1f7c8b0674c17c7554fb0cd35c#file-popgen-sh
One of the ways to improve performance without using external tools here is
to realize that having several small string concatenations is slow, so doing
them in batches makes the function considerably faster. calling the script
`popgen.sh -gN1,N2,N3` creates a pop function that handles the operations
in batches of N1, N2, or N3 depending on the argument count. The script also
contains other tricks, exemplified and explained below:
```sh
$ sh popgen \
> -g 10,100 \ # concatenate strings in batches\
> -w \ # overwrite current file\
> -x9 \ # hardcode the result of the first 9 argument counts\
> -t1000 \ # starting at argument count 1000, use external tools\
> -p posix \ # prefix to add to the function name (with a underscore)\
> -s '' \ # suffix to add to the function name (with a underscore)\
> -c \ # use the command popsh instead of seq/sed as the external tool\
> -@ \ # on zsh and bash, use the subarray method (checks on runtime)\
> -+ \ # use bash/zsh extensions (removes runtime check from -@)\
> -nl \ # don't use 'local'\
> -f \ # use 'function' syntax\
> -o pop.sh # output file
```
An equivalent to the above function can be generated with `popgen.sh -t500 -g1 -@`.
In the gist containing `popgen.sh` you will find a `popsh.c` file that can be
compiled and used as a specialized, faster alternative to the default shell
external tools, it will be used by any function generated with
`popgen.sh -c ...` if it's accessible as `popsh` by the shell.
Alternatively, you can create any function or tool named `popsh` and use
it in its place.
# Benchmark
## Benchmark functions:
The script I used for benchmarking can be found on this gist:
https://gist.github.com/fcard/f4aec7e567da2a8e97962d5d3f025ad4#file-popbench-sh
The benchmark functions are found in these lines:
https://gist.github.com/fcard/f4aec7e567da2a8e97962d5d3f025ad4#file-popbench-sh-L233-L301
The script can be used as such:
```sh
$ sh popbench.sh \
> -s dash \ # shell used by the benchmark, can be dash/bash/ash/zsh/ksh.\
> -f posix \ # function to be tested\
> -i 10000 \ # number of times that the function will be called per test\
> -a '\0' \ # replacement pattern to model arguments by index (uses sed)
> -o /dev/stdout \ # where to print the results to (concatenates, defaults to stdout)
> -n 5,10,1000 # argument sizes to test
```
It will output a `time -p` style sheet with a `real`, `user` and `sys` time values,
as well as an `int` value, for internal, that is calculated inside the benchmark
process using `date`.
## Times
The following are the `int` results of calls to
```sh
$ sh popbench.sh -s $shell -f $function -i 10000 -n 1,5,10,100,1000,10000
```
`posix` refers to the second and third clauses, `subarray` refers to the first,
while `final` refers to the whole.
```sh
<benchmark1>
```
## On zsh
For large argument counts setting `set -- ...` with eval is very slow on zsh no
matter no matter the method, save for `eval 'set -- "${@:1:$# - 1}"'`. Even as
simple a modification as changing it to `eval "set -- ${@:1:$# - 1}"`
(ignoring that it doesn't work for arguments with spaces) makes it two orders
of magnitude slower.
```sh
<benchmark2>
```
## More benchmarks
For more benchmarks, including only using external tools, the c popsh tool or the naive algorithm, see this file:
https://gist.github.com/fcard/f4aec7e567da2a8e97962d5d3f025ad4#file-benchmarks-md
It's generated like this:
```sh
$ git clone https://gist.github.com/f4aec7e567da2a8e97962d5d3f025ad4.git popbench
$ cd popbench
$ sh popgen_run.sh
$ sh popbench_run.sh --fast # or without --fast if you have a day to spare
$ sh poptable.sh -g >benchmarks.md
```
# Conclusion
This has been the result of a week-long research on the subject, and I thought
I'd share it. Hopefully it's not *too* long, I tried to trim it to the main
information with links to the gist. This was initially made as an answer to
"https://stackoverflow.com/questions/20398499" but I felt the focus on POSIX
made it off topic.
All the code in the gists linked here is licensed under the MIT license and is
free to be used and modified under its conditions.
NL="
"
find_popsh_start() {
local line
while IFS= read -r line; do
case "$line" in
"pop() {"*) return ;;
esac
done
}
read_popsh() {
local line
find_popsh_start
popsh='```bash'
popsh="$popsh${NL}pop() {"
while IFS= read -r line; do
popsh="$popsh$NL$line"
case "$line" in
"}") break ;;
esac
done
popsh="$popsh$NL"'```'
}
find_popnext_start() {
local line
while IFS= read -r line; do
case "$line" in
"pop_next() {"*) return ;;
esac
done
}
read_popnext() {
local line
find_popnext_start
popnext='```bash'
popnext="$popnext${NL}pop_next() {"
while IFS= read -r line; do
popnext="$popnext$NL$line"
case "$line" in
"}") break ;;
esac
done
popnext="$popnext$NL"'```'
}
first() {
printf '%s' "$1"
}
rest() {
shift
printf '%s' "$*"
}
Line="---------------------------------------------------------------------------------------"
value_count_header() {
local line="$NL$Line"
printf '%-12s\t%7s \t%7s \t%7s \t%7s \t%7s \t%8s%s' 'value count' 1 5 10 100 1000 10000 "$line"
}
format_benchmark_line() {
local line="$1"
local key="$(first $line)"
local result="$(printf '%-12s' "$key")"
for word in $(echo "${line#$key}" | sed '{ s/ //g; s/~//g; }'); do
result="$result$(printf '\t%10s' "$word")"
done
printf '%s\n' "$result"
}
read_benchmark1() {
local line subarray final posix
benchmark1="$(value_count_header)"
while IFS= read -r line; do
case "$line" in
dash/posix*|ash/posix*|ksh/posix*|bash/posix*)
posix="$posix$NL$(format_benchmark_line "$line")"
;;
dash/final*|ash/final*|ksh/final*|bash/final*)
final="$final$NL$(format_benchmark_line "$line")"
;;
bash/subarray*)
subarray="$subarray$NL$(format_benchmark_line "$line")"
;;
esac
done
benchmark1="$benchmark1$final$NL$Line$subarray$posix"
}
read_benchmark2() {
local line
benchmark2="$(value_count_header)"
while IFS= read -r line; do
case "$line" in
zsh/subarray*|zsh/final*|zsh/posix*|zsh/eval-zsh*)
benchmark2="$benchmark2$NL$(format_benchmark_line "$line")"
;;
esac
done
}
read_benchmark3() {
local line
benchmark3="$(value_count_header)"
while IFS= read -r line; do
case "$line" in
dash/final*|ash/final*|ksh/final*|bash/final*)
benchmark3="$benchmark3$NL$(format_benchmark_line "$line")"
;;
esac
done
}
format_item() {
printf '%s' "$1" | tr '\n' '\r' | sed '{ s/\\/\\\\/g; s/\//\\\//g; }'
}
main() {
read_popsh <pop.sh
read_popnext <pop.sh
read_benchmark1 <benchmarks
read_benchmark2 <benchmarks
read_benchmark3 <benchmarks
popsh="$(format_item "$popsh")"
popnext="$(format_item "$popnext")"
benchmark1="$(format_item "$benchmark1")"
benchmark2="$(format_item "$benchmark2")"
benchmark3="$(format_item "$benchmark3")"
sed "{
s/<pop>/$popsh/g;
s/<popnext>/$popnext/g;
s/<benchmark1>/$benchmark1/g;
s/<benchmark2>/$benchmark2/g;
s/<benchmark3>/$benchmark3/g;
}" stackoverflow.md.template | tr '\r' '\n'
}
main "$@"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment