// Path: src/main/java/io/openio/sds/common/Check.java
// public static void checkArgument(boolean condition, String msg) {
//     if (!condition)
//         throw new IllegalArgumentException(msg);
// }
// 
// Path: src/main/java/io/openio/sds/common/MoreObjects.java
// public class MoreObjects {
// 
//     public static ToStringHelper toStringHelper(String name) {
//         return new ToStringHelper(name);
//     }
// 
//     public static ToStringHelper toStringHelper(Object o) {
//         return new ToStringHelper(o.getClass().getSimpleName());
//     }
// 
//     public static class ToStringHelper {
// 
//         private String name;
//         private HashMap<String, Object> fields = new HashMap<String, Object>();
//         private boolean skipNulls = false;
// 
//         private ToStringHelper(String name) {
//             this.name = name;
//         }
// 
//         public ToStringHelper add(String key, Object value) {
//             if (null != key && (null != value || !skipNulls))
//                 fields.put(key, value);
//             return this;
//         }
//         
//         public ToStringHelper omitNullValues(){
//             this.skipNulls = true;
//             return this;
//         }
// 
//         @Override
//         public String toString() {
//             StringBuilder sb = new StringBuilder(name)
//                     .append("={");
//             for (Entry<String, Object> e : fields.entrySet()) {
//                 sb.append("\"")
//                 .append(e.getKey())
//                 .append("\":\"")
//                 .append(e.getValue())
//                 .append("\",");
//             }
// 
//             return sb.replace(sb.length() - 1, sb.length(), "}")
//                     .toString();
//         }
//     }
// }


import static io.openio.sds.common.Check.checkArgument;
import static java.lang.Integer.parseInt;
import static java.lang.String.format;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import io.openio.sds.common.MoreObjects;
        if (null == m.group(1)) {
            checkArgument(null != m.group(2), "useless range");
            return upTo(parseInt(m.group(2)));
        }
        return (null == m.group(2)) ? from(parseInt(m.group(1)))
                : between(parseInt(m.group(1)), parseInt(m.group(2)));
    }

    public long from() {
        return from;
    }

    public long to() {
        return to;
    }

    public String headerValue() {
        return to < 0
                ? format("bytes=%d-", from)
                : format("bytes=%d-%d", from, to);
    }

    public String rangeValue() {
        return to < 0
                ? format("%d-", from)
                : format("%d-%d", from, to);
    }

    @Override
    public String toString() {
// Path: src/main/java/io/openio/sds/common/Check.java
// public static void checkArgument(boolean condition, String msg) {
//     if (!condition)
//         throw new IllegalArgumentException(msg);
// }
// 
// Path: src/main/java/io/openio/sds/common/MoreObjects.java
// public class MoreObjects {
// 
//     public static ToStringHelper toStringHelper(String name) {
//         return new ToStringHelper(name);
//     }
// 
//     public static ToStringHelper toStringHelper(Object o) {
//         return new ToStringHelper(o.getClass().getSimpleName());
//     }
// 
//     public static class ToStringHelper {
// 
//         private String name;
//         private HashMap<String, Object> fields = new HashMap<String, Object>();
//         private boolean skipNulls = false;
// 
//         private ToStringHelper(String name) {
//             this.name = name;
//         }
// 
//         public ToStringHelper add(String key, Object value) {
//             if (null != key && (null != value || !skipNulls))
//                 fields.put(key, value);
//             return this;
//         }
//         
//         public ToStringHelper omitNullValues(){
//             this.skipNulls = true;
//             return this;
//         }
// 
//         @Override
//         public String toString() {
//             StringBuilder sb = new StringBuilder(name)
//                     .append("={");
//             for (Entry<String, Object> e : fields.entrySet()) {
//                 sb.append("\"")
//                 .append(e.getKey())
//                 .append("\":\"")
//                 .append(e.getValue())
//                 .append("\",");
//             }
// 
//             return sb.replace(sb.length() - 1, sb.length(), "}")
//                     .toString();
//         }
//     }
// }


// Path: src/main/java/io/openio/sds/models/Range.java
import static io.openio.sds.common.Check.checkArgument;
import static java.lang.Integer.parseInt;
import static java.lang.String.format;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import io.openio.sds.common.MoreObjects;

        if (null == m.group(1)) {
            checkArgument(null != m.group(2), "useless range");
            return upTo(parseInt(m.group(2)));
        }
        return (null == m.group(2)) ? from(parseInt(m.group(1)))
                : between(parseInt(m.group(1)), parseInt(m.group(2)));
    }

    public long from() {
        return from;
    }

    public long to() {
        return to;
    }

    public String headerValue() {
        return to < 0
                ? format("bytes=%d-", from)
                : format("bytes=%d-%d", from, to);
    }

    public String rangeValue() {
        return to < 0
                ? format("%d-", from)
                : format("%d-%d", from, to);
    }

    @Override
    public String toString() {
        return MoreObjects.toStringHelper(this)