!function(n){function p(n,p){if(n.length>1){for(var z={},y=0;y1)for(y=arguments[arguments.length-2],x=arguments[arguments.length-1],e=new Array(arguments.length-2),z=0;z0;)e[i-=4]=e[p=i+1]=e[z=i+2]=.3*e[i]+.59*e[p]+.11*e[z];return y.putImageData(x,0,0),n},array_group:function(n,p){var z,y,x=new Array(n.length);for(z=0;zx[i].rank?x[i].parent=e:(x[e].parent=i,x[e].rank==x[i].rank&&x[i].rank++,e=i);for(var s,t=y;x[t].parent!=-1;)s=t,t=x[t].parent,x[s].parent=e;for(t=z;x[t].parent!=-1;)s=t,t=x[t].parent,x[s].parent=e}}}var a=new Array(n.length),r=0;for(z=0;z=0&&(x[h].rank=~r++),y=~x[h].rank}a[z]=y}return{index:a,cat:r}},detect_objects:e(x,function(n,z,y,x){function e(n){var p=this.shared.canvas,z=this.shared.interval,y=this.shared.scale,x=this.shared.next,e=this.shared.scale_upto,i=new Array(4*(e+2*x)),s=new Array(4*(e+2*x));i[0]=p,s[0]={width:i[0].width,height:i[0].height,data:i[0].getContext("2d").getImageData(0,0,i[0].width,i[0].height).data};var t;for(t=1;t<=z;t++)i[4*t]=document.createElement("canvas"),i[4*t].width=Math.floor(i[0].width/Math.pow(y,t)),i[4*t].height=Math.floor(i[0].height/Math.pow(y,t)),i[4*t].getContext("2d").drawImage(i[0],0,0,i[0].width,i[0].height,0,0,i[4*t].width,i[4*t].height),s[4*t]={width:i[4*t].width,height:i[4*t].height,data:i[4*t].getContext("2d").getImageData(0,0,i[4*t].width,i[4*t].height).data};for(t=x;t=0&&(D=M[N.pz[W]][k[N.pz[W]]+N.px[W]],D=0&&(j=M[N.nz[W]][k[N.nz[W]]+N.nx[W]],j>S)){if(E<=j){H=!1;break}S=j}}C+=H?I[2*e+1]:I[2*e]}}if(C0){var e=i.array_group(n,function(n,p){var z=Math.floor(.25*n.width+.5);return p.x<=n.x+z&&p.x>=n.x-z&&p.y<=n.y+z&&p.y>=n.y-z&&p.width<=Math.floor(1.5*n.width+.5)&&Math.floor(1.5*p.width+.5)>=n.width}),s=e.cat,t=e.index,a=new Array(s+1);for(p=0;p=y&&o.push({x:(2*a[p].x+d)/(2*d),y:(2*a[p].y+d)/(2*d),width:(2*a[p].width+d)/(2*d),height:(2*a[p].height+d)/(2*d),neighbors:a[p].neighbors,confidence:a[p].confidence})}var c=[];for(p=0;p=f.x-l&&r.y>=f.y-l&&r.x+r.width<=f.x+f.width+l&&r.y+r.height<=f.y+f.height+l&&(f.neighbors>Math.max(3,r.neighbors)||r.neighbors<3)){g=!1;break}}g&&c.push(r)}return c}return n}if(void 0!==this.shared){var a=p(arguments,["canvas","cascade","interval","min_neighbors"]);this.shared.canvas=a.canvas,this.shared.interval=a.interval,this.shared.min_neighbors=a.min_neighbors,this.shared.cascade=a.cascade,this.shared.scale=Math.pow(2,1/(a.interval+1)),this.shared.next=a.interval+1,this.shared.scale_upto=Math.floor(Math.log(Math.min(a.canvas.width/a.cascade.width,a.canvas.height/a.cascade.height))/Math.log(this.shared.scale));var r;for(r=0;r