1 line
No EOL
28 KiB
JavaScript
1 line
No EOL
28 KiB
JavaScript
var qrcode=(()=>{function qrcode(typeNumber,errorCorrectionLevel){function makeImpl(test,maskPattern){_modules=(moduleCount=>{for(var modules=new Array(moduleCount),row=0;row<moduleCount;row+=1){modules[row]=new Array(moduleCount);for(var col=0;col<moduleCount;col+=1)modules[row][col]=null}return modules})(_moduleCount=4*_typeNumber+17),setupPositionProbePattern(0,0),setupPositionProbePattern(_moduleCount-7,0),setupPositionProbePattern(0,_moduleCount-7),setupPositionAdjustPattern(),setupTimingPattern(),setupTypeInfo(test,maskPattern),7<=_typeNumber&&setupTypeNumber(test),null==_dataCache&&(_dataCache=createData(_typeNumber,_errorCorrectionLevel,_dataList)),mapData(_dataCache,maskPattern)}var PAD0=236,PAD1=17,_typeNumber=typeNumber,_errorCorrectionLevel=QRErrorCorrectionLevel[errorCorrectionLevel],_modules=null,_moduleCount=0,_dataCache=null,_dataList=[],_this={},setupPositionProbePattern=function(row,col){for(var r=-1;r<=7;r+=1)if(!(row+r<=-1||_moduleCount<=row+r))for(var c=-1;c<=7;c+=1)col+c<=-1||_moduleCount<=col+c||(_modules[row+r][col+c]=0<=r&&r<=6&&(0==c||6==c)||0<=c&&c<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=c&&c<=4)},setupTimingPattern=function(){for(var r=8;r<_moduleCount-8;r+=1)null==_modules[r][6]&&(_modules[r][6]=r%2==0);for(var c=8;c<_moduleCount-8;c+=1)null==_modules[6][c]&&(_modules[6][c]=c%2==0)},setupPositionAdjustPattern=function(){for(var pos=QRUtil.getPatternPosition(_typeNumber),i=0;i<pos.length;i+=1)for(var j=0;j<pos.length;j+=1){var row=pos[i],col=pos[j];if(null==_modules[row][col])for(var r=-2;r<=2;r+=1)for(var c=-2;c<=2;c+=1)_modules[row+r][col+c]=-2==r||2==r||-2==c||2==c||0==r&&0==c}},setupTypeNumber=function(test){for(var bits=QRUtil.getBCHTypeNumber(_typeNumber),i=0;i<18;i+=1){var mod=!test&&1==(bits>>i&1);_modules[Math.floor(i/3)][i%3+_moduleCount-8-3]=mod}for(i=0;i<18;i+=1){mod=!test&&1==(bits>>i&1);_modules[i%3+_moduleCount-8-3][Math.floor(i/3)]=mod}},setupTypeInfo=function(test,maskPattern){for(var maskPattern=_errorCorrectionLevel<<3|maskPattern,bits=QRUtil.getBCHTypeInfo(maskPattern),i=0;i<15;i+=1){var mod=!test&&1==(bits>>i&1);i<6?_modules[i][8]=mod:i<8?_modules[i+1][8]=mod:_modules[_moduleCount-15+i][8]=mod}for(i=0;i<15;i+=1){mod=!test&&1==(bits>>i&1);i<8?_modules[8][_moduleCount-i-1]=mod:i<9?_modules[8][15-i-1+1]=mod:_modules[8][15-i-1]=mod}_modules[_moduleCount-8][8]=!test},mapData=function(data,maskPattern){for(var inc=-1,row=_moduleCount-1,bitIndex=7,byteIndex=0,maskFunc=QRUtil.getMaskFunction(maskPattern),col=_moduleCount-1;0<col;col-=2)for(6==col&&--col;;){for(var dark,mask,c=0;c<2;c+=1)null==_modules[row][col-c]&&(dark=!1,byteIndex<data.length&&(dark=1==(data[byteIndex]>>>bitIndex&1)),mask=maskFunc(row,col-c),_modules[row][col-c]=dark=mask?!dark:dark,-1==--bitIndex)&&(byteIndex+=1,bitIndex=7);if((row+=inc)<0||_moduleCount<=row){row-=inc,inc=-inc;break}}},createBytes=function(buffer,rsBlocks){for(var offset=0,maxDcCount=0,maxEcCount=0,dcdata=new Array(rsBlocks.length),ecdata=new Array(rsBlocks.length),r=0;r<rsBlocks.length;r+=1){var dcCount=rsBlocks[r].dataCount,ecCount=rsBlocks[r].totalCount-dcCount,maxDcCount=Math.max(maxDcCount,dcCount),maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i+=1)dcdata[r][i]=255&buffer.getBuffer()[i+offset];offset+=dcCount;var dcCount=QRUtil.getErrorCorrectPolynomial(ecCount),modPoly=qrPolynomial(dcdata[r],dcCount.getLength()-1).mod(dcCount);ecdata[r]=new Array(dcCount.getLength()-1);for(i=0;i<ecdata[r].length;i+=1){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=0<=modIndex?modPoly.getAt(modIndex):0}}for(var totalCodeCount=0,i=0;i<rsBlocks.length;i+=1)totalCodeCount+=rsBlocks[i].totalCount;for(var data=new Array(totalCodeCount),index=0,i=0;i<maxDcCount;i+=1)for(r=0;r<rsBlocks.length;r+=1)i<dcdata[r].length&&(data[index]=dcdata[r][i],index+=1);for(i=0;i<maxEcCount;i+=1)for(r=0;r<rsBlocks.length;r+=1)i<ecdata[r].length&&(data[index]=ecdata[r][i],index+=1);return data},createData=function(typeNumber,errorCorrectionLevel,dataList){for(var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectionLevel),buffer=qrBitBuffer(),i=0;i<dataList.length;i+=1){var data=dataList[i];buffer.put(data.getMode(),4),buffer.put(data.getLength(),QRUtil.getLengthInBits(data.getMode(),typeNumber)),data.write(buffer)}for(var totalDataCount=0,i=0;i<rsBlocks.length;i+=1)totalDataCount+=rsBlocks[i].dataCount;if(buffer.getLengthInBits()>8*totalDataCount)throw"code length overflow. ("+buffer.getLengthInBits()+">"+8*totalDataCount+")";for(buffer.getLengthInBits()+4<=8*totalDataCount&&buffer.put(0,4);buffer.getLengthInBits()%8!=0;)buffer.putBit(!1);for(;;){if(buffer.getLengthInBits()>=8*totalDataCount)break;if(buffer.put(PAD0,8),buffer.getLengthInBits()>=8*totalDataCount)break;buffer.put(PAD1,8)}return createBytes(buffer,rsBlocks)},escapeXml=(_this.addData=function(data,mode){var newData=null;switch(mode=mode||"Byte"){case"Numeric":newData=qrNumber(data);break;case"Alphanumeric":newData=qrAlphaNum(data);break;case"Byte":newData=qr8BitByte(data);break;case"Kanji":newData=qrKanji(data);break;default:throw"mode:"+mode}_dataList.push(newData),_dataCache=null},_this.isDark=function(row,col){if(row<0||_moduleCount<=row||col<0||_moduleCount<=col)throw row+","+col;return _modules[row][col]},_this.getModuleCount=function(){return _moduleCount},_this.make=function(){if(_typeNumber<1){for(var typeNumber=1;typeNumber<40;typeNumber++){for(var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,_errorCorrectionLevel),buffer=qrBitBuffer(),i=0;i<_dataList.length;i++){var data=_dataList[i];buffer.put(data.getMode(),4),buffer.put(data.getLength(),QRUtil.getLengthInBits(data.getMode(),typeNumber)),data.write(buffer)}for(var totalDataCount=0,i=0;i<rsBlocks.length;i++)totalDataCount+=rsBlocks[i].dataCount;if(buffer.getLengthInBits()<=8*totalDataCount)break}_typeNumber=typeNumber}makeImpl(!1,(()=>{for(var minLostPoint=0,pattern=0,i=0;i<8;i+=1){makeImpl(!0,i);var lostPoint=QRUtil.getLostPoint(_this);(0==i||lostPoint<minLostPoint)&&(minLostPoint=lostPoint,pattern=i)}return pattern})())},_this.createTableTag=function(cellSize,margin){cellSize=cellSize||2;for(var qrHtml=(qrHtml=(qrHtml=(qrHtml="")+'<table style="'+" border-width: 0px; border-style: none;")+" border-collapse: collapse;"+(" padding: 0px; margin: "+(margin=void 0===margin?4*cellSize:margin)+"px;"))+'">'+"<tbody>",r=0;r<_this.getModuleCount();r+=1){qrHtml+="<tr>";for(var c=0;c<_this.getModuleCount();c+=1)qrHtml=(qrHtml=(qrHtml=(qrHtml+='<td style=" border-width: 0px; border-style: none; border-collapse: collapse;')+" padding: 0px; margin: 0px; width: "+cellSize+"px;")+" height: "+cellSize+"px; background-color: ")+(_this.isDark(r,c)?"#000000":"#ffffff")+';"/>';qrHtml+="</tr>"}return qrHtml=qrHtml+"</tbody>"+"</table>"},_this.createSvgTag=function(cellSize,margin,alt,title){for(var c,mr,opts={},size=("object"==typeof arguments[0]&&(cellSize=(opts=arguments[0]).cellSize,margin=opts.margin,alt=opts.alt,title=opts.title),cellSize=cellSize||2,margin=void 0===margin?4*cellSize:margin,(alt="string"==typeof alt?{text:alt}:alt||{}).text=alt.text||null,alt.id=alt.text?alt.id||"qrcode-description":null,(title="string"==typeof title?{text:title}:title||{}).text=title.text||null,title.id=title.text?title.id||"qrcode-title":null,_this.getModuleCount()*cellSize+2*margin),rect="l"+cellSize+",0 0,"+cellSize+" -"+cellSize+",0 0,-"+cellSize+"z ",qrSvg=(qrSvg=(qrSvg=(qrSvg=(qrSvg=(qrSvg=(qrSvg="")+'<svg version="1.1" xmlns="http://www.w3.org/2000/svg"'+(opts.scalable?"":' width="'+size+'px" height="'+size+'px"'))+(' viewBox="0 0 '+size+" "+size+'" ')+' preserveAspectRatio="xMinYMin meet"')+(title.text||alt.text?' role="img" aria-labelledby="'+escapeXml([title.id,alt.id].join(" ").trim())+'"':"")+">")+(title.text?'<title id="'+escapeXml(title.id)+'">'+escapeXml(title.text)+"</title>":""))+(alt.text?'<description id="'+escapeXml(alt.id)+'">'+escapeXml(alt.text)+"</description>":""))+'<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>'+'<path d="',r=0;r<_this.getModuleCount();r+=1)for(mr=r*cellSize+margin,c=0;c<_this.getModuleCount();c+=1)_this.isDark(r,c)&&(qrSvg+="M"+(c*cellSize+margin)+","+mr+rect);return qrSvg=qrSvg+'" stroke="transparent" fill="black"/>'+"</svg>"},_this.createDataURL=function(cellSize,margin){cellSize=cellSize||2,margin=void 0===margin?4*cellSize:margin;var size=_this.getModuleCount()*cellSize+2*margin,min=margin,max=size-margin;return createDataURL(size,size,function(x,y){return min<=x&&x<max&&min<=y&&y<max&&(x=Math.floor((x-min)/cellSize),y=Math.floor((y-min)/cellSize),_this.isDark(y,x))?0:1})},_this.createImgTag=function(cellSize,margin,alt){cellSize=cellSize||2,margin=void 0===margin?4*cellSize:margin;var size=_this.getModuleCount()*cellSize+2*margin,img=(img=(img=(img=(img=(img="")+"<img"+' src="')+_this.createDataURL(cellSize,margin)+'"')+' width="'+size)+'"'+' height="')+size+'"';return alt&&(img=(img+=' alt="')+escapeXml(alt)+'"'),img+="/>"},function(s){for(var escaped="",i=0;i<s.length;i+=1){var c=s.charAt(i);switch(c){case"<":escaped+="<";break;case">":escaped+=">";break;case"&":escaped+="&";break;case'"':escaped+=""";break;default:escaped+=c}}return escaped});return _this.createASCII=function(cellSize,margin){if((cellSize=cellSize||1)<2)return(margin=>{margin=void 0===margin?2:margin;for(var x,r1,r2,p,size=+_this.getModuleCount()+2*margin,min=margin,max=size-margin,blocks={"██":"█","█ ":"▀"," █":"▄"," ":" "},blocksLastLineNoMargin={"██":"▀","█ ":"▀"," █":" "," ":" "},ascii="",y=0;y<size;y+=2){for(r1=Math.floor(y-min),r2=Math.floor(y+1-min),x=0;x<size;x+=1)p="█",min<=x&&x<max&&min<=y&&y<max&&_this.isDark(r1,Math.floor(x-min))&&(p=" "),min<=x&&x<max&&min<=y+1&&y+1<max&&_this.isDark(r2,Math.floor(x-min))?p+=" ":p+="█",ascii+=(margin<1&&max<=y+1?blocksLastLineNoMargin:blocks)[p];ascii+="\n"}return size%2&&0<margin?ascii.substring(0,ascii.length-size-1)+Array(1+size).join("▀"):ascii.substring(0,ascii.length-1)})(margin);--cellSize,margin=void 0===margin?2*cellSize:margin;for(var x,r,p,size=_this.getModuleCount()*cellSize+2*margin,min=margin,max=size-margin,white=Array(cellSize+1).join("██"),black=Array(cellSize+1).join(" "),ascii="",line="",y=0;y<size;y+=1){for(r=Math.floor((y-min)/cellSize),line="",x=0;x<size;x+=1)p=1,line+=(p=min<=x&&x<max&&min<=y&&y<max&&_this.isDark(r,Math.floor((x-min)/cellSize))?0:p)?white:black;for(r=0;r<cellSize;r+=1)ascii+=line+"\n"}return ascii.substring(0,ascii.length-1)},_this.renderTo2dContext=function(context,cellSize){cellSize=cellSize||2;for(var length=_this.getModuleCount(),row=0;row<length;row++)for(var col=0;col<length;col++)context.fillStyle=_this.isDark(row,col)?"black":"white",context.fillRect(row*cellSize,col*cellSize,cellSize,cellSize)},_this}qrcode.stringToBytes=(qrcode.stringToBytesFuncs={default:function(s){for(var bytes=[],i=0;i<s.length;i+=1){var c=s.charCodeAt(i);bytes.push(255&c)}return bytes}}).default,qrcode.createStringToBytes=function(unicodeData,numChars){var unicodeMap=(()=>{for(var bin=base64DecodeInputStream(unicodeData),read=function(){var b=bin.read();if(-1==b)throw"eof";return b},count=0,unicodeMap={};;){var b0=bin.read();if(-1==b0)break;var b1=read(),b2=read(),b3=read();unicodeMap[String.fromCharCode(b0<<8|b1)]=b2<<8|b3,count+=1}if(count!=numChars)throw count+" != "+numChars;return unicodeMap})(),unknownChar="?".charCodeAt(0);return function(s){for(var bytes=[],i=0;i<s.length;i+=1){var c=s.charCodeAt(i);c<128?bytes.push(c):"number"==typeof(c=unicodeMap[s.charAt(i)])?(255&c)==c?bytes.push(c):(bytes.push(c>>>8),bytes.push(255&c)):bytes.push(unknownChar)}return bytes}};var PATTERN_POSITION_TABLE,_this,QRMode_MODE_NUMBER=1,QRMode_MODE_ALPHA_NUM=2,QRMode_MODE_8BIT_BYTE=4,QRMode_MODE_KANJI=8,QRErrorCorrectionLevel={L:1,M:0,Q:3,H:2},QRMaskPattern_PATTERN000=0,QRMaskPattern_PATTERN001=1,QRMaskPattern_PATTERN010=2,QRMaskPattern_PATTERN011=3,QRMaskPattern_PATTERN100=4,QRMaskPattern_PATTERN101=5,QRMaskPattern_PATTERN110=6,QRMaskPattern_PATTERN111=7,QRUtil=(PATTERN_POSITION_TABLE=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],(_this={}).getBCHTypeInfo=function(data){for(var d=data<<10;0<=getBCHDigit(d)-getBCHDigit(1335);)d^=1335<<getBCHDigit(d)-getBCHDigit(1335);return 21522^(data<<10|d)},_this.getBCHTypeNumber=function(data){for(var d=data<<12;0<=getBCHDigit(d)-getBCHDigit(7973);)d^=7973<<getBCHDigit(d)-getBCHDigit(7973);return data<<12|d},_this.getPatternPosition=function(typeNumber){return PATTERN_POSITION_TABLE[typeNumber-1]},_this.getMaskFunction=function(maskPattern){switch(maskPattern){case QRMaskPattern_PATTERN000:return function(i,j){return(i+j)%2==0};case QRMaskPattern_PATTERN001:return function(i,j){return i%2==0};case QRMaskPattern_PATTERN010:return function(i,j){return j%3==0};case QRMaskPattern_PATTERN011:return function(i,j){return(i+j)%3==0};case QRMaskPattern_PATTERN100:return function(i,j){return(Math.floor(i/2)+Math.floor(j/3))%2==0};case QRMaskPattern_PATTERN101:return function(i,j){return i*j%2+i*j%3==0};case QRMaskPattern_PATTERN110:return function(i,j){return(i*j%2+i*j%3)%2==0};case QRMaskPattern_PATTERN111:return function(i,j){return(i*j%3+(i+j)%2)%2==0};default:throw"bad maskPattern:"+maskPattern}},_this.getErrorCorrectPolynomial=function(errorCorrectLength){for(var a=qrPolynomial([1],0),i=0;i<errorCorrectLength;i+=1)a=a.multiply(qrPolynomial([1,QRMath.gexp(i)],0));return a},_this.getLengthInBits=function(mode,type){if(1<=type&&type<10)switch(mode){case QRMode_MODE_NUMBER:return 10;case QRMode_MODE_ALPHA_NUM:return 9;case QRMode_MODE_8BIT_BYTE:case QRMode_MODE_KANJI:return 8;default:throw"mode:"+mode}else if(type<27)switch(mode){case QRMode_MODE_NUMBER:return 12;case QRMode_MODE_ALPHA_NUM:return 11;case QRMode_MODE_8BIT_BYTE:return 16;case QRMode_MODE_KANJI:return 10;default:throw"mode:"+mode}else{if(!(type<41))throw"type:"+type;switch(mode){case QRMode_MODE_NUMBER:return 14;case QRMode_MODE_ALPHA_NUM:return 13;case QRMode_MODE_8BIT_BYTE:return 16;case QRMode_MODE_KANJI:return 12;default:throw"mode:"+mode}}},_this.getLostPoint=function(qrcode){for(var moduleCount=qrcode.getModuleCount(),lostPoint=0,row=0;row<moduleCount;row+=1)for(var col=0;col<moduleCount;col+=1){for(var sameCount=0,dark=qrcode.isDark(row,col),r=-1;r<=1;r+=1)if(!(row+r<0||moduleCount<=row+r))for(var c=-1;c<=1;c+=1)col+c<0||moduleCount<=col+c||0==r&&0==c||dark==qrcode.isDark(row+r,col+c)&&(sameCount+=1);5<sameCount&&(lostPoint+=3+sameCount-5)}for(row=0;row<moduleCount-1;row+=1)for(col=0;col<moduleCount-1;col+=1){var count=0;qrcode.isDark(row,col)&&(count+=1),qrcode.isDark(row+1,col)&&(count+=1),qrcode.isDark(row,col+1)&&(count+=1),qrcode.isDark(row+1,col+1)&&(count+=1),0!=count&&4!=count||(lostPoint+=3)}for(row=0;row<moduleCount;row+=1)for(col=0;col<moduleCount-6;col+=1)qrcode.isDark(row,col)&&!qrcode.isDark(row,col+1)&&qrcode.isDark(row,col+2)&&qrcode.isDark(row,col+3)&&qrcode.isDark(row,col+4)&&!qrcode.isDark(row,col+5)&&qrcode.isDark(row,col+6)&&(lostPoint+=40);for(col=0;col<moduleCount;col+=1)for(row=0;row<moduleCount-6;row+=1)qrcode.isDark(row,col)&&!qrcode.isDark(row+1,col)&&qrcode.isDark(row+2,col)&&qrcode.isDark(row+3,col)&&qrcode.isDark(row+4,col)&&!qrcode.isDark(row+5,col)&&qrcode.isDark(row+6,col)&&(lostPoint+=40);for(var darkCount=0,col=0;col<moduleCount;col+=1)for(row=0;row<moduleCount;row+=1)qrcode.isDark(row,col)&&(darkCount+=1);return lostPoint+=10*(Math.abs(100*darkCount/moduleCount/moduleCount-50)/5)},_this);function getBCHDigit(data){for(var digit=0;0!=data;)digit+=1,data>>>=1;return digit}var QRMath=(()=>{for(var EXP_TABLE=new Array(256),LOG_TABLE=new Array(256),i=0;i<8;i+=1)EXP_TABLE[i]=1<<i;for(i=8;i<256;i+=1)EXP_TABLE[i]=EXP_TABLE[i-4]^EXP_TABLE[i-5]^EXP_TABLE[i-6]^EXP_TABLE[i-8];for(i=0;i<255;i+=1)LOG_TABLE[EXP_TABLE[i]]=i;var _this={glog:function(n){if(n<1)throw"glog("+n+")";return LOG_TABLE[n]},gexp:function(n){for(;n<0;)n+=255;for(;256<=n;)n-=255;return EXP_TABLE[n]}};return _this})();function qrPolynomial(num,shift){if(void 0===num.length)throw num.length+"/"+shift;var _num=(()=>{for(var offset=0;offset<num.length&&0==num[offset];)offset+=1;for(var _num=new Array(num.length-offset+shift),i=0;i<num.length-offset;i+=1)_num[i]=num[i+offset];return _num})(),_this={getAt:function(index){return _num[index]},getLength:function(){return _num.length},multiply:function(e){for(var num=new Array(_this.getLength()+e.getLength()-1),i=0;i<_this.getLength();i+=1)for(var j=0;j<e.getLength();j+=1)num[i+j]^=QRMath.gexp(QRMath.glog(_this.getAt(i))+QRMath.glog(e.getAt(j)));return qrPolynomial(num,0)},mod:function(e){if(_this.getLength()-e.getLength()<0)return _this;for(var ratio=QRMath.glog(_this.getAt(0))-QRMath.glog(e.getAt(0)),num=new Array(_this.getLength()),i=0;i<_this.getLength();i+=1)num[i]=_this.getAt(i);for(i=0;i<e.getLength();i+=1)num[i]^=QRMath.gexp(QRMath.glog(e.getAt(i))+ratio);return qrPolynomial(num,0).mod(e)}};return _this}function base64EncodeOutputStream(){function writeEncoded(b){_base64+=String.fromCharCode((n=>{if(!(n<0)){if(n<26)return 65+n;if(n<52)return n-26+97;if(n<62)return n-52+48;if(62==n)return 43;if(63==n)return 47}throw"n:"+n})(63&b))}var _buffer=0,_buflen=0,_length=0,_base64="",_this={writeByte:function(n){for(_buffer=_buffer<<8|255&n,_buflen+=8,_length+=1;6<=_buflen;)writeEncoded(_buffer>>>_buflen-6),_buflen-=6},flush:function(){if(0<_buflen&&(writeEncoded(_buffer<<6-_buflen),_buflen=_buffer=0),_length%3!=0)for(var padlen=3-_length%3,i=0;i<padlen;i+=1)_base64+="="},toString:function(){return _base64}};return _this}function gifImage(width,height){var _width=width,_height=height,_data=new Array(width*height),getLZWRaster=function(lzwMinCodeSize){for(var clearCode=1<<lzwMinCodeSize,endCode=1+(1<<lzwMinCodeSize),bitLength=lzwMinCodeSize+1,table=lzwTable(),i=0;i<clearCode;i+=1)table.add(String.fromCharCode(i));table.add(String.fromCharCode(clearCode)),table.add(String.fromCharCode(endCode));var _out,_bitLength,_bitBuffer,lzwMinCodeSize=byteArrayOutputStream(),bitOut=(_out=lzwMinCodeSize,_bitBuffer=_bitLength=0,{write:function(data,length){if(data>>>length!=0)throw"length over";for(;8<=_bitLength+length;)_out.writeByte(255&(data<<_bitLength|_bitBuffer)),length-=8-_bitLength,data>>>=8-_bitLength,_bitLength=_bitBuffer=0;_bitBuffer|=data<<_bitLength,_bitLength+=length},flush:function(){0<_bitLength&&_out.writeByte(_bitBuffer)}}),dataIndex=(bitOut.write(clearCode,bitLength),0),s=String.fromCharCode(_data[dataIndex]);for(dataIndex+=1;dataIndex<_data.length;){var c=String.fromCharCode(_data[dataIndex]);dataIndex+=1,table.contains(s+c)?s+=c:(bitOut.write(table.indexOf(s),bitLength),table.size()<4095&&(table.size()==1<<bitLength&&(bitLength+=1),table.add(s+c)),s=c)}return bitOut.write(table.indexOf(s),bitLength),bitOut.write(endCode,bitLength),bitOut.flush(),lzwMinCodeSize.toByteArray()},lzwTable=function(){var _map={},_size=0,_this={add:function(key){if(_this.contains(key))throw"dup key:"+key;_map[key]=_size,_size+=1},size:function(){return _size},indexOf:function(key){return _map[key]},contains:function(key){return void 0!==_map[key]}};return _this};return width={setPixel:function(x,y,pixel){_data[y*_width+x]=pixel},write:function(out){out.writeString("GIF87a"),out.writeShort(_width),out.writeShort(_height),out.writeByte(128),out.writeByte(0),out.writeByte(0),out.writeByte(0),out.writeByte(0),out.writeByte(0),out.writeByte(255),out.writeByte(255),out.writeByte(255),out.writeString(","),out.writeShort(0),out.writeShort(0),out.writeShort(_width),out.writeShort(_height),out.writeByte(0);for(var raster=getLZWRaster(2),offset=(out.writeByte(2),0);255<raster.length-offset;)out.writeByte(255),out.writeBytes(raster,offset,255),offset+=255;out.writeByte(raster.length-offset),out.writeBytes(raster,offset,raster.length-offset),out.writeByte(0),out.writeString(";")}}}var QRRSBlock=(()=>{var RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],_this={};return _this.getRSBlocks=function(typeNumber,errorCorrectionLevel){var rsBlock=((typeNumber,errorCorrectionLevel)=>{switch(errorCorrectionLevel){case QRErrorCorrectionLevel.L:return RS_BLOCK_TABLE[4*(typeNumber-1)+0];case QRErrorCorrectionLevel.M:return RS_BLOCK_TABLE[4*(typeNumber-1)+1];case QRErrorCorrectionLevel.Q:return RS_BLOCK_TABLE[4*(typeNumber-1)+2];case QRErrorCorrectionLevel.H:return RS_BLOCK_TABLE[4*(typeNumber-1)+3];default:return}})(typeNumber,errorCorrectionLevel);if(void 0===rsBlock)throw"bad rs block @ typeNumber:"+typeNumber+"/errorCorrectionLevel:"+errorCorrectionLevel;for(var length=rsBlock.length/3,list=[],i=0;i<length;i+=1)for(var count=rsBlock[3*i+0],totalCount=rsBlock[3*i+1],dataCount=rsBlock[3*i+2],j=0;j<count;j+=1)list.push(((totalCount,dataCount)=>{var _this={};return _this.totalCount=totalCount,_this.dataCount=dataCount,_this})(totalCount,dataCount));return list},_this})(),qrBitBuffer=function(){var _buffer=[],_length=0,_this={getBuffer:function(){return _buffer},getAt:function(index){var bufIndex=Math.floor(index/8);return 1==(_buffer[bufIndex]>>>7-index%8&1)},put:function(num,length){for(var i=0;i<length;i+=1)_this.putBit(1==(num>>>length-i-1&1))},getLengthInBits:function(){return _length},putBit:function(bit){var bufIndex=Math.floor(_length/8);_buffer.length<=bufIndex&&_buffer.push(0),bit&&(_buffer[bufIndex]|=128>>>_length%8),_length+=1}};return _this},qrNumber=function(data){var _mode=QRMode_MODE_NUMBER,_data=data,data={getMode:function(){return _mode},getLength:function(buffer){return _data.length},write:function(buffer){for(var data=_data,i=0;i+2<data.length;)buffer.put(strToNum(data.substring(i,i+3)),10),i+=3;i<data.length&&(data.length-i==1?buffer.put(strToNum(data.substring(i,i+1)),4):data.length-i==2&&buffer.put(strToNum(data.substring(i,i+2)),7))}},strToNum=function(s){for(var num=0,i=0;i<s.length;i+=1)num=10*num+chatToNum(s.charAt(i));return num},chatToNum=function(c){if("0"<=c&&c<="9")return c.charCodeAt(0)-"0".charCodeAt(0);throw"illegal char :"+c};return data},qrAlphaNum=function(data){var _mode=QRMode_MODE_ALPHA_NUM,_data=data,data={getMode:function(){return _mode},getLength:function(buffer){return _data.length},write:function(buffer){for(var s=_data,i=0;i+1<s.length;)buffer.put(45*getCode(s.charAt(i))+getCode(s.charAt(i+1)),11),i+=2;i<s.length&&buffer.put(getCode(s.charAt(i)),6)}},getCode=function(c){if("0"<=c&&c<="9")return c.charCodeAt(0)-"0".charCodeAt(0);if("A"<=c&&c<="Z")return c.charCodeAt(0)-"A".charCodeAt(0)+10;switch(c){case" ":return 36;case"$":return 37;case"%":return 38;case"*":return 39;case"+":return 40;case"-":return 41;case".":return 42;case"/":return 43;case":":return 44;default:throw"illegal char :"+c}};return data},qr8BitByte=function(data){var _mode=QRMode_MODE_8BIT_BYTE,_bytes=qrcode.stringToBytes(data),data={getMode:function(){return _mode},getLength:function(buffer){return _bytes.length},write:function(buffer){for(var i=0;i<_bytes.length;i+=1)buffer.put(_bytes[i],8)}};return data},qrKanji=function(data){var _mode=QRMode_MODE_KANJI,stringToBytes=qrcode.stringToBytesFuncs.SJIS;if(!stringToBytes)throw"sjis not supported.";var test=stringToBytes("友");if(2!=test.length||38726!=(test[0]<<8|test[1]))throw"sjis not supported.";var _bytes=stringToBytes(data),test={getMode:function(){return _mode},getLength:function(buffer){return~~(_bytes.length/2)},write:function(buffer){for(var data=_bytes,i=0;i+1<data.length;){var c=(255&data[i])<<8|255&data[i+1];if(33088<=c&&c<=40956)c-=33088;else{if(!(57408<=c&&c<=60351))throw"illegal char at "+(i+1)+"/"+c;c-=49472}buffer.put(c=192*(c>>>8&255)+(255&c),13),i+=2}if(i<data.length)throw"illegal char at "+(i+1)}};return test},byteArrayOutputStream=function(){var _bytes=[],_this={writeByte:function(b){_bytes.push(255&b)},writeShort:function(i){_this.writeByte(i),_this.writeByte(i>>>8)},writeBytes:function(b,off,len){off=off||0,len=len||b.length;for(var i=0;i<len;i+=1)_this.writeByte(b[i+off])},writeString:function(s){for(var i=0;i<s.length;i+=1)_this.writeByte(s.charCodeAt(i))},toByteArray:function(){return _bytes},toString:function(){var s="";s+="[";for(var i=0;i<_bytes.length;i+=1)0<i&&(s+=","),s+=_bytes[i];return s+="]"}};return _this},base64DecodeInputStream=function(str){var _str=str,_pos=0,_buffer=0,_buflen=0,str={read:function(){for(;_buflen<8;){if(_pos>=_str.length){if(0==_buflen)return-1;throw"unexpected end of file./"+_buflen}var c=_str.charAt(_pos);if(_pos+=1,"="==c)return _buflen=0,-1;c.match(/^\s$/)||(_buffer=_buffer<<6|decode(c.charCodeAt(0)),_buflen+=6)}var n=_buffer>>>_buflen-8&255;return _buflen-=8,n}},decode=function(c){if(65<=c&&c<=90)return c-65;if(97<=c&&c<=122)return c-97+26;if(48<=c&&c<=57)return c-48+52;if(43==c)return 62;if(47==c)return 63;throw"c:"+c};return str},createDataURL=function(width,height,getPixel){for(var gif=gifImage(width,height),y=0;y<height;y+=1)for(var x=0;x<width;x+=1)gif.setPixel(x,y,getPixel(x,y));for(var b=byteArrayOutputStream(),base64=(gif.write(b),base64EncodeOutputStream()),bytes=b.toByteArray(),i=0;i<bytes.length;i+=1)base64.writeByte(bytes[i]);return base64.flush(),"data:image/gif;base64,"+base64};return qrcode})();qrcode.stringToBytesFuncs["UTF-8"]=function(s){for(var str=s,utf8=[],i=0;i<str.length;i++){var charcode=str.charCodeAt(i);charcode<128?utf8.push(charcode):charcode<2048?utf8.push(192|charcode>>6,128|63&charcode):charcode<55296||57344<=charcode?utf8.push(224|charcode>>12,128|charcode>>6&63,128|63&charcode):(i++,charcode=65536+((1023&charcode)<<10|1023&str.charCodeAt(i)),utf8.push(240|charcode>>18,128|charcode>>12&63,128|charcode>>6&63,128|63&charcode))}return utf8};export default qrcode; |