// Path: src/main/java/org/rr/mobi4java/ByteUtils.java
// public static int getInt(byte[] buffer, int offset, int length) {
// 	return getInt(getBytes(buffer, offset, length));
// }
// 
// Path: src/main/java/org/rr/mobi4java/ByteUtils.java
// public static void writeInt(int data, int length, OutputStream out) throws IOException {
// 	out.write(getBytes(data, new byte[length]), 0, length);
// }


import static org.rr.mobi4java.ByteUtils.getInt;
import static org.rr.mobi4java.ByteUtils.writeInt;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.io.output.TeeOutputStream;
import org.apache.commons.lang3.builder.ToStringBuilder;
			}
		}

		private TAG_ENTRY_TYPE(final int type) {
			this.type = type;
		}
		
		public static TAG_ENTRY_TYPE valueOf(int type) {
			return map.get(type);
		}

		public int getType() {
			return type;
		}
	}
	
	private int tag;
	
	private int valuesCount;
	
	private int bitmask;
	
	private int controlByte;

	MobiContentTagEntry(byte[] content) throws IOException {
		super(content, CONTENT_TYPE.TAG);
		readMobiTag();
	}

	private void readMobiTag() throws IOException {
// Path: src/main/java/org/rr/mobi4java/ByteUtils.java
// public static int getInt(byte[] buffer, int offset, int length) {
// 	return getInt(getBytes(buffer, offset, length));
// }
// 
// Path: src/main/java/org/rr/mobi4java/ByteUtils.java
// public static void writeInt(int data, int length, OutputStream out) throws IOException {
// 	out.write(getBytes(data, new byte[length]), 0, length);
// }


// Path: src/main/java/org/rr/mobi4java/MobiContentTagEntry.java
import static org.rr.mobi4java.ByteUtils.getInt;
import static org.rr.mobi4java.ByteUtils.writeInt;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.io.output.TeeOutputStream;
import org.apache.commons.lang3.builder.ToStringBuilder;

			}
		}

		private TAG_ENTRY_TYPE(final int type) {
			this.type = type;
		}
		
		public static TAG_ENTRY_TYPE valueOf(int type) {
			return map.get(type);
		}

		public int getType() {
			return type;
		}
	}
	
	private int tag;
	
	private int valuesCount;
	
	private int bitmask;
	
	private int controlByte;

	MobiContentTagEntry(byte[] content) throws IOException {
		super(content, CONTENT_TYPE.TAG);
		readMobiTag();
	}

	private void readMobiTag() throws IOException {
		tag = getInt(content, 0, 1);