func UnionUint8Ptr(arrList ...[]*uint8) []*uint8 {
	resultMap := make(map[uint8]struct{})
	var resultArr []*uint8
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
UnionUint8Ptr return a set that is the union of the input sets
repeated value within list parameter will be ignored
package fp
func UnionInt(arrList ...[]int) []int {
	resultMap := make(map[int]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]int, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionIntPtr(arrList ...[]*int) []*int {
	resultMap := make(map[int]struct{})
	var resultArr []*int
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionInt64(arrList ...[]int64) []int64 {
	resultMap := make(map[int64]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]int64, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionInt64Ptr(arrList ...[]*int64) []*int64 {
	resultMap := make(map[int64]struct{})
	var resultArr []*int64
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionInt32(arrList ...[]int32) []int32 {
	resultMap := make(map[int32]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]int32, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionInt32Ptr(arrList ...[]*int32) []*int32 {
	resultMap := make(map[int32]struct{})
	var resultArr []*int32
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionInt16(arrList ...[]int16) []int16 {
	resultMap := make(map[int16]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]int16, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionInt16Ptr(arrList ...[]*int16) []*int16 {
	resultMap := make(map[int16]struct{})
	var resultArr []*int16
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionInt8(arrList ...[]int8) []int8 {
	resultMap := make(map[int8]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]int8, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionInt8Ptr(arrList ...[]*int8) []*int8 {
	resultMap := make(map[int8]struct{})
	var resultArr []*int8
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionUint(arrList ...[]uint) []uint {
	resultMap := make(map[uint]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]uint, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionUintPtr(arrList ...[]*uint) []*uint {
	resultMap := make(map[uint]struct{})
	var resultArr []*uint
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionUint64(arrList ...[]uint64) []uint64 {
	resultMap := make(map[uint64]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]uint64, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionUint64Ptr(arrList ...[]*uint64) []*uint64 {
	resultMap := make(map[uint64]struct{})
	var resultArr []*uint64
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionUint32(arrList ...[]uint32) []uint32 {
	resultMap := make(map[uint32]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]uint32, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionUint32Ptr(arrList ...[]*uint32) []*uint32 {
	resultMap := make(map[uint32]struct{})
	var resultArr []*uint32
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionUint16(arrList ...[]uint16) []uint16 {
	resultMap := make(map[uint16]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]uint16, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}
func UnionUint16Ptr(arrList ...[]*uint16) []*uint16 {
	resultMap := make(map[uint16]struct{})
	var resultArr []*uint16
	for _, arr := range arrList {
		for _, v := range arr {
			_, ok := resultMap[*v]
			if !ok {
				resultMap[*v] = struct{}{}
				resultArr = append(resultArr, v)
			}
		}
	}
	return resultArr
}
func UnionUint8(arrList ...[]uint8) []uint8 {
	resultMap := make(map[uint8]struct{})
	for _, arr := range arrList {
		for _, v := range arr {
			resultMap[v] = struct{}{}
		}
	}
	resultArr := make([]uint8, len(resultMap))
	i := 0
	for k := range resultMap {
		resultArr[i] = k
		i++
	}
	return resultArr
}