// Path: src/util/Range.java
// public class Range {
// 
// 	private double min;
// 	private double max;
// 
// 	/**
// 	 * Creates a new range
// 	 * @param min The minimum bound of the range
// 	 * @param max The maximum bound
// 	 */
// 	public Range(double min, double max) {
// 		this.min = min;
// 		this.max = max;
// 		checkRangeValidity(min, max);
// 	}
// 
// 	/**
// 	 * Parses a range from the given string
// 	 * @param str The string to parse
// 	 * @throws NumberFormatException if the range didn't contain numeric values
// 	 */
// 	public Range(String str) throws NumberFormatException {
// 		if (str.indexOf("-") != str.lastIndexOf("-")) {
// 			/* TODO */
// 			throw new Error("Ranges with negative values not supported");
// 		}
// 
// 		if (str.substring(1).contains("-")) {
// 			/* has "-" but not as the first char -> range */
// 			String[] vals = str.split("-");
// 			this.min = Double.parseDouble(vals[0]);
// 			this.max = Double.parseDouble(vals[1]);
// 		} else {
// 			this.min = this.max = Double.parseDouble(str);
// 		}
// 		checkRangeValidity(min, max);
// 	}
// 
// 	/**
// 	 * Checks if the given values for a valid range
// 	 * @param min The minimum value
// 	 * @param max The maximum value
// 	 * @throws Error if min > max
// 	 */
// 	private void checkRangeValidity(double min, double max) {
// 		if (min > max) {
// 			throw new Error("Minimum value is larger than maximum");
// 		}
// 	}
// 
// 	/**
// 	 * Returns true if the given value is within this range [min, max],
// 	 * min and max included
// 	 * @param value The value to check
// 	 * @return True if the given value is in the range, false if not
// 	 */
// 	public boolean isInRange(double value) {
// 		return (value >= min && value <= max);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "Range [" + min + ", " + max + "]";
// 	}
// 
// }


import java.io.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Properties;
import java.util.Scanner;
import java.util.Set;
import java.util.Stack;
import util.Range;
		return values;
	}

	/**
	 * Returns an array of CSV setting integer values
	 * @param name Name of the setting
	 * @param expectedCount how many values are expected
	 * @return Array of values that were comma-separated
	 * @see #getCsvSetting(String, int)
	 */
	public int[] getCsvInts(String name, int expectedCount) {
		return convertToInts(getCsvDoubles(name, expectedCount), name);
	}

	/**
	 * Returns an array of CSV setting integer values
	 * @param name Name of the setting
	 * @return Array of values that were comma-separated
	 * @see #getCsvSetting(String, int)
	 */
	public int[] getCsvInts(String name) {
		return convertToInts(getCsvDoubles(name), name);
	}

	/**
	 * Returns comma-separated ranges (e.g., "3-5, 17-20, 15")
	 * @param name Name of the setting
	 * @return Array of ranges that were comma-separated in the setting
	 * @throws SettingsError if something went wrong with reading
	 */
// Path: src/util/Range.java
// public class Range {
// 
// 	private double min;
// 	private double max;
// 
// 	/**
// 	 * Creates a new range
// 	 * @param min The minimum bound of the range
// 	 * @param max The maximum bound
// 	 */
// 	public Range(double min, double max) {
// 		this.min = min;
// 		this.max = max;
// 		checkRangeValidity(min, max);
// 	}
// 
// 	/**
// 	 * Parses a range from the given string
// 	 * @param str The string to parse
// 	 * @throws NumberFormatException if the range didn't contain numeric values
// 	 */
// 	public Range(String str) throws NumberFormatException {
// 		if (str.indexOf("-") != str.lastIndexOf("-")) {
// 			/* TODO */
// 			throw new Error("Ranges with negative values not supported");
// 		}
// 
// 		if (str.substring(1).contains("-")) {
// 			/* has "-" but not as the first char -> range */
// 			String[] vals = str.split("-");
// 			this.min = Double.parseDouble(vals[0]);
// 			this.max = Double.parseDouble(vals[1]);
// 		} else {
// 			this.min = this.max = Double.parseDouble(str);
// 		}
// 		checkRangeValidity(min, max);
// 	}
// 
// 	/**
// 	 * Checks if the given values for a valid range
// 	 * @param min The minimum value
// 	 * @param max The maximum value
// 	 * @throws Error if min > max
// 	 */
// 	private void checkRangeValidity(double min, double max) {
// 		if (min > max) {
// 			throw new Error("Minimum value is larger than maximum");
// 		}
// 	}
// 
// 	/**
// 	 * Returns true if the given value is within this range [min, max],
// 	 * min and max included
// 	 * @param value The value to check
// 	 * @return True if the given value is in the range, false if not
// 	 */
// 	public boolean isInRange(double value) {
// 		return (value >= min && value <= max);
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return "Range [" + min + ", " + max + "]";
// 	}
// 
// }


// Path: src/core/Settings.java
import java.io.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Properties;
import java.util.Scanner;
import java.util.Set;
import java.util.Stack;
import util.Range;

		return values;
	}

	/**
	 * Returns an array of CSV setting integer values
	 * @param name Name of the setting
	 * @param expectedCount how many values are expected
	 * @return Array of values that were comma-separated
	 * @see #getCsvSetting(String, int)
	 */
	public int[] getCsvInts(String name, int expectedCount) {
		return convertToInts(getCsvDoubles(name, expectedCount), name);
	}

	/**
	 * Returns an array of CSV setting integer values
	 * @param name Name of the setting
	 * @return Array of values that were comma-separated
	 * @see #getCsvSetting(String, int)
	 */
	public int[] getCsvInts(String name) {
		return convertToInts(getCsvDoubles(name), name);
	}

	/**
	 * Returns comma-separated ranges (e.g., "3-5, 17-20, 15")
	 * @param name Name of the setting
	 * @return Array of ranges that were comma-separated in the setting
	 * @throws SettingsError if something went wrong with reading
	 */
	public Range[] getCsvRanges(String name) {