#!/bin/sh

. /lib/functions.sh
. /lib/functions/system.sh

#
# factory set -sn 22018C010005 -date 20200526 -mac 00:19:55:02:67:32 -hwver 3.0.0.1 -product WooLink2102-W-4G
# Set SN to 22018C010005
# set MAC to 00:19:55:02:67:32
# set DATE to 20200526
# set HWVER to 3.0.0.1
# set PRODUCT to WooLink2102-W-4G
# 
# factory get
# PRODUCT:	   WooLink2102-W-4G
# SN:		   22018C010005
# DATE:		   20200526
# HWVER:	   3.0.0.1
# MAC:		   00:19:55:02:67:32
#

help()
{
	cat <<_HELP_
Setup hardware information.
Usage: $0 {set|get} [-sn SN] [-date DATE ] [-mac MAC ] [-hwver HWVER ] [-product PRODUCT]
		-sn SN # board SN
		-date DATE # manufactory date
		-mac MAC # base MAC addr
		-hwver HWVER # hardware version
		-product PRODUCT # product name
Example:
	$0 set -sn 22018C010005 -date 20200526 -mac 00:19:55:02:67:32 -hwver 3.0.0.1 -product WooLink2102-W-4G
	$0 get 
_HELP_
}

case "$1" in
	set)action="$1";; 
	get)action="$1";;
	*) help; exit 1;;
esac
shift 1

while [ -n "$1" ]; do
	case $1 in
		-sn) sn="$2";shift 2;;
		-date) date="$2";shift 2;;
		-mac) mac="$2";shift 2;;
		-hwver) hwver="$2";shift 2;;
		-product) product="$2";shift 2;;
		--) shift;break;;
		-*) help;exit 1;;
		*) break;;
	esac
done

set_sn()
{
	echo "Set SN to $1"
    fw_setenv SN
    fw_setenv SN
	fw_setenv SN $1
}

set_mac()
{
	echo "set MAC to $1"
	local board=$(board_name)

	case "$board" in
		HuiWei|QIYANG|QIYANG_2|QIYANG_IMX6ULL|generic|HuiWei-NAND|FORLINX_IMX6ULL|QIYANG_IMX6ULL_2|CarV2|QIYANG_BAU3|WooLink2F6280_W_4G)
			mac_1=$(macaddr_add "$1" 1)
			fw_setenv ethaddr $1
			fw_setenv ethaddr1 $mac_1
			;;
		WOOLINK-MT7621-512M-256M)
			# mtd-mac-address = <&factory 0xe000>;
			mac=$1
			mac_2=$(macaddr_add "$1" 2)
			mac_3=$(macaddr_add "$1" 3)
			partname=Factory
			part='/dev/mtd3'
			dd if=$part of=/tmp/factory.bin bs=4096 2>/dev/null

			offset=$((0xe000))
			set -- $(echo "$mac" | sed 's,:, ,g')
			#echo "New MAC address: $1:$2:$3:$4:$5:$6"
			echo -ne "\x$1\x$2\x$3\x$4\x$5\x$6" | dd of=/tmp/factory.bin conv=notrunc bs=1 count=6 seek=$offset 2>/dev/null

			offset=$((0x4))
			set -- $(echo "$mac_2" | sed 's,:, ,g')
			#echo "New MAC address: $1:$2:$3:$4:$5:$6"
			echo -ne "\x$1\x$2\x$3\x$4\x$5\x$6" | dd of=/tmp/factory.bin conv=notrunc bs=1 count=6 seek=$offset 2>/dev/null

			offset=$((0x8004))
			set -- $(echo "$mac_3" | sed 's,:, ,g')
			#echo "New MAC address: $1:$2:$3:$4:$5:$6"
			echo -ne "\x$1\x$2\x$3\x$4\x$5\x$6" | dd of=/tmp/factory.bin conv=notrunc bs=1 count=6 seek=$offset 2>/dev/null

			mtd write /tmp/factory.bin $part 2>/dev/null
			rm /tmp/factory.bin
			;;
		WOOLINK-MT7628-128M-32M)
			# mtd-mac-address = <&factory 0x28>;
			mac=$1
			partname=factory
			offset=$((0x28))

			part=$(find_mtd_part "$partname")
			set -- $(echo "$mac" | sed 's,:, ,g')
			#echo "New MAC address: $1:$2:$3:$4:$5:$6"
			echo -ne "\x$1\x$2\x$3\x$4\x$5\x$6" | dd of=$part conv=notrunc bs=1 count=6 seek=$offset 2>/dev/null
			;;
		woolink,mt7621-64m)
			# mtd-mac-address = <&factory 0xe000>;
			mac=$1
			partname=factory
			offset=$((0xe000))

			part=$(find_mtd_part "$partname")
			set -- $(echo "$mac" | sed 's,:, ,g')
			#echo "New MAC address: $1:$2:$3:$4:$5:$6"
			echo -ne "\x$1\x$2\x$3\x$4\x$5\x$6" | dd of=$part conv=notrunc bs=1 count=6 seek=$offset 2>/dev/null
			;;
	esac
}

set_date()
{
	echo "set DATE to $1"
	fw_setenv DATE $1
}

set_hwver()
{
	echo "set HWVER to $1"
	fw_setenv HWVER $1
}

set_product()
{
	echo "set PRODUCT to $1"
	fw_setenv PRODUCT
	fw_setenv product
	fw_setenv PRODUCT $1
}

init_env()
{
	local board=$(board_name)
	case "$board" in
		QIYANG|QIYANG_2|generic|CarV2)
			fw_setenv baudrate 115200
			fw_setenv bootcmd 'run bootcmd_mmc'
			fw_setenv bootcmd_mfg 'run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};'
			fw_setenv bootcmd_mmc 'run loadimage;run mmcboot'
			fw_setenv bootcmd_net 'run netboot'
			fw_setenv bootdelay 1
			fw_setenv console ttymxc0
			fw_setenv ethact FEC0
			fw_setenv ethprime FEC
			fw_setenv fdt_addr 0x83000000
			fw_setenv fdt_file imx6ul-qiyang.dtb
			fw_setenv image zImage
			fw_setenv initrd_addr 0x83800000
			fw_setenv initrd_high 0xffffffff
			fw_setenv ipaddr 192.168.1.71
			fw_setenv loadaddr 0x80800000
			fw_setenv loadfdt 'mmc dev ${mmcdev};mmc read ${fdt_addr} 0x4800 0x2000'
			fw_setenv loadimage 'mmc dev ${mmcdev};mmc read ${loadaddr} 0x800 0x4000'
			fw_setenv mfgtool_args 'setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" clk_ignore_unused'
			fw_setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=${rootfs} ethaddr=${ethaddr} ethaddr1=${ethaddr1} ${display}'
			fw_setenv mmcboot 'echo Booting from mmc ...; run mmcargs; run loadfdt; bootz ${loadaddr} - ${fdt_addr};'
			fw_setenv mmcdev 1
			fw_setenv netargs 'setenv bootargs console=${console},${baudrate} ${smp} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp'
			fw_setenv netboot 'echo Booting from net ...; run netargs; tftp ${loadaddr} ${image}; tftp ${fdt_addr} ${fdt_file};bootz ${loadaddr} - ${fdt_addr};'
			fw_setenv nfsroot /home2/share/shim/imx6ul/rootfs
			fw_setenv panel QY_LCD800X480
			fw_setenv rootfs /dev/mmcblk1p1 rootwait rw
			fw_setenv rootfs_ip 192.168.1.7
			fw_setenv serverip 192.168.1.73
			fw_setenv updatefdt 'tftp ${fdt_addr} ${fdt_file};mmc dev ${mmcdev};mmc write ${fdt_addr} 0x4800 0x2000'
			fw_setenv updatekernel 'tftp ${loadaddr} ${image};mmc dev ${mmcdev};mmc write ${loadaddr} 0x800 0x4000'
			;;
		QIYANG_IMX6ULL_2|WooLink2F6280_W_4G|QIYANG_IMX6ULL|QIYANG_BAU3)
			fw_setenv baudrate 115200
			fw_setenv boot_fdt try
			fw_setenv bootcmd run bootcmd_mmc
			fw_setenv bootcmd_mfg 'run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};'
			fw_setenv bootcmd_mmc 'run loadimage;run mmcboot'
			fw_setenv bootdelay 3
			fw_setenv bootscript 'echo Running bootscript from mmc ...; source'
			fw_setenv console ttymxc0
			fw_setenv ethaddr 08:00:3e:26:0a:5b
			fw_setenv ethaddr1 08:00:3e:26:0a:5c
			fw_setenv ethprime FEC
			fw_setenv fdt_addr 0x83000000
			if [ "${board}" = "WooLink2F6280_W_4G" ] ; then
				fw_setenv fdt_file imx6ull-woolink2f6280w4g.dtb
			else
				fw_setenv fdt_file imx6ull-14x14-qiyang.dtb
			fi
			fw_setenv fdt_high 0xffffffff
			fw_setenv findfdt 'if test $fdt_file = undefined; then if test $board_name = EVK && test $board_rev = 9X9; then setenv fdt_file imx6ull-9x9-evk.dtb; fi; if test $board_name = EVK && test $board_rev = 14X14; then setenv fdt_file imx6ull-14x14-evk.dtb; fi; if test $fdt_file = undefined; then echo WARNING: Could not determine dtb to use; fi; fi;'
			fw_setenv image zImage
			fw_setenv initrd_addr 0x83800000
			fw_setenv initrd_high 0xffffffff
			fw_setenv ip_dyn yes
			fw_setenv loadaddr 0x80800000
			fw_setenv loadbootscript 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};'
			fw_setenv loadfdt 'mmc dev ${mmcdev};mmc read ${fdt_addr} 0x4800 0x2000'
			fw_setenv loadimage 'mmc dev ${mmcdev};mmc read ${loadaddr} 0x800 0x4000'
			fw_setenv mfgtool_args 'setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" clk_ignore_unused '
			fw_setenv mmcargs 'setenv bootargs console=${console},${baudrate} root=${mmcroot} ethaddr=${ethaddr} ethaddr1=${ethaddr1}'
			fw_setenv mmcautodetect yes
			fw_setenv mmcboot 'echo Booting from mmc ...; run mmcargs; run loadfdt; bootz ${loadaddr} - ${fdt_addr};'
			fw_setenv mmcdev 1
			fw_setenv mmcpart 1
			fw_setenv mmcroot '/dev/mmcblk1p2 rootwait rw'
			fw_setenv netargs 'setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp'
			fw_setenv netboot 'echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;'
			fw_setenv panel TFT43AB
			fw_setenv script boot.scr
			;;
		HuiWei-NAND)
			fw_setenv baudrate 115200
			fw_setenv nandargs 'setenv bootargs console=${console},${baudrate} ubi.mtd=3 root=ubi0:rootfs rootfstype=ubifs cma=96M mtdparts=gpmi-nand:4m(boot),16m(kernel),512k(dtb),-(rootfs) ethaddr=${ethaddr}'
			fw_setenv bootcmd 'nand read ${loadaddr} 0x400000 0x800000;nand read ${fdt_addr} 0x1400000 0x100000; run nandargs; bootz ${loadaddr} - ${fdt_addr}'
			fw_setenv bootdelay 5
			fw_setenv console ttymxc0
			fw_setenv ethact FEC0
			fw_setenv ethprime FEC
			fw_setenv fdt_addr 0x83000000
			fw_setenv fdt_high 0xffffffff
			fw_setenv ipaddr 10.3.1.55
			fw_setenv loadaddr 0x80800000
			fw_setenv panel CLAA-WVGA
			fw_setenv serverip 10.3.1.229
			;;
		HuiWei)
			fw_setenv baudrate 115200
			fw_setenv bootcmd 'mmc dev ${mmcdev}; if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then if run loadfdt; then run mmcboot; else run netboot; fi; else run netboot; fi; fi; else run netboot; fi'
			fw_setenv bootdelay 10
			fw_setenv bootscript 'echo Running bootscript from mmc ...; source'
			fw_setenv console ttymxc0
			fw_setenv ethact FEC0
			fw_setenv ethprime FEC
			fw_setenv fdt_addr 0x83000000
			fw_setenv fdt_file hw6ul-lite.dtb
			fw_setenv fdt_high 0xffffffff
			fw_setenv image zImage
			fw_setenv initrd_high 0xffffffff
			fw_setenv mmcdev 1
			fw_setenv mmcpart 1
			fw_setenv mmcroot /dev/mmcblk1p2 rootwait rw
			fw_setenv loadaddr 0x80800000
			fw_setenv loadbootscript 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};'
			fw_setenv loadfdt 'fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}'
			fw_setenv loadimage 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}'
			fw_setenv mmcargs 'setenv bootargs console=${console},${baudrate} cma=96M root=${mmcroot} ethaddr=${ethaddr}'
			fw_setenv mmcautodetect yes
			fw_setenv mmcboot 'echo Booting from mmc ...; run mmcargs; bootz ${loadaddr} - ${fdt_addr};'
			fw_setenv netargs 'setenv bootargs console=${console},${baudrate} cma=96M root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp'
			fw_setenv netboot 'echo Booting from net ...; run netargs; tftp ${image}; if tftp ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else echo WARN: Cannot load the DT; fi;'
			fw_setenv panel CLAA-WVGA
			fw_setenv script boot.scr
			;;
		WOOLINK-MT7621-512M-256M)
			;;
		WOOLINK-MT7628-128M-32M)
			;;
		FORLINX_IMX6ULL)
			fw_setenv baudrate 115200
			fw_setenv board_name EVK
			fw_setenv board_rev 14X14
			fw_setenv boot_fdt try
			fw_setenv bootcmd 'if mmc rescan; then if run loadbootscript; then run bootscript; else if test ${bootdev} = sd1; then echo update from sd ???;run update_from_sd;else echo boot from emmc ???;if run loadimage; then run mmcboot; elif run loadimagebak; then run mmcboot; else run netboot; fi; fi; fi; else run netboot; fi'
			fw_setenv bootcmd_mfg 'run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};'
			fw_setenv bootdelay 1
			fw_setenv bootdev mmc2
			fw_setenv bootscript 'echo Running bootscript from mmc ...; source'
			fw_setenv console ttymxc0
			fw_setenv ethact FEC0
			fw_setenv ethprime FEC
			fw_setenv fdt_addr 0x83000000
			fw_setenv fdt_file imx6ull-S-emmc-1280x800c10dot1.dtb
			fw_setenv fdt_high 0xffffffff
			fw_setenv fileaddr 83800000
			fw_setenv filesize 5fa38
			fw_setenv image zImage
			fw_setenv imagebak zImagebak
			fw_setenv initrd_addr 0x83800000
			fw_setenv initrd_high 0xffffffff
			fw_setenv ip_dyn yes
			fw_setenv loadaddr 0x80800000
			fw_setenv loadbootscript 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};'
			fw_setenv loadfdt 'fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}'
			fw_setenv loadfdtbak 'fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_filebak}'
			fw_setenv loadimage 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}'
			fw_setenv loadimagebak 'fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${imagebak}'
			fw_setenv mfgtool_args 'setenv bootargs console=${console},${baudrate} rdinit=/linuxrc g_mass_storage.stall=0 g_mass_storage.removable=1 g_mass_storage.file=/fat g_mass_storage.ro=1 g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF g_mass_storage.iSerialNumber="" clk_ignore_unused '
			fw_setenv mmcargs 'setenv bootargs console=${console},${baudrate} calibrate=${calibrate}  root=${mmcroot}'
			fw_setenv mmcautodetect yes
			fw_setenv mmcboot 'echo Booting from mmc ...; run mmcargs; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;'
			fw_setenv mmcdev 1
			fw_setenv mmcpart 1
			fw_setenv mmcroot '/dev/mmcblk1p2 rootwait rw'
			fw_setenv netargs 'setenv bootargs console=${console},${baudrate}  root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp'
			fw_setenv netboot 'echo Booting from net ...; run netargs; if test ${ip_dyn} = yes; then setenv get_cmd dhcp; else setenv get_cmd tftp; fi; ${get_cmd} ${image}; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if ${get_cmd} ${fdt_addr} ${fdt_file}; then bootz ${loadaddr} - ${fdt_addr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;'
			fw_setenv panel TFT101AB-1280x800
			fw_setenv script boot.scr
			fw_setenv splashimage 0x83800000
			fw_setenv splashpos 'm,m'
			fw_setenv update_emmc 'mmc rescan;fatload mmc 0 ${loadaddr} /sdrun/${image}; fatload mmc 0 ${initrd_addr} /sdrun/ramdisk.img.u; fatload mmc 0 ${fdt_addr} /sdrun/imx6ull-14x14-evk.dtb; setenv bootargs console=${console},${baudrate} rdinit=/linuxrc;  bootz ${loadaddr} ${initrd_addr} ${fdt_addr};'
			fw_setenv update_from_sd 'run update_emmc;'
			;;
		unielec,u7623-02-emmc-512m)
			fw_setenv arch arm
			fw_setenv baudrate 115200
			fw_setenv board mt7623_evb
			fw_setenv board_name mt7623_evb
			fw_setenv boot0 'tftpboot; bootm'
			fw_setenv boot1 'tftpboot;run boot_wr_img;run boot_rd_img;bootm'
			fw_setenv boot2 'run boot_rd_img;bootm'
			fw_setenv boot3 'tftpboot ${loadaddr} u-boot-mtk.bin;run wr_uboot'
			fw_setenv boot4 'loadb;run boot_wr_img;run boot_rd_img;bootm'
			fw_setenv boot5 'loadb;run wr_uboot'
			fw_setenv boot_rd_img 'mmc device 0;mmc read ${loadaddr} 0xA00 1;image_blks 512;mmc read ${loadaddr} 0xA00 ${img_blks}'
			fw_setenv boot_wr_img 'image_check; if test ${img_result} = good; then image_blks 512 ${filesize};mmc device 0;mmc write ${loadaddr} 0xA00 ${img_blks}; fi'
			fw_setenv bootargs 'console=tty0 console=ttyMT2,115200n1 root=/dev/ram lcm=1-hx8392a_vdo_cmd fps=4433 vram=13631488 androidboot.selinux=disabled bootprof.pl_t=1149 bootprof.lk_t=9849 printk.disable_uart=0 boot_reason=0 androidboot.serialno=0123456789ABCDEF androidboot.bootreason=power_key'
			fw_setenv bootcmd No
			fw_setenv bootdelay 3
			fw_setenv bootfile iverson_uImage
			fw_setenv bootmenu_0 '1. System Load Linux to SDRAM via TFTP.=run boot0'
			fw_setenv bootmenu_1 '2. System Load Linux Kernel then write to Flash via TFTP.=run boot1'
			fw_setenv bootmenu_2 '3. Boot system code via Flash.=run boot2'
			fw_setenv bootmenu_3 '4. System Load Boot Loader then write to Flash via TFTP.=run boot3'
			fw_setenv bootmenu_4 '5. System Load Linux Kernel then write to Flash via Serial.=run boot4'
			fw_setenv bootmenu_5 '6. System Load Boot Loader then write to Flash via Serial.=run boot5'
			fw_setenv bootmenu_delay 30
			fw_setenv cpu armv7
			fw_setenv ethact Eth0
			fw_setenv ethaddr 00:0C:E7:11:22:33
			fw_setenv ipaddr 10.10.10.254
			fw_setenv loadaddr 0x84000000
			fw_setenv serverip 10.10.10.3
			fw_setenv soc mt7623
			fw_setenv stderr serial
			fw_setenv stdin serial
			fw_setenv stdout serial
			fw_setenv vendor mediatek
			fw_setenv wr_uboot 'uboot_check;if test ${uboot_result} = good; then mmc device 0;mmc write ${loadaddr} 0x200 0x200;reset; fi'
			;;
	esac

}

main()
{
	if [ "$action" == "set" ];then
		init_env

		if [ -n "$sn" ]
		then
			set_sn $sn
		fi

		if [ -n "$mac" ]
		then
			set_mac $mac
		fi
		
		if [ -n "$date" ]
		then
			set_date $date
		fi
		
		if [ -n "$hwver" ]
		then
			set_hwver $hwver
		fi
		
		if [ -n "$product" ]
		then
			set_product $product
		fi
		reboot -n 2
	elif [ "$action" == "get" ];then
		local board=$(board_name)
		local product=`fw_printenv | grep -i ^product= | awk -F = '{print $2}' | tr '\n' '\0'`
		local sn=`fw_printenv | grep -i ^sn= | awk -F = '{print $2}' | tr '\n' '\0'`
		local date=`fw_printenv | grep -i ^date= | awk -F = '{print $2}' | tr '\n' '\0'`
		local hwver=`fw_printenv | grep -i ^HWVER= | awk -F = '{print $2}' | tr '\n' '\0'`
		
		case "$board" in
			HuiWei|QIYANG|QIYANG_2|QIYANG_IMX6ULL|generic|HuiWei-NAND|QIYANG_IMX6ULL_2|CarV2|QIYANG_BAU3|WooLink2F6280_W_4G)
				mac=`fw_printenv | grep -i ^ethaddr= | awk -F = '{print $2}' | tr '\n' '\0'`
				;;
			WOOLINK-MT7621-512M-256M)
				# mtd-mac-address = <&factory 0xe000>;
				mac=$(mtd_get_mac_binary Factory 0xe000)
				;;
			WOOLINK-MT7628-128M-32M)
				# mtd-mac-address = <&factory 0x28>;
				mac=$(mtd_get_mac_binary factory 0x28)
				;;
			woolink,mt7621-64m)
				# mtd-mac-address = <&factory 0xe000>;
				mac=$(mtd_get_mac_binary factory 0xe000)
				;;
		esac

		echo "PRODUCT=$product"
		echo "SN=$sn"
		echo "DATE=$date"
		echo "HWVER=$hwver"
		echo "MAC=$mac"
	else
		help
		exit 1
	fi
}

main

