@voicenter-team/opensips-js 1.0.103 → 1.0.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/opensips-js.cjs.js
CHANGED
|
@@ -18330,7 +18330,7 @@ return a / b;`,aZ=`
|
|
|
18330
18330
|
}
|
|
18331
18331
|
`};return GS().compileAndRun(oe,[r,E,te])}function D$(){return HS()==="webgl"}function _ce(r,e,t,n,i,s,a,o,u,c,d,p){var m=a[0],_=a[1];return u===void 0&&(u=.2),c===void 0&&(c=8),d===void 0&&(d=.3),p===void 0&&(p=10),Ut(this,void 0,void 0,function(){var y,b,S,w,x;return Bt(this,function(E){switch(E.label){case 0:return y=t.filter(function(I){return I.score>=u}),D$()?(S=St(function(){var I=$$(r,e,y,n,i,s,[m,_],o,c,d,p),R=Ni().makeTensorFromDataId(I.dataId,I.shape,I.dtype);return y.map(function(P,B){return function(O,F){return St(function(){return Qt(rp(O,Nt(F)),"int32")})}(R,B)})}),[4,Promise.all(S.map(function(I){return I.data()}))]):[3,2];case 1:return b=E.sent(),S.forEach(function(I){return I.dispose()}),[3,5];case 2:return[4,r.data()];case 3:return w=E.sent(),[4,e.data()];case 4:x=E.sent(),b=function(I,R,P,B,O,F,D,L,G,j){var te=D[0],W=D[1];j===void 0&&(j=5);for(var Q=P.map(function(q){return new Uint8Array(B*O).fill(0)}),oe=L.top,Ce=L.left,fe=Dw([B,O],[te,W],L),ne=fe[0],ae=fe[1],be=O$([te,W],F)[0],Se=0;Se<B;Se+=1)for(var Me=0;Me<O;Me+=1){var ot=Se*O+Me;if(I[ot]===1){var Ve=k$({x:Me,y:Se},R,P,j,[oe,Ce],[ne,ae],be,[B,O],F,G);Ve>=0&&(Q[Ve][ot]=1)}}return Q}(w,x,y,n,i,s,[m,_],o,c),E.label=5;case 5:return[2,b.map(function(I,R){return{data:I,pose:y[R],width:i,height:n}})]}})})}function yce(r,e,t,n,i,s,a,o,u,c,d,p,m){var _=o[0],y=o[1];return c===void 0&&(c=.2),d===void 0&&(d=8),p===void 0&&(p=.3),m===void 0&&(m=10),Ut(this,void 0,void 0,function(){var b,S,w,x,E,I;return Bt(this,function(R){switch(R.label){case 0:return b=n.filter(function(P){return P.score>=c}),D$()?(w=St(function(){var P=$$(r,e,b,i,s,a,[_,y],u,d,p,m),B=Ni().makeTensorFromDataId(P.dataId,P.shape,P.dtype);return b.map(function(O,F){return function(D,L,G){return St(function(){return Rt(Ye(Qt(rp(D,Nt(G)),"int32"),bt(L,1)),1)})}(B,t,F)})}),[4,Promise.all(w.map(function(P){return P.data()}))]):[3,2];case 1:return S=R.sent(),w.forEach(function(P){return P.dispose()}),[3,6];case 2:return[4,r.data()];case 3:return x=R.sent(),[4,e.data()];case 4:return E=R.sent(),[4,t.data()];case 5:I=R.sent(),S=function(P,B,O,F,D,L,G,j,te,W,Q){var oe=j[0],Ce=j[1];Q===void 0&&(Q=5);for(var fe=F.map(function(mt){return new Int32Array(D*L).fill(-1)}),ne=te.top,ae=te.left,be=Dw([D,L],[oe,Ce],te),Se=be[0],Me=be[1],ot=O$([oe,Ce],G)[0],Ve=0;Ve<D;Ve+=1)for(var q=0;q<L;q+=1){var ue=Ve*L+q;if(P[ue]===1){var Le=k$({x:q,y:Ve},B,F,Q,[ne,ae],[Se,Me],ot,[D,L],G,W);Le>=0&&(fe[Le][ue]=O[ue])}}return fe}(x,E,I,b,i,s,a,[_,y],u,d),R.label=6;case 6:return[2,S.map(function(P,B){return{pose:b[B],data:P,height:i,width:s}})]}})})}function tv(r){return Math.floor(r/2)}var vce=function(){function r(e,t){this.priorityQueue=new Array(e),this.numberOfElements=-1,this.getElementValue=t}return r.prototype.enqueue=function(e){this.priorityQueue[++this.numberOfElements]=e,this.swim(this.numberOfElements)},r.prototype.dequeue=function(){var e=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,e},r.prototype.empty=function(){return this.numberOfElements===-1},r.prototype.size=function(){return this.numberOfElements+1},r.prototype.all=function(){return this.priorityQueue.slice(0,this.numberOfElements+1)},r.prototype.max=function(){return this.priorityQueue[0]},r.prototype.swim=function(e){for(;e>0&&this.less(tv(e),e);)this.exchange(e,tv(e)),e=tv(e)},r.prototype.sink=function(e){for(;2*e<=this.numberOfElements;){var t=2*e;if(t<this.numberOfElements&&this.less(t,t+1)&&t++,!this.less(e,t))break;this.exchange(e,t),e=t}},r.prototype.getValueAt=function(e){return this.getElementValue(this.priorityQueue[e])},r.prototype.less=function(e,t){return this.getValueAt(e)<this.getValueAt(t)},r.prototype.exchange=function(e,t){var n=this.priorityQueue[e];this.priorityQueue[e]=this.priorityQueue[t],this.priorityQueue[t]=n},r}();function bce(r,e,t,n,i,s){for(var a=s.shape,o=a[0],u=a[1],c=!0,d=Math.max(t-i,0),p=Math.min(t+i+1,o),m=d;m<p;++m){for(var _=Math.max(n-i,0),y=Math.min(n+i+1,u),b=_;b<y;++b)if(s.get(m,b,r)>e){c=!1;break}if(!c)break}return c}var P$=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]].map(function(r){var e=r[0],t=r[1];return[Cg[e],Cg[t]]}),nv=P$.map(function(r){return r[1]}),qE=P$.map(function(r){return r[0]});function sv(r,e,t,n){return{y:zE(Math.round(r.y/e),0,t-1),x:zE(Math.round(r.x/e),0,n-1)}}function KE(r,e,t,n,i,s,a,o){o===void 0&&(o=2);for(var u=n.shape,c=u[0],d=u[1],p=function(x,E,I){var R=I.shape[2]/2;return{y:I.get(E.y,E.x,x),x:I.get(E.y,E.x,R+x)}}(r,sv(e.position,s,c,d),a),m=jE(e.position,p),_=0;_<o;_++){var y=sv(m,s,c,d),b=R$(y.y,y.x,t,i);m=jE({x:y.x*s,y:y.y*s},{x:b.x,y:b.y})}var S=sv(m,s,c,d),w=n.get(S.y,S.x,t);return{position:m,part:J0[t],score:w}}function Sce(r,e,t,n,i,s){var a=e.shape[2],o=nv.length,u=new Array(a),c=r.part,d=r.score,p=N$(c,n,t);u[c.id]={score:d,part:J0[c.id],position:p};for(var m=o-1;m>=0;--m){var _=nv[m],y=qE[m];u[_]&&!u[y]&&(u[y]=KE(m,u[_],y,e,t,n,s))}for(m=0;m<o;++m)_=qE[m],y=nv[m],u[_]&&!u[y]&&(u[y]=KE(m,u[_],y,e,t,n,i));return u}function F$(r,e,t,n){var i=t.x,s=t.y;return r.some(function(a){var o,u,c,d,p,m,_=a.keypoints[n].position;return o=s,u=i,c=_.y,d=_.x,(p=c-o)*p+(m=d-u)*m<=e})}function Tce(r,e,t){var n=t.reduce(function(i,s,a){var o=s.position,u=s.score;return F$(r,e,o,a)||(i+=u),i},0);return n/t.length}function pm(r,e,t,n,i,s,a,o){a===void 0&&(a=.5),o===void 0&&(o=20);for(var u=[],c=function(y,b,S){for(var w=S.shape,x=w[0],E=w[1],I=w[2],R=new vce(x*E*I,function(D){return D.score}),P=0;P<x;++P)for(var B=0;B<E;++B)for(var O=0;O<I;++O){var F=S.get(P,B,O);F<y||bce(O,F,P,B,b,S)&&R.enqueue({score:F,part:{heatmapY:P,heatmapX:B,id:O}})}return R}(a,1,r),d=o*o;u.length<s&&!c.empty();){var p=c.dequeue();if(!F$(u,d,N$(p.part,i,e),p.part.id)){var m=Sce(p,r,e,i,t,n),_=Tce(u,d,m);u.push({keypoints:m,score:_})}}return u}var zd,wce=[-123.15,-115.9,-103.06],Cce=function(r){function e(){return r!==null&&r.apply(this,arguments)||this}return C$(e,r),e.prototype.preprocessInput=function(t){return bt(t,wce)},e.prototype.nameOutputResults=function(t){var n=t[0],i=t[1],s=t[2],a=t[3],o=t[4],u=t[5];return{offsets:o,segmentation:t[6],partHeatmaps:u,longOffsets:a,heatmap:s,displacementFwd:i,displacementBwd:n,partOffsets:t[7]}},e}(A$),XE="https://storage.googleapis.com/tfjs-models/savedmodel/bodypix/resnet50/",YE="https://storage.googleapis.com/tfjs-models/savedmodel/bodypix/mobilenet/";function ih(r){if(typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&r instanceof OffscreenCanvas||typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement)return function(e){if("offsetHeight"in e&&e.offsetHeight!==0&&"offsetWidth"in e&&e.offsetWidth!==0)return[e.offsetHeight,e.offsetWidth];if(e.height!=null&&e.width!=null)return[e.height,e.width];throw new Error("HTMLImageElement must have height and width attributes set.")}(r);if(typeof ImageData<"u"&&r instanceof ImageData)return[r.height,r.width];if(typeof HTMLVideoElement<"u"&&r instanceof HTMLVideoElement)return function(e){return e.hasAttribute("height")&&e.hasAttribute("width")?[e.height,e.width]:[e.videoHeight,e.videoWidth]}(r);if(r instanceof nn)return[r.shape[0],r.shape[1]];throw new Error("error: Unknown input type: "+r+".")}function JE(r,e){return function(t,n){return(t-1)%n==0}(r,e)?r:Math.floor(r/e)*e+1}var ah={low:"low",medium:"medium",high:"high",full:"full"},Ece=((zd={})[ah.low]=.25,zd[ah.medium]=.5,zd[ah.high]=.75,zd[ah.full]=1,zd);function mm(r,e,t){var n=t[0],i=t[1],s=function(a){if(typeof a=="string"){var o=Ece[a];return V(typeof o=="number",function(){return"string value of inputResolution must be one of "+Object.values(ah).join(",")+" but was "+a+"."}),o}return V(typeof a=="number"&&a<=2&&a>=.1,function(){return"inputResolution must be a string or number between 0.1 and 2, but was "+a}),a}(r);return[JE(n*s,e),JE(i*s,e)]}function gc(r,e,t,n,i){var s=e[0],a=e[1],o=t[0],u=t[1],c=n[0],d=c[0],p=c[1],m=n[1],_=m[0],y=m[1];return i===void 0&&(i=!1),St(function(){var b=$u.resizeBilinear(r,[o,u],!0);return i&&(b=Ma(b)),function(S,w,x){var E=w[0],I=w[1],R=x[0],P=R[0],B=R[1],O=x[1],F=O[0],D=O[1];return St(function(){var L=$r(S);return Li($u.cropAndResize(L,[[P/(E+P+B-1),F/(I+F+D-1),(P+E-1)/(E+P+B-1),(F+I-1)/(I+F+D-1)]],[0],[E,I]),[0])})}(b,[s,a],[[d,p],[_,y]])})}function gm(r,e){var t=e[0],n=e[1],i=ih(r),s=i[0],a=i[1],o=n/t,u=[0,0,0,0],c=u[0],d=u[1],p=u[2],m=u[3];a/s<o?(c=0,d=0,p=Math.round(.5*(o*s-a)),m=Math.round(.5*(o*s-a))):(c=Math.round(.5*(1/o*a-s)),d=Math.round(.5*(1/o*a-s)),p=0,m=0);var _=St(function(){var y=function(b){return b instanceof nn?b:U0(b)}(r);return y=gT(y,[[c,d],[p,m],[0,0]]),$u.resizeBilinear(y,[t,n])});return{resized:_,padding:{top:c,left:p,right:m,bottom:d}}}function _m(r){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,Promise.all(r.map(function(t){return t.buffer()}))]})})}function ym(r,e,t,n,i){var s=e[0],a=e[1],o=t[0],u=t[1],c=function(d,p,m,_,y){return _===void 0&&(_=0),y===void 0&&(y=0),m===1&&p===1&&_===0&&y===0?d:d.map(function(b){return function(S,w,x,E,I){return E===void 0&&(E=0),I===void 0&&(I=0),{score:S.score,keypoints:S.keypoints.map(function(R){var P=R.score,B=R.part,O=R.position;return{score:P,part:B,position:{x:O.x*x+I,y:O.y*w+E}}})}}(b,p,m,_,y)})}(r,(s+n.top+n.bottom)/o,(a+n.left+n.right)/u,-n.top,-n.left);return i?function(d,p){return p<=0?d:d.map(function(m){return function(_,y){return{score:_.score,keypoints:_.keypoints.map(function(b){var S=b.score,w=b.part,x=b.position;return{score:S,part:w,position:{x:y-1-x.x,y:x.y}}})}}(m,p)})}(c,a):c}var QE={architecture:"MobileNetV1",outputStride:16,quantBytes:4,multiplier:.75},ZE=["MobileNetV1","ResNet50"],ex={MobileNetV1:[8,16,32],ResNet50:[32,16]},tx={MobileNetV1:[.5,.75,1],ResNet50:[1]},nx=[1,2,4],vm={flipHorizontal:!1,internalResolution:"medium",segmentationThreshold:.7,maxDetections:10,scoreThreshold:.4,nmsRadius:20},bm={flipHorizontal:!1,internalResolution:"medium",segmentationThreshold:.7,maxDetections:10,scoreThreshold:.4,nmsRadius:20,minKeypointScore:.3,refineSteps:10};function sx(r){var e=r.segmentationThreshold,t=r.maxDetections,n=r.scoreThreshold,i=r.nmsRadius;if(e<0||e>1)throw new Error("segmentationThreshold "+e+". Should be in range [0.0, 1.0]");if(t<=0)throw new Error("Invalid maxDetections "+t+". Should be > 0");if(n<0||n>1)throw new Error("Invalid scoreThreshold "+n+". Should be in range [0.0, 1.0]");if(i<=0)throw new Error("Invalid nmsRadius "+i+".")}function rx(r){var e=r.segmentationThreshold,t=r.maxDetections,n=r.scoreThreshold,i=r.nmsRadius,s=r.minKeypointScore,a=r.refineSteps;if(e<0||e>1)throw new Error("segmentationThreshold "+e+". Should be in range [0.0, 1.0]");if(t<=0)throw new Error("Invalid maxDetections "+t+". Should be > 0");if(n<0||n>1)throw new Error("Invalid scoreThreshold "+n+". Should be in range [0.0, 1.0]");if(i<=0)throw new Error("Invalid nmsRadius "+i+".");if(s<0||s>1)throw new Error("Invalid minKeypointScore "+s+".Should be in range [0.0, 1.0]");if(a<=0||a>20)throw new Error("Invalid refineSteps "+a+".Should be in range [1, 20]")}var M$=function(){function r(e){this.baseModel=e}return r.prototype.predictForPersonSegmentation=function(e){var t=this.baseModel.predict(e);return{segmentLogits:t.segmentation,heatmapScores:t.heatmapScores,offsets:t.offsets,displacementFwd:t.displacementFwd,displacementBwd:t.displacementBwd}},r.prototype.predictForPersonSegmentationAndPart=function(e){var t=this.baseModel.predict(e);return{segmentLogits:t.segmentation,partHeatmapLogits:t.partHeatmaps,heatmapScores:t.heatmapScores,offsets:t.offsets,displacementFwd:t.displacementFwd,displacementBwd:t.displacementBwd}},r.prototype.predictForMultiPersonInstanceSegmentationAndPart=function(e){var t=this.baseModel.predict(e);return{segmentLogits:t.segmentation,longOffsets:t.longOffsets,heatmapScores:t.heatmapScores,offsets:t.offsets,displacementFwd:t.displacementFwd,displacementBwd:t.displacementBwd,partHeatmaps:t.partHeatmaps}},r.prototype.segmentPersonActivation=function(e,t,n){var i=this;n===void 0&&(n=.5);var s=ih(e),a=s[0],o=s[1],u=mm(t,this.baseModel.outputStride,[a,o]),c=gm(e,u),d=c.resized,p=c.padding,m=St(function(){var x=i.predictForPersonSegmentation(d),E=x.segmentLogits,I=x.heatmapScores,R=x.offsets,P=x.displacementFwd,B=x.displacementBwd,O=d.shape,F=O[0],D=O[1],L=gc(E,[a,o],[F,D],[[p.top,p.bottom],[p.left,p.right]],!0);return{segmentation:fm(Li(L),n),heatmapScores:I,offsets:R,displacementFwd:P,displacementBwd:B}}),_=m.segmentation,y=m.heatmapScores,b=m.offsets,S=m.displacementFwd,w=m.displacementBwd;return d.dispose(),{segmentation:_,heatmapScores:y,offsets:b,displacementFwd:S,displacementBwd:w,padding:p,internalResolutionHeightAndWidth:u}},r.prototype.segmentPerson=function(e,t){return t===void 0&&(t=vm),Ut(this,void 0,void 0,function(){var n,i,s,a,o,u,c,d,p,m,_,y,b,S,w,x,E,I;return Bt(this,function(R){switch(R.label){case 0:return sx(t=fr(fr({},vm),t)),n=this.segmentPersonActivation(e,t.internalResolution,t.segmentationThreshold),i=n.segmentation,s=n.heatmapScores,a=n.offsets,o=n.displacementFwd,u=n.displacementBwd,c=n.padding,d=n.internalResolutionHeightAndWidth,p=i.shape,m=p[0],_=p[1],[4,i.data()];case 1:return y=R.sent(),i.dispose(),[4,_m([s,a,o,u])];case 2:return b=R.sent(),S=b[0],w=b[1],x=b[2],E=b[3],I=ym(I=pm(S,w,x,E,this.baseModel.outputStride,t.maxDetections,t.scoreThreshold,t.nmsRadius),[m,_],d,c,!1),s.dispose(),a.dispose(),o.dispose(),u.dispose(),[2,{height:m,width:_,data:y,allPoses:I}]}})})},r.prototype.segmentMultiPerson=function(e,t){return t===void 0&&(t=bm),Ut(this,void 0,void 0,function(){var n,i,s,a,o,u,c,d,p,m,_,y,b,S,w,x,E,I,R,P,B,O=this;return Bt(this,function(F){switch(F.label){case 0:return rx(t=fr(fr({},bm),t)),n=ih(e),i=n[0],s=n[1],a=mm(t.internalResolution,this.baseModel.outputStride,[i,s]),o=gm(e,a),u=o.resized,c=o.padding,d=St(function(){var D,L=O.predictForMultiPersonInstanceSegmentationAndPart(u),G=L.segmentLogits,j=L.longOffsets,te=L.heatmapScores,W=L.offsets,Q=L.displacementFwd,oe=L.displacementBwd,Ce=gc(G,[i,s],a,[[c.top,c.bottom],[c.left,c.right]],!0);return D=j,{segmentation:fm(Li(Ce),t.segmentationThreshold),longOffsets:D,heatmapScoresRaw:te,offsetsRaw:W,displacementFwdRaw:Q,displacementBwdRaw:oe}}),p=d.segmentation,m=d.longOffsets,_=d.heatmapScoresRaw,y=d.offsetsRaw,b=d.displacementFwdRaw,S=d.displacementBwdRaw,[4,_m([_,y,b,S])];case 1:return w=F.sent(),x=w[0],E=w[1],I=w[2],R=w[3],P=ym(P=pm(x,E,I,R,this.baseModel.outputStride,t.maxDetections,t.scoreThreshold,t.nmsRadius),[i,s],a,c,!1),[4,_ce(p,m,P,i,s,this.baseModel.outputStride,a,c,t.scoreThreshold,t.refineSteps,t.minKeypointScore,t.maxDetections)];case 2:return B=F.sent(),u.dispose(),p.dispose(),m.dispose(),_.dispose(),y.dispose(),b.dispose(),S.dispose(),[2,B]}})})},r.prototype.segmentPersonPartsActivation=function(e,t,n){var i=this;n===void 0&&(n=.5);var s=ih(e),a=s[0],o=s[1],u=mm(t,this.baseModel.outputStride,[a,o]),c=gm(e,u),d=c.resized,p=c.padding,m=St(function(){var x=i.predictForPersonSegmentationAndPart(d),E=x.segmentLogits,I=x.partHeatmapLogits,R=x.heatmapScores,P=x.offsets,B=x.displacementFwd,O=x.displacementBwd,F=d.shape,D=F[0],L=F[1],G=gc(E,[a,o],[D,L],[[p.top,p.bottom],[p.left,p.right]],!0),j=gc(I,[a,o],[D,L],[[p.top,p.bottom],[p.left,p.right]],!0);return{partSegmentation:fce(fm(Li(G),n),j),heatmapScores:R,offsets:P,displacementFwd:B,displacementBwd:O}}),_=m.partSegmentation,y=m.heatmapScores,b=m.offsets,S=m.displacementFwd,w=m.displacementBwd;return d.dispose(),{partSegmentation:_,heatmapScores:y,offsets:b,displacementFwd:S,displacementBwd:w,padding:p,internalResolutionHeightAndWidth:u}},r.prototype.segmentPersonParts=function(e,t){return t===void 0&&(t=vm),Ut(this,void 0,void 0,function(){var n,i,s,a,o,u,c,d,p,m,_,y,b,S,w,x,E,I;return Bt(this,function(R){switch(R.label){case 0:return sx(t=fr(fr({},vm),t)),n=this.segmentPersonPartsActivation(e,t.internalResolution,t.segmentationThreshold),i=n.partSegmentation,s=n.heatmapScores,a=n.offsets,o=n.displacementFwd,u=n.displacementBwd,c=n.padding,d=n.internalResolutionHeightAndWidth,p=i.shape,m=p[0],_=p[1],[4,i.data()];case 1:return y=R.sent(),i.dispose(),[4,_m([s,a,o,u])];case 2:return b=R.sent(),S=b[0],w=b[1],x=b[2],E=b[3],I=ym(I=pm(S,w,x,E,this.baseModel.outputStride,t.maxDetections,t.scoreThreshold,t.nmsRadius),[m,_],d,c,!1),s.dispose(),a.dispose(),o.dispose(),u.dispose(),[2,{height:m,width:_,data:y,allPoses:I}]}})})},r.prototype.segmentMultiPersonParts=function(e,t){return t===void 0&&(t=bm),Ut(this,void 0,void 0,function(){var n,i,s,a,o,u,c,d,p,m,_,y,b,S,w,x,E,I,R,P,B,O,F=this;return Bt(this,function(D){switch(D.label){case 0:return rx(t=fr(fr({},bm),t)),n=ih(e),i=n[0],s=n[1],a=mm(t.internalResolution,this.baseModel.outputStride,[i,s]),o=gm(e,a),u=o.resized,c=o.padding,d=St(function(){var L=F.predictForMultiPersonInstanceSegmentationAndPart(u),G=L.segmentLogits,j=L.longOffsets,te=L.heatmapScores,W=L.offsets,Q=L.displacementFwd,oe=L.displacementBwd,Ce=L.partHeatmaps,fe=gc(G,[i,s],a,[[c.top,c.bottom],[c.left,c.right]],!0),ne=gc(Ce,[i,s],a,[[c.top,c.bottom],[c.left,c.right]],!0),ae=j,be=fm(Li(fe),t.segmentationThreshold),Se=function(Me){var ot=Me.shape,Ve=ot[0],q=ot[1],ue=ot[2];return St(function(){var Le=I$(Me),mt=$r(Cl(0,ue,1,"int32"),1),Oe=Qt(en(Le,mt),"int32");return Te(Oe,[Ve,q])})}(ne);return{segmentation:be,longOffsets:ae,heatmapScoresRaw:te,offsetsRaw:W,displacementFwdRaw:Q,displacementBwdRaw:oe,partSegmentation:Se}}),p=d.segmentation,m=d.longOffsets,_=d.heatmapScoresRaw,y=d.offsetsRaw,b=d.displacementFwdRaw,S=d.displacementBwdRaw,w=d.partSegmentation,[4,_m([_,y,b,S])];case 1:return x=D.sent(),E=x[0],I=x[1],R=x[2],P=x[3],B=ym(B=pm(E,I,R,P,this.baseModel.outputStride,t.maxDetections,t.scoreThreshold,t.nmsRadius),[i,s],a,c,!1),[4,yce(p,m,w,B,i,s,this.baseModel.outputStride,a,c,t.scoreThreshold,t.refineSteps,t.minKeypointScore,t.maxDetections)];case 2:return O=D.sent(),u.dispose(),p.dispose(),m.dispose(),_.dispose(),y.dispose(),b.dispose(),S.dispose(),w.dispose(),[2,O]}})})},r.prototype.dispose=function(){this.baseModel.dispose()},r}();function xce(r){return Ut(this,void 0,void 0,function(){var e,t,n,i,s,a;return Bt(this,function(o){switch(o.label){case 0:if(e=r.outputStride,t=r.quantBytes,n=r.multiplier,L3==null)throw new Error(`Cannot find TensorFlow.js. If you are using a <script> tag, please also include @tensorflow/tfjs on the page before using this
|
|
18332
18332
|
model.`);return i=function(u,c,d){var p={1:"100",.75:"075",.5:"050"},m="model-stride"+u+".json";return d===4?YE+"float/"+p[c]+"/"+m:YE+"quant"+d+"/"+p[c]+"/"+m}(e,n,t),[4,Ow(r.modelUrl||i)];case 1:return s=o.sent(),a=new pce(s,e),[2,new M$(a)]}})})}function Ice(r){return Ut(this,void 0,void 0,function(){var e,t,n,i,s;return Bt(this,function(a){switch(a.label){case 0:if(e=r.outputStride,t=r.quantBytes,L3==null)throw new Error(`Cannot find TensorFlow.js. If you are using a <script> tag, please also include @tensorflow/tfjs on the page before using this
|
|
18333
|
-
model.`);return n=function(o,u){var c="model-stride"+o+".json";return u===4?XE+"float/"+c:XE+"quant"+u+"/"+c}(e,t),[4,Ow(r.modelUrl||n)];case 1:return i=a.sent(),s=new Cce(i,e),[2,new M$(s)]}})})}function Ace(r){return r===void 0&&(r=QE),Ut(this,void 0,void 0,function(){return Bt(this,function(e){return(r=function(t){if((t=t||QE).architecture==null&&(t.architecture="MobileNetV1"),ZE.indexOf(t.architecture)<0)throw new Error("Invalid architecture "+t.architecture+". Should be one of "+ZE);if(t.outputStride==null&&(t.outputStride=16),ex[t.architecture].indexOf(t.outputStride)<0)throw new Error("Invalid outputStride "+t.outputStride+". Should be one of "+ex[t.architecture]+" for architecture "+t.architecture+".");if(t.multiplier==null&&(t.multiplier=1),tx[t.architecture].indexOf(t.multiplier)<0)throw new Error("Invalid multiplier "+t.multiplier+". Should be one of "+tx[t.architecture]+" for architecture "+t.architecture+".");if(t.quantBytes==null&&(t.quantBytes=4),nx.indexOf(t.quantBytes)<0)throw new Error("Invalid quantBytes "+t.quantBytes+". Should be one of "+nx+" for architecture "+t.architecture+".");return t}(r)).architecture==="ResNet50"?[2,Ice(r)]:r.architecture==="MobileNetV1"?[2,xce(r)]:[2,null]})})}var Nb=["left_face","right_face","left_upper_arm_front","left_upper_arm_back","right_upper_arm_front","right_upper_arm_back","left_lower_arm_front","left_lower_arm_back","right_lower_arm_front","right_lower_arm_back","left_hand","right_hand","torso_front","torso_back","left_upper_leg_front","left_upper_leg_back","right_upper_leg_front","right_upper_leg_back","left_lower_leg_front","left_lower_leg_back","right_lower_leg_front","right_lower_leg_back","left_feet","right_feet"],ix=function(){function r(e){this.mask=e}return r.prototype.toCanvasImageSource=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,$w(this.mask)]})})},r.prototype.toImageData=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,this.mask]})})},r.prototype.toTensor=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,x$(this.mask)]})})},r.prototype.getUnderlyingType=function(){return"imagedata"},r}();function Rce(r){if(Y0(r),r!==255)throw new Error("Foreground id must be 255 but got "+r);return"person"}function Nce(r){if(Y0(r),r>=Nb.length)throw new Error("Invalid body part value "+r);return Nb[r]}var kce=function(){function r(e){this.bodyPixModel=e}return r.prototype.segmentPeople=function(e,t){return Ut(this,void 0,void 0,function(){var n,i,s,a;return Bt(this,function(o){switch(o.label){case 0:return e instanceof ImageBitmap&&((n=document.createElement("canvas")).getContext("2d").drawImage(e,0,0),e=n),t.segmentBodyParts?t.multiSegmentation?[4,this.bodyPixModel.segmentMultiPersonParts(e,t)]:[3,2]:[3,5];case 1:return s=o.sent(),[3,4];case 2:return[4,this.bodyPixModel.segmentPersonParts(e,t)];case 3:s=[o.sent()],o.label=4;case 4:return i=s.map(function(u){var c=u.data,d=u.width,p=u.height,m=new Uint8ClampedArray(d*p*4).fill(0);return c.forEach(function(_,y){_===-1?(m[4*y]=Nb.length,m[4*y+3]=0):(m[4*y]=_,m[4*y+3]=255)}),{maskValueToLabel:Nce,mask:new ix(new ImageData(m,d,p))}}),[3,10];case 5:return t.multiSegmentation?[4,this.bodyPixModel.segmentMultiPerson(e,t)]:[3,7];case 6:return a=o.sent(),[3,9];case 7:return[4,this.bodyPixModel.segmentPerson(e,t)];case 8:a=[o.sent()],o.label=9;case 9:i=a.map(function(u){var c=u.data,d=u.width,p=u.height,m=new Uint8ClampedArray(d*p*4).fill(0);return c.forEach(function(_,y){_===0?(m[4*y]=0,m[4*y+3]=0):(m[4*y]=255,m[4*y+3]=255)}),{maskValueToLabel:Rce,mask:new ix(new ImageData(m,d,p))}}),o.label=10;case 10:return[2,i]}})})},r.prototype.dispose=function(){this.bodyPixModel.dispose()},r.prototype.reset=function(){},r}();function Oce(r){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,Ace(r).then(function(t){return new kce(t)})]})})}var ax={runtime:"mediapipe",modelType:"general"},$ce=function(){function r(e){this.mask=e}return r.prototype.toCanvasImageSource=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,this.mask]})})},r.prototype.toImageData=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,E$(this.mask)]})})},r.prototype.toTensor=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,x$(this.mask)]})})},r.prototype.getUnderlyingType=function(){return"canvasimagesource"},r}();function Dce(r){return Y0(r),"person"}var Pce=function(){function r(e){var t,n=this;this.selfieMode=!1;var i;this.selfieSegmentationSolution=new hce.SelfieSegmentation({locateFile:(t=e.locateFile)!==null&&t!==void 0?t:function(s,a){return e.solutionPath?e.solutionPath.replace(/\/+$/,"")+"/"+s:a+"/"+s}}),e.modelType==="landscape"?i=1:i=0,this.selfieSegmentationSolution.setOptions({modelSelection:i,selfieMode:this.selfieMode}),this.selfieSegmentationSolution.onResults(function(s){n.segmentation=[{maskValueToLabel:Dce,mask:new $ce(s.segmentationMask)}]})}return r.prototype.segmentPeople=function(e,t){return Ut(this,void 0,void 0,function(){var n,i;return Bt(this,function(s){switch(s.label){case 0:return t&&t.flipHorizontal&&t.flipHorizontal!==this.selfieMode&&(this.selfieMode=t.flipHorizontal,this.selfieSegmentationSolution.setOptions({selfieMode:this.selfieMode})),e instanceof nn?(i=ImageData.bind,[4,up(e)]):[3,2];case 1:return n=new(i.apply(ImageData,[void 0,s.sent(),e.shape[1],e.shape[0]])),[3,3];case 2:n=e,s.label=3;case 3:return e=n,[4,this.selfieSegmentationSolution.send({image:e})];case 4:return s.sent(),[2,this.segmentation]}})})},r.prototype.dispose=function(){this.selfieSegmentationSolution.close()},r.prototype.reset=function(){this.selfieSegmentationSolution.reset(),this.segmentation=null,this.selfieMode=!1},r.prototype.initialize=function(){return this.selfieSegmentationSolution.initialize()},r}();function Fce(r){return Ut(this,void 0,void 0,function(){var e,t;return Bt(this,function(n){switch(n.label){case 0:return e=function(i){if(i==null)return fr({},ax);var s=fr({},i);return s.runtime="mediapipe",s.modelType==null&&(s.modelType=ax.modelType),s}(r),[4,(t=new Pce(e)).initialize()];case 1:return n.sent(),[2,t]}})})}function Mce(r,e,t,n){var i=r.width,s=r.height,a=n?-1:1,o=Math.cos(r.rotation),u=Math.sin(r.rotation),c=r.xCenter,d=r.yCenter,p=1/e,m=1/t,_=new Array(16);return _[0]=i*o*a*p,_[1]=-s*u*p,_[2]=0,_[3]=(-.5*i*o*a+.5*s*u+c)*p,_[4]=i*u*a*m,_[5]=s*o*m,_[6]=0,_[7]=(-.5*s*o-.5*i*u*a+d)*m,_[8]=0,_[9]=0,_[10]=i*p,_[11]=0,_[12]=0,_[13]=0,_[14]=0,_[15]=1,function(y){if(y.length!==16)throw new Error("Array length must be 16 but got "+y.length);return[[y[0],y[1],y[2],y[3]],[y[4],y[5],y[6],y[7]],[y[8],y[9],y[10],y[11]],[y[12],y[13],y[14],y[15]]]}(_)}function L$(r){return r instanceof nn?{height:r.shape[0],width:r.shape[1]}:{height:r.height,width:r.width}}function rv(r,e){V(r.width!==0,function(){return e+" width cannot be 0."}),V(r.height!==0,function(){return e+" height cannot be 0."})}function Lce(r,e){var t=function(n,i,s,a){var o=i-n,u=a-s;if(o===0)throw new Error("Original min and max are both "+n+", range cannot be 0.");var c=u/o;return{scale:c,offset:s-n*c}}(0,255,e[0],e[1]);return St(function(){return bt(Ye(r,t.scale),t.offset)})}function Uce(r,e,t){var n=e.outputTensorSize,i=e.keepAspectRatio,s=e.borderMode,a=e.outputTensorFloatRange,o=L$(r),u=function(m,_){return _?{xCenter:_.xCenter*m.width,yCenter:_.yCenter*m.height,width:_.width*m.width,height:_.height*m.height,rotation:_.rotation}:{xCenter:.5*m.width,yCenter:.5*m.height,width:m.width,height:m.height,rotation:0}}(o,t),c=function(m,_,y){if(y===void 0&&(y=!1),!y)return{top:0,left:0,right:0,bottom:0};var b=_.height,S=_.width;rv(_,"targetSize"),rv(m,"roi");var w,x,E=b/S,I=m.height/m.width,R=0,P=0;return E>I?(w=m.width,x=m.width*E,P=(1-I/E)/2):(w=m.height/E,x=m.height,R=(1-E/I)/2),m.width=w,m.height=x,{top:P,left:R,right:R,bottom:P}}(u,n,i),d=Mce(u,o.width,o.height,!1),p=St(function(){var m,_=(m=r)instanceof nn?m:U0(m),y=Cu(function(w,x,E){return rv(E,"inputResolution"),[1/E.width*w[0][0]*x.width,1/E.height*w[0][1]*x.width,w[0][3]*x.width,1/E.width*w[1][0]*x.height,1/E.height*w[1][1]*x.height,w[1][3]*x.height,0,0]}(d,o,n),[1,8]),b=s==="zero"?"constant":"nearest",S=$u.transform($r(Qt(_,"float32")),y,"bilinear",b,0,[n.height,n.width]);return a!=null?Lce(S,a):S});return{imageTensor:p,padding:c,transformationMatrix:d}}function Bce(r,e,t){return St(function(){var n=Li(r,[0]),i=n.shape[2];if(i===1){var s=n;switch(e.activation){case"none":break;case"sigmoid":s=Ma(s);break;case"softmax":throw new Error("Softmax activation requires two channels.");default:throw new Error("Activation not supported ("+e.activation+")")}var a=t?$u.resizeBilinear(s,[t.height,t.width]):s;return Li(a,[2])}throw new Error("Unsupported number of tensor channels "+i)})}var ox={runtime:"tfjs",modelType:"general",modelUrl:"https://tfhub.dev/mediapipe/tfjs-model/selfie_segmentation/general/1"},lx={flipHorizontal:!1},Hce={outputTensorSize:{width:256,height:256},keepAspectRatio:!1,borderMode:"zero",outputTensorFloatRange:[0,1]},Vce={outputTensorSize:{width:256,height:144},keepAspectRatio:!1,borderMode:"zero",outputTensorFloatRange:[0,1]},Gce={activation:"none"},Wce=function(){function r(e){this.mask=e}return r.prototype.toCanvasImageSource=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,$w(this.mask)]})})},r.prototype.toImageData=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,E$(this.mask)]})})},r.prototype.toTensor=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,this.mask]})})},r.prototype.getUnderlyingType=function(){return"tensor"},r}();function zce(r){return Y0(r),"person"}var Mh,jce=function(){function r(e,t){this.modelType=e,this.model=t}return r.prototype.segmentPeople=function(e,t){return Ut(this,void 0,void 0,function(){var n,i=this;return Bt(this,function(s){return t=function(a){if(a==null)return fr({},lx);var o=fr({},a);return o.flipHorizontal==null&&(o.flipHorizontal=lx.flipHorizontal),o}(t),e==null?(this.reset(),[2,[]]):(n=St(function(){var a=Uce(e,i.modelType==="general"?Hce:Vce).imageTensor,o=cn(i.model.predict(a),[0,0,0,1],-1),u=L$(e),c=Bce(o,Gce,u),d=$r(c,2),p=Gu(d,[[0,0],[0,0],[0,1]]);return pT(p,[[0,0],[0,0],[0,2]],"symmetric")}),[2,[{maskValueToLabel:zce,mask:new Wce(n)}]])})})},r.prototype.dispose=function(){this.model.dispose()},r.prototype.reset=function(){},r}();function qce(r){return Ut(this,void 0,void 0,function(){var e,t,n;return Bt(this,function(i){switch(i.label){case 0:return e=function(s){if(s==null)return fr({},ox);var a=fr({},s);if(a.runtime="tfjs",a.modelType==null&&(a.modelType=ox.modelType),a.modelType!=="general"&&a.modelType!=="landscape")throw new Error("Model type must be one of general or landscape, but got "+a.modelType);return a.modelUrl==null&&(a.modelType==="general"?a.modelUrl="https://tfhub.dev/mediapipe/tfjs-model/selfie_segmentation/general/1":a.modelUrl="https://tfhub.dev/mediapipe/tfjs-model/selfie_segmentation/landscape/1"),a}(r),t=typeof e.modelUrl=="string"&&e.modelUrl.indexOf("https://tfhub.dev")>-1,[4,Ow(e.modelUrl,{fromTFHub:t})];case 1:return n=i.sent(),[2,new jce(e.modelType,n)]}})})}function Kce(r,e){return Ut(this,void 0,void 0,function(){var t,n;return Bt(this,function(i){switch(r){case Mh.MediaPipeSelfieSegmentation:if(t=void 0,(n=e)!=null){if(n.runtime==="tfjs")return[2,qce(n)];if(n.runtime==="mediapipe")return[2,Fce(n)];t=n.runtime}throw new Error("Expect modelConfig.runtime to be either 'tfjs' or 'mediapipe', but got "+t);case Mh.BodyPix:return[2,Oce(n=e)];default:throw new Error(r+" is not a supported model name.")}})})}(function(r){r.BodyPix="BodyPix",r.MediaPipeSelfieSegmentation="MediaPipeSelfieSegmentation"})(Mh||(Mh={}));var Xce="blurred",Yce="blurred-mask",Jce="mask",Qce="draw-image",iv={};function Q0(r){if(typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&r instanceof OffscreenCanvas||typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement)return function(e){if("offsetHeight"in e&&e.offsetHeight!==0&&"offsetWidth"in e&&e.offsetWidth!==0)return[e.offsetHeight,e.offsetWidth];if(e.height!=null&&e.width!=null)return[e.height,e.width];throw new Error("HTMLImageElement must have height and width attributes set.")}(r);if(typeof ImageData<"u"&&r instanceof ImageData)return[r.height,r.width];if(typeof HTMLVideoElement<"u"&&r instanceof HTMLVideoElement)return function(e){return e.hasAttribute("height")&&e.hasAttribute("width")?[e.height,e.width]:[e.videoHeight,e.videoWidth]}(r);if(r instanceof nn)return[r.shape[0],r.shape[1]];throw new Error("error: Unknown input type: "+r+".")}function U$(r){return iv[r]||(iv[r]=function(){if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(0,0);throw new Error("Cannot create a canvas in this context")}()),iv[r]}function B$(r,e){var t=U$(e);return function(n,i){i.width=n.width,i.height=n.height,i.getContext("2d").putImageData(n,0,0)}(r,t),t}function yp(r,e,t,n,i,s){return Ut(this,void 0,void 0,function(){var a,o,u,c;return Bt(this,function(d){switch(d.label){case 0:return e instanceof nn?[4,up(e)]:[3,2];case 1:a=d.sent(),o=Q0(e),u=o[0],c=o[1],e=new ImageData(a,c,u),d.label=2;case 2:return e instanceof ImageData&&(e=B$(e,Qce)),i==null||s==null?r.drawImage(e,t,n):r.drawImage(e,t,n,i,s),[2]}})})}function Zce(r,e){return Ut(this,void 0,void 0,function(){var t,n,i;return Bt(this,function(s){switch(s.label){case 0:return t=Q0(r),n=t[0],i=t[1],e.width=i,e.height=n,[4,yp(e.getContext("2d"),r,0,0,i,n)];case 1:return s.sent(),[2]}})})}function ede(r){var e=r.getContext("2d");e.scale(-1,1),e.translate(-r.width,0)}function ux(r,e,t){return Ut(this,void 0,void 0,function(){return Bt(this,function(n){switch(n.label){case 0:return r.globalCompositeOperation=t,[4,yp(r,e,0,0)];case 1:return n.sent(),[2]}})})}function tde(r,e,t){return Ut(this,void 0,void 0,function(){var n,i,s,a,o,u,c,d;return Bt(this,function(p){switch(p.label){case 0:for(n=r.getContext("2d"),i=0,s=5,a=1/(2*Math.PI*s*s),o=t<3?1:2,c=-t;c<=t;c+=o)for(d=-t;d<=t;d+=o)u=a*Math.exp(-(d*d+c*c)/(2*s*s)),i+=u;c=-t,p.label=1;case 1:if(!(c<=t))return[3,6];d=-t,p.label=2;case 2:return d<=t?(n.globalAlpha=a*Math.exp(-(d*d+c*c)/(2*s*s))/i*t,[4,yp(n,e,d,c)]):[3,5];case 3:p.sent(),p.label=4;case 4:return d+=o,[3,2];case 5:return c+=o,[3,1];case 6:return n.globalAlpha=1,[2]}})})}function nde(r,e,t){return Ut(this,void 0,void 0,function(){var n,i,s,a;return Bt(this,function(o){switch(o.label){case 0:return n=Q0(r),i=n[0],s=n[1],a=t.getContext("2d"),t.width=s,t.height=i,a.clearRect(0,0,s,i),a.save(),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?[4,tde(t,r,e)]:[3,2];case 1:return o.sent(),[3,4];case 2:return a.filter="blur("+e+"px)",[4,yp(a,r,0,0,s,i)];case 3:o.sent(),o.label=4;case 4:return a.restore(),[2]}})})}function H$(r,e,t){return Ut(this,void 0,void 0,function(){var n;return Bt(this,function(i){switch(i.label){case 0:return n=U$(t),e!==0?[3,2]:[4,Zce(r,n)];case 1:return i.sent(),[3,4];case 2:return[4,nde(r,e,n)];case 3:i.sent(),i.label=4;case 4:return[2,n]}})})}function sde(r,e,t,n,i,s){s===void 0&&(s={r:0,g:255,b:255,a:255});for(var a=-i;a<=i;a++)for(var o=-i;o<=i;o++)if(a!==0&&o!==0){var u=(e+a)*n+(t+o);r[4*u+0]=s.r,r[4*u+1]=s.g,r[4*u+2]=s.b,r[4*u+3]=s.a}}function rde(r,e,t,n,i,s,a){a===void 0&&(a=1);for(var o=0,u=-a;u<=a;u++)for(var c=-a;c<=a;c++)if(u!==0&&c!==0){var d=(e+u)*n+(t+c);(!i[r[4*d]]||r[4*d+3]<s)&&(o+=1)}return o>0}function V$(r,e,t,n,i,s){return e===void 0&&(e={r:0,g:0,b:0,a:0}),t===void 0&&(t={r:0,g:0,b:0,a:255}),n===void 0&&(n=!1),i===void 0&&(i=.5),s===void 0&&(s=Array.from(Array(256).keys())),Ut(this,void 0,void 0,function(){var a,o,u,c,d,p,m,_,y,b,S,w,x,E;return Bt(this,function(I){switch(I.label){case 0:return(a=Array.isArray(r)?r:[r]).length===0?[2,null]:[4,Promise.all(a.map(function(R){return R.mask.toImageData()}))];case 1:for(o=I.sent(),u=o[0],c=u.width,d=u.height,p=new Uint8ClampedArray(c*d*4),m=Math.round(255*i),_=new Array(256).fill(!1),s.forEach(function(R){return _[R]=!0}),y=0;y<d;y++)for(b=0;b<c;b++)for(p[4*(S=y*c+b)+0]=t.r,p[4*S+1]=t.g,p[4*S+2]=t.b,p[4*S+3]=t.a,w=0,x=o;w<x.length;w++)E=x[w],_[E.data[4*S]]&&E.data[4*S+3]>=m&&(p[4*S]=e.r,p[4*S+1]=e.g,p[4*S+2]=e.b,p[4*S+3]=e.a,n&&y-1>=0&&y+1<d&&b-1>=0&&b+1<c&&rde(E.data,y,b,c,_,m)&&sde(p,y,b,c,1));return[2,new ImageData(p,c,d)]}})})}function ide(r,e,t){return Ut(this,void 0,void 0,function(){var n,i;return Bt(this,function(s){switch(s.label){case 0:return[4,V$(r,{r:0,g:0,b:0,a:255},{r:0,g:0,b:0,a:0},!1,e)];case 1:return n=s.sent(),i=B$(n,Jce),t===0?[2,i]:[2,H$(i,t,Yce)]}})})}function ade(r,e,t,n,i,s,a){return n===void 0&&(n=.5),i===void 0&&(i=3),s===void 0&&(s=3),a===void 0&&(a=!1),Ut(this,void 0,void 0,function(){var o,u,c,d,p,m;return Bt(this,function(_){switch(_.label){case 0:return[4,H$(e,i,Xce)];case 1:return o=_.sent(),r.width=o.width,r.height=o.height,u=r.getContext("2d"),Array.isArray(t)&&t.length===0?(u.drawImage(o,0,0),[2]):[4,ide(t,n,s)];case 2:return c=_.sent(),u.save(),a&&ede(r),d=Q0(e),p=d[0],m=d[1],[4,yp(u,e,0,0,m,p)];case 3:return _.sent(),[4,ux(u,c,"destination-in")];case 4:return _.sent(),[4,ux(u,o,"destination-over")];case 5:return _.sent(),u.restore(),[2]}})})}const cx={runtime:"mediapipe",modelType:"general"},ode={WEBGL_PACK:!0,WEBGL_VERSION:2,WEBGL_CPU_FORWARD:!1},lde={targetFPS:60},ude={foregroundThreshold:.5,maskOpacity:.7,maskBlur:0,pixelCellWidth:10,backgroundBlur:15,edgeBlur:3},av={WEBGL_VERSION:[1,2],WASM_HAS_SIMD_SUPPORT:[!0,!1],WASM_HAS_MULTITHREAD_SUPPORT:[!0,!1],WEBGL_CPU_FORWARD:[!0,!1],WEBGL_PACK:[!0,!1],WEBGL_FORCE_F16_TEXTURES:[!0,!1],WEBGL_RENDER_FLOAT32_CAPABLE:[!0,!1],WEBGL_FLUSH_THRESHOLD:[-1,0,.25,.5,.75,1,1.25,1.5,1.75,2],CHECK_COMPUTATION_FOR_ERRORS:[!0,!1]},ov={bokehEffect:"bokehEffect",backgroundImageEffect:"backgroundImageEffect"};async function cde(r){if(r!=null){if(typeof r!="object")throw new Error(`An object is expected, while a(n) ${typeof r} is found.`);for(const e in r){if(!(e in av))throw new Error(`${e} is not a tunable or valid environment flag.`);if(av[e].indexOf(r[e])===-1)throw new Error(`${e} value is expected to be in the range [${av[e]}], while ${r[e]} is found.`)}de().setFlags(r)}}class Pw{constructor(){this.video=null,this.canvas=null,this.wrapperEl=null,this.ctx=null;const e=document.createElement("video");e.setAttribute("id","video"),e.setAttribute("playsinline",""),e.style.setProperty("visibility","hidden"),e.style.setProperty("width","auto"),e.style.setProperty("height","auto"),this.video=e;const t=document.createElement("canvas");t.setAttribute("id","output"),t.style.setProperty("visibility","hidden"),this.canvas=t;const n=document.createElement("div");n.classList.add("canvas-wrapper"),n.style.setProperty("display","none"),n.appendChild(e),n.appendChild(t),this.wrapperEl=n,document.body.appendChild(n),this.ctx=this.canvas.getContext("2d")}static async setupCamera(e){e.getAudioTracks().forEach(s=>{s.stop(),e.removeTrack(s)});const t=new Pw;t.video.srcObject=e,t.video.volume=0,await new Promise(s=>{t.video.onloadedmetadata=()=>{s(t.video)}}),t.video.play();const n=t.video.videoWidth,i=t.video.videoHeight;return t.video.width=n,t.video.height=i,t.canvas.width=n,t.canvas.height=i,t.wrapperEl.style.setProperty("width",`${n}px`),t.wrapperEl.style.setProperty("height",`${i}px`),t}cleanCamera(){this.ctx=null,this.wrapperEl.remove()}drawToCanvas(e){this.ctx.drawImage(e,0,0,this.video.videoWidth,this.video.videoHeight)}drawFromVideo(e){e.drawImage(this.video,0,0,this.video.videoWidth,this.video.videoHeight)}clearCtx(){this.ctx.clearRect(0,0,this.video.videoWidth,this.video.videoHeight)}}function dx(r,e={}){const t={};return Object.keys(r).forEach(n=>{t[n]=e[n]!==void 0?e[n]:r[n]}),t}function dde(r){return new Promise((e,t)=>{const n=new Image;n.onload=()=>{e(n)},n.onerror=i=>{t(i)},n.src=r})}function hde(r){return setTimeout(r,1e3/30)}class G${constructor(e){this.opensips=null,this.session=null,this.name=null,this.name=e}setOpensips(e){this.opensips=e}setSession(e){this.session=e}kill(){this.opensips.kill(this.name)}}class Z0 extends G${constructor(e,t,n={}){super(e),this.stream=null,this.running=!1,this.immediate=!1,this.type="video",this.immediate=n.immediate||!1,this.type=t}start(e){return e}stop(){throw new Error("stop method is not implemented")}async process(e){if(this.immediate){const t=await this.start(e);return this.running=!0,t}return e}async connect(){this.running=!0,await this.session.resyncPlugins(this.type)}terminate(){this.stop()}async kill(){this.stop(),this.running=!1,await this.session.resyncPlugins(this.type)}}Dle(`https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${Fle}/dist/`);class fde extends Z0{constructor(e,t){super("StreamMask","video",t),this.visualizationConfig={},this.maskEffectType=null,this.base64ImageMask=null,this.rafId=null,this.timeoutId=null,this.segmenter=null,this.visibilityState=null;const{visualizationConfig:n,effect:i,base64Image:s}=e;if(this.visualizationConfig=dx(ude,n),i===ov.backgroundImageEffect&&!s)throw new Error("Error when starting mask effect: base64Image option is required for backgroundImageEffect effect type");s&&(this.base64ImageMask=s),this.maskEffectType=i}async start(e){this.canvas=document.createElement("canvas"),this.ctx=this.canvas.getContext("2d"),this.camera=await Pw.setupCamera(e),this.canvas.width=this.camera.canvas.width,this.canvas.height=this.camera.canvas.height,await cde(ode),this.segmenter=await this.createSegmenter(),this.processVisibilityChange(),this.renderPrediction();const t=this.canvas.captureStream(lde.targetFPS);return await this.populateWithAudioTracks(t,e.getAudioTracks())}processVisibilityChange(){document&&(this.visibilityState=document.visibilityState,document.addEventListener("visibilitychange",()=>{this.visibilityState=document.visibilityState,document.visibilityState==="hidden"&&this.renderPrediction()}))}async populateWithAudioTracks(e,t){const n=new MediaStream;return e.getVideoTracks().forEach(i=>{n.addTrack(i)}),t.forEach(i=>{n.addTrack(i)}),n}stop(){this.rafId&&window.cancelAnimationFrame(this.rafId),this.timeoutId&&clearTimeout(this.timeoutId),this.segmenter&&this.segmenter.dispose(),this.camera&&this.camera.cleanCamera(),this.rafId=null,this.timeoutId=null,this.segmenter=null,this.camera=null,this.canvas=null,this.ctx=null}setupVisualizationConfig(e){this.visualizationConfig=dx(this.visualizationConfig,e)}async renderPrediction(){await this.renderResult(),this.visibilityState==="visible"?(this.timeoutId&&clearTimeout(this.timeoutId),this.rafId=requestAnimationFrame(this.renderPrediction.bind(this))):(this.rafId&&window.cancelAnimationFrame(this.rafId),this.timeoutId=hde(this.renderPrediction.bind(this)))}async createSegmenter(){return Kce(Mh.MediaPipeSelfieSegmentation,{runtime:cx.runtime,modelType:cx.modelType,solutionPath:"https://cdn.jsdelivr.net/npm/@mediapipe/selfie_segmentation@0.1.1675465747"})}async renderResult(){this.camera.video.readyState<2&&await new Promise(t=>{this.camera.video.onloadeddata=()=>{t(this.camera.video)}});let e=null;if(this.segmenter!=null){try{this.segmenter.segmentPeople!=null?e=await this.segmenter.segmentPeople(this.camera.video,{flipHorizontal:!1,multiSegmentation:!1,segmentBodyParts:!0,segmentationThreshold:this.visualizationConfig.foregroundThreshold}):(e=await this.segmenter.estimatePoses(this.camera.video,{flipHorizontal:!1}),e=e.map(n=>n.segmentation))}catch(n){this.segmenter.dispose(),this.segmenter=null,alert(n)}const t=window.exposedContext;t&&t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,new Uint8Array(4))}if(e&&e.length>0)switch(this.maskEffectType){case ov.bokehEffect:console.log("applyBokehEffect"),await this.applyBokehEffect(e);break;case ov.backgroundImageEffect:await this.applyBackgroundImageEffect(e);break;default:console.error("Error when applying mask effect: such mask effect doesn't exist")}this.camera.drawToCanvas(this.canvas)}async applyBokehEffect(e){const t=this.visualizationConfig;await ade(this.canvas,this.camera.video,e,t.foregroundThreshold,t.backgroundBlur,t.edgeBlur)}async applyBackgroundImageEffect(e){const t=this.base64ImageMask,n=new Image;n.src=t;const i=this.canvas.getContext("2d"),a=await V$(e,{r:0,g:0,b:0,a:0},{r:0,g:0,b:0,a:255});a&&(i.putImageData(a,0,0),i.globalCompositeOperation="source-in",n.complete?i.drawImage(n,0,0,this.canvas.width,this.canvas.height):n.onload=()=>{i.drawImage(n,0,0,this.canvas.width,this.canvas.height)},i.globalCompositeOperation="destination-over",i.drawImage(this.camera.video,0,0,this.canvas.width,this.canvas.height),i.globalCompositeOperation="source-over")}}const Ie=new Fg("JanusSession"),pde="/opt/recordings/",$e={STATUS_NULL:0,STATUS_INVITE_SENT:1,STATUS_1XX_RECEIVED:2,STATUS_INVITE_RECEIVED:3,STATUS_WAITING_FOR_ANSWER:4,STATUS_ANSWERED:5,STATUS_WAITING_FOR_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9},Sm=["audio","video"];class Eg extends Ds.EventEmitter{static get C(){return $e}constructor(e){Ie.debug("new"),super(),console.log("constructor call"),this._id=null,this._ua=e,this._status=$e.STATUS_NULL,this._dialog=null,this._earlyDialogs={},this._contact=null,this._from_tag=null,this._to_tag=null,this.lastTransaction=0,this._connection=null,this._connectionPromiseQueue=Promise.resolve(),this._request=null,this._is_canceled=!1,this._cancel_reason="",this._is_confirmed=!1,this._late_sdp=!1,this._rtcOfferConstraints=null,this._rtcAnswerConstraints=null,this._localMediaStream=null,this._localMediaStreamLocallyGenerated=!1,this._rtcReady=!0,this._iceReady=!1,this._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},this._direction=null,this._local_identity=null,this._remote_identity=null,this._start_time=null,this._end_time=null,this._audioMuted=!1,this._videoMuted=!1,this._localHold=!1,this._remoteHold=!1,this._sessionTimers={enabled:this._ua.configuration.session_timers,refreshMethod:this._ua.configuration.session_timers_refresh_method,defaultExpires:ye.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},this._referSubscribers={},this._candidates=[],this.publishers=[],this.private_id=null,this.memberList={},this.myFeedList=[],this.display_name="",this.stunServers=[{urls:"stun:turn.voicenter.co",credential:"kxsjahnsdjns3eds23esd",username:"turn2es21e"}],this.opaque_id=this.generateOpaqueId(),this.screen_share_opaque_id=this.generateOpaqueId(),this._data={},this.isAudioOn=!0,this.isVideoOn=!0}get C(){return $e}get causes(){return ye.causes}get id(){return this._id}get connection(){return this._connection}get contact(){return this._contact}get direction(){return this._direction}get local_identity(){return this._local_identity}get remote_identity(){return this._remote_identity}get start_time(){return this._start_time}get end_time(){return this._end_time}get data(){return this._data}set data(e){this._data=e}get status(){return this._status}isInProgress(){switch(this._status){case $e.STATUS_NULL:case $e.STATUS_INVITE_SENT:case $e.STATUS_1XX_RECEIVED:case $e.STATUS_INVITE_RECEIVED:case $e.STATUS_WAITING_FOR_ANSWER:return!0;default:return!1}}isEstablished(){switch(this._status){case $e.STATUS_ANSWERED:case $e.STATUS_WAITING_FOR_ACK:case $e.STATUS_CONFIRMED:return!0;default:return!1}}isEnded(){switch(this._status){case $e.STATUS_CANCELED:case $e.STATUS_TERMINATED:return!0;default:return!1}}isMuted(){return{audio:this._audioMuted,video:this._videoMuted}}isOnHold(){return{local:this._localHold,remote:this._remoteHold}}getPTypeHeader(e){return`PTYPE: ${e}`}generateOpaqueId(){return`videoroomtest-${PC().replace(/-/g,"").slice(0,12)}`}connect(e,t,n={},i){Ie.debug("connect()"),this.display_name=t;const s=e,a=Yt.cloneObject(n.eventHandlers),o=Yt.cloneArray(n.extraHeaders),u=Yt.cloneObject(n.mediaConstraints,{audio:!0,video:!0}),c=n.mediaStream||null,d=Yt.cloneObject(n.pcConfig,{iceServers:[]}),p=n.rtcConstraints||null,m=n.rtcOfferConstraints||null;if(this._rtcOfferConstraints=m,this._rtcAnswerConstraints=n.rtcAnswerConstraints||null,this._data=n.data||this._data,e===void 0)throw new TypeError("Not enough arguments");if(this._status!==$e.STATUS_NULL)throw new ll.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new ll.NotSupportedError("WebRTC not supported");if(console.log("target",e),e=this._ua.normalizeTarget(e),console.log("normalizeTarget target",e),this.room_id=e.user,this.target=e,!e)throw new TypeError(`Invalid target: ${s}`);this._sessionTimers.enabled&&Yt.isDecimal(n.sessionTimersExpires)&&(n.sessionTimersExpires>=ye.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=n.sessionTimersExpires:this._sessionTimers.defaultExpires=ye.SESSION_EXPIRES);for(const b in a)Object.prototype.hasOwnProperty.call(a,b)&&this.on(b,a[b]);this._from_tag=Yt.newTag();const _=n.anonymous||!1,y={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:_,outbound:!0}),_?(y.from_display_name="Anonymous",y.from_uri=new ml("sip","anonymous","anonymous.invalid"),o.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`),o.push("Privacy: id")):n.fromUserName&&(y.from_uri=new ml("sip",n.fromUserName,this._ua.configuration.uri.host),o.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),n.fromDisplayName&&(y.from_display_name=n.fromDisplayName),o.push(`Contact: ${this._contact}`),o.push("Content-Type: application/json"),this._sessionTimers.enabled&&o.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher?";refresher=uac":""}`),this._request=new $s.InitialOutgoingInviteRequest(e,this._ua,y,o),this._id=this._request.call_id+this._from_tag,this._createRTCConnection(d,p),this._direction="outgoing",this._local_identity=this._request.from,this._remote_identity=this._request.to,console.log("this._remote_identity",this._remote_identity),i&&i(this),this._newJanusSession("local",this._request),this._sendInitialRequest(u,m,c)}connectScreenShare(e={}){new N8(this).connect(e)}_overrideSenderTracks(e,t){e.getTracks().forEach(n=>{t.getSenders().forEach(async s=>{s.track.kind===n.kind&&(n.kind==="audio"&&!this.isAudioOn&&(n.enabled=!1),n.kind==="video"&&!this.isVideoOn&&(n.enabled=!1),await s.replaceTrack(n))})})}init_incoming(e,t){Ie.debug("init_incoming()");let n;const i=e.hasHeader("Content-Type")?e.getHeader("Content-Type").toLowerCase():void 0;if(e.body&&i!=="application/sdp"){e.reply(415);return}if(this._status=$e.STATUS_INVITE_RECEIVED,this._from_tag=e.from_tag,this._id=e.call_id+this._from_tag,this._request=e,this._contact=this._ua.contact.toString(),e.hasHeader("expires")&&(n=e.getHeader("expires")*1e3),e.to_tag=Yt.newTag(),!this._createDialog(e,"UAS",!0)){e.reply(500,"Missing Contact header field");return}e.body?this._late_sdp=!1:this._late_sdp=!0,this._status=$e.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{e.reply(408),this._failed("local",null,ye.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),n&&(this._timers.expiresTimer=setTimeout(()=>{this._status===$e.STATUS_WAITING_FOR_ANSWER&&(e.reply(487),this._failed("system",null,ye.causes.EXPIRES))},n)),this._direction="incoming",this._local_identity=e.to,this._remote_identity=e.from,t&&t(this),this._newJanusSession("remote",e),this._status!==$e.STATUS_TERMINATED&&(e.reply(180,null,[`Contact: ${this._contact}`]),this._progress("local",null))}answer(e={}){Ie.debug("answer()");const t=this._request,n=Yt.cloneArray(e.extraHeaders),i=Yt.cloneObject(e.mediaConstraints),s=e.mediaStream||null,a=Yt.cloneObject(e.pcConfig,{iceServers:[]}),o=e.rtcConstraints||null,u=e.rtcAnswerConstraints||null,c=Yt.cloneObject(e.rtcOfferConstraints);let d,p=!1,m=!1,_=!1,y=!1;if(this._rtcAnswerConstraints=u,this._rtcOfferConstraints=e.rtcOfferConstraints||null,this._data=e.data||this._data,this._direction!=="incoming")throw new ll.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==$e.STATUS_WAITING_FOR_ANSWER)throw new ll.InvalidStateError(this._status);if(this._sessionTimers.enabled&&Yt.isDecimal(e.sessionTimersExpires)&&(e.sessionTimersExpires>=ye.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=e.sessionTimersExpires:this._sessionTimers.defaultExpires=ye.SESSION_EXPIRES),this._status=$e.STATUS_ANSWERED,!this._createDialog(t,"UAS")){t.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),n.unshift(`Contact: ${this._contact}`);const b=t.parseSDP();Array.isArray(b.media)||(b.media=[b.media]);for(const S of b.media)S.type==="audio"&&(p=!0,(!S.direction||S.direction==="sendrecv")&&(_=!0)),S.type==="video"&&(m=!0,(!S.direction||S.direction==="sendrecv")&&(y=!0));if(s&&i.audio===!1){d=s.getAudioTracks();for(const S of d)s.removeTrack(S)}if(s&&i.video===!1){d=s.getVideoTracks();for(const S of d)s.removeTrack(S)}!s&&i.audio===void 0&&(i.audio=_),!s&&i.video===void 0&&(i.video=y),!s&&!p&&!c.offerToReceiveAudio&&(i.audio=!1),!s&&!m&&!c.offerToReceiveVideo&&(i.video=!1),this._createRTCConnection(a,o),Promise.resolve().then(()=>{if(s)return s;if(i.audio||i.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(i).catch(S=>{throw this._status===$e.STATUS_TERMINATED?new Error("terminated"):(t.reply(480),this._failed("local",null,ye.causes.USER_DENIED_MEDIA_ACCESS),Ie.warn('emit "getusermediafailed" [error:%o]',S),this.emit("getusermediafailed",S),new Error("getUserMedia() failed"))})}).then(S=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");this._localMediaStream=S,S&&S.getTracks().forEach(w=>{this._connection.addTrack(w,S)})}).then(()=>{if(this._late_sdp)return;const S={originator:"remote",type:"offer",sdp:t.body};Ie.debug('emit "sdp"'),this.emit("sdp",S);const w=new RTCSessionDescription({type:"offer",sdp:S.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(w)).catch(x=>{throw t.reply(488),this._failed("system",null,ye.causes.WEBRTC_ERROR),Ie.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',x),this.emit("peerconnection:setremotedescriptionfailed",x),new Error("peerconnection.setRemoteDescription() failed")}),this._connectionPromiseQueue}).then(()=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");return this._connecting(t),this._late_sdp?this._createLocalDescription("offer",this._rtcOfferConstraints).catch(()=>{throw t.reply(500),new Error("_createLocalDescription() failed")}):this._createLocalDescription("answer",u).catch(()=>{throw t.reply(500),new Error("_createLocalDescription() failed")})}).then(S=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");this._handleSessionTimersInIncomingRequest(t,n),t.reply(200,null,n,S,()=>{this._status=$e.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(t,S),this._setACKTimer(),this._accepted("local")},()=>{this._failed("system",null,ye.causes.CONNECTION_ERROR)})}).catch(S=>{this._status!==$e.STATUS_TERMINATED&&Ie.warn(S)})}terminate(e={}){Ie.debug("terminate()");const t=e.cause||ye.causes.BYE,n=Yt.cloneArray(e.extraHeaders),i=e.body;let s,a=e.status_code,o=e.reason_phrase;if(this._status===$e.STATUS_TERMINATED)throw new ll.InvalidStateError(this._status);switch(this._status){case $e.STATUS_NULL:case $e.STATUS_INVITE_SENT:case $e.STATUS_1XX_RECEIVED:if(Ie.debug("canceling session"),a&&(a<200||a>=700))throw new TypeError(`Invalid status_code: ${a}`);a&&(o=o||ye.REASON_PHRASE[a]||"",s=`SIP ;cause=${a} ;text="${o}"`),this._status===$e.STATUS_NULL||this._status===$e.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=s):this._status===$e.STATUS_1XX_RECEIVED&&this._request.cancel(s),this._status=$e.STATUS_CANCELED,this._failed("local",null,ye.causes.CANCELED);break;case $e.STATUS_WAITING_FOR_ANSWER:case $e.STATUS_ANSWERED:if(Ie.debug("rejecting session"),a=a||480,a<300||a>=700)throw new TypeError(`Invalid status_code: ${a}`);this._request.reply(a,o,n,i),this._failed("local",null,ye.causes.REJECTED);break;case $e.STATUS_WAITING_FOR_ACK:case $e.STATUS_CONFIRMED:if(Ie.debug("terminating session"),o=e.reason_phrase||ye.REASON_PHRASE[a]||"",a&&(a<200||a>=700))throw new TypeError(`Invalid status_code: ${a}`);if(a&&n.push(`Reason: SIP ;cause=${a}; text="${o}"`),this._status===$e.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==$i.C.STATUS_TERMINATED){const u=this._dialog;this.receiveRequest=({method:c})=>{c===ye.ACK&&(this.sendRequest(ye.BYE,{extraHeaders:n,body:i}),u.terminate(),this.closeSession())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===$i.C.STATUS_TERMINATED&&(this.sendRequest(ye.BYE,{extraHeaders:n,body:i}),u.terminate(),this.closeSession())}),this._ended("local",null,t),this._dialog=u,console.log("SET DIALOG terminate"),this._ua.newDialog(u)}else{const u={janus:"leave"},c=["Content-Type: application/json",this.getPTypeHeader(hr.LEAVE)];this.sendRequest(ye.BYE,{extraHeaders:c,body:JSON.stringify(u)}),this.closeSession(),this._ended("local",null,t)}}}configureMedia(e){this.isAudioOn=e.audio,this.isVideoOn=e.video}enableAudio(e){const t={janus:"message",body:{audio:e},handle_id:this.handle_id,session_id:this.session_id},n=["Content-Type: application/json",this.getPTypeHeader(hr.AUDIO_CHANGE)];this.sendRequest(ye.INFO,{extraHeaders:n,body:JSON.stringify(t),eventHandlers:{onSuccessResponse:async i=>{i.status_code===200&&(this._ua.emit("changeAudioState",e),this.sendStateMessage({audio:e}))}}})}startAudio(){fa.toggleAudioMute(this.stream),this.enableAudio(!0),this.isAudioOn=!0}stopAudio(){fa.toggleAudioMute(this.stream),this.enableAudio(!1),this.isAudioOn=!1}enableVideo(e){const t={janus:"message",body:{video:e},handle_id:this.handle_id,session_id:this.session_id},n=["Content-Type: application/json",this.getPTypeHeader(hr.VIDEO_CHANGE)];this.sendRequest(ye.INFO,{extraHeaders:n,body:JSON.stringify(t),eventHandlers:{onSuccessResponse:async i=>{i.status_code===200&&(this._ua.emit("changeVideoState",e),this.sendStateMessage({video:e}))}}})}startVideo(){fa.toggleVideoMute(this.stream),this.enableVideo(!0),this.isVideoOn=!0}stopVideo(){fa.toggleVideoMute(this.stream),this.enableVideo(!1),this.isVideoOn=!1}sendStateMessage(e){const t={janus:"message",body:{request:"state",data:e},handle_id:this.handle_id,session_id:this.session_id},n=["Content-Type: application/json",this.getPTypeHeader(hr.STATE)];this.sendRequest(ye.INFO,{extraHeaders:n,body:JSON.stringify(t)})}sendInfo(e,t,n={}){if(Ie.debug("sendInfo()"),this._status!==$e.STATUS_CONFIRMED&&this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_1XX_RECEIVED)throw new ll.InvalidStateError(this._status);new Uv(this).send(e,t,n)}mute(e={audio:!0,video:!1}){Ie.debug("mute()");let t=!1,n=!1;this._audioMuted===!1&&e.audio&&(t=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&e.video&&(n=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(t===!0||n===!0)&&this._onmute({audio:t,video:n})}unmute(e={audio:!0,video:!0}){Ie.debug("unmute()");let t=!1,n=!1;this._audioMuted===!0&&e.audio&&(t=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&e.video&&(n=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(t===!0||n===!0)&&this._onunmute({audio:t,video:n})}hold(e={},t){if(Ie.debug("hold()"),this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED||this._localHold===!0||!this._isReadyToReOffer())return!1;this._localHold=!0,this._onhold("local");const n={succeeded:()=>{t&&t()},failed:()=>{this.terminate({cause:ye.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return e.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:n,extraHeaders:e.extraHeaders}):this._sendReinvite({eventHandlers:n,extraHeaders:e.extraHeaders}),!0}unhold(e={},t){if(Ie.debug("unhold()"),this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED||this._localHold===!1||!this._isReadyToReOffer())return!1;this._localHold=!1,this._onunhold("local");const n={succeeded:()=>{t&&t()},failed:()=>{this.terminate({cause:ye.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return e.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:n,extraHeaders:e.extraHeaders}):this._sendReinvite({eventHandlers:n,extraHeaders:e.extraHeaders}),!0}renegotiate(e={},t){Ie.debug("renegotiate()");const n=e.rtcOfferConstraints||null;if(this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;const i={succeeded:()=>{t&&t()},failed:()=>{this.terminate({cause:ye.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),e.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:i,rtcOfferConstraints:n,extraHeaders:e.extraHeaders}):this._sendReinvite({eventHandlers:i,rtcOfferConstraints:n,extraHeaders:e.extraHeaders}),!0}refer(e,t){Ie.debug("refer()");const n=e;if(this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED)return!1;if(e=this._ua.normalizeTarget(e),!e)throw new TypeError(`Invalid target: ${n}`);const i=new xF(this);i.sendRefer(e,t);const s=i.id;return this._referSubscribers[s]=i,i.on("requestFailed",()=>{delete this._referSubscribers[s]}),i.on("accepted",()=>{delete this._referSubscribers[s]}),i.on("failed",()=>{delete this._referSubscribers[s]}),i}sendRequest(e,t){return Ie.debug("sendRequest()"),this._dialog.sendRequest(e,t)}receiveNotify(e){Ie.debug("receiveRequest()")}receiveRequest(e){if(console.log("mmm receiveRequest 1",e),Ie.debug("receiveRequest()"),e.method===ye.CANCEL)(this._status===$e.STATUS_WAITING_FOR_ANSWER||this._status===$e.STATUS_ANSWERED)&&(this._status=$e.STATUS_CANCELED,this._request.reply(487),this._failed("remote",e,ye.causes.CANCELED));else switch(e.method){case ye.ACK:if(this._status!==$e.STATUS_WAITING_FOR_ACK)return;if(this._status=$e.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!e.body){this.terminate({cause:ye.causes.MISSING_SDP,status_code:400});break}const t={originator:"remote",type:"answer",sdp:e.body};Ie.debug('emit "sdp"'),this.emit("sdp",t);const n=new RTCSessionDescription({type:"answer",sdp:t.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(n)).then(()=>{this._is_confirmed||this._confirmed("remote",e)}).catch(i=>{this.terminate({cause:ye.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),Ie.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',i),this.emit("peerconnection:setremotedescriptionfailed",i)})}else this._is_confirmed||this._confirmed("remote",e);break;case ye.BYE:this._status===$e.STATUS_CONFIRMED||this._status===$e.STATUS_WAITING_FOR_ACK?(e.reply(200),this._ended("remote",e,ye.causes.BYE)):this._status===$e.STATUS_INVITE_RECEIVED||this._status===$e.STATUS_WAITING_FOR_ANSWER?(e.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",e,ye.causes.BYE)):e.reply(403,"Wrong Status");break;case ye.INVITE:console.log("mmm invite 1"),this._status===$e.STATUS_CONFIRMED?e.hasHeader("replaces")?this._receiveReplaces(e):this._receiveReinvite(e):e.reply(403,"Wrong Status");break;case ye.INFO:if(this._status===$e.STATUS_1XX_RECEIVED||this._status===$e.STATUS_WAITING_FOR_ANSWER||this._status===$e.STATUS_ANSWERED||this._status===$e.STATUS_WAITING_FOR_ACK||this._status===$e.STATUS_CONFIRMED){const t=e.hasHeader("Content-Type")?e.getHeader("Content-Type").toLowerCase():void 0;t&&t.match(/^application\/dtmf-relay/i)?new mF(this).init_incoming(e):t!==void 0?new Uv(this).init_incoming(e):e.reply(415)}else e.reply(403,"Wrong Status");break;case ye.UPDATE:this._status===$e.STATUS_CONFIRMED?this._receiveUpdate(e):e.reply(403,"Wrong Status");break;case ye.REFER:this._status===$e.STATUS_CONFIRMED?this._receiveRefer(e):e.reply(403,"Wrong Status");break;case ye.NOTIFY:this._status===$e.STATUS_CONFIRMED?this._receiveNotify(e):e.reply(403,"Wrong Status");break;default:e.reply(501)}}onTransportError(){Ie.warn("onTransportError()"),this._status!==$e.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:ye.causes.CONNECTION_ERROR,cause:ye.causes.CONNECTION_ERROR})}onRequestTimeout(){Ie.warn("onRequestTimeout()"),this._status!==$e.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:ye.causes.REQUEST_TIMEOUT,cause:ye.causes.REQUEST_TIMEOUT})}onDialogError(){Ie.warn("onDialogError()"),this._status!==$e.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:ye.causes.DIALOG_ERROR,cause:ye.causes.DIALOG_ERROR})}newDTMF(e){Ie.debug("newDTMF()"),this.emit("newDTMF",e)}newInfo(e){Ie.debug("newInfo()"),this.emit("newInfo",e)}_isReadyToReOffer(){return this._rtcReady?this._dialog?this._dialog.uac_pending_reply===!0||this._dialog.uas_pending_reply===!0?(Ie.debug("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"),!1):!0:(Ie.debug("_isReadyToReOffer() | session not established yet"),!1):(Ie.debug("_isReadyToReOffer() | internal WebRTC status not ready"),!1)}_close(){if(Ie.debug("close()"),this._localMediaStream&&this._localMediaStreamLocallyGenerated&&(Ie.debug("close() | closing local MediaStream"),Yt.closeMediaStream(this._localMediaStream)),this._status!==$e.STATUS_TERMINATED){if(this._status=$e.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(e){Ie.warn("close() | error closing the RTCPeerConnection: %o",e)}for(const e in this._timers)Object.prototype.hasOwnProperty.call(this._timers,e)&&clearTimeout(this._timers[e]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const e in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,e)&&(this._earlyDialogs[e].terminate(),delete this._earlyDialogs[e]);for(const e in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,e)&&delete this._referSubscribers[e];this._ua.destroyRTCSession(this)}}_setInvite2xxTimer(e,t){let n=Pd.T1;function i(){this._status===$e.STATUS_WAITING_FOR_ACK&&(e.reply(200,null,[`Contact: ${this._contact}`],t),n<Pd.T2&&(n=n*2,n>Pd.T2&&(n=Pd.T2)),this._timers.invite2xxTimer=setTimeout(i.bind(this),n))}this._timers.invite2xxTimer=setTimeout(i.bind(this),n)}_setACKTimer(){this._timers.ackTimer=setTimeout(()=>{this._status===$e.STATUS_WAITING_FOR_ACK&&(Ie.debug("no ACK received, terminating the session"),clearTimeout(this._timers.invite2xxTimer),this.sendRequest(ye.BYE),this._ended("remote",null,ye.causes.NO_ACK))},Pd.TIMER_H)}_createRTCConnection(e,t){console.log("pcConfig",e),console.log("rtcConstraints",t),this.stunServers,this._connection=new RTCPeerConnection(e,t),this._connection.addEventListener("iceconnectionstatechange",()=>{this._connection.iceConnectionState==="failed"&&this.terminate({cause:ye.causes.RTP_TIMEOUT,status_code:408,reason_phrase:ye.causes.RTP_TIMEOUT})});let n;const i=s=>{this._connection.signalingState!=="stable"&&this._connection.signalingState!=="have-local-offer"||s.candidate&&(this._candidates.push(s.candidate),clearTimeout(n),n=setTimeout(()=>{this.lastTrickleReceived=!0,this.subscribeSent&&!this.isConfigureSent&&(this.addTracks(this.stream.getTracks()),this._ua.emit("changeMainVideoStream",{name:this.display_name,stream:this.stream}),this._sendConfigureMessage({audio:!0,video:!0}).then(()=>{}))},500))};this._connection.onicecandidate=i,Ie.debug('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}_createLocalDescription(e,t){if(Ie.debug("createLocalDescription()"),e!=="offer"&&e!=="answer")throw new Error(`createLocalDescription() | invalid type "${e}"`);const n=this._connection;return this._rtcReady=!1,Promise.resolve().then(()=>e==="offer"?(console.log("AAA createOffer",t),n.createOffer(t).catch(i=>(Ie.warn('emit "peerconnection:createofferfailed" [error:%o]',i),this.emit("peerconnection:createofferfailed",i),Promise.reject(i)))):n.createAnswer(t).catch(i=>(Ie.warn('emit "peerconnection:createanswerfailed" [error:%o]',i),this.emit("peerconnection:createanswerfailed",i),Promise.reject(i)))).then(i=>(console.log("AAA setLocalDescription",i),this.jsepOffer=i,n.setLocalDescription(i).catch(s=>(this._rtcReady=!0,Ie.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',s),this.emit("peerconnection:setlocaldescriptionfailed",s),Promise.reject(s))))).then(()=>{const i=t&&t.iceRestart;if(n.iceGatheringState==="complete"&&!i||n.iceGatheringState==="gathering"&&this._iceReady){this._rtcReady=!0;const s={originator:"local",type:e,sdp:n.localDescription.sdp};return Ie.debug('emit "sdp"'),this.emit("sdp",s),Promise.resolve(s.sdp)}return new Promise(s=>{let a=!1,o,u;this._iceReady=!1;const c=()=>{n.removeEventListener("icecandidate",o),n.removeEventListener("icegatheringstatechange",u),a=!0,this._rtcReady=!0,this._iceReady=!0;const d={originator:"local",type:e,sdp:n.localDescription.sdp};Ie.debug('emit "sdp"'),this.emit("sdp",d),s(d.sdp)};n.addEventListener("icecandidate",o=d=>{const p=d.candidate;p?this.emit("icecandidate",{candidate:p,ready:c}):a||c()}),n.addEventListener("icegatheringstatechange",u=()=>{n.iceGatheringState==="complete"&&!a&&c()})})})}_createDialog(e,t,n){console.log("_createDialog",e);const i=t==="UAS"?e.to_tag:e.from_tag,s=t==="UAS"?e.from_tag:e.to_tag,a=e.call_id+i+s;console.log("remote_tag",s);let o=this._earlyDialogs[a];if(n)return o?!0:(o=new tm(this,e,t,tm.C.STATUS_EARLY),console.log("SET DIALOG early"),o.error?(console.log("early_dialog error",o.error),Ie.debug(o.error),this._failed("remote",e,ye.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[a]=o,!0));{if(this._from_tag=e.from_tag,this._to_tag=e.to_tag,o)return o.update(e,t),console.log("SET DIALOG 1"),this._dialog=o,delete this._earlyDialogs[a],!0;const u=new tm(this,e,t);return u.error?(console.log("dialog.error",u.error),Ie.debug(u.error),this._failed("remote",e,ye.causes.INTERNAL_ERROR),!1):(console.log("AAA SET DIALOG 2"),this._dialog=u,!0)}}_receiveReinvite(e){Ie.debug("receiveReinvite()");const t=e.hasHeader("Content-Type")?e.getHeader("Content-Type").toLowerCase():void 0,n={request:e,callback:void 0,reject:s.bind(this)};let i=!1;function s(o={}){i=!0;const u=o.status_code||403,c=o.reason_phrase||"",d=Yt.cloneArray(o.extraHeaders);if(this._status!==$e.STATUS_CONFIRMED)return!1;if(u<300||u>=700)throw new TypeError(`Invalid status_code: ${u}`);e.reply(u,c,d)}if(this.emit("reinvite",n),i)return;if(this._late_sdp=!1,!e.body){this._late_sdp=!0,this._remoteHold&&(this._remoteHold=!1,this._onunhold("remote")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",this._rtcOfferConstraints)).then(o=>{a.call(this,o)}).catch(()=>{e.reply(500)});return}if(t!=="application/sdp"){Ie.debug("invalid Content-Type"),e.reply(415);return}this._processInDialogSdpOffer(e).then(o=>{this._status!==$e.STATUS_TERMINATED&&a.call(this,o)}).catch(o=>{Ie.warn(o)});function a(o){const u=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(e,u),this._late_sdp&&(o=this._mangleOffer(o)),e.reply(200,null,u,o,()=>{this._status=$e.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(e,o),this._setACKTimer()}),typeof n.callback=="function"&&n.callback()}}_receiveUpdate(e){Ie.debug("receiveUpdate()");const t=e.hasHeader("Content-Type")?e.getHeader("Content-Type").toLowerCase():void 0,n={request:e,callback:void 0,reject:s.bind(this)};let i=!1;function s(o={}){i=!0;const u=o.status_code||403,c=o.reason_phrase||"",d=Yt.cloneArray(o.extraHeaders);if(this._status!==$e.STATUS_CONFIRMED)return!1;if(u<300||u>=700)throw new TypeError(`Invalid status_code: ${u}`);e.reply(u,c,d)}if(this.emit("update",n),i)return;if(!e.body){a.call(this,null);return}if(t!=="application/sdp"){Ie.debug("invalid Content-Type"),e.reply(415);return}this._processInDialogSdpOffer(e).then(o=>{this._status!==$e.STATUS_TERMINATED&&a.call(this,o)}).catch(o=>{Ie.warn(o)});function a(o){const u=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(e,u),e.reply(200,null,u,o),typeof n.callback=="function"&&n.callback()}}_processInDialogSdpOffer(e){Ie.debug("_processInDialogSdpOffer()");const t=e.parseSDP();let n=!1;for(const a of t.media){if(Sm.indexOf(a.type)===-1)continue;const o=a.direction||t.direction||"sendrecv";if(o==="sendonly"||o==="inactive")n=!0;else{n=!1;break}}const i={originator:"remote",type:"offer",sdp:e.body};Ie.debug('emit "sdp"'),this.emit("sdp",i);const s=new RTCSessionDescription({type:"offer",sdp:i.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");return this._connection.setRemoteDescription(s).catch(a=>{throw e.reply(488),Ie.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a),a})}).then(()=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");this._remoteHold===!0&&n===!1?(this._remoteHold=!1,this._onunhold("remote")):this._remoteHold===!1&&n===!0&&(this._remoteHold=!0,this._onhold("remote"))}).then(()=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");return this._createLocalDescription("answer",this._rtcAnswerConstraints).catch(a=>{throw e.reply(500),Ie.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',a),a})}).catch(a=>{Ie.warn("_processInDialogSdpOffer() failed [error: %o]",a)}),this._connectionPromiseQueue}_receiveRefer(e){if(Ie.debug("receiveRefer()"),!e.refer_to){Ie.debug("no Refer-To header field present in REFER"),e.reply(400);return}if(e.refer_to.uri.scheme!==ye.SIP){Ie.debug("Refer-To header field points to a non-SIP URI scheme"),e.reply(416);return}e.reply(202);const t=new TF(this,e.cseq);Ie.debug('emit "refer"'),this.emit("refer",{request:e,accept:(s,a)=>{n.call(this,s,a)},reject:()=>{i.call(this)}});function n(s,a={}){if(s=typeof s=="function"?s:null,this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED)return!1;const o=new Eg(this._ua);if(o.on("progress",({response:u})=>{t.notify(u.status_code,u.reason_phrase)}),o.on("accepted",({response:u})=>{t.notify(u.status_code,u.reason_phrase)}),o.on("_failed",({message:u,cause:c})=>{u?t.notify(u.status_code,u.reason_phrase):t.notify(487,c)}),e.refer_to.uri.hasHeader("replaces")){const u=decodeURIComponent(e.refer_to.uri.getHeader("replaces"));a.extraHeaders=Yt.cloneArray(a.extraHeaders),a.extraHeaders.push(`Replaces: ${u}`)}o.connect(e.refer_to.uri.toAor(),a,s)}function i(){t.notify(603)}}_receiveNotify(e){switch(Ie.debug("receiveNotify()"),e.event||e.reply(400),e.event.event){case"refer":{let t,n;if(e.event.params&&e.event.params.id)t=e.event.params.id,n=this._referSubscribers[t];else if(Object.keys(this._referSubscribers).length===1)n=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{e.reply(400,"Missing event id parameter");return}if(!n){e.reply(481,"Subscription does not exist");return}n.receiveNotify(e),e.reply(200);break}default:e.reply(489)}}_receiveReplaces(e){Ie.debug("receiveReplaces()");function t(i){if(this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED)return!1;const s=new Eg(this._ua);s.on("confirmed",()=>{this.terminate()}),s.init_incoming(e,i)}function n(){Ie.debug("Replaced INVITE rejected by the user"),e.reply(486)}this.emit("replaces",{request:e,accept:i=>{t.call(this,i)},reject:()=>{n.call(this)}})}_getNextTransactionId(){return(this.lastTransaction+1).toString()}_sendInitialRequest(e,t,n){this.ackSent=!1,this.publisherSubscribeSent=!1;const i=new Dc(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout()},onTransportError:()=>{this.onTransportError()},onAuthenticated:s=>{this._request=s},onReceiveResponse:s=>{this._receiveInviteResponse(s)}});Promise.resolve().then(()=>{if(n)return n;if(e.audio||e.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(e).catch(s=>{throw this._status===$e.STATUS_TERMINATED?new Error("terminated"):(this._failed("local",null,ye.causes.USER_DENIED_MEDIA_ACCESS),Ie.warn('emit "getusermediafailed" [error:%o]',s),this.emit("getusermediafailed",s),s)})}).then(s=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");return this._localMediaStream=s,s&&s.getTracks().forEach(a=>{this._connection.addTrack(a,s)}),this._connecting(this._request),this._createLocalDescription("offer",t).catch(a=>{throw this._failed("local",null,ye.causes.WEBRTC_ERROR),a})}).then(s=>{if(this._is_canceled||this._status===$e.STATUS_TERMINATED)throw new Error("terminated");const a={janus:"attach",plugin:"janus.plugin.videoroom",opaque_id:this.opaque_id},o=JSON.stringify(a);this._request.body=o,this._status=$e.STATUS_INVITE_SENT,Ie.debug('emit "sending" [request:%o]',this._request),this.emit("sending",{request:this._request}),i.send()}).catch(s=>{this._status!==$e.STATUS_TERMINATED&&Ie.warn(s)})}async requestAudioAndVideoPermissions(){this.stream=await this.loadStream()}async setupMediaStream(){await this.requestAudioAndVideoPermissions(),await this.processPlugins()}async loadStream(){const e={audio:this.isAudioOn,video:this.isVideoOn};let t=null;try{t=await navigator.mediaDevices.getUserMedia(e)}catch{try{e.video=!1,t=await navigator.mediaDevices.getUserMedia(e)}catch{e.audio=!1,e.video=!1,t=await navigator.mediaDevices.getUserMedia(e)}}return t}addTracks(e){e.forEach(t=>{this._connection.addTrack(t)})}getRecordFileName(){return pde+this.room_id+btoa(unescape(encodeURIComponent(this.displayName)))+Date.now()}async processIceCandidates(){for(let e=0;e<this.iceCandidates.length;e++)await this._connection.addIceCandidate(this.iceCandidates[e]);this.iceCandidates=[]}async _sendConfigureMessage(e){const t=this._candidates.map(a=>({janus:"trickle",candidate:a,handle_id:this.handle_id,session_id:this.session_id})),i={configure:{janus:"message",body:{request:"configure",record:!0,filename:this.getRecordFileName(),...e},jsep:this.jsepOffer,handle_id:this.handle_id,session_id:this.session_id},trickles:[...t]},s=["Content-Type: application/json",this.getPTypeHeader(hr.ICE)];this.sendRequest(ye.INFO,{extraHeaders:s,body:JSON.stringify(i),eventHandlers:{onSuccessResponse:async a=>{this.isConfigureSent=!0;const u=a.data.split(`\r
|
|
18333
|
+
model.`);return n=function(o,u){var c="model-stride"+o+".json";return u===4?XE+"float/"+c:XE+"quant"+u+"/"+c}(e,t),[4,Ow(r.modelUrl||n)];case 1:return i=a.sent(),s=new Cce(i,e),[2,new M$(s)]}})})}function Ace(r){return r===void 0&&(r=QE),Ut(this,void 0,void 0,function(){return Bt(this,function(e){return(r=function(t){if((t=t||QE).architecture==null&&(t.architecture="MobileNetV1"),ZE.indexOf(t.architecture)<0)throw new Error("Invalid architecture "+t.architecture+". Should be one of "+ZE);if(t.outputStride==null&&(t.outputStride=16),ex[t.architecture].indexOf(t.outputStride)<0)throw new Error("Invalid outputStride "+t.outputStride+". Should be one of "+ex[t.architecture]+" for architecture "+t.architecture+".");if(t.multiplier==null&&(t.multiplier=1),tx[t.architecture].indexOf(t.multiplier)<0)throw new Error("Invalid multiplier "+t.multiplier+". Should be one of "+tx[t.architecture]+" for architecture "+t.architecture+".");if(t.quantBytes==null&&(t.quantBytes=4),nx.indexOf(t.quantBytes)<0)throw new Error("Invalid quantBytes "+t.quantBytes+". Should be one of "+nx+" for architecture "+t.architecture+".");return t}(r)).architecture==="ResNet50"?[2,Ice(r)]:r.architecture==="MobileNetV1"?[2,xce(r)]:[2,null]})})}var Nb=["left_face","right_face","left_upper_arm_front","left_upper_arm_back","right_upper_arm_front","right_upper_arm_back","left_lower_arm_front","left_lower_arm_back","right_lower_arm_front","right_lower_arm_back","left_hand","right_hand","torso_front","torso_back","left_upper_leg_front","left_upper_leg_back","right_upper_leg_front","right_upper_leg_back","left_lower_leg_front","left_lower_leg_back","right_lower_leg_front","right_lower_leg_back","left_feet","right_feet"],ix=function(){function r(e){this.mask=e}return r.prototype.toCanvasImageSource=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,$w(this.mask)]})})},r.prototype.toImageData=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,this.mask]})})},r.prototype.toTensor=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,x$(this.mask)]})})},r.prototype.getUnderlyingType=function(){return"imagedata"},r}();function Rce(r){if(Y0(r),r!==255)throw new Error("Foreground id must be 255 but got "+r);return"person"}function Nce(r){if(Y0(r),r>=Nb.length)throw new Error("Invalid body part value "+r);return Nb[r]}var kce=function(){function r(e){this.bodyPixModel=e}return r.prototype.segmentPeople=function(e,t){return Ut(this,void 0,void 0,function(){var n,i,s,a;return Bt(this,function(o){switch(o.label){case 0:return e instanceof ImageBitmap&&((n=document.createElement("canvas")).getContext("2d").drawImage(e,0,0),e=n),t.segmentBodyParts?t.multiSegmentation?[4,this.bodyPixModel.segmentMultiPersonParts(e,t)]:[3,2]:[3,5];case 1:return s=o.sent(),[3,4];case 2:return[4,this.bodyPixModel.segmentPersonParts(e,t)];case 3:s=[o.sent()],o.label=4;case 4:return i=s.map(function(u){var c=u.data,d=u.width,p=u.height,m=new Uint8ClampedArray(d*p*4).fill(0);return c.forEach(function(_,y){_===-1?(m[4*y]=Nb.length,m[4*y+3]=0):(m[4*y]=_,m[4*y+3]=255)}),{maskValueToLabel:Nce,mask:new ix(new ImageData(m,d,p))}}),[3,10];case 5:return t.multiSegmentation?[4,this.bodyPixModel.segmentMultiPerson(e,t)]:[3,7];case 6:return a=o.sent(),[3,9];case 7:return[4,this.bodyPixModel.segmentPerson(e,t)];case 8:a=[o.sent()],o.label=9;case 9:i=a.map(function(u){var c=u.data,d=u.width,p=u.height,m=new Uint8ClampedArray(d*p*4).fill(0);return c.forEach(function(_,y){_===0?(m[4*y]=0,m[4*y+3]=0):(m[4*y]=255,m[4*y+3]=255)}),{maskValueToLabel:Rce,mask:new ix(new ImageData(m,d,p))}}),o.label=10;case 10:return[2,i]}})})},r.prototype.dispose=function(){this.bodyPixModel.dispose()},r.prototype.reset=function(){},r}();function Oce(r){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,Ace(r).then(function(t){return new kce(t)})]})})}var ax={runtime:"mediapipe",modelType:"general"},$ce=function(){function r(e){this.mask=e}return r.prototype.toCanvasImageSource=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,this.mask]})})},r.prototype.toImageData=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,E$(this.mask)]})})},r.prototype.toTensor=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,x$(this.mask)]})})},r.prototype.getUnderlyingType=function(){return"canvasimagesource"},r}();function Dce(r){return Y0(r),"person"}var Pce=function(){function r(e){var t,n=this;this.selfieMode=!1;var i;this.selfieSegmentationSolution=new hce.SelfieSegmentation({locateFile:(t=e.locateFile)!==null&&t!==void 0?t:function(s,a){return e.solutionPath?e.solutionPath.replace(/\/+$/,"")+"/"+s:a+"/"+s}}),e.modelType==="landscape"?i=1:i=0,this.selfieSegmentationSolution.setOptions({modelSelection:i,selfieMode:this.selfieMode}),this.selfieSegmentationSolution.onResults(function(s){n.segmentation=[{maskValueToLabel:Dce,mask:new $ce(s.segmentationMask)}]})}return r.prototype.segmentPeople=function(e,t){return Ut(this,void 0,void 0,function(){var n,i;return Bt(this,function(s){switch(s.label){case 0:return t&&t.flipHorizontal&&t.flipHorizontal!==this.selfieMode&&(this.selfieMode=t.flipHorizontal,this.selfieSegmentationSolution.setOptions({selfieMode:this.selfieMode})),e instanceof nn?(i=ImageData.bind,[4,up(e)]):[3,2];case 1:return n=new(i.apply(ImageData,[void 0,s.sent(),e.shape[1],e.shape[0]])),[3,3];case 2:n=e,s.label=3;case 3:return e=n,[4,this.selfieSegmentationSolution.send({image:e})];case 4:return s.sent(),[2,this.segmentation]}})})},r.prototype.dispose=function(){this.selfieSegmentationSolution.close()},r.prototype.reset=function(){this.selfieSegmentationSolution.reset(),this.segmentation=null,this.selfieMode=!1},r.prototype.initialize=function(){return this.selfieSegmentationSolution.initialize()},r}();function Fce(r){return Ut(this,void 0,void 0,function(){var e,t;return Bt(this,function(n){switch(n.label){case 0:return e=function(i){if(i==null)return fr({},ax);var s=fr({},i);return s.runtime="mediapipe",s.modelType==null&&(s.modelType=ax.modelType),s}(r),[4,(t=new Pce(e)).initialize()];case 1:return n.sent(),[2,t]}})})}function Mce(r,e,t,n){var i=r.width,s=r.height,a=n?-1:1,o=Math.cos(r.rotation),u=Math.sin(r.rotation),c=r.xCenter,d=r.yCenter,p=1/e,m=1/t,_=new Array(16);return _[0]=i*o*a*p,_[1]=-s*u*p,_[2]=0,_[3]=(-.5*i*o*a+.5*s*u+c)*p,_[4]=i*u*a*m,_[5]=s*o*m,_[6]=0,_[7]=(-.5*s*o-.5*i*u*a+d)*m,_[8]=0,_[9]=0,_[10]=i*p,_[11]=0,_[12]=0,_[13]=0,_[14]=0,_[15]=1,function(y){if(y.length!==16)throw new Error("Array length must be 16 but got "+y.length);return[[y[0],y[1],y[2],y[3]],[y[4],y[5],y[6],y[7]],[y[8],y[9],y[10],y[11]],[y[12],y[13],y[14],y[15]]]}(_)}function L$(r){return r instanceof nn?{height:r.shape[0],width:r.shape[1]}:{height:r.height,width:r.width}}function rv(r,e){V(r.width!==0,function(){return e+" width cannot be 0."}),V(r.height!==0,function(){return e+" height cannot be 0."})}function Lce(r,e){var t=function(n,i,s,a){var o=i-n,u=a-s;if(o===0)throw new Error("Original min and max are both "+n+", range cannot be 0.");var c=u/o;return{scale:c,offset:s-n*c}}(0,255,e[0],e[1]);return St(function(){return bt(Ye(r,t.scale),t.offset)})}function Uce(r,e,t){var n=e.outputTensorSize,i=e.keepAspectRatio,s=e.borderMode,a=e.outputTensorFloatRange,o=L$(r),u=function(m,_){return _?{xCenter:_.xCenter*m.width,yCenter:_.yCenter*m.height,width:_.width*m.width,height:_.height*m.height,rotation:_.rotation}:{xCenter:.5*m.width,yCenter:.5*m.height,width:m.width,height:m.height,rotation:0}}(o,t),c=function(m,_,y){if(y===void 0&&(y=!1),!y)return{top:0,left:0,right:0,bottom:0};var b=_.height,S=_.width;rv(_,"targetSize"),rv(m,"roi");var w,x,E=b/S,I=m.height/m.width,R=0,P=0;return E>I?(w=m.width,x=m.width*E,P=(1-I/E)/2):(w=m.height/E,x=m.height,R=(1-E/I)/2),m.width=w,m.height=x,{top:P,left:R,right:R,bottom:P}}(u,n,i),d=Mce(u,o.width,o.height,!1),p=St(function(){var m,_=(m=r)instanceof nn?m:U0(m),y=Cu(function(w,x,E){return rv(E,"inputResolution"),[1/E.width*w[0][0]*x.width,1/E.height*w[0][1]*x.width,w[0][3]*x.width,1/E.width*w[1][0]*x.height,1/E.height*w[1][1]*x.height,w[1][3]*x.height,0,0]}(d,o,n),[1,8]),b=s==="zero"?"constant":"nearest",S=$u.transform($r(Qt(_,"float32")),y,"bilinear",b,0,[n.height,n.width]);return a!=null?Lce(S,a):S});return{imageTensor:p,padding:c,transformationMatrix:d}}function Bce(r,e,t){return St(function(){var n=Li(r,[0]),i=n.shape[2];if(i===1){var s=n;switch(e.activation){case"none":break;case"sigmoid":s=Ma(s);break;case"softmax":throw new Error("Softmax activation requires two channels.");default:throw new Error("Activation not supported ("+e.activation+")")}var a=t?$u.resizeBilinear(s,[t.height,t.width]):s;return Li(a,[2])}throw new Error("Unsupported number of tensor channels "+i)})}var ox={runtime:"tfjs",modelType:"general",modelUrl:"https://tfhub.dev/mediapipe/tfjs-model/selfie_segmentation/general/1"},lx={flipHorizontal:!1},Hce={outputTensorSize:{width:256,height:256},keepAspectRatio:!1,borderMode:"zero",outputTensorFloatRange:[0,1]},Vce={outputTensorSize:{width:256,height:144},keepAspectRatio:!1,borderMode:"zero",outputTensorFloatRange:[0,1]},Gce={activation:"none"},Wce=function(){function r(e){this.mask=e}return r.prototype.toCanvasImageSource=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,$w(this.mask)]})})},r.prototype.toImageData=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,E$(this.mask)]})})},r.prototype.toTensor=function(){return Ut(this,void 0,void 0,function(){return Bt(this,function(e){return[2,this.mask]})})},r.prototype.getUnderlyingType=function(){return"tensor"},r}();function zce(r){return Y0(r),"person"}var Mh,jce=function(){function r(e,t){this.modelType=e,this.model=t}return r.prototype.segmentPeople=function(e,t){return Ut(this,void 0,void 0,function(){var n,i=this;return Bt(this,function(s){return t=function(a){if(a==null)return fr({},lx);var o=fr({},a);return o.flipHorizontal==null&&(o.flipHorizontal=lx.flipHorizontal),o}(t),e==null?(this.reset(),[2,[]]):(n=St(function(){var a=Uce(e,i.modelType==="general"?Hce:Vce).imageTensor,o=cn(i.model.predict(a),[0,0,0,1],-1),u=L$(e),c=Bce(o,Gce,u),d=$r(c,2),p=Gu(d,[[0,0],[0,0],[0,1]]);return pT(p,[[0,0],[0,0],[0,2]],"symmetric")}),[2,[{maskValueToLabel:zce,mask:new Wce(n)}]])})})},r.prototype.dispose=function(){this.model.dispose()},r.prototype.reset=function(){},r}();function qce(r){return Ut(this,void 0,void 0,function(){var e,t,n;return Bt(this,function(i){switch(i.label){case 0:return e=function(s){if(s==null)return fr({},ox);var a=fr({},s);if(a.runtime="tfjs",a.modelType==null&&(a.modelType=ox.modelType),a.modelType!=="general"&&a.modelType!=="landscape")throw new Error("Model type must be one of general or landscape, but got "+a.modelType);return a.modelUrl==null&&(a.modelType==="general"?a.modelUrl="https://tfhub.dev/mediapipe/tfjs-model/selfie_segmentation/general/1":a.modelUrl="https://tfhub.dev/mediapipe/tfjs-model/selfie_segmentation/landscape/1"),a}(r),t=typeof e.modelUrl=="string"&&e.modelUrl.indexOf("https://tfhub.dev")>-1,[4,Ow(e.modelUrl,{fromTFHub:t})];case 1:return n=i.sent(),[2,new jce(e.modelType,n)]}})})}function Kce(r,e){return Ut(this,void 0,void 0,function(){var t,n;return Bt(this,function(i){switch(r){case Mh.MediaPipeSelfieSegmentation:if(t=void 0,(n=e)!=null){if(n.runtime==="tfjs")return[2,qce(n)];if(n.runtime==="mediapipe")return[2,Fce(n)];t=n.runtime}throw new Error("Expect modelConfig.runtime to be either 'tfjs' or 'mediapipe', but got "+t);case Mh.BodyPix:return[2,Oce(n=e)];default:throw new Error(r+" is not a supported model name.")}})})}(function(r){r.BodyPix="BodyPix",r.MediaPipeSelfieSegmentation="MediaPipeSelfieSegmentation"})(Mh||(Mh={}));var Xce="blurred",Yce="blurred-mask",Jce="mask",Qce="draw-image",iv={};function Q0(r){if(typeof HTMLCanvasElement<"u"&&r instanceof HTMLCanvasElement||typeof OffscreenCanvas<"u"&&r instanceof OffscreenCanvas||typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement)return function(e){if("offsetHeight"in e&&e.offsetHeight!==0&&"offsetWidth"in e&&e.offsetWidth!==0)return[e.offsetHeight,e.offsetWidth];if(e.height!=null&&e.width!=null)return[e.height,e.width];throw new Error("HTMLImageElement must have height and width attributes set.")}(r);if(typeof ImageData<"u"&&r instanceof ImageData)return[r.height,r.width];if(typeof HTMLVideoElement<"u"&&r instanceof HTMLVideoElement)return function(e){return e.hasAttribute("height")&&e.hasAttribute("width")?[e.height,e.width]:[e.videoHeight,e.videoWidth]}(r);if(r instanceof nn)return[r.shape[0],r.shape[1]];throw new Error("error: Unknown input type: "+r+".")}function U$(r){return iv[r]||(iv[r]=function(){if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(0,0);throw new Error("Cannot create a canvas in this context")}()),iv[r]}function B$(r,e){var t=U$(e);return function(n,i){i.width=n.width,i.height=n.height,i.getContext("2d").putImageData(n,0,0)}(r,t),t}function yp(r,e,t,n,i,s){return Ut(this,void 0,void 0,function(){var a,o,u,c;return Bt(this,function(d){switch(d.label){case 0:return e instanceof nn?[4,up(e)]:[3,2];case 1:a=d.sent(),o=Q0(e),u=o[0],c=o[1],e=new ImageData(a,c,u),d.label=2;case 2:return e instanceof ImageData&&(e=B$(e,Qce)),i==null||s==null?r.drawImage(e,t,n):r.drawImage(e,t,n,i,s),[2]}})})}function Zce(r,e){return Ut(this,void 0,void 0,function(){var t,n,i;return Bt(this,function(s){switch(s.label){case 0:return t=Q0(r),n=t[0],i=t[1],e.width=i,e.height=n,[4,yp(e.getContext("2d"),r,0,0,i,n)];case 1:return s.sent(),[2]}})})}function ede(r){var e=r.getContext("2d");e.scale(-1,1),e.translate(-r.width,0)}function ux(r,e,t){return Ut(this,void 0,void 0,function(){return Bt(this,function(n){switch(n.label){case 0:return r.globalCompositeOperation=t,[4,yp(r,e,0,0)];case 1:return n.sent(),[2]}})})}function tde(r,e,t){return Ut(this,void 0,void 0,function(){var n,i,s,a,o,u,c,d;return Bt(this,function(p){switch(p.label){case 0:for(n=r.getContext("2d"),i=0,s=5,a=1/(2*Math.PI*s*s),o=t<3?1:2,c=-t;c<=t;c+=o)for(d=-t;d<=t;d+=o)u=a*Math.exp(-(d*d+c*c)/(2*s*s)),i+=u;c=-t,p.label=1;case 1:if(!(c<=t))return[3,6];d=-t,p.label=2;case 2:return d<=t?(n.globalAlpha=a*Math.exp(-(d*d+c*c)/(2*s*s))/i*t,[4,yp(n,e,d,c)]):[3,5];case 3:p.sent(),p.label=4;case 4:return d+=o,[3,2];case 5:return c+=o,[3,1];case 6:return n.globalAlpha=1,[2]}})})}function nde(r,e,t){return Ut(this,void 0,void 0,function(){var n,i,s,a;return Bt(this,function(o){switch(o.label){case 0:return n=Q0(r),i=n[0],s=n[1],a=t.getContext("2d"),t.width=s,t.height=i,a.clearRect(0,0,s,i),a.save(),/^((?!chrome|android).)*safari/i.test(navigator.userAgent)?[4,tde(t,r,e)]:[3,2];case 1:return o.sent(),[3,4];case 2:return a.filter="blur("+e+"px)",[4,yp(a,r,0,0,s,i)];case 3:o.sent(),o.label=4;case 4:return a.restore(),[2]}})})}function H$(r,e,t){return Ut(this,void 0,void 0,function(){var n;return Bt(this,function(i){switch(i.label){case 0:return n=U$(t),e!==0?[3,2]:[4,Zce(r,n)];case 1:return i.sent(),[3,4];case 2:return[4,nde(r,e,n)];case 3:i.sent(),i.label=4;case 4:return[2,n]}})})}function sde(r,e,t,n,i,s){s===void 0&&(s={r:0,g:255,b:255,a:255});for(var a=-i;a<=i;a++)for(var o=-i;o<=i;o++)if(a!==0&&o!==0){var u=(e+a)*n+(t+o);r[4*u+0]=s.r,r[4*u+1]=s.g,r[4*u+2]=s.b,r[4*u+3]=s.a}}function rde(r,e,t,n,i,s,a){a===void 0&&(a=1);for(var o=0,u=-a;u<=a;u++)for(var c=-a;c<=a;c++)if(u!==0&&c!==0){var d=(e+u)*n+(t+c);(!i[r[4*d]]||r[4*d+3]<s)&&(o+=1)}return o>0}function V$(r,e,t,n,i,s){return e===void 0&&(e={r:0,g:0,b:0,a:0}),t===void 0&&(t={r:0,g:0,b:0,a:255}),n===void 0&&(n=!1),i===void 0&&(i=.5),s===void 0&&(s=Array.from(Array(256).keys())),Ut(this,void 0,void 0,function(){var a,o,u,c,d,p,m,_,y,b,S,w,x,E;return Bt(this,function(I){switch(I.label){case 0:return(a=Array.isArray(r)?r:[r]).length===0?[2,null]:[4,Promise.all(a.map(function(R){return R.mask.toImageData()}))];case 1:for(o=I.sent(),u=o[0],c=u.width,d=u.height,p=new Uint8ClampedArray(c*d*4),m=Math.round(255*i),_=new Array(256).fill(!1),s.forEach(function(R){return _[R]=!0}),y=0;y<d;y++)for(b=0;b<c;b++)for(p[4*(S=y*c+b)+0]=t.r,p[4*S+1]=t.g,p[4*S+2]=t.b,p[4*S+3]=t.a,w=0,x=o;w<x.length;w++)E=x[w],_[E.data[4*S]]&&E.data[4*S+3]>=m&&(p[4*S]=e.r,p[4*S+1]=e.g,p[4*S+2]=e.b,p[4*S+3]=e.a,n&&y-1>=0&&y+1<d&&b-1>=0&&b+1<c&&rde(E.data,y,b,c,_,m)&&sde(p,y,b,c,1));return[2,new ImageData(p,c,d)]}})})}function ide(r,e,t){return Ut(this,void 0,void 0,function(){var n,i;return Bt(this,function(s){switch(s.label){case 0:return[4,V$(r,{r:0,g:0,b:0,a:255},{r:0,g:0,b:0,a:0},!1,e)];case 1:return n=s.sent(),i=B$(n,Jce),t===0?[2,i]:[2,H$(i,t,Yce)]}})})}function ade(r,e,t,n,i,s,a){return n===void 0&&(n=.5),i===void 0&&(i=3),s===void 0&&(s=3),a===void 0&&(a=!1),Ut(this,void 0,void 0,function(){var o,u,c,d,p,m;return Bt(this,function(_){switch(_.label){case 0:return[4,H$(e,i,Xce)];case 1:return o=_.sent(),r.width=o.width,r.height=o.height,u=r.getContext("2d"),Array.isArray(t)&&t.length===0?(u.drawImage(o,0,0),[2]):[4,ide(t,n,s)];case 2:return c=_.sent(),u.save(),a&&ede(r),d=Q0(e),p=d[0],m=d[1],[4,yp(u,e,0,0,m,p)];case 3:return _.sent(),[4,ux(u,c,"destination-in")];case 4:return _.sent(),[4,ux(u,o,"destination-over")];case 5:return _.sent(),u.restore(),[2]}})})}const cx={runtime:"mediapipe",modelType:"general"},ode={WEBGL_PACK:!0,WEBGL_VERSION:2,WEBGL_CPU_FORWARD:!1},lde={targetFPS:60},ude={foregroundThreshold:.5,maskOpacity:.7,maskBlur:0,pixelCellWidth:10,backgroundBlur:15,edgeBlur:3},av={WEBGL_VERSION:[1,2],WASM_HAS_SIMD_SUPPORT:[!0,!1],WASM_HAS_MULTITHREAD_SUPPORT:[!0,!1],WEBGL_CPU_FORWARD:[!0,!1],WEBGL_PACK:[!0,!1],WEBGL_FORCE_F16_TEXTURES:[!0,!1],WEBGL_RENDER_FLOAT32_CAPABLE:[!0,!1],WEBGL_FLUSH_THRESHOLD:[-1,0,.25,.5,.75,1,1.25,1.5,1.75,2],CHECK_COMPUTATION_FOR_ERRORS:[!0,!1]},ov={bokehEffect:"bokehEffect",backgroundImageEffect:"backgroundImageEffect"};async function cde(r){if(r!=null){if(typeof r!="object")throw new Error(`An object is expected, while a(n) ${typeof r} is found.`);for(const e in r){if(!(e in av))throw new Error(`${e} is not a tunable or valid environment flag.`);if(av[e].indexOf(r[e])===-1)throw new Error(`${e} value is expected to be in the range [${av[e]}], while ${r[e]} is found.`)}de().setFlags(r)}}class Pw{constructor(){this.video=null,this.canvas=null,this.wrapperEl=null,this.ctx=null;const e=document.createElement("video");e.setAttribute("id","video"),e.setAttribute("playsinline",""),e.style.setProperty("visibility","hidden"),e.style.setProperty("width","auto"),e.style.setProperty("height","auto"),this.video=e;const t=document.createElement("canvas");t.setAttribute("id","output"),t.style.setProperty("visibility","hidden"),this.canvas=t;const n=document.createElement("div");n.classList.add("canvas-wrapper"),n.style.setProperty("display","none"),n.appendChild(e),n.appendChild(t),this.wrapperEl=n,document.body.appendChild(n),this.ctx=this.canvas.getContext("2d")}static async setupCamera(e){e.getAudioTracks().forEach(s=>{s.stop(),e.removeTrack(s)});const t=new Pw;t.video.srcObject=e,t.video.volume=0,await new Promise(s=>{t.video.onloadedmetadata=()=>{s(t.video)}}),t.video.play();const n=t.video.videoWidth,i=t.video.videoHeight;return t.video.width=n,t.video.height=i,t.canvas.width=n,t.canvas.height=i,t.wrapperEl.style.setProperty("width",`${n}px`),t.wrapperEl.style.setProperty("height",`${i}px`),t}cleanCamera(){this.ctx=null,this.wrapperEl.remove()}drawToCanvas(e){this.ctx.drawImage(e,0,0,this.video.videoWidth,this.video.videoHeight)}drawFromVideo(e){e.drawImage(this.video,0,0,this.video.videoWidth,this.video.videoHeight)}clearCtx(){this.ctx.clearRect(0,0,this.video.videoWidth,this.video.videoHeight)}}function dx(r,e={}){const t={};return Object.keys(r).forEach(n=>{t[n]=e[n]!==void 0?e[n]:r[n]}),t}function dde(r){return new Promise((e,t)=>{const n=new Image;n.onload=()=>{e(n)},n.onerror=i=>{t(i)},n.src=r})}function hde(r){return setTimeout(r,1e3/30)}class G${constructor(e){this.opensips=null,this.session=null,this.name=null,this.name=e}setOpensips(e){this.opensips=e}setSession(e){this.session=e}kill(){this.opensips.kill(this.name)}}class Z0 extends G${constructor(e,t,n={}){super(e),this.stream=null,this.running=!1,this.immediate=!1,this.type="video",this.immediate=n.immediate||!1,this.type=t}start(e){return e}stop(){throw new Error("stop method is not implemented")}async process(e){if(this.immediate){const t=await this.start(e);return this.running=!0,t}return e}async connect(){this.running=!0,await this.session.resyncPlugins(this.type)}terminate(){this.stop()}async kill(){this.stop(),this.running=!1,await this.session.resyncPlugins(this.type)}}Dle(`https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-backend-wasm@${Fle}/dist/`);class fde extends Z0{constructor(e,t){super("StreamMask","video",t),this.visualizationConfig={},this.maskEffectType=null,this.base64ImageMask=null,this.rafId=null,this.timeoutId=null,this.segmenter=null,this.visibilityState=null;const{visualizationConfig:n,effect:i,base64Image:s}=e;if(this.visualizationConfig=dx(ude,n),i===ov.backgroundImageEffect&&!s)throw new Error("Error when starting mask effect: base64Image option is required for backgroundImageEffect effect type");s&&(this.base64ImageMask=s),this.maskEffectType=i}async start(e){this.canvas=document.createElement("canvas"),this.ctx=this.canvas.getContext("2d"),this.camera=await Pw.setupCamera(e),this.canvas.width=this.camera.canvas.width,this.canvas.height=this.camera.canvas.height,await cde(ode),this.segmenter=await this.createSegmenter(),this.processVisibilityChange(),this.renderPrediction();const t=this.canvas.captureStream(lde.targetFPS);return await this.populateWithAudioTracks(t,e.getAudioTracks())}processVisibilityChange(){document&&(this.visibilityState=document.visibilityState,document.addEventListener("visibilitychange",()=>{this.visibilityState=document.visibilityState,document.visibilityState==="hidden"&&this.renderPrediction()}))}async populateWithAudioTracks(e,t){const n=new MediaStream;return e.getVideoTracks().forEach(i=>{n.addTrack(i)}),t.forEach(i=>{n.addTrack(i)}),n}stop(){this.rafId&&window.cancelAnimationFrame(this.rafId),this.timeoutId&&clearTimeout(this.timeoutId),this.segmenter&&this.segmenter.dispose(),this.camera&&this.camera.cleanCamera(),this.rafId=null,this.timeoutId=null,this.segmenter=null,this.camera=null,this.canvas=null,this.ctx=null}setupVisualizationConfig(e){this.visualizationConfig=dx(this.visualizationConfig,e)}async renderPrediction(){await this.renderResult(),this.visibilityState==="visible"?(this.timeoutId&&clearTimeout(this.timeoutId),this.rafId=requestAnimationFrame(this.renderPrediction.bind(this))):(this.rafId&&window.cancelAnimationFrame(this.rafId),this.timeoutId=hde(this.renderPrediction.bind(this)))}async createSegmenter(){return Kce(Mh.MediaPipeSelfieSegmentation,{runtime:cx.runtime,modelType:cx.modelType})}async renderResult(){this.camera.video.readyState<2&&await new Promise(t=>{this.camera.video.onloadeddata=()=>{t(this.camera.video)}});let e=null;if(this.segmenter!=null){try{this.segmenter.segmentPeople!=null?e=await this.segmenter.segmentPeople(this.camera.video,{flipHorizontal:!1,multiSegmentation:!1,segmentBodyParts:!0,segmentationThreshold:this.visualizationConfig.foregroundThreshold}):(e=await this.segmenter.estimatePoses(this.camera.video,{flipHorizontal:!1}),e=e.map(n=>n.segmentation))}catch(n){this.segmenter.dispose(),this.segmenter=null,alert(n)}const t=window.exposedContext;t&&t.readPixels(0,0,1,1,t.RGBA,t.UNSIGNED_BYTE,new Uint8Array(4))}if(e&&e.length>0)switch(this.maskEffectType){case ov.bokehEffect:console.log("applyBokehEffect"),await this.applyBokehEffect(e);break;case ov.backgroundImageEffect:await this.applyBackgroundImageEffect(e);break;default:console.error("Error when applying mask effect: such mask effect doesn't exist")}this.camera.drawToCanvas(this.canvas)}async applyBokehEffect(e){const t=this.visualizationConfig;await ade(this.canvas,this.camera.video,e,t.foregroundThreshold,t.backgroundBlur,t.edgeBlur)}async applyBackgroundImageEffect(e){const t=this.base64ImageMask,n=new Image;n.src=t;const i=this.canvas.getContext("2d"),a=await V$(e,{r:0,g:0,b:0,a:0},{r:0,g:0,b:0,a:255});a&&(i.putImageData(a,0,0),i.globalCompositeOperation="source-in",n.complete?i.drawImage(n,0,0,this.canvas.width,this.canvas.height):n.onload=()=>{i.drawImage(n,0,0,this.canvas.width,this.canvas.height)},i.globalCompositeOperation="destination-over",i.drawImage(this.camera.video,0,0,this.canvas.width,this.canvas.height),i.globalCompositeOperation="source-over")}}const Ie=new Fg("JanusSession"),pde="/opt/recordings/",$e={STATUS_NULL:0,STATUS_INVITE_SENT:1,STATUS_1XX_RECEIVED:2,STATUS_INVITE_RECEIVED:3,STATUS_WAITING_FOR_ANSWER:4,STATUS_ANSWERED:5,STATUS_WAITING_FOR_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9},Sm=["audio","video"];class Eg extends Ds.EventEmitter{static get C(){return $e}constructor(e){Ie.debug("new"),super(),console.log("constructor call"),this._id=null,this._ua=e,this._status=$e.STATUS_NULL,this._dialog=null,this._earlyDialogs={},this._contact=null,this._from_tag=null,this._to_tag=null,this.lastTransaction=0,this._connection=null,this._connectionPromiseQueue=Promise.resolve(),this._request=null,this._is_canceled=!1,this._cancel_reason="",this._is_confirmed=!1,this._late_sdp=!1,this._rtcOfferConstraints=null,this._rtcAnswerConstraints=null,this._localMediaStream=null,this._localMediaStreamLocallyGenerated=!1,this._rtcReady=!0,this._iceReady=!1,this._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},this._direction=null,this._local_identity=null,this._remote_identity=null,this._start_time=null,this._end_time=null,this._audioMuted=!1,this._videoMuted=!1,this._localHold=!1,this._remoteHold=!1,this._sessionTimers={enabled:this._ua.configuration.session_timers,refreshMethod:this._ua.configuration.session_timers_refresh_method,defaultExpires:ye.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},this._referSubscribers={},this._candidates=[],this.publishers=[],this.private_id=null,this.memberList={},this.myFeedList=[],this.display_name="",this.stunServers=[{urls:"stun:turn.voicenter.co",credential:"kxsjahnsdjns3eds23esd",username:"turn2es21e"}],this.opaque_id=this.generateOpaqueId(),this.screen_share_opaque_id=this.generateOpaqueId(),this._data={},this.isAudioOn=!0,this.isVideoOn=!0}get C(){return $e}get causes(){return ye.causes}get id(){return this._id}get connection(){return this._connection}get contact(){return this._contact}get direction(){return this._direction}get local_identity(){return this._local_identity}get remote_identity(){return this._remote_identity}get start_time(){return this._start_time}get end_time(){return this._end_time}get data(){return this._data}set data(e){this._data=e}get status(){return this._status}isInProgress(){switch(this._status){case $e.STATUS_NULL:case $e.STATUS_INVITE_SENT:case $e.STATUS_1XX_RECEIVED:case $e.STATUS_INVITE_RECEIVED:case $e.STATUS_WAITING_FOR_ANSWER:return!0;default:return!1}}isEstablished(){switch(this._status){case $e.STATUS_ANSWERED:case $e.STATUS_WAITING_FOR_ACK:case $e.STATUS_CONFIRMED:return!0;default:return!1}}isEnded(){switch(this._status){case $e.STATUS_CANCELED:case $e.STATUS_TERMINATED:return!0;default:return!1}}isMuted(){return{audio:this._audioMuted,video:this._videoMuted}}isOnHold(){return{local:this._localHold,remote:this._remoteHold}}getPTypeHeader(e){return`PTYPE: ${e}`}generateOpaqueId(){return`videoroomtest-${PC().replace(/-/g,"").slice(0,12)}`}connect(e,t,n={},i){Ie.debug("connect()"),this.display_name=t;const s=e,a=Yt.cloneObject(n.eventHandlers),o=Yt.cloneArray(n.extraHeaders),u=Yt.cloneObject(n.mediaConstraints,{audio:!0,video:!0}),c=n.mediaStream||null,d=Yt.cloneObject(n.pcConfig,{iceServers:[]}),p=n.rtcConstraints||null,m=n.rtcOfferConstraints||null;if(this._rtcOfferConstraints=m,this._rtcAnswerConstraints=n.rtcAnswerConstraints||null,this._data=n.data||this._data,e===void 0)throw new TypeError("Not enough arguments");if(this._status!==$e.STATUS_NULL)throw new ll.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new ll.NotSupportedError("WebRTC not supported");if(console.log("target",e),e=this._ua.normalizeTarget(e),console.log("normalizeTarget target",e),this.room_id=e.user,this.target=e,!e)throw new TypeError(`Invalid target: ${s}`);this._sessionTimers.enabled&&Yt.isDecimal(n.sessionTimersExpires)&&(n.sessionTimersExpires>=ye.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=n.sessionTimersExpires:this._sessionTimers.defaultExpires=ye.SESSION_EXPIRES);for(const b in a)Object.prototype.hasOwnProperty.call(a,b)&&this.on(b,a[b]);this._from_tag=Yt.newTag();const _=n.anonymous||!1,y={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:_,outbound:!0}),_?(y.from_display_name="Anonymous",y.from_uri=new ml("sip","anonymous","anonymous.invalid"),o.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`),o.push("Privacy: id")):n.fromUserName&&(y.from_uri=new ml("sip",n.fromUserName,this._ua.configuration.uri.host),o.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`)),n.fromDisplayName&&(y.from_display_name=n.fromDisplayName),o.push(`Contact: ${this._contact}`),o.push("Content-Type: application/json"),this._sessionTimers.enabled&&o.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher?";refresher=uac":""}`),this._request=new $s.InitialOutgoingInviteRequest(e,this._ua,y,o),this._id=this._request.call_id+this._from_tag,this._createRTCConnection(d,p),this._direction="outgoing",this._local_identity=this._request.from,this._remote_identity=this._request.to,console.log("this._remote_identity",this._remote_identity),i&&i(this),this._newJanusSession("local",this._request),this._sendInitialRequest(u,m,c)}connectScreenShare(e={}){new N8(this).connect(e)}_overrideSenderTracks(e,t){e.getTracks().forEach(n=>{t.getSenders().forEach(async s=>{s.track.kind===n.kind&&(n.kind==="audio"&&!this.isAudioOn&&(n.enabled=!1),n.kind==="video"&&!this.isVideoOn&&(n.enabled=!1),await s.replaceTrack(n))})})}init_incoming(e,t){Ie.debug("init_incoming()");let n;const i=e.hasHeader("Content-Type")?e.getHeader("Content-Type").toLowerCase():void 0;if(e.body&&i!=="application/sdp"){e.reply(415);return}if(this._status=$e.STATUS_INVITE_RECEIVED,this._from_tag=e.from_tag,this._id=e.call_id+this._from_tag,this._request=e,this._contact=this._ua.contact.toString(),e.hasHeader("expires")&&(n=e.getHeader("expires")*1e3),e.to_tag=Yt.newTag(),!this._createDialog(e,"UAS",!0)){e.reply(500,"Missing Contact header field");return}e.body?this._late_sdp=!1:this._late_sdp=!0,this._status=$e.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout(()=>{e.reply(408),this._failed("local",null,ye.causes.NO_ANSWER)},this._ua.configuration.no_answer_timeout),n&&(this._timers.expiresTimer=setTimeout(()=>{this._status===$e.STATUS_WAITING_FOR_ANSWER&&(e.reply(487),this._failed("system",null,ye.causes.EXPIRES))},n)),this._direction="incoming",this._local_identity=e.to,this._remote_identity=e.from,t&&t(this),this._newJanusSession("remote",e),this._status!==$e.STATUS_TERMINATED&&(e.reply(180,null,[`Contact: ${this._contact}`]),this._progress("local",null))}answer(e={}){Ie.debug("answer()");const t=this._request,n=Yt.cloneArray(e.extraHeaders),i=Yt.cloneObject(e.mediaConstraints),s=e.mediaStream||null,a=Yt.cloneObject(e.pcConfig,{iceServers:[]}),o=e.rtcConstraints||null,u=e.rtcAnswerConstraints||null,c=Yt.cloneObject(e.rtcOfferConstraints);let d,p=!1,m=!1,_=!1,y=!1;if(this._rtcAnswerConstraints=u,this._rtcOfferConstraints=e.rtcOfferConstraints||null,this._data=e.data||this._data,this._direction!=="incoming")throw new ll.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==$e.STATUS_WAITING_FOR_ANSWER)throw new ll.InvalidStateError(this._status);if(this._sessionTimers.enabled&&Yt.isDecimal(e.sessionTimersExpires)&&(e.sessionTimersExpires>=ye.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=e.sessionTimersExpires:this._sessionTimers.defaultExpires=ye.SESSION_EXPIRES),this._status=$e.STATUS_ANSWERED,!this._createDialog(t,"UAS")){t.reply(500,"Error creating dialog");return}clearTimeout(this._timers.userNoAnswerTimer),n.unshift(`Contact: ${this._contact}`);const b=t.parseSDP();Array.isArray(b.media)||(b.media=[b.media]);for(const S of b.media)S.type==="audio"&&(p=!0,(!S.direction||S.direction==="sendrecv")&&(_=!0)),S.type==="video"&&(m=!0,(!S.direction||S.direction==="sendrecv")&&(y=!0));if(s&&i.audio===!1){d=s.getAudioTracks();for(const S of d)s.removeTrack(S)}if(s&&i.video===!1){d=s.getVideoTracks();for(const S of d)s.removeTrack(S)}!s&&i.audio===void 0&&(i.audio=_),!s&&i.video===void 0&&(i.video=y),!s&&!p&&!c.offerToReceiveAudio&&(i.audio=!1),!s&&!m&&!c.offerToReceiveVideo&&(i.video=!1),this._createRTCConnection(a,o),Promise.resolve().then(()=>{if(s)return s;if(i.audio||i.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(i).catch(S=>{throw this._status===$e.STATUS_TERMINATED?new Error("terminated"):(t.reply(480),this._failed("local",null,ye.causes.USER_DENIED_MEDIA_ACCESS),Ie.warn('emit "getusermediafailed" [error:%o]',S),this.emit("getusermediafailed",S),new Error("getUserMedia() failed"))})}).then(S=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");this._localMediaStream=S,S&&S.getTracks().forEach(w=>{this._connection.addTrack(w,S)})}).then(()=>{if(this._late_sdp)return;const S={originator:"remote",type:"offer",sdp:t.body};Ie.debug('emit "sdp"'),this.emit("sdp",S);const w=new RTCSessionDescription({type:"offer",sdp:S.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(w)).catch(x=>{throw t.reply(488),this._failed("system",null,ye.causes.WEBRTC_ERROR),Ie.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',x),this.emit("peerconnection:setremotedescriptionfailed",x),new Error("peerconnection.setRemoteDescription() failed")}),this._connectionPromiseQueue}).then(()=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");return this._connecting(t),this._late_sdp?this._createLocalDescription("offer",this._rtcOfferConstraints).catch(()=>{throw t.reply(500),new Error("_createLocalDescription() failed")}):this._createLocalDescription("answer",u).catch(()=>{throw t.reply(500),new Error("_createLocalDescription() failed")})}).then(S=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");this._handleSessionTimersInIncomingRequest(t,n),t.reply(200,null,n,S,()=>{this._status=$e.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(t,S),this._setACKTimer(),this._accepted("local")},()=>{this._failed("system",null,ye.causes.CONNECTION_ERROR)})}).catch(S=>{this._status!==$e.STATUS_TERMINATED&&Ie.warn(S)})}terminate(e={}){Ie.debug("terminate()");const t=e.cause||ye.causes.BYE,n=Yt.cloneArray(e.extraHeaders),i=e.body;let s,a=e.status_code,o=e.reason_phrase;if(this._status===$e.STATUS_TERMINATED)throw new ll.InvalidStateError(this._status);switch(this._status){case $e.STATUS_NULL:case $e.STATUS_INVITE_SENT:case $e.STATUS_1XX_RECEIVED:if(Ie.debug("canceling session"),a&&(a<200||a>=700))throw new TypeError(`Invalid status_code: ${a}`);a&&(o=o||ye.REASON_PHRASE[a]||"",s=`SIP ;cause=${a} ;text="${o}"`),this._status===$e.STATUS_NULL||this._status===$e.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=s):this._status===$e.STATUS_1XX_RECEIVED&&this._request.cancel(s),this._status=$e.STATUS_CANCELED,this._failed("local",null,ye.causes.CANCELED);break;case $e.STATUS_WAITING_FOR_ANSWER:case $e.STATUS_ANSWERED:if(Ie.debug("rejecting session"),a=a||480,a<300||a>=700)throw new TypeError(`Invalid status_code: ${a}`);this._request.reply(a,o,n,i),this._failed("local",null,ye.causes.REJECTED);break;case $e.STATUS_WAITING_FOR_ACK:case $e.STATUS_CONFIRMED:if(Ie.debug("terminating session"),o=e.reason_phrase||ye.REASON_PHRASE[a]||"",a&&(a<200||a>=700))throw new TypeError(`Invalid status_code: ${a}`);if(a&&n.push(`Reason: SIP ;cause=${a}; text="${o}"`),this._status===$e.STATUS_WAITING_FOR_ACK&&this._direction==="incoming"&&this._request.server_transaction.state!==$i.C.STATUS_TERMINATED){const u=this._dialog;this.receiveRequest=({method:c})=>{c===ye.ACK&&(this.sendRequest(ye.BYE,{extraHeaders:n,body:i}),u.terminate(),this.closeSession())},this._request.server_transaction.on("stateChanged",()=>{this._request.server_transaction.state===$i.C.STATUS_TERMINATED&&(this.sendRequest(ye.BYE,{extraHeaders:n,body:i}),u.terminate(),this.closeSession())}),this._ended("local",null,t),this._dialog=u,console.log("SET DIALOG terminate"),this._ua.newDialog(u)}else{const u={janus:"leave"},c=["Content-Type: application/json",this.getPTypeHeader(hr.LEAVE)];this.sendRequest(ye.BYE,{extraHeaders:c,body:JSON.stringify(u)}),this.closeSession(),this._ended("local",null,t)}}}configureMedia(e){this.isAudioOn=e.audio,this.isVideoOn=e.video}enableAudio(e){const t={janus:"message",body:{audio:e},handle_id:this.handle_id,session_id:this.session_id},n=["Content-Type: application/json",this.getPTypeHeader(hr.AUDIO_CHANGE)];this.sendRequest(ye.INFO,{extraHeaders:n,body:JSON.stringify(t),eventHandlers:{onSuccessResponse:async i=>{i.status_code===200&&(this._ua.emit("changeAudioState",e),this.sendStateMessage({audio:e}))}}})}startAudio(){fa.toggleAudioMute(this.stream),this.enableAudio(!0),this.isAudioOn=!0}stopAudio(){fa.toggleAudioMute(this.stream),this.enableAudio(!1),this.isAudioOn=!1}enableVideo(e){const t={janus:"message",body:{video:e},handle_id:this.handle_id,session_id:this.session_id},n=["Content-Type: application/json",this.getPTypeHeader(hr.VIDEO_CHANGE)];this.sendRequest(ye.INFO,{extraHeaders:n,body:JSON.stringify(t),eventHandlers:{onSuccessResponse:async i=>{i.status_code===200&&(this._ua.emit("changeVideoState",e),this.sendStateMessage({video:e}))}}})}startVideo(){fa.toggleVideoMute(this.stream),this.enableVideo(!0),this.isVideoOn=!0}stopVideo(){fa.toggleVideoMute(this.stream),this.enableVideo(!1),this.isVideoOn=!1}sendStateMessage(e){const t={janus:"message",body:{request:"state",data:e},handle_id:this.handle_id,session_id:this.session_id},n=["Content-Type: application/json",this.getPTypeHeader(hr.STATE)];this.sendRequest(ye.INFO,{extraHeaders:n,body:JSON.stringify(t)})}sendInfo(e,t,n={}){if(Ie.debug("sendInfo()"),this._status!==$e.STATUS_CONFIRMED&&this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_1XX_RECEIVED)throw new ll.InvalidStateError(this._status);new Uv(this).send(e,t,n)}mute(e={audio:!0,video:!1}){Ie.debug("mute()");let t=!1,n=!1;this._audioMuted===!1&&e.audio&&(t=!0,this._audioMuted=!0,this._toggleMuteAudio(!0)),this._videoMuted===!1&&e.video&&(n=!0,this._videoMuted=!0,this._toggleMuteVideo(!0)),(t===!0||n===!0)&&this._onmute({audio:t,video:n})}unmute(e={audio:!0,video:!0}){Ie.debug("unmute()");let t=!1,n=!1;this._audioMuted===!0&&e.audio&&(t=!0,this._audioMuted=!1,this._localHold===!1&&this._toggleMuteAudio(!1)),this._videoMuted===!0&&e.video&&(n=!0,this._videoMuted=!1,this._localHold===!1&&this._toggleMuteVideo(!1)),(t===!0||n===!0)&&this._onunmute({audio:t,video:n})}hold(e={},t){if(Ie.debug("hold()"),this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED||this._localHold===!0||!this._isReadyToReOffer())return!1;this._localHold=!0,this._onhold("local");const n={succeeded:()=>{t&&t()},failed:()=>{this.terminate({cause:ye.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return e.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:n,extraHeaders:e.extraHeaders}):this._sendReinvite({eventHandlers:n,extraHeaders:e.extraHeaders}),!0}unhold(e={},t){if(Ie.debug("unhold()"),this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED||this._localHold===!1||!this._isReadyToReOffer())return!1;this._localHold=!1,this._onunhold("local");const n={succeeded:()=>{t&&t()},failed:()=>{this.terminate({cause:ye.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return e.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:n,extraHeaders:e.extraHeaders}):this._sendReinvite({eventHandlers:n,extraHeaders:e.extraHeaders}),!0}renegotiate(e={},t){Ie.debug("renegotiate()");const n=e.rtcOfferConstraints||null;if(this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED||!this._isReadyToReOffer())return!1;const i={succeeded:()=>{t&&t()},failed:()=>{this.terminate({cause:ye.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),e.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:i,rtcOfferConstraints:n,extraHeaders:e.extraHeaders}):this._sendReinvite({eventHandlers:i,rtcOfferConstraints:n,extraHeaders:e.extraHeaders}),!0}refer(e,t){Ie.debug("refer()");const n=e;if(this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED)return!1;if(e=this._ua.normalizeTarget(e),!e)throw new TypeError(`Invalid target: ${n}`);const i=new xF(this);i.sendRefer(e,t);const s=i.id;return this._referSubscribers[s]=i,i.on("requestFailed",()=>{delete this._referSubscribers[s]}),i.on("accepted",()=>{delete this._referSubscribers[s]}),i.on("failed",()=>{delete this._referSubscribers[s]}),i}sendRequest(e,t){return Ie.debug("sendRequest()"),this._dialog.sendRequest(e,t)}receiveNotify(e){Ie.debug("receiveRequest()")}receiveRequest(e){if(console.log("mmm receiveRequest 1",e),Ie.debug("receiveRequest()"),e.method===ye.CANCEL)(this._status===$e.STATUS_WAITING_FOR_ANSWER||this._status===$e.STATUS_ANSWERED)&&(this._status=$e.STATUS_CANCELED,this._request.reply(487),this._failed("remote",e,ye.causes.CANCELED));else switch(e.method){case ye.ACK:if(this._status!==$e.STATUS_WAITING_FOR_ACK)return;if(this._status=$e.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!e.body){this.terminate({cause:ye.causes.MISSING_SDP,status_code:400});break}const t={originator:"remote",type:"answer",sdp:e.body};Ie.debug('emit "sdp"'),this.emit("sdp",t);const n=new RTCSessionDescription({type:"answer",sdp:t.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(n)).then(()=>{this._is_confirmed||this._confirmed("remote",e)}).catch(i=>{this.terminate({cause:ye.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),Ie.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',i),this.emit("peerconnection:setremotedescriptionfailed",i)})}else this._is_confirmed||this._confirmed("remote",e);break;case ye.BYE:this._status===$e.STATUS_CONFIRMED||this._status===$e.STATUS_WAITING_FOR_ACK?(e.reply(200),this._ended("remote",e,ye.causes.BYE)):this._status===$e.STATUS_INVITE_RECEIVED||this._status===$e.STATUS_WAITING_FOR_ANSWER?(e.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",e,ye.causes.BYE)):e.reply(403,"Wrong Status");break;case ye.INVITE:console.log("mmm invite 1"),this._status===$e.STATUS_CONFIRMED?e.hasHeader("replaces")?this._receiveReplaces(e):this._receiveReinvite(e):e.reply(403,"Wrong Status");break;case ye.INFO:if(this._status===$e.STATUS_1XX_RECEIVED||this._status===$e.STATUS_WAITING_FOR_ANSWER||this._status===$e.STATUS_ANSWERED||this._status===$e.STATUS_WAITING_FOR_ACK||this._status===$e.STATUS_CONFIRMED){const t=e.hasHeader("Content-Type")?e.getHeader("Content-Type").toLowerCase():void 0;t&&t.match(/^application\/dtmf-relay/i)?new mF(this).init_incoming(e):t!==void 0?new Uv(this).init_incoming(e):e.reply(415)}else e.reply(403,"Wrong Status");break;case ye.UPDATE:this._status===$e.STATUS_CONFIRMED?this._receiveUpdate(e):e.reply(403,"Wrong Status");break;case ye.REFER:this._status===$e.STATUS_CONFIRMED?this._receiveRefer(e):e.reply(403,"Wrong Status");break;case ye.NOTIFY:this._status===$e.STATUS_CONFIRMED?this._receiveNotify(e):e.reply(403,"Wrong Status");break;default:e.reply(501)}}onTransportError(){Ie.warn("onTransportError()"),this._status!==$e.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:ye.causes.CONNECTION_ERROR,cause:ye.causes.CONNECTION_ERROR})}onRequestTimeout(){Ie.warn("onRequestTimeout()"),this._status!==$e.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:ye.causes.REQUEST_TIMEOUT,cause:ye.causes.REQUEST_TIMEOUT})}onDialogError(){Ie.warn("onDialogError()"),this._status!==$e.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:ye.causes.DIALOG_ERROR,cause:ye.causes.DIALOG_ERROR})}newDTMF(e){Ie.debug("newDTMF()"),this.emit("newDTMF",e)}newInfo(e){Ie.debug("newInfo()"),this.emit("newInfo",e)}_isReadyToReOffer(){return this._rtcReady?this._dialog?this._dialog.uac_pending_reply===!0||this._dialog.uas_pending_reply===!0?(Ie.debug("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"),!1):!0:(Ie.debug("_isReadyToReOffer() | session not established yet"),!1):(Ie.debug("_isReadyToReOffer() | internal WebRTC status not ready"),!1)}_close(){if(Ie.debug("close()"),this._localMediaStream&&this._localMediaStreamLocallyGenerated&&(Ie.debug("close() | closing local MediaStream"),Yt.closeMediaStream(this._localMediaStream)),this._status!==$e.STATUS_TERMINATED){if(this._status=$e.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(e){Ie.warn("close() | error closing the RTCPeerConnection: %o",e)}for(const e in this._timers)Object.prototype.hasOwnProperty.call(this._timers,e)&&clearTimeout(this._timers[e]);clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog);for(const e in this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,e)&&(this._earlyDialogs[e].terminate(),delete this._earlyDialogs[e]);for(const e in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,e)&&delete this._referSubscribers[e];this._ua.destroyRTCSession(this)}}_setInvite2xxTimer(e,t){let n=Pd.T1;function i(){this._status===$e.STATUS_WAITING_FOR_ACK&&(e.reply(200,null,[`Contact: ${this._contact}`],t),n<Pd.T2&&(n=n*2,n>Pd.T2&&(n=Pd.T2)),this._timers.invite2xxTimer=setTimeout(i.bind(this),n))}this._timers.invite2xxTimer=setTimeout(i.bind(this),n)}_setACKTimer(){this._timers.ackTimer=setTimeout(()=>{this._status===$e.STATUS_WAITING_FOR_ACK&&(Ie.debug("no ACK received, terminating the session"),clearTimeout(this._timers.invite2xxTimer),this.sendRequest(ye.BYE),this._ended("remote",null,ye.causes.NO_ACK))},Pd.TIMER_H)}_createRTCConnection(e,t){console.log("pcConfig",e),console.log("rtcConstraints",t),this.stunServers,this._connection=new RTCPeerConnection(e,t),this._connection.addEventListener("iceconnectionstatechange",()=>{this._connection.iceConnectionState==="failed"&&this.terminate({cause:ye.causes.RTP_TIMEOUT,status_code:408,reason_phrase:ye.causes.RTP_TIMEOUT})});let n;const i=s=>{this._connection.signalingState!=="stable"&&this._connection.signalingState!=="have-local-offer"||s.candidate&&(this._candidates.push(s.candidate),clearTimeout(n),n=setTimeout(()=>{this.lastTrickleReceived=!0,this.subscribeSent&&!this.isConfigureSent&&(this.addTracks(this.stream.getTracks()),this._ua.emit("changeMainVideoStream",{name:this.display_name,stream:this.stream}),this._sendConfigureMessage({audio:!0,video:!0}).then(()=>{}))},500))};this._connection.onicecandidate=i,Ie.debug('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}_createLocalDescription(e,t){if(Ie.debug("createLocalDescription()"),e!=="offer"&&e!=="answer")throw new Error(`createLocalDescription() | invalid type "${e}"`);const n=this._connection;return this._rtcReady=!1,Promise.resolve().then(()=>e==="offer"?(console.log("AAA createOffer",t),n.createOffer(t).catch(i=>(Ie.warn('emit "peerconnection:createofferfailed" [error:%o]',i),this.emit("peerconnection:createofferfailed",i),Promise.reject(i)))):n.createAnswer(t).catch(i=>(Ie.warn('emit "peerconnection:createanswerfailed" [error:%o]',i),this.emit("peerconnection:createanswerfailed",i),Promise.reject(i)))).then(i=>(console.log("AAA setLocalDescription",i),this.jsepOffer=i,n.setLocalDescription(i).catch(s=>(this._rtcReady=!0,Ie.warn('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',s),this.emit("peerconnection:setlocaldescriptionfailed",s),Promise.reject(s))))).then(()=>{const i=t&&t.iceRestart;if(n.iceGatheringState==="complete"&&!i||n.iceGatheringState==="gathering"&&this._iceReady){this._rtcReady=!0;const s={originator:"local",type:e,sdp:n.localDescription.sdp};return Ie.debug('emit "sdp"'),this.emit("sdp",s),Promise.resolve(s.sdp)}return new Promise(s=>{let a=!1,o,u;this._iceReady=!1;const c=()=>{n.removeEventListener("icecandidate",o),n.removeEventListener("icegatheringstatechange",u),a=!0,this._rtcReady=!0,this._iceReady=!0;const d={originator:"local",type:e,sdp:n.localDescription.sdp};Ie.debug('emit "sdp"'),this.emit("sdp",d),s(d.sdp)};n.addEventListener("icecandidate",o=d=>{const p=d.candidate;p?this.emit("icecandidate",{candidate:p,ready:c}):a||c()}),n.addEventListener("icegatheringstatechange",u=()=>{n.iceGatheringState==="complete"&&!a&&c()})})})}_createDialog(e,t,n){console.log("_createDialog",e);const i=t==="UAS"?e.to_tag:e.from_tag,s=t==="UAS"?e.from_tag:e.to_tag,a=e.call_id+i+s;console.log("remote_tag",s);let o=this._earlyDialogs[a];if(n)return o?!0:(o=new tm(this,e,t,tm.C.STATUS_EARLY),console.log("SET DIALOG early"),o.error?(console.log("early_dialog error",o.error),Ie.debug(o.error),this._failed("remote",e,ye.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[a]=o,!0));{if(this._from_tag=e.from_tag,this._to_tag=e.to_tag,o)return o.update(e,t),console.log("SET DIALOG 1"),this._dialog=o,delete this._earlyDialogs[a],!0;const u=new tm(this,e,t);return u.error?(console.log("dialog.error",u.error),Ie.debug(u.error),this._failed("remote",e,ye.causes.INTERNAL_ERROR),!1):(console.log("AAA SET DIALOG 2"),this._dialog=u,!0)}}_receiveReinvite(e){Ie.debug("receiveReinvite()");const t=e.hasHeader("Content-Type")?e.getHeader("Content-Type").toLowerCase():void 0,n={request:e,callback:void 0,reject:s.bind(this)};let i=!1;function s(o={}){i=!0;const u=o.status_code||403,c=o.reason_phrase||"",d=Yt.cloneArray(o.extraHeaders);if(this._status!==$e.STATUS_CONFIRMED)return!1;if(u<300||u>=700)throw new TypeError(`Invalid status_code: ${u}`);e.reply(u,c,d)}if(this.emit("reinvite",n),i)return;if(this._late_sdp=!1,!e.body){this._late_sdp=!0,this._remoteHold&&(this._remoteHold=!1,this._onunhold("remote")),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",this._rtcOfferConstraints)).then(o=>{a.call(this,o)}).catch(()=>{e.reply(500)});return}if(t!=="application/sdp"){Ie.debug("invalid Content-Type"),e.reply(415);return}this._processInDialogSdpOffer(e).then(o=>{this._status!==$e.STATUS_TERMINATED&&a.call(this,o)}).catch(o=>{Ie.warn(o)});function a(o){const u=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(e,u),this._late_sdp&&(o=this._mangleOffer(o)),e.reply(200,null,u,o,()=>{this._status=$e.STATUS_WAITING_FOR_ACK,this._setInvite2xxTimer(e,o),this._setACKTimer()}),typeof n.callback=="function"&&n.callback()}}_receiveUpdate(e){Ie.debug("receiveUpdate()");const t=e.hasHeader("Content-Type")?e.getHeader("Content-Type").toLowerCase():void 0,n={request:e,callback:void 0,reject:s.bind(this)};let i=!1;function s(o={}){i=!0;const u=o.status_code||403,c=o.reason_phrase||"",d=Yt.cloneArray(o.extraHeaders);if(this._status!==$e.STATUS_CONFIRMED)return!1;if(u<300||u>=700)throw new TypeError(`Invalid status_code: ${u}`);e.reply(u,c,d)}if(this.emit("update",n),i)return;if(!e.body){a.call(this,null);return}if(t!=="application/sdp"){Ie.debug("invalid Content-Type"),e.reply(415);return}this._processInDialogSdpOffer(e).then(o=>{this._status!==$e.STATUS_TERMINATED&&a.call(this,o)}).catch(o=>{Ie.warn(o)});function a(o){const u=[`Contact: ${this._contact}`];this._handleSessionTimersInIncomingRequest(e,u),e.reply(200,null,u,o),typeof n.callback=="function"&&n.callback()}}_processInDialogSdpOffer(e){Ie.debug("_processInDialogSdpOffer()");const t=e.parseSDP();let n=!1;for(const a of t.media){if(Sm.indexOf(a.type)===-1)continue;const o=a.direction||t.direction||"sendrecv";if(o==="sendonly"||o==="inactive")n=!0;else{n=!1;break}}const i={originator:"remote",type:"offer",sdp:e.body};Ie.debug('emit "sdp"'),this.emit("sdp",i);const s=new RTCSessionDescription({type:"offer",sdp:i.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");return this._connection.setRemoteDescription(s).catch(a=>{throw e.reply(488),Ie.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',a),this.emit("peerconnection:setremotedescriptionfailed",a),a})}).then(()=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");this._remoteHold===!0&&n===!1?(this._remoteHold=!1,this._onunhold("remote")):this._remoteHold===!1&&n===!0&&(this._remoteHold=!0,this._onhold("remote"))}).then(()=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");return this._createLocalDescription("answer",this._rtcAnswerConstraints).catch(a=>{throw e.reply(500),Ie.warn('emit "peerconnection:createtelocaldescriptionfailed" [error:%o]',a),a})}).catch(a=>{Ie.warn("_processInDialogSdpOffer() failed [error: %o]",a)}),this._connectionPromiseQueue}_receiveRefer(e){if(Ie.debug("receiveRefer()"),!e.refer_to){Ie.debug("no Refer-To header field present in REFER"),e.reply(400);return}if(e.refer_to.uri.scheme!==ye.SIP){Ie.debug("Refer-To header field points to a non-SIP URI scheme"),e.reply(416);return}e.reply(202);const t=new TF(this,e.cseq);Ie.debug('emit "refer"'),this.emit("refer",{request:e,accept:(s,a)=>{n.call(this,s,a)},reject:()=>{i.call(this)}});function n(s,a={}){if(s=typeof s=="function"?s:null,this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED)return!1;const o=new Eg(this._ua);if(o.on("progress",({response:u})=>{t.notify(u.status_code,u.reason_phrase)}),o.on("accepted",({response:u})=>{t.notify(u.status_code,u.reason_phrase)}),o.on("_failed",({message:u,cause:c})=>{u?t.notify(u.status_code,u.reason_phrase):t.notify(487,c)}),e.refer_to.uri.hasHeader("replaces")){const u=decodeURIComponent(e.refer_to.uri.getHeader("replaces"));a.extraHeaders=Yt.cloneArray(a.extraHeaders),a.extraHeaders.push(`Replaces: ${u}`)}o.connect(e.refer_to.uri.toAor(),a,s)}function i(){t.notify(603)}}_receiveNotify(e){switch(Ie.debug("receiveNotify()"),e.event||e.reply(400),e.event.event){case"refer":{let t,n;if(e.event.params&&e.event.params.id)t=e.event.params.id,n=this._referSubscribers[t];else if(Object.keys(this._referSubscribers).length===1)n=this._referSubscribers[Object.keys(this._referSubscribers)[0]];else{e.reply(400,"Missing event id parameter");return}if(!n){e.reply(481,"Subscription does not exist");return}n.receiveNotify(e),e.reply(200);break}default:e.reply(489)}}_receiveReplaces(e){Ie.debug("receiveReplaces()");function t(i){if(this._status!==$e.STATUS_WAITING_FOR_ACK&&this._status!==$e.STATUS_CONFIRMED)return!1;const s=new Eg(this._ua);s.on("confirmed",()=>{this.terminate()}),s.init_incoming(e,i)}function n(){Ie.debug("Replaced INVITE rejected by the user"),e.reply(486)}this.emit("replaces",{request:e,accept:i=>{t.call(this,i)},reject:()=>{n.call(this)}})}_getNextTransactionId(){return(this.lastTransaction+1).toString()}_sendInitialRequest(e,t,n){this.ackSent=!1,this.publisherSubscribeSent=!1;const i=new Dc(this._ua,this._request,{onRequestTimeout:()=>{this.onRequestTimeout()},onTransportError:()=>{this.onTransportError()},onAuthenticated:s=>{this._request=s},onReceiveResponse:s=>{this._receiveInviteResponse(s)}});Promise.resolve().then(()=>{if(n)return n;if(e.audio||e.video)return this._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(e).catch(s=>{throw this._status===$e.STATUS_TERMINATED?new Error("terminated"):(this._failed("local",null,ye.causes.USER_DENIED_MEDIA_ACCESS),Ie.warn('emit "getusermediafailed" [error:%o]',s),this.emit("getusermediafailed",s),s)})}).then(s=>{if(this._status===$e.STATUS_TERMINATED)throw new Error("terminated");return this._localMediaStream=s,s&&s.getTracks().forEach(a=>{this._connection.addTrack(a,s)}),this._connecting(this._request),this._createLocalDescription("offer",t).catch(a=>{throw this._failed("local",null,ye.causes.WEBRTC_ERROR),a})}).then(s=>{if(this._is_canceled||this._status===$e.STATUS_TERMINATED)throw new Error("terminated");const a={janus:"attach",plugin:"janus.plugin.videoroom",opaque_id:this.opaque_id},o=JSON.stringify(a);this._request.body=o,this._status=$e.STATUS_INVITE_SENT,Ie.debug('emit "sending" [request:%o]',this._request),this.emit("sending",{request:this._request}),i.send()}).catch(s=>{this._status!==$e.STATUS_TERMINATED&&Ie.warn(s)})}async requestAudioAndVideoPermissions(){this.stream=await this.loadStream()}async setupMediaStream(){await this.requestAudioAndVideoPermissions(),await this.processPlugins()}async loadStream(){const e={audio:this.isAudioOn,video:this.isVideoOn};let t=null;try{t=await navigator.mediaDevices.getUserMedia(e)}catch{try{e.video=!1,t=await navigator.mediaDevices.getUserMedia(e)}catch{e.audio=!1,e.video=!1,t=await navigator.mediaDevices.getUserMedia(e)}}return t}addTracks(e){e.forEach(t=>{this._connection.addTrack(t)})}getRecordFileName(){return pde+this.room_id+btoa(unescape(encodeURIComponent(this.displayName)))+Date.now()}async processIceCandidates(){for(let e=0;e<this.iceCandidates.length;e++)await this._connection.addIceCandidate(this.iceCandidates[e]);this.iceCandidates=[]}async _sendConfigureMessage(e){const t=this._candidates.map(a=>({janus:"trickle",candidate:a,handle_id:this.handle_id,session_id:this.session_id})),i={configure:{janus:"message",body:{request:"configure",record:!0,filename:this.getRecordFileName(),...e},jsep:this.jsepOffer,handle_id:this.handle_id,session_id:this.session_id},trickles:[...t]},s=["Content-Type: application/json",this.getPTypeHeader(hr.ICE)];this.sendRequest(ye.INFO,{extraHeaders:s,body:JSON.stringify(i),eventHandlers:{onSuccessResponse:async a=>{this.isConfigureSent=!0;const u=a.data.split(`\r
|
|
18334
18334
|
`),c=u[u.length-1],d=JSON.parse(c);await this._connection.setRemoteDescription(d.jsep),this._candidates=[]}}})}_sendMemberStartMessage(e,t){const n={janus:"message",body:{request:"start",room:this.room_id},handle_id:e.handleId,session_id:this.session_id,jsep:t},i=["Content-Type: application/json",this.getPTypeHeader(hr.CONFIGURE)];this.sendRequest(ye.INFO,{extraHeaders:i,body:JSON.stringify(n),eventHandlers:{onSuccessResponse:async s=>{s.status_code===200&&await e.rtcpPeer.setLocalDescription(t)}}})}_sendTrickleMessage(e){const n={trickles:[...e.map(s=>({janus:"trickle",candidate:s,handle_id:this.handle_id,session_id:this.session_id}))]},i=[this.getPTypeHeader(hr.TRICKLE)];this.sendRequest(ye.INFO,{extraHeaders:i,body:JSON.stringify(n),eventHandlers:{onSuccessResponse:async s=>{console.log("_sendTrickleMessage",s)}}})}async _answerAttachedStream(e,t){let n=null;const i=async u=>{if(!e.rtcpPeer||e.loaded)return;{e.loaded=!0;const _={audio:!0,video:!0};await new Promise(y=>{setTimeout(y,100)}),n=await e.rtcpPeer.createAnswer(_),this._sendMemberStartMessage(e,n)}const c=u.streams[0].getAudioTracks(),d=u.streams[0].getVideoTracks(),p=[];c[0]&&p.push(c[0]),d[0]&&p.push(d[0]);const m=new MediaStream(p);e.stream=m,this._ua.emit("memberJoin",e.memberInfo)};let s,a=[];const o=u=>{e.rtcpPeer.signalingState!=="stable"&&e.rtcpPeer.signalingState!=="have-local-offer"||(a.push(u.candidate||null),clearTimeout(s),s=setTimeout(()=>{this._sendTrickleMessage(a)},500))};e.rtcpPeer=new RTCPeerConnection,e.rtcpPeer.ontrack=i,e.rtcpPeer.onicecandidate=o,e.rtcpPeer.sender=t.sender,await e.rtcpPeer.setRemoteDescription(t.jsep)}_sendJoinMemberRequest(e){const t={janus:"message",body:{request:"join",room:this.room_id,feed:e.info.id,ptype:"subscriber"},handle_id:e.handleId,session_id:this.session_id},n=[this.getPTypeHeader(hr.SUBSCRIBER)];this.sendRequest(ye.SUBSCRIBE,{extraHeaders:n,body:JSON.stringify(t),eventHandlers:{onSuccessResponse:async i=>{var s,a;if(i.status_code===200){const o=JSON.parse(i.body);(a=(s=o==null?void 0:o.plugindata)==null?void 0:s.data)!=null&&a.id&&await this._answerAttachedStream(e,o)}}}})}_attachMember(e){const t={janus:"attach",opaque_id:this.opaque_id,plugin:"janus.plugin.videoroom",session_id:this.session_id},n=[this.getPTypeHeader(hr.SUBSCRIBER)];this.sendRequest(ye.INFO,{extraHeaders:n,body:JSON.stringify(t),eventHandlers:{onSuccessResponse:async i=>{if(i.status_code===200){const a=JSON.parse(i.body).data.id;e.handleId=a,this._sendJoinMemberRequest(e)}}}})}_detachMember(e){const t={janus:"detach",handle_id:e.handleId,session_id:this.session_id},n=[this.getPTypeHeader(hr.SUBSCRIBER)];this.sendRequest(ye.INFO,{extraHeaders:n,body:JSON.stringify(t)}),fa.stopStreamTracks(e.memberInfo.stream),this._ua.emit("memberHangup",e.memberInfo)}receivePublishers(e){var n,i,s,a,o,u,c,d;console.log("AAA receivePublishers",e);const t={...this.memberList};(i=(n=e==null?void 0:e.plugindata)==null?void 0:n.data)==null||i.publishers.forEach(p=>{delete t[p.id],!this.memberList[p.id]&&!this.myFeedList.includes(p.id)&&p.clientID!==this.client_id&&(console.log("AAA attachMember",p),this.memberList[p.id]=new A8(p,this),this._attachMember(this.memberList[p.id]))}),((a=(s=e==null?void 0:e.plugindata)==null?void 0:s.data)==null?void 0:a.videoroom)==="synced"&&Object.keys(t).forEach(p=>{t[p].hangup(),delete this.memberList[p]}),this.publishers=(u=(o=e==null?void 0:e.plugindata)==null?void 0:o.data)==null?void 0:u.publishers,this.private_id=(d=(c=e==null?void 0:e.plugindata)==null?void 0:c.data)==null?void 0:d.private_id}receiveUnpublished(e){const t=this.memberList[e];t&&(t.hangup(),this._detachMember(t),delete this.memberList[e])}closeSession(){this.stream&&this.stream.getTracks().forEach(t=>{t.stop()}),Object.values(this.memberList).forEach(t=>{t.hangup(),this._detachMember(t)})}async processPlugins(){const e=this._ua.processStreamPlugins;let t=await this.loadStream();for(const n of e)t=await n.process(t);this.stream.getTracks().forEach(n=>{this.stream.removeTrack(n),n.stop()}),t.getTracks().forEach(n=>{this.stream.addTrack(n)})}async resyncPlugins(e){const t=this._ua.processStreamPlugins.filter(n=>n.type===e);for(const n of t)n.running&&n.terminate();if(e==="video"){let n=await this.loadStream();for(const i of t)i.running&&(n=await i.start(n));this.stream.getTracks().forEach(i=>{this.stream.removeTrack(i),i.stop()}),n.getTracks().forEach(i=>{this.stream.addTrack(i)}),this._overrideSenderTracks(this.stream,this._connection),this._ua.emit("changeMainVideoStream",{name:this.display_name,stream:this.stream})}else{const n=this._ua.newStreamPlugins.find(o=>o.type===e),i=n.getStream();let s=i.clone();for(const o of t)o.running&&(s=await o.start(s));i.getTracks().forEach(o=>{i.removeTrack(o),o.stop()}),s.getTracks().forEach(o=>{i.addTrack(o.clone()),s.removeTrack(o),o.stop()});const a=n.getConnection();this._overrideSenderTracks(i,a),this._ua.emit("changePluginStream",{type:e,stream:i})}}stopProcessPlugins(e){const t=this._ua.processStreamPlugins.filter(n=>n.type===e);for(const n of t)n.running&&n.terminate()}_receiveInviteResponse(e){if(Ie.debug("receiveInviteResponse()"),console.log("_receiveInviteResponse response",e),console.log("dialog",this._dialog),this._dialog&&e.status_code>=200&&e.status_code<=299&&!this.ackSent)if(console.log("IF 1 dialog"),this._dialog.id.call_id===e.call_id&&this._dialog.id.local_tag===e.from_tag&&this._dialog.id.remote_tag===e.to_tag){this.ackSent=!0,this.sendRequest(ye.ACK);return}else{const t=new tm(this,e,"UAC");if(t.error!==void 0){Ie.debug(t.error);return}this.sendRequest(ye.ACK),this.sendRequest(ye.BYE);return}if(this.ackSent&&!this.publisherSubscribeSent){const t=JSON.parse(e.body);this.setupMediaStream().then(()=>{this.session_id=t.session_id,this.handle_id=t.data.id,this.client_id=PC();const n={janus:"message",body:{request:"join",room:this.room_id,ptype:"publisher",display:this.display_name,clientID:this.client_id,opaque_id:this.opaque_id},handle_id:this.handle_id},i=[this.getPTypeHeader(hr.PUBLISHER)];this.sendRequest(ye.SUBSCRIBE,{extraHeaders:i,body:JSON.stringify(n),eventHandlers:{onSuccessResponse:async s=>{var a,o,u,c;if(s.status_code===200){if(this.subscribeSent=!0,s.body)try{const d=JSON.parse(s.body)||{};((o=(a=d.plugindata)==null?void 0:a.data)==null?void 0:o.videoroom)==="joined"&&this.myFeedList.push(d.plugindata.data.id),(c=(u=d.plugindata)==null?void 0:u.data)!=null&&c.publishers&&this.receivePublishers(d)}catch(d){console.error(d)}this.lastTrickleReceived&&!this.isConfigureSent&&(this.addTracks(this.stream.getTracks()),this._ua.emit("changeMainVideoStream",{name:this.display_name,stream:this.stream}),this._sendConfigureMessage({audio:!0,video:!0}).then(()=>{})),this._ua.emit("conferenceStart")}}}}),this.publisherSubscribeSent=!0})}if(this._is_canceled){e.status_code>=100&&e.status_code<200?this._request.cancel(this._cancel_reason):e.status_code>=200&&e.status_code<299&&this._acceptAndTerminate(e);return}if(!(this._status!==$e.STATUS_INVITE_SENT&&this._status!==$e.STATUS_1XX_RECEIVED))switch(!0){case/^100$/.test(e.status_code):this._status=$e.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(e.status_code):{if(!e.to_tag){Ie.debug("1xx response received without to tag");break}if(e.hasHeader("contact")&&!this._createDialog(e,"UAC",!0))break;if(this._status=$e.STATUS_1XX_RECEIVED,!e.body){this._progress("remote",e);break}const t={originator:"remote",type:"answer",sdp:e.body};Ie.debug('emit "sdp"'),this.emit("sdp",t);const n=new RTCSessionDescription({type:"answer",sdp:t.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(n)).then(()=>this._progress("remote",e)).catch(i=>{Ie.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',i),this.emit("peerconnection:setremotedescriptionfailed",i)});break}case/^2[0-9]{2}$/.test(e.status_code):{if(this._status=$e.STATUS_CONFIRMED,!e.body){this._acceptAndTerminate(e,400,ye.causes.MISSING_SDP),this._failed("remote",e,ye.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(e,"UAC"))break;break}default:{const t=Yt.sipErrorCause(e.status_code);this._failed("remote",e,t)}}}_sendReinvite(e={}){Ie.debug("sendReinvite()");const t=Yt.cloneArray(e.extraHeaders),n=Yt.cloneObject(e.eventHandlers),i=e.rtcOfferConstraints||this._rtcOfferConstraints||null;let s=!1;t.push(`Contact: ${this._contact}`),t.push("Content-Type: application/sdp"),this._sessionTimers.running&&t.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher?"uac":"uas"}`),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",i)).then(u=>{u=this._mangleOffer(u);const c={originator:"local",type:"offer",sdp:u};Ie.debug('emit "sdp"'),this.emit("sdp",c),console.log("AAA invite 2"),this.sendRequest(ye.INVITE,{extraHeaders:t,body:u,eventHandlers:{onSuccessResponse:d=>{a.call(this,d),s=!0},onErrorResponse:d=>{o.call(this,d)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{o()});function a(u){if(this._status===$e.STATUS_TERMINATED||(this.sendRequest(ye.ACK),s))return;if(this._handleSessionTimersInIncomingResponse(u),u.body){if(!u.hasHeader("Content-Type")||u.getHeader("Content-Type").toLowerCase()!=="application/sdp"){o.call(this);return}}else{o.call(this);return}const c={originator:"remote",type:"answer",sdp:u.body};Ie.debug('emit "sdp"'),this.emit("sdp",c);const d=new RTCSessionDescription({type:"answer",sdp:c.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(d)).then(()=>{n.succeeded&&n.succeeded(u)}).catch(p=>{o.call(this),Ie.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',p),this.emit("peerconnection:setremotedescriptionfailed",p)})}function o(u){n.failed&&n.failed(u)}}_sendUpdate(e={}){Ie.debug("sendUpdate()");const t=Yt.cloneArray(e.extraHeaders),n=Yt.cloneObject(e.eventHandlers),i=e.rtcOfferConstraints||this._rtcOfferConstraints||null,s=e.sdpOffer||!1;let a=!1;t.push(`Contact: ${this._contact}`),this._sessionTimers.running&&t.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher?"uac":"uas"}`),s?(t.push("Content-Type: application/sdp"),this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._createLocalDescription("offer",i)).then(c=>{c=this._mangleOffer(c);const d={originator:"local",type:"offer",sdp:c};Ie.debug('emit "sdp"'),this.emit("sdp",d),this.sendRequest(ye.UPDATE,{extraHeaders:t,body:c,eventHandlers:{onSuccessResponse:p=>{o.call(this,p),a=!0},onErrorResponse:p=>{u.call(this,p)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}})}).catch(()=>{u.call(this)})):this.sendRequest(ye.UPDATE,{extraHeaders:t,eventHandlers:{onSuccessResponse:c=>{o.call(this,c)},onErrorResponse:c=>{u.call(this,c)},onTransportError:()=>{this.onTransportError()},onRequestTimeout:()=>{this.onRequestTimeout()},onDialogError:()=>{this.onDialogError()}}});function o(c){if(this._status!==$e.STATUS_TERMINATED&&!a)if(this._handleSessionTimersInIncomingResponse(c),s){if(c.body){if(!c.hasHeader("Content-Type")||c.getHeader("Content-Type").toLowerCase()!=="application/sdp"){u.call(this);return}}else{u.call(this);return}const d={originator:"remote",type:"answer",sdp:c.body};Ie.debug('emit "sdp"'),this.emit("sdp",d);const p=new RTCSessionDescription({type:"answer",sdp:d.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then(()=>this._connection.setRemoteDescription(p)).then(()=>{n.succeeded&&n.succeeded(c)}).catch(m=>{u.call(this),Ie.warn('emit "peerconnection:setremotedescriptionfailed" [error:%o]',m),this.emit("peerconnection:setremotedescriptionfailed",m)})}else n.succeeded&&n.succeeded(c)}function u(c){n.failed&&n.failed(c)}}_acceptAndTerminate(e,t,n){Ie.debug("acceptAndTerminate()");const i=[];t&&(n=n||ye.REASON_PHRASE[t]||"",i.push(`Reason: SIP ;cause=${t}; text="${n}"`)),(this._dialog||this._createDialog(e,"UAC"))&&(this.sendRequest(ye.ACK),this.sendRequest(ye.BYE,{extraHeaders:i})),this._status=$e.STATUS_TERMINATED}_mangleOffer(e){if(!this._localHold&&!this._remoteHold)return e;if(e=Zr.parse(e),this._localHold&&!this._remoteHold){Ie.debug("mangleOffer() | me on hold, mangling offer");for(const t of e.media)Sm.indexOf(t.type)!==-1&&(t.direction?t.direction==="sendrecv"?t.direction="sendonly":t.direction==="recvonly"&&(t.direction="inactive"):t.direction="sendonly")}else if(this._localHold&&this._remoteHold){Ie.debug("mangleOffer() | both on hold, mangling offer");for(const t of e.media)Sm.indexOf(t.type)!==-1&&(t.direction="inactive")}else if(this._remoteHold){Ie.debug("mangleOffer() | remote on hold, mangling offer");for(const t of e.media)Sm.indexOf(t.type)!==-1&&(t.direction?t.direction==="sendrecv"?t.direction="recvonly":t.direction==="recvonly"&&(t.direction="inactive"):t.direction="recvonly")}return Zr.write(e)}_setLocalMediaStatus(){let e=!0,t=!0;(this._localHold||this._remoteHold)&&(e=!1,t=!1),this._audioMuted&&(e=!1),this._videoMuted&&(t=!1),this._toggleMuteAudio(!e),this._toggleMuteVideo(!t)}_handleSessionTimersInIncomingRequest(e,t){if(!this._sessionTimers.enabled)return;let n;e.session_expires&&e.session_expires>=ye.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=e.session_expires,n=e.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,n="uas"),t.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${n}`),this._sessionTimers.refresher=n==="uas",this._runSessionTimer()}_handleSessionTimersInIncomingResponse(e){if(!this._sessionTimers.enabled)return;let t;e.session_expires&&e.session_expires>=ye.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=e.session_expires,t=e.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,t="uac"),this._sessionTimers.refresher=t==="uac",this._runSessionTimer()}_runSessionTimer(){const e=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout(()=>{this._status!==$e.STATUS_TERMINATED&&this._isReadyToReOffer()&&(Ie.debug("runSessionTimer() | sending session refresh request"),this._sessionTimers.refreshMethod===ye.UPDATE?this._sendUpdate():this._sendReinvite())},e*500):this._sessionTimers.timer=setTimeout(()=>{this._status!==$e.STATUS_TERMINATED&&(Ie.warn("runSessionTimer() | timer expired, terminating the session"),this.terminate({cause:ye.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))},e*1100)}_toggleMuteAudio(e){const t=this._connection.getSenders().filter(n=>n.track&&n.track.kind==="audio");for(const n of t)n.track.enabled=!e}_toggleMuteVideo(e){const t=this._connection.getSenders().filter(n=>n.track&&n.track.kind==="video");for(const n of t)n.track.enabled=!e}_newJanusSession(e,t){Ie.debug("newRTCSession()"),this._ua.newJanusSession(this,{originator:e,session:this,request:t})}_connecting(e){Ie.debug("session connecting"),Ie.debug('emit "connecting"'),this.emit("connecting",{request:e})}_progress(e,t){Ie.debug("session progress"),Ie.debug('emit "progress"'),this.emit("progress",{originator:e,response:t||null})}_accepted(e,t){Ie.debug("session accepted"),this._start_time=new Date,Ie.debug('emit "accepted"'),this.emit("accepted",{originator:e,response:t||null})}_confirmed(e,t){Ie.debug("session confirmed"),this._is_confirmed=!0,Ie.debug('emit "confirmed"'),this.emit("confirmed",{originator:e,ack:t||null})}_ended(e,t,n){Ie.debug("session ended"),this._end_time=new Date,this._close(),Ie.debug('emit "ended"'),this.emit("ended",{originator:e,message:t||null,cause:n})}_failed(e,t,n){Ie.debug("session failed"),Ie.debug('emit "_failed"'),this.emit("_failed",{originator:e,message:t||null,cause:n}),this._close(),Ie.debug('emit "failed"'),this.emit("failed",{originator:e,message:t||null,cause:n})}_onhold(e){Ie.debug("session onhold"),this._setLocalMediaStatus(),Ie.debug('emit "hold"'),this.emit("hold",{originator:e})}_onunhold(e){Ie.debug("session onunhold"),this._setLocalMediaStatus(),Ie.debug('emit "unhold"'),this.emit("unhold",{originator:e})}_onmute({audio:e,video:t}){Ie.debug("session onmute"),this._setLocalMediaStatus(),Ie.debug('emit "muted"'),this.emit("muted",{audio:e,video:t})}_onunmute({audio:e,video:t}){Ie.debug("session onunmute"),this._setLocalMediaStatus(),Ie.debug('emit "unmuted"'),this.emit("unmuted",{audio:e,video:t})}}class _c{constructor(e){if(this.headers={},e.length>0){let t=!1;const n=e.split(`\r
|
|
18335
18335
|
`),i=n.shift().split(/\s/);this.protocol=i[0],this.ident=i[1],this.code=i.length>3?parseInt(i[2]):0,this.method=i.length>3?i[3]:i[2],this.body="";for(const s of n){if(s==`-------${this.ident}$`)break;if(s===""){t=!0;continue}if(s&&t)this.body+=`${s}\r
|
|
18336
18336
|
`;else{const a=s.split(": ");this.addHeader(a[0],a[1].trim())}}}else this.ident=Yt.createRandomToken(12),this.protocol="MSRP"}addHeader(e,t){this.headers[e]=t}getHeader(e){return this.headers[e]}toString(){let e=`${this.protocol} ${this.ident} ${this.code} ${this.method}`.replaceAll(/null\s|undefined\s/ig,"")+`\r
|
package/dist/opensips-js.es.js
CHANGED
|
@@ -71291,8 +71291,8 @@ class o_e extends Dw {
|
|
|
71291
71291
|
Mh.MediaPipeSelfieSegmentation,
|
|
71292
71292
|
{
|
|
71293
71293
|
runtime: cx.runtime,
|
|
71294
|
-
modelType: cx.modelType
|
|
71295
|
-
solutionPath:
|
|
71294
|
+
modelType: cx.modelType
|
|
71295
|
+
//solutionPath: 'https://cdn.jsdelivr.net/npm/@mediapipe/selfie_segmentation@0.1.1675465747'
|
|
71296
71296
|
}
|
|
71297
71297
|
);
|
|
71298
71298
|
}
|