public static Settings loadFromStream(InputStream inputStream, char delimeter)
		throws IOException
	{
		ParameterUtilities.verifyObject("inputStream", inputStream);

		byte delimeterByte = ("" + delimeter).getBytes()[0];
		Settings settings = new Settings();
		StringBuilder output = new StringBuilder();
		byte[] buffer = new byte[1024];
		int bufferPos = 0;

		while(inputStream.available() > 0)
		{
			byte[] bytes = new byte[4];
			int read = inputStream.read(bytes);

			System.arraycopy(bytes, 0, buffer, bufferPos, read);
			bufferPos += read;

			for(int x = 0; x < read; x++)
			{
				if(bytes[x] == delimeterByte)
				{
					byte[] newBytes = new byte[bufferPos - read + x - 1];
					System.arraycopy(buffer, 0, newBytes, 0, newBytes.length);
					output
						.append(new String(Base64.getInstance().decrypt(Base64.getInstance().destringify(new String(newBytes)))));
					output.append(delimeter);
					buffer = new byte[1024];
					System.arraycopy(bytes, x + 1, buffer, 0, read - x - 1);
					bufferPos = read - x - 1;
				}
			}
		}

		String[] keyValuePairs = output.toString().split("" + delimeter);

		for(int x = 0; x < keyValuePairs.length; x++)
		{
			String[] keyValue = keyValuePairs[x].split("=");
			settings.set(keyValue[0], keyValue[1]);
		}

		return settings;
	}