2023-06-28 17:41:57 +02:00
export const createWorker = ( ) =>
new Worker (
URL . createObjectURL (
new Blob ( [
` class x{constructor(a,b){this.width=b;this.height=a.length/b;this.data=a}static createEmpty(a,b){return new x(new Uint8ClampedArray(a*b),a)}get(a,b){return 0>a||a>=this.width||0>b||b>=this.height?!1:!!this.data[b*this.width+a]}set(a,b,c){this.data[b*this.width+a]=c?1:0}setRegion(a,b,c,d,e){for(let f=b;f<b+d;f++)for(let g=a;g<a+c;g++)this.set(g,f,!!e)}}
2023-06-27 14:31:55 +02:00
class A { constructor ( a , b , c ) { this . width = a ; a *= b ; if ( c && c . length !== a ) throw Error ( "Wrong buffer size" ) ; this . data = c || new Uint8ClampedArray ( a ) } get ( a , b ) { return this . data [ b * this . width + a ] } set ( a , b , c ) { this . data [ b * this . width + a ] = c } }
class ba { constructor ( a ) { this . bitOffset = this . byteOffset = 0 ; this . bytes = a } readBits ( a ) { if ( 1 > a || 32 < a || a > this . available ( ) ) throw Error ( "Cannot read " + a . toString ( ) + " bits" ) ; var b = 0 ; if ( 0 < this . bitOffset ) { b = 8 - this . bitOffset ; var c = a < b ? a : b ; b -= c ; b = ( this . bytes [ this . byteOffset ] & 255 >> 8 - c << b ) >> b ; a -= c ; this . bitOffset += c ; 8 === this . bitOffset && ( this . bitOffset = 0 , this . byteOffset ++ ) } if ( 0 < a ) { for ( ; 8 <= a ; ) b = b << 8 | this . bytes [ this . byteOffset ] & 255 , this . byteOffset ++ , a -= 8 ; 0 < a && ( c = 8 - a , b = b << a | ( this . bytes [ this . byteOffset ] & 255 >> c << c ) >> c ,
this . bitOffset += a ) } return b } available ( ) { return 8 * ( this . bytes . length - this . byteOffset ) - this . bitOffset } } var B , C = B || ( B = { } ) ; C . Numeric = "numeric" ; C . Alphanumeric = "alphanumeric" ; C . Byte = "byte" ; C . Kanji = "kanji" ; C . ECI = "eci" ; C . StructuredAppend = "structuredappend" ; var D , E = D || ( D = { } ) ; E [ E . Terminator = 0 ] = "Terminator" ; E [ E . Numeric = 1 ] = "Numeric" ; E [ E . Alphanumeric = 2 ] = "Alphanumeric" ; E [ E . Byte = 4 ] = "Byte" ; E [ E . Kanji = 8 ] = "Kanji" ; E [ E . ECI = 7 ] = "ECI" ; E [ E . StructuredAppend = 3 ] = "StructuredAppend" ; let F = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:" . split ( "" ) ;
function ca ( a , b ) { let c = [ ] , d = "" ; b = a . readBits ( [ 8 , 16 , 16 ] [ b ] ) ; for ( let e = 0 ; e < b ; e ++ ) { let f = a . readBits ( 8 ) ; c . push ( f ) } try { d += decodeURIComponent ( c . map ( e => \ ` % \$ {("0"+e.toString(16)).substr(-2)} \` ).join(""))}catch(e){}return{bytes:c,text:d}}
function da ( a , b ) { a = new ba ( a ) ; let c = 9 >= b ? 0 : 26 >= b ? 1 : 2 ; for ( b = { text : "" , bytes : [ ] , chunks : [ ] , version : b } ; 4 <= a . available ( ) ; ) { var d = a . readBits ( 4 ) ; if ( d === D . Terminator ) return b ; if ( d === D . ECI ) 0 === a . readBits ( 1 ) ? b . chunks . push ( { type : B . ECI , assignmentNumber : a . readBits ( 7 ) } ) : 0 === a . readBits ( 1 ) ? b . chunks . push ( { type : B . ECI , assignmentNumber : a . readBits ( 14 ) } ) : 0 === a . readBits ( 1 ) ? b . chunks . push ( { type : B . ECI , assignmentNumber : a . readBits ( 21 ) } ) : b . chunks . push ( { type : B . ECI , assignmentNumber : - 1 } ) ; else if ( d === D . Numeric ) { var e = a , f = [ ] ; d = "" ; for ( var g =
e . readBits ( [ 10 , 12 , 14 ] [ c ] ) ; 3 <= g ; ) { var h = e . readBits ( 10 ) ; if ( 1E3 <= h ) throw Error ( "Invalid numeric value above 999" ) ; var k = Math . floor ( h / 100 ) , m = Math . floor ( h / 10 ) % 10 ; h %= 10 ; f . push ( 48 + k , 48 + m , 48 + h ) ; d += k . toString ( ) + m . toString ( ) + h . toString ( ) ; g -= 3 } if ( 2 === g ) { g = e . readBits ( 7 ) ; if ( 100 <= g ) throw Error ( "Invalid numeric value above 99" ) ; e = Math . floor ( g / 10 ) ; g %= 10 ; f . push ( 48 + e , 48 + g ) ; d += e . toString ( ) + g . toString ( ) } else if ( 1 === g ) { e = e . readBits ( 4 ) ; if ( 10 <= e ) throw Error ( "Invalid numeric value above 9" ) ; f . push ( 48 + e ) ; d += e . toString ( ) } b . text +=
d ; b . bytes . push ( ... f ) ; b . chunks . push ( { type : B . Numeric , text : d } ) } else if ( d === D . Alphanumeric ) { e = a ; f = [ ] ; d = "" ; for ( g = e . readBits ( [ 9 , 11 , 13 ] [ c ] ) ; 2 <= g ; ) m = e . readBits ( 11 ) , k = Math . floor ( m / 45 ) , m %= 45 , f . push ( F [ k ] . charCodeAt ( 0 ) , F [ m ] . charCodeAt ( 0 ) ) , d += F [ k ] + F [ m ] , g -= 2 ; 1 === g && ( e = e . readBits ( 6 ) , f . push ( F [ e ] . charCodeAt ( 0 ) ) , d += F [ e ] ) ; b . text += d ; b . bytes . push ( ... f ) ; b . chunks . push ( { type : B . Alphanumeric , text : d } ) } else if ( d === D . Byte ) d = ca ( a , c ) , b . text += d . text , b . bytes . push ( ... d . bytes ) , b . chunks . push ( { type : B . Byte , bytes : d . bytes , text : d . text } ) ;
else if ( d === D . Kanji ) { f = a ; d = [ ] ; e = f . readBits ( [ 8 , 10 , 12 ] [ c ] ) ; for ( g = 0 ; g < e ; g ++ ) k = f . readBits ( 13 ) , k = Math . floor ( k / 192 ) << 8 | k % 192 , k = 7936 > k ? k + 33088 : k + 49472 , d . push ( k >> 8 , k & 255 ) ; f = ( new TextDecoder ( "shift-jis" ) ) . decode ( Uint8Array . from ( d ) ) ; b . text += f ; b . bytes . push ( ... d ) ; b . chunks . push ( { type : B . Kanji , bytes : d , text : f } ) } else d === D . StructuredAppend && b . chunks . push ( { type : B . StructuredAppend , currentSequence : a . readBits ( 4 ) , totalSequence : a . readBits ( 4 ) , parity : a . readBits ( 8 ) } ) } if ( 0 === a . available ( ) || 0 === a . readBits ( a . available ( ) ) ) return b }
class G { constructor ( a , b ) { if ( 0 === b . length ) throw Error ( "No coefficients." ) ; this . field = a ; let c = b . length ; if ( 1 < c && 0 === b [ 0 ] ) { let d = 1 ; for ( ; d < c && 0 === b [ d ] ; ) d ++ ; if ( d === c ) this . coefficients = a . zero . coefficients ; else for ( this . coefficients = new Uint8ClampedArray ( c - d ) , a = 0 ; a < this . coefficients . length ; a ++ ) this . coefficients [ a ] = b [ d + a ] } else this . coefficients = b } degree ( ) { return this . coefficients . length - 1 } isZero ( ) { return 0 === this . coefficients [ 0 ] } getCoefficient ( a ) { return this . coefficients [ this . coefficients . length - 1 - a ] } addOrSubtract ( a ) { if ( this . isZero ( ) ) return a ;
if ( a . isZero ( ) ) return this ; let b = this . coefficients ; a = a . coefficients ; b . length > a . length && ( [ b , a ] = [ a , b ] ) ; let c = new Uint8ClampedArray ( a . length ) , d = a . length - b . length ; for ( var e = 0 ; e < d ; e ++ ) c [ e ] = a [ e ] ; for ( e = d ; e < a . length ; e ++ ) c [ e ] = b [ e - d ] ^ a [ e ] ; return new G ( this . field , c ) } multiply ( a ) { if ( 0 === a ) return this . field . zero ; if ( 1 === a ) return this ; let b = this . coefficients . length , c = new Uint8ClampedArray ( b ) ; for ( let d = 0 ; d < b ; d ++ ) c [ d ] = this . field . multiply ( this . coefficients [ d ] , a ) ; return new G ( this . field , c ) } multiplyPoly ( a ) { if ( this . isZero ( ) ||
a . isZero ( ) ) return this . field . zero ; let b = this . coefficients , c = b . length ; a = a . coefficients ; let d = a . length , e = new Uint8ClampedArray ( c + d - 1 ) ; for ( let f = 0 ; f < c ; f ++ ) { let g = b [ f ] ; for ( let h = 0 ; h < d ; h ++ ) e [ f + h ] = H ( e [ f + h ] , this . field . multiply ( g , a [ h ] ) ) } return new G ( this . field , e ) } multiplyByMonomial ( a , b ) { if ( 0 > a ) throw Error ( "Invalid degree less than 0" ) ; if ( 0 === b ) return this . field . zero ; let c = this . coefficients . length ; a = new Uint8ClampedArray ( c + a ) ; for ( let d = 0 ; d < c ; d ++ ) a [ d ] = this . field . multiply ( this . coefficients [ d ] , b ) ; return new G ( this . field ,
a ) } evaluateAt ( a ) { let b = 0 ; if ( 0 === a ) return this . getCoefficient ( 0 ) ; let c = this . coefficients . length ; if ( 1 === a ) return this . coefficients . forEach ( d => { b ^= d } ) , b ; b = this . coefficients [ 0 ] ; for ( let d = 1 ; d < c ; d ++ ) b = H ( this . field . multiply ( a , b ) , this . coefficients [ d ] ) ; return b } } function H ( a , b ) { return a ^ b }
class ea { constructor ( a , b , c ) { this . primitive = a ; this . size = b ; this . generatorBase = c ; this . expTable = Array ( this . size ) ; this . logTable = Array ( this . size ) ; a = 1 ; for ( b = 0 ; b < this . size ; b ++ ) this . expTable [ b ] = a , a *= 2 , a >= this . size && ( a = ( a ^ this . primitive ) & this . size - 1 ) ; for ( a = 0 ; a < this . size - 1 ; a ++ ) this . logTable [ this . expTable [ a ] ] = a ; this . zero = new G ( this , Uint8ClampedArray . from ( [ 0 ] ) ) ; this . one = new G ( this , Uint8ClampedArray . from ( [ 1 ] ) ) } multiply ( a , b ) { return 0 === a || 0 === b ? 0 : this . expTable [ ( this . logTable [ a ] + this . logTable [ b ] ) % ( this . size - 1 ) ] } inverse ( a ) { if ( 0 ===
a ) throw Error ( "Can't invert 0" ) ; return this . expTable [ this . size - this . logTable [ a ] - 1 ] } buildMonomial ( a , b ) { if ( 0 > a ) throw Error ( "Invalid monomial degree less than 0" ) ; if ( 0 === b ) return this . zero ; a = new Uint8ClampedArray ( a + 1 ) ; a [ 0 ] = b ; return new G ( this , a ) } log ( a ) { if ( 0 === a ) throw Error ( "Can't take log(0)" ) ; return this . logTable [ a ] } exp ( a ) { return this . expTable [ a ] } }
function fa ( a , b , c , d ) { b . degree ( ) < c . degree ( ) && ( [ b , c ] = [ c , b ] ) ; let e = a . zero ; for ( var f = a . one ; c . degree ( ) >= d / 2 ; ) { var g = b ; let h = e ; b = c ; e = f ; if ( b . isZero ( ) ) return null ; c = g ; f = a . zero ; g = b . getCoefficient ( b . degree ( ) ) ; for ( g = a . inverse ( g ) ; c . degree ( ) >= b . degree ( ) && ! c . isZero ( ) ; ) { let k = c . degree ( ) - b . degree ( ) , m = a . multiply ( c . getCoefficient ( c . degree ( ) ) , g ) ; f = f . addOrSubtract ( a . buildMonomial ( k , m ) ) ; c = c . addOrSubtract ( b . multiplyByMonomial ( k , m ) ) } f = f . multiplyPoly ( e ) . addOrSubtract ( h ) ; if ( c . degree ( ) >= b . degree ( ) ) return null } d = f . getCoefficient ( 0 ) ;
if ( 0 === d ) return null ; a = a . inverse ( d ) ; return [ f . multiply ( a ) , c . multiply ( a ) ] }
function ha ( a , b ) { let c = new Uint8ClampedArray ( a . length ) ; c . set ( a ) ; a = new ea ( 285 , 256 , 0 ) ; var d = new G ( a , c ) , e = new Uint8ClampedArray ( b ) , f = ! 1 ; for ( var g = 0 ; g < b ; g ++ ) { var h = d . evaluateAt ( a . exp ( g + a . generatorBase ) ) ; e [ e . length - 1 - g ] = h ; 0 !== h && ( f = ! 0 ) } if ( ! f ) return c ; d = new G ( a , e ) ; d = fa ( a , a . buildMonomial ( b , 1 ) , d , b ) ; if ( null === d ) return null ; b = d [ 0 ] ; g = b . degree ( ) ; if ( 1 === g ) b = [ b . getCoefficient ( 1 ) ] ; else { e = Array ( g ) ; f = 0 ; for ( h = 1 ; h < a . size && f < g ; h ++ ) 0 === b . evaluateAt ( h ) && ( e [ f ] = a . inverse ( h ) , f ++ ) ; b = f !== g ? null : e } if ( null == b ) return null ; e = d [ 1 ] ;
f = b . length ; d = Array ( f ) ; for ( g = 0 ; g < f ; g ++ ) { h = a . inverse ( b [ g ] ) ; let k = 1 ; for ( let m = 0 ; m < f ; m ++ ) g !== m && ( k = a . multiply ( k , H ( 1 , a . multiply ( b [ m ] , h ) ) ) ) ; d [ g ] = a . multiply ( e . evaluateAt ( h ) , a . inverse ( k ) ) ; 0 !== a . generatorBase && ( d [ g ] = a . multiply ( d [ g ] , h ) ) } for ( e = 0 ; e < b . length ; e ++ ) { f = c . length - 1 - a . log ( b [ e ] ) ; if ( 0 > f ) return null ; c [ f ] ^= d [ e ] } return c }
let I = [ { infoBits : null , versionNumber : 1 , alignmentPatternCenters : [ ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 7 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 19 } ] } , { ecCodewordsPerBlock : 10 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 16 } ] } , { ecCodewordsPerBlock : 13 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 13 } ] } , { ecCodewordsPerBlock : 17 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 9 } ] } ] } , { infoBits : null , versionNumber : 2 , alignmentPatternCenters : [ 6 , 18 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 10 , ecBlocks : [ { numBlocks : 1 ,
dataCodewordsPerBlock : 34 } ] } , { ecCodewordsPerBlock : 16 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 28 } ] } , { ecCodewordsPerBlock : 22 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 22 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : null , versionNumber : 3 , alignmentPatternCenters : [ 6 , 22 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 15 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 55 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 44 } ] } , { ecCodewordsPerBlock : 18 ,
ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 17 } ] } , { ecCodewordsPerBlock : 22 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 13 } ] } ] } , { infoBits : null , versionNumber : 4 , alignmentPatternCenters : [ 6 , 26 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 20 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 80 } ] } , { ecCodewordsPerBlock : 18 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 32 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 24 } ] } , { ecCodewordsPerBlock : 16 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 9 } ] } ] } ,
{ infoBits : null , versionNumber : 5 , alignmentPatternCenters : [ 6 , 30 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 108 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 43 } ] } , { ecCodewordsPerBlock : 18 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 15 } , { numBlocks : 2 , dataCodewordsPerBlock : 16 } ] } , { ecCodewordsPerBlock : 22 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 11 } , { numBlocks : 2 , dataCodewordsPerBlock : 12 } ] } ] } , { infoBits : null , versionNumber : 6 , alignmentPatternCenters : [ 6 ,
34 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 18 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 68 } ] } , { ecCodewordsPerBlock : 16 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 27 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 19 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 15 } ] } ] } , { infoBits : 31892 , versionNumber : 7 , alignmentPatternCenters : [ 6 , 22 , 38 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 20 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 78 } ] } , { ecCodewordsPerBlock : 18 ,
ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 31 } ] } , { ecCodewordsPerBlock : 18 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 14 } , { numBlocks : 4 , dataCodewordsPerBlock : 15 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 13 } , { numBlocks : 1 , dataCodewordsPerBlock : 14 } ] } ] } , { infoBits : 34236 , versionNumber : 8 , alignmentPatternCenters : [ 6 , 24 , 42 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 97 } ] } , { ecCodewordsPerBlock : 22 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 38 } ,
{ numBlocks : 2 , dataCodewordsPerBlock : 39 } ] } , { ecCodewordsPerBlock : 22 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 18 } , { numBlocks : 2 , dataCodewordsPerBlock : 19 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 14 } , { numBlocks : 2 , dataCodewordsPerBlock : 15 } ] } ] } , { infoBits : 39577 , versionNumber : 9 , alignmentPatternCenters : [ 6 , 26 , 46 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 116 } ] } , { ecCodewordsPerBlock : 22 , ecBlocks : [ { numBlocks : 3 , dataCodewordsPerBlock : 36 } ,
{ numBlocks : 2 , dataCodewordsPerBlock : 37 } ] } , { ecCodewordsPerBlock : 20 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 16 } , { numBlocks : 4 , dataCodewordsPerBlock : 17 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 12 } , { numBlocks : 4 , dataCodewordsPerBlock : 13 } ] } ] } , { infoBits : 42195 , versionNumber : 10 , alignmentPatternCenters : [ 6 , 28 , 50 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 18 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 68 } , { numBlocks : 2 , dataCodewordsPerBlock : 69 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 4 ,
dataCodewordsPerBlock : 43 } , { numBlocks : 1 , dataCodewordsPerBlock : 44 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 6 , dataCodewordsPerBlock : 19 } , { numBlocks : 2 , dataCodewordsPerBlock : 20 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 6 , dataCodewordsPerBlock : 15 } , { numBlocks : 2 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 48118 , versionNumber : 11 , alignmentPatternCenters : [ 6 , 30 , 54 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 20 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 81 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 1 ,
dataCodewordsPerBlock : 50 } , { numBlocks : 4 , dataCodewordsPerBlock : 51 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 22 } , { numBlocks : 4 , dataCodewordsPerBlock : 23 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 3 , dataCodewordsPerBlock : 12 } , { numBlocks : 8 , dataCodewordsPerBlock : 13 } ] } ] } , { infoBits : 51042 , versionNumber : 12 , alignmentPatternCenters : [ 6 , 32 , 58 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 92 } , { numBlocks : 2 , dataCodewordsPerBlock : 93 } ] } ,
{ ecCodewordsPerBlock : 22 , ecBlocks : [ { numBlocks : 6 , dataCodewordsPerBlock : 36 } , { numBlocks : 2 , dataCodewordsPerBlock : 37 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 20 } , { numBlocks : 6 , dataCodewordsPerBlock : 21 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 7 , dataCodewordsPerBlock : 14 } , { numBlocks : 4 , dataCodewordsPerBlock : 15 } ] } ] } , { infoBits : 55367 , versionNumber : 13 , alignmentPatternCenters : [ 6 , 34 , 62 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 107 } ] } ,
{ ecCodewordsPerBlock : 22 , ecBlocks : [ { numBlocks : 8 , dataCodewordsPerBlock : 37 } , { numBlocks : 1 , dataCodewordsPerBlock : 38 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 8 , dataCodewordsPerBlock : 20 } , { numBlocks : 4 , dataCodewordsPerBlock : 21 } ] } , { ecCodewordsPerBlock : 22 , ecBlocks : [ { numBlocks : 12 , dataCodewordsPerBlock : 11 } , { numBlocks : 4 , dataCodewordsPerBlock : 12 } ] } ] } , { infoBits : 58893 , versionNumber : 14 , alignmentPatternCenters : [ 6 , 26 , 46 , 66 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 3 , dataCodewordsPerBlock : 115 } ,
{ numBlocks : 1 , dataCodewordsPerBlock : 116 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 40 } , { numBlocks : 5 , dataCodewordsPerBlock : 41 } ] } , { ecCodewordsPerBlock : 20 , ecBlocks : [ { numBlocks : 11 , dataCodewordsPerBlock : 16 } , { numBlocks : 5 , dataCodewordsPerBlock : 17 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 11 , dataCodewordsPerBlock : 12 } , { numBlocks : 5 , dataCodewordsPerBlock : 13 } ] } ] } , { infoBits : 63784 , versionNumber : 15 , alignmentPatternCenters : [ 6 , 26 , 48 , 70 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 22 ,
ecBlocks : [ { numBlocks : 5 , dataCodewordsPerBlock : 87 } , { numBlocks : 1 , dataCodewordsPerBlock : 88 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 5 , dataCodewordsPerBlock : 41 } , { numBlocks : 5 , dataCodewordsPerBlock : 42 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 5 , dataCodewordsPerBlock : 24 } , { numBlocks : 7 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 11 , dataCodewordsPerBlock : 12 } , { numBlocks : 7 , dataCodewordsPerBlock : 13 } ] } ] } , { infoBits : 68472 , versionNumber : 16 , alignmentPatternCenters : [ 6 , 26 , 50 ,
74 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 5 , dataCodewordsPerBlock : 98 } , { numBlocks : 1 , dataCodewordsPerBlock : 99 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 7 , dataCodewordsPerBlock : 45 } , { numBlocks : 3 , dataCodewordsPerBlock : 46 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 15 , dataCodewordsPerBlock : 19 } , { numBlocks : 2 , dataCodewordsPerBlock : 20 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 3 , dataCodewordsPerBlock : 15 } , { numBlocks : 13 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 70749 ,
versionNumber : 17 , alignmentPatternCenters : [ 6 , 30 , 54 , 78 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 107 } , { numBlocks : 5 , dataCodewordsPerBlock : 108 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 10 , dataCodewordsPerBlock : 46 } , { numBlocks : 1 , dataCodewordsPerBlock : 47 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 22 } , { numBlocks : 15 , dataCodewordsPerBlock : 23 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 14 } , { numBlocks : 17 ,
dataCodewordsPerBlock : 15 } ] } ] } , { infoBits : 76311 , versionNumber : 18 , alignmentPatternCenters : [ 6 , 30 , 56 , 82 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 5 , dataCodewordsPerBlock : 120 } , { numBlocks : 1 , dataCodewordsPerBlock : 121 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 9 , dataCodewordsPerBlock : 43 } , { numBlocks : 4 , dataCodewordsPerBlock : 44 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 17 , dataCodewordsPerBlock : 22 } , { numBlocks : 1 , dataCodewordsPerBlock : 23 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 2 ,
dataCodewordsPerBlock : 14 } , { numBlocks : 19 , dataCodewordsPerBlock : 15 } ] } ] } , { infoBits : 79154 , versionNumber : 19 , alignmentPatternCenters : [ 6 , 30 , 58 , 86 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 3 , dataCodewordsPerBlock : 113 } , { numBlocks : 4 , dataCodewordsPerBlock : 114 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 3 , dataCodewordsPerBlock : 44 } , { numBlocks : 11 , dataCodewordsPerBlock : 45 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 17 , dataCodewordsPerBlock : 21 } , { numBlocks : 4 , dataCodewordsPerBlock : 22 } ] } ,
{ ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 9 , dataCodewordsPerBlock : 13 } , { numBlocks : 16 , dataCodewordsPerBlock : 14 } ] } ] } , { infoBits : 84390 , versionNumber : 20 , alignmentPatternCenters : [ 6 , 34 , 62 , 90 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 3 , dataCodewordsPerBlock : 107 } , { numBlocks : 5 , dataCodewordsPerBlock : 108 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 3 , dataCodewordsPerBlock : 41 } , { numBlocks : 13 , dataCodewordsPerBlock : 42 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 15 , dataCodewordsPerBlock : 24 } ,
{ numBlocks : 5 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 15 , dataCodewordsPerBlock : 15 } , { numBlocks : 10 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 87683 , versionNumber : 21 , alignmentPatternCenters : [ 6 , 28 , 50 , 72 , 94 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 116 } , { numBlocks : 4 , dataCodewordsPerBlock : 117 } ] } , { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 17 , dataCodewordsPerBlock : 42 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 17 , dataCodewordsPerBlock : 22 } ,
{ numBlocks : 6 , dataCodewordsPerBlock : 23 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 19 , dataCodewordsPerBlock : 16 } , { numBlocks : 6 , dataCodewordsPerBlock : 17 } ] } ] } , { infoBits : 92361 , versionNumber : 22 , alignmentPatternCenters : [ 6 , 26 , 50 , 74 , 98 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 111 } , { numBlocks : 7 , dataCodewordsPerBlock : 112 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 17 , dataCodewordsPerBlock : 46 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 7 , dataCodewordsPerBlock : 24 } ,
{ numBlocks : 16 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 24 , ecBlocks : [ { numBlocks : 34 , dataCodewordsPerBlock : 13 } ] } ] } , { infoBits : 96236 , versionNumber : 23 , alignmentPatternCenters : [ 6 , 30 , 54 , 74 , 102 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 121 } , { numBlocks : 5 , dataCodewordsPerBlock : 122 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 47 } , { numBlocks : 14 , dataCodewordsPerBlock : 48 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 11 , dataCodewordsPerBlock : 24 } ,
{ numBlocks : 14 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 16 , dataCodewordsPerBlock : 15 } , { numBlocks : 14 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 102084 , versionNumber : 24 , alignmentPatternCenters : [ 6 , 28 , 54 , 80 , 106 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 6 , dataCodewordsPerBlock : 117 } , { numBlocks : 4 , dataCodewordsPerBlock : 118 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 6 , dataCodewordsPerBlock : 45 } , { numBlocks : 14 , dataCodewordsPerBlock : 46 } ] } , { ecCodewordsPerBlock : 30 ,
ecBlocks : [ { numBlocks : 11 , dataCodewordsPerBlock : 24 } , { numBlocks : 16 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 30 , dataCodewordsPerBlock : 16 } , { numBlocks : 2 , dataCodewordsPerBlock : 17 } ] } ] } , { infoBits : 102881 , versionNumber : 25 , alignmentPatternCenters : [ 6 , 32 , 58 , 84 , 110 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 26 , ecBlocks : [ { numBlocks : 8 , dataCodewordsPerBlock : 106 } , { numBlocks : 4 , dataCodewordsPerBlock : 107 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 8 , dataCodewordsPerBlock : 47 } , { numBlocks : 13 ,
dataCodewordsPerBlock : 48 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 7 , dataCodewordsPerBlock : 24 } , { numBlocks : 22 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 22 , dataCodewordsPerBlock : 15 } , { numBlocks : 13 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 110507 , versionNumber : 26 , alignmentPatternCenters : [ 6 , 30 , 58 , 86 , 114 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 10 , dataCodewordsPerBlock : 114 } , { numBlocks : 2 , dataCodewordsPerBlock : 115 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 19 ,
dataCodewordsPerBlock : 46 } , { numBlocks : 4 , dataCodewordsPerBlock : 47 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 28 , dataCodewordsPerBlock : 22 } , { numBlocks : 6 , dataCodewordsPerBlock : 23 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 33 , dataCodewordsPerBlock : 16 } , { numBlocks : 4 , dataCodewordsPerBlock : 17 } ] } ] } , { infoBits : 110734 , versionNumber : 27 , alignmentPatternCenters : [ 6 , 34 , 62 , 90 , 118 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 8 , dataCodewordsPerBlock : 122 } , { numBlocks : 4 , dataCodewordsPerBlock : 123 } ] } ,
{ ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 22 , dataCodewordsPerBlock : 45 } , { numBlocks : 3 , dataCodewordsPerBlock : 46 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 8 , dataCodewordsPerBlock : 23 } , { numBlocks : 26 , dataCodewordsPerBlock : 24 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 12 , dataCodewordsPerBlock : 15 } , { numBlocks : 28 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 117786 , versionNumber : 28 , alignmentPatternCenters : [ 6 , 26 , 50 , 74 , 98 , 122 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 3 , dataCodewordsPerBlock : 117 } ,
{ numBlocks : 10 , dataCodewordsPerBlock : 118 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 3 , dataCodewordsPerBlock : 45 } , { numBlocks : 23 , dataCodewordsPerBlock : 46 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 4 , dataCodewordsPerBlock : 24 } , { numBlocks : 31 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 11 , dataCodewordsPerBlock : 15 } , { numBlocks : 31 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 119615 , versionNumber : 29 , alignmentPatternCenters : [ 6 , 30 , 54 , 78 , 102 , 126 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 ,
ecBlocks : [ { numBlocks : 7 , dataCodewordsPerBlock : 116 } , { numBlocks : 7 , dataCodewordsPerBlock : 117 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 21 , dataCodewordsPerBlock : 45 } , { numBlocks : 7 , dataCodewordsPerBlock : 46 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 1 , dataCodewordsPerBlock : 23 } , { numBlocks : 37 , dataCodewordsPerBlock : 24 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 19 , dataCodewordsPerBlock : 15 } , { numBlocks : 26 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 126325 , versionNumber : 30 , alignmentPatternCenters : [ 6 ,
26 , 52 , 78 , 104 , 130 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 5 , dataCodewordsPerBlock : 115 } , { numBlocks : 10 , dataCodewordsPerBlock : 116 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 19 , dataCodewordsPerBlock : 47 } , { numBlocks : 10 , dataCodewordsPerBlock : 48 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 15 , dataCodewordsPerBlock : 24 } , { numBlocks : 25 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 23 , dataCodewordsPerBlock : 15 } , { numBlocks : 25 , dataCodewordsPerBlock : 16 } ] } ] } ,
{ infoBits : 127568 , versionNumber : 31 , alignmentPatternCenters : [ 6 , 30 , 56 , 82 , 108 , 134 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 13 , dataCodewordsPerBlock : 115 } , { numBlocks : 3 , dataCodewordsPerBlock : 116 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 46 } , { numBlocks : 29 , dataCodewordsPerBlock : 47 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 42 , dataCodewordsPerBlock : 24 } , { numBlocks : 1 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 23 , dataCodewordsPerBlock : 15 } ,
{ numBlocks : 28 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 133589 , versionNumber : 32 , alignmentPatternCenters : [ 6 , 34 , 60 , 86 , 112 , 138 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 17 , dataCodewordsPerBlock : 115 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 10 , dataCodewordsPerBlock : 46 } , { numBlocks : 23 , dataCodewordsPerBlock : 47 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 10 , dataCodewordsPerBlock : 24 } , { numBlocks : 35 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 19 ,
dataCodewordsPerBlock : 15 } , { numBlocks : 35 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 136944 , versionNumber : 33 , alignmentPatternCenters : [ 6 , 30 , 58 , 86 , 114 , 142 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 17 , dataCodewordsPerBlock : 115 } , { numBlocks : 1 , dataCodewordsPerBlock : 116 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 14 , dataCodewordsPerBlock : 46 } , { numBlocks : 21 , dataCodewordsPerBlock : 47 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 29 , dataCodewordsPerBlock : 24 } , { numBlocks : 19 , dataCodewordsPerBlock : 25 } ] } ,
{ ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 11 , dataCodewordsPerBlock : 15 } , { numBlocks : 46 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 141498 , versionNumber : 34 , alignmentPatternCenters : [ 6 , 34 , 62 , 90 , 118 , 146 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 13 , dataCodewordsPerBlock : 115 } , { numBlocks : 6 , dataCodewordsPerBlock : 116 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 14 , dataCodewordsPerBlock : 46 } , { numBlocks : 23 , dataCodewordsPerBlock : 47 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 44 ,
dataCodewordsPerBlock : 24 } , { numBlocks : 7 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 59 , dataCodewordsPerBlock : 16 } , { numBlocks : 1 , dataCodewordsPerBlock : 17 } ] } ] } , { infoBits : 145311 , versionNumber : 35 , alignmentPatternCenters : [ 6 , 30 , 54 , 78 , 102 , 126 , 150 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 12 , dataCodewordsPerBlock : 121 } , { numBlocks : 7 , dataCodewordsPerBlock : 122 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 12 , dataCodewordsPerBlock : 47 } , { numBlocks : 26 , dataCodewordsPerBlock : 48 } ] } ,
{ ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 39 , dataCodewordsPerBlock : 24 } , { numBlocks : 14 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 22 , dataCodewordsPerBlock : 15 } , { numBlocks : 41 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 150283 , versionNumber : 36 , alignmentPatternCenters : [ 6 , 24 , 50 , 76 , 102 , 128 , 154 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 6 , dataCodewordsPerBlock : 121 } , { numBlocks : 14 , dataCodewordsPerBlock : 122 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 6 ,
dataCodewordsPerBlock : 47 } , { numBlocks : 34 , dataCodewordsPerBlock : 48 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 46 , dataCodewordsPerBlock : 24 } , { numBlocks : 10 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 2 , dataCodewordsPerBlock : 15 } , { numBlocks : 64 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 152622 , versionNumber : 37 , alignmentPatternCenters : [ 6 , 28 , 54 , 80 , 106 , 132 , 158 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 17 , dataCodewordsPerBlock : 122 } , { numBlocks : 4 , dataCodewordsPerBlock : 123 } ] } ,
{ ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 29 , dataCodewordsPerBlock : 46 } , { numBlocks : 14 , dataCodewordsPerBlock : 47 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 49 , dataCodewordsPerBlock : 24 } , { numBlocks : 10 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 24 , dataCodewordsPerBlock : 15 } , { numBlocks : 46 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 158308 , versionNumber : 38 , alignmentPatternCenters : [ 6 , 32 , 58 , 84 , 110 , 136 , 162 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 4 ,
dataCodewordsPerBlock : 122 } , { numBlocks : 18 , dataCodewordsPerBlock : 123 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 13 , dataCodewordsPerBlock : 46 } , { numBlocks : 32 , dataCodewordsPerBlock : 47 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 48 , dataCodewordsPerBlock : 24 } , { numBlocks : 14 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 42 , dataCodewordsPerBlock : 15 } , { numBlocks : 32 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 161089 , versionNumber : 39 , alignmentPatternCenters : [ 6 , 26 , 54 , 82 , 110 , 138 , 166 ] ,
errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 20 , dataCodewordsPerBlock : 117 } , { numBlocks : 4 , dataCodewordsPerBlock : 118 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 40 , dataCodewordsPerBlock : 47 } , { numBlocks : 7 , dataCodewordsPerBlock : 48 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 43 , dataCodewordsPerBlock : 24 } , { numBlocks : 22 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 10 , dataCodewordsPerBlock : 15 } , { numBlocks : 67 , dataCodewordsPerBlock : 16 } ] } ] } , { infoBits : 167017 ,
versionNumber : 40 , alignmentPatternCenters : [ 6 , 30 , 58 , 86 , 114 , 142 , 170 ] , errorCorrectionLevels : [ { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 19 , dataCodewordsPerBlock : 118 } , { numBlocks : 6 , dataCodewordsPerBlock : 119 } ] } , { ecCodewordsPerBlock : 28 , ecBlocks : [ { numBlocks : 18 , dataCodewordsPerBlock : 47 } , { numBlocks : 31 , dataCodewordsPerBlock : 48 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 34 , dataCodewordsPerBlock : 24 } , { numBlocks : 34 , dataCodewordsPerBlock : 25 } ] } , { ecCodewordsPerBlock : 30 , ecBlocks : [ { numBlocks : 20 , dataCodewordsPerBlock : 15 } ,
{ numBlocks : 61 , dataCodewordsPerBlock : 16 } ] } ] } ] ; function J ( a , b ) { a ^= b ; for ( b = 0 ; a ; ) b ++ , a &= a - 1 ; return b } function K ( a , b ) { return b << 1 | a }
let ia = [ { bits : 21522 , formatInfo : { errorCorrectionLevel : 1 , dataMask : 0 } } , { bits : 20773 , formatInfo : { errorCorrectionLevel : 1 , dataMask : 1 } } , { bits : 24188 , formatInfo : { errorCorrectionLevel : 1 , dataMask : 2 } } , { bits : 23371 , formatInfo : { errorCorrectionLevel : 1 , dataMask : 3 } } , { bits : 17913 , formatInfo : { errorCorrectionLevel : 1 , dataMask : 4 } } , { bits : 16590 , formatInfo : { errorCorrectionLevel : 1 , dataMask : 5 } } , { bits : 20375 , formatInfo : { errorCorrectionLevel : 1 , dataMask : 6 } } , { bits : 19104 , formatInfo : { errorCorrectionLevel : 1 , dataMask : 7 } } , { bits : 30660 , formatInfo : { errorCorrectionLevel : 0 ,
dataMask : 0 } } , { bits : 29427 , formatInfo : { errorCorrectionLevel : 0 , dataMask : 1 } } , { bits : 32170 , formatInfo : { errorCorrectionLevel : 0 , dataMask : 2 } } , { bits : 30877 , formatInfo : { errorCorrectionLevel : 0 , dataMask : 3 } } , { bits : 26159 , formatInfo : { errorCorrectionLevel : 0 , dataMask : 4 } } , { bits : 25368 , formatInfo : { errorCorrectionLevel : 0 , dataMask : 5 } } , { bits : 27713 , formatInfo : { errorCorrectionLevel : 0 , dataMask : 6 } } , { bits : 26998 , formatInfo : { errorCorrectionLevel : 0 , dataMask : 7 } } , { bits : 5769 , formatInfo : { errorCorrectionLevel : 3 , dataMask : 0 } } , { bits : 5054 ,
formatInfo : { errorCorrectionLevel : 3 , dataMask : 1 } } , { bits : 7399 , formatInfo : { errorCorrectionLevel : 3 , dataMask : 2 } } , { bits : 6608 , formatInfo : { errorCorrectionLevel : 3 , dataMask : 3 } } , { bits : 1890 , formatInfo : { errorCorrectionLevel : 3 , dataMask : 4 } } , { bits : 597 , formatInfo : { errorCorrectionLevel : 3 , dataMask : 5 } } , { bits : 3340 , formatInfo : { errorCorrectionLevel : 3 , dataMask : 6 } } , { bits : 2107 , formatInfo : { errorCorrectionLevel : 3 , dataMask : 7 } } , { bits : 13663 , formatInfo : { errorCorrectionLevel : 2 , dataMask : 0 } } , { bits : 12392 , formatInfo : { errorCorrectionLevel : 2 ,
dataMask : 1 } } , { bits : 16177 , formatInfo : { errorCorrectionLevel : 2 , dataMask : 2 } } , { bits : 14854 , formatInfo : { errorCorrectionLevel : 2 , dataMask : 3 } } , { bits : 9396 , formatInfo : { errorCorrectionLevel : 2 , dataMask : 4 } } , { bits : 8579 , formatInfo : { errorCorrectionLevel : 2 , dataMask : 5 } } , { bits : 11994 , formatInfo : { errorCorrectionLevel : 2 , dataMask : 6 } } , { bits : 11245 , formatInfo : { errorCorrectionLevel : 2 , dataMask : 7 } } ] , ja = [ a => 0 === ( a . y + a . x ) % 2 , a => 0 === a . y % 2 , a => 0 === a . x % 3 , a => 0 === ( a . y + a . x ) % 3 , a => 0 === ( Math . floor ( a . y / 2 ) + Math . floor ( a . x / 3 ) ) % 2 , a => 0 === a . x * a . y %
2 + a . x * a . y % 3 , a => 0 === ( a . y * a . x % 2 + a . y * a . x % 3 ) % 2 , a => 0 === ( ( a . y + a . x ) % 2 + a . y * a . x % 3 ) % 2 ] ;
function ka ( a , b , c ) { c = ja [ c . dataMask ] ; let d = a . height ; var e = 17 + 4 * b . versionNumber ; let f = x . createEmpty ( e , e ) ; f . setRegion ( 0 , 0 , 9 , 9 , ! 0 ) ; f . setRegion ( e - 8 , 0 , 8 , 9 , ! 0 ) ; f . setRegion ( 0 , e - 8 , 9 , 8 , ! 0 ) ; for ( var g of b . alignmentPatternCenters ) for ( var h of b . alignmentPatternCenters ) 6 === g && 6 === h || 6 === g && h === e - 7 || g === e - 7 && 6 === h || f . setRegion ( g - 2 , h - 2 , 5 , 5 , ! 0 ) ; f . setRegion ( 6 , 9 , 1 , e - 17 , ! 0 ) ; f . setRegion ( 9 , 6 , e - 17 , 1 , ! 0 ) ; 6 < b . versionNumber && ( f . setRegion ( e - 11 , 0 , 3 , 6 , ! 0 ) , f . setRegion ( 0 , e - 11 , 6 , 3 , ! 0 ) ) ; b = [ ] ; h = g = 0 ; e = ! 0 ; for ( let k = d - 1 ; 0 < k ; k -= 2 ) { 6 ===
k && k -- ; for ( let m = 0 ; m < d ; m ++ ) { let l = e ? d - 1 - m : m ; for ( let n = 0 ; 2 > n ; n ++ ) { let q = k - n ; if ( ! f . get ( q , l ) ) { h ++ ; let r = a . get ( q , l ) ; c ( { y : l , x : q } ) && ( r = ! r ) ; g = g << 1 | r ; 8 === h && ( b . push ( g ) , g = h = 0 ) } } } e = ! e } return b }
function la ( a ) { var b = a . height , c = Math . floor ( ( b - 17 ) / 4 ) ; if ( 6 >= c ) return I [ c - 1 ] ; c = 0 ; for ( var d = 5 ; 0 <= d ; d -- ) for ( var e = b - 9 ; e >= b - 11 ; e -- ) c = K ( a . get ( e , d ) , c ) ; d = 0 ; for ( e = 5 ; 0 <= e ; e -- ) for ( let g = b - 9 ; g >= b - 11 ; g -- ) d = K ( a . get ( e , g ) , d ) ; a = Infinity ; let f ; for ( let g of I ) { if ( g . infoBits === c || g . infoBits === d ) return g ; b = J ( c , g . infoBits ) ; b < a && ( f = g , a = b ) ; b = J ( d , g . infoBits ) ; b < a && ( f = g , a = b ) } if ( 3 >= a ) return f }
function ma ( a ) { let b = 0 ; for ( var c = 0 ; 8 >= c ; c ++ ) 6 !== c && ( b = K ( a . get ( c , 8 ) , b ) ) ; for ( c = 7 ; 0 <= c ; c -- ) 6 !== c && ( b = K ( a . get ( 8 , c ) , b ) ) ; var d = a . height ; c = 0 ; for ( var e = d - 1 ; e >= d - 7 ; e -- ) c = K ( a . get ( 8 , e ) , c ) ; for ( e = d - 8 ; e < d ; e ++ ) c = K ( a . get ( e , 8 ) , c ) ; a = Infinity ; d = null ; for ( let { bits : f , formatInfo : g } of ia ) { if ( f === b || f === c ) return g ; e = J ( b , f ) ; e < a && ( d = g , a = e ) ; b !== c && ( e = J ( c , f ) , e < a && ( d = g , a = e ) ) } return 3 >= a ? d : null }
function na ( a , b , c ) { let d = b . errorCorrectionLevels [ c ] , e = [ ] , f = 0 ; d . ecBlocks . forEach ( h => { for ( let k = 0 ; k < h . numBlocks ; k ++ ) e . push ( { numDataCodewords : h . dataCodewordsPerBlock , codewords : [ ] } ) , f += h . dataCodewordsPerBlock + d . ecCodewordsPerBlock } ) ; if ( a . length < f ) return null ; a = a . slice ( 0 , f ) ; b = d . ecBlocks [ 0 ] . dataCodewordsPerBlock ; for ( c = 0 ; c < b ; c ++ ) for ( var g of e ) g . codewords . push ( a . shift ( ) ) ; if ( 1 < d . ecBlocks . length ) for ( g = d . ecBlocks [ 0 ] . numBlocks , b = d . ecBlocks [ 1 ] . numBlocks , c = 0 ; c < b ; c ++ ) e [ g + c ] . codewords . push ( a . shift ( ) ) ; for ( ; 0 < a . length ; ) for ( let h of e ) h . codewords . push ( a . shift ( ) ) ;
return e } function L ( a ) { let b = la ( a ) ; if ( ! b ) return null ; var c = ma ( a ) ; if ( ! c ) return null ; a = ka ( a , b , c ) ; var d = na ( a , b , c . errorCorrectionLevel ) ; if ( ! d ) return null ; c = d . reduce ( ( e , f ) => e + f . numDataCodewords , 0 ) ; c = new Uint8ClampedArray ( c ) ; a = 0 ; for ( let e of d ) { d = ha ( e . codewords , e . codewords . length - e . numDataCodewords ) ; if ( ! d ) return null ; for ( let f = 0 ; f < e . numDataCodewords ; f ++ ) c [ a ++ ] = d [ f ] } try { return da ( c , b . versionNumber ) } catch ( e ) { return null } }
function M ( a , b , c , d ) { var e = a . x - b . x + c . x - d . x ; let f = a . y - b . y + c . y - d . y ; if ( 0 === e && 0 === f ) return { a11 : b . x - a . x , a12 : b . y - a . y , a13 : 0 , a21 : c . x - b . x , a22 : c . y - b . y , a23 : 0 , a31 : a . x , a32 : a . y , a33 : 1 } ; let g = b . x - c . x ; var h = d . x - c . x ; let k = b . y - c . y , m = d . y - c . y ; c = g * m - h * k ; h = ( e * m - h * f ) / c ; e = ( g * f - e * k ) / c ; return { a11 : b . x - a . x + h * b . x , a12 : b . y - a . y + h * b . y , a13 : h , a21 : d . x - a . x + e * d . x , a22 : d . y - a . y + e * d . y , a23 : e , a31 : a . x , a32 : a . y , a33 : 1 } }
function oa ( a , b , c , d ) { a = M ( a , b , c , d ) ; return { a11 : a . a22 * a . a33 - a . a23 * a . a32 , a12 : a . a13 * a . a32 - a . a12 * a . a33 , a13 : a . a12 * a . a23 - a . a13 * a . a22 , a21 : a . a23 * a . a31 - a . a21 * a . a33 , a22 : a . a11 * a . a33 - a . a13 * a . a31 , a23 : a . a13 * a . a21 - a . a11 * a . a23 , a31 : a . a21 * a . a32 - a . a22 * a . a31 , a32 : a . a12 * a . a31 - a . a11 * a . a32 , a33 : a . a11 * a . a22 - a . a12 * a . a21 } }
function pa ( a , b ) { var c = oa ( { x : 3.5 , y : 3.5 } , { x : b . dimension - 3.5 , y : 3.5 } , { x : b . dimension - 6.5 , y : b . dimension - 6.5 } , { x : 3.5 , y : b . dimension - 3.5 } ) , d = M ( b . topLeft , b . topRight , b . alignmentPattern , b . bottomLeft ) , e = d . a11 * c . a11 + d . a21 * c . a12 + d . a31 * c . a13 , f = d . a12 * c . a11 + d . a22 * c . a12 + d . a32 * c . a13 , g = d . a13 * c . a11 + d . a23 * c . a12 + d . a33 * c . a13 , h = d . a11 * c . a21 + d . a21 * c . a22 + d . a31 * c . a23 , k = d . a12 * c . a21 + d . a22 * c . a22 + d . a32 * c . a23 , m = d . a13 * c . a21 + d . a23 * c . a22 + d . a33 * c . a23 , l = d . a11 * c . a31 + d . a21 * c . a32 + d . a31 * c . a33 , n = d . a12 * c . a31 + d . a22 * c . a32 + d . a32 * c . a33 , q = d . a13 *
c . a31 + d . a23 * c . a32 + d . a33 * c . a33 ; c = x . createEmpty ( b . dimension , b . dimension ) ; d = ( r , u ) => { const p = g * r + m * u + q ; return { x : ( e * r + h * u + l ) / p , y : ( f * r + k * u + n ) / p } } ; for ( let r = 0 ; r < b . dimension ; r ++ ) for ( let u = 0 ; u < b . dimension ; u ++ ) { let p = d ( u + . 5 , r + . 5 ) ; c . set ( u , r , a . get ( Math . floor ( p . x ) , Math . floor ( p . y ) ) ) } return { matrix : c , mappingFunction : d } } let N = ( a , b ) => Math . sqrt ( Math . pow ( b . x - a . x , 2 ) + Math . pow ( b . y - a . y , 2 ) ) ; function O ( a ) { return a . reduce ( ( b , c ) => b + c ) }
function qa ( a , b , c ) { let d = N ( a , b ) , e = N ( b , c ) , f = N ( a , c ) , g , h , k ; e >= d && e >= f ? [ g , h , k ] = [ b , a , c ] : f >= e && f >= d ? [ g , h , k ] = [ a , b , c ] : [ g , h , k ] = [ a , c , b ] ; 0 > ( k . x - h . x ) * ( g . y - h . y ) - ( k . y - h . y ) * ( g . x - h . x ) && ( [ g , k ] = [ k , g ] ) ; return { bottomLeft : g , topLeft : h , topRight : k } }
function ra ( a , b , c , d ) { d = ( O ( P ( a , c , d , 5 ) ) / 7 + O ( P ( a , b , d , 5 ) ) / 7 + O ( P ( c , a , d , 5 ) ) / 7 + O ( P ( b , a , d , 5 ) ) / 7 ) / 4 ; if ( 1 > d ) throw Error ( "Invalid module size" ) ; b = Math . round ( N ( a , b ) / d ) ; a = Math . round ( N ( a , c ) / d ) ; a = Math . floor ( ( b + a ) / 2 ) + 7 ; switch ( a % 4 ) { case 0 : a ++ ; break ; case 2 : a -- } return { dimension : a , moduleSize : d } }
function Q ( a , b , c , d ) { let e = [ { x : Math . floor ( a . x ) , y : Math . floor ( a . y ) } ] ; var f = Math . abs ( b . y - a . y ) > Math . abs ( b . x - a . x ) ; if ( f ) { var g = Math . floor ( a . y ) ; var h = Math . floor ( a . x ) ; a = Math . floor ( b . y ) ; b = Math . floor ( b . x ) } else g = Math . floor ( a . x ) , h = Math . floor ( a . y ) , a = Math . floor ( b . x ) , b = Math . floor ( b . y ) ; let k = Math . abs ( a - g ) , m = Math . abs ( b - h ) , l = Math . floor ( - k / 2 ) , n = g < a ? 1 : - 1 , q = h < b ? 1 : - 1 , r = ! 0 ; for ( let u = g , p = h ; u !== a + n ; u += n ) { g = f ? p : u ; h = f ? u : p ; if ( c . get ( g , h ) !== r && ( r = ! r , e . push ( { x : g , y : h } ) , e . length === d + 1 ) ) break ; l += m ; if ( 0 < l ) { if ( p === b ) break ; p += q ; l -= k } } c =
[ ] ; for ( f = 0 ; f < d ; f ++ ) e [ f ] && e [ f + 1 ] ? c . push ( N ( e [ f ] , e [ f + 1 ] ) ) : c . push ( 0 ) ; return c } function P ( a , b , c , d ) { let e = b . y - a . y , f = b . x - a . x ; b = Q ( a , b , c , Math . ceil ( d / 2 ) ) ; a = Q ( a , { x : a . x - f , y : a . y - e } , c , Math . ceil ( d / 2 ) ) ; c = b . shift ( ) + a . shift ( ) - 1 ; return a . concat ( c ) . concat ( ... b ) } function R ( a , b ) { let c = O ( a ) / O ( b ) , d = 0 ; b . forEach ( ( e , f ) => { d += Math . pow ( a [ f ] - e * c , 2 ) } ) ; return { averageSize : c , error : d } }
function S ( a , b , c ) { try { let d = P ( a , { x : - 1 , y : a . y } , c , b . length ) , e = P ( a , { x : a . x , y : - 1 } , c , b . length ) , f = P ( a , { x : Math . max ( 0 , a . x - a . y ) - 1 , y : Math . max ( 0 , a . y - a . x ) - 1 } , c , b . length ) , g = P ( a , { x : Math . min ( c . width , a . x + a . y ) + 1 , y : Math . min ( c . height , a . y + a . x ) + 1 } , c , b . length ) , h = R ( d , b ) , k = R ( e , b ) , m = R ( f , b ) , l = R ( g , b ) , n = ( h . averageSize + k . averageSize + m . averageSize + l . averageSize ) / 4 ; return Math . sqrt ( h . error * h . error + k . error * k . error + m . error * m . error + l . error * l . error ) + ( Math . pow ( h . averageSize - n , 2 ) + Math . pow ( k . averageSize - n , 2 ) + Math . pow ( m . averageSize - n , 2 ) +
Math . pow ( l . averageSize - n , 2 ) ) / n } catch ( d ) { return Infinity } } function T ( a , b ) { for ( var c = Math . round ( b . x ) ; a . get ( c , Math . round ( b . y ) ) ; ) c -- ; for ( var d = Math . round ( b . x ) ; a . get ( d , Math . round ( b . y ) ) ; ) d ++ ; c = ( c + d ) / 2 ; for ( d = Math . round ( b . y ) ; a . get ( Math . round ( c ) , d ) ; ) d -- ; for ( b = Math . round ( b . y ) ; a . get ( Math . round ( c ) , b ) ; ) b ++ ; return { x : c , y : ( d + b ) / 2 } }
function sa ( a ) { var b = [ ] , c = [ ] ; let d = [ ] ; var e = [ ] ; for ( let p = 0 ; p <= a . height ; p ++ ) { var f = 0 , g = ! 1 ; let t = [ 0 , 0 , 0 , 0 , 0 ] ; for ( let v = - 1 ; v <= a . width ; v ++ ) { var h = a . get ( v , p ) ; if ( h === g ) f ++ ; else { t = [ t [ 1 ] , t [ 2 ] , t [ 3 ] , t [ 4 ] , f ] ; f = 1 ; g = h ; var k = O ( t ) / 7 ; k = Math . abs ( t [ 0 ] - k ) < k && Math . abs ( t [ 1 ] - k ) < k && Math . abs ( t [ 2 ] - 3 * k ) < 3 * k && Math . abs ( t [ 3 ] - k ) < k && Math . abs ( t [ 4 ] - k ) < k && ! h ; var m = O ( t . slice ( - 3 ) ) / 3 ; h = Math . abs ( t [ 2 ] - m ) < m && Math . abs ( t [ 3 ] - m ) < m && Math . abs ( t [ 4 ] - m ) < m && h ; if ( k ) { let z = v - t [ 3 ] - t [ 4 ] , y = z - t [ 2 ] ; k = { startX : y , endX : z , y : p } ; m = c . filter ( w => y >= w . bottom . startX &&
y <= w . bottom . endX || z >= w . bottom . startX && y <= w . bottom . endX || y <= w . bottom . startX && z >= w . bottom . endX && 1.5 > t [ 2 ] / ( w . bottom . endX - w . bottom . startX ) && . 5 < t [ 2 ] / ( w . bottom . endX - w . bottom . startX ) ) ; 0 < m . length ? m [ 0 ] . bottom = k : c . push ( { top : k , bottom : k } ) } if ( h ) { let z = v - t [ 4 ] , y = z - t [ 3 ] ; h = { startX : y , y : p , endX : z } ; k = e . filter ( w => y >= w . bottom . startX && y <= w . bottom . endX || z >= w . bottom . startX && y <= w . bottom . endX || y <= w . bottom . startX && z >= w . bottom . endX && 1.5 > t [ 2 ] / ( w . bottom . endX - w . bottom . startX ) && . 5 < t [ 2 ] / ( w . bottom . endX - w . bottom . startX ) ) ; 0 < k . length ?
k [ 0 ] . bottom = h : e . push ( { top : h , bottom : h } ) } } } b . push ( ... c . filter ( v => v . bottom . y !== p && 2 <= v . bottom . y - v . top . y ) ) ; c = c . filter ( v => v . bottom . y === p ) ; d . push ( ... e . filter ( v => v . bottom . y !== p ) ) ; e = e . filter ( v => v . bottom . y === p ) } b . push ( ... c . filter ( p => 2 <= p . bottom . y - p . top . y ) ) ; d . push ( ... e ) ; c = [ ] ; for ( var l of b ) 2 > l . bottom . y - l . top . y || ( b = ( l . top . startX + l . top . endX + l . bottom . startX + l . bottom . endX ) / 4 , e = ( l . top . y + l . bottom . y + 1 ) / 2 , a . get ( Math . round ( b ) , Math . round ( e ) ) && ( f = [ l . top . endX - l . top . startX , l . bottom . endX - l . bottom . startX , l . bottom . y - l . top . y +
1 ] , f = O ( f ) / f . length , g = S ( { x : Math . round ( b ) , y : Math . round ( e ) } , [ 1 , 1 , 3 , 1 , 1 ] , a ) , c . push ( { score : g , x : b , y : e , size : f } ) ) ) ; if ( 3 > c . length ) return null ; c . sort ( ( p , t ) => p . score - t . score ) ; l = [ ] ; for ( b = 0 ; b < Math . min ( c . length , 5 ) ; ++ b ) { e = c [ b ] ; f = [ ] ; for ( var n of c ) n !== e && f . push ( Object . assign ( Object . assign ( { } , n ) , { score : n . score + Math . pow ( n . size - e . size , 2 ) / e . size } ) ) ; f . sort ( ( p , t ) => p . score - t . score ) ; l . push ( { points : [ e , f [ 0 ] , f [ 1 ] ] , score : e . score + f [ 0 ] . score + f [ 1 ] . score } ) } l . sort ( ( p , t ) => p . score - t . score ) ; let { topRight : q , topLeft : r , bottomLeft : u } = qa ( ... l [ 0 ] . points ) ;
l = U ( a , d , q , r , u ) ; n = [ ] ; l && n . push ( { alignmentPattern : { x : l . alignmentPattern . x , y : l . alignmentPattern . y } , bottomLeft : { x : u . x , y : u . y } , dimension : l . dimension , topLeft : { x : r . x , y : r . y } , topRight : { x : q . x , y : q . y } } ) ; l = T ( a , q ) ; b = T ( a , r ) ; c = T ( a , u ) ; ( a = U ( a , d , l , b , c ) ) && n . push ( { alignmentPattern : { x : a . alignmentPattern . x , y : a . alignmentPattern . y } , bottomLeft : { x : c . x , y : c . y } , topLeft : { x : b . x , y : b . y } , topRight : { x : l . x , y : l . y } , dimension : a . dimension } ) ; return 0 === n . length ? null : n }
function U ( a , b , c , d , e ) { let f , g ; try { ( { dimension : f , moduleSize : g } = ra ( d , c , e , a ) ) } catch ( l ) { return null } var h = c . x - d . x + e . x , k = c . y - d . y + e . y ; c = ( N ( d , e ) + N ( d , c ) ) / 2 / g ; e = 1 - 3 / c ; let m = { x : d . x + e * ( h - d . x ) , y : d . y + e * ( k - d . y ) } ; b = b . map ( l => { const n = ( l . top . startX + l . top . endX + l . bottom . startX + l . bottom . endX ) / 4 ; l = ( l . top . y + l . bottom . y + 1 ) / 2 ; if ( a . get ( Math . floor ( n ) , Math . floor ( l ) ) ) { var q = S ( { x : Math . floor ( n ) , y : Math . floor ( l ) } , [ 1 , 1 , 1 ] , a ) + N ( { x : n , y : l } , m ) ; return { x : n , y : l , score : q } } } ) . filter ( l => ! ! l ) . sort ( ( l , n ) => l . score - n . score ) ; return { alignmentPattern : 15 <=
c && b . length ? b [ 0 ] : m , dimension : f } }
function V ( a ) { var b = sa ( a ) ; if ( ! b ) return null ; for ( let e of b ) { b = pa ( a , e ) ; var c = b . matrix ; if ( null == c ) c = null ; else { var d = L ( c ) ; if ( d ) c = d ; else { for ( d = 0 ; d < c . width ; d ++ ) for ( let f = d + 1 ; f < c . height ; f ++ ) c . get ( d , f ) !== c . get ( f , d ) && ( c . set ( d , f , ! c . get ( d , f ) ) , c . set ( f , d , ! c . get ( f , d ) ) ) ; c = L ( c ) } } if ( c ) return { binaryData : c . bytes , data : c . text , chunks : c . chunks , version : c . version , location : { topRightCorner : b . mappingFunction ( e . dimension , 0 ) , topLeftCorner : b . mappingFunction ( 0 , 0 ) , bottomRightCorner : b . mappingFunction ( e . dimension , e . dimension ) , bottomLeftCorner : b . mappingFunction ( 0 ,
e . dimension ) , topRightFinderPattern : e . topRight , topLeftFinderPattern : e . topLeft , bottomLeftFinderPattern : e . bottomLeft , bottomRightAlignmentPattern : e . alignmentPattern } , matrix : b . matrix } } return null } let ta = { inversionAttempts : "attemptBoth" , greyScaleWeights : { red : . 2126 , green : . 7152 , blue : . 0722 , useIntegerApproximation : ! 1 } , canOverwriteImage : ! 0 } ; function W ( a , b ) { Object . keys ( b ) . forEach ( c => { a [ c ] = b [ c ] } ) }
function X ( a , b , c , d = { } ) { let e = Object . create ( null ) ; W ( e , ta ) ; W ( e , d ) ; d = "onlyInvert" === e . inversionAttempts || "invertFirst" === e . inversionAttempts ; var f = "attemptBoth" === e . inversionAttempts || d ; var g = e . greyScaleWeights , h = e . canOverwriteImage , k = b * c ; if ( a . length !== 4 * k ) throw Error ( "Malformed data passed to binarizer." ) ; var m = 0 ; if ( h ) { var l = new Uint8ClampedArray ( a . buffer , m , k ) ; m += k } l = new A ( b , c , l ) ; if ( g . useIntegerApproximation ) for ( var n = 0 ; n < c ; n ++ ) for ( var q = 0 ; q < b ; q ++ ) { var r = 4 * ( n * b + q ) ; l . set ( q , n , g . red * a [ r ] + g . green * a [ r + 1 ] +
g . blue * a [ r + 2 ] + 128 >> 8 ) } else for ( n = 0 ; n < c ; n ++ ) for ( q = 0 ; q < b ; q ++ ) r = 4 * ( n * b + q ) , l . set ( q , n , g . red * a [ r ] + g . green * a [ r + 1 ] + g . blue * a [ r + 2 ] ) ; g = Math . ceil ( b / 8 ) ; n = Math . ceil ( c / 8 ) ; q = g * n ; if ( h ) { var u = new Uint8ClampedArray ( a . buffer , m , q ) ; m += q } u = new A ( g , n , u ) ; for ( q = 0 ; q < n ; q ++ ) for ( r = 0 ; r < g ; r ++ ) { var p = Infinity , t = 0 ; for ( var v = 0 ; 8 > v ; v ++ ) for ( let w = 0 ; 8 > w ; w ++ ) { let aa = l . get ( 8 * r + w , 8 * q + v ) ; p = Math . min ( p , aa ) ; t = Math . max ( t , aa ) } v = ( p + t ) / 2 ; v = Math . min ( 255 , 1.11 * v ) ; 24 >= t - p && ( v = p / 2 , 0 < q && 0 < r && ( t = ( u . get ( r , q - 1 ) + 2 * u . get ( r - 1 , q ) + u . get ( r - 1 , q - 1 ) ) / 4 , p < t && ( v = t ) ) ) ;
u . set ( r , q , v ) } h ? ( q = new Uint8ClampedArray ( a . buffer , m , k ) , m += k , q = new x ( q , b ) ) : q = x . createEmpty ( b , c ) ; r = null ; f && ( h ? ( a = new Uint8ClampedArray ( a . buffer , m , k ) , r = new x ( a , b ) ) : r = x . createEmpty ( b , c ) ) ; for ( b = 0 ; b < n ; b ++ ) for ( a = 0 ; a < g ; a ++ ) { c = g - 3 ; c = 2 > a ? 2 : a > c ? c : a ; h = n - 3 ; h = 2 > b ? 2 : b > h ? h : b ; k = 0 ; for ( m = - 2 ; 2 >= m ; m ++ ) for ( p = - 2 ; 2 >= p ; p ++ ) k += u . get ( c + m , h + p ) ; c = k / 25 ; for ( h = 0 ; 8 > h ; h ++ ) for ( k = 0 ; 8 > k ; k ++ ) m = 8 * a + h , p = 8 * b + k , t = l . get ( m , p ) , q . set ( m , p , t <= c ) , f && r . set ( m , p , ! ( t <= c ) ) } f = f ? { binarized : q , inverted : r } : { binarized : q } ; let { binarized : z , inverted : y } = f ; ( f = V ( d ?
y : z ) ) || "attemptBoth" !== e . inversionAttempts && "invertFirst" !== e . inversionAttempts || ( f = V ( d ? z : y ) ) ; return f } X . default = X ; let Y = "dontInvert" , Z = { red : 77 , green : 150 , blue : 29 , useIntegerApproximation : ! 0 } ;
self . onmessage = a => { let b = a . data . id , c = a . data . data ; switch ( a . data . type ) { case "decode" : ( a = X ( c . data , c . width , c . height , { inversionAttempts : Y , greyScaleWeights : Z } ) ) ? self . postMessage ( { id : b , type : "qrResult" , data : a . data , cornerPoints : [ a . location . topLeftCorner , a . location . topRightCorner , a . location . bottomRightCorner , a . location . bottomLeftCorner ] } ) : self . postMessage ( { id : b , type : "qrResult" , data : null } ) ; break ; case "grayscaleWeights" : Z . red = c . red ; Z . green = c . green ; Z . blue = c . blue ; Z . useIntegerApproximation = c . useIntegerApproximation ;
break ; case "inversionMode" : switch ( c ) { case "original" : Y = "dontInvert" ; break ; case "invert" : Y = "onlyInvert" ; break ; case "both" : Y = "attemptBoth" ; break ; default : throw Error ( "Invalid inversion mode" ) ; } break ; case "close" : self . close ( ) } }
2023-06-28 17:41:57 +02:00
` ,
] ) ,
{ type : "application/javascript" }
)
) ; //# sourceMappingURL=qr-scanner-worker.min.js.map