You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3 lines
62 KiB
JavaScript
3 lines
62 KiB
JavaScript
/*! quagga 2014-11-01 */
|
|
!function(a,b){"function"==typeof define&&define.amd?define([],b):a.Quagga=b()}(this,function(){var a,b,c;!function(d){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(n=n.slice(0,n.length-1),a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,b){return function(){return n.apply(d,v.call(arguments,0).concat([a,b]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var b=r[a];delete r[a],t[a]=!0,m.apply(d,b)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,b,c,f){var h,k,l,m,n,s,u=[],v=typeof c;if(f=f||a,"undefined"===v||"function"===v){for(b=!b.length&&c.length?["require","exports","module"]:b,n=0;n<b.length;n+=1)if(m=o(b[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=c?c.apply(q[a],u):void 0,a&&(h&&h.exports!==d&&h.exports!==q[a]?q[a]=h.exports:l===d&&s||(q[a]=l))}else a&&(q[a]=c)},a=b=n=function(a,b,c,e,f){if("string"==typeof a)return p[a]?p[a](b):j(o(a,b).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!b)return;b.splice?(a=b,b=c,c=null):a=d}return b=b||function(){},"function"==typeof c&&(c=e,e=f),e?m(d,a,b,c):setTimeout(function(){m(d,a,b,c)},4),n},n.config=function(a){return n(a)},a._defined=q,c=function(a,b,c){b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},c.amd={jQuery:!0}}(),c("almond",function(){}),c("barcode_reader",[],function(){function a(){return this._row=[],this}return a.prototype._nextUnset=function(a,b){var c;for(void 0===b&&(b=0),c=b;c<a.length;c++)if(!a[c])return c;return a.length},a.prototype._matchPattern=function(a,b){var c,d=0;for(c=0;c<a.length;c++)d+=Math.abs(b[c]-a[c]);return d},a.prototype._nextSet=function(a){var b;for(b=0;b<a.length;b++)if(a[b])return b;return a.length},a.prototype._normalize=function(a,b){var c,d,e=this,f=0,g=0,h=[],i=0;for(b||(b=e.MODULO),c=0;c<a.length;c++)1===a[c]?g++:f+=a[c];for(d=f/(b-g),c=0;c<a.length;c++)i=1===a[c]?a[c]:a[c]/d,h.push(i);return h},a.prototype._matchTrace=function(a,b){var c,d,e=[],f=this,g=f._nextSet(f._row),h=!f._row[g],i=0,j={error:Number.MAX_VALUE,code:-1,start:0};if(a){for(c=0;c<a.length;c++)e.push(0);for(c=g;c<f._row.length;c++)if(f._row[c]^h)e[i]++;else{if(i===e.length-1)return d=f._matchPattern(e,a),b>d?(j.start=c-g,j.end=c,j.counter=e,j):null;i++,e[i]=1,h=!h}}else for(e.push(0),c=g;c<f._row.length;c++)f._row[c]^h?e[i]++:(i++,e.push(0),e[i]=1,h=!h);return j.start=g,j.end=f._row.length-1,j.counter=e,j},a.prototype.decodePattern=function(b){var c,d=this;return d._row=b,c=d._decode(),null===c?(d._row.reverse(),c=d._decode(),c&&(c.direction=a.DIRECTION.REVERSE,c.start=d._row.length-c.start,c.end=d._row.length-c.end)):c.direction=a.DIRECTION.FORWARD,c},a.DIRECTION={FORWARD:1,REVERSE:-1},a.Exception={StartNotFoundException:"Start-Info was not found!",CodeNotFoundException:"Code could not be found!",PatternNotFoundException:"Pattern could not be found!"},a}),c("code_128_reader",["./barcode_reader"],function(a){function b(){a.call(this)}var c={CODE_SHIFT:{value:98},CODE_C:{value:99},CODE_B:{value:100},CODE_A:{value:101},START_CODE_A:{value:103},START_CODE_B:{value:104},START_CODE_C:{value:105},STOP_CODE:{value:106},MODULO:{value:11},CODE_PATTERN:{value:[[2,1,2,2,2,2],[2,2,2,1,2,2],[2,2,2,2,2,1],[1,2,1,2,2,3],[1,2,1,3,2,2],[1,3,1,2,2,2],[1,2,2,2,1,3],[1,2,2,3,1,2],[1,3,2,2,1,2],[2,2,1,2,1,3],[2,2,1,3,1,2],[2,3,1,2,1,2],[1,1,2,2,3,2],[1,2,2,1,3,2],[1,2,2,2,3,1],[1,1,3,2,2,2],[1,2,3,1,2,2],[1,2,3,2,2,1],[2,2,3,2,1,1],[2,2,1,1,3,2],[2,2,1,2,3,1],[2,1,3,2,1,2],[2,2,3,1,1,2],[3,1,2,1,3,1],[3,1,1,2,2,2],[3,2,1,1,2,2],[3,2,1,2,2,1],[3,1,2,2,1,2],[3,2,2,1,1,2],[3,2,2,2,1,1],[2,1,2,1,2,3],[2,1,2,3,2,1],[2,3,2,1,2,1],[1,1,1,3,2,3],[1,3,1,1,2,3],[1,3,1,3,2,1],[1,1,2,3,1,3],[1,3,2,1,1,3],[1,3,2,3,1,1],[2,1,1,3,1,3],[2,3,1,1,1,3],[2,3,1,3,1,1],[1,1,2,1,3,3],[1,1,2,3,3,1],[1,3,2,1,3,1],[1,1,3,1,2,3],[1,1,3,3,2,1],[1,3,3,1,2,1],[3,1,3,1,2,1],[2,1,1,3,3,1],[2,3,1,1,3,1],[2,1,3,1,1,3],[2,1,3,3,1,1],[2,1,3,1,3,1],[3,1,1,1,2,3],[3,1,1,3,2,1],[3,3,1,1,2,1],[3,1,2,1,1,3],[3,1,2,3,1,1],[3,3,2,1,1,1],[3,1,4,1,1,1],[2,2,1,4,1,1],[4,3,1,1,1,1],[1,1,1,2,2,4],[1,1,1,4,2,2],[1,2,1,1,2,4],[1,2,1,4,2,1],[1,4,1,1,2,2],[1,4,1,2,2,1],[1,1,2,2,1,4],[1,1,2,4,1,2],[1,2,2,1,1,4],[1,2,2,4,1,1],[1,4,2,1,1,2],[1,4,2,2,1,1],[2,4,1,2,1,1],[2,2,1,1,1,4],[4,1,3,1,1,1],[2,4,1,1,1,2],[1,3,4,1,1,1],[1,1,1,2,4,2],[1,2,1,1,4,2],[1,2,1,2,4,1],[1,1,4,2,1,2],[1,2,4,1,1,2],[1,2,4,2,1,1],[4,1,1,2,1,2],[4,2,1,1,1,2],[4,2,1,2,1,1],[2,1,2,1,4,1],[2,1,4,1,2,1],[4,1,2,1,2,1],[1,1,1,1,4,3],[1,1,1,3,4,1],[1,3,1,1,4,1],[1,1,4,1,1,3],[1,1,4,3,1,1],[4,1,1,1,1,3],[4,1,1,3,1,1],[1,1,3,1,4,1],[1,1,4,1,3,1],[3,1,1,1,4,1],[4,1,1,1,3,1],[2,1,1,4,1,2],[2,1,1,2,1,4],[2,1,1,2,3,2],[2,3,3,1,1,1,2]]}};return b.prototype=Object.create(a.prototype,c),b.prototype.constructor=b,b.prototype._decodeCode=function(a){var b,c,d,e,f=[0,0,0,0,0,0],g=this,h=a,i=!g._row[h],j=0,k={error:Number.MAX_VALUE,code:-1,start:a,end:a};for(b=h;b<g._row.length;b++)if(g._row[b]^i)f[j]++;else{if(j===f.length-1){for(e=g._normalize(f),c=0;c<g.CODE_PATTERN.length;c++)d=g._matchPattern(e,g.CODE_PATTERN[c]),d<k.error&&(k.code=c,k.error=d);return k.end=b,k}j++,f[j]=1,i=!i}return null},b.prototype._findEnd=function(){var a,b,c,d,e,f=[0,0,0,0,0,0,0],g=this,h=g._nextSet(g._row),i=!g._row[h],j=0,k={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(a=h;a<g._row.length;a++)if(g._row[a]^i)f[j]++;else{if(j===f.length-1){for(d=0,c=0;c<f.length;c++)d+=f[c];if(e=g._normalize(f,13),b=g._matchPattern(e,g.CODE_PATTERN[g.STOP_CODE]),3>b)return k.error=b,k.start=a-d,k.end=a,k;for(c=0;5>c;c++)f[c]=f[c+2];f[5]=0,f[6]=0,j--}else j++;f[j]=1,i=!i}return null},b.prototype._findStart=function(){var a,b,c,d,e,f,g=[0,0,0,0,0,0],h=this,i=h._nextSet(h._row),j=!1,k=0,l={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(a=i;a<h._row.length;a++)if(h._row[a]^j)g[k]++;else{if(k===g.length-1){for(e=0,d=0;d<g.length;d++)e+=g[d];for(f=h._normalize(g),b=h.START_CODE_A;b<=h.START_CODE_C;b++)c=h._matchPattern(f,h.CODE_PATTERN[b]),c<l.error&&(l.code=b,l.error=c);if(l.error<3)return l.start=a-e,l.end=a,l;for(d=0;4>d;d++)g[d]=g[d+2];g[4]=0,g[5]=0,k--}else k++;g[k]=1,j=!j}return null},b.prototype._decode=function(){var a,b,c,d=this,e=d._findStart(),f=null,g=!1,h=[],i=0,j=0,k=[],l=[],m=!1;if(null===e)return null;switch(f={code:e.code,start:e.start,end:e.end},l.push(f),j=f.code,f.code){case d.START_CODE_A:a=d.CODE_A;break;case d.START_CODE_B:a=d.CODE_B;break;case d.START_CODE_C:a=d.CODE_C;break;default:return null}for(;!g;){if(b=m,m=!1,f=d._decodeCode(f.end),null!==f)switch(f.code!==d.STOP_CODE&&(k.push(f.code),i++,j+=i*f.code),l.push(f),a){case d.CODE_A:if(f.code<64)h.push(String.fromCharCode(32+f.code));else if(f.code<96)h.push(String.fromCharCode(f.code-64));else switch(f.code){case d.CODE_SHIFT:m=!0,a=d.CODE_B;break;case d.CODE_B:a=d.CODE_B;break;case d.CODE_C:a=d.CODE_C;break;case d.STOP_CODE:g=!0}break;case d.CODE_B:if(f.code<96)h.push(String.fromCharCode(32+f.code));else switch(f.code!=d.STOP_CODE&&(c=!1),f.code){case d.CODE_SHIFT:m=!0,a=d.CODE_A;break;case d.CODE_A:a=d.CODE_A;break;case d.CODE_C:a=d.CODE_C;break;case d.STOP_CODE:g=!0}break;case d.CODE_C:switch(f.code<100&&h.push(f.code<10?"0"+f.code:f.code),f.code){case d.CODE_A:a=d.CODE_A;break;case d.CODE_B:a=d.CODE_B;break;case d.STOP_CODE:g=!0}}else g=!0;b&&(a=a==d.CODE_A?d.CODE_B:d.CODE_A)}return null===f?null:(f.end=d._nextUnset(d._row,f.end),f.end===d._row.length?null:(j-=i*k[k.length-1],j%103!=k[k.length-1]?null:(h.splice(h.length-1,1),{code:h.join(""),start:e.start,end:f.end,codeset:a,startInfo:e,decodedCodes:l,endInfo:f})))},b}),c("ean_reader",["./barcode_reader"],function(a){function b(){a.call(this)}var c={CODE_L_START:{value:0},MODULO:{value:7},CODE_G_START:{value:10},START_PATTERN:{value:[1/3*7,1/3*7,1/3*7]},STOP_PATTERN:{value:[1/3*7,1/3*7,1/3*7]},MIDDLE_PATTERN:{value:[.2*7,.2*7,.2*7,.2*7,.2*7]},CODE_PATTERN:{value:[[3,2,1,1],[2,2,2,1],[2,1,2,2],[1,4,1,1],[1,1,3,2],[1,2,3,1],[1,1,1,4],[1,3,1,2],[1,2,1,3],[3,1,1,2],[1,1,2,3],[1,2,2,2],[2,2,1,2],[1,1,4,1],[2,3,1,1],[1,3,2,1],[4,1,1,1],[2,1,3,1],[3,1,2,1],[2,1,1,3]]},CODE_FREQUENCY:{value:[0,11,13,14,19,25,28,21,22,26]}};return b.prototype=Object.create(a.prototype,c),b.prototype.constructor=b,b.prototype._decodeCode=function(b,c){var d,e,f,g,h=[0,0,0,0],i=this,j=b,k=!i._row[j],l=0,m={error:Number.MAX_VALUE,code:-1,start:b,end:b};for(c||(c=i.CODE_PATTERN.length),d=j;d<i._row.length;d++)if(i._row[d]^k)h[l]++;else{if(l===h.length-1){for(g=i._normalize(h),e=0;c>e;e++)f=i._matchPattern(g,i.CODE_PATTERN[e]),f<m.error&&(m.code=e,m.error=f);return m.end=d,m}l++,h[l]=1,k=!k}throw a.CodeNotFoundException},b.prototype._findPattern=function(b,c,d,e,f){var g,h,i,j,k,l=[],m=this,n=0,o={error:Number.MAX_VALUE,code:-1,start:0,end:0};for(c||(c=m._nextSet(m._row)),void 0===d&&(d=!1),void 0===e&&(e=!0),void 0===f&&(f=2),g=0;g<b.length;g++)l[g]=0;for(g=c;g<m._row.length;g++)if(m._row[g]^d)l[n]++;else{if(n===l.length-1){for(j=0,i=0;i<l.length;i++)j+=l[i];if(k=m._normalize(l),h=m._matchPattern(k,b),f>h)return o.error=h,o.start=g-j,o.end=g,o;if(!e)throw a.PatternNotFoundException;for(i=0;i<l.length-2;i++)l[i]=l[i+2];l[l.length-2]=0,l[l.length-1]=0,n--}else n++;l[n]=1,d=!d}throw a.PatternNotFoundException},b.prototype._decode=function(){var a,b,c=this,d=null,e=[],f=0,g=[];try{for(a=c._findPattern(c.START_PATTERN),d={code:a.code,start:a.start,end:a.end},g.push(d),b=0;6>b;b++)d=c._decodeCode(d.end),d.code>=c.CODE_G_START?(d.code=d.code-c.CODE_G_START,f|=1<<5-b):f|=0<<5-b,e.push(d.code),g.push(d);for(b=0;b<c.CODE_FREQUENCY.length;b++)if(f===c.CODE_FREQUENCY[b]){e.unshift(b);break}if(d=c._findPattern(c.MIDDLE_PATTERN,d.end,!0),null===d)return null;for(g.push(d),b=0;6>b;b++)d=c._decodeCode(d.end,c.CODE_G_START),g.push(d),e.push(d.code);if(d=c._findPattern(c.STOP_PATTERN,d.end),g.push(d),!c._checksum(e))return null}catch(h){return null}return{code:e.join(""),start:a.start,end:d.end,codeset:"",startInfo:a,decodedCodes:g}},b.prototype._checksum=function(a){var b,c=0;for(b=a.length-2;b>=0;b-=2)c+=a[b];for(c*=3,b=a.length-1;b>=0;b-=2)c+=a[b];return c%10===0},b}),c("image_loader",[],function(){function a(a,b){a.onload=function(){b.loaded(this)}}var b={};return b.load=function(b,c,d,e,f){var g,h,i,j=new Array(e),k=new Array(j.length);if(f===!1)j[0]=b;else for(g=0;g<j.length;g++)i=d+g,j[g]=b+"image-"+("00"+i).slice(-3)+".jpg";for(k.notLoaded=[],k.addImage=function(a){k.notLoaded.push(a)},k.loaded=function(a){for(var b=k.notLoaded,d=0;d<b.length;d++)if(b[d]==a){b.splice(d,1);for(var e=0;e<j.length;e++){var f=j[e].substr(j[e].lastIndexOf("/"));if(-1!=a.src.lastIndexOf(f)){k[e]=a;break}}break}0===b.length&&(console.log("Images loaded"),c.apply(null,[k]))},g=0;g<j.length;g++)h=new Image,k.addImage(h),a(h,k),h.src=j[g]},b}),c("input_stream",["image_loader"],function(a){var b={};return b.createVideoStream=function(a){var b={},c=null,d=["canrecord","ended"],e={};return b.getRealWidth=function(){return a.videoWidth},b.getRealHeight=function(){return a.videoHeight},b.getWidth=function(){return c.halfSample?a.videoWidth/2:a.videoWidth},b.getHeight=function(){return c.halfSample?a.videoHeight/2:a.videoHeight},b.setInputStream=function(b){c=b,a.src=b.src},b.ended=function(){return a.ended},b.getConfig=function(){return c},b.setAttribute=function(b,c){a.setAttribute(b,c)},b.pause=function(){a.pause()},b.play=function(){a.play()},b.setCurrentTime=function(b){"LiveStream"!==c.type&&(a.currentTime=b)},b.addEventListener=function(b,c,f){-1!==d.indexOf(b)?(e[b]||(e[b]=[]),e[b].push(c)):a.addEventListener(b,c,f)},b.trigger=function(a,c){var d,f=e[a];if(f&&f.length>0)for(d=0;d<f.length;d++)f[d].apply(b,c)},b.getFrame=function(){return a},b},b.createLiveStream=function(a){a.setAttribute("autoplay",!0);var c=b.createVideoStream(a);return c.ended=function(){return!1},c.getWidth=function(){return this.getConfig().halfSample?a.videoWidth/2:a.videoWidth},c.getHeight=function(){return this.getConfig().halfSample?a.videoHeight/2:a.videoHeight},c},b.createImageStream=function(){function b(){j=!1,a.load(n,function(a){k=a,f=a[0].width,g=a[0].height,j=!0,h=0,setTimeout(function(){c("canrecord",[])},0)},m,l,e.sequence)}function c(a,b){var c,e=q[a];if(e&&e.length>0)for(c=0;c<e.length;c++)e[c].apply(d,b)}var d={},e=null,f=0,g=0,h=0,i=!0,j=!1,k=null,l=0,m=1,n=null,o=!1,p=["canrecord","ended"],q={};return d.trigger=c,d.getWidth=function(){return e.size?f/g>1?e.size:f/g*e.size:f},d.getHeight=function(){return e.size?f/g>1?g/f*e.size:e.size:g},d.getRealWidth=function(){return f},d.getRealHeight=function(){return g},d.setInputStream=function(a){e=a,a.sequence===!1?(n=a.src,l=1):(n=a.src,l=a.length),b()},d.ended=function(){return o},d.setAttribute=function(){},d.getConfig=function(){return e},d.pause=function(){i=!0},d.play=function(){i=!1},d.setCurrentTime=function(a){h=a},d.addEventListener=function(a,b){-1!==p.indexOf(a)&&(q[a]||(q[a]=[]),q[a].push(b))},d.getFrame=function(){var a;return j?(i||(a=k[h],l-1>h?h++:setTimeout(function(){o=!0,c("ended",[])},0)),a):null},d},b}),glMatrixArrayType=Float32Array,window.requestAnimFrame=function(){return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,1e3/60)}}(),navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia,window.URL=window.URL||window.webkitURL||window.mozURL||window.msURL,c("typedefs",function(a){return function(){var b;return b||a.typedefs}}(this)),c("subImage",["typedefs"],function(){function a(a,b,c){c||(c={data:null,size:b}),this.data=c.data,this.originalSize=c.size,this.I=c,this.from=a,this.size=b}return a.prototype.show=function(a,b){var c,d,e,f,g,h,i;for(b||(b=1),c=a.getContext("2d"),a.width=this.size.x,a.height=this.size.y,d=c.getImageData(0,0,a.width,a.height),e=d.data,f=0,g=0;g<this.size.y;g++)for(h=0;h<this.size.x;h++)i=g*this.size.x+h,f=this.get(h,g)*b,e[4*i+0]=f,e[4*i+1]=f,e[4*i+2]=f,e[4*i+3]=255;d.data=e,c.putImageData(d,0,0)},a.prototype.get=function(a,b){return this.data[(this.from.y+b)*this.originalSize.x+this.from.x+a]},a.prototype.updateData=function(a){this.originalSize=a.size,this.data=a.data},a.prototype.updateFrom=function(a){return this.from=a,this},a}),c("cluster",[],function(){var a={create:function(a,b){function c(){d(a),e()}function d(a){h[a.id]=a,f.push(a)}function e(){var a,b=0;for(a=0;a<f.length;a++)b+=f[a].rad;g.rad=b/f.length,g.vec=i.create([Math.cos(g.rad),Math.sin(g.rad)])}var f=[],g={rad:0,vec:i.create([0,0])},h={};return c(),{add:function(a){h[a.id]||(d(a),e())},fits:function(a){var c=Math.abs(i.dot(a.point.vec,g.vec));return c>b?!0:!1},getPoints:function(){return f},getCenter:function(){return g}}},createPoint:function(a,b,c){return{rad:a[c],point:a,id:b}}};return a});var d={};d.create=function(a){var b;return a?(b=new glMatrixArrayType(3),b[0]=a[0],b[1]=a[1],b[2]=a[2]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0]:3),b},d.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b},d.add=function(a,b,c){return c&&a!=c?(c[0]=a[0]+b[0],c[1]=a[1]+b[1],c[2]=a[2]+b[2],c):(a[0]+=b[0],a[1]+=b[1],a[2]+=b[2],a)},d.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2],c):(a[0]-=b[0],a[1]-=b[1],a[2]-=b[2],a)},d.negate=function(a,b){return b||(b=a),b[0]=-a[0],b[1]=-a[1],b[2]=-a[2],b},d.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a)},d.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=Math.sqrt(c*c+d*d+e*e);return f?1==f?(b[0]=c,b[1]=d,b[2]=e,b):(f=1/f,b[0]=c*f,b[1]=d*f,b[2]=e*f,b):(b[0]=0,b[1]=0,b[2]=0,b)},d.cross=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=b[0],h=b[1],i=b[2];return c[0]=e*i-f*h,c[1]=f*g-d*i,c[2]=d*h-e*g,c},d.length=function(a){var b=a[0],c=a[1],d=a[2];return Math.sqrt(b*b+c*c+d*d)},d.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]},d.direction=function(a,b,c){c||(c=a);var d=a[0]-b[0],e=a[1]-b[1],f=a[2]-b[2],g=Math.sqrt(d*d+e*e+f*f);return g?(g=1/g,c[0]=d*g,c[1]=e*g,c[2]=f*g,c):(c[0]=0,c[1]=0,c[2]=0,c)},d.lerp=function(a,b,c,d){return d||(d=a),d[0]=a[0]+c*(b[0]-a[0]),d[1]=a[1]+c*(b[1]-a[1]),d[2]=a[2]+c*(b[2]-a[2]),d},d.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+"]"};var e={};e.create=function(a){var b;return a?(b=new glMatrixArrayType(9),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0,0,0,0,0,0]:9),b},e.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b},e.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=1,a[5]=0,a[6]=0,a[7]=0,a[8]=1,a},e.transpose=function(a,b){if(!b||a==b){var c=a[1],d=a[2],e=a[5];return a[1]=a[3],a[2]=a[6],a[3]=c,a[5]=a[7],a[6]=d,a[7]=e,a}return b[0]=a[0],b[1]=a[3],b[2]=a[6],b[3]=a[1],b[4]=a[4],b[5]=a[7],b[6]=a[2],b[7]=a[5],b[8]=a[8],b},e.toMat4=function(a,b){return b||(b=f.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=0,b[4]=a[3],b[5]=a[4],b[6]=a[5],b[7]=0,b[8]=a[6],b[9]=a[7],b[10]=a[8],b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},e.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+", "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+", "+a[8]+"]"};var f={};f.create=function(a){var b;return a?(b=new glMatrixArrayType(16),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]:16),b},f.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=a[12],b[13]=a[13],b[14]=a[14],b[15]=a[15],b},f.identity=function(a){return a[0]=1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=1,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,a},f.transpose=function(a,b){if(!b||a==b){var c=a[1],d=a[2],e=a[3],f=a[6],g=a[7],h=a[11];return a[1]=a[4],a[2]=a[8],a[3]=a[12],a[4]=c,a[6]=a[9],a[7]=a[13],a[8]=d,a[9]=f,a[11]=a[14],a[12]=e,a[13]=g,a[14]=h,a}return b[0]=a[0],b[1]=a[4],b[2]=a[8],b[3]=a[12],b[4]=a[1],b[5]=a[5],b[6]=a[9],b[7]=a[13],b[8]=a[2],b[9]=a[6],b[10]=a[10],b[11]=a[14],b[12]=a[3],b[13]=a[7],b[14]=a[11],b[15]=a[15],b},f.determinant=function(a){var b=a[0],c=a[1],d=a[2],e=a[3],f=a[4],g=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],m=a[11],n=a[12],o=a[13],p=a[14],q=a[15];return n*k*h*e-j*o*h*e-n*g*l*e+f*o*l*e+j*g*p*e-f*k*p*e-n*k*d*i+j*o*d*i+n*c*l*i-b*o*l*i-j*c*p*i+b*k*p*i+n*g*d*m-f*o*d*m-n*c*h*m+b*o*h*m+f*c*p*m-b*g*p*m-j*g*d*q+f*k*d*q+j*c*h*q-b*k*h*q-f*c*l*q+b*g*l*q},f.inverse=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=a[9],m=a[10],n=a[11],o=a[12],p=a[13],q=a[14],r=a[15],s=c*h-d*g,t=c*i-e*g,u=c*j-f*g,v=d*i-e*h,w=d*j-f*h,x=e*j-f*i,y=k*p-l*o,z=k*q-m*o,A=k*r-n*o,B=l*q-m*p,C=l*r-n*p,D=m*r-n*q,E=1/(s*D-t*C+u*B+v*A-w*z+x*y);return b[0]=(h*D-i*C+j*B)*E,b[1]=(-d*D+e*C-f*B)*E,b[2]=(p*x-q*w+r*v)*E,b[3]=(-l*x+m*w-n*v)*E,b[4]=(-g*D+i*A-j*z)*E,b[5]=(c*D-e*A+f*z)*E,b[6]=(-o*x+q*u-r*t)*E,b[7]=(k*x-m*u+n*t)*E,b[8]=(g*C-h*A+j*y)*E,b[9]=(-c*C+d*A-f*y)*E,b[10]=(o*w-p*u+r*s)*E,b[11]=(-k*w+l*u-n*s)*E,b[12]=(-g*B+h*z-i*y)*E,b[13]=(c*B-d*z+e*y)*E,b[14]=(-o*v+p*t-q*s)*E,b[15]=(k*v-l*t+m*s)*E,b},f.toRotationMat=function(a,b){return b||(b=f.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b[4]=a[4],b[5]=a[5],b[6]=a[6],b[7]=a[7],b[8]=a[8],b[9]=a[9],b[10]=a[10],b[11]=a[11],b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},f.toMat3=function(a,b){return b||(b=e.create()),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[4],b[4]=a[5],b[5]=a[6],b[6]=a[8],b[7]=a[9],b[8]=a[10],b},f.toInverseMat3=function(a,b){var c=a[0],d=a[1],f=a[2],g=a[4],h=a[5],i=a[6],j=a[8],k=a[9],l=a[10],m=l*h-i*k,n=-l*g+i*j,o=k*g-h*j,p=c*m+d*n+f*o;if(!p)return null;var q=1/p;return b||(b=e.create()),b[0]=m*q,b[1]=(-l*d+f*k)*q,b[2]=(i*d-f*h)*q,b[3]=n*q,b[4]=(l*c-f*j)*q,b[5]=(-i*c+f*g)*q,b[6]=o*q,b[7]=(-k*c+d*j)*q,b[8]=(h*c-d*g)*q,b},f.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],m=a[9],n=a[10],o=a[11],p=a[12],q=a[13],r=a[14],s=a[15],t=b[0],u=b[1],v=b[2],w=b[3],x=b[4],y=b[5],z=b[6],A=b[7],B=b[8],C=b[9],D=b[10],E=b[11],F=b[12],G=b[13],H=b[14],I=b[15];return c[0]=t*d+u*h+v*l+w*p,c[1]=t*e+u*i+v*m+w*q,c[2]=t*f+u*j+v*n+w*r,c[3]=t*g+u*k+v*o+w*s,c[4]=x*d+y*h+z*l+A*p,c[5]=x*e+y*i+z*m+A*q,c[6]=x*f+y*j+z*n+A*r,c[7]=x*g+y*k+z*o+A*s,c[8]=B*d+C*h+D*l+E*p,c[9]=B*e+C*i+D*m+E*q,c[10]=B*f+C*j+D*n+E*r,c[11]=B*g+C*k+D*o+E*s,c[12]=F*d+G*h+H*l+I*p,c[13]=F*e+G*i+H*m+I*q,c[14]=F*f+G*j+H*n+I*r,c[15]=F*g+G*k+H*o+I*s,c},f.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[4]*e+a[8]*f+a[12],c[1]=a[1]*d+a[5]*e+a[9]*f+a[13],c[2]=a[2]*d+a[6]*e+a[10]*f+a[14],c},f.multiplyVec4=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3];return c[0]=a[0]*d+a[4]*e+a[8]*f+a[12]*g,c[1]=a[1]*d+a[5]*e+a[9]*f+a[13]*g,c[2]=a[2]*d+a[6]*e+a[10]*f+a[14]*g,c[3]=a[3]*d+a[7]*e+a[11]*f+a[15]*g,c},f.translate=function(a,b,c){var d=b[0],e=b[1],f=b[2];if(!c||a==c)return a[12]=a[0]*d+a[4]*e+a[8]*f+a[12],a[13]=a[1]*d+a[5]*e+a[9]*f+a[13],a[14]=a[2]*d+a[6]*e+a[10]*f+a[14],a[15]=a[3]*d+a[7]*e+a[11]*f+a[15],a;var g=a[0],h=a[1],i=a[2],j=a[3],k=a[4],l=a[5],m=a[6],n=a[7],o=a[8],p=a[9],q=a[10],r=a[11];return c[0]=g,c[1]=h,c[2]=i,c[3]=j,c[4]=k,c[5]=l,c[6]=m,c[7]=n,c[8]=o,c[9]=p,c[10]=q,c[11]=r,c[12]=g*d+k*e+o*f+a[12],c[13]=h*d+l*e+p*f+a[13],c[14]=i*d+m*e+q*f+a[14],c[15]=j*d+n*e+r*f+a[15],c},f.scale=function(a,b,c){var d=b[0],e=b[1],f=b[2];return c&&a!=c?(c[0]=a[0]*d,c[1]=a[1]*d,c[2]=a[2]*d,c[3]=a[3]*d,c[4]=a[4]*e,c[5]=a[5]*e,c[6]=a[6]*e,c[7]=a[7]*e,c[8]=a[8]*f,c[9]=a[9]*f,c[10]=a[10]*f,c[11]=a[11]*f,c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15],c):(a[0]*=d,a[1]*=d,a[2]*=d,a[3]*=d,a[4]*=e,a[5]*=e,a[6]*=e,a[7]*=e,a[8]*=f,a[9]*=f,a[10]*=f,a[11]*=f,a)},f.rotate=function(a,b,c,d){var e=c[0],f=c[1],g=c[2],h=Math.sqrt(e*e+f*f+g*g);if(!h)return null;1!=h&&(h=1/h,e*=h,f*=h,g*=h);var i=Math.sin(b),j=Math.cos(b),k=1-j,l=a[0],m=a[1],n=a[2],o=a[3],p=a[4],q=a[5],r=a[6],s=a[7],t=a[8],u=a[9],v=a[10],w=a[11],x=e*e*k+j,y=f*e*k+g*i,z=g*e*k-f*i,A=e*f*k-g*i,B=f*f*k+j,C=g*f*k+e*i,D=e*g*k+f*i,E=f*g*k-e*i,F=g*g*k+j;return d?a!=d&&(d[12]=a[12],d[13]=a[13],d[14]=a[14],d[15]=a[15]):d=a,d[0]=l*x+p*y+t*z,d[1]=m*x+q*y+u*z,d[2]=n*x+r*y+v*z,d[3]=o*x+s*y+w*z,d[4]=l*A+p*B+t*C,d[5]=m*A+q*B+u*C,d[6]=n*A+r*B+v*C,d[7]=o*A+s*B+w*C,d[8]=l*D+p*E+t*F,d[9]=m*D+q*E+u*F,d[10]=n*D+r*E+v*F,d[11]=o*D+s*E+w*F,d},f.rotateX=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[4],g=a[5],h=a[6],i=a[7],j=a[8],k=a[9],l=a[10],m=a[11];return c?a!=c&&(c[0]=a[0],c[1]=a[1],c[2]=a[2],c[3]=a[3],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[4]=f*e+j*d,c[5]=g*e+k*d,c[6]=h*e+l*d,c[7]=i*e+m*d,c[8]=f*-d+j*e,c[9]=g*-d+k*e,c[10]=h*-d+l*e,c[11]=i*-d+m*e,c},f.rotateY=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[0],g=a[1],h=a[2],i=a[3],j=a[8],k=a[9],l=a[10],m=a[11];return c?a!=c&&(c[4]=a[4],c[5]=a[5],c[6]=a[6],c[7]=a[7],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[0]=f*e+j*-d,c[1]=g*e+k*-d,c[2]=h*e+l*-d,c[3]=i*e+m*-d,c[8]=f*d+j*e,c[9]=g*d+k*e,c[10]=h*d+l*e,c[11]=i*d+m*e,c},f.rotateZ=function(a,b,c){var d=Math.sin(b),e=Math.cos(b),f=a[0],g=a[1],h=a[2],i=a[3],j=a[4],k=a[5],l=a[6],m=a[7];return c?a!=c&&(c[8]=a[8],c[9]=a[9],c[10]=a[10],c[11]=a[11],c[12]=a[12],c[13]=a[13],c[14]=a[14],c[15]=a[15]):c=a,c[0]=f*e+j*d,c[1]=g*e+k*d,c[2]=h*e+l*d,c[3]=i*e+m*d,c[4]=f*-d+j*e,c[5]=g*-d+k*e,c[6]=h*-d+l*e,c[7]=i*-d+m*e,c},f.frustum=function(a,b,c,d,e,g,h){h||(h=f.create());var i=b-a,j=d-c,k=g-e;return h[0]=2*e/i,h[1]=0,h[2]=0,h[3]=0,h[4]=0,h[5]=2*e/j,h[6]=0,h[7]=0,h[8]=(b+a)/i,h[9]=(d+c)/j,h[10]=-(g+e)/k,h[11]=-1,h[12]=0,h[13]=0,h[14]=-(g*e*2)/k,h[15]=0,h},f.perspective=function(a,b,c,d,e){var g=c*Math.tan(a*Math.PI/360),h=g*b;return f.frustum(-h,h,-g,g,c,d,e)},f.ortho=function(a,b,c,d,e,g,h){h||(h=f.create());var i=b-a,j=d-c,k=g-e;return h[0]=2/i,h[1]=0,h[2]=0,h[3]=0,h[4]=0,h[5]=2/j,h[6]=0,h[7]=0,h[8]=0,h[9]=0,h[10]=-2/k,h[11]=0,h[12]=-(a+b)/i,h[13]=-(d+c)/j,h[14]=-(g+e)/k,h[15]=1,h},f.lookAt=function(a,b,c,d){d||(d=f.create());var e=a[0],g=a[1],h=a[2],i=c[0],j=c[1],k=c[2],l=b[0],m=b[1],n=b[2];if(e==l&&g==m&&h==n)return f.identity(d);var o,p,q,r,s,t,u,v,w,x;return o=e-b[0],p=g-b[1],q=h-b[2],x=1/Math.sqrt(o*o+p*p+q*q),o*=x,p*=x,q*=x,r=j*q-k*p,s=k*o-i*q,t=i*p-j*o,x=Math.sqrt(r*r+s*s+t*t),x?(x=1/x,r*=x,s*=x,t*=x):(r=0,s=0,t=0),u=p*t-q*s,v=q*r-o*t,w=o*s-p*r,x=Math.sqrt(u*u+v*v+w*w),x?(x=1/x,u*=x,v*=x,w*=x):(u=0,v=0,w=0),d[0]=r,d[1]=u,d[2]=o,d[3]=0,d[4]=s,d[5]=v,d[6]=p,d[7]=0,d[8]=t,d[9]=w,d[10]=q,d[11]=0,d[12]=-(r*e+s*g+t*h),d[13]=-(u*e+v*g+w*h),d[14]=-(o*e+p*g+q*h),d[15]=1,d},f.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+",\n "+a[4]+", "+a[5]+", "+a[6]+", "+a[7]+",\n "+a[8]+", "+a[9]+", "+a[10]+", "+a[11]+",\n "+a[12]+", "+a[13]+", "+a[14]+", "+a[15]+"]"},quat4={},quat4.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},quat4.set=function(a,b){return b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3],b},quat4.calculateW=function(a,b){var c=a[0],d=a[1],e=a[2];return b&&a!=b?(b[0]=c,b[1]=d,b[2]=e,b[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e)),b):(a[3]=-Math.sqrt(Math.abs(1-c*c-d*d-e*e)),a)},quat4.inverse=function(a,b){return b&&a!=b?(b[0]=-a[0],b[1]=-a[1],b[2]=-a[2],b[3]=a[3],b):(a[0]*=-1,a[1]*=-1,a[2]*=-1,a)},quat4.length=function(a){var b=a[0],c=a[1],d=a[2],e=a[3];return Math.sqrt(b*b+c*c+d*d+e*e)},quat4.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=Math.sqrt(c*c+d*d+e*e+f*f);return 0==g?(b[0]=0,b[1]=0,b[2]=0,b[3]=0,b):(g=1/g,b[0]=c*g,b[1]=d*g,b[2]=e*g,b[3]=f*g,b)},quat4.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=b[0],i=b[1],j=b[2],k=b[3];return c[0]=d*k+g*h+e*j-f*i,c[1]=e*k+g*i+f*h-d*j,c[2]=f*k+g*j+d*i-e*h,c[3]=g*k-d*h-e*i-f*j,c},quat4.multiplyVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=a[0],h=a[1],i=a[2],j=a[3],k=j*d+h*f-i*e,l=j*e+i*d-g*f,m=j*f+g*e-h*d,n=-g*d-h*e-i*f;return c[0]=k*j+n*-g+l*-i-m*-h,c[1]=l*j+n*-h+m*-g-k*-i,c[2]=m*j+n*-i+k*-h-l*-g,c},quat4.toMat3=function(a,b){b||(b=e.create());var c=a[0],d=a[1],f=a[2],g=a[3],h=c+c,i=d+d,j=f+f,k=c*h,l=c*i,m=c*j,n=d*i,o=d*j,p=f*j,q=g*h,r=g*i,s=g*j;return b[0]=1-(n+p),b[1]=l-s,b[2]=m+r,b[3]=l+s,b[4]=1-(k+p),b[5]=o-q,b[6]=m-r,b[7]=o+q,b[8]=1-(k+n),b},quat4.toMat4=function(a,b){b||(b=f.create());var c=a[0],d=a[1],e=a[2],g=a[3],h=c+c,i=d+d,j=e+e,k=c*h,l=c*i,m=c*j,n=d*i,o=d*j,p=e*j,q=g*h,r=g*i,s=g*j;return b[0]=1-(n+p),b[1]=l-s,b[2]=m+r,b[3]=0,b[4]=l+s,b[5]=1-(k+p),b[6]=o-q,b[7]=0,b[8]=m-r,b[9]=o+q,b[10]=1-(k+n),b[11]=0,b[12]=0,b[13]=0,b[14]=0,b[15]=1,b},quat4.slerp=function(a,b,c,d){d||(d=a);var e=a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3];if(Math.abs(e)>=1)return d!=a&&(d[0]=a[0],d[1]=a[1],d[2]=a[2],d[3]=a[3]),d;var f=Math.acos(e),g=Math.sqrt(1-e*e);if(Math.abs(g)<.001)return d[0]=.5*a[0]+.5*b[0],d[1]=.5*a[1]+.5*b[1],d[2]=.5*a[2]+.5*b[2],d[3]=.5*a[3]+.5*b[3],d;var h=Math.sin((1-c)*f)/g,i=Math.sin(c*f)/g;return d[0]=a[0]*h+b[0]*i,d[1]=a[1]*h+b[1]*i,d[2]=a[2]*h+b[2]*i,d[3]=a[3]*h+b[3]*i,d},quat4.str=function(a){return"["+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+"]"},c("glMatrix",["typedefs"],function(a){return function(){var b;return b||a.glMatrix}}(this)),f.xVec4=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3];return c[0]=a[0]*d+a[1]*e+a[2]*f+a[3]*g,c[1]=a[4]*d+a[5]*e+a[6]*f+a[7]*g,c[2]=a[8]*d+a[9]*e+a[10]*f+a[11]*g,c[3]=a[12]*d+a[13]*e+a[14]*f+a[15]*g,c},e.scale=function(a,b,c){return c&&a!=c?(c=e.create(),c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c[4]=a[4]*b,c[5]=a[5]*b,c[6]=a[6]*b,c[7]=a[7]*b,c[8]=a[8]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a[4]*=b,a[5]*=b,a[6]*=b,a[7]*=b,a[8]*=b,a)},e.inverse=function(a,b){b||(b=a);var c=a[0],d=a[1],e=a[2],f=a[3],g=a[4],h=a[5],i=a[6],j=a[7],k=a[8],l=1/(c*g*k+d*h*i+e*f*j-e*g*i-d*f*k-c*h*j);return b[0]=(g*k-h*j)*l,b[1]=(e*j-d*k)*l,b[2]=(d*h-e*g)*l,b[3]=(h*i-f*k)*l,b[4]=(c*k-e*i)*l,b[5]=(e*f-c*h)*l,b[6]=(f*j-g*i)*l,b[7]=(d*i-c*j)*l,b[8]=(c*g-d*f)*l,b},e.multiply=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3],h=a[4],i=a[5],j=a[6],k=a[7],l=a[8],m=b[0],n=b[1],o=b[2],p=b[3],q=b[4],r=b[5],s=b[6],t=b[7],u=b[8];return c[0]=d*m+e*p+f*s,c[1]=d*n+e*q+f*t,c[2]=d*o+e*r+f*u,c[3]=g*m+h*p+i*s,c[4]=g*n+h*q+i*t,c[5]=g*o+h*r+i*u,c[6]=j*m+k*p+l*s,c[7]=j*n+k*q+l*t,c[8]=j*o+k*r+l*u,c},e.xVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[1]*e+a[2]*f,c[1]=a[3]*d+a[4]*e+a[5]*f,c[2]=a[6]*d+a[7]*e+a[8]*f,c};var g={};g.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},g.project=function(a,b){return b||(b=a),b[0]=a[0]/a[3],b[1]=a[1]/a[3],b[2]=a[2]/a[3],b},g.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[4]*=b,a)},g.xMat4=function(a,b,c){c||(c=a);var d=a[0],e=a[1],f=a[2],g=a[3];return c[0]=b[0]*d+b[4]*e+b[8]*f+b[12]*g,c[1]=b[1]*d+b[5]*e+b[9]*f+b[13]*g,c[2]=b[2]*d+b[6]*e+b[10]*f+b[14]*g,c[3]=b[3]*d+b[7]*e+b[11]*f+b[15]*g,c};var h={};h.create=function(a){var b;return a?(b=new glMatrixArrayType(4),b[0]=a[0],b[1]=a[1],b[2]=a[2],b[3]=a[3]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0,0,0]:4),b},h.xVec2=function(a,b,c){c||(c=b);var d=b[0],e=b[1];return c[0]=a[0]*d+a[1]*e,c[1]=a[2]*d+a[3]*e,c},h.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a)},h.determinant=function(a){return a[0]*a[3]-a[1]*a[2]},h.inverse=function(a){var b=1/h.determinant(a),c=a[3]*b,d=-a[1]*b,e=-a[2]*b,f=a[0];return a[0]=c,a[1]=d,a[2]=e,a[3]=f,a};var i={};i.create=function(a){var b;return a?(b=new glMatrixArrayType(2),b[0]=a[0],b[1]=a[1]):b=new glMatrixArrayType(glMatrixArrayType===Array?[0,0]:2),b},i.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c):(a[0]-=b[0],a[1]-=b[1],a)},i.add=function(a,b,c){return c&&a!=c?(c[0]=a[0]+b[0],c[1]=a[1]+b[1],c):(a[0]+=b[0],a[1]+=b[1],a)},i.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c):(a[0]*=b,a[1]*=b,a)},i.normalize=function(a,b){b||(b=a);var c=a[0],d=a[1],e=Math.sqrt(c*c+d*d);return e?1==e?(b[0]=c,b[1]=d,b):(e=1/e,b[0]=c*e,b[1]=d*e,b):(b[0]=0,b[1]=0,b)},i.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]},i.multiply=function(a,b,c){return c||(c=a),c[0]=a[0]*b[0],c[1]=a[1]*b[1],c
|
|
},i.unproject=function(a){return d.create([a[0],a[1],1])},i.length=function(a){return Math.sqrt(a[0]*a[0]+a[1]*a[1])},i.perspectiveProject=function(a){var b=i.create(a);return i.scale(b,1/a[2])},d.project=function(a){return i.scale(i.create(a),1/a[2])};var j={};j.scale=function(a,b,c){return c&&a!=c?(c[0]=a[0]*b,c[1]=a[1]*b,c[2]=a[2]*b,c[3]=a[3]*b,c[4]=a[4]*b,c[5]=a[5]*b,c):(a[0]*=b,a[1]*=b,a[2]*=b,a[3]*=b,a[4]*=b,a[5]*=b,a)},j.subtract=function(a,b,c){return c&&a!=c?(c[0]=a[0]-b[0],c[1]=a[1]-b[1],c[2]=a[2]-b[2],c[3]=a[3]-b[3],c[4]=a[4]-b[4],c[5]=a[5]-b[5],c):(a[0]-=b[0],a[1]-=b[1],a[2]-=b[2],a[3]-=b[3],a[4]-=b[4],a[5]-=b[5],a)},j.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]+a[4]*b[4]+a[5]*b[5]};var k={};return k.xVec6=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],i=b[5];return c[0]=a[0]*d+a[1]*e+a[2]*f+a[3]*g+a[4]*h+a[5]*i,c[1]=a[6]*d+a[7]*e+a[8]*f+a[9]*g+a[10]*h+a[11]*i,c[2]=a[12]*d+a[13]*e+a[14]*f+a[15]*g+a[16]*h+a[17]*i,c[3]=a[18]*d+a[19]*e+a[20]*f+a[21]*g+a[22]*h+a[23]*i,c[4]=a[24]*d+a[25]*e+a[26]*f+a[27]*g+a[28]*h+a[29]*i,c[5]=a[30]*d+a[31]*e+a[32]*f+a[33]*g+a[34]*h+a[35]*i,c},e.xVec3=function(a,b,c){c||(c=b);var d=b[0],e=b[1],f=b[2];return c[0]=a[0]*d+a[1]*e+a[2]*f,c[1]=a[3]*d+a[4]*e+a[5]*f,c[2]=a[6]*d+a[7]*e+a[8]*f,c},c("glMatrixAddon",["glMatrix"],function(a){return function(){var b;return b||a.glMatrixAddon}}(this)),c("array_helper",[],function(){return{init:function(a,b){for(var c=a.length;c--;)a[c]=b},shuffle:function(a){var b,c,d=a.length-1;for(d;d>=0;d--)b=Math.floor(Math.random()*d),c=a[d],a[d]=a[b],a[b]=c;return a},toPointList:function(a){var b,c,d=[],e=[];for(b=0;b<a.length;b++){for(d=[],c=0;c<a[b].length;c++)d[c]=a[b][c];e[b]="["+d.join(",")+"]"}return"["+e.join(",\r\n")+"]"},threshold:function(a,b,c){var d,e=[];for(d=0;d<a.length;d++)c.apply(a,[a[d]])>=b&&e.push(a[d]);return e},maxIndex:function(a){var b,c=0;for(b=0;b<a.length;b++)a[b]>a[c]&&(c=b);return c},max:function(a){var b,c=0;for(b=0;b<a.length;b++)a[b]>c&&(c=a[b]);return c}}}),c("cv_utils",["cluster","glMatrixAddon","array_helper"],function(a,b,c){var e={};return e.imageRef=function(a,b){var c={x:a,y:b,toVec2:function(){return i.create([this.x,this.y])},toVec3:function(){return d.create([this.x,this.y,1])},round:function(){return this.x=Math.floor(this.x>0?this.x+.5:this.x-.5),this.y=Math.floor(this.y>0?this.y+.5:this.y-.5),this}};return c},e.computeIntegralImage2=function(a,b){var c,d,e=a.data,f=a.size.x,g=a.size.y,h=b.data,i=0,j=0,k=0,l=0,m=0;for(k=f,i=0,d=1;g>d;d++)i+=e[j],h[k]+=i,j+=f,k+=f;for(j=0,k=1,i=0,c=1;f>c;c++)i+=e[j],h[k]+=i,j++,k++;for(d=1;g>d;d++)for(j=d*f+1,k=(d-1)*f+1,l=d*f,m=(d-1)*f,c=1;f>c;c++)h[j]+=e[j]+h[k]+h[l]-h[m],j++,k++,l++,m++},e.computeIntegralImage=function(a,b){for(var c=a.data,d=a.size.x,e=a.size.y,f=b.data,g=0,h=0;d>h;h++)g+=c[h],f[h]=g;for(var i=1;e>i;i++){g=0;for(var j=0;d>j;j++)g+=c[i*d+j],f[i*d+j]=g+f[(i-1)*d+j]}},e.thresholdImage=function(a,b,c){c||(c=a);for(var d=a.data,e=d.length,f=c.data;e--;)f[e]=d[e]<b?0:1},e.computeHistogram=function(a){var b,c=a.data,d=c.length,e=new Int32Array(256);for(b=0;256>b;b++)e[b]=0;for(;d--;)e[c[d]]++;return e},e.otsuThreshold=function(a,b){function d(a,b){var c,d=0;for(c=a;b>=c;c++)d+=h[c];return d}function f(a,b){var c,d=0;for(c=a;b>=c;c++)d+=c*h[c];return d}function g(){var b,g,i,j,k,l,m,n=[0];for(h=e.computeHistogram(a),j=1;255>j;j++)b=d(0,j),g=d(j+1,255),i=b*g,0===i&&(i=1),k=f(0,j)*g,l=f(j+1,255)*b,m=k-l,n[j]=m*m/i;return c.maxIndex(n)}var h,i;return i=g(),e.thresholdImage(a,i,b),i},e.computeBinaryImage=function(a,b,c){e.computeIntegralImage(a,b),c||(c=a);var d,f,g,h,i,j,k,l=a.data,m=c.data,n=a.size.x,o=a.size.y,p=b.data,q=0,r=3,s=(2*r+1)*(2*r+1);for(d=0;r>=d;d++)for(f=0;n>f;f++)m[d*n+f]=0,m[(o-1-d)*n+f]=0;for(d=r;o-r>d;d++)for(f=0;r>=f;f++)m[d*n+f]=0,m[d*n+(n-1-f)]=0;for(d=r+1;o-r-1>d;d++)for(f=r+1;n-r>f;f++)g=p[(d-r-1)*n+(f-r-1)],h=p[(d-r-1)*n+(f+r)],i=p[(d+r)*n+(f-r-1)],j=p[(d+r)*n+(f+r)],q=j-i-h+g,k=q/s,m[d*n+f]=l[d*n+f]>k+5?0:1},e.cluster=function(b,c,d){function e(a){var b=!1;for(g=0;g<j.length;g++)h=j[g],h.fits(a)&&(h.add(a),b=!0);return b}var f,g,h,i,j=[];for(d||(d="rad"),f=0;f<b.length;f++)i=a.createPoint(b[f],f,d),e(i)||j.push(a.create(i,c));return j},e.Tracer={trace:function(a,b){function c(c,d){function e(a,b){return a.x>b.x-j&&a.x<b.x+j&&a.y>b.y-k&&a.y<b.y+k?!0:!1}var f,g,h,i,j=1,k=Math.abs(b[1]/10),l=!1;for(f=a[c],i=d?{x:f.x+b[0],y:f.y+b[1]}:{x:f.x-b[0],y:f.y-b[1]},h=d?c+1:c-1,g=a[h];g&&(l=e(g,i))!==!0&&Math.abs(g.y-f.y)<b[1];)h=d?h+1:h-1,g=a[h];return l?h:null}var d,e=10,f=[],g=[],h=0,i=0;for(d=0;e>d;d++){for(h=Math.floor(Math.random()*a.length),f=[],i=h,f.push(a[i]);null!==(i=c(i,!0));)f.push(a[i]);if(h>0)for(i=h;null!==(i=c(i,!1));)f.push(a[i]);f.length>g.length&&(g=f)}return g}},e.DILATE=1,e.ERODE=2,e.dilate=function(a,b){var c,d,e,f,g,h,i,j=a.data,k=b.data,l=a.size.y,m=a.size.x;for(c=1;l-1>c;c++)for(d=1;m-1>d;d++)f=c-1,g=c+1,h=d-1,i=d+1,e=j[f*m+h]+j[f*m+i]+j[c*m+d]+j[g*m+h]+j[g*m+i],k[c*m+d]=e>0?1:0},e.erode=function(a,b){var c,d,e,f,g,h,i,j=a.data,k=b.data,l=a.size.y,m=a.size.x;for(c=1;l-1>c;c++)for(d=1;m-1>d;d++)f=c-1,g=c+1,h=d-1,i=d+1,e=j[f*m+h]+j[f*m+i]+j[c*m+d]+j[g*m+h]+j[g*m+i],k[c*m+d]=5===e?1:0},e.subtract=function(a,b,c){c||(c=a);for(var d=a.data.length,e=a.data,f=b.data,g=c.data;d--;)g[d]=e[d]-f[d]},e.bitwiseOr=function(a,b,c){c||(c=a);for(var d=a.data.length,e=a.data,f=b.data,g=c.data;d--;)g[d]=e[d]||f[d]},e.countNonZero=function(a){for(var b=a.data.length,c=a.data,d=0;b--;)d+=c[b];return d},e.topGeneric=function(a,b,c){var d,e,f,g,h=0,i=0,j=[];for(d=0;b>d;d++)j[d]={score:0,item:null};for(d=0;d<a.length;d++)if(e=c.apply(this,[a[d]]),e>i)for(f=j[h],f.score=e,f.item=a[d],i=Number.MAX_VALUE,g=0;b>g;g++)j[g].score<i&&(i=j[g].score,h=g);return j},e.grayArrayFromImage=function(a,b,c,d){c.drawImage(a,b,0,a.width,a.height);var f=c.getImageData(b,0,a.width,a.height).data;e.computeGray(f,d)},e.grayArrayFromContext=function(a,b,c,d){var f=a.getImageData(c.x,c.y,b.x,b.y).data;e.computeGray(f,d)},e.grayAndHalfSampleFromCanvasData=function(a,b,c){for(var d,e=0,f=b.x,g=Math.floor(a.length/4),h=b.x/2,i=0,j=b.x;g>f;){for(d=0;h>d;d++)c[i]=Math.floor((.299*a[4*e+0]+.587*a[4*e+1]+.114*a[4*e+2]+(.299*a[4*(e+1)+0]+.587*a[4*(e+1)+1]+.114*a[4*(e+1)+2])+(.299*a[4*f+0]+.587*a[4*f+1]+.114*a[4*f+2])+(.299*a[4*(f+1)+0]+.587*a[4*(f+1)+1]+.114*a[4*(f+1)+2]))/4),i++,e+=2,f+=2;e+=j,f+=j}},e.computeGray=function(a,b){var c=a.length/4,d=0;for(d=0;c>d;d++)b[d]=Math.floor(.299*a[4*d+0]+.587*a[4*d+1]+.114*a[4*d+2])},e.loadImageArray=function(a,b,c){c||(c=document.createElement("canvas"));var d=new Image;d.callback=b,d.onload=function(){c.width=this.width,c.height=this.height;var a=c.getContext("2d");a.drawImage(this,0,0);var b=new Uint8Array(this.width*this.height);a.drawImage(this,0,0);var d=a.getImageData(0,0,this.width,this.height).data;e.computeGray(d,b),this.callback(b,{x:this.width,y:this.height},this)},d.src=a},e.halfSample=function(a,b){for(var c=a.data,d=a.size.x,e=b.data,f=0,g=d,h=c.length,i=d/2,j=0;h>g;){for(var k=0;i>k;k++)e[j]=Math.floor((c[f]+c[f+1]+c[g]+c[g+1])/4),j++,f+=2,g+=2;f+=d,g+=d}},e.hsv2rgb=function(a,b){var c=a[0],d=a[1],e=a[2],f=e*d,g=f*(1-Math.abs(c/60%2-1)),h=e-f,i=0,j=0,k=0;return b=b||[0,0,0],60>c?(i=f,j=g):120>c?(i=g,j=f):180>c?(j=f,k=g):240>c?(j=g,k=f):300>c?(i=g,k=f):360>c&&(i=f,k=g),b[0]=255*(i+h)|0,b[1]=255*(j+h)|0,b[2]=255*(k+h)|0,b},e}),c("image_wrapper",["subImage","cv_utils","array_helper"],function(a,b,c){function d(a,b,d,e){b?this.data=b:d?(this.data=new d(a.x*a.y),d===Array&&e&&c.init(this.data,0)):(this.data=new Uint8Array(a.x*a.y),Uint8Array===Array&&e&&c.init(this.data,0)),this.size=a}return d.prototype.inImageWithBorder=function(a,b){return a.x>=b&&a.y>=b&&a.x<this.size.x-b&&a.y<this.size.y-b},d.transform=function(a,b,c,e,f){var g,j,k,l=b.size.x,m=b.size.y,n=a.size.x,o=a.size.y,p=i.create([c[0],c[2]]),q=i.create([c[1],c[3]]),r=0,s=i.subtract(e,h.xVec2(c,f,i.create()),i.create()),t=s[0],u=s[1],v=t,w=u,x=d.sample;p[0]<0?t+=l*p[0]:v+=l*p[0],q[0]<0?t+=m*q[0]:v+=m*q[0],p[1]<0?u+=l*p[1]:w+=l*p[1],q[1]<0?u+=m*q[1]:w+=m*q[1];var y=i.subtract(q,i.scale(p,l,i.create()),i.create());if(t>=0&&u>=0&&n-1>v&&o-1>w){for(g=s,j=0;m>j;++j,i.add(g,y))for(k=0;l>k;++k,i.add(g,p))b.set(k,j,x(a,g[0],g[1]));return 0}var z=n-1,A=o-1,B=0;for(g=s,j=0;m>j;++j,i.add(g,y))for(k=0;l>k;++k,i.add(g,p))0<=g[0]&&0<=g[1]&&g[0]<z&&g[1]<A?b.set(k,j,x(a,g[0],g[1])):(b.set(k,j,r),++B);return B},d.sample=function(a,b,c){var d=Math.floor(b),e=Math.floor(c),f=a.size.x,g=e*a.size.x+d,h=a.data[g+0],i=a.data[g+1],j=a.data[g+f],k=a.data[g+f+1],l=h-i;b-=d,c-=e;var m=Math.floor(b*(c*(l-j+k)-l)+c*(j-h)+h);return m},d.clearArray=function(a){for(var b=a.length;b--;)a[b]=0},d.prototype.subImage=function(b,c){return new a(b,c,this)},d.prototype.subImageAsCopy=function(a,b){var c,d,e=a.size.y,f=a.size.x;for(c=0;f>c;c++)for(d=0;e>d;d++)a.data[d*f+c]=this.data[(b.y+d)*this.size.x+b.x+c]},d.prototype.copyTo=function(a){for(var b=this.data.length,c=this.data,d=a.data;b--;)d[b]=c[b]},d.prototype.get=function(a,b){return this.data[b*this.size.x+a]},d.prototype.getSafe=function(a,b){var c;if(!this.indexMapping){for(this.indexMapping={x:[],y:[]},c=0;c<this.size.x;c++)this.indexMapping.x[c]=c,this.indexMapping.x[c+this.size.x]=c;for(c=0;c<this.size.y;c++)this.indexMapping.y[c]=c,this.indexMapping.y[c+this.size.y]=c}return this.data[this.indexMapping.y[b+this.size.y]*this.size.x+this.indexMapping.x[a+this.size.x]]},d.prototype.set=function(a,b,c){return this.data[b*this.size.x+a]=c,this},d.prototype.zeroBorder=function(){var a,b=this.size.x,c=this.size.y,d=this.data;for(a=0;b>a;a++)d[a]=d[(c-1)*b+a]=0;for(a=1;c-1>a;a++)d[a*b]=d[a*b+(b-1)]=0},d.prototype.invert=function(){for(var a=this.data,b=a.length;b--;)a[b]=a[b]?0:1},d.prototype.convolve=function(a){var b,c,d,e,f=a.length/2|0,g=0;for(c=0;c<this.size.y;c++)for(b=0;b<this.size.x;b++){for(g=0,e=-f;f>=e;e++)for(d=-f;f>=d;d++)g+=a[e+f][d+f]*this.getSafe(b+d,c+e);this.data[c*this.size.x+b]=g}},d.prototype.moments=function(a){var b,c,d,e,f,g,h,j,k,l,m,n,o=this.data,p=this.size.y,q=this.size.x,r=[],s=[],t=Math.PI,u=t/4;if(0>=a)return s;for(f=0;a>f;f++)r[f]={m00:0,m01:0,m10:0,m11:0,m02:0,m20:0,theta:0,rad:0};for(c=0;p>c;c++)for(e=c*c,b=0;q>b;b++)d=o[c*q+b],d>0&&(g=r[d-1],g.m00+=1,g.m01+=c,g.m10+=b,g.m11+=b*c,g.m02+=e,g.m20+=b*b);for(f=0;a>f;f++)g=r[f],isNaN(g.m00)||0===g.m00||(l=g.m10/g.m00,m=g.m01/g.m00,h=g.m11/g.m00-l*m,j=g.m02/g.m00-m*m,k=g.m20/g.m00-l*l,n=(j-k)/(2*h),n=.5*Math.atan(n)+(h>=0?u:-u)+t,g.theta=(180*n/t+90)%180-90,g.theta<0&&(g.theta+=180),g.rad=n>t?n-t:n,g.vec=i.create([Math.cos(n),Math.sin(n)]),s.push(g));return s},d.prototype.show=function(a,b){var c,d,e,f,g,h,i;for(b||(b=1),c=a.getContext("2d"),a.width=this.size.x,a.height=this.size.y,d=c.getImageData(0,0,a.width,a.height),e=d.data,f=0,i=0;i<this.size.y;i++)for(h=0;h<this.size.x;h++)g=i*this.size.x+h,f=this.get(h,i)*b,e[4*g+0]=f,e[4*g+1]=f,e[4*g+2]=f,e[4*g+3]=255;c.putImageData(d,0,0)},d.prototype.overlay=function(a,c,d){(!c||0>c||c>360)&&(c=360);for(var e=[0,1,1],f=[0,0,0],g=[255,255,255],h=[0,0,0],i=[],j=a.getContext("2d"),k=j.getImageData(d.x,d.y,this.size.x,this.size.y),l=k.data,m=this.data.length;m--;)e[0]=this.data[m]*c,i=e[0]<=0?g:e[0]>=360?h:b.hsv2rgb(e,f),l[4*m+0]=i[0],l[4*m+1]=i[1],l[4*m+2]=i[2],l[4*m+3]=255;j.putImageData(k,d.x,d.y)},d}),c("tracer",[],function(){var a={searchDirections:[[0,1],[1,1],[1,0],[1,-1],[0,-1],[-1,-1],[-1,0],[-1,1]],create:function(a,b){function c(a,b,c,d){var e,k,l;for(e=0;7>e;e++){if(k=a.cy+i[a.dir][0],l=a.cx+i[a.dir][1],f=k*j+l,g[f]===b&&(0===h[f]||h[f]===c))return h[f]=c,a.cy=k,a.cx=l,!0;0===h[f]&&(h[f]=d),a.dir=(a.dir+1)%8}return!1}function d(a,b,c){return{dir:c,x:a,y:b,next:null,prev:null}}function e(a,b,e,f,g){var h,i,j,k=null,l={cx:b,cy:a,dir:0};if(c(l,f,e,g)){k=d(b,a,l.dir),h=k,j=l.dir,i=d(l.cx,l.cy,0),i.prev=h,h.next=i,i.next=null,h=i;do l.dir=(l.dir+6)%8,c(l,f,e,g),j!=l.dir?(h.dir=l.dir,i=d(l.cx,l.cy,0),i.prev=h,h.next=i,i.next=null,h=i):(h.dir=j,h.x=l.cx,h.y=l.cy),j=l.dir;while(l.cx!=b||l.cy!=a);k.prev=h.prev,h.prev.next=k}return k}var f,g=a.data,h=b.data,i=this.searchDirections,j=a.size.x;return{trace:function(a,b,d,e){return c(a,b,d,e)},contourTracing:function(a,b,c,d,f){return e(a,b,c,d,f)}}}};return a}),c("rasterizer",["tracer"],function(a){var b={createContour2D:function(){return{dir:null,index:null,firstVertex:null,insideContours:null,nextpeer:null,prevpeer:null}},CONTOUR_DIR:{CW_DIR:0,CCW_DIR:1,UNKNOWN_DIR:2},DIR:{OUTSIDE_EDGE:-32767,INSIDE_EDGE:-32766},create:function(c,d){var e=c.data,f=d.data,g=c.size.x,h=c.size.y,i=a.create(c,d);return{rasterize:function(a){var c,d,j,k,l,m,n,o,p,q,r,s,t=[],u=0;for(s=0;400>s;s++)t[s]=0;for(t[0]=e[0],p=null,m=1;h-1>m;m++)for(k=0,d=t[0],l=1;g-1>l;l++)if(r=m*g+l,0===f[r])if(c=e[r],c!==d){if(0===k)j=u+1,t[j]=c,d=c,n=i.contourTracing(m,l,j,c,b.DIR.OUTSIDE_EDGE),null!==n&&(u++,k=j,o=b.createContour2D(),o.dir=b.CONTOUR_DIR.CW_DIR,o.index=k,o.firstVertex=n,o.nextpeer=p,o.insideContours=null,null!==p&&(p.prevpeer=o),p=o);else if(n=i.contourTracing(m,l,b.DIR.INSIDE_EDGE,c,k),null!==n){for(o=b.createContour2D(),o.firstVertex=n,o.insideContours=null,o.dir=0===a?b.CONTOUR_DIR.CCW_DIR:b.CONTOUR_DIR.CW_DIR,o.index=a,q=p;null!==q&&q.index!==k;)q=q.nextpeer;null!==q&&(o.nextpeer=q.insideContours,null!==q.insideContours&&(q.insideContours.prevpeer=o),q.insideContours=o)}}else f[r]=k;else f[r]===b.DIR.OUTSIDE_EDGE||f[r]===b.DIR.INSIDE_EDGE?(k=0,d=f[r]===b.DIR.INSIDE_EDGE?e[r]:t[0]):(k=f[r],d=t[k]);for(q=p;null!==q;)q.index=a,q=q.nextpeer;return{cc:p,count:u}},debug:{drawContour:function(a,c){var d,e,f,g=a.getContext("2d"),h=c;for(g.strokeStyle="red",g.fillStyle="red",g.lineWidth=1,d=null!==h?h.insideContours:null;null!==h;){switch(null!==d?(e=d,d=d.nextpeer):(e=h,h=h.nextpeer,d=null!==h?h.insideContours:null),e.dir){case b.CONTOUR_DIR.CW_DIR:g.strokeStyle="red";break;case b.CONTOUR_DIR.CCW_DIR:g.strokeStyle="blue";break;case b.CONTOUR_DIR.UNKNOWN_DIR:g.strokeStyle="green"}f=e.firstVertex,g.beginPath(),g.moveTo(f.x,f.y);do f=f.next,g.lineTo(f.x,f.y);while(f!==e.firstVertex);g.stroke()}}}}}};return b}),c("skeletonizer",[],function(){function a(a,b,c){"use asm";function d(a,b){a|=0,b|=0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;for(c=1;(c|0)<(n-1|0);c=c+1|0)for(j=j+n|0,d=1;(d|0)<(n-1|0);d=d+1|0)f=j-n|0,g=j+n|0,h=d-1|0,i=d+1|0,e=(m[a+f+h|0]|0)+(m[a+f+i|0]|0)+(m[a+j+d|0]|0)+(m[a+g+h|0]|0)+(m[a+g+i|0]|0)|0,m[b+j+d|0]=(e|0)==5?1:0}function e(a,b,c){a|=0,b|=0,c|=0;var d=0;for(d=o(n,n)|0;(d|0)>0;)d=d-1|0,m[c+d|0]=(m[a+d|0]|0)-(m[b+d|0]|0)|0}function f(a,b,c){a|=0,b|=0,c|=0;var d=0;for(d=o(n,n)|0;(d|0)>0;)d=d-1|0,m[c+d|0]=m[a+d|0]|0|(m[b+d|0]|0)|0}function g(a){a|=0;var b=0,c=0;for(c=o(n,n)|0;(c|0)>0;)c=c-1|0,b=(b|0)+(m[a+c|0]|0)|0;return b|0}function h(a,b){a|=0,b|=0;var c=0;for(c=o(n,n)|0;(c|0)>0;)c=c-1|0,m[a+c|0]=b}function i(a,b){a|=0,b|=0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;for(c=1;(c|0)<(n-1|0);c=c+1|0)for(j=j+n|0,d=1;(d|0)<(n-1|0);d=d+1|0)f=j-n|0,g=j+n|0,h=d-1|0,i=d+1|0,e=(m[a+f+h|0]|0)+(m[a+f+i|0]|0)+(m[a+j+d|0]|0)+(m[a+g+h|0]|0)+(m[a+g+i|0]|0)|0,m[b+j+d|0]=(e|0)>0?1:0}function j(a,b){a|=0,b|=0;var c=0;for(c=o(n,n)|0;(c|0)>0;)c=c-1|0,m[b+c|0]=m[a+c|0]|0}function k(a){a|=0;var b=0,c=0;for(b=0;(b|0)<(n-1|0);b=b+1|0)m[a+b|0]=0,m[a+c|0]=0,c=c+n-1|0,m[a+c|0]=0,c=c+1|0;for(b=0;(b|0)<(n|0);b=b+1|0)m[a+c|0]=0,c=c+1|0}function l(){var a=0,b=0,c=0,l=0,m=0,p=0;b=o(n,n)|0,c=b+b|0,l=c+b|0,h(l,0),k(a);do d(a,b),i(b,c),e(a,c,c),f(l,c,l),j(b,a),m=g(a)|0,p=(m|0)==0|0;while(!p)}var m=new a.Uint8Array(c),n=b.size|0,o=a.Math.imul;return{skeletonize:l}}return a}),c("image_debug",[],function(){return{drawRect:function(a,b,c,d){c.strokeStyle=d.color,c.fillStyle=d.color,c.lineWidth=1,c.beginPath(),c.strokeRect(a.x,a.y,b.x,b.y)},drawPath:function(a,b,c,d){c.strokeStyle=d.color,c.fillStyle=d.color,c.lineWidth=d.lineWidth,c.beginPath(),c.moveTo(a[0][b.x],a[0][b.y]);for(var e=1;e<a.length;e++)c.lineTo(a[e][b.x],a[e][b.y]);c.closePath(),c.stroke()}}}),c("barcode_locator",["image_wrapper","cv_utils","rasterizer","tracer","skeletonizer","array_helper","image_debug"],function(a,b,c,d,e,f,g){function j(){var b;v=G?new a({x:E.size.x/2|0,y:E.size.y/2|0}):E,D={x:16*(G?1:2),y:16*(G?1:2)},I.x=v.size.x/D.x|0,I.y=v.size.y/D.y|0,C=new a(v.size,void 0,Uint8Array,!1),y=new a(D,void 0,Array,!0),b=new ArrayBuffer(D.x*D.y*16),x=new a(D,new Uint8Array(b,0,D.x*D.y)),w=new a(D,new Uint8Array(b,D.x*D.y*3,D.x*D.y),void 0,!0),F=e(window,{size:D.x},b),B=new a({x:v.size.x/x.size.x|0,y:v.size.y/x.size.y|0},void 0,Array,!0),z=new a(B.size,void 0,void 0,!0),A=new a(B.size,void 0,Int32Array,!0)}function k(){H.dom.binary=document.createElement("canvas"),H.dom.binary.className="binaryBuffer",u.showCanvas===!0&&document.querySelector("#debug").appendChild(H.dom.binary),H.ctx.binary=H.dom.binary.getContext("2d"),H.dom.binary.width=C.size.x,H.dom.binary.height=C.size.y}function l(a){var b,c,d,e,f,j,k,l=C.size.x,m=C.size.y,n=-C.size.x,o=-C.size.y;for(b=0,c=0;c<a.length;c++)e=a[c],b+=e.rad,u.showPatches&&g.drawRect(e.pos,x.size,H.ctx.binary,{color:"red"});for(b/=a.length,b=(180*b/Math.PI+90)%180-90,0>b&&(b+=180),b=(180-b)*Math.PI/180,f=h.create([Math.cos(b),-Math.sin(b),Math.sin(b),Math.cos(b)]),c=0;c<a.length;c++){for(e=a[c],d=0;4>d;d++)h.xVec2(f,e.box[d]);u.boxFromPatches.showTransformed&&g.drawPath(e.box,{x:0,y:1},H.ctx.binary,{color:"#99ff00",lineWidth:2})}for(c=0;c<a.length;c++)for(e=a[c],d=0;4>d;d++)e.box[d][0]<l&&(l=e.box[d][0]),e.box[d][0]>n&&(n=e.box[d][0]),e.box[d][1]<m&&(m=e.box[d][1]),e.box[d][1]>o&&(o=e.box[d][1]);for(j=[[l,m],[n,m],[n,o],[l,o]],u.boxFromPatches.showTransformedBox&&g.drawPath(j,{x:0,y:1},H.ctx.binary,{color:"#ff0000",lineWidth:2}),k=G?2:1,f=h.inverse(f),d=0;4>d;d++)h.xVec2(f,j[d]);for(u.boxFromPatches.showBB&&g.drawPath(j,{x:0,y:1},H.ctx.binary,{color:"#ff0000",lineWidth:2}),d=0;4>d;d++)i.scale(j[d],k);return j}function m(){b.otsuThreshold(v,C),C.zeroBorder(),u.showCanvas&&C.show(H.dom.binary,255)}function n(){var a,b,d,e,h,i,j,k,l=[];for(a=0;a<I.x;a++)for(b=0;b<I.y;b++)d=x.size.x*a,e=x.size.y*b,r(d,e),w.zeroBorder(),f.init(y.data,0),i=c.create(w,y),j=i.rasterize(0),u.showLabels&&y.overlay(H.dom.binary,Math.floor(360/j.count),{x:d,y:e}),h=y.moments(j.count),l=l.concat(s(h,[a,b],d,e));if(u.showFoundPatches)for(a=0;a<l.length;a++)k=l[a],g.drawRect(k.pos,x.size,H.ctx.binary,{color:"99ff00",lineWidth:2});return l}function o(a){var b,c,d=[],e=[];for(b=0;a>b;b++)d.push(0);for(c=A.data.length;c--;)A.data[c]>0&&d[A.data[c]-1]++;return d=d.map(function(a,b){return{val:a,label:b+1}}),d.sort(function(a,b){return b.val-a.val}),e=d.filter(function(a){return a.val>=5})}function p(a,c){var d,e,f,h,i,j=[],k=[],m=[0,1,1],n=[0,0,0];for(d=0;d<a.length;d++){for(f=A.data.length,j.length=0;f--;)A.data[f]===a[d].label&&(h=B.data[f],j.push(h));if(i=l(j),i&&(k.push(i),u.showRemainingPatchLabels))for(e=0;e<j.length;e++)h=j[e],m[0]=a[d].label/(c+1)*360,b.hsv2rgb(m,n),g.drawRect(h.pos,x.size,H.ctx.binary,{color:"rgb("+n.join(",")+")",lineWidth:2})}return k}function q(a){var c=b.cluster(a,.9),d=b.topGeneric(c,1,function(a){return a.getPoints().length}),e=[],f=[];if(1===d.length){e=d[0].item.getPoints();for(var g=0;g<e.length;g++)f.push(e[g].point)}return f}function r(a,c){C.subImageAsCopy(x,b.imageRef(a,c)),F.skeletonize(),u.showSkeleton&&w.overlay(H.dom.binary,360,b.imageRef(a,c))}function s(a,b,c,d){var e,f,g,h,j=0,k=[],l=[];if(a.length>=2){for(e=0;e<a.length;e++)a[e].m00>6&&k.push(a[e]);if(k.length>=2){for(j=k.length,g=q(k),f=0,e=0;e<g.length;e++)f+=g[e].rad;g.length>1&&g.length>=k.length/4*3&&g.length>a.length/4&&(f/=g.length,h={index:b[1]*I.x+b[0],pos:{x:c,y:d},box:[i.create([c,d]),i.create([c+x.size.x,d]),i.create([c+x.size.x,d+x.size.y]),i.create([c,d+x.size.y])],moments:g,rad:f,vec:i.create([Math.cos(f),Math.sin(f)])},l.push(h))}}return l}function t(a){function c(){var a;for(a=0;a<A.data.length;a++)if(0===A.data[a]&&1===z.data[a])return a;return A.length}function e(a){var b,c,f,g,h,j,m,n={x:a%A.size.x,y:a/A.size.x|0};if(a<A.data.length)for(f=B.data[a],A.data[a]=k,j=0;j<d.searchDirections.length;j++)c=n.y+d.searchDirections[j][0],b=n.x+d.searchDirections[j][1],h=c*A.size.x+b,0!==z.data[h]?(g=B.data[h],0===A.data[h]&&(m=Math.abs(i.dot(g.vec,f.vec)),m>l&&e(h))):A.data[h]=Number.MAX_VALUE}var h,j,k=0,l=.95,m=0,n=[0,1,1],o=[0,0,0];for(f.init(z.data,0),f.init(A.data,0),f.init(B.data,null),h=0;h<a.length;h++)j=a[h],B.data[j.index]=j,z.data[j.index]=1;for(z.zeroBorder();(m=c())<A.data.length;)k++,e(m);if(u.showPatchLabels)for(h=0;h<A.data.length;h++)A.data[h]>0&&A.data[h]<=k&&(j=B.data[h],n[0]=A.data[h]/(k+1)*360,b.hsv2rgb(n,o),g.drawRect(j.pos,x.size,H.ctx.binary,{color:"rgb("+o.join(",")+")",lineWidth:2}));return k}var u,v,w,x,y,z,A,B,C,D,E,F,G=!0,H={ctx:{binary:null},dom:{binary:null}},I={x:0,y:0};return{init:function(a,b){u=a,E=b.inputImageWrapper,j(),k()},locate:function(){var a,c=[],d=[];if(G&&b.halfSample(E,v),m(),a=n(),!(a.length<I.x*I.y*.05)){var e=t(a);return 1>=e?null:(c=o(e),0===c.length?null:d=p(c,e))}}}}),c("bresenham",[],function(){var a={},b={DIR:{UP:1,DOWN:-1}};return a.getBarcodeLine=function(a,b,c){function d(a,b){l=s[b*t+a],u+=l,v=v>l?l:v,w=l>w?l:w,r.push(l)}var e,f,g,h,i,j,k,l,m=0|b.x,n=0|b.y,o=0|c.x,p=0|c.y,q=Math.abs(p-n)>Math.abs(o-m),r=[],s=a.data,t=a.size.x,u=0,v=255,w=0;for(q&&(j=m,m=n,n=j,j=o,o=p,p=j),m>o&&(j=m,m=o,o=j,j=n,n=p,p=j),e=o-m,f=Math.abs(p-n),g=e/2|0,i=n,h=p>n?1:-1,k=m;o>k;k++)q?d(i,k):d(k,i),g-=f,0>g&&(i+=h,g+=e);return{line:r,min:v,max:w}},a.toBinaryLine=function(a){var c,d,e,f,g,h=a.min,i=a.max,j=a.line,k=h+(i-h)/2,l=[],m=(i-h)/8,n=-m;for(d=j[0]>k?b.DIR.DOWN:b.DIR.UP,l.push({pos:0,val:j[0]}),f=0;f<j.length-1;f++)c=j[f+1]-j[f],e=n>c?b.DIR.UP:c>m?b.DIR.DOWN:d,d!==e&&(l.push({pos:f,val:j[f]}),d=e);for(l.push({pos:j.length,val:j[j.length-1]}),g=l[0].pos;g<l[1].pos;g++)j[g]=j[g]>k?0:1;for(f=1;f<l.length-1;f++)for(m=l[f+1].val>l[f].val?l[f].val+(l[f+1].val-l[f].val)/2|0:l[f+1].val+(l[f].val-l[f+1].val)/2|0,g=l[f].pos;g<l[f+1].pos;g++)j[g]=j[g]>m?0:1;return{line:j,threshold:m}},a.debug={printFrequency:function(a,b){var c,d=b.getContext("2d");for(b.width=a.length,b.height=256,d.beginPath(),d.strokeStyle="blue",c=0;c<a.length;c++)d.moveTo(c,255),d.lineTo(c,255-a[c]);d.stroke(),d.closePath()},printPattern:function(a,b){var c,d=b.getContext("2d");for(b.width=a.length,d.fillColor="black",c=0;c<a.length;c++)1===a[c]&&d.fillRect(c,0,1,100)}},a}),c("barcode_decoder",["bresenham","image_debug","code_128_reader","ean_reader"],function(a,b,c,d){var e={code_128_reader:c,ean_reader:d},f={create:function(c,d){function f(){var a=document.querySelector("#debug.detection");n.dom.frequency=document.querySelector("canvas.frequency"),n.dom.frequency||(n.dom.frequency=document.createElement("canvas"),n.dom.frequency.className="frequency",a&&a.appendChild(n.dom.frequency)),n.ctx.frequency=n.dom.frequency.getContext("2d"),n.dom.pattern=document.querySelector("canvas.patternBuffer"),n.dom.pattern||(n.dom.pattern=document.createElement("canvas"),n.dom.pattern.className="patternBuffer",a&&a.appendChild(n.dom.pattern)),n.ctx.pattern=n.dom.pattern.getContext("2d"),n.dom.overlay=document.querySelector("canvas.drawingBuffer"),n.dom.overlay&&(n.ctx.overlay=n.dom.overlay.getContext("2d"))}function g(){var a;for(a=0;a<c.readers.length;a++)console.log(c.readers[a]),o.push(new e[c.readers[a]])}function h(){var a,b=[{node:n.dom.frequency,prop:c.showFrequency},{node:n.dom.pattern,prop:c.showPattern}];for(a=0;a<b.length;a++)b[a].node.style.display=b[a].prop===!0?"block":"none"}function i(a,b,c){var e={y:c*Math.sin(b),x:c*Math.cos(b)};return a[0].y-=e.y,a[0].x-=e.x,a[1].y+=e.y,a[1].x+=e.x,d.inImageWithBorder(a[0],0)&&d.inImageWithBorder(a[1],0)?a:null}function j(a){return[{x:(a[1][0]-a[0][0])/2+a[0][0],y:(a[1][1]-a[0][1])/2+a[0][1]},{x:(a[3][0]-a[2][0])/2+a[2][0],y:(a[3][1]-a[2][1])/2+a[2][1]}]}function k(e){var f,g=null,h=a.getBarcodeLine(d,e[0],e[1]);for(c.showFrequency&&(b.drawPath(e,{x:"x",y:"y"},n.ctx.overlay,{color:"red",lineWidth:3}),a.debug.printFrequency(h.line,n.dom.frequency)),a.toBinaryLine(h),c.showPattern&&a.debug.printPattern(h.line,n.dom.pattern),f=0;f<o.length&&null===g;f++)g=o[f].decodePattern(h.line),null!==g&&(p=o[f]);return null===g?null:{codeResult:g,barcodeLine:h}}function l(a,b,c){var d,e,f,g=Math.sqrt(Math.pow(a[1][0]-a[0][0],2)+Math.pow(a[1][1]-a[0][1],2)),h=16,i=null,j=Math.sin(c),l=Math.cos(c);for(d=1;h>d&&null===i;d++)e=g/h*d*(d%2===0?-1:1),f={y:e*j,x:e*l},b[0].y+=f.x,b[0].x-=f.y,b[1].y+=f.x,b[1].x-=f.y,i=k(b);return i}function m(a){var d,e,f,g=n.ctx.overlay;return c.drawBoundingBox&&g&&b.drawPath(a,{x:0,y:1},g,{color:"blue",lineWidth:2}),d=j(a),e=Math.atan2(d[1].y-d[0].y,d[1].x-d[0].x),d=i(d,e,10),null===d?null:(f=k(d),null===f&&(f=l(a,d,e)),null===f?null:(f&&c.drawScanline&&g&&b.drawPath(d,{x:"x",y:"y"},g,{color:"red",lineWidth:3}),{codeResult:f.codeResult,line:d,angle:e,pattern:f.barcodeLine.line,threshold:f.barcodeLine.threshold}))}var n={ctx:{frequency:null,pattern:null,overlay:null},dom:{frequency:null,pattern:null,overlay:null}},o=[],p=null;return f(),g(),h(),{decodeFromBoundingBox:function(a){return m(a)},decodeFromBoundingBoxes:function(a){var b,c;for(b=0;b<a.length;b++)if(c=m(a[b]),c&&c.codeResult)return c}}}};return f}),c("frame_grabber",["cv_utils"],function(a){var b={};return b.create=function(b,c){var d,e,f,g,h={},i=b.getConfig(),j=a.imageRef(b.getRealWidth(),b.getRealHeight()),k=i.size?a.imageRef(i.size,i.size):j,l=0,m=0,n=0,o=0,p=null,q=null,r=null;return i.size&&(j.x/j.y>1?(k.x=i.size,k.y=j.y/j.x*i.size):(k.y=i.size,k.x=j.x/j.y*i.size)),d=j.x,e=k.x,f=j.y,g=k.y,p=c?c:document.createElement("canvas"),p.width=k.x,p.height=k.y,q=p.getContext("2d"),r=new Uint8Array(k.x*k.y),h.attachData=function(a){r=a},h.getData=function(){return r},h.grab=function(){var c,h=i.halfSample,j=b.getFrame();return j?(q.drawImage(j,l,m,d,f,n,o,e,g),c=q.getImageData(0,0,k.x,k.y).data,h?a.grayAndHalfSampleFromCanvasData(c,k,r):a.computeGray(c,r),!0):!1},h.getSize=function(){return k},h},b}),c("html_utils",[],function(){function a(a){var b=document.createElement("div");for(b.innerHTML=a;b.firstChild;)return b.firstChild}function b(a,c){for(var d in c)try{a[d]=c[d].constructor==Object?b(a[d],c[d]):c[d]}catch(e){a[d]=c[d]}return a}return{createNode:function(b){return a(b)},mergeObjects:function(a,c){return b(a,c)}}}),c("config",[],function(){var a={inputStream:{name:"Live",type:"LiveStream"},tracking:!1,debug:!1,controls:!1,locate:!0,visual:{show:!0},decoder:{drawBoundingBox:!0,showFrequency:!1,drawScanline:!0,showPattern:!1,readers:["code_128_reader"]},locator:{showCanvas:!1,showPatches:!1,showFoundPatches:!1,showSkeleton:!1,showLabels:!1,showPatchLabels:!1,showRemainingPatchLabels:!1,boxFromPatches:{showTransformed:!1,showTransformedBox:!1,showBB:!1}}};return a}),c("events",[],function(){var a=function(){function a(a){return c[a]||(c[a]={subscribers:[]}),c[a]}function b(a,b){a.async?setTimeout(function(){a.callback.call(null,b)},4):a.callback.call(null,b)}var c={};return{subscribe:function(b,c,d){var e;if("function"==typeof c)e={callback:c,async:d};else if(e=c,!e.callback)throw"Callback was not specified on options";a(b).subscribers.push(e)},publish:function(c,d){var e,f=a(c).subscribers;for(e=0;e<f.length;e++)b(f[e],d)}}}();return a}),c("camera_access",[],function(){function a(a,b,c){navigator.getUserMedia(a,function(a){var c=window.URL&&window.URL.createObjectURL(a)||a;b.apply(null,[c])},c)}function b(b,c,d){a(b,function(a){c.src=a,c.addEventListener("loadeddata",function(){function a(){b>0?c.videoWidth>0&&c.videoHeight>0?(console.log(c.videoWidth+"px x "+c.videoHeight+"px"),d()):window.setTimeout(a,500):d("Unable to play video stream. Is webcam working?"),b--}var b=10;a()},!1),c.play()},function(a){console.log(a)})}function c(a,c){"undefined"!=typeof MediaStreamTrack.getSources?MediaStreamTrack.getSources(function(d){for(var e,f=0;f!=d.length;++f){var g=d[f];"video"==g.kind&&"environment"==g.facing&&(e=g.id)}var h={audio:!1,video:{optional:[{sourceId:e}]}};b(h,a,c)}):b({video:!0,audio:!1},a,c)}return{request:function(a,b){c(a,b)}}}),c("quagga",["code_128_reader","ean_reader","input_stream","image_wrapper","barcode_locator","barcode_decoder","frame_grabber","html_utils","config","events","camera_access"],function(a,b,c,d,e,f,g,h,j,k,l){function m(a){j=h.mergeObjects(j,a),o()}function n(){for(var a=[{node:document.querySelector("div[data-controls]"),prop:j.controls},{node:B.dom.overlay,prop:j.visual.show}],b=0;b<a.length;b++)a[b].node&&(a[b].node.style.display=a[b].prop===!0?"block":"none")}function o(){var a;if("VideoStream"==j.inputStream.type)a=document.createElement("video"),v=c.createVideoStream(a);else if("ImageStream"==j.inputStream.type)v=c.createImageStream();else if("LiveStream"==j.inputStream.type){a=document.createElement("video");var b=document.querySelector("#interactive.viewport");b&&b.appendChild(a),v=c.createLiveStream(a),l.request(a,function(a){a?console.log(a):v.trigger("canrecord")})}v.setAttribute("preload","auto"),v.setAttribute("autoplay",!0),v.setInputStream(j.inputStream),v.addEventListener("canrecord",p)}function p(){r(),q(),A=f.create(j.decoder,y),w=g.create(v,B.dom.image),w.attachData(y.data),n(),v.play(),C=!0,j.readyFunc&&j.readyFunc.apply()}function q(){var a=document.querySelector("#interactive.viewport");if(B.dom.image=document.querySelector("canvas.imgBuffer"),B.dom.image||(B.dom.image=document.createElement("canvas"),B.dom.image.className="imgBuffer",a&&"ImageStream"==j.inputStream.type&&a.appendChild(B.dom.image)),B.ctx.image=B.dom.image.getContext("2d"),B.dom.image.width=y.size.x,B.dom.image.height=y.size.y,B.dom.overlay=document.querySelector("canvas.drawingBuffer"),!B.dom.overlay){B.dom.overlay=document.createElement("canvas"),B.dom.overlay.className="drawingBuffer",a&&a.appendChild(B.dom.overlay);var b=document.createElement("br");b.setAttribute("clear","all"),a&&a.appendChild(b)}B.ctx.overlay=B.dom.overlay.getContext("2d"),B.dom.overlay.width=y.size.x,B.dom.overlay.height=y.size.y}function r(){y=new d({x:v.getWidth(),y:v.getHeight()}),console.log(v.getWidth()),console.log(v.getHeight()),z=[i.create([20,v.getHeight()/2-100]),i.create([20,v.getHeight()/2+100]),i.create([v.getWidth()-20,v.getHeight()/2+100]),i.create([v.getWidth()-20,v.getHeight()/2-100])],e.init(j.locator,{inputImageWrapper:y})}function s(){var a;return a=j.locate?e.locate():[z]}function t(){var a,b;w.grab()&&(B.ctx.overlay.clearRect(0,0,y.size.x,y.size.y),b=s(),b&&(a=A.decodeFromBoundingBoxes(b),a&&a.codeResult&&k.publish("detected",a.codeResult.code)))}function u(){x=!1,function a(){x||("LiveStream"==j.inputStream.type&&window.requestAnimFrame(a),t())}()}var v,w,x,y,z,A,B={ctx:{image:null,overlay:null},dom:{image:null,overlay:null}},C=!1;return{init:function(a,b){m(a,b)},start:function(){console.log("Start!"),u()},stop:function(){x=!0},onDetected:function(a){k.subscribe("detected",a,!0)},isInitialized:function(){return C},canvas:B,decodeSingle:function(a,b){a.inputStream={type:"ImageStream",src:a.src,sequence:!1,size:800},a.readyFunc=function(){k.subscribe("detected",function(a){x=!0,b.call(null,a)},!0),u()},m(a)},Reader:{EANReader:b,Code128Reader:a}}}),b("quagga")}); |