package qrcode type group struct { numBlocks int numCodewords int numDataCodewords int } type version struct { version int groups []group numRemainderBits int alignmentPatternCenter []int bitSequence uint32 } func (v version) numDataBits() int { numDataBits := 0 for _, g := range v.groups { numDataBits += 8 * g.numBlocks * g.numDataCodewords } return numDataBits } func (v version) bitmapSize() int { return 17 + v.version*4 } var versions = []version{ { 1, []group{ {1, 26, 16}, }, 0, []int{}, 0x00000, }, { 2, []group{ {1, 44, 28}, }, 7, []int{6, 18}, 0x00000, }, { 3, []group{ {1, 70, 44}, }, 7, []int{6, 22}, 0x00000, }, { 4, []group{ {2, 50, 32}, }, 7, []int{6, 26}, 0x00000, }, { 5, []group{ {2, 67, 43}, }, 7, []int{6, 30}, 0x00000, }, { 6, []group{ {4, 43, 27}, }, 7, []int{6, 34}, 0x00000, }, { 7, []group{ {4, 49, 31}, }, 0, []int{6, 22, 38}, 0x07c94, }, { 8, []group{ {2, 60, 38}, {2, 61, 39}, }, 0, []int{6, 24, 42}, 0x085bc, }, { 9, []group{ {3, 58, 36}, {2, 59, 37}, }, 0, []int{6, 26, 46}, 0x09a99, }, { 10, []group{ {4, 69, 43}, {1, 70, 44}, }, 0, []int{6, 28, 50}, 0x0a4d3, }, { 11, []group{ {1, 80, 50}, {4, 81, 51}, }, 0, []int{6, 30, 54}, 0x0bbf6, }, { 12, []group{ {6, 58, 36}, {2, 59, 37}, }, 0, []int{6, 32, 58}, 0x0c762, }, { 13, []group{ {8, 59, 37}, {1, 60, 38}, }, 0, []int{6, 34, 62}, 0x0d847, }, { 14, []group{ {4, 64, 40}, {5, 65, 41}, }, 3, []int{6, 26, 46, 66}, 0x0e60d, }, { 15, []group{ {5, 65, 41}, {5, 66, 42}, }, 3, []int{6, 26, 48, 70}, 0x0f928, }, { 16, []group{ {7, 73, 45}, {3, 74, 46}, }, 3, []int{6, 26, 50, 74}, 0x10b78, }, { 17, []group{ {10, 74, 46}, {1, 75, 47}, }, 3, []int{6, 30, 54, 78}, 0x1145d, }, { 18, []group{ {9, 69, 43}, {4, 70, 44}, }, 3, []int{6, 30, 56, 82}, 0x12a17, }, { 19, []group{ {3, 70, 44}, {11, 71, 45}, }, 3, []int{6, 30, 58, 86}, 0x13532, }, { 20, []group{ {3, 67, 41}, {13, 68, 42}, }, 3, []int{6, 34, 62, 90}, 0x149a6, }, { 21, []group{ {17, 68, 42}, }, 4, []int{6, 28, 50, 72, 94}, 0x15683, }, { 22, []group{ {17, 74, 46}, }, 4, []int{6, 26, 50, 74, 98}, 0x168c9, }, { 23, []group{ {4, 75, 47}, {14, 76, 48}, }, 4, []int{6, 30, 54, 78, 102}, 0x177ec, }, { 24, []group{ {6, 73, 45}, {14, 74, 46}, }, 4, []int{6, 28, 54, 80, 106}, 0x18ec4, }, { 25, []group{ {8, 75, 47}, {13, 76, 48}, }, 4, []int{6, 32, 58, 84, 110}, 0x191e1, }, { 26, []group{ {19, 74, 46}, {4, 75, 47}, }, 4, []int{6, 30, 58, 86, 114}, 0x1afab, }, { 27, []group{ {22, 73, 45}, {3, 74, 46}, }, 4, []int{6, 34, 62, 90, 118}, 0x1b08e, }, { 28, []group{ {3, 73, 45}, {23, 74, 46}, }, 3, []int{6, 26, 50, 74, 98, 122}, 0x1cc1a, }, { 29, []group{ {21, 73, 45}, {7, 74, 46}, }, 3, []int{6, 30, 54, 78, 102, 126}, 0x1d33f, }, { 30, []group{ {19, 75, 47}, {10, 76, 48}, }, 3, []int{6, 26, 52, 78, 104, 130}, 0x1ed75, }, { 31, []group{ {2, 74, 46}, {29, 75, 47}, }, 3, []int{6, 30, 56, 82, 108, 134}, 0x1f250, }, { 32, []group{ {10, 74, 46}, {23, 75, 47}, }, 3, []int{6, 34, 60, 86, 112, 138}, 0x209d5, }, { 33, []group{ {14, 74, 46}, {21, 75, 47}, }, 3, []int{6, 30, 58, 86, 114, 142}, 0x216f0, }, { 34, []group{ {14, 74, 46}, {23, 75, 47}, }, 3, []int{6, 34, 62, 90, 118, 146}, 0x228ba, }, { 35, []group{ {12, 75, 47}, {26, 76, 48}, }, 0, []int{6, 30, 54, 78, 102, 126, 150}, 0x2379f, }, { 36, []group{ {6, 75, 47}, {34, 76, 48}, }, 0, []int{6, 24, 50, 76, 102, 128, 154}, 0x24b0b, }, { 37, []group{ {29, 74, 46}, {14, 75, 47}, }, 0, []int{6, 28, 54, 80, 106, 132, 158}, 0x2542e, }, { 38, []group{ {13, 74, 46}, {32, 75, 47}, }, 0, []int{6, 32, 58, 84, 110, 136, 162}, 0x26a64, }, { 39, []group{ {40, 75, 47}, {7, 76, 48}, }, 0, []int{6, 26, 54, 82, 110, 138, 166}, 0x27541, }, { 40, []group{ {18, 75, 47}, {31, 76, 48}, }, 0, []int{6, 30, 58, 86, 114, 142, 170}, 0x28c69, }, }