qrgen.js 20 KB

1
  1. !function(t,r){"object"==typeof module&&module.exports?module.exports=r(t):t.qrgen=r(t)}("undefined"!=typeof window?window:this,function(t){function r(t){this.a(t)}function e(t){var e=new r(t);return e.b()}function n(t,r){var e=document.createElement("canvas");return e.width=t,e.height=r,e}function a(t,r){var e=r.data;if(e){var n=t.getContext("2d");Array.isArray(e)||(e=[e]),o(e,function(e){if(e instanceof HTMLElement)n.drawImage(e,0,0,t.width,t.height);else{var a,o,i,u;e="string"==typeof e?{style:e}:e||{},a=("col"in e?e.col*r.cellSize:e.x)||0,o=("row"in e?e.row*r.cellSize:e.y)||0,i=("cols"in e?e.cols*r.cellSize:e.width)||r.size,u=("rows"in e?e.rows*r.cellSize:e.height)||r.size,a<0&&(a+=r.size),o<0&&(o+=r.size),n.fillStyle=e.style||"black",n.fillRect(a,o,i,u)}})}return t}function o(t,r){for(var e=t&&t.length||0,n=0;n<e;n++)r.call(t,t[n],n)}function i(){var t;return o(arguments,function(r){if(t){if(r)for(var e in r)t[e]=r[e]}else t=r}),t}function u(){var t=[];return o(arguments,function(r){Array.isArray(r)?t=t.concat(r):null!=r&&t.push(r)}),t}function f(t,r){var e=this;r=r||{},e.margin=r.margin||0,e.nobg=!!r.nobg,e.isBackgroundColor=r.isBackgroundColor||e.isBackgroundColor,e.prepare(t)}var l=function(){function t(r,e){if("undefined"==typeof r.length)throw new Error(r.length+"/"+e);var n=function(){for(var t=0;t<r.length&&0==r[t];)t+=1;for(var n=new Array(r.length-t+e),a=0;a<r.length-t;a+=1)n[a]=r[a+t];return n}(),a={};return a.getAt=function(t){return n[t]},a.getLength=function(){return n.length},a.multiply=function(r){for(var e=new Array(a.getLength()+r.getLength()-1),n=0;n<a.getLength();n+=1)for(var o=0;o<r.getLength();o+=1)e[n+o]^=i.gexp(i.glog(a.getAt(n))+i.glog(r.getAt(o)));return t(e,0)},a.mod=function(r){if(a.getLength()-r.getLength()<0)return a;for(var e=i.glog(a.getAt(0))-i.glog(r.getAt(0)),n=new Array(a.getLength()),o=0;o<a.getLength();o+=1)n[o]=a.getAt(o);for(var o=0;o<r.getLength();o+=1)n[o]^=i.gexp(i.glog(r.getAt(o))+e);return t(n,0).mod(r)},a}var r=function(r,e){var a=236,i=17,g=r,c=n[e],h=null,s=0,v=null,d=new Array,w={},p=function(t,r){for(;null==v;)try{v=x(g,c,d);break}catch(t){if(g++,g>40)throw t}s=4*g+17,h=function(t){for(var r=new Array(t),e=0;e<t;e+=1){r[e]=new Array(t);for(var n=0;n<t;n+=1)r[e][n]=null}return r}(s),m(0,0),m(s-7,0),m(0,s-7),A(),k(),T(t,r),g>=7&&E(t),D(v,r)},m=function(t,r){for(var e=-1;e<=7;e+=1)if(!(t+e<=-1||s<=t+e))for(var n=-1;n<=7;n+=1)r+n<=-1||s<=r+n||(0<=e&&e<=6&&(0==n||6==n)||0<=n&&n<=6&&(0==e||6==e)||2<=e&&e<=4&&2<=n&&n<=4?h[t+e][r+n]=!0:h[t+e][r+n]=!1)},y=function(){for(var t=0,r=0,e=0;e<8;e+=1){p(!0,e);var n=o.getLostPoint(w);(0==e||t>n)&&(t=n,r=e)}return r},k=function(){for(var t=8;t<s-8;t+=1)null==h[t][6]&&(h[t][6]=t%2==0);for(var r=8;r<s-8;r+=1)null==h[6][r]&&(h[6][r]=r%2==0)},A=function(){for(var t=o.getPatternPosition(g),r=0;r<t.length;r+=1)for(var e=0;e<t.length;e+=1){var n=t[r],a=t[e];if(null==h[n][a])for(var i=-2;i<=2;i+=1)for(var u=-2;u<=2;u+=1)i==-2||2==i||u==-2||2==u||0==i&&0==u?h[n+i][a+u]=!0:h[n+i][a+u]=!1}},E=function(t){for(var r=o.getBCHTypeNumber(g),e=0;e<18;e+=1){var n=!t&&1==(r>>e&1);h[Math.floor(e/3)][e%3+s-8-3]=n}for(var e=0;e<18;e+=1){var n=!t&&1==(r>>e&1);h[e%3+s-8-3][Math.floor(e/3)]=n}},T=function(t,r){for(var e=c<<3|r,n=o.getBCHTypeInfo(e),a=0;a<15;a+=1){var i=!t&&1==(n>>a&1);a<6?h[a][8]=i:a<8?h[a+1][8]=i:h[s-15+a][8]=i}for(var a=0;a<15;a+=1){var i=!t&&1==(n>>a&1);a<8?h[8][s-a-1]=i:a<9?h[8][15-a-1+1]=i:h[8][15-a-1]=i}h[s-8][8]=!t},D=function(t,r){for(var e=-1,n=s-1,a=7,i=0,u=o.getMaskFunction(r),f=s-1;f>0;f-=2)for(6==f&&(f-=1);;){for(var l=0;l<2;l+=1)if(null==h[n][f-l]){var g=!1;i<t.length&&(g=1==(t[i]>>>a&1));var c=u(n,f-l);c&&(g=!g),h[n][f-l]=g,a-=1,a==-1&&(i+=1,a=7)}if(n+=e,n<0||s<=n){n-=e,e=-e;break}}},M=function(r,e){for(var n=0,a=0,i=0,u=new Array(e.length),f=new Array(e.length),l=0;l<e.length;l+=1){var g=e[l].dataCount,c=e[l].totalCount-g;a=Math.max(a,g),i=Math.max(i,c),u[l]=new Array(g);for(var h=0;h<u[l].length;h+=1)u[l][h]=255&r.getBuffer()[h+n];n+=g;var s=o.getErrorCorrectPolynomial(c),v=t(u[l],s.getLength()-1),d=v.mod(s);f[l]=new Array(s.getLength()-1);for(var h=0;h<f[l].length;h+=1){var w=h+d.getLength()-f[l].length;f[l][h]=w>=0?d.getAt(w):0}}for(var p=0,h=0;h<e.length;h+=1)p+=e[h].totalCount;for(var m=new Array(p),y=0,h=0;h<a;h+=1)for(var l=0;l<e.length;l+=1)h<u[l].length&&(m[y]=u[l][h],y+=1);for(var h=0;h<i;h+=1)for(var l=0;l<e.length;l+=1)h<f[l].length&&(m[y]=f[l][h],y+=1);return m},x=function(t,r,e){for(var n=u.getRSBlocks(t,r),l=f(),g=0;g<e.length;g+=1){var c=e[g];l.put(c.getMode(),4),l.put(c.getLength(),o.getLengthInBits(c.getMode(),t)),c.write(l)}for(var h=0,g=0;g<n.length;g+=1)h+=n[g].dataCount;if(l.getLengthInBits()>8*h)throw new Error("code length overflow. ("+l.getLengthInBits()+">"+8*h+")");for(l.getLengthInBits()+4<=8*h&&l.put(0,4);l.getLengthInBits()%8!=0;)l.putBit(!1);for(;!(l.getLengthInBits()>=8*h)&&(l.put(a,8),!(l.getLengthInBits()>=8*h));)l.put(i,8);return M(l,n)};return w.addData=function(t){var r=l(t);d.push(r),v=null},w.isDark=function(t,r){if(t<0||s<=t||r<0||s<=r)throw new Error(t+","+r);return h[t][r]},w.getModuleCount=function(){return s},w.make=function(){p(!1,y())},w};r.stringToBytes=function(t){var r=[];t=t.replace(/\r\n/g,"\n");for(var e=0;e<t.length;e++){var n=t.charCodeAt(e);n<128?r.push(n):n<2048?r.push(n>>6|192,63&n|128):r.push(n>>12|224,n>>6&63|128,63&n|128)}return r},r.createStringToBytes=function(t,r){var e=function(){for(var e=base64DecodeInputStream(t),n=function(){var t=e.read();if(t==-1)throw new Error;return t},a=0,o={};;){var i=e.read();if(i==-1)break;var u=n(),f=n(),l=n(),g=String.fromCharCode(i<<8|u),c=f<<8|l;o[g]=c,a+=1}if(a!=r)throw new Error(a+" != "+r);return o}(),n="?".charCodeAt(0);return function(t){for(var r=new Array,a=0;a<t.length;a+=1){var o=t.charCodeAt(a);if(o<128)r.push(o);else{var i=e[t.charAt(a)];"number"==typeof i?(255&i)==i?r.push(i):(r.push(i>>>8),r.push(255&i)):r.push(n)}}return r}};var e={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},n={L:1,M:0,Q:3,H:2},a={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},o=function(){var r=[[],[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]],n=1335,o=7973,u=21522,f={},l=function(t){for(var r=0;0!=t;)r+=1,t>>>=1;return r};return f.getBCHTypeInfo=function(t){for(var r=t<<10;l(r)-l(n)>=0;)r^=n<<l(r)-l(n);return(t<<10|r)^u},f.getBCHTypeNumber=function(t){for(var r=t<<12;l(r)-l(o)>=0;)r^=o<<l(r)-l(o);return t<<12|r},f.getPatternPosition=function(t){return r[t-1]},f.getMaskFunction=function(t){switch(t){case a.PATTERN000:return function(t,r){return(t+r)%2==0};case a.PATTERN001:return function(t,r){return t%2==0};case a.PATTERN010:return function(t,r){return r%3==0};case a.PATTERN011:return function(t,r){return(t+r)%3==0};case a.PATTERN100:return function(t,r){return(Math.floor(t/2)+Math.floor(r/3))%2==0};case a.PATTERN101:return function(t,r){return t*r%2+t*r%3==0};case a.PATTERN110:return function(t,r){return(t*r%2+t*r%3)%2==0};case a.PATTERN111:return function(t,r){return(t*r%3+(t+r)%2)%2==0};default:throw new Error("bad maskPattern:"+t)}},f.getErrorCorrectPolynomial=function(r){for(var e=t([1],0),n=0;n<r;n+=1)e=e.multiply(t([1,i.gexp(n)],0));return e},f.getLengthInBits=function(t,r){if(1<=r&&r<10)switch(t){case e.MODE_NUMBER:return 10;case e.MODE_ALPHA_NUM:return 9;case e.MODE_8BIT_BYTE:return 8;case e.MODE_KANJI:return 8;default:throw new Error("mode:"+t)}else if(r<27)switch(t){case e.MODE_NUMBER:return 12;case e.MODE_ALPHA_NUM:return 11;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 10;default:throw new Error("mode:"+t)}else{if(!(r<41))throw new Error("type:"+r);switch(t){case e.MODE_NUMBER:return 14;case e.MODE_ALPHA_NUM:return 13;case e.MODE_8BIT_BYTE:return 16;case e.MODE_KANJI:return 12;default:throw new Error("mode:"+t)}}},f.getLostPoint=function(t){for(var r=t.getModuleCount(),e=0,n=0;n<r;n+=1)for(var a=0;a<r;a+=1){for(var o=0,i=t.isDark(n,a),u=-1;u<=1;u+=1)if(!(n+u<0||r<=n+u))for(var f=-1;f<=1;f+=1)a+f<0||r<=a+f||0==u&&0==f||i==t.isDark(n+u,a+f)&&(o+=1);o>5&&(e+=3+o-5)}for(var n=0;n<r-1;n+=1)for(var a=0;a<r-1;a+=1){var l=0;t.isDark(n,a)&&(l+=1),t.isDark(n+1,a)&&(l+=1),t.isDark(n,a+1)&&(l+=1),t.isDark(n+1,a+1)&&(l+=1),0!=l&&4!=l||(e+=3)}for(var n=0;n<r;n+=1)for(var a=0;a<r-6;a+=1)t.isDark(n,a)&&!t.isDark(n,a+1)&&t.isDark(n,a+2)&&t.isDark(n,a+3)&&t.isDark(n,a+4)&&!t.isDark(n,a+5)&&t.isDark(n,a+6)&&(e+=40);for(var a=0;a<r;a+=1)for(var n=0;n<r-6;n+=1)t.isDark(n,a)&&!t.isDark(n+1,a)&&t.isDark(n+2,a)&&t.isDark(n+3,a)&&t.isDark(n+4,a)&&!t.isDark(n+5,a)&&t.isDark(n+6,a)&&(e+=40);for(var g=0,a=0;a<r;a+=1)for(var n=0;n<r;n+=1)t.isDark(n,a)&&(g+=1);var c=Math.abs(100*g/r/r-50)/5;return e+=10*c},f}(),i=function(){for(var t=new Array(256),r=new Array(256),e=0;e<8;e+=1)t[e]=1<<e;for(var e=8;e<256;e+=1)t[e]=t[e-4]^t[e-5]^t[e-6]^t[e-8];for(var e=0;e<255;e+=1)r[t[e]]=e;var n={};return n.glog=function(t){if(t<1)throw new Error("glog("+t+")");return r[t]},n.gexp=function(r){for(;r<0;)r+=255;for(;r>=256;)r-=255;return t[r]},n}(),u=function(){var t=[[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][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]],r=function(t,r){var e={};return e.totalCount=t,e.dataCount=r,e},e={},a=function(r,e){switch(e){case n.L:return t[4*(r-1)+0];case n.M:return t[4*(r-1)+1];case n.Q:return t[4*(r-1)+2];case n.H:return t[4*(r-1)+3];default:return}};return e.getRSBlocks=function(t,e){var n=a(t,e);if("undefined"==typeof n)throw new Error("bad rs block @ typeNumber:"+t+"/errorCorrectLevel:"+e);for(var o=n.length/3,i=new Array,u=0;u<o;u+=1)for(var f=n[3*u+0],l=n[3*u+1],g=n[3*u+2],c=0;c<f;c+=1)i.push(r(l,g));return i},e}(),f=function(){var t=new Array,r=0,e={};return e.getBuffer=function(){return t},e.getAt=function(r){var e=Math.floor(r/8);return 1==(t[e]>>>7-r%8&1)},e.put=function(t,r){for(var n=0;n<r;n+=1)e.putBit(1==(t>>>r-n-1&1))},e.getLengthInBits=function(){return r},e.putBit=function(e){var n=Math.floor(r/8);t.length<=n&&t.push(0),e&&(t[n]|=128>>>r%8),r+=1},e},l=function(t){var n=e.MODE_8BIT_BYTE,a=r.stringToBytes(t),o={};return o.getMode=function(){return n},o.getLength=function(t){return a.length},o.write=function(t){for(var r=0;r<a.length;r+=1)t.put(a[r],8)},o};return r}();r.c={square:{data:function(t,e){var n=e.context,a=e.cellSize;e.isDark(t.i,t.j)&&(n.fillStyle=r.d,n.fillRect(t.x,t.y,a,a))}}},r.e=function(t){return r.c[t]||r.c.square},r.d="black",r.f="white",r.prototype.a=function(t){var e=this;t=e.g=i({typeNumber:1,correctLevel:"M",foreground:r.d,background:null,data:"",effect:{},noAlpha:!0,reuseCanvas:null},t);var n=e.h={color:r.d,fontFamily:"Cursive",clearEdges:0,margin:-1,size:.15},a=t.logo;a&&(a.image||a.text)&&i(n,a),(n.image||n.text)&&n.margin<0&&(n.margin=n.image?0:2),(n.image||n.text||"image"===t.effect.key)&&(t.correctLevel="H");var o=l(t.typeNumber,t.correctLevel);o.addData(t.data),o.make();var u=o.getModuleCount(),f=t.cellSize,g=t.size;f||g||(f=2),f?g=f*u:f=g/u,e.k=f,e.l=g,e.m=u,e.n=o},r.prototype.o=function(t,r){var e=this,n=e.m;return t>=0&&t<n&&r>=0&&r<n&&e.p(t*n+r)&&e.n.isDark(t,r)},r.prototype.b=function(){var t=this,e=t.g,o=t.m,i=Math.ceil(t.k),f=i*o,l=n(f,f),g={cellSize:i,size:f,count:o,effect:e.effect,foreground:e.foreground};t.q(l),t.r(l,g),t.s(l);var c=t.t(g),h=c.getContext("2d");h.globalCompositeOperation="destination-in",h.drawImage(l,0,0);var s=a(n(f,f),{cellSize:i,size:f,data:u(e.noAlpha?r.f:null,e.background,c)}),v=t.h;v.canvas&&s.getContext("2d").drawImage(v.canvas,v.x,v.y);var d=t.l,w=e.reuseCanvas;if(w?w.width=w.height=d:f!=d&&(w=n(d,d)),w){var p=w.getContext("2d");p.drawImage(s,0,0,d,d)}else w=s;return w},r.prototype.t=function(t){var e=this,o=t.cellSize,u=t.size,f=t.effect||{},l=r.e(f.key);return l.foreground?l.foreground(i({mask:function(){var r=n(u,u);return e.r(r,{cellSize:o,count:t.count}),r}},t)):a(n(u,u),{cellSize:o,size:u,data:t.foreground})},r.prototype.q=function(t){var r,e,a,o=this,i=o.h,u=o.m,f=o.k,l=o.l,g=t.getContext("2d");if(i.image)r=i.image,e=r.naturalWidth||r.width,a=r.naturalHeight||r.height;else{if(!i.text)return;a=100,r="",i.fontStyle&&(r+=i.fontStyle+" "),r+=a+"px "+i.fontFamily,g.font=r,e=g.measureText(i.text).width}r=e/a;var c=~~(Math.sqrt(Math.min(e*a/l/l,i.size)/r)*u),h=~~(r*c);(u-h)%2&&h++,(u-c)%2&&c++,r=Math.min((c*f-2*i.margin)/a,(h*f-2*i.margin)/e,1),i.width=~~(r*e),i.height=~~(r*a),i.x=(l-i.width>>1)-i.margin,i.y=(l-i.height>>1)-i.margin,i.canvas=n(i.width+2*i.margin,i.height+2*i.margin);var s=i.canvas.getContext("2d");if(i.image)s.drawImage(i.image,i.margin,i.margin,i.width,i.height);else{var v="";i.fontStyle&&(v+=i.fontStyle+" "),v+=i.height+"px "+i.fontFamily,s.font=v,s.textAlign="center",s.textBaseline="middle",s.fillStyle=i.color,s.fillText(i.text,(i.width>>1)+i.margin,(i.height>>1)+i.margin)}o.u()},r.prototype.r=function(t,e){for(var n=this,a=e.cellSize,o=e.count,i=e.effect||{},u={cellSize:a,count:o,context:t.getContext("2d"),value:i.value||0,isDark:n.o.bind(n)},f=r.e(i.key),l=0;l<o;l++)for(var g=0;g<o;g++)f.data({i:l,j:g,x:g*a,y:l*a},u)},r.prototype.v=function(t,r,e){return~~(t*e/255+r*(255-e)/255)},r.prototype.u=function(){},r.prototype.s=function(t){},r.prototype.p=function(t){return!this.h.clearEdges};var g=t.Uint8Array||t.Array;return f.prototype={prepare:function(t){function r(t){var r=l[t];if(!r){var e=4*t,n=h.call(u.data,e,e+4);r=a.isBackgroundColor(n)?l[t]=1:l[t]=2}return 1===r}function e(t){if(!f[t]){for(var e=t%a.width,n=~~(t/a.width),o=a.margin+1,i=Math.max(0,e-o+1);i<e+o&&i<a.width;i++)for(var u=Math.max(0,n-o+1);u<n+o&&u<a.height;u++){var l=i-e,g=u-n;if(l*l+g*g<o*o&&!r(i+u*a.width))return void(f[t]=2)}f[t]=1,c.push(t)}}function n(t,r){t%a.width&&e(t-1),r||e(t),(t+1)%a.width&&e(t+1)}var a=this,o=t.getContext("2d");if(a.width=t.width,a.height=t.height,a.total=a.width*a.height,!a.nobg){var i,u=o.getImageData(0,0,a.width,a.height),f=a.data=new g(a.total),l=new g(a.total),c=[],h=[].slice;for(i=0;i<a.width;i++)e(i),e(a.total-1-i);for(i=0;i<a.height;i++)e(i*a.width),e((i+1)*a.width-1);for(var s=0;s<c.length;){var v=c[s];v>a.width&&n(v-a.width),n(v,!0),v+a.width<a.total&&n(v+a.width),s++}a.totalBackground=s}},isBackgroundColor:function(t){return!t[3]},isBackground:function(){var t,r=arguments,e=this;if(1==r.length)t=r[0];else{if(2!=r.length){if(4==r.length){var n=r[0],a=r[1],o=n+r[2],i=a+r[3];n<0&&(n=0),a<0&&(a=0),o>e.width&&(o=e.width),i>e.height&&(i=e.height);for(var u=n;u<o;u++)for(var f=a;f<i;f++)if(!e.isBackground(u,f))return!1;return!0}throw Error("Invalid index")}t=r[0]+r[1]*e.width}return!e.nobg&&1===e.data[t]},clearBackground:function(t){var r=this;if(t.width==r.width&&t.height==r.height){for(var e=t.getContext("2d"),n=e.getImageData(0,0,r.width,r.height),a=0;a<r.total;a++)if(r.isBackground(a)){var o=4*a;n.data[o]=0,n.data[o+1]=0,n.data[o+2]=0,n.data[o+3]=0}return e.putImageData(n,0,0),t}}},r.prototype.u=function(){var t=this,r=t.h,e=t.m,n=t.k,a=r.edger=new f(r.canvas,{margin:r.margin,nobg:2==r.clearEdges});if(r.clearEdges)for(var o=t.w=new g(e*e),i=0;i<e;i++)for(var u=0;u<e;u++)o[i*e+u]=a.isBackground(u*n-r.x,i*n-r.y,n,n)},r.prototype.s=function(t){var r=this,e=r.h;if((e.image||e.text)&&!e.clearEdges){var a=n(e.width+2*e.margin,e.height+2*e.margin),o=a.getContext("2d");o.fillStyle="white",o.fillRect(0,0,a.width,a.height),e.edger.clearBackground(a);var i=t.getContext("2d");i.globalCompositeOperation="destination-out",i.drawImage(a,e.x,e.y)}},r.prototype.p=function(t){var r=this;return!r.h.clearEdges||r.w[t]},!function(){function t(t,r,e,n,a,o){o?t.arcTo(r,e,n,a,o):(t.lineTo(r,e),t.lineTo(n,a))}function e(e,n){var a=e.x,o=e.y,i=n.cellSize,u=n.value*i/2,f=n.context;n.isDark(e.i,e.j)&&(f.fillStyle=r.d,f.beginPath(),f.moveTo(a+.5*i,o),t(f,a+i,o,a+i,o+.5*i,u),t(f,a+i,o+i,a+.5*i,o+i,u),t(f,a,o+i,a,o+.5*i,u),t(f,a,o,a+.5*i,o,u),f.fill())}function o(r,e,n,a,o,i,u,f){r.beginPath(),r.moveTo(e,n),t(r,a,o,i,u,f),r.lineTo(a,o),r.lineTo(e,n),r.fill()}function u(e,n){var a=[0,0,0,0],i=e.i,u=e.j,f=e.x,l=e.y,g=n.cellSize,c=n.value*g/2,h=n.context;n.isDark(i-1,u)&&(a[0]++,a[1]++),n.isDark(i+1,u)&&(a[2]++,a[3]++),n.isDark(i,u-1)&&(a[0]++,a[3]++),n.isDark(i,u+1)&&(a[1]++,a[2]++),h.fillStyle=r.d,n.isDark(i,u)?(n.isDark(i-1,u-1)&&a[0]++,n.isDark(i-1,u+1)&&a[1]++,n.isDark(i+1,u+1)&&a[2]++,n.isDark(i+1,u-1)&&a[3]++,h.beginPath(),h.moveTo(f+.5*g,l),t(h,f+g,l,f+g,l+.5*g,a[1]?0:c),t(h,f+g,l+g,f+.5*g,l+g,a[2]?0:c),t(h,f,l+g,f,l+.5*g,a[3]?0:c),t(h,f,l,f+.5*g,l,a[0]?0:c),h.fill()):(2==a[0]&&o(h,f,l+.5*g,f,l,f+.5*g,l,c),2==a[1]&&o(h,f+.5*g,l,f+g,l,f+g,l+.5*g,c),2==a[2]&&o(h,f+g,l+.5*g,f+g,l+g,f+.5*g,l+g,c),2==a[3]&&o(h,f+.5*g,l+g,f,l+g,f,l+.5*g,c))}function f(t,e){var n=t.i,a=t.j,o=t.x,i=t.y,u=e.context,f=e.cellSize,l=e.count;u.fillStyle=r.d;var g=.25;(n<=7&&a<=7||n<=7&&l-a-1<=7||l-n-1<=7&&a<=7||n+5<=l&&n+9>=l&&a+5<=l&&a+9>=l||7===n||7===a)&&(g=1-.1*e.value);var c=(1-g)/2;u.fillRect(o+c*f,i+c*f,g*f,g*f)}function l(t){var e=t.cellSize,o=t.size,i=t.mask(),u=a(n(o,o),{cellSize:e,size:o,data:t.foreground}),f=u.getContext("2d");return f.globalCompositeOperation="destination-in",f.drawImage(i,0,0),f.globalCompositeOperation="destination-over",f.fillStyle=r.f,f.fillRect(0,0,o,o),u}i(r.c,{round:{data:e},liquid:{data:u},image:{data:f,foreground:l}})}(),{canvas:e}});