tidy
This commit is contained in:
@@ -2,14 +2,14 @@ namespace Gma.QrCodeNet.Encoding.Versions;
|
||||
|
||||
internal struct ErrorCorrectionBlock
|
||||
{
|
||||
internal ErrorCorrectionBlock(int numErrorCorrectionBlock, int numDataCodewards)
|
||||
: this()
|
||||
{
|
||||
NumErrorCorrectionBlock = numErrorCorrectionBlock;
|
||||
NumDataCodewords = numDataCodewards;
|
||||
}
|
||||
internal ErrorCorrectionBlock(int numErrorCorrectionBlock, int numDataCodewards)
|
||||
: this()
|
||||
{
|
||||
NumErrorCorrectionBlock = numErrorCorrectionBlock;
|
||||
NumDataCodewords = numDataCodewards;
|
||||
}
|
||||
|
||||
internal int NumErrorCorrectionBlock { get; private set; }
|
||||
internal int NumErrorCorrectionBlock { get; private set; }
|
||||
|
||||
internal int NumDataCodewords { get; private set; }
|
||||
}
|
||||
internal int NumDataCodewords { get; private set; }
|
||||
}
|
||||
@@ -1,55 +1,53 @@
|
||||
using System;
|
||||
|
||||
namespace Gma.QrCodeNet.Encoding.Versions;
|
||||
|
||||
internal struct ErrorCorrectionBlocks
|
||||
{
|
||||
internal ErrorCorrectionBlocks(int numErrorCorrectionCodewords, ErrorCorrectionBlock ecBlock)
|
||||
: this()
|
||||
{
|
||||
NumErrorCorrectionCodewards = numErrorCorrectionCodewords;
|
||||
ECBlock = new ErrorCorrectionBlock[] { ecBlock };
|
||||
internal ErrorCorrectionBlocks(int numErrorCorrectionCodewords, ErrorCorrectionBlock ecBlock)
|
||||
: this()
|
||||
{
|
||||
NumErrorCorrectionCodewards = numErrorCorrectionCodewords;
|
||||
ECBlock = new ErrorCorrectionBlock[] { ecBlock };
|
||||
|
||||
Initialize();
|
||||
}
|
||||
Initialize();
|
||||
}
|
||||
|
||||
internal ErrorCorrectionBlocks(int numErrorCorrectionCodewords, ErrorCorrectionBlock ecBlock1, ErrorCorrectionBlock ecBlock2)
|
||||
: this()
|
||||
{
|
||||
NumErrorCorrectionCodewards = numErrorCorrectionCodewords;
|
||||
ECBlock = new ErrorCorrectionBlock[] { ecBlock1, ecBlock2 };
|
||||
internal ErrorCorrectionBlocks(int numErrorCorrectionCodewords, ErrorCorrectionBlock ecBlock1, ErrorCorrectionBlock ecBlock2)
|
||||
: this()
|
||||
{
|
||||
NumErrorCorrectionCodewards = numErrorCorrectionCodewords;
|
||||
ECBlock = new ErrorCorrectionBlock[] { ecBlock1, ecBlock2 };
|
||||
|
||||
Initialize();
|
||||
}
|
||||
Initialize();
|
||||
}
|
||||
|
||||
internal int NumErrorCorrectionCodewards { get; private set; }
|
||||
internal int NumErrorCorrectionCodewards { get; private set; }
|
||||
|
||||
internal int NumBlocks { get; private set; }
|
||||
internal int NumBlocks { get; private set; }
|
||||
|
||||
internal int ErrorCorrectionCodewordsPerBlock { get; private set; }
|
||||
internal int ErrorCorrectionCodewordsPerBlock { get; private set; }
|
||||
|
||||
private ErrorCorrectionBlock[] ECBlock { get; }
|
||||
private ErrorCorrectionBlock[] ECBlock { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Get Error Correction Blocks
|
||||
/// </summary>
|
||||
internal ErrorCorrectionBlock[] GetECBlocks() => ECBlock;
|
||||
/// <summary>
|
||||
/// Get Error Correction Blocks
|
||||
/// </summary>
|
||||
internal ErrorCorrectionBlock[] GetECBlocks() => ECBlock;
|
||||
|
||||
/// <summary>
|
||||
/// Initialize for NumBlocks and ErrorCorrectionCodewordsPerBlock
|
||||
/// </summary>
|
||||
private void Initialize()
|
||||
/// <summary>
|
||||
/// Initialize for NumBlocks and ErrorCorrectionCodewordsPerBlock
|
||||
/// </summary>
|
||||
private void Initialize()
|
||||
{
|
||||
if (ECBlock == null)
|
||||
throw new ArgumentNullException(nameof(ECBlock));
|
||||
|
||||
NumBlocks = 0;
|
||||
int blockLength = ECBlock.Length;
|
||||
for (int i = 0; i < blockLength; i++)
|
||||
{
|
||||
NumBlocks += ECBlock[i].NumErrorCorrectionBlock;
|
||||
}
|
||||
int blockLength = ECBlock.Length;
|
||||
for (int i = 0; i < blockLength; i++)
|
||||
{
|
||||
NumBlocks += ECBlock[i].NumErrorCorrectionBlock;
|
||||
}
|
||||
|
||||
ErrorCorrectionCodewordsPerBlock = NumErrorCorrectionCodewards / NumBlocks;
|
||||
}
|
||||
}
|
||||
ErrorCorrectionCodewordsPerBlock = NumErrorCorrectionCodewards / NumBlocks;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +1,33 @@
|
||||
using System;
|
||||
|
||||
namespace Gma.QrCodeNet.Encoding.Versions;
|
||||
|
||||
internal struct QRCodeVersion
|
||||
{
|
||||
internal QRCodeVersion(int versionNum, int totalCodewords, ErrorCorrectionBlocks ecblocksL, ErrorCorrectionBlocks ecblocksM, ErrorCorrectionBlocks ecblocksQ, ErrorCorrectionBlocks ecblocksH)
|
||||
: this()
|
||||
{
|
||||
VersionNum = versionNum;
|
||||
TotalCodewords = totalCodewords;
|
||||
ECBlocks = new ErrorCorrectionBlocks[] { ecblocksL, ecblocksM, ecblocksQ, ecblocksH };
|
||||
DimensionForVersion = 17 + (versionNum * 4);
|
||||
}
|
||||
internal QRCodeVersion(int versionNum, int totalCodewords, ErrorCorrectionBlocks ecblocksL, ErrorCorrectionBlocks ecblocksM, ErrorCorrectionBlocks ecblocksQ, ErrorCorrectionBlocks ecblocksH)
|
||||
: this()
|
||||
{
|
||||
VersionNum = versionNum;
|
||||
TotalCodewords = totalCodewords;
|
||||
ECBlocks = new ErrorCorrectionBlocks[] { ecblocksL, ecblocksM, ecblocksQ, ecblocksH };
|
||||
DimensionForVersion = 17 + (versionNum * 4);
|
||||
}
|
||||
|
||||
internal int VersionNum { get; private set; }
|
||||
internal int VersionNum { get; private set; }
|
||||
|
||||
internal int TotalCodewords { get; private set; }
|
||||
internal int TotalCodewords { get; private set; }
|
||||
|
||||
internal int DimensionForVersion { get; private set; }
|
||||
internal int DimensionForVersion { get; private set; }
|
||||
|
||||
private ErrorCorrectionBlocks[] ECBlocks { get; }
|
||||
private ErrorCorrectionBlocks[] ECBlocks { get; }
|
||||
|
||||
internal ErrorCorrectionBlocks GetECBlocksByLevel(ErrorCorrectionLevel eCLevel)
|
||||
{
|
||||
return eCLevel switch
|
||||
{
|
||||
ErrorCorrectionLevel.L => ECBlocks[0],
|
||||
ErrorCorrectionLevel.M => ECBlocks[1],
|
||||
ErrorCorrectionLevel.Q => ECBlocks[2],
|
||||
ErrorCorrectionLevel.H => ECBlocks[3],
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(eCLevel))
|
||||
};
|
||||
}
|
||||
}
|
||||
internal ErrorCorrectionBlocks GetECBlocksByLevel(ErrorCorrectionLevel eCLevel)
|
||||
{
|
||||
return eCLevel switch
|
||||
{
|
||||
ErrorCorrectionLevel.L => ECBlocks[0],
|
||||
ErrorCorrectionLevel.M => ECBlocks[1],
|
||||
ErrorCorrectionLevel.Q => ECBlocks[2],
|
||||
ErrorCorrectionLevel.H => ECBlocks[3],
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(eCLevel))
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,144 +1,143 @@
|
||||
using System;
|
||||
using Gma.QrCodeNet.Encoding.DataEncodation;
|
||||
|
||||
namespace Gma.QrCodeNet.Encoding.Versions;
|
||||
|
||||
internal static class VersionControl
|
||||
{
|
||||
private const int NumBitsModeIndicator = 4;
|
||||
private const string DefaultEncoding = QRCodeConstantVariable.DefaultEncoding;
|
||||
private const int NumBitsModeIndicator = 4;
|
||||
private const string DefaultEncoding = QRCodeConstantVariable.DefaultEncoding;
|
||||
|
||||
private static readonly int[] VERSION_GROUP = new int[] { 9, 26, 40 };
|
||||
private static readonly int[] VERSION_GROUP = new int[] { 9, 26, 40 };
|
||||
|
||||
/// <summary>
|
||||
/// Determine which version to use
|
||||
/// </summary>
|
||||
/// <param name="dataBitsLength">Number of bits for encoded content</param>
|
||||
/// <param name="encodingName">Encoding name for EightBitByte</param>
|
||||
/// <returns>VersionDetail and ECI</returns>
|
||||
internal static VersionControlStruct InitialSetup(int dataBitsLength, ErrorCorrectionLevel level, string encodingName)
|
||||
{
|
||||
int totalDataBits = dataBitsLength;
|
||||
/// <summary>
|
||||
/// Determine which version to use
|
||||
/// </summary>
|
||||
/// <param name="dataBitsLength">Number of bits for encoded content</param>
|
||||
/// <param name="encodingName">Encoding name for EightBitByte</param>
|
||||
/// <returns>VersionDetail and ECI</returns>
|
||||
internal static VersionControlStruct InitialSetup(int dataBitsLength, ErrorCorrectionLevel level, string encodingName)
|
||||
{
|
||||
int totalDataBits = dataBitsLength;
|
||||
|
||||
bool containECI = false;
|
||||
bool containECI = false;
|
||||
|
||||
BitList eciHeader = new();
|
||||
BitList eciHeader = new();
|
||||
|
||||
if (encodingName is not DefaultEncoding and not QRCodeConstantVariable.UTF8Encoding)
|
||||
{
|
||||
ECISet eciSet = new(ECISet.AppendOption.NameToValue);
|
||||
int eciValue = eciSet.GetECIValueByName(encodingName);
|
||||
if (encodingName is not DefaultEncoding and not QRCodeConstantVariable.UTF8Encoding)
|
||||
{
|
||||
ECISet eciSet = new(ECISet.AppendOption.NameToValue);
|
||||
int eciValue = eciSet.GetECIValueByName(encodingName);
|
||||
|
||||
totalDataBits += ECISet.NumOfECIHeaderBits(eciValue);
|
||||
eciHeader = eciSet.GetECIHeader(encodingName);
|
||||
containECI = true;
|
||||
}
|
||||
totalDataBits += ECISet.NumOfECIHeaderBits(eciValue);
|
||||
eciHeader = eciSet.GetECIHeader(encodingName);
|
||||
containECI = true;
|
||||
}
|
||||
|
||||
// Determine which version group it belong to
|
||||
int searchGroup = DynamicSearchIndicator(totalDataBits, level);
|
||||
// Determine which version group it belong to
|
||||
int searchGroup = DynamicSearchIndicator(totalDataBits, level);
|
||||
|
||||
int[] charCountIndicator = CharCountIndicatorTable.GetCharCountIndicatorSet();
|
||||
int[] charCountIndicator = CharCountIndicatorTable.GetCharCountIndicatorSet();
|
||||
|
||||
totalDataBits += (NumBitsModeIndicator + charCountIndicator[searchGroup]);
|
||||
totalDataBits += (NumBitsModeIndicator + charCountIndicator[searchGroup]);
|
||||
|
||||
int lowerSearchBoundary = searchGroup == 0 ? 1 : (VERSION_GROUP[searchGroup - 1] + 1);
|
||||
int higherSearchBoundary = VERSION_GROUP[searchGroup];
|
||||
int lowerSearchBoundary = searchGroup == 0 ? 1 : (VERSION_GROUP[searchGroup - 1] + 1);
|
||||
int higherSearchBoundary = VERSION_GROUP[searchGroup];
|
||||
|
||||
// Binary search to find proper version
|
||||
int versionNum = BinarySearch(totalDataBits, level, lowerSearchBoundary, higherSearchBoundary);
|
||||
// Binary search to find proper version
|
||||
int versionNum = BinarySearch(totalDataBits, level, lowerSearchBoundary, higherSearchBoundary);
|
||||
|
||||
VersionControlStruct vcStruct = FillVCStruct(versionNum, level);
|
||||
VersionControlStruct vcStruct = FillVCStruct(versionNum, level);
|
||||
|
||||
vcStruct.IsContainECI = containECI;
|
||||
vcStruct.IsContainECI = containECI;
|
||||
|
||||
vcStruct.ECIHeader = eciHeader;
|
||||
vcStruct.ECIHeader = eciHeader;
|
||||
|
||||
return vcStruct;
|
||||
}
|
||||
return vcStruct;
|
||||
}
|
||||
|
||||
private static VersionControlStruct FillVCStruct(int versionNum, ErrorCorrectionLevel level)
|
||||
{
|
||||
if (versionNum is < 1 or > 40)
|
||||
{
|
||||
throw new InvalidOperationException($"Unexpected version number: {versionNum}");
|
||||
}
|
||||
private static VersionControlStruct FillVCStruct(int versionNum, ErrorCorrectionLevel level)
|
||||
{
|
||||
if (versionNum is < 1 or > 40)
|
||||
{
|
||||
throw new InvalidOperationException($"Unexpected version number: {versionNum}");
|
||||
}
|
||||
|
||||
VersionControlStruct vcStruct = new();
|
||||
VersionControlStruct vcStruct = new();
|
||||
|
||||
int version = versionNum;
|
||||
int version = versionNum;
|
||||
|
||||
QRCodeVersion versionData = VersionTable.GetVersionByNum(versionNum);
|
||||
QRCodeVersion versionData = VersionTable.GetVersionByNum(versionNum);
|
||||
|
||||
int numTotalBytes = versionData.TotalCodewords;
|
||||
int numTotalBytes = versionData.TotalCodewords;
|
||||
|
||||
ErrorCorrectionBlocks ecBlocks = versionData.GetECBlocksByLevel(level);
|
||||
int numDataBytes = numTotalBytes - ecBlocks.NumErrorCorrectionCodewards;
|
||||
int numECBlocks = ecBlocks.NumBlocks;
|
||||
ErrorCorrectionBlocks ecBlocks = versionData.GetECBlocksByLevel(level);
|
||||
int numDataBytes = numTotalBytes - ecBlocks.NumErrorCorrectionCodewards;
|
||||
int numECBlocks = ecBlocks.NumBlocks;
|
||||
|
||||
VersionDetail vcDetail = new(version, numTotalBytes, numDataBytes, numECBlocks);
|
||||
VersionDetail vcDetail = new(version, numTotalBytes, numDataBytes, numECBlocks);
|
||||
|
||||
vcStruct.VersionDetail = vcDetail;
|
||||
return vcStruct;
|
||||
}
|
||||
vcStruct.VersionDetail = vcDetail;
|
||||
return vcStruct;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Decide which version group it belong to
|
||||
/// </summary>
|
||||
/// <param name="numBits">Number of bits for bitlist where it contain DataBits encode from input content and ECI header</param>
|
||||
/// <param name="level">Error correction level</param>
|
||||
/// <returns>Version group index for VERSION_GROUP</returns>
|
||||
private static int DynamicSearchIndicator(int numBits, ErrorCorrectionLevel level)
|
||||
{
|
||||
int[] charCountIndicator = CharCountIndicatorTable.GetCharCountIndicatorSet();
|
||||
int loopLength = VERSION_GROUP.Length;
|
||||
for (int i = 0; i < loopLength; i++)
|
||||
{
|
||||
int totalBits = numBits + NumBitsModeIndicator + charCountIndicator[i];
|
||||
/// <summary>
|
||||
/// Decide which version group it belong to
|
||||
/// </summary>
|
||||
/// <param name="numBits">Number of bits for bitlist where it contain DataBits encode from input content and ECI header</param>
|
||||
/// <param name="level">Error correction level</param>
|
||||
/// <returns>Version group index for VERSION_GROUP</returns>
|
||||
private static int DynamicSearchIndicator(int numBits, ErrorCorrectionLevel level)
|
||||
{
|
||||
int[] charCountIndicator = CharCountIndicatorTable.GetCharCountIndicatorSet();
|
||||
int loopLength = VERSION_GROUP.Length;
|
||||
for (int i = 0; i < loopLength; i++)
|
||||
{
|
||||
int totalBits = numBits + NumBitsModeIndicator + charCountIndicator[i];
|
||||
|
||||
QRCodeVersion version = VersionTable.GetVersionByNum(VERSION_GROUP[i]);
|
||||
int numECCodewords = version.GetECBlocksByLevel(level).NumErrorCorrectionCodewards;
|
||||
QRCodeVersion version = VersionTable.GetVersionByNum(VERSION_GROUP[i]);
|
||||
int numECCodewords = version.GetECBlocksByLevel(level).NumErrorCorrectionCodewards;
|
||||
|
||||
int dataCodewords = version.TotalCodewords - numECCodewords;
|
||||
int dataCodewords = version.TotalCodewords - numECCodewords;
|
||||
|
||||
if (totalBits <= dataCodewords * 8)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
if (totalBits <= dataCodewords * 8)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
throw new InputOutOfBoundaryException($"QRCode do not have enough space for {(numBits + NumBitsModeIndicator + charCountIndicator[2])} bits");
|
||||
}
|
||||
throw new InputOutOfBoundaryException($"QRCode do not have enough space for {(numBits + NumBitsModeIndicator + charCountIndicator[2])} bits");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Use number of data bits(header + eci header + data bits from EncoderBase) to search for proper version to use
|
||||
/// between min and max boundary.
|
||||
/// Boundary define by DynamicSearchIndicator method.
|
||||
/// </summary>
|
||||
private static int BinarySearch(int numDataBits, ErrorCorrectionLevel level, int lowerVersionNum, int higherVersionNum)
|
||||
{
|
||||
int middleVersionNumber;
|
||||
/// <summary>
|
||||
/// Use number of data bits(header + eci header + data bits from EncoderBase) to search for proper version to use
|
||||
/// between min and max boundary.
|
||||
/// Boundary define by DynamicSearchIndicator method.
|
||||
/// </summary>
|
||||
private static int BinarySearch(int numDataBits, ErrorCorrectionLevel level, int lowerVersionNum, int higherVersionNum)
|
||||
{
|
||||
int middleVersionNumber;
|
||||
|
||||
while (lowerVersionNum <= higherVersionNum)
|
||||
{
|
||||
middleVersionNumber = (lowerVersionNum + higherVersionNum) / 2;
|
||||
QRCodeVersion version = VersionTable.GetVersionByNum(middleVersionNumber);
|
||||
int numECCodewords = version.GetECBlocksByLevel(level).NumErrorCorrectionCodewards;
|
||||
int dataCodewords = version.TotalCodewords - numECCodewords;
|
||||
while (lowerVersionNum <= higherVersionNum)
|
||||
{
|
||||
middleVersionNumber = (lowerVersionNum + higherVersionNum) / 2;
|
||||
QRCodeVersion version = VersionTable.GetVersionByNum(middleVersionNumber);
|
||||
int numECCodewords = version.GetECBlocksByLevel(level).NumErrorCorrectionCodewards;
|
||||
int dataCodewords = version.TotalCodewords - numECCodewords;
|
||||
|
||||
if (dataCodewords << 3 == numDataBits)
|
||||
{
|
||||
return middleVersionNumber;
|
||||
}
|
||||
if (dataCodewords << 3 == numDataBits)
|
||||
{
|
||||
return middleVersionNumber;
|
||||
}
|
||||
|
||||
if (dataCodewords << 3 > numDataBits)
|
||||
{
|
||||
higherVersionNum = middleVersionNumber - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
lowerVersionNum = middleVersionNumber + 1;
|
||||
}
|
||||
}
|
||||
return lowerVersionNum;
|
||||
}
|
||||
}
|
||||
if (dataCodewords << 3 > numDataBits)
|
||||
{
|
||||
higherVersionNum = middleVersionNumber - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
lowerVersionNum = middleVersionNumber + 1;
|
||||
}
|
||||
}
|
||||
return lowerVersionNum;
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ namespace Gma.QrCodeNet.Encoding.Versions;
|
||||
|
||||
internal struct VersionControlStruct
|
||||
{
|
||||
internal VersionDetail VersionDetail { get; set; }
|
||||
internal bool IsContainECI { get; set; }
|
||||
internal BitList ECIHeader { get; set; }
|
||||
}
|
||||
internal VersionDetail VersionDetail { get; set; }
|
||||
internal bool IsContainECI { get; set; }
|
||||
internal BitList ECIHeader { get; set; }
|
||||
}
|
||||
@@ -1,317 +1,315 @@
|
||||
using System;
|
||||
|
||||
namespace Gma.QrCodeNet.Encoding.Versions;
|
||||
|
||||
public static class VersionTable
|
||||
{
|
||||
private static readonly QRCodeVersion[] Version = Initialize();
|
||||
private static readonly QRCodeVersion[] Version = Initialize();
|
||||
|
||||
internal static QRCodeVersion GetVersionByNum(int versionNum)
|
||||
{
|
||||
if (versionNum is < QRCodeConstantVariable.MinVersion or > QRCodeConstantVariable.MaxVersion)
|
||||
{
|
||||
throw new InvalidOperationException($"Unexpected version number: {versionNum}.");
|
||||
}
|
||||
internal static QRCodeVersion GetVersionByNum(int versionNum)
|
||||
{
|
||||
if (versionNum is < QRCodeConstantVariable.MinVersion or > QRCodeConstantVariable.MaxVersion)
|
||||
{
|
||||
throw new InvalidOperationException($"Unexpected version number: {versionNum}.");
|
||||
}
|
||||
|
||||
return Version[versionNum - 1];
|
||||
}
|
||||
return Version[versionNum - 1];
|
||||
}
|
||||
|
||||
internal static QRCodeVersion GetVersionByWidth(int matrixWidth)
|
||||
{
|
||||
if ((matrixWidth - 17) % 4 != 0)
|
||||
{
|
||||
throw new ArgumentException("Incorrect matrix width.");
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetVersionByNum((matrixWidth - 17) / 4);
|
||||
}
|
||||
}
|
||||
internal static QRCodeVersion GetVersionByWidth(int matrixWidth)
|
||||
{
|
||||
if ((matrixWidth - 17) % 4 != 0)
|
||||
{
|
||||
throw new ArgumentException("Incorrect matrix width.");
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetVersionByNum((matrixWidth - 17) / 4);
|
||||
}
|
||||
}
|
||||
|
||||
private static QRCodeVersion[] Initialize()
|
||||
{
|
||||
return new QRCodeVersion[]
|
||||
{
|
||||
new QRCodeVersion(
|
||||
1,
|
||||
26,
|
||||
new ErrorCorrectionBlocks(7, new ErrorCorrectionBlock(1, 19)),
|
||||
new ErrorCorrectionBlocks(10, new ErrorCorrectionBlock(1, 16)),
|
||||
new ErrorCorrectionBlocks(13, new ErrorCorrectionBlock(1, 13)),
|
||||
new ErrorCorrectionBlocks(17, new ErrorCorrectionBlock(1, 9))),
|
||||
new QRCodeVersion(
|
||||
2,
|
||||
44,
|
||||
new ErrorCorrectionBlocks(10, new ErrorCorrectionBlock(1, 34)),
|
||||
new ErrorCorrectionBlocks(16, new ErrorCorrectionBlock(1, 28)),
|
||||
new ErrorCorrectionBlocks(22, new ErrorCorrectionBlock(1, 22)),
|
||||
new ErrorCorrectionBlocks(28, new ErrorCorrectionBlock(1, 16))),
|
||||
new QRCodeVersion(
|
||||
3,
|
||||
70,
|
||||
new ErrorCorrectionBlocks(15, new ErrorCorrectionBlock(1, 55)),
|
||||
new ErrorCorrectionBlocks(26, new ErrorCorrectionBlock(1, 44)),
|
||||
new ErrorCorrectionBlocks(36, new ErrorCorrectionBlock(2, 17)),
|
||||
new ErrorCorrectionBlocks(44, new ErrorCorrectionBlock(2, 13))),
|
||||
new QRCodeVersion(
|
||||
4,
|
||||
100,
|
||||
new ErrorCorrectionBlocks(20, new ErrorCorrectionBlock(1, 80)),
|
||||
new ErrorCorrectionBlocks(36, new ErrorCorrectionBlock(2, 32)),
|
||||
new ErrorCorrectionBlocks(52, new ErrorCorrectionBlock(2, 24)),
|
||||
new ErrorCorrectionBlocks(64, new ErrorCorrectionBlock(4, 9))),
|
||||
new QRCodeVersion(
|
||||
5,
|
||||
134,
|
||||
new ErrorCorrectionBlocks(26, new ErrorCorrectionBlock(1, 108)),
|
||||
new ErrorCorrectionBlocks(48, new ErrorCorrectionBlock(2, 43)),
|
||||
new ErrorCorrectionBlocks(72, new ErrorCorrectionBlock(2, 15), new ErrorCorrectionBlock(2, 16)),
|
||||
new ErrorCorrectionBlocks(88, new ErrorCorrectionBlock(2, 11), new ErrorCorrectionBlock(2, 12))),
|
||||
new QRCodeVersion(
|
||||
6,
|
||||
172,
|
||||
new ErrorCorrectionBlocks(36, new ErrorCorrectionBlock(2, 68)),
|
||||
new ErrorCorrectionBlocks(64, new ErrorCorrectionBlock(4, 27)),
|
||||
new ErrorCorrectionBlocks(96, new ErrorCorrectionBlock(4, 19)),
|
||||
new ErrorCorrectionBlocks(112, new ErrorCorrectionBlock(4, 15))),
|
||||
new QRCodeVersion(
|
||||
7,
|
||||
196,
|
||||
new ErrorCorrectionBlocks(40, new ErrorCorrectionBlock(2, 78)),
|
||||
new ErrorCorrectionBlocks(72, new ErrorCorrectionBlock(4, 31)),
|
||||
new ErrorCorrectionBlocks(108, new ErrorCorrectionBlock(2, 14), new ErrorCorrectionBlock(4, 15)),
|
||||
new ErrorCorrectionBlocks(130, new ErrorCorrectionBlock(4, 13), new ErrorCorrectionBlock(1, 14))),
|
||||
new QRCodeVersion(
|
||||
8,
|
||||
242,
|
||||
new ErrorCorrectionBlocks(48, new ErrorCorrectionBlock(2, 97)),
|
||||
new ErrorCorrectionBlocks(88, new ErrorCorrectionBlock(2, 38), new ErrorCorrectionBlock(2, 39)),
|
||||
new ErrorCorrectionBlocks(132, new ErrorCorrectionBlock(4, 18), new ErrorCorrectionBlock(2, 19)),
|
||||
new ErrorCorrectionBlocks(156, new ErrorCorrectionBlock(4, 14), new ErrorCorrectionBlock(2, 15))),
|
||||
new QRCodeVersion(
|
||||
9,
|
||||
292,
|
||||
new ErrorCorrectionBlocks(60, new ErrorCorrectionBlock(2, 116)),
|
||||
new ErrorCorrectionBlocks(110, new ErrorCorrectionBlock(3, 36), new ErrorCorrectionBlock(2, 37)),
|
||||
new ErrorCorrectionBlocks(160, new ErrorCorrectionBlock(4, 16), new ErrorCorrectionBlock(4, 17)),
|
||||
new ErrorCorrectionBlocks(192, new ErrorCorrectionBlock(4, 12), new ErrorCorrectionBlock(4, 13))),
|
||||
new QRCodeVersion(
|
||||
10,
|
||||
346,
|
||||
new ErrorCorrectionBlocks(72, new ErrorCorrectionBlock(2, 68), new ErrorCorrectionBlock(2, 69)),
|
||||
new ErrorCorrectionBlocks(130, new ErrorCorrectionBlock(4, 43), new ErrorCorrectionBlock(1, 44)),
|
||||
new ErrorCorrectionBlocks(192, new ErrorCorrectionBlock(6, 19), new ErrorCorrectionBlock(2, 20)),
|
||||
new ErrorCorrectionBlocks(224, new ErrorCorrectionBlock(6, 15), new ErrorCorrectionBlock(2, 16))),
|
||||
new QRCodeVersion(
|
||||
11,
|
||||
404,
|
||||
new ErrorCorrectionBlocks(80, new ErrorCorrectionBlock(4, 81)),
|
||||
new ErrorCorrectionBlocks(150, new ErrorCorrectionBlock(1, 50), new ErrorCorrectionBlock(4, 51)),
|
||||
new ErrorCorrectionBlocks(224, new ErrorCorrectionBlock(4, 22), new ErrorCorrectionBlock(4, 23)),
|
||||
new ErrorCorrectionBlocks(264, new ErrorCorrectionBlock(3, 12), new ErrorCorrectionBlock(8, 13))),
|
||||
new QRCodeVersion(
|
||||
12,
|
||||
466,
|
||||
new ErrorCorrectionBlocks(96, new ErrorCorrectionBlock(2, 92), new ErrorCorrectionBlock(2, 93)),
|
||||
new ErrorCorrectionBlocks(176, new ErrorCorrectionBlock(6, 36), new ErrorCorrectionBlock(2, 37)),
|
||||
new ErrorCorrectionBlocks(260, new ErrorCorrectionBlock(4, 20), new ErrorCorrectionBlock(6, 21)),
|
||||
new ErrorCorrectionBlocks(308, new ErrorCorrectionBlock(7, 14), new ErrorCorrectionBlock(4, 15))),
|
||||
new QRCodeVersion(
|
||||
13,
|
||||
532,
|
||||
new ErrorCorrectionBlocks(104, new ErrorCorrectionBlock(4, 107)),
|
||||
new ErrorCorrectionBlocks(198, new ErrorCorrectionBlock(8, 37), new ErrorCorrectionBlock(1, 38)),
|
||||
new ErrorCorrectionBlocks(288, new ErrorCorrectionBlock(8, 20), new ErrorCorrectionBlock(4, 21)),
|
||||
new ErrorCorrectionBlocks(352, new ErrorCorrectionBlock(12, 11), new ErrorCorrectionBlock(4, 12))),
|
||||
new QRCodeVersion(
|
||||
14,
|
||||
581,
|
||||
new ErrorCorrectionBlocks(120, new ErrorCorrectionBlock(3, 115), new ErrorCorrectionBlock(1, 116)),
|
||||
new ErrorCorrectionBlocks(216, new ErrorCorrectionBlock(4, 40), new ErrorCorrectionBlock(5, 41)),
|
||||
new ErrorCorrectionBlocks(320, new ErrorCorrectionBlock(11, 16), new ErrorCorrectionBlock(5, 17)),
|
||||
new ErrorCorrectionBlocks(384, new ErrorCorrectionBlock(11, 12), new ErrorCorrectionBlock(5, 13))),
|
||||
new QRCodeVersion(
|
||||
15,
|
||||
655,
|
||||
new ErrorCorrectionBlocks(132, new ErrorCorrectionBlock(5, 87), new ErrorCorrectionBlock(1, 88)),
|
||||
new ErrorCorrectionBlocks(240, new ErrorCorrectionBlock(5, 41), new ErrorCorrectionBlock(5, 42)),
|
||||
new ErrorCorrectionBlocks(360, new ErrorCorrectionBlock(5, 24), new ErrorCorrectionBlock(7, 25)),
|
||||
new ErrorCorrectionBlocks(432, new ErrorCorrectionBlock(11, 12), new ErrorCorrectionBlock(7, 13))),
|
||||
new QRCodeVersion(
|
||||
16,
|
||||
733,
|
||||
new ErrorCorrectionBlocks(144, new ErrorCorrectionBlock(5, 98), new ErrorCorrectionBlock(1, 99)),
|
||||
new ErrorCorrectionBlocks(280, new ErrorCorrectionBlock(7, 45), new ErrorCorrectionBlock(3, 46)),
|
||||
new ErrorCorrectionBlocks(408, new ErrorCorrectionBlock(15, 19), new ErrorCorrectionBlock(2, 20)),
|
||||
new ErrorCorrectionBlocks(480, new ErrorCorrectionBlock(3, 15), new ErrorCorrectionBlock(13, 16))),
|
||||
new QRCodeVersion(
|
||||
17,
|
||||
815,
|
||||
new ErrorCorrectionBlocks(168, new ErrorCorrectionBlock(1, 107), new ErrorCorrectionBlock(5, 108)),
|
||||
new ErrorCorrectionBlocks(308, new ErrorCorrectionBlock(10, 46), new ErrorCorrectionBlock(1, 47)),
|
||||
new ErrorCorrectionBlocks(448, new ErrorCorrectionBlock(1, 22), new ErrorCorrectionBlock(15, 23)),
|
||||
new ErrorCorrectionBlocks(532, new ErrorCorrectionBlock(2, 14), new ErrorCorrectionBlock(17, 15))),
|
||||
new QRCodeVersion(
|
||||
18,
|
||||
901,
|
||||
new ErrorCorrectionBlocks(180, new ErrorCorrectionBlock(5, 120), new ErrorCorrectionBlock(1, 121)),
|
||||
new ErrorCorrectionBlocks(338, new ErrorCorrectionBlock(9, 43), new ErrorCorrectionBlock(4, 44)),
|
||||
new ErrorCorrectionBlocks(504, new ErrorCorrectionBlock(17, 22), new ErrorCorrectionBlock(1, 23)),
|
||||
new ErrorCorrectionBlocks(588, new ErrorCorrectionBlock(2, 14), new ErrorCorrectionBlock(19, 15))),
|
||||
new QRCodeVersion(
|
||||
19,
|
||||
991,
|
||||
new ErrorCorrectionBlocks(196, new ErrorCorrectionBlock(3, 113), new ErrorCorrectionBlock(4, 114)),
|
||||
new ErrorCorrectionBlocks(364, new ErrorCorrectionBlock(3, 44), new ErrorCorrectionBlock(11, 45)),
|
||||
new ErrorCorrectionBlocks(546, new ErrorCorrectionBlock(17, 21), new ErrorCorrectionBlock(4, 22)),
|
||||
new ErrorCorrectionBlocks(650, new ErrorCorrectionBlock(9, 13), new ErrorCorrectionBlock(16, 14))),
|
||||
new QRCodeVersion(
|
||||
20,
|
||||
1085,
|
||||
new ErrorCorrectionBlocks(224, new ErrorCorrectionBlock(3, 107), new ErrorCorrectionBlock(5, 108)),
|
||||
new ErrorCorrectionBlocks(416, new ErrorCorrectionBlock(3, 41), new ErrorCorrectionBlock(13, 42)),
|
||||
new ErrorCorrectionBlocks(600, new ErrorCorrectionBlock(15, 24), new ErrorCorrectionBlock(5, 25)),
|
||||
new ErrorCorrectionBlocks(700, new ErrorCorrectionBlock(15, 15), new ErrorCorrectionBlock(10, 16))),
|
||||
new QRCodeVersion(
|
||||
21,
|
||||
1156,
|
||||
new ErrorCorrectionBlocks(224, new ErrorCorrectionBlock(4, 116), new ErrorCorrectionBlock(4, 117)),
|
||||
new ErrorCorrectionBlocks(442, new ErrorCorrectionBlock(17, 42)),
|
||||
new ErrorCorrectionBlocks(644, new ErrorCorrectionBlock(17, 22), new ErrorCorrectionBlock(6, 23)),
|
||||
new ErrorCorrectionBlocks(750, new ErrorCorrectionBlock(19, 16), new ErrorCorrectionBlock(6, 17))),
|
||||
new QRCodeVersion(
|
||||
22,
|
||||
1258,
|
||||
new ErrorCorrectionBlocks(252, new ErrorCorrectionBlock(2, 111), new ErrorCorrectionBlock(7, 112)),
|
||||
new ErrorCorrectionBlocks(476, new ErrorCorrectionBlock(17, 46)),
|
||||
new ErrorCorrectionBlocks(690, new ErrorCorrectionBlock(7, 24), new ErrorCorrectionBlock(16, 25)),
|
||||
new ErrorCorrectionBlocks(816, new ErrorCorrectionBlock(34, 13))),
|
||||
new QRCodeVersion(
|
||||
23,
|
||||
1364,
|
||||
new ErrorCorrectionBlocks(270, new ErrorCorrectionBlock(4, 121), new ErrorCorrectionBlock(5, 122)),
|
||||
new ErrorCorrectionBlocks(504, new ErrorCorrectionBlock(4, 47), new ErrorCorrectionBlock(14, 48)),
|
||||
new ErrorCorrectionBlocks(750, new ErrorCorrectionBlock(11, 24), new ErrorCorrectionBlock(14, 25)),
|
||||
new ErrorCorrectionBlocks(900, new ErrorCorrectionBlock(16, 15), new ErrorCorrectionBlock(14, 16))),
|
||||
new QRCodeVersion(
|
||||
24,
|
||||
1474,
|
||||
new ErrorCorrectionBlocks(300, new ErrorCorrectionBlock(6, 117), new ErrorCorrectionBlock(4, 118)),
|
||||
new ErrorCorrectionBlocks(560, new ErrorCorrectionBlock(6, 45), new ErrorCorrectionBlock(14, 46)),
|
||||
new ErrorCorrectionBlocks(810, new ErrorCorrectionBlock(11, 24), new ErrorCorrectionBlock(16, 25)),
|
||||
new ErrorCorrectionBlocks(960, new ErrorCorrectionBlock(30, 16), new ErrorCorrectionBlock(2, 17))),
|
||||
new QRCodeVersion(
|
||||
25,
|
||||
1588,
|
||||
new ErrorCorrectionBlocks(312, new ErrorCorrectionBlock(8, 106), new ErrorCorrectionBlock(4, 107)),
|
||||
new ErrorCorrectionBlocks(588, new ErrorCorrectionBlock(8, 47), new ErrorCorrectionBlock(13, 48)),
|
||||
new ErrorCorrectionBlocks(870, new ErrorCorrectionBlock(7, 24), new ErrorCorrectionBlock(22, 25)),
|
||||
new ErrorCorrectionBlocks(1050, new ErrorCorrectionBlock(22, 15), new ErrorCorrectionBlock(13, 16))),
|
||||
new QRCodeVersion(
|
||||
26,
|
||||
1706,
|
||||
new ErrorCorrectionBlocks(336, new ErrorCorrectionBlock(10, 114), new ErrorCorrectionBlock(2, 115)),
|
||||
new ErrorCorrectionBlocks(644, new ErrorCorrectionBlock(19, 46), new ErrorCorrectionBlock(4, 47)),
|
||||
new ErrorCorrectionBlocks(952, new ErrorCorrectionBlock(28, 22), new ErrorCorrectionBlock(6, 23)),
|
||||
new ErrorCorrectionBlocks(1110, new ErrorCorrectionBlock(33, 16), new ErrorCorrectionBlock(4, 17))),
|
||||
new QRCodeVersion(
|
||||
27,
|
||||
1828,
|
||||
new ErrorCorrectionBlocks(360, new ErrorCorrectionBlock(8, 122), new ErrorCorrectionBlock(4, 123)),
|
||||
new ErrorCorrectionBlocks(700, new ErrorCorrectionBlock(22, 45), new ErrorCorrectionBlock(3, 46)),
|
||||
new ErrorCorrectionBlocks(1020, new ErrorCorrectionBlock(8, 23), new ErrorCorrectionBlock(26, 24)),
|
||||
new ErrorCorrectionBlocks(1200, new ErrorCorrectionBlock(12, 15), new ErrorCorrectionBlock(28, 16))),
|
||||
new QRCodeVersion(
|
||||
28,
|
||||
1921,
|
||||
new ErrorCorrectionBlocks(390, new ErrorCorrectionBlock(3, 117), new ErrorCorrectionBlock(10, 118)),
|
||||
new ErrorCorrectionBlocks(728, new ErrorCorrectionBlock(3, 45), new ErrorCorrectionBlock(23, 46)),
|
||||
new ErrorCorrectionBlocks(1050, new ErrorCorrectionBlock(4, 24), new ErrorCorrectionBlock(31, 25)),
|
||||
new ErrorCorrectionBlocks(1260, new ErrorCorrectionBlock(11, 15), new ErrorCorrectionBlock(31, 16))),
|
||||
new QRCodeVersion(
|
||||
29,
|
||||
2051,
|
||||
new ErrorCorrectionBlocks(420, new ErrorCorrectionBlock(7, 116), new ErrorCorrectionBlock(7, 117)),
|
||||
new ErrorCorrectionBlocks(784, new ErrorCorrectionBlock(21, 45), new ErrorCorrectionBlock(7, 46)),
|
||||
new ErrorCorrectionBlocks(1140, new ErrorCorrectionBlock(1, 23), new ErrorCorrectionBlock(37, 24)),
|
||||
new ErrorCorrectionBlocks(1350, new ErrorCorrectionBlock(19, 15), new ErrorCorrectionBlock(26, 16))),
|
||||
new QRCodeVersion(
|
||||
30,
|
||||
2185,
|
||||
new ErrorCorrectionBlocks(450, new ErrorCorrectionBlock(5, 115), new ErrorCorrectionBlock(10, 116)),
|
||||
new ErrorCorrectionBlocks(812, new ErrorCorrectionBlock(19, 47), new ErrorCorrectionBlock(10, 48)),
|
||||
new ErrorCorrectionBlocks(1200, new ErrorCorrectionBlock(15, 24), new ErrorCorrectionBlock(25, 25)),
|
||||
new ErrorCorrectionBlocks(1440, new ErrorCorrectionBlock(23, 15), new ErrorCorrectionBlock(25, 16))),
|
||||
new QRCodeVersion(
|
||||
31,
|
||||
2323,
|
||||
new ErrorCorrectionBlocks(480, new ErrorCorrectionBlock(13, 115), new ErrorCorrectionBlock(3, 116)),
|
||||
new ErrorCorrectionBlocks(868, new ErrorCorrectionBlock(2, 46), new ErrorCorrectionBlock(29, 47)),
|
||||
new ErrorCorrectionBlocks(1290, new ErrorCorrectionBlock(42, 24), new ErrorCorrectionBlock(1, 25)),
|
||||
new ErrorCorrectionBlocks(1530, new ErrorCorrectionBlock(23, 15), new ErrorCorrectionBlock(28, 16))),
|
||||
new QRCodeVersion(
|
||||
32,
|
||||
2465,
|
||||
new ErrorCorrectionBlocks(510, new ErrorCorrectionBlock(17, 115)),
|
||||
new ErrorCorrectionBlocks(924, new ErrorCorrectionBlock(10, 46), new ErrorCorrectionBlock(23, 47)),
|
||||
new ErrorCorrectionBlocks(1350, new ErrorCorrectionBlock(10, 24), new ErrorCorrectionBlock(35, 25)),
|
||||
new ErrorCorrectionBlocks(1620, new ErrorCorrectionBlock(19, 15), new ErrorCorrectionBlock(35, 16))),
|
||||
new QRCodeVersion(
|
||||
33,
|
||||
2611,
|
||||
new ErrorCorrectionBlocks(540, new ErrorCorrectionBlock(17, 115), new ErrorCorrectionBlock(1, 116)),
|
||||
new ErrorCorrectionBlocks(980, new ErrorCorrectionBlock(14, 46), new ErrorCorrectionBlock(21, 47)),
|
||||
new ErrorCorrectionBlocks(1440, new ErrorCorrectionBlock(29, 24), new ErrorCorrectionBlock(19, 25)),
|
||||
new ErrorCorrectionBlocks(1710, new ErrorCorrectionBlock(11, 15), new ErrorCorrectionBlock(46, 16))),
|
||||
new QRCodeVersion(
|
||||
34,
|
||||
2761,
|
||||
new ErrorCorrectionBlocks(570, new ErrorCorrectionBlock(13, 115), new ErrorCorrectionBlock(6, 116)),
|
||||
new ErrorCorrectionBlocks(1036, new ErrorCorrectionBlock(14, 46), new ErrorCorrectionBlock(23, 47)),
|
||||
new ErrorCorrectionBlocks(1530, new ErrorCorrectionBlock(44, 24), new ErrorCorrectionBlock(7, 25)),
|
||||
new ErrorCorrectionBlocks(1800, new ErrorCorrectionBlock(59, 16), new ErrorCorrectionBlock(1, 17))),
|
||||
new QRCodeVersion(
|
||||
35,
|
||||
2876,
|
||||
new ErrorCorrectionBlocks(570, new ErrorCorrectionBlock(12, 121), new ErrorCorrectionBlock(7, 122)),
|
||||
new ErrorCorrectionBlocks(1064, new ErrorCorrectionBlock(12, 47), new ErrorCorrectionBlock(26, 48)),
|
||||
new ErrorCorrectionBlocks(1590, new ErrorCorrectionBlock(39, 24), new ErrorCorrectionBlock(14, 25)),
|
||||
new ErrorCorrectionBlocks(1890, new ErrorCorrectionBlock(22, 15), new ErrorCorrectionBlock(41, 16))),
|
||||
new QRCodeVersion(
|
||||
36,
|
||||
3034,
|
||||
new ErrorCorrectionBlocks(600, new ErrorCorrectionBlock(6, 121), new ErrorCorrectionBlock(14, 122)),
|
||||
new ErrorCorrectionBlocks(1120, new ErrorCorrectionBlock(6, 47), new ErrorCorrectionBlock(34, 48)),
|
||||
new ErrorCorrectionBlocks(1680, new ErrorCorrectionBlock(46, 24), new ErrorCorrectionBlock(10, 25)),
|
||||
new ErrorCorrectionBlocks(1980, new ErrorCorrectionBlock(2, 15), new ErrorCorrectionBlock(64, 16))),
|
||||
new QRCodeVersion(
|
||||
37,
|
||||
3196,
|
||||
new ErrorCorrectionBlocks(630, new ErrorCorrectionBlock(17, 122), new ErrorCorrectionBlock(4, 123)),
|
||||
new ErrorCorrectionBlocks(1204, new ErrorCorrectionBlock(29, 46), new ErrorCorrectionBlock(14, 47)),
|
||||
new ErrorCorrectionBlocks(1770, new ErrorCorrectionBlock(49, 24), new ErrorCorrectionBlock(10, 25)),
|
||||
new ErrorCorrectionBlocks(2100, new ErrorCorrectionBlock(24, 15), new ErrorCorrectionBlock(46, 16))),
|
||||
new QRCodeVersion(
|
||||
38,
|
||||
3362,
|
||||
new ErrorCorrectionBlocks(660, new ErrorCorrectionBlock(4, 122), new ErrorCorrectionBlock(18, 123)),
|
||||
new ErrorCorrectionBlocks(1260, new ErrorCorrectionBlock(13, 46), new ErrorCorrectionBlock(32, 47)),
|
||||
new ErrorCorrectionBlocks(1860, new ErrorCorrectionBlock(48, 24), new ErrorCorrectionBlock(14, 25)),
|
||||
new ErrorCorrectionBlocks(2220, new ErrorCorrectionBlock(42, 15), new ErrorCorrectionBlock(32, 16))),
|
||||
new QRCodeVersion(
|
||||
39,
|
||||
3532,
|
||||
new ErrorCorrectionBlocks(720, new ErrorCorrectionBlock(20, 117), new ErrorCorrectionBlock(4, 118)),
|
||||
new ErrorCorrectionBlocks(1316, new ErrorCorrectionBlock(40, 47), new ErrorCorrectionBlock(7, 48)),
|
||||
new ErrorCorrectionBlocks(1950, new ErrorCorrectionBlock(43, 24), new ErrorCorrectionBlock(22, 25)),
|
||||
new ErrorCorrectionBlocks(2310, new ErrorCorrectionBlock(10, 15), new ErrorCorrectionBlock(67, 16))),
|
||||
new QRCodeVersion(
|
||||
40,
|
||||
3706,
|
||||
new ErrorCorrectionBlocks(750, new ErrorCorrectionBlock(19, 118), new ErrorCorrectionBlock(6, 119)),
|
||||
new ErrorCorrectionBlocks(1372, new ErrorCorrectionBlock(18, 47), new ErrorCorrectionBlock(31, 48)),
|
||||
new ErrorCorrectionBlocks(2040, new ErrorCorrectionBlock(34, 24), new ErrorCorrectionBlock(34, 25)),
|
||||
new ErrorCorrectionBlocks(2430, new ErrorCorrectionBlock(20, 15), new ErrorCorrectionBlock(61, 16))),
|
||||
};
|
||||
}
|
||||
}
|
||||
private static QRCodeVersion[] Initialize()
|
||||
{
|
||||
return new QRCodeVersion[]
|
||||
{
|
||||
new QRCodeVersion(
|
||||
1,
|
||||
26,
|
||||
new ErrorCorrectionBlocks(7, new ErrorCorrectionBlock(1, 19)),
|
||||
new ErrorCorrectionBlocks(10, new ErrorCorrectionBlock(1, 16)),
|
||||
new ErrorCorrectionBlocks(13, new ErrorCorrectionBlock(1, 13)),
|
||||
new ErrorCorrectionBlocks(17, new ErrorCorrectionBlock(1, 9))),
|
||||
new QRCodeVersion(
|
||||
2,
|
||||
44,
|
||||
new ErrorCorrectionBlocks(10, new ErrorCorrectionBlock(1, 34)),
|
||||
new ErrorCorrectionBlocks(16, new ErrorCorrectionBlock(1, 28)),
|
||||
new ErrorCorrectionBlocks(22, new ErrorCorrectionBlock(1, 22)),
|
||||
new ErrorCorrectionBlocks(28, new ErrorCorrectionBlock(1, 16))),
|
||||
new QRCodeVersion(
|
||||
3,
|
||||
70,
|
||||
new ErrorCorrectionBlocks(15, new ErrorCorrectionBlock(1, 55)),
|
||||
new ErrorCorrectionBlocks(26, new ErrorCorrectionBlock(1, 44)),
|
||||
new ErrorCorrectionBlocks(36, new ErrorCorrectionBlock(2, 17)),
|
||||
new ErrorCorrectionBlocks(44, new ErrorCorrectionBlock(2, 13))),
|
||||
new QRCodeVersion(
|
||||
4,
|
||||
100,
|
||||
new ErrorCorrectionBlocks(20, new ErrorCorrectionBlock(1, 80)),
|
||||
new ErrorCorrectionBlocks(36, new ErrorCorrectionBlock(2, 32)),
|
||||
new ErrorCorrectionBlocks(52, new ErrorCorrectionBlock(2, 24)),
|
||||
new ErrorCorrectionBlocks(64, new ErrorCorrectionBlock(4, 9))),
|
||||
new QRCodeVersion(
|
||||
5,
|
||||
134,
|
||||
new ErrorCorrectionBlocks(26, new ErrorCorrectionBlock(1, 108)),
|
||||
new ErrorCorrectionBlocks(48, new ErrorCorrectionBlock(2, 43)),
|
||||
new ErrorCorrectionBlocks(72, new ErrorCorrectionBlock(2, 15), new ErrorCorrectionBlock(2, 16)),
|
||||
new ErrorCorrectionBlocks(88, new ErrorCorrectionBlock(2, 11), new ErrorCorrectionBlock(2, 12))),
|
||||
new QRCodeVersion(
|
||||
6,
|
||||
172,
|
||||
new ErrorCorrectionBlocks(36, new ErrorCorrectionBlock(2, 68)),
|
||||
new ErrorCorrectionBlocks(64, new ErrorCorrectionBlock(4, 27)),
|
||||
new ErrorCorrectionBlocks(96, new ErrorCorrectionBlock(4, 19)),
|
||||
new ErrorCorrectionBlocks(112, new ErrorCorrectionBlock(4, 15))),
|
||||
new QRCodeVersion(
|
||||
7,
|
||||
196,
|
||||
new ErrorCorrectionBlocks(40, new ErrorCorrectionBlock(2, 78)),
|
||||
new ErrorCorrectionBlocks(72, new ErrorCorrectionBlock(4, 31)),
|
||||
new ErrorCorrectionBlocks(108, new ErrorCorrectionBlock(2, 14), new ErrorCorrectionBlock(4, 15)),
|
||||
new ErrorCorrectionBlocks(130, new ErrorCorrectionBlock(4, 13), new ErrorCorrectionBlock(1, 14))),
|
||||
new QRCodeVersion(
|
||||
8,
|
||||
242,
|
||||
new ErrorCorrectionBlocks(48, new ErrorCorrectionBlock(2, 97)),
|
||||
new ErrorCorrectionBlocks(88, new ErrorCorrectionBlock(2, 38), new ErrorCorrectionBlock(2, 39)),
|
||||
new ErrorCorrectionBlocks(132, new ErrorCorrectionBlock(4, 18), new ErrorCorrectionBlock(2, 19)),
|
||||
new ErrorCorrectionBlocks(156, new ErrorCorrectionBlock(4, 14), new ErrorCorrectionBlock(2, 15))),
|
||||
new QRCodeVersion(
|
||||
9,
|
||||
292,
|
||||
new ErrorCorrectionBlocks(60, new ErrorCorrectionBlock(2, 116)),
|
||||
new ErrorCorrectionBlocks(110, new ErrorCorrectionBlock(3, 36), new ErrorCorrectionBlock(2, 37)),
|
||||
new ErrorCorrectionBlocks(160, new ErrorCorrectionBlock(4, 16), new ErrorCorrectionBlock(4, 17)),
|
||||
new ErrorCorrectionBlocks(192, new ErrorCorrectionBlock(4, 12), new ErrorCorrectionBlock(4, 13))),
|
||||
new QRCodeVersion(
|
||||
10,
|
||||
346,
|
||||
new ErrorCorrectionBlocks(72, new ErrorCorrectionBlock(2, 68), new ErrorCorrectionBlock(2, 69)),
|
||||
new ErrorCorrectionBlocks(130, new ErrorCorrectionBlock(4, 43), new ErrorCorrectionBlock(1, 44)),
|
||||
new ErrorCorrectionBlocks(192, new ErrorCorrectionBlock(6, 19), new ErrorCorrectionBlock(2, 20)),
|
||||
new ErrorCorrectionBlocks(224, new ErrorCorrectionBlock(6, 15), new ErrorCorrectionBlock(2, 16))),
|
||||
new QRCodeVersion(
|
||||
11,
|
||||
404,
|
||||
new ErrorCorrectionBlocks(80, new ErrorCorrectionBlock(4, 81)),
|
||||
new ErrorCorrectionBlocks(150, new ErrorCorrectionBlock(1, 50), new ErrorCorrectionBlock(4, 51)),
|
||||
new ErrorCorrectionBlocks(224, new ErrorCorrectionBlock(4, 22), new ErrorCorrectionBlock(4, 23)),
|
||||
new ErrorCorrectionBlocks(264, new ErrorCorrectionBlock(3, 12), new ErrorCorrectionBlock(8, 13))),
|
||||
new QRCodeVersion(
|
||||
12,
|
||||
466,
|
||||
new ErrorCorrectionBlocks(96, new ErrorCorrectionBlock(2, 92), new ErrorCorrectionBlock(2, 93)),
|
||||
new ErrorCorrectionBlocks(176, new ErrorCorrectionBlock(6, 36), new ErrorCorrectionBlock(2, 37)),
|
||||
new ErrorCorrectionBlocks(260, new ErrorCorrectionBlock(4, 20), new ErrorCorrectionBlock(6, 21)),
|
||||
new ErrorCorrectionBlocks(308, new ErrorCorrectionBlock(7, 14), new ErrorCorrectionBlock(4, 15))),
|
||||
new QRCodeVersion(
|
||||
13,
|
||||
532,
|
||||
new ErrorCorrectionBlocks(104, new ErrorCorrectionBlock(4, 107)),
|
||||
new ErrorCorrectionBlocks(198, new ErrorCorrectionBlock(8, 37), new ErrorCorrectionBlock(1, 38)),
|
||||
new ErrorCorrectionBlocks(288, new ErrorCorrectionBlock(8, 20), new ErrorCorrectionBlock(4, 21)),
|
||||
new ErrorCorrectionBlocks(352, new ErrorCorrectionBlock(12, 11), new ErrorCorrectionBlock(4, 12))),
|
||||
new QRCodeVersion(
|
||||
14,
|
||||
581,
|
||||
new ErrorCorrectionBlocks(120, new ErrorCorrectionBlock(3, 115), new ErrorCorrectionBlock(1, 116)),
|
||||
new ErrorCorrectionBlocks(216, new ErrorCorrectionBlock(4, 40), new ErrorCorrectionBlock(5, 41)),
|
||||
new ErrorCorrectionBlocks(320, new ErrorCorrectionBlock(11, 16), new ErrorCorrectionBlock(5, 17)),
|
||||
new ErrorCorrectionBlocks(384, new ErrorCorrectionBlock(11, 12), new ErrorCorrectionBlock(5, 13))),
|
||||
new QRCodeVersion(
|
||||
15,
|
||||
655,
|
||||
new ErrorCorrectionBlocks(132, new ErrorCorrectionBlock(5, 87), new ErrorCorrectionBlock(1, 88)),
|
||||
new ErrorCorrectionBlocks(240, new ErrorCorrectionBlock(5, 41), new ErrorCorrectionBlock(5, 42)),
|
||||
new ErrorCorrectionBlocks(360, new ErrorCorrectionBlock(5, 24), new ErrorCorrectionBlock(7, 25)),
|
||||
new ErrorCorrectionBlocks(432, new ErrorCorrectionBlock(11, 12), new ErrorCorrectionBlock(7, 13))),
|
||||
new QRCodeVersion(
|
||||
16,
|
||||
733,
|
||||
new ErrorCorrectionBlocks(144, new ErrorCorrectionBlock(5, 98), new ErrorCorrectionBlock(1, 99)),
|
||||
new ErrorCorrectionBlocks(280, new ErrorCorrectionBlock(7, 45), new ErrorCorrectionBlock(3, 46)),
|
||||
new ErrorCorrectionBlocks(408, new ErrorCorrectionBlock(15, 19), new ErrorCorrectionBlock(2, 20)),
|
||||
new ErrorCorrectionBlocks(480, new ErrorCorrectionBlock(3, 15), new ErrorCorrectionBlock(13, 16))),
|
||||
new QRCodeVersion(
|
||||
17,
|
||||
815,
|
||||
new ErrorCorrectionBlocks(168, new ErrorCorrectionBlock(1, 107), new ErrorCorrectionBlock(5, 108)),
|
||||
new ErrorCorrectionBlocks(308, new ErrorCorrectionBlock(10, 46), new ErrorCorrectionBlock(1, 47)),
|
||||
new ErrorCorrectionBlocks(448, new ErrorCorrectionBlock(1, 22), new ErrorCorrectionBlock(15, 23)),
|
||||
new ErrorCorrectionBlocks(532, new ErrorCorrectionBlock(2, 14), new ErrorCorrectionBlock(17, 15))),
|
||||
new QRCodeVersion(
|
||||
18,
|
||||
901,
|
||||
new ErrorCorrectionBlocks(180, new ErrorCorrectionBlock(5, 120), new ErrorCorrectionBlock(1, 121)),
|
||||
new ErrorCorrectionBlocks(338, new ErrorCorrectionBlock(9, 43), new ErrorCorrectionBlock(4, 44)),
|
||||
new ErrorCorrectionBlocks(504, new ErrorCorrectionBlock(17, 22), new ErrorCorrectionBlock(1, 23)),
|
||||
new ErrorCorrectionBlocks(588, new ErrorCorrectionBlock(2, 14), new ErrorCorrectionBlock(19, 15))),
|
||||
new QRCodeVersion(
|
||||
19,
|
||||
991,
|
||||
new ErrorCorrectionBlocks(196, new ErrorCorrectionBlock(3, 113), new ErrorCorrectionBlock(4, 114)),
|
||||
new ErrorCorrectionBlocks(364, new ErrorCorrectionBlock(3, 44), new ErrorCorrectionBlock(11, 45)),
|
||||
new ErrorCorrectionBlocks(546, new ErrorCorrectionBlock(17, 21), new ErrorCorrectionBlock(4, 22)),
|
||||
new ErrorCorrectionBlocks(650, new ErrorCorrectionBlock(9, 13), new ErrorCorrectionBlock(16, 14))),
|
||||
new QRCodeVersion(
|
||||
20,
|
||||
1085,
|
||||
new ErrorCorrectionBlocks(224, new ErrorCorrectionBlock(3, 107), new ErrorCorrectionBlock(5, 108)),
|
||||
new ErrorCorrectionBlocks(416, new ErrorCorrectionBlock(3, 41), new ErrorCorrectionBlock(13, 42)),
|
||||
new ErrorCorrectionBlocks(600, new ErrorCorrectionBlock(15, 24), new ErrorCorrectionBlock(5, 25)),
|
||||
new ErrorCorrectionBlocks(700, new ErrorCorrectionBlock(15, 15), new ErrorCorrectionBlock(10, 16))),
|
||||
new QRCodeVersion(
|
||||
21,
|
||||
1156,
|
||||
new ErrorCorrectionBlocks(224, new ErrorCorrectionBlock(4, 116), new ErrorCorrectionBlock(4, 117)),
|
||||
new ErrorCorrectionBlocks(442, new ErrorCorrectionBlock(17, 42)),
|
||||
new ErrorCorrectionBlocks(644, new ErrorCorrectionBlock(17, 22), new ErrorCorrectionBlock(6, 23)),
|
||||
new ErrorCorrectionBlocks(750, new ErrorCorrectionBlock(19, 16), new ErrorCorrectionBlock(6, 17))),
|
||||
new QRCodeVersion(
|
||||
22,
|
||||
1258,
|
||||
new ErrorCorrectionBlocks(252, new ErrorCorrectionBlock(2, 111), new ErrorCorrectionBlock(7, 112)),
|
||||
new ErrorCorrectionBlocks(476, new ErrorCorrectionBlock(17, 46)),
|
||||
new ErrorCorrectionBlocks(690, new ErrorCorrectionBlock(7, 24), new ErrorCorrectionBlock(16, 25)),
|
||||
new ErrorCorrectionBlocks(816, new ErrorCorrectionBlock(34, 13))),
|
||||
new QRCodeVersion(
|
||||
23,
|
||||
1364,
|
||||
new ErrorCorrectionBlocks(270, new ErrorCorrectionBlock(4, 121), new ErrorCorrectionBlock(5, 122)),
|
||||
new ErrorCorrectionBlocks(504, new ErrorCorrectionBlock(4, 47), new ErrorCorrectionBlock(14, 48)),
|
||||
new ErrorCorrectionBlocks(750, new ErrorCorrectionBlock(11, 24), new ErrorCorrectionBlock(14, 25)),
|
||||
new ErrorCorrectionBlocks(900, new ErrorCorrectionBlock(16, 15), new ErrorCorrectionBlock(14, 16))),
|
||||
new QRCodeVersion(
|
||||
24,
|
||||
1474,
|
||||
new ErrorCorrectionBlocks(300, new ErrorCorrectionBlock(6, 117), new ErrorCorrectionBlock(4, 118)),
|
||||
new ErrorCorrectionBlocks(560, new ErrorCorrectionBlock(6, 45), new ErrorCorrectionBlock(14, 46)),
|
||||
new ErrorCorrectionBlocks(810, new ErrorCorrectionBlock(11, 24), new ErrorCorrectionBlock(16, 25)),
|
||||
new ErrorCorrectionBlocks(960, new ErrorCorrectionBlock(30, 16), new ErrorCorrectionBlock(2, 17))),
|
||||
new QRCodeVersion(
|
||||
25,
|
||||
1588,
|
||||
new ErrorCorrectionBlocks(312, new ErrorCorrectionBlock(8, 106), new ErrorCorrectionBlock(4, 107)),
|
||||
new ErrorCorrectionBlocks(588, new ErrorCorrectionBlock(8, 47), new ErrorCorrectionBlock(13, 48)),
|
||||
new ErrorCorrectionBlocks(870, new ErrorCorrectionBlock(7, 24), new ErrorCorrectionBlock(22, 25)),
|
||||
new ErrorCorrectionBlocks(1050, new ErrorCorrectionBlock(22, 15), new ErrorCorrectionBlock(13, 16))),
|
||||
new QRCodeVersion(
|
||||
26,
|
||||
1706,
|
||||
new ErrorCorrectionBlocks(336, new ErrorCorrectionBlock(10, 114), new ErrorCorrectionBlock(2, 115)),
|
||||
new ErrorCorrectionBlocks(644, new ErrorCorrectionBlock(19, 46), new ErrorCorrectionBlock(4, 47)),
|
||||
new ErrorCorrectionBlocks(952, new ErrorCorrectionBlock(28, 22), new ErrorCorrectionBlock(6, 23)),
|
||||
new ErrorCorrectionBlocks(1110, new ErrorCorrectionBlock(33, 16), new ErrorCorrectionBlock(4, 17))),
|
||||
new QRCodeVersion(
|
||||
27,
|
||||
1828,
|
||||
new ErrorCorrectionBlocks(360, new ErrorCorrectionBlock(8, 122), new ErrorCorrectionBlock(4, 123)),
|
||||
new ErrorCorrectionBlocks(700, new ErrorCorrectionBlock(22, 45), new ErrorCorrectionBlock(3, 46)),
|
||||
new ErrorCorrectionBlocks(1020, new ErrorCorrectionBlock(8, 23), new ErrorCorrectionBlock(26, 24)),
|
||||
new ErrorCorrectionBlocks(1200, new ErrorCorrectionBlock(12, 15), new ErrorCorrectionBlock(28, 16))),
|
||||
new QRCodeVersion(
|
||||
28,
|
||||
1921,
|
||||
new ErrorCorrectionBlocks(390, new ErrorCorrectionBlock(3, 117), new ErrorCorrectionBlock(10, 118)),
|
||||
new ErrorCorrectionBlocks(728, new ErrorCorrectionBlock(3, 45), new ErrorCorrectionBlock(23, 46)),
|
||||
new ErrorCorrectionBlocks(1050, new ErrorCorrectionBlock(4, 24), new ErrorCorrectionBlock(31, 25)),
|
||||
new ErrorCorrectionBlocks(1260, new ErrorCorrectionBlock(11, 15), new ErrorCorrectionBlock(31, 16))),
|
||||
new QRCodeVersion(
|
||||
29,
|
||||
2051,
|
||||
new ErrorCorrectionBlocks(420, new ErrorCorrectionBlock(7, 116), new ErrorCorrectionBlock(7, 117)),
|
||||
new ErrorCorrectionBlocks(784, new ErrorCorrectionBlock(21, 45), new ErrorCorrectionBlock(7, 46)),
|
||||
new ErrorCorrectionBlocks(1140, new ErrorCorrectionBlock(1, 23), new ErrorCorrectionBlock(37, 24)),
|
||||
new ErrorCorrectionBlocks(1350, new ErrorCorrectionBlock(19, 15), new ErrorCorrectionBlock(26, 16))),
|
||||
new QRCodeVersion(
|
||||
30,
|
||||
2185,
|
||||
new ErrorCorrectionBlocks(450, new ErrorCorrectionBlock(5, 115), new ErrorCorrectionBlock(10, 116)),
|
||||
new ErrorCorrectionBlocks(812, new ErrorCorrectionBlock(19, 47), new ErrorCorrectionBlock(10, 48)),
|
||||
new ErrorCorrectionBlocks(1200, new ErrorCorrectionBlock(15, 24), new ErrorCorrectionBlock(25, 25)),
|
||||
new ErrorCorrectionBlocks(1440, new ErrorCorrectionBlock(23, 15), new ErrorCorrectionBlock(25, 16))),
|
||||
new QRCodeVersion(
|
||||
31,
|
||||
2323,
|
||||
new ErrorCorrectionBlocks(480, new ErrorCorrectionBlock(13, 115), new ErrorCorrectionBlock(3, 116)),
|
||||
new ErrorCorrectionBlocks(868, new ErrorCorrectionBlock(2, 46), new ErrorCorrectionBlock(29, 47)),
|
||||
new ErrorCorrectionBlocks(1290, new ErrorCorrectionBlock(42, 24), new ErrorCorrectionBlock(1, 25)),
|
||||
new ErrorCorrectionBlocks(1530, new ErrorCorrectionBlock(23, 15), new ErrorCorrectionBlock(28, 16))),
|
||||
new QRCodeVersion(
|
||||
32,
|
||||
2465,
|
||||
new ErrorCorrectionBlocks(510, new ErrorCorrectionBlock(17, 115)),
|
||||
new ErrorCorrectionBlocks(924, new ErrorCorrectionBlock(10, 46), new ErrorCorrectionBlock(23, 47)),
|
||||
new ErrorCorrectionBlocks(1350, new ErrorCorrectionBlock(10, 24), new ErrorCorrectionBlock(35, 25)),
|
||||
new ErrorCorrectionBlocks(1620, new ErrorCorrectionBlock(19, 15), new ErrorCorrectionBlock(35, 16))),
|
||||
new QRCodeVersion(
|
||||
33,
|
||||
2611,
|
||||
new ErrorCorrectionBlocks(540, new ErrorCorrectionBlock(17, 115), new ErrorCorrectionBlock(1, 116)),
|
||||
new ErrorCorrectionBlocks(980, new ErrorCorrectionBlock(14, 46), new ErrorCorrectionBlock(21, 47)),
|
||||
new ErrorCorrectionBlocks(1440, new ErrorCorrectionBlock(29, 24), new ErrorCorrectionBlock(19, 25)),
|
||||
new ErrorCorrectionBlocks(1710, new ErrorCorrectionBlock(11, 15), new ErrorCorrectionBlock(46, 16))),
|
||||
new QRCodeVersion(
|
||||
34,
|
||||
2761,
|
||||
new ErrorCorrectionBlocks(570, new ErrorCorrectionBlock(13, 115), new ErrorCorrectionBlock(6, 116)),
|
||||
new ErrorCorrectionBlocks(1036, new ErrorCorrectionBlock(14, 46), new ErrorCorrectionBlock(23, 47)),
|
||||
new ErrorCorrectionBlocks(1530, new ErrorCorrectionBlock(44, 24), new ErrorCorrectionBlock(7, 25)),
|
||||
new ErrorCorrectionBlocks(1800, new ErrorCorrectionBlock(59, 16), new ErrorCorrectionBlock(1, 17))),
|
||||
new QRCodeVersion(
|
||||
35,
|
||||
2876,
|
||||
new ErrorCorrectionBlocks(570, new ErrorCorrectionBlock(12, 121), new ErrorCorrectionBlock(7, 122)),
|
||||
new ErrorCorrectionBlocks(1064, new ErrorCorrectionBlock(12, 47), new ErrorCorrectionBlock(26, 48)),
|
||||
new ErrorCorrectionBlocks(1590, new ErrorCorrectionBlock(39, 24), new ErrorCorrectionBlock(14, 25)),
|
||||
new ErrorCorrectionBlocks(1890, new ErrorCorrectionBlock(22, 15), new ErrorCorrectionBlock(41, 16))),
|
||||
new QRCodeVersion(
|
||||
36,
|
||||
3034,
|
||||
new ErrorCorrectionBlocks(600, new ErrorCorrectionBlock(6, 121), new ErrorCorrectionBlock(14, 122)),
|
||||
new ErrorCorrectionBlocks(1120, new ErrorCorrectionBlock(6, 47), new ErrorCorrectionBlock(34, 48)),
|
||||
new ErrorCorrectionBlocks(1680, new ErrorCorrectionBlock(46, 24), new ErrorCorrectionBlock(10, 25)),
|
||||
new ErrorCorrectionBlocks(1980, new ErrorCorrectionBlock(2, 15), new ErrorCorrectionBlock(64, 16))),
|
||||
new QRCodeVersion(
|
||||
37,
|
||||
3196,
|
||||
new ErrorCorrectionBlocks(630, new ErrorCorrectionBlock(17, 122), new ErrorCorrectionBlock(4, 123)),
|
||||
new ErrorCorrectionBlocks(1204, new ErrorCorrectionBlock(29, 46), new ErrorCorrectionBlock(14, 47)),
|
||||
new ErrorCorrectionBlocks(1770, new ErrorCorrectionBlock(49, 24), new ErrorCorrectionBlock(10, 25)),
|
||||
new ErrorCorrectionBlocks(2100, new ErrorCorrectionBlock(24, 15), new ErrorCorrectionBlock(46, 16))),
|
||||
new QRCodeVersion(
|
||||
38,
|
||||
3362,
|
||||
new ErrorCorrectionBlocks(660, new ErrorCorrectionBlock(4, 122), new ErrorCorrectionBlock(18, 123)),
|
||||
new ErrorCorrectionBlocks(1260, new ErrorCorrectionBlock(13, 46), new ErrorCorrectionBlock(32, 47)),
|
||||
new ErrorCorrectionBlocks(1860, new ErrorCorrectionBlock(48, 24), new ErrorCorrectionBlock(14, 25)),
|
||||
new ErrorCorrectionBlocks(2220, new ErrorCorrectionBlock(42, 15), new ErrorCorrectionBlock(32, 16))),
|
||||
new QRCodeVersion(
|
||||
39,
|
||||
3532,
|
||||
new ErrorCorrectionBlocks(720, new ErrorCorrectionBlock(20, 117), new ErrorCorrectionBlock(4, 118)),
|
||||
new ErrorCorrectionBlocks(1316, new ErrorCorrectionBlock(40, 47), new ErrorCorrectionBlock(7, 48)),
|
||||
new ErrorCorrectionBlocks(1950, new ErrorCorrectionBlock(43, 24), new ErrorCorrectionBlock(22, 25)),
|
||||
new ErrorCorrectionBlocks(2310, new ErrorCorrectionBlock(10, 15), new ErrorCorrectionBlock(67, 16))),
|
||||
new QRCodeVersion(
|
||||
40,
|
||||
3706,
|
||||
new ErrorCorrectionBlocks(750, new ErrorCorrectionBlock(19, 118), new ErrorCorrectionBlock(6, 119)),
|
||||
new ErrorCorrectionBlocks(1372, new ErrorCorrectionBlock(18, 47), new ErrorCorrectionBlock(31, 48)),
|
||||
new ErrorCorrectionBlocks(2040, new ErrorCorrectionBlock(34, 24), new ErrorCorrectionBlock(34, 25)),
|
||||
new ErrorCorrectionBlocks(2430, new ErrorCorrectionBlock(20, 15), new ErrorCorrectionBlock(61, 16))),
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user