@pipsend/charts 2.0.0 → 2.1.0
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/README.md +65 -0
- package/dist/pipsend-charts.development.mjs +161 -3
- package/dist/pipsend-charts.production.mjs +2 -2
- package/dist/pipsend-charts.standalone.development.js +162 -2
- package/dist/pipsend-charts.standalone.development.mjs +161 -3
- package/dist/pipsend-charts.standalone.production.js +2 -2
- package/dist/pipsend-charts.standalone.production.mjs +2 -2
- package/dist/typings.d.ts +79 -0
- package/package.json +1 -83
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* @license
|
|
3
|
-
* Pipsend Charts
|
|
3
|
+
* Pipsend Charts v2.1.0
|
|
4
4
|
* Copyright (c) 2026 Pipsend
|
|
5
5
|
* Licensed under MIT License
|
|
6
6
|
* Built on TradingView Lightweight Charts™ (Apache 2.0)
|
|
7
7
|
*/
|
|
8
|
-
const t={title:"",visible:!0,lastValueVisible:!0,priceLineVisible:!0,priceLineSource:0,priceLineWidth:1,priceLineColor:"",priceLineStyle:2,baseLineVisible:!0,baseLineWidth:1,baseLineColor:"#B2B5BE",baseLineStyle:0,priceFormat:{type:"price",precision:2,minMove:.01}};var i,s;function n(t,i){const s={0:[],1:[t.lineWidth,t.lineWidth],2:[2*t.lineWidth,2*t.lineWidth],3:[6*t.lineWidth,6*t.lineWidth],4:[t.lineWidth,4*t.lineWidth]}[i];t.setLineDash(s)}function e(t,i,s,n){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(s,i+e),t.lineTo(n,i+e),t.stroke()}function h(t,i){if(!t)throw new Error("Assertion failed"+(i?": "+i:""))}function r(t){if(void 0===t)throw new Error("Value is undefined");return t}function l(t){if(null===t)throw new Error("Value is null");return t}function a(t){return l(r(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps",t[t.Curved=2]="Curved"}(i||(i={})),function(t){t[t.Solid=0]="Solid",t[t.Dotted=1]="Dotted",t[t.Dashed=2]="Dashed",t[t.LargeDashed=3]="LargeDashed",t[t.SparseDotted=4]="SparseDotted"}(s||(s={}));class o{constructor(){this.t=[]}i(t,i,s){const n={h:t,l:i,o:!0===s};this.t.push(n)}_(t){const i=this.t.findIndex(i=>t===i.h);i>-1&&this.t.splice(i,1)}u(t){this.t=this.t.filter(i=>i.l!==t)}p(t,i,s){const n=[...this.t];this.t=this.t.filter(t=>!t.o),n.forEach(n=>n.h(t,i,s))}v(){return this.t.length>0}m(){this.t=[]}}function _(t,...i){for(const s of i)for(const i in s)void 0!==s[i]&&Object.prototype.hasOwnProperty.call(s,i)&&!["__proto__","constructor","prototype"].includes(i)&&("object"!=typeof s[i]||void 0===t[i]||Array.isArray(s[i])?t[i]=s[i]:_(t[i],s[i]));return t}function u(t){return"number"==typeof t&&isFinite(t)}function c(t){return"number"==typeof t&&t%1==0}function d(t){return"string"==typeof t}function f(t){return"boolean"==typeof t}function p(t){const i=t;if(!i||"object"!=typeof i)return i;let s,n,e;for(n in s=Array.isArray(i)?[]:{},i)i.hasOwnProperty(n)&&(e=i[n],s[n]=e&&"object"==typeof e?p(e):e);return s}function v(t){return null!==t}function m(t){return null===t?void 0:t}const w="-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif";function g(t,i,s){return void 0===i&&(i=w),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class M{constructor(t){this.M={S:1,P:5,C:NaN,T:"",D:"",R:"",V:"",L:0,A:0,I:0,F:0,B:0},this.O=t}W(){const t=this.M,i=this.$(),s=this.H();return t.C===i&&t.D===s||(t.C=i,t.D=s,t.T=g(i,s),t.F=2.5/12*i,t.L=t.F,t.A=i/12*t.P,t.I=i/12*t.P,t.B=0),t.R=this.N(),t.V=this.U(),this.M}N(){return this.O.W().layout.textColor}U(){return this.O.q()}$(){return this.O.W().layout.fontSize}H(){return this.O.W().layout.fontFamily}}function b(t){return t<0?0:t>255?255:Math.round(t)||0}function y(t){return.199*t[0]+.687*t[1]+.114*t[2]}class S{constructor(t,i){this.j=new Map,this.Y=t,i&&(this.j=i)}G(t,i){if("transparent"===t)return t;const s=this.K(t),n=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*n})`}X(t){const i=this.K(t);return{Z:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,J:y(i)>160?"black":"white"}}tt(t){return y(this.K(t))}it(t,i,s){const[n,e,h,r]=this.K(t),[l,a,o,_]=this.K(i),u=[b(n+s*(l-n)),b(e+s*(a-e)),b(h+s*(o-h)),(c=r+s*(_-r),c<=0||c>1?Math.min(Math.max(c,0),1):Math.round(1e4*c)/1e4)];var c;return`rgba(${u[0]}, ${u[1]}, ${u[2]}, ${u[3]})`}K(t){const i=this.j.get(t);if(i)return i;const s=function(t){const i=document.createElement("div");i.style.display="none",document.body.appendChild(i),i.style.color=t;const s=window.getComputedStyle(i).color;return document.body.removeChild(i),s}(t),n=s.match(/^rgba?\s*\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)$/);if(!n){if(this.Y.length)for(const i of this.Y){const s=i(t);if(s)return this.j.set(t,s),s}throw new Error(`Failed to parse color: ${t}`)}const e=[parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3],10),n[4]?parseFloat(n[4]):1];return this.j.set(t,e),e}}class x{constructor(){this.st=[]}nt(t){this.st=t}et(t,i,s){this.st.forEach(n=>{n.et(t,i,s)})}}class P{et(t,i,s){t.useBitmapCoordinateSpace(t=>this.ht(t,i,s))}}class C extends P{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.rt||null===this.rt.ot)return;const n=this.rt.ot,e=this.rt,h=Math.max(1,Math.floor(i))%2/2,r=r=>{t.beginPath();for(let l=n.to-1;l>=n.from;--l){const n=e._t[l],a=Math.round(n.ut*i)+h,o=n.ct*s,_=r*s+h;t.moveTo(a,o),t.arc(a,o,_,0,2*Math.PI)}t.fill()};e.dt>0&&(t.fillStyle=e.ft,r(e.vt+e.dt)),t.fillStyle=e.wt,r(e.vt)}}function T(){return{_t:[{ut:0,ct:0,gt:0,Mt:0}],wt:"",ft:"",vt:0,dt:0,ot:null}}const k={from:0,to:1};class D{constructor(t,i,s){this.bt=new x,this.yt=[],this.St=[],this.xt=!0,this.O=t,this.Pt=i,this.Ct=s,this.bt.nt(this.yt)}Tt(t){this.kt(),this.xt=!0}Dt(){return this.xt&&(this.Rt(),this.xt=!1),this.bt}kt(){const t=this.Ct.Et();t.length!==this.yt.length&&(this.St=t.map(T),this.yt=this.St.map(t=>{const i=new C;return i.lt(t),i}),this.bt.nt(this.yt))}Rt(){const t=2===this.Pt.W().mode||!this.Pt.Vt(),i=this.Ct.Lt(),s=this.Pt.At(),n=this.O.It();this.kt(),i.forEach((i,e)=>{const h=this.St[e],r=i.Ft(s),l=i.Bt();!t&&null!==r&&i.Vt()&&null!==l?(h.wt=r.zt,h.vt=r.vt,h.dt=r.Ot,h._t[0].Mt=r.Mt,h._t[0].ct=i.$t().Wt(r.Mt,l.Ht),h.ft=r.Nt??this.O.Ut(h._t[0].ct/i.$t().qt()),h._t[0].gt=s,h._t[0].ut=n.jt(s),h.ot=k):h.ot=null})}}class R extends P{constructor(t){super(),this.Yt=t}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:h}){if(null===this.Yt)return;const r=this.Yt.Gt.Vt,l=this.Yt.Kt.Vt;if(!r&&!l)return;const a=Math.round(this.Yt.ut*s),o=Math.round(this.Yt.ct*h);t.lineCap="butt",r&&a>=0&&(t.lineWidth=Math.floor(this.Yt.Gt.dt*s),t.strokeStyle=this.Yt.Gt.R,t.fillStyle=this.Yt.Gt.R,n(t,this.Yt.Gt.Xt),function(t,i,s,n){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(i+e,s),t.lineTo(i+e,n),t.stroke()}(t,a,0,i.height)),l&&o>=0&&(t.lineWidth=Math.floor(this.Yt.Kt.dt*h),t.strokeStyle=this.Yt.Kt.R,t.fillStyle=this.Yt.Kt.R,n(t,this.Yt.Kt.Xt),e(t,o,0,i.width))}}class E{constructor(t,i){this.xt=!0,this.Zt={Gt:{dt:1,Xt:0,R:"",Vt:!1},Kt:{dt:1,Xt:0,R:"",Vt:!1},ut:0,ct:0},this.Jt=new R(this.Zt),this.Qt=t,this.Ct=i}Tt(){this.xt=!0}Dt(t){return this.xt&&(this.Rt(),this.xt=!1),this.Jt}Rt(){const t=this.Qt.Vt(),i=this.Ct.ti().W().crosshair,s=this.Zt;if(2===i.mode)return s.Kt.Vt=!1,void(s.Gt.Vt=!1);s.Kt.Vt=t&&this.Qt.ii(this.Ct),s.Gt.Vt=t&&this.Qt.si(),s.Kt.dt=i.horzLine.width,s.Kt.Xt=i.horzLine.style,s.Kt.R=i.horzLine.color,s.Gt.dt=i.vertLine.width,s.Gt.Xt=i.vertLine.style,s.Gt.R=i.vertLine.color,s.ut=this.Qt.ni(),s.ct=this.Qt.ei()}}function V(t,i,s,n,e,h){t.fillRect(i+h,s,n-2*h,h),t.fillRect(i+h,s+e-h,n-2*h,h),t.fillRect(i,s,h,e),t.fillRect(i+n-h,s,h,e)}function L(t,i,s,n,e,h){t.save(),t.globalCompositeOperation="copy",t.fillStyle=h,t.fillRect(i,s,n,e),t.restore()}function A(t,i,s,n,e,h){t.beginPath(),t.roundRect?t.roundRect(i,s,n,e,h):(t.lineTo(i+n-h[1],s),0!==h[1]&&t.arcTo(i+n,s,i+n,s+h[1],h[1]),t.lineTo(i+n,s+e-h[2]),0!==h[2]&&t.arcTo(i+n,s+e,i+n-h[2],s+e,h[2]),t.lineTo(i+h[3],s+e),0!==h[3]&&t.arcTo(i,s+e,i,s+e-h[3],h[3]),t.lineTo(i,s+h[0]),0!==h[0]&&t.arcTo(i,s,i+h[0],s,h[0]))}function I(t,i,s,n,e,h,r=0,l=[0,0,0,0],a=""){if(t.save(),!r||!a||a===h)return A(t,i,s,n,e,l),t.fillStyle=h,t.fill(),void t.restore();const o=r/2;var _;A(t,i+o,s+o,n-r,e-r,(_=-o,l.map(t=>0===t?t:t+_))),"transparent"!==h&&(t.fillStyle=h,t.fill()),"transparent"!==a&&(t.lineWidth=r,t.strokeStyle=a,t.closePath(),t.stroke()),t.restore()}function F(t,i,s,n,e,h,r){t.save(),t.globalCompositeOperation="copy";const l=t.createLinearGradient(0,0,0,e);l.addColorStop(0,h),l.addColorStop(1,r),t.fillStyle=l,t.fillRect(i,s,n,e),t.restore()}class B{constructor(t,i){this.lt(t,i)}lt(t,i){this.Yt=t,this.hi=i}qt(t,i){return this.Yt.Vt?t.C+t.F+t.L:0}et(t,i,s,n){if(!this.Yt.Vt||0===this.Yt.ri.length)return;const e=this.Yt.R,h=this.hi.Z,r=t.useBitmapCoordinateSpace(t=>{const r=t.context;r.font=i.T;const l=this.li(t,i,s,n),a=l.ai;return l.oi?I(r,a._i,a.ui,a.ci,a.di,h,a.fi,[a.vt,0,0,a.vt],h):I(r,a.pi,a.ui,a.ci,a.di,h,a.fi,[0,a.vt,a.vt,0],h),this.Yt.mi&&(r.fillStyle=e,r.fillRect(a.pi,a.wi,a.gi-a.pi,a.Mi)),this.Yt.bi&&(r.fillStyle=i.V,r.fillRect(l.oi?a.yi-a.fi:0,a.ui,a.fi,a.Si-a.ui)),l});t.useMediaCoordinateSpace(({context:t})=>{const s=r.xi;t.font=i.T,t.textAlign=r.oi?"right":"left",t.textBaseline="middle",t.fillStyle=e,t.fillText(this.Yt.ri,s.Pi,(s.ui+s.Si)/2+s.Ci)})}li(t,i,s,n){const{context:e,bitmapSize:h,mediaSize:r,horizontalPixelRatio:l,verticalPixelRatio:a}=t,o=this.Yt.mi||!this.Yt.Ti?i.P:0,_=this.Yt.ki?i.S:0,u=i.F+this.hi.Di,c=i.L+this.hi.Ri,d=i.A,f=i.I,p=this.Yt.ri,v=i.C,m=s.Ei(e,p),w=Math.ceil(s.Vi(e,p)),g=v+u+c,M=i.S+d+f+w+o,b=Math.max(1,Math.floor(a));let y=Math.round(g*a);y%2!=b%2&&(y+=1);const S=_>0?Math.max(1,Math.floor(_*l)):0,x=Math.round(M*l),P=Math.round(o*l),C=this.hi.Li??this.hi.Ai,T=Math.round(C*a)-Math.floor(.5*a),k=Math.floor(T+b/2-y/2),D=k+y,R="right"===n,E=R?r.width-_:_,V=R?h.width-S:S;let L,A,I;return R?(L=V-x,A=V-P,I=E-o-d-_):(L=V+x,A=V+P,I=E+o+d),{oi:R,ai:{ui:k,wi:T,Si:D,ci:x,di:y,vt:2*l,fi:S,_i:L,pi:V,gi:A,Mi:b,yi:h.width},xi:{ui:k/a,Si:D/a,Pi:I,Ci:m}}}}class z{constructor(t){this.Ii={Ai:0,Z:"#000",Ri:0,Di:0},this.Fi={ri:"",Vt:!1,mi:!0,Ti:!1,Nt:"",R:"#FFF",bi:!1,ki:!1},this.Bi={ri:"",Vt:!1,mi:!1,Ti:!0,Nt:"",R:"#FFF",bi:!0,ki:!0},this.xt=!0,this.zi=new(t||B)(this.Fi,this.Ii),this.Oi=new(t||B)(this.Bi,this.Ii)}ri(){return this.Wi(),this.Fi.ri}Ai(){return this.Wi(),this.Ii.Ai}Tt(){this.xt=!0}qt(t,i=!1){return Math.max(this.zi.qt(t,i),this.Oi.qt(t,i))}$i(){return this.Ii.Li||0}Hi(t){this.Ii.Li=t}Ni(){return this.Wi(),this.Fi.Vt||this.Bi.Vt}Ui(){return this.Wi(),this.Fi.Vt}Dt(t){return this.Wi(),this.Fi.mi=this.Fi.mi&&t.W().ticksVisible,this.Bi.mi=this.Bi.mi&&t.W().ticksVisible,this.zi.lt(this.Fi,this.Ii),this.Oi.lt(this.Bi,this.Ii),this.zi}qi(){return this.Wi(),this.zi.lt(this.Fi,this.Ii),this.Oi.lt(this.Bi,this.Ii),this.Oi}Wi(){this.xt&&(this.Fi.mi=!0,this.Bi.mi=!1,this.ji(this.Fi,this.Bi,this.Ii))}}class O extends z{constructor(t,i,s){super(),this.Qt=t,this.Yi=i,this.Gi=s}ji(t,i,s){if(t.Vt=!1,2===this.Qt.W().mode)return;const n=this.Qt.W().horzLine;if(!n.labelVisible)return;const e=this.Yi.Bt();if(!this.Qt.Vt()||this.Yi.Ki()||null===e)return;const h=this.Yi.Xi().X(n.labelBackgroundColor);s.Z=h.Z,t.R=h.J;const r=2/12*this.Yi.C();s.Di=r,s.Ri=r;const l=this.Gi(this.Yi);s.Ai=l.Ai,t.ri=this.Yi.Zi(l.Mt,e),t.Vt=!0}}const W=/[1-9]/g;class ${constructor(){this.Yt=null}lt(t){this.Yt=t}et(t,i){if(null===this.Yt||!1===this.Yt.Vt||0===this.Yt.ri.length)return;const s=t.useMediaCoordinateSpace(({context:t})=>(t.font=i.T,Math.round(i.Ji.Vi(t,l(this.Yt).ri,W))));if(s<=0)return;const n=i.Qi,e=s+2*n,h=e/2,r=this.Yt.ts;let a=this.Yt.Ai,o=Math.floor(a-h)+.5;o<0?(a+=Math.abs(0-o),o=Math.floor(a-h)+.5):o+e>r&&(a-=Math.abs(r-(o+e)),o=Math.floor(a-h)+.5);const _=o+e,u=Math.ceil(0+i.S+i.P+i.F+i.C+i.L);t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:s,verticalPixelRatio:n})=>{const e=l(this.Yt);t.fillStyle=e.Z;const h=Math.round(o*s),r=Math.round(0*n),a=Math.round(_*s),c=Math.round(u*n),d=Math.round(2*s);if(t.beginPath(),t.moveTo(h,r),t.lineTo(h,c-d),t.arcTo(h,c,h+d,c,d),t.lineTo(a-d,c),t.arcTo(a,c,a,c-d,d),t.lineTo(a,r),t.fill(),e.mi){const h=Math.round(e.Ai*s),l=r,a=Math.round((l+i.P)*n);t.fillStyle=e.R;const o=Math.max(1,Math.floor(s)),_=Math.floor(.5*s);t.fillRect(h-_,l,o,a-l)}}),t.useMediaCoordinateSpace(({context:t})=>{const s=l(this.Yt),e=0+i.S+i.P+i.F+i.C/2;t.font=i.T,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.R;const h=i.Ji.Ei(t,"Apr0");t.translate(o+n,e+h),t.fillText(s.ri,0,0)})}}class H{constructor(t,i,s){this.xt=!0,this.Jt=new $,this.Zt={Vt:!1,Z:"#4c525e",R:"white",ri:"",ts:0,Ai:NaN,mi:!0},this.Pt=t,this.ss=i,this.Gi=s}Tt(){this.xt=!0}Dt(){return this.xt&&(this.Rt(),this.xt=!1),this.Jt.lt(this.Zt),this.Jt}Rt(){const t=this.Zt;if(t.Vt=!1,2===this.Pt.W().mode)return;const i=this.Pt.W().vertLine;if(!i.labelVisible)return;const s=this.ss.It();if(s.Ki())return;t.ts=s.ts();const n=this.Gi();if(null===n)return;t.Ai=n.Ai;const e=s.ns(this.Pt.At());t.ri=s.es(l(e)),t.Vt=!0;const h=this.ss.Xi().X(i.labelBackgroundColor);t.Z=h.Z,t.R=h.J,t.mi=s.W().ticksVisible}}class N{constructor(){this.hs=null,this.rs=0}ls(){return this.rs}_s(t){this.rs=t}$t(){return this.hs}us(t){this.hs=t}cs(t){return[]}ds(){return[]}Vt(){return!0}}var U;!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet",t[t.Hidden=2]="Hidden",t[t.MagnetOHLC=3]="MagnetOHLC"}(U||(U={}));class q extends N{constructor(t,i){super(),this.Ct=null,this.fs=NaN,this.ps=0,this.vs=!1,this.ws=new Map,this.gs=!1,this.Ms=new WeakMap,this.bs=new WeakMap,this.ys=NaN,this.Ss=NaN,this.xs=NaN,this.Ps=NaN,this.ss=t,this.Cs=i;this.Ts=((t,i)=>s=>{const n=i(),e=t();if(s===l(this.Ct).ks())return{Mt:e,Ai:n};{const t=l(s.Bt());return{Mt:s.Ds(n,t),Ai:n}}})(()=>this.fs,()=>this.Ss);const s=((t,i)=>()=>{const s=this.ss.It().Rs(t()),n=i();return s&&Number.isFinite(n)?{gt:s,Ai:n}:null})(()=>this.ps,()=>this.ni());this.Es=new H(this,t,s)}W(){return this.Cs}Vs(t,i){this.xs=t,this.Ps=i}Ls(){this.xs=NaN,this.Ps=NaN}As(){return this.xs}Is(){return this.Ps}Fs(t,i,s){this.gs||(this.gs=!0),this.vs=!0,this.Bs(t,i,s)}At(){return this.ps}ni(){return this.ys}ei(){return this.Ss}Vt(){return this.vs}zs(){this.vs=!1,this.Os(),this.fs=NaN,this.ys=NaN,this.Ss=NaN,this.Ct=null,this.Ls(),this.Ws()}$s(t){let i=this.Ms.get(t);i||(i=new E(this,t),this.Ms.set(t,i));let s=this.bs.get(t);return s||(s=new D(this.ss,this,t),this.bs.set(t,s)),[i,s]}ii(t){return t===this.Ct&&this.Cs.horzLine.visible}si(){return this.Cs.vertLine.visible}Hs(t,i){this.vs&&this.Ct===t||this.ws.clear();const s=[];return this.Ct===t&&s.push(this.Ns(this.ws,i,this.Ts)),s}ds(){return this.vs?[this.Es]:[]}Us(){return this.Ct}Ws(){this.ss.qs().forEach(t=>{this.Ms.get(t)?.Tt(),this.bs.get(t)?.Tt()}),this.ws.forEach(t=>t.Tt()),this.Es.Tt()}js(t){return t&&!t.ks().Ki()?t.ks():null}Bs(t,i,s){this.Ys(t,i,s)&&this.Ws()}Ys(t,i,s){const n=this.ys,e=this.Ss,h=this.fs,r=this.ps,l=this.Ct,a=this.js(s);this.ps=t,this.ys=isNaN(t)?NaN:this.ss.It().jt(t),this.Ct=s;const o=null!==a?a.Bt():null;return null!==a&&null!==o?(this.fs=i,this.Ss=a.Wt(i,o)):(this.fs=NaN,this.Ss=NaN),n!==this.ys||e!==this.Ss||r!==this.ps||h!==this.fs||l!==this.Ct}Os(){const t=this.ss.Gs().map(t=>t.Xs().Ks()).filter(v),i=0===t.length?null:Math.max(...t);this.ps=null!==i?i:NaN}Ns(t,i,s){let n=t.get(i);return void 0===n&&(n=new O(this,i,s),t.set(i,n)),n}}function j(t){return"left"===t||"right"===t}class Y{constructor(t){this.Zs=new Map,this.Js=[],this.Qs=t}tn(t,i){const s=function(t,i){return void 0===t?i:{sn:Math.max(t.sn,i.sn),nn:t.nn||i.nn}}(this.Zs.get(t),i);this.Zs.set(t,s)}en(){return this.Qs}hn(t){const i=this.Zs.get(t);return void 0===i?{sn:this.Qs}:{sn:Math.max(this.Qs,i.sn),nn:i.nn}}rn(){this.ln(),this.Js=[{an:0}]}_n(t){this.ln(),this.Js=[{an:1,Ht:t}]}un(t){this.cn(),this.Js.push({an:5,Ht:t})}ln(){this.cn(),this.Js.push({an:6})}dn(){this.ln(),this.Js=[{an:4}]}fn(t){this.ln(),this.Js.push({an:2,Ht:t})}pn(t){this.ln(),this.Js.push({an:3,Ht:t})}vn(){return this.Js}mn(t){for(const i of t.Js)this.wn(i);this.Qs=Math.max(this.Qs,t.Qs),t.Zs.forEach((t,i)=>{this.tn(i,t)})}static gn(){return new Y(2)}static Mn(){return new Y(3)}wn(t){switch(t.an){case 0:this.rn();break;case 1:this._n(t.Ht);break;case 2:this.fn(t.Ht);break;case 3:this.pn(t.Ht);break;case 4:this.dn();break;case 5:this.un(t.Ht);break;case 6:this.cn()}}cn(){const t=this.Js.findIndex(t=>5===t.an);-1!==t&&this.Js.splice(t,1)}}class G{formatTickmarks(t){return t.map(t=>this.format(t))}}const K=".";function X(t,i){if(!u(t))return"n/a";if(!c(i))throw new TypeError("invalid length");if(i<0||i>16)throw new TypeError("invalid length");if(0===i)return t.toString();return("0000000000000000"+t.toString()).slice(-i)}class Z extends G{constructor(t,i){if(super(),i||(i=1),u(t)&&c(t)||(t=100),t<0)throw new TypeError("invalid base");this.Yi=t,this.bn=i,this.yn()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.Sn(t)}yn(){if(this.xn=0,this.Yi>0&&this.bn>0){let t=this.Yi;for(;t>1;)t/=10,this.xn++}}Sn(t){const i=this.Yi/this.bn;let s=Math.floor(t),n="";const e=void 0!==this.xn?this.xn:NaN;if(i>1){let h=+(Math.round(t*i)-s*i).toFixed(this.xn);h>=i&&(h-=i,s+=1),n=K+X(+h.toFixed(this.xn)*this.bn,e)}else s=Math.round(s*i)/i,e>0&&(n=K+X(0,e));return s.toFixed(0)+n}}class J extends Z{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class Q extends G{constructor(t){super(),this.Pn=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.Cn(t):t<999995?i+this.Cn(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.Cn(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.Cn(t/1e9)+"B")}Cn(t){let i;const s=Math.pow(10,this.Pn);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.Pn).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,(t,i)=>i)}}const tt=/[2-9]/g;class it{constructor(t=50){this.Tn=0,this.kn=1,this.Dn=1,this.Rn={},this.En=new Map,this.Vn=t}Ln(){this.Tn=0,this.En.clear(),this.kn=1,this.Dn=1,this.Rn={}}Vi(t,i,s){return this.An(t,i,s).width}Ei(t,i,s){const n=this.An(t,i,s);return((n.actualBoundingBoxAscent||0)-(n.actualBoundingBoxDescent||0))/2}An(t,i,s){const n=s||tt,e=String(i).replace(n,"0");if(this.En.has(e))return r(this.En.get(e)).In;if(this.Tn===this.Vn){const t=this.Rn[this.Dn];delete this.Rn[this.Dn],this.En.delete(t),this.Dn++,this.Tn--}t.save(),t.textBaseline="middle";const h=t.measureText(e);return t.restore(),0===h.width&&i.length||(this.En.set(e,{In:h,Fn:this.kn}),this.Rn[this.kn]=e,this.Tn++,this.kn++),h}}class st{constructor(t){this.Bn=null,this.M=null,this.zn="right",this.On=t}Wn(t,i,s){this.Bn=t,this.M=i,this.zn=s}et(t){null!==this.M&&null!==this.Bn&&this.Bn.et(t,this.M,this.On,this.zn)}}class nt{constructor(t,i,s){this.$n=t,this.On=new it(50),this.Hn=i,this.O=s,this.$=-1,this.Jt=new st(this.On)}Dt(){const t=this.O.Nn(this.Hn);if(null===t)return null;const i=t.Un(this.Hn)?t.qn():this.Hn.$t();if(null===i)return null;const s=t.jn(i);if("overlay"===s)return null;const n=this.O.Yn();return n.C!==this.$&&(this.$=n.C,this.On.Ln()),this.Jt.Wn(this.$n.qi(),n,s),this.Jt}}class et extends P{constructor(){super(...arguments),this.Yt=null}lt(t){this.Yt=t}Gn(t,i){if(!this.Yt?.Vt)return null;const{ct:s,dt:n,Kn:e}=this.Yt;return i>=s-n-7&&i<=s+n+7?{Xn:this.Yt,Kn:e}:null}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:h}){if(null===this.Yt)return;if(!1===this.Yt.Vt)return;const r=Math.round(this.Yt.ct*h);r<0||r>i.height||(t.lineCap="butt",t.strokeStyle=this.Yt.R,t.lineWidth=Math.floor(this.Yt.dt*s),n(t,this.Yt.Xt),e(t,r,0,i.width))}}class ht{constructor(t){this.Zn={ct:0,R:"rgba(0, 0, 0, 0)",dt:1,Xt:0,Vt:!1},this.Jn=new et,this.xt=!0,this.Qn=t,this.te=t.ti(),this.Jn.lt(this.Zn)}Tt(){this.xt=!0}Dt(){return this.Qn.Vt()?(this.xt&&(this.ie(),this.xt=!1),this.Jn):null}}class rt extends ht{constructor(t){super(t)}ie(){this.Zn.Vt=!1;const t=this.Qn.$t(),i=t.se().se;if(2!==i&&3!==i)return;const s=this.Qn.W();if(!s.baseLineVisible||!this.Qn.Vt())return;const n=this.Qn.Bt();null!==n&&(this.Zn.Vt=!0,this.Zn.ct=t.Wt(n.Ht,n.Ht),this.Zn.R=s.baseLineColor,this.Zn.dt=s.baseLineWidth,this.Zn.Xt=s.baseLineStyle)}}class lt extends P{constructor(){super(...arguments),this.Yt=null}lt(t){this.Yt=t}ne(){return this.Yt}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const n=this.Yt;if(null===n)return;const e=Math.max(1,Math.floor(i)),h=e%2/2,r=Math.round(n.ee.x*i)+h,l=n.ee.y*s;t.fillStyle=n.he,t.beginPath();const a=Math.max(2,1.5*n.re)*i;t.arc(r,l,a,0,2*Math.PI,!1),t.fill(),t.fillStyle=n.le,t.beginPath(),t.arc(r,l,n.vt*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=e,t.strokeStyle=n.ae,t.beginPath(),t.arc(r,l,n.vt*i+e/2,0,2*Math.PI,!1),t.stroke()}}const at=[{oe:0,_e:.25,ue:4,ce:10,de:.25,fe:0,pe:.4,ve:.8},{oe:.25,_e:.525,ue:10,ce:14,de:0,fe:0,pe:.8,ve:0},{oe:.525,_e:1,ue:14,ce:14,de:0,fe:0,pe:0,ve:0}];class ot{constructor(t){this.Jt=new lt,this.xt=!0,this.me=!0,this.we=performance.now(),this.ge=this.we-1,this.Me=t}be(){this.ge=this.we-1,this.Tt()}ye(){if(this.Tt(),2===this.Me.W().lastPriceAnimation){const t=performance.now(),i=this.ge-t;if(i>0)return void(i<650&&(this.ge+=2600));this.we=t,this.ge=t+2600}}Tt(){this.xt=!0}Se(){this.me=!0}Vt(){return 0!==this.Me.W().lastPriceAnimation}xe(){switch(this.Me.W().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.ge}}Dt(){return this.xt?(this.Rt(),this.xt=!1,this.me=!1):this.me&&(this.Pe(),this.me=!1),this.Jt}Rt(){this.Jt.lt(null);const t=this.Me.ti().It(),i=t.Ce(),s=this.Me.Bt();if(null===i||null===s)return;const n=this.Me.Te(!0);if(n.ke||!i.De(n.Re))return;const e={x:t.jt(n.Re),y:this.Me.$t().Wt(n.Mt,s.Ht)},h=n.R,r=this.Me.W().lineWidth,l=this.Ee(this.Ve(),h);this.Jt.lt({he:h,re:r,le:l.le,ae:l.ae,vt:l.vt,ee:e})}Pe(){const t=this.Jt.ne();if(null!==t){const i=this.Ee(this.Ve(),t.he);t.le=i.le,t.ae=i.ae,t.vt=i.vt}}Ve(){return this.xe()?performance.now()-this.we:2599}Le(t,i,s,n){const e=s+(n-s)*i;return this.Me.ti().Xi().G(t,e)}Ee(t,i){const s=t%2600/2600;let n;for(const t of at)if(s>=t.oe&&s<=t._e){n=t;break}h(void 0!==n,"Last price animation internal logic error");const e=(s-n.oe)/(n._e-n.oe);return{le:this.Le(i,e,n.de,n.fe),ae:this.Le(i,e,n.pe,n.ve),vt:(r=e,l=n.ue,a=n.ce,l+(a-l)*r)};var r,l,a}}class _t extends ht{constructor(t){super(t)}ie(){const t=this.Zn;t.Vt=!1;const i=this.Qn.W();if(!i.priceLineVisible||!this.Qn.Vt())return;const s=this.Qn.Te(0===i.priceLineSource);s.ke||(t.Vt=!0,t.ct=s.Ai,t.R=this.Qn.Ae(s.R),t.dt=i.priceLineWidth,t.Xt=i.priceLineStyle)}}class ut extends z{constructor(t){super(),this.Qt=t}ji(t,i,s){t.Vt=!1,i.Vt=!1;const n=this.Qt;if(!n.Vt())return;const e=n.W(),h=e.lastValueVisible,r=""!==n.Ie(),l=0===e.seriesLastValueMode,a=n.Te(!1);if(a.ke)return;h&&(t.ri=this.Fe(a,h,l),t.Vt=0!==t.ri.length),(r||l)&&(i.ri=this.Be(a,h,r,l),i.Vt=i.ri.length>0);const o=n.Ae(a.R),_=this.Qt.ti().Xi().X(o);s.Z=_.Z,s.Ai=a.Ai,i.Nt=n.ti().Ut(a.Ai/n.$t().qt()),t.Nt=o,t.R=_.J,i.R=_.J}Be(t,i,s,n){let e="";const h=this.Qt.Ie();return s&&0!==h.length&&(e+=`${h} `),i&&n&&(e+=this.Qt.$t().ze()?t.Oe:t.We),e.trim()}Fe(t,i,s){return i?s?this.Qt.$t().ze()?t.We:t.Oe:t.ri:""}}function ct(t,i,s,n){const e=Number.isFinite(i),h=Number.isFinite(s);return e&&h?t(i,s):e||h?e?i:s:n}class dt{constructor(t,i){this.$e=t,this.He=i}Ne(t){return null!==t&&(this.$e===t.$e&&this.He===t.He)}Ue(){return new dt(this.$e,this.He)}qe(){return this.$e}je(){return this.He}Ye(){return this.He-this.$e}Ki(){return this.He===this.$e||Number.isNaN(this.He)||Number.isNaN(this.$e)}mn(t){return null===t?this:new dt(ct(Math.min,this.qe(),t.qe(),-1/0),ct(Math.max,this.je(),t.je(),1/0))}Ge(t){if(!u(t))return;if(0===this.He-this.$e)return;const i=.5*(this.He+this.$e);let s=this.He-i,n=this.$e-i;s*=t,n*=t,this.He=i+s,this.$e=i+n}Ke(t){u(t)&&(this.He+=t,this.$e+=t)}Xe(){return{minValue:this.$e,maxValue:this.He}}static Ze(t){return null===t?null:new dt(t.minValue,t.maxValue)}}class ft{constructor(t,i){this.Je=t,this.Qe=i||null}th(){return this.Je}ih(){return this.Qe}Xe(){return{priceRange:null===this.Je?null:this.Je.Xe(),margins:this.Qe||void 0}}static Ze(t){return null===t?null:new ft(dt.Ze(t.priceRange),t.margins)}}class pt extends ht{constructor(t,i){super(t),this.sh=i}ie(){const t=this.Zn;t.Vt=!1;const i=this.sh.W();if(!this.Qn.Vt()||!i.lineVisible)return;const s=this.sh.nh();null!==s&&(t.Vt=!0,t.ct=s,t.R=i.color,t.dt=i.lineWidth,t.Xt=i.lineStyle,t.Kn=this.sh.W().id)}}class vt extends z{constructor(t,i){super(),this.Me=t,this.sh=i}ji(t,i,s){t.Vt=!1,i.Vt=!1;const n=this.sh.W(),e=n.axisLabelVisible,h=""!==n.title,r=this.Me;if(!e||!r.Vt())return;const l=this.sh.nh();if(null===l)return;h&&(i.ri=n.title,i.Vt=!0),i.Nt=r.ti().Ut(l/r.$t().qt()),t.ri=this.eh(n.price),t.Vt=!0;const a=this.Me.ti().Xi().X(n.axisLabelColor||n.color);s.Z=a.Z;const o=n.axisLabelTextColor||a.J;t.R=o,i.R=o,s.Ai=l}eh(t){const i=this.Me.Bt();return null===i?"":this.Me.$t().Zi(t,i.Ht)}}class mt{constructor(t,i){this.Me=t,this.Cs=i,this.hh=new pt(t,this),this.$n=new vt(t,this),this.rh=new nt(this.$n,t,t.ti())}ah(t){_(this.Cs,t),this.Tt(),this.Me.ti().oh()}W(){return this.Cs}_h(){return this.hh}uh(){return this.rh}dh(){return this.$n}Tt(){this.hh.Tt(),this.$n.Tt()}nh(){const t=this.Me,i=t.$t();if(t.ti().It().Ki()||i.Ki())return null;const s=t.Bt();return null===s?null:i.Wt(this.Cs.price,s.Ht)}}class wt extends N{constructor(t){super(),this.ss=t}ti(){return this.ss}}const gt={Bar:(t,i,s,n)=>{const e=i.upColor,h=i.downColor,r=l(t(s,n)),o=a(r.Ht[0])<=a(r.Ht[3]);return{fh:r.R??(o?e:h)}},Candlestick:(t,i,s,n)=>{const e=i.upColor,h=i.downColor,r=i.borderUpColor,o=i.borderDownColor,_=i.wickUpColor,u=i.wickDownColor,c=l(t(s,n)),d=a(c.Ht[0])<=a(c.Ht[3]);return{fh:c.R??(d?e:h),ph:c.Nt??(d?r:o),mh:c.wh??(d?_:u)}},Custom:(t,i,s,n)=>({fh:l(t(s,n)).R??i.color}),Area:(t,i,s,n)=>{const e=l(t(s,n));return{fh:e.wt??i.lineColor,wt:e.wt??i.lineColor,gh:e.gh??i.topColor,Mh:e.Mh??i.bottomColor}},Baseline:(t,i,s,n)=>{const e=l(t(s,n));return{fh:e.Ht[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,bh:e.bh??i.topLineColor,yh:e.yh??i.bottomLineColor,Sh:e.Sh??i.topFillColor1,xh:e.xh??i.topFillColor2,Ph:e.Ph??i.bottomFillColor1,Ch:e.Ch??i.bottomFillColor2}},Line:(t,i,s,n)=>{const e=l(t(s,n));return{fh:e.R??i.color,wt:e.R??i.color}},Histogram:(t,i,s,n)=>({fh:l(t(s,n)).R??i.color})};class Mt{constructor(t){this.Th=(t,i)=>void 0!==i?i.Ht:this.Me.Xs().kh(t),this.Me=t,this.Dh=gt[t.Rh()]}Eh(t,i){return this.Dh(this.Th,this.Me.W(),t,i)}}function bt(t,i,s,n,e=0,h=i.length){let r=h-e;for(;0<r;){const h=r>>1,l=e+h;n(i[l],s)===t?(e=l+1,r-=h+1):r=h}return e}const yt=bt.bind(null,!0),St=bt.bind(null,!1);var xt;!function(t){t[t.NearestLeft=-1]="NearestLeft",t[t.None=0]="None",t[t.NearestRight=1]="NearestRight"}(xt||(xt={}));const Pt=30;class Ct{constructor(){this.Vh=[],this.Lh=new Map,this.Ah=new Map,this.Ih=[]}Fh(){return this.Bh()>0?this.Vh[this.Vh.length-1]:null}zh(){return this.Bh()>0?this.Oh(0):null}Ks(){return this.Bh()>0?this.Oh(this.Vh.length-1):null}Bh(){return this.Vh.length}Ki(){return 0===this.Bh()}De(t){return null!==this.Wh(t,0)}kh(t){return this.$h(t)}$h(t,i=0){const s=this.Wh(t,i);return null===s?null:{...this.Hh(s),Re:this.Oh(s)}}Nh(){return this.Vh}Uh(t,i,s){if(this.Ki())return null;let n=null;for(const e of s){n=Tt(n,this.qh(t,i,e))}return n}lt(t){this.Ah.clear(),this.Lh.clear(),this.Vh=t,this.Ih=t.map(t=>t.Re)}jh(){return this.Ih}Oh(t){return this.Vh[t].Re}Hh(t){return this.Vh[t]}Wh(t,i){const s=this.Yh(t);if(null===s&&0!==i)switch(i){case-1:return this.Gh(t);case 1:return this.Kh(t);default:throw new TypeError("Unknown search mode")}return s}Gh(t){let i=this.Xh(t);return i>0&&(i-=1),i!==this.Vh.length&&this.Oh(i)<t?i:null}Kh(t){const i=this.Zh(t);return i!==this.Vh.length&&t<this.Oh(i)?i:null}Yh(t){const i=this.Xh(t);return i===this.Vh.length||t<this.Vh[i].Re?null:i}Xh(t){return yt(this.Vh,t,(t,i)=>t.Re<i)}Zh(t){return St(this.Vh,t,(t,i)=>t.Re>i)}Jh(t,i,s){let n=null;for(let e=t;e<i;e++){const t=this.Vh[e].Ht[s];Number.isNaN(t)||(null===n?n={Qh:t,tr:t}:(t<n.Qh&&(n.Qh=t),t>n.tr&&(n.tr=t)))}return n}qh(t,i,s){if(this.Ki())return null;let n=null;const e=l(this.zh()),h=l(this.Ks()),r=Math.max(t,e),a=Math.min(i,h),o=Math.ceil(r/Pt)*Pt,_=Math.max(o,Math.floor(a/Pt)*Pt);{const t=this.Xh(r),e=this.Zh(Math.min(a,o,i));n=Tt(n,this.Jh(t,e,s))}let u=this.Lh.get(s);void 0===u&&(u=new Map,this.Lh.set(s,u));for(let t=Math.max(o+1,r);t<_;t+=Pt){const i=Math.floor(t/Pt);let e=u.get(i);if(void 0===e){const t=this.Xh(i*Pt),n=this.Zh((i+1)*Pt-1);e=this.Jh(t,n,s),u.set(i,e)}n=Tt(n,e)}{const t=this.Xh(_),i=this.Zh(a);n=Tt(n,this.Jh(t,i,s))}return n}}function Tt(t,i){if(null===t)return i;if(null===i)return t;return{Qh:Math.min(t.Qh,i.Qh),tr:Math.max(t.tr,i.tr)}}const kt={setLineStyle:n};class Dt{constructor(t){this.ir=t}et(t,i,s){this.ir.draw(t,kt)}sr(t,i,s){this.ir.drawBackground?.(t,kt)}}class Rt{constructor(t){this.En=null,this.nr=t}Dt(){const t=this.nr.renderer();if(null===t)return null;if(this.En?.er===t)return this.En.hr;const i=new Dt(t);return this.En={er:t,hr:i},i}rr(){return this.nr.zOrder?.()??"normal"}}class Et{constructor(t){this.lr=null,this.ar=t}_r(){return this.ar}Ws(){this.ar.updateAllViews?.()}$s(){const t=this.ar.paneViews?.()??[];if(this.lr?.er===t)return this.lr.hr;const i=t.map(t=>new Rt(t));return this.lr={er:t,hr:i},i}Gn(t,i){return this.ar.hitTest?.(t,i)??null}}let Vt=class extends Et{cs(){return[]}};class Lt{constructor(t){this.ir=t}et(t,i,s){this.ir.draw(t,kt)}sr(t,i,s){this.ir.drawBackground?.(t,kt)}}class At{constructor(t){this.En=null,this.nr=t}Dt(){const t=this.nr.renderer();if(null===t)return null;if(this.En?.er===t)return this.En.hr;const i=new Lt(t);return this.En={er:t,hr:i},i}rr(){return this.nr.zOrder?.()??"normal"}}function It(t){return{ri:t.text(),Ai:t.coordinate(),Li:t.fixedCoordinate?.(),R:t.textColor(),Z:t.backColor(),Vt:t.visible?.()??!0,mi:t.tickVisible?.()??!0}}class Ft{constructor(t,i){this.Jt=new $,this.ur=t,this.cr=i}Dt(){return this.Jt.lt({ts:this.cr.ts(),...It(this.ur)}),this.Jt}}class Bt extends z{constructor(t,i){super(),this.ur=t,this.Yi=i}ji(t,i,s){const n=It(this.ur);s.Z=n.Z,t.R=n.R;const e=2/12*this.Yi.C();s.Di=e,s.Ri=e,s.Ai=n.Ai,s.Li=n.Li,t.ri=n.ri,t.Vt=n.Vt,t.mi=n.mi}}class zt extends Et{constructor(t,i){super(t),this.dr=null,this.pr=null,this.vr=null,this.mr=null,this.Me=i}ds(){const t=this.ar.timeAxisViews?.()??[];if(this.dr?.er===t)return this.dr.hr;const i=this.Me.ti().It(),s=t.map(t=>new Ft(t,i));return this.dr={er:t,hr:s},s}Hs(){const t=this.ar.priceAxisViews?.()??[];if(this.pr?.er===t)return this.pr.hr;const i=this.Me.$t(),s=t.map(t=>new Bt(t,i));return this.pr={er:t,hr:s},s}wr(){const t=this.ar.priceAxisPaneViews?.()??[];if(this.vr?.er===t)return this.vr.hr;const i=t.map(t=>new At(t));return this.vr={er:t,hr:i},i}gr(){const t=this.ar.timeAxisPaneViews?.()??[];if(this.mr?.er===t)return this.mr.hr;const i=t.map(t=>new At(t));return this.mr={er:t,hr:i},i}Mr(t,i){return this.ar.autoscaleInfo?.(t,i)??null}}function Ot(t,i,s,n){t.forEach(t=>{i(t).forEach(t=>{t.rr()===s&&n.push(t)})})}function Wt(t){return t.$s()}function $t(t){return t.wr()}function Ht(t){return t.gr()}const Nt=["Area","Line","Baseline"];class Ut extends wt{constructor(t,i,s,n,e){super(t),this.Yt=new Ct,this.hh=new _t(this),this.br=[],this.yr=new rt(this),this.Sr=null,this.Pr=null,this.Cr=null,this.Tr=[],this.Cs=s,this.kr=i;const h=new ut(this);this.ws=[h],this.rh=new nt(h,this,t),Nt.includes(this.kr)&&(this.Sr=new ot(this)),this.Dr(),this.nr=n(this,this.ti(),e)}m(){null!==this.Cr&&clearTimeout(this.Cr)}Ae(t){return this.Cs.priceLineColor||t}Te(t){const i={ke:!0},s=this.$t();if(this.ti().It().Ki()||s.Ki()||this.Yt.Ki())return i;const n=this.ti().It().Ce(),e=this.Bt();if(null===n||null===e)return i;let h,r;if(t){const t=this.Yt.Fh();if(null===t)return i;h=t,r=t.Re}else{const t=this.Yt.$h(n.yi(),-1);if(null===t)return i;if(h=this.Yt.kh(t.Re),null===h)return i;r=t.Re}const l=h.Ht[3],a=this.Rr().Eh(r,{Ht:h}),o=s.Wt(l,e.Ht);return{ke:!1,Mt:l,ri:s.Zi(l,e.Ht),Oe:s.Er(l),We:s.Vr(l,e.Ht),R:a.fh,Ai:o,Re:r}}Rr(){return null!==this.Pr||(this.Pr=new Mt(this)),this.Pr}W(){return this.Cs}ah(t){const i=t.priceScaleId;void 0!==i&&i!==this.Cs.priceScaleId&&this.ti().Lr(this,i),_(this.Cs,t),void 0!==t.priceFormat&&(this.Dr(),this.ti().Ar()),this.ti().Ir(this),this.ti().Fr(),this.nr.Tt("options")}lt(t,i){this.Yt.lt(t),this.nr.Tt("data"),null!==this.Sr&&(i&&i.Br?this.Sr.ye():0===t.length&&this.Sr.be());const s=this.ti().Nn(this);this.ti().zr(s),this.ti().Ir(this),this.ti().Fr(),this.ti().oh()}Or(t){const i=new mt(this,t);return this.br.push(i),this.ti().Ir(this),i}Wr(t){const i=this.br.indexOf(t);-1!==i&&this.br.splice(i,1),this.ti().Ir(this)}$r(){return this.br}Rh(){return this.kr}Bt(){const t=this.Hr();return null===t?null:{Ht:t.Ht[3],Nr:t.gt}}Hr(){const t=this.ti().It().Ce();if(null===t)return null;const i=t.Ur();return this.Yt.$h(i,1)}Xs(){return this.Yt}qr(t){const i=this.Yt.kh(t);return null===i?null:"Bar"===this.kr||"Candlestick"===this.kr||"Custom"===this.kr?{jr:i.Ht[0],Yr:i.Ht[1],Gr:i.Ht[2],Kr:i.Ht[3]}:i.Ht[3]}Xr(t){const i=[];Ot(this.Tr,Wt,"top",i);const s=this.Sr;return null!==s&&s.Vt()?(null===this.Cr&&s.xe()&&(this.Cr=setTimeout(()=>{this.Cr=null,this.ti().Zr()},0)),s.Se(),i.unshift(s),i):i}$s(){const t=[];this.Jr()||t.push(this.yr),t.push(this.nr,this.hh);const i=this.br.map(t=>t._h());return t.push(...i),Ot(this.Tr,Wt,"normal",t),t}Qr(){return this.tl(Wt,"bottom")}il(t){return this.tl($t,t)}sl(t){return this.tl(Ht,t)}nl(t,i){return this.Tr.map(s=>s.Gn(t,i)).filter(t=>null!==t)}cs(){return[this.rh,...this.br.map(t=>t.uh())]}Hs(t,i){if(i!==this.hs&&!this.Jr())return[];const s=[...this.ws];for(const t of this.br)s.push(t.dh());return this.Tr.forEach(t=>{s.push(...t.Hs())}),s}ds(){const t=[];return this.Tr.forEach(i=>{t.push(...i.ds())}),t}Mr(t,i){if(void 0!==this.Cs.autoscaleInfoProvider){const s=this.Cs.autoscaleInfoProvider(()=>{const s=this.el(t,i);return null===s?null:s.Xe()});return ft.Ze(s)}return this.el(t,i)}er(){const t=this.Cs.priceFormat;return t.base??1/t.minMove}hl(){return this.rl}Ws(){this.nr.Tt();for(const t of this.ws)t.Tt();for(const t of this.br)t.Tt();this.hh.Tt(),this.yr.Tt(),this.Sr?.Tt(),this.Tr.forEach(t=>t.Ws())}$t(){return l(super.$t())}Ft(t){if(!(("Line"===this.kr||"Area"===this.kr||"Baseline"===this.kr)&&this.Cs.crosshairMarkerVisible))return null;const i=this.Yt.kh(t);if(null===i)return null;return{Mt:i.Ht[3],vt:this.ll(),Nt:this.al(),Ot:this.ol(),zt:this._l(t)}}Ie(){return this.Cs.title}Vt(){return this.Cs.visible}ul(t){this.Tr.push(new zt(t,this))}cl(t){this.Tr=this.Tr.filter(i=>i._r()!==t)}dl(){if("Custom"===this.kr)return t=>this.nr.fl(t)}pl(){if("Custom"===this.kr)return t=>this.nr.vl(t)}ml(){return this.Yt.jh()}Jr(){return!j(this.$t().wl())}el(t,i){if(!c(t)||!c(i)||this.Yt.Ki())return null;const s="Line"===this.kr||"Area"===this.kr||"Baseline"===this.kr||"Histogram"===this.kr?[3]:[2,1],n=this.Yt.Uh(t,i,s);let e=null!==n?new dt(n.Qh,n.tr):null,h=null;if("Histogram"===this.Rh()){const t=this.Cs.base,i=new dt(t,t);e=null!==e?e.mn(i):i}return this.Tr.forEach(s=>{const n=s.Mr(t,i);if(n?.priceRange){const t=new dt(n.priceRange.minValue,n.priceRange.maxValue);e=null!==e?e.mn(t):t}n?.margins&&(h=n.margins)}),new ft(e,h)}ll(){switch(this.kr){case"Line":case"Area":case"Baseline":return this.Cs.crosshairMarkerRadius}return 0}al(){switch(this.kr){case"Line":case"Area":case"Baseline":{const t=this.Cs.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}ol(){switch(this.kr){case"Line":case"Area":case"Baseline":return this.Cs.crosshairMarkerBorderWidth}return 0}_l(t){switch(this.kr){case"Line":case"Area":case"Baseline":{const t=this.Cs.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Rr().Eh(t).fh}Dr(){switch(this.Cs.priceFormat.type){case"custom":{const t=this.Cs.priceFormat.formatter;this.rl={format:t,formatTickmarks:this.Cs.priceFormat.tickmarksFormatter??(i=>i.map(t))};break}case"volume":this.rl=new Q(this.Cs.priceFormat.precision);break;case"percent":this.rl=new J(this.Cs.priceFormat.precision);break;default:{const t=Math.pow(10,this.Cs.priceFormat.precision);this.rl=new Z(t,this.Cs.priceFormat.minMove*t)}}null!==this.hs&&this.hs.gl()}tl(t,i){const s=[];return Ot(this.Tr,t,i,s),s}}const qt=[3],jt=[0,1,2,3];class Yt{constructor(t){this.Cs=t}Ml(t,i,s){let n=t;if(0===this.Cs.mode)return n;const e=s.ks(),h=e.Bt();if(null===h)return n;const r=e.Wt(t,h),l=s.bl().filter(t=>t instanceof Ut).reduce((t,n)=>{if(s.Un(n)||!n.Vt())return t;const e=n.$t(),h=n.Xs();if(e.Ki()||!h.De(i))return t;const r=h.kh(i);if(null===r)return t;const l=a(n.Bt()),o=3===this.Cs.mode?jt:qt;return t.concat(o.map(t=>e.Wt(r.Ht[t],l.Ht)))},[]);if(0===l.length)return n;l.sort((t,i)=>Math.abs(t-r)-Math.abs(i-r));const o=l[0];return n=e.Ds(o,h),n}}function Gt(t,i,s){return Math.min(Math.max(t,i),s)}function Kt(t,i,s){return i-t<=s}function Xt(t){const i=Math.ceil(t);return i%2==0?i-1:i}class Zt extends P{constructor(){super(...arguments),this.Yt=null}lt(t){this.Yt=t}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.Yt)return;const h=Math.max(1,Math.floor(s));t.lineWidth=h,function(t,i){t.save(),t.lineWidth%2&&t.translate(.5,.5),i(),t.restore()}(t,()=>{const r=l(this.Yt);if(r.yl){t.strokeStyle=r.Sl,n(t,r.xl),t.beginPath();for(const n of r.Pl){const e=Math.round(n.Cl*s);t.moveTo(e,-h),t.lineTo(e,i.height+h)}t.stroke()}if(r.Tl){t.strokeStyle=r.kl,n(t,r.Dl),t.beginPath();for(const s of r.Rl){const n=Math.round(s.Cl*e);t.moveTo(-h,n),t.lineTo(i.width+h,n)}t.stroke()}})}}class Jt{constructor(t){this.Jt=new Zt,this.xt=!0,this.Ct=t}Tt(){this.xt=!0}Dt(){if(this.xt){const t=this.Ct.ti().W().grid,i={Tl:t.horzLines.visible,yl:t.vertLines.visible,kl:t.horzLines.color,Sl:t.vertLines.color,Dl:t.horzLines.style,xl:t.vertLines.style,Rl:this.Ct.ks().El(),Pl:(this.Ct.ti().It().El()||[]).map(t=>({Cl:t.coord}))};this.Jt.lt(i),this.xt=!1}return this.Jt}}class Qt{constructor(t){this.nr=new Jt(t)}_h(){return this.nr}}const ti={Vl:4,Ll:1e-4};function ii(t,i){const s=100*(t-i)/i;return i<0?-s:s}function si(t,i){const s=ii(t.qe(),i),n=ii(t.je(),i);return new dt(s,n)}function ni(t,i){const s=100*(t-i)/i+100;return i<0?-s:s}function ei(t,i){const s=ni(t.qe(),i),n=ni(t.je(),i);return new dt(s,n)}function hi(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const n=Math.log10(s+i.Ll)+i.Vl;return t<0?-n:n}function ri(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const n=Math.pow(10,s-i.Vl)-i.Ll;return t<0?-n:n}function li(t,i){if(null===t)return null;const s=hi(t.qe(),i),n=hi(t.je(),i);return new dt(s,n)}function ai(t,i){if(null===t)return null;const s=ri(t.qe(),i),n=ri(t.je(),i);return new dt(s,n)}function oi(t){if(null===t)return ti;const i=Math.abs(t.je()-t.qe());if(i>=1||i<1e-15)return ti;const s=Math.ceil(Math.abs(Math.log10(i))),n=ti.Vl+s;return{Vl:n,Ll:1/Math.pow(10,n)}}class _i{constructor(t,i){if(this.Al=t,this.Il=i,function(t){if(t<0)return!1;if(t>1e18)return!0;for(let i=t;i>1;i/=10)if(i%10!=0)return!1;return!0}(this.Al))this.Fl=[2,2.5,2];else{this.Fl=[];for(let t=this.Al;1!==t;){if(t%2==0)this.Fl.push(2),t/=2;else{if(t%5!=0)throw new Error("unexpected base");this.Fl.push(2,2.5),t/=5}if(this.Fl.length>100)throw new Error("something wrong with base")}}}Bl(t,i,s){const n=0===this.Al?0:1/this.Al;let e=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),h=0,r=this.Il[0];for(;;){const t=Kt(e,n,1e-14)&&e>n+1e-14,i=Kt(e,s*r,1e-14),l=Kt(e,1,1e-14);if(!(t&&i&&l))break;e/=r,r=this.Il[++h%this.Il.length]}if(e<=n+1e-14&&(e=n),e=Math.max(1,e),this.Fl.length>0&&(l=e,a=1,o=1e-14,Math.abs(l-a)<o))for(h=0,r=this.Fl[0];Kt(e,s*r,1e-14)&&e>n+1e-14;)e/=r,r=this.Fl[++h%this.Fl.length];var l,a,o;return e}}class ui{constructor(t,i,s,n){this.zl=[],this.Yi=t,this.Al=i,this.Ol=s,this.Wl=n}Bl(t,i){if(t<i)throw new Error("high < low");const s=this.Yi.qt(),n=(t-i)*this.$l()/s,e=new _i(this.Al,[2,2.5,2]),h=new _i(this.Al,[2,2,2.5]),r=new _i(this.Al,[2.5,2,2]),l=[];return l.push(e.Bl(t,i,n),h.Bl(t,i,n),r.Bl(t,i,n)),function(t){if(t.length<1)throw Error("array is empty");let i=t[0];for(let s=1;s<t.length;++s)t[s]<i&&(i=t[s]);return i}(l)}Hl(){const t=this.Yi,i=t.Bt();if(null===i)return void(this.zl=[]);const s=t.qt(),n=this.Ol(s-1,i),e=this.Ol(0,i),h=this.Yi.W().entireTextOnly?this.Nl()/2:0,r=h,l=s-1-h,a=Math.max(n,e),o=Math.min(n,e);if(a===o)return void(this.zl=[]);const _=this.Bl(a,o);if(this.Ul(i,_,a,o,r,l),t.ql()&&this.jl(_,o,a)){const t=this.Yi.Yl();this.Gl(i,_,r,l,t,2*t)}const u=this.zl.map(t=>t.Kl),c=this.Yi.Xl(u);for(let t=0;t<this.zl.length;t++)this.zl[t].Zl=c[t]}El(){return this.zl}Nl(){return this.Yi.C()}$l(){return Math.ceil(2.5*this.Nl())}Ul(t,i,s,n,e,h){const r=this.zl,l=this.Yi;let a=s%i;a+=a<0?i:0;const o=s>=n?1:-1;let _=null,u=0;for(let c=s-a;c>n;c-=i){const s=this.Wl(c,t,!0);null!==_&&Math.abs(s-_)<this.$l()||(s<e||s>h||(u<r.length?(r[u].Cl=s,r[u].Zl=l.Jl(c),r[u].Kl=c):r.push({Cl:s,Zl:l.Jl(c),Kl:c}),u++,_=s,l.Ql()&&(i=this.Bl(c*o,n))))}r.length=u}Gl(t,i,s,n,e,h){const r=this.zl,l=this.ta(t,s,e,h),a=this.ta(t,n,-h,-e),o=this.Wl(0,t,!0)-this.Wl(i,t,!0);r.length>0&&r[0].Cl-l.Cl<o/2&&r.shift(),r.length>0&&a.Cl-r[r.length-1].Cl<o/2&&r.pop(),r.unshift(l),r.push(a)}ta(t,i,s,n){const e=(s+n)/2,h=this.Ol(i+s,t),r=this.Ol(i+n,t),l=Math.min(h,r),a=Math.max(h,r),o=Math.max(.1,this.Bl(a,l)),_=this.Ol(i+e,t),u=_-_%o,c=this.Wl(u,t,!0);return{Zl:this.Yi.Jl(u),Cl:c,Kl:u}}jl(t,i,s){let n=a(this.Yi.th());return this.Yi.Ql()&&(n=ai(n,this.Yi.ia())),n.qe()-i<t&&s-n.je()<t}}function ci(t){return t.slice().sort((t,i)=>l(t.ls())-l(i.ls()))}var di;!function(t){t[t.Normal=0]="Normal",t[t.Logarithmic=1]="Logarithmic",t[t.Percentage=2]="Percentage",t[t.IndexedTo100=3]="IndexedTo100"}(di||(di={}));const fi=new J,pi=new Z(100,1);class vi{constructor(t,i,s,n,e){this.sa=0,this.na=null,this.Je=null,this.ea=null,this.ha={ra:!1,la:null},this.aa=!1,this.oa=0,this._a=0,this.ua=new o,this.ca=new o,this.da=[],this.fa=null,this.pa=null,this.va=null,this.ma=null,this.wa=null,this.rl=pi,this.ga=oi(null),this.Ma=t,this.Cs=i,this.ba=s,this.ya=n,this.Sa=e,this.xa=new ui(this,100,this.Pa.bind(this),this.Ca.bind(this))}wl(){return this.Ma}W(){return this.Cs}ah(t){if(_(this.Cs,t),this.gl(),void 0!==t.mode&&this.Ta({se:t.mode}),void 0!==t.scaleMargins){const i=r(t.scaleMargins.top),s=r(t.scaleMargins.bottom);if(i<0||i>1)throw new Error(`Invalid top margin - expect value between 0 and 1, given=${i}`);if(s<0||s>1)throw new Error(`Invalid bottom margin - expect value between 0 and 1, given=${s}`);if(i+s>1)throw new Error(`Invalid margins - sum of margins must be less than 1, given=${i+s}`);this.ka(),this.va=null}}Da(){return this.Cs.autoScale}Ra(){return this.aa}Ql(){return 1===this.Cs.mode}ze(){return 2===this.Cs.mode}Ea(){return 3===this.Cs.mode}ia(){return this.ga}se(){return{nn:this.Cs.autoScale,Va:this.Cs.invertScale,se:this.Cs.mode}}Ta(t){const i=this.se();let s=null;void 0!==t.nn&&(this.Cs.autoScale=t.nn),void 0!==t.se&&(this.Cs.mode=t.se,2!==t.se&&3!==t.se||(this.Cs.autoScale=!0),this.ha.ra=!1),1===i.se&&t.se!==i.se&&(!function(t,i){if(null===t)return!1;const s=ri(t.qe(),i),n=ri(t.je(),i);return isFinite(s)&&isFinite(n)}(this.Je,this.ga)?this.Cs.autoScale=!0:(s=ai(this.Je,this.ga),null!==s&&this.La(s))),1===t.se&&t.se!==i.se&&(s=li(this.Je,this.ga),null!==s&&this.La(s));const n=i.se!==this.Cs.mode;n&&(2===i.se||this.ze())&&this.gl(),n&&(3===i.se||this.Ea())&&this.gl(),void 0!==t.Va&&i.Va!==t.Va&&(this.Cs.invertScale=t.Va,this.Aa()),this.ca.p(i,this.se())}Ia(){return this.ca}C(){return this.ba.fontSize}qt(){return this.sa}Fa(t){this.sa!==t&&(this.sa=t,this.ka(),this.va=null)}Ba(){if(this.na)return this.na;const t=this.qt()-this.za()-this.Oa();return this.na=t,t}th(){return this.Wa(),this.Je}La(t,i){const s=this.Je;(i||null===s&&null!==t||null!==s&&!s.Ne(t))&&(this.va=null,this.Je=t)}$a(t){this.La(t),this.Ha(null!==t)}Ki(){return this.Wa(),0===this.sa||!this.Je||this.Je.Ki()}Na(t){return this.Va()?t:this.qt()-1-t}Wt(t,i){return this.ze()?t=ii(t,i):this.Ea()&&(t=ni(t,i)),this.Ca(t,i)}Ua(t,i,s){this.Wa();const n=this.Oa(),e=l(this.th()),h=e.qe(),r=e.je(),a=this.Ba()-1,o=this.Va(),_=a/(r-h),u=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.qa();for(let s=u;s<c;s++){const e=t[s],r=e.Mt;if(isNaN(r))continue;let l=r;null!==d&&(l=d(e.Mt,i));const a=n+_*(l-h),u=o?a:this.sa-1-a;e.ct=u}}ja(t,i,s){this.Wa();const n=this.Oa(),e=l(this.th()),h=e.qe(),r=e.je(),a=this.Ba()-1,o=this.Va(),_=a/(r-h),u=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.qa();for(let s=u;s<c;s++){const e=t[s];let r=e.jr,l=e.Yr,a=e.Gr,u=e.Kr;null!==d&&(r=d(e.jr,i),l=d(e.Yr,i),a=d(e.Gr,i),u=d(e.Kr,i));let c=n+_*(r-h),f=o?c:this.sa-1-c;e.Ya=f,c=n+_*(l-h),f=o?c:this.sa-1-c,e.Ga=f,c=n+_*(a-h),f=o?c:this.sa-1-c,e.Ka=f,c=n+_*(u-h),f=o?c:this.sa-1-c,e.Xa=f}}Ds(t,i){const s=this.Pa(t,i);return this.Za(s,i)}Za(t,i){let s=t;return this.ze()?s=function(t,i){return i<0&&(t=-t),t/100*i+i}(s,i):this.Ea()&&(s=function(t,i){return t-=100,i<0&&(t=-t),t/100*i+i}(s,i)),s}bl(){return this.da}Et(){return this.pa||(this.pa=ci(this.da)),this.pa}Ja(t){-1===this.da.indexOf(t)&&(this.da.push(t),this.gl(),this.Qa())}io(t){const i=this.da.indexOf(t);if(-1===i)throw new Error("source is not attached to scale");this.da.splice(i,1),0===this.da.length&&(this.Ta({nn:!0}),this.La(null)),this.gl(),this.Qa()}Bt(){let t=null;for(const i of this.da){const s=i.Bt();null!==s&&((null===t||s.Nr<t.Nr)&&(t=s))}return null===t?null:t.Ht}Va(){return this.Cs.invertScale}El(){const t=null===this.Bt();if(null!==this.va&&(t||this.va.so===t))return this.va.El;this.xa.Hl();const i=this.xa.El();return this.va={El:i,so:t},this.ua.p(),i}no(){return this.ua}eo(t){this.ze()||this.Ea()||null===this.ma&&null===this.ea&&(this.Ki()||(this.ma=this.sa-t,this.ea=l(this.th()).Ue()))}ho(t){if(this.ze()||this.Ea())return;if(null===this.ma)return;this.Ta({nn:!1}),(t=this.sa-t)<0&&(t=0);let i=(this.ma+.2*(this.sa-1))/(t+.2*(this.sa-1));const s=l(this.ea).Ue();i=Math.max(i,.1),s.Ge(i),this.La(s)}ro(){this.ze()||this.Ea()||(this.ma=null,this.ea=null)}lo(t){this.Da()||null===this.wa&&null===this.ea&&(this.Ki()||(this.wa=t,this.ea=l(this.th()).Ue()))}ao(t){if(this.Da())return;if(null===this.wa)return;const i=l(this.th()).Ye()/(this.Ba()-1);let s=t-this.wa;this.Va()&&(s*=-1);const n=s*i,e=l(this.ea).Ue();e.Ke(n),this.La(e,!0),this.va=null}oo(){this.Da()||null!==this.wa&&(this.wa=null,this.ea=null)}hl(){return this.rl||this.gl(),this.rl}Zi(t,i){switch(this.Cs.mode){case 2:return this._o(ii(t,i));case 3:return this.hl().format(ni(t,i));default:return this.eh(t)}}Jl(t){switch(this.Cs.mode){case 2:return this._o(t);case 3:return this.hl().format(t);default:return this.eh(t)}}Xl(t){switch(this.Cs.mode){case 2:return this.uo(t);case 3:return this.hl().formatTickmarks(t);default:return this.co(t)}}Er(t){return this.eh(t,l(this.fa).hl())}Vr(t,i){return t=ii(t,i),this._o(t,fi)}do(){return this.da}fo(t){this.ha={la:t,ra:!1}}Ws(){this.da.forEach(t=>t.Ws())}ql(){return this.Cs.ensureEdgeTickMarksVisible&&this.Da()}Yl(){return this.C()/2}gl(){this.va=null;let t=1/0;this.fa=null;for(const i of this.da)i.ls()<t&&(t=i.ls(),this.fa=i);let i=100;null!==this.fa&&(i=Math.round(this.fa.er())),this.rl=pi,this.ze()?(this.rl=fi,i=100):this.Ea()?(this.rl=new Z(100,1),i=100):null!==this.fa&&(this.rl=this.fa.hl()),this.xa=new ui(this,i,this.Pa.bind(this),this.Ca.bind(this)),this.xa.Hl()}Qa(){this.pa=null}po(){return null===this.fa||this.ze()||this.Ea()?1:1/this.fa.er()}Xi(){return this.Sa}Ha(t){this.aa=t}za(){return this.Va()?this.Cs.scaleMargins.bottom*this.qt()+this._a:this.Cs.scaleMargins.top*this.qt()+this.oa}Oa(){return this.Va()?this.Cs.scaleMargins.top*this.qt()+this.oa:this.Cs.scaleMargins.bottom*this.qt()+this._a}Wa(){this.ha.ra||(this.ha.ra=!0,this.vo())}ka(){this.na=null}Ca(t,i){if(this.Wa(),this.Ki())return 0;t=this.Ql()&&t?hi(t,this.ga):t;const s=l(this.th()),n=this.Oa()+(this.Ba()-1)*(t-s.qe())/s.Ye();return this.Na(n)}Pa(t,i){if(this.Wa(),this.Ki())return 0;const s=this.Na(t),n=l(this.th()),e=n.qe()+n.Ye()*((s-this.Oa())/(this.Ba()-1));return this.Ql()?ri(e,this.ga):e}Aa(){this.va=null,this.xa.Hl()}vo(){if(this.Ra()&&!this.Da())return;const t=this.ha.la;if(null===t)return;let i=null;const s=this.do();let n=0,e=0;for(const h of s){if(!h.Vt())continue;const s=h.Bt();if(null===s)continue;const r=h.Mr(t.Ur(),t.yi());let a=r&&r.th();if(null!==a){switch(this.Cs.mode){case 1:a=li(a,this.ga);break;case 2:a=si(a,s.Ht);break;case 3:a=ei(a,s.Ht)}if(i=null===i?a:i.mn(l(a)),null!==r){const t=r.ih();null!==t&&(n=Math.max(n,t.above),e=Math.max(e,t.below))}}}if(this.ql()&&(n=Math.max(n,this.Yl()),e=Math.max(e,this.Yl())),n===this.oa&&e===this._a||(this.oa=n,this._a=e,this.va=null,this.ka()),null!==i){if(i.qe()===i.je()){const t=5*this.po();this.Ql()&&(i=ai(i,this.ga)),i=new dt(i.qe()-t,i.je()+t),this.Ql()&&(i=li(i,this.ga))}if(this.Ql()){const t=ai(i,this.ga),s=oi(t);if(h=s,r=this.ga,h.Vl!==r.Vl||h.Ll!==r.Ll){const n=null!==this.ea?ai(this.ea,this.ga):null;this.ga=s,i=li(t,s),null!==n&&(this.ea=li(n,s))}}this.La(i)}else null===this.Je&&(this.La(new dt(-.5,.5)),this.ga=oi(null));var h,r}qa(){return this.ze()?ii:this.Ea()?ni:this.Ql()?t=>hi(t,this.ga):null}mo(t,i,s){return void 0===i?(void 0===s&&(s=this.hl()),s.format(t)):i(t)}wo(t,i,s){return void 0===i?(void 0===s&&(s=this.hl()),s.formatTickmarks(t)):i(t)}eh(t,i){return this.mo(t,this.ya.priceFormatter,i)}co(t,i){const s=this.ya.priceFormatter;return this.wo(t,this.ya.tickmarksPriceFormatter??(s?t=>t.map(s):void 0),i)}_o(t,i){return this.mo(t,this.ya.percentageFormatter,i)}uo(t,i){const s=this.ya.percentageFormatter;return this.wo(t,this.ya.tickmarksPercentageFormatter??(s?t=>t.map(s):void 0),i)}}function mi(t){return t instanceof Ut}class wi{constructor(t,i){this.da=[],this.Mo=new Map,this.sa=0,this.bo=0,this.yo=1,this.pa=null,this.So=!1,this.xo=new o,this.Tr=[],this.cr=t,this.ss=i,this.Po=new Qt(this);const s=i.W();this.Co=this.To("left",s.leftPriceScale),this.ko=this.To("right",s.rightPriceScale),this.Co.Ia().i(this.Do.bind(this,this.Co),this),this.ko.Ia().i(this.Do.bind(this,this.ko),this),this.Ro(s)}Ro(t){if(t.leftPriceScale&&this.Co.ah(t.leftPriceScale),t.rightPriceScale&&this.ko.ah(t.rightPriceScale),t.localization&&(this.Co.gl(),this.ko.gl()),t.overlayPriceScales){const i=Array.from(this.Mo.values());for(const s of i){const i=l(s[0].$t());i.ah(t.overlayPriceScales),t.localization&&i.gl()}}}Eo(t){switch(t){case"left":return this.Co;case"right":return this.ko}return this.Mo.has(t)?r(this.Mo.get(t))[0].$t():null}m(){this.ti().Vo().u(this),this.Co.Ia().u(this),this.ko.Ia().u(this),this.da.forEach(t=>{t.m&&t.m()}),this.Tr=this.Tr.filter(t=>{const i=t._r();return i.detached&&i.detached(),!1}),this.xo.p()}Lo(){return this.yo}Ao(t){this.yo=t}ti(){return this.ss}ts(){return this.bo}qt(){return this.sa}Io(t){this.bo=t,this.Fo()}Fa(t){this.sa=t,this.Co.Fa(t),this.ko.Fa(t),this.da.forEach(i=>{if(this.Un(i)){const s=i.$t();null!==s&&s.Fa(t)}}),this.Fo()}Bo(t){this.So=t}zo(){return this.So}Oo(){return this.da.filter(mi)}bl(){return this.da}Un(t){const i=t.$t();return null===i||this.Co!==i&&this.ko!==i}Ja(t,i,s){this.Wo(t,i,s?t.ls():this.da.length)}io(t,i){const s=this.da.indexOf(t);h(-1!==s,"removeDataSource: invalid data source"),this.da.splice(s,1),i||this.da.forEach((t,i)=>t._s(i));const n=l(t.$t()).wl();if(this.Mo.has(n)){const i=r(this.Mo.get(n)),s=i.indexOf(t);-1!==s&&(i.splice(s,1),0===i.length&&this.Mo.delete(n))}const e=t.$t();e&&e.bl().indexOf(t)>=0&&(e.io(t),this.$o(e)),this.pa=null}jn(t){return t===this.Co?"left":t===this.ko?"right":"overlay"}Ho(){return this.Co}No(){return this.ko}Uo(t,i){t.eo(i)}qo(t,i){t.ho(i),this.Fo()}jo(t){t.ro()}Yo(t,i){t.lo(i)}Go(t,i){t.ao(i),this.Fo()}Ko(t){t.oo()}Fo(){this.da.forEach(t=>{t.Ws()})}ks(){let t=null;return this.ss.W().rightPriceScale.visible&&0!==this.ko.bl().length?t=this.ko:this.ss.W().leftPriceScale.visible&&0!==this.Co.bl().length?t=this.Co:0!==this.da.length&&(t=this.da[0].$t()),null===t&&(t=this.ko),t}qn(){let t=null;return this.ss.W().rightPriceScale.visible?t=this.ko:this.ss.W().leftPriceScale.visible&&(t=this.Co),t}$o(t){null!==t&&t.Da()&&this.Xo(t)}Zo(t){const i=this.cr.Ce();t.Ta({nn:!0}),null!==i&&t.fo(i),this.Fo()}Jo(){this.Xo(this.Co),this.Xo(this.ko)}Qo(){this.$o(this.Co),this.$o(this.ko),this.da.forEach(t=>{this.Un(t)&&this.$o(t.$t())}),this.Fo(),this.ss.oh()}Et(){return null===this.pa&&(this.pa=ci(this.da)),this.pa}t_(t,i){i=Gt(i,0,this.da.length-1);const s=this.da.indexOf(t);h(-1!==s,"setSeriesOrder: invalid data source"),this.da.splice(s,1),this.da.splice(i,0,t),this.da.forEach((t,i)=>t._s(i)),this.pa=null;for(const t of[this.Co,this.ko])t.Qa(),t.gl();this.ss.oh()}Lt(){return this.Et().filter(mi)}i_(){return this.xo}s_(){return this.Po}ul(t){this.Tr.push(new Vt(t))}cl(t){this.Tr=this.Tr.filter(i=>i._r()!==t),t.detached&&t.detached(),this.ss.oh()}n_(){return this.Tr}nl(t,i){return this.Tr.map(s=>s.Gn(t,i)).filter(t=>null!==t)}Xo(t){const i=t.do();if(i&&i.length>0&&!this.cr.Ki()){const i=this.cr.Ce();null!==i&&t.fo(i)}t.Ws()}Wo(t,i,s){let n=this.Eo(i);if(null===n&&(n=this.To(i,this.ss.W().overlayPriceScales)),this.da.splice(s,0,t),!j(i)){const s=this.Mo.get(i)||[];s.push(t),this.Mo.set(i,s)}t._s(s),n.Ja(t),t.us(n),this.$o(n),this.pa=null}Do(t,i,s){i.se!==s.se&&this.Xo(t)}To(t,i){const s={visible:!0,autoScale:!0,...p(i)},n=new vi(t,s,this.ss.W().layout,this.ss.W().localization,this.ss.Xi());return n.Fa(this.qt()),n}}function gi(t,i){return!i||"top"===t&&"top"!==i||"normal"===t&&"bottom"===i}function Mi(t){return{e_:t.e_,h_:{Kn:t.r_.externalId},l_:t.r_.cursorStyle}}function bi(t,i,s,n){for(const e of t){const t=e.Dt(n);if(null!==t&&t.Gn){const n=t.Gn(i,s);if(null!==n)return{a_:e,h_:n}}}return null}function yi(t){return void 0!==t.$s}function Si(t,i,s){const n=[t,...t.Et()],e=function(t,i,s){let n,e;for(const h of t){const t=h.nl?.(i,s)??[];for(const i of t)gi(i.zOrder,n?.zOrder)&&(n=i,e=h)}return n&&e?{r_:n,e_:e}:null}(n,i,s);if("top"===e?.r_.zOrder)return Mi(e);for(const h of n){if(e&&e.e_===h&&"bottom"!==e.r_.zOrder&&!e.r_.isBackground)return Mi(e);if(yi(h)){const n=bi(h.$s(t),i,s,t);if(null!==n)return{e_:h,a_:n.a_,h_:n.h_}}if(e&&e.e_===h&&"bottom"!==e.r_.zOrder&&e.r_.isBackground)return Mi(e)}return e?.r_?Mi(e):null}class xi{constructor(t,i,s=50){this.Tn=0,this.kn=1,this.Dn=1,this.En=new Map,this.Rn=new Map,this.o_=t,this.__=i,this.Vn=s}u_(t){const i=t.time,s=this.__.cacheKey(i),n=this.En.get(s);if(void 0!==n)return n.c_;if(this.Tn===this.Vn){const t=this.Rn.get(this.Dn);this.Rn.delete(this.Dn),this.En.delete(r(t)),this.Dn++,this.Tn--}const e=this.o_(t);return this.En.set(s,{c_:e,Fn:this.kn}),this.Rn.set(this.kn,s),this.Tn++,this.kn++,e}}class Pi{constructor(t,i){h(t<=i,"right should be >= left"),this.d_=t,this.f_=i}Ur(){return this.d_}yi(){return this.f_}p_(){return this.f_-this.d_+1}De(t){return this.d_<=t&&t<=this.f_}Ne(t){return this.d_===t.Ur()&&this.f_===t.yi()}}function Ci(t,i){return null===t||null===i?t===i:t.Ne(i)}class Ti{constructor(){this.v_=new Map,this.En=null,this.m_=!1}w_(t){this.m_=t,this.En=null}g_(t,i){this.M_(i),this.En=null;for(let s=i;s<t.length;++s){const i=t[s];let n=this.v_.get(i.timeWeight);void 0===n&&(n=[],this.v_.set(i.timeWeight,n)),n.push({index:s,time:i.time,weight:i.timeWeight,originalTime:i.originalTime})}}b_(t,i,s,n,e){const h=Math.ceil(i/t);return null!==this.En&&this.En.y_===h&&e===this.En.S_&&s===this.En.x_||(this.En={S_:e,x_:s,El:this.P_(h,s,n),y_:h}),this.En.El}M_(t){if(0===t)return void this.v_.clear();const i=[];this.v_.forEach((s,n)=>{t<=s[0].index?i.push(n):s.splice(yt(s,t,i=>i.index<t),1/0)});for(const t of i)this.v_.delete(t)}P_(t,i,s){let n=[];const e=t=>!i||s.has(t.index);for(const i of Array.from(this.v_.keys()).sort((t,i)=>i-t)){if(!this.v_.get(i))continue;const s=n;n=[];const h=s.length;let l=0;const a=r(this.v_.get(i)),o=a.length;let _=1/0,u=-1/0;for(let i=0;i<o;i++){const r=a[i],o=r.index;for(;l<h;){const t=s[l],i=t.index;if(!(i<o&&e(t))){_=i;break}l++,n.push(t),u=i,_=1/0}if(_-o>=t&&o-u>=t&&e(r))n.push(r),u=o;else if(this.m_)return s}for(;l<h;l++)e(s[l])&&n.push(s[l])}return n}}class ki{constructor(t){this.C_=t}T_(){return null===this.C_?null:new Pi(Math.floor(this.C_.Ur()),Math.ceil(this.C_.yi()))}k_(){return this.C_}static D_(){return new ki(null)}}function Di(t,i){return t.weight>i.weight?t:i}class Ri{constructor(t,i,s,n){this.bo=0,this.R_=null,this.E_=[],this.wa=null,this.ma=null,this.V_=new Ti,this.L_=new Map,this.A_=ki.D_(),this.I_=!0,this.F_=new o,this.B_=new o,this.z_=new o,this.O_=null,this.W_=null,this.H_=new Map,this.N_=-1,this.U_=[],this.Cs=i,this.ya=s,this.q_=i.rightOffset,this.j_=i.barSpacing,this.ss=t,this.Y_(i),this.__=n,this.G_(),this.V_.w_(i.uniformDistribution),this.K_()}W(){return this.Cs}X_(t){_(this.ya,t),this.Z_(),this.G_()}ah(t,i){_(this.Cs,t),this.Cs.fixLeftEdge&&this.J_(),this.Cs.fixRightEdge&&this.Q_(),void 0!==t.barSpacing&&this.ss.fn(t.barSpacing),void 0!==t.rightOffset&&this.ss.pn(t.rightOffset),this.Y_(t),void 0===t.minBarSpacing&&void 0===t.maxBarSpacing||this.ss.fn(t.barSpacing??this.j_),void 0!==t.ignoreWhitespaceIndices&&t.ignoreWhitespaceIndices!==this.Cs.ignoreWhitespaceIndices&&this.K_(),this.Z_(),this.G_(),this.z_.p()}Rs(t){return this.E_[t]?.time??null}ns(t){return this.E_[t]??null}tu(t,i){if(this.E_.length<1)return null;if(this.__.key(t)>this.__.key(this.E_[this.E_.length-1].time))return i?this.E_.length-1:null;const s=yt(this.E_,this.__.key(t),(t,i)=>this.__.key(t.time)<i);return this.__.key(t)<this.__.key(this.E_[s].time)?i?s:null:s}Ki(){return 0===this.bo||0===this.E_.length||null===this.R_}iu(){return this.E_.length>0}Ce(){return this.su(),this.A_.T_()}nu(){return this.su(),this.A_.k_()}eu(){const t=this.Ce();if(null===t)return null;const i={from:t.Ur(),to:t.yi()};return this.hu(i)}hu(t){const i=Math.round(t.from),s=Math.round(t.to),n=l(this.ru()),e=l(this.lu());return{from:l(this.ns(Math.max(n,i))),to:l(this.ns(Math.min(e,s)))}}au(t){return{from:l(this.tu(t.from,!0)),to:l(this.tu(t.to,!0))}}ts(){return this.bo}Io(t){if(!isFinite(t)||t<=0)return;if(this.bo===t)return;const i=this.nu(),s=this.bo;if(this.bo=t,this.I_=!0,this.Cs.lockVisibleTimeRangeOnResize&&0!==s){const i=this.j_*t/s;this.j_=i}if(this.Cs.fixLeftEdge&&null!==i&&i.Ur()<=0){const i=s-t;this.q_-=Math.round(i/this.j_)+1,this.I_=!0}this.ou(),this._u()}jt(t){if(this.Ki()||!c(t))return 0;const i=this.uu()+this.q_-t;return this.bo-(i+.5)*this.j_-1}cu(t,i){const s=this.uu(),n=void 0===i?0:i.from,e=void 0===i?t.length:i.to;for(let i=n;i<e;i++){const n=t[i].gt,e=s+this.q_-n,h=this.bo-(e+.5)*this.j_-1;t[i].ut=h}}du(t,i){const s=Math.ceil(this.fu(t));return i&&this.Cs.ignoreWhitespaceIndices&&!this.pu(s)?this.vu(s):s}pn(t){this.I_=!0,this.q_=t,this._u(),this.ss.mu(),this.ss.oh()}wu(){return this.j_}fn(t){const i=this.j_;if(this.gu(t),void 0!==this.Cs.rightOffsetPixels&&0!==i){const t=this.q_*i/this.j_;this.q_=t}this._u(),this.ss.mu(),this.ss.oh()}Mu(){return this.q_}El(){if(this.Ki())return null;if(null!==this.W_)return this.W_;const t=this.j_,i=5*(this.ss.W().layout.fontSize+4)/8*(this.Cs.tickMarkMaxCharacterLength||8),s=Math.round(i/t),n=l(this.Ce()),e=Math.max(n.Ur(),n.Ur()-s),h=Math.max(n.yi(),n.yi()-s),r=this.V_.b_(t,i,this.Cs.ignoreWhitespaceIndices,this.H_,this.N_),a=this.ru()+s,o=this.lu()-s,_=this.bu(),u=this.Cs.fixLeftEdge||_,c=this.Cs.fixRightEdge||_;let d=0;for(const t of r){if(!(e<=t.index&&t.index<=h))continue;let s;d<this.U_.length?(s=this.U_[d],s.coord=this.jt(t.index),s.label=this.yu(t),s.weight=t.weight):(s={needAlignCoordinate:!1,coord:this.jt(t.index),label:this.yu(t),weight:t.weight},this.U_.push(s)),this.j_>i/2&&!_?s.needAlignCoordinate=!1:s.needAlignCoordinate=u&&t.index<=a||c&&t.index>=o,d++}return this.U_.length=d,this.W_=this.U_,this.U_}Su(){let t;this.I_=!0,this.fn(this.Cs.barSpacing),t=void 0!==this.Cs.rightOffsetPixels?this.Cs.rightOffsetPixels/this.wu():this.Cs.rightOffset,this.pn(t)}xu(t){this.I_=!0,this.R_=t,this._u(),this.J_()}Pu(t,i){const s=this.fu(t),n=this.wu(),e=n+i*(n/10);this.fn(e),this.Cs.rightBarStaysOnScroll||this.pn(this.Mu()+(s-this.fu(t)))}eo(t){this.wa&&this.oo(),null===this.ma&&null===this.O_&&(this.Ki()||(this.ma=t,this.Cu()))}ho(t){if(null===this.O_)return;const i=Gt(this.bo-t,0,this.bo),s=Gt(this.bo-l(this.ma),0,this.bo);0!==i&&0!==s&&this.fn(this.O_.wu*i/s)}ro(){null!==this.ma&&(this.ma=null,this.Tu())}lo(t){null===this.wa&&null===this.O_&&(this.Ki()||(this.wa=t,this.Cu()))}ao(t){if(null===this.wa)return;const i=(this.wa-t)/this.wu();this.q_=l(this.O_).Mu+i,this.I_=!0,this._u()}oo(){null!==this.wa&&(this.wa=null,this.Tu())}ku(){this.Du(this.Cs.rightOffset)}Du(t,i=400){if(!isFinite(t))throw new RangeError("offset is required and must be finite number");if(!isFinite(i)||i<=0)throw new RangeError("animationDuration (optional) must be finite positive number");const s=this.q_,n=performance.now();this.ss.un({Ru:t=>(t-n)/i>=1,Eu:e=>{const h=(e-n)/i;return h>=1?t:s+(t-s)*h}})}Tt(t,i){this.I_=!0,this.E_=t,this.V_.g_(t,i),this._u()}Vu(){return this.F_}Lu(){return this.B_}Au(){return this.z_}uu(){return this.R_||0}Iu(t,i){const s=t.p_(),n=i&&this.Cs.rightOffsetPixels||0;this.gu((this.bo-n)/s),this.q_=t.yi()-this.uu(),i&&(this.q_=n?n/this.wu():this.Cs.rightOffset),this._u(),this.I_=!0,this.ss.mu(),this.ss.oh()}Fu(){const t=this.ru(),i=this.lu();null!==t&&null!==i&&this.Iu(new Pi(t,i),!0)}Bu(t){const i=new Pi(t.from,t.to);this.Iu(i)}es(t){return void 0!==this.ya.timeFormatter?this.ya.timeFormatter(t.originalTime):this.__.formatHorzItem(t.time)}K_(){if(!this.Cs.ignoreWhitespaceIndices)return;this.H_.clear();const t=this.ss.Gs();for(const i of t)for(const t of i.ml())this.H_.set(t,!0);this.N_++}bu(){const t=this.ss.W().handleScroll,i=this.ss.W().handleScale;return!(t.horzTouchDrag||t.mouseWheel||t.pressedMouseMove||t.vertTouchDrag||i.axisDoubleClickReset.time||i.axisPressedMouseMove.time||i.mouseWheel||i.pinch)}ru(){return 0===this.E_.length?null:0}lu(){return 0===this.E_.length?null:this.E_.length-1}zu(t){return(this.bo-1-t)/this.j_}fu(t){const i=this.zu(t),s=this.uu()+this.q_-i;return Math.round(1e6*s)/1e6}gu(t){const i=this.j_;this.j_=t,this.ou(),i!==this.j_&&(this.I_=!0,this.Ou())}su(){if(!this.I_)return;if(this.I_=!1,this.Ki())return void this.Wu(ki.D_());const t=this.uu(),i=this.bo/this.j_,s=this.q_+t,n=new Pi(s-i+1,s);this.Wu(new ki(n))}ou(){const t=Gt(this.j_,this.$u(),this.Hu());this.j_!==t&&(this.j_=t,this.I_=!0)}Hu(){return this.Cs.maxBarSpacing>0?this.Cs.maxBarSpacing:.5*this.bo}$u(){return this.Cs.fixLeftEdge&&this.Cs.fixRightEdge&&0!==this.E_.length?this.bo/this.E_.length:this.Cs.minBarSpacing}_u(){const t=this.Nu();null!==t&&this.q_<t&&(this.q_=t,this.I_=!0);const i=this.Uu();this.q_>i&&(this.q_=i,this.I_=!0)}Nu(){const t=this.ru(),i=this.R_;if(null===t||null===i)return null;return t-i-1+(this.Cs.fixLeftEdge?this.bo/this.j_:Math.min(2,this.E_.length))}Uu(){return this.Cs.fixRightEdge?0:this.bo/this.j_-Math.min(2,this.E_.length)}Cu(){this.O_={wu:this.wu(),Mu:this.Mu()}}Tu(){this.O_=null}yu(t){let i=this.L_.get(t.weight);return void 0===i&&(i=new xi(t=>this.qu(t),this.__),this.L_.set(t.weight,i)),i.u_(t)}qu(t){return this.__.formatTickmark(t,this.ya)}Wu(t){const i=this.A_;this.A_=t,Ci(i.T_(),this.A_.T_())||this.F_.p(),Ci(i.k_(),this.A_.k_())||this.B_.p(),this.Ou()}Ou(){this.W_=null}Z_(){this.Ou(),this.L_.clear()}G_(){this.__.updateFormatter(this.ya)}J_(){if(!this.Cs.fixLeftEdge)return;const t=this.ru();if(null===t)return;const i=this.Ce();if(null===i)return;const s=i.Ur()-t;if(s<0){const t=this.q_-s-1;this.pn(t)}this.ou()}Q_(){this._u(),this.ou()}pu(t){return!this.Cs.ignoreWhitespaceIndices||(this.H_.get(t)||!1)}vu(t){const i=function*(t){const i=Math.round(t),s=i<t;let n=1;for(;;)s?(yield i+n,yield i-n):(yield i-n,yield i+n),n++}(t),s=this.lu();for(;s;){const t=i.next().value;if(this.H_.get(t))return t;if(t<0||t>s)break}return t}Y_(t){if(void 0!==t.rightOffsetPixels){const i=t.rightOffsetPixels/(t.barSpacing||this.j_);this.ss.pn(i)}}}var Ei,Vi,Li,Ai,Ii;!function(t){t[t.OnTouchEnd=0]="OnTouchEnd",t[t.OnNextTap=1]="OnNextTap"}(Ei||(Ei={}));class Fi{constructor(t,i,s){this.ju=[],this.Yu=[],this.bo=0,this.Gu=null,this.Ku=new o,this.Xu=new o,this.Zu=null,this.Ju=t,this.Cs=i,this.__=s,this.Sa=new S(this.Cs.layout.colorParsers),this.Qu=new M(this),this.cr=new Ri(this,i.timeScale,this.Cs.localization,s),this.Pt=new q(this,i.crosshair),this.tc=new Yt(i.crosshair),i.addDefaultPane&&(this.sc(0),this.ju[0].Ao(2)),this.nc=this.ec(0),this.hc=this.ec(1)}Ar(){this.rc(Y.Mn())}oh(){this.rc(Y.gn())}Zr(){this.rc(new Y(1))}Ir(t){const i=this.lc(t);this.rc(i)}ac(){return this.Gu}oc(t){if(this.Gu?.e_===t?.e_&&this.Gu?.h_?.Kn===t?.h_?.Kn)return;const i=this.Gu;this.Gu=t,null!==i&&this.Ir(i.e_),null!==t&&t.e_!==i?.e_&&this.Ir(t.e_)}W(){return this.Cs}ah(t){_(this.Cs,t),this.ju.forEach(i=>i.Ro(t)),void 0!==t.timeScale&&this.cr.ah(t.timeScale),void 0!==t.localization&&this.cr.X_(t.localization),(t.leftPriceScale||t.rightPriceScale)&&this.Ku.p(),this.nc=this.ec(0),this.hc=this.ec(1),this.Ar()}_c(t,i,s=0){const n=this.ju[s];if(void 0===n)return;if("left"===t)return _(this.Cs,{leftPriceScale:i}),n.Ro({leftPriceScale:i}),this.Ku.p(),void this.Ar();if("right"===t)return _(this.Cs,{rightPriceScale:i}),n.Ro({rightPriceScale:i}),this.Ku.p(),void this.Ar();const e=this.uc(t,s);null!==e&&(e.$t.ah(i),this.Ku.p())}uc(t,i){const s=this.ju[i];if(void 0===s)return null;const n=s.Eo(t);return null!==n?{Us:s,$t:n}:null}It(){return this.cr}qs(){return this.ju}cc(){return this.Pt}dc(){return this.Xu}fc(t,i){t.Fa(i),this.mu()}Io(t){this.bo=t,this.cr.Io(this.bo),this.ju.forEach(i=>i.Io(t)),this.mu()}vc(t){1!==this.ju.length&&(h(t>=0&&t<this.ju.length,"Invalid pane index"),this.ju.splice(t,1),this.Ar())}mc(t,i){if(this.ju.length<2)return;h(t>=0&&t<this.ju.length,"Invalid pane index");const s=this.ju[t],n=this.ju.reduce((t,i)=>t+i.Lo(),0),e=this.ju.reduce((t,i)=>t+i.qt(),0),r=e-30*(this.ju.length-1);i=Math.min(r,Math.max(30,i));const l=n/e,a=s.qt();s.Ao(i*l);let o=i-a,_=this.ju.length-1;for(const t of this.ju)if(t!==s){const i=Math.min(r,Math.max(30,t.qt()-o/_));o-=t.qt()-i,_-=1;const s=i*l;t.Ao(s)}this.Ar()}wc(t,i){h(t>=0&&t<this.ju.length&&i>=0&&i<this.ju.length,"Invalid pane index");const s=this.ju[t],n=this.ju[i];this.ju[t]=n,this.ju[i]=s,this.Ar()}gc(t,i){if(h(t>=0&&t<this.ju.length&&i>=0&&i<this.ju.length,"Invalid pane index"),t===i)return;const[s]=this.ju.splice(t,1);this.ju.splice(i,0,s),this.Ar()}Uo(t,i,s){t.Uo(i,s)}qo(t,i,s){t.qo(i,s),this.Fr(),this.rc(this.Mc(t,2))}jo(t,i){t.jo(i),this.rc(this.Mc(t,2))}Yo(t,i,s){i.Da()||t.Yo(i,s)}Go(t,i,s){i.Da()||(t.Go(i,s),this.Fr(),this.rc(this.Mc(t,2)))}Ko(t,i){i.Da()||(t.Ko(i),this.rc(this.Mc(t,2)))}Zo(t,i){t.Zo(i),this.rc(this.Mc(t,2))}bc(t){this.cr.eo(t)}yc(t,i){const s=this.It();if(s.Ki()||0===i)return;const n=s.ts();t=Math.max(1,Math.min(t,n)),s.Pu(t,i),this.mu()}Sc(t){this.xc(0),this.Pc(t),this.Cc()}Tc(t){this.cr.ho(t),this.mu()}kc(){this.cr.ro(),this.oh()}xc(t){this.cr.lo(t)}Pc(t){this.cr.ao(t),this.mu()}Cc(){this.cr.oo(),this.oh()}Gs(){return this.Yu}Dc(t,i,s,n,e){this.Pt.Vs(t,i);let h=NaN,r=this.cr.du(t,!0);const l=this.cr.Ce();null!==l&&(r=Math.min(Math.max(l.Ur(),r),l.yi()));const a=n.ks(),o=a.Bt();if(null!==o&&(h=a.Ds(i,o)),h=this.tc.Ml(h,r,n),this.Pt.Fs(r,h,n),this.Zr(),!e){const e=Si(n,t,i);this.oc(e&&{e_:e.e_,h_:e.h_,l_:e.l_||null}),this.Xu.p(this.Pt.At(),{x:t,y:i},s)}}Rc(t,i,s){const n=s.ks(),e=n.Bt(),h=n.Wt(t,l(e)),r=this.cr.tu(i,!0),a=this.cr.jt(l(r));this.Dc(a,h,null,s,!0)}Ec(t){this.cc().zs(),this.Zr(),t||this.Xu.p(null,null,null)}Fr(){const t=this.Pt.Us();if(null!==t){const i=this.Pt.As(),s=this.Pt.Is();this.Dc(i,s,null,t)}this.Pt.Ws()}Vc(t,i,s){const n=this.cr.Rs(0);void 0!==i&&void 0!==s&&this.cr.Tt(i,s);const e=this.cr.Rs(0),h=this.cr.uu(),r=this.cr.Ce();if(null!==r&&null!==n&&null!==e){const i=r.De(h),l=this.__.key(n)>this.__.key(e),a=null!==t&&t>h&&!l,o=this.cr.W().allowShiftVisibleRangeOnWhitespaceReplacement,_=i&&(!(void 0===s)||o)&&this.cr.W().shiftVisibleRangeOnNewBar;if(a&&!_){const i=t-h;this.cr.pn(this.cr.Mu()-i)}}this.cr.xu(t)}zr(t){null!==t&&t.Qo()}Nn(t){if(function(t){return t instanceof wi}(t))return t;const i=this.ju.find(i=>i.Et().includes(t));return void 0===i?null:i}mu(){this.ju.forEach(t=>t.Qo()),this.Fr()}m(){this.ju.forEach(t=>t.m()),this.ju.length=0,this.Cs.localization.priceFormatter=void 0,this.Cs.localization.percentageFormatter=void 0,this.Cs.localization.timeFormatter=void 0}Lc(){return this.Qu}Yn(){return this.Qu.W()}Vo(){return this.Ku}Ac(t,i){const s=this.sc(i);this.Ic(t,s),this.Yu.push(t),1===this.Yu.length?this.Ar():this.oh()}Fc(t){const i=this.Nn(t),s=this.Yu.indexOf(t);h(-1!==s,"Series not found");const n=l(i);this.Yu.splice(s,1),n.io(t),t.m&&t.m(),this.cr.K_();const e=this.ju.length;this.Bc(n),this.ju.length<e&&this.Ar()}Lr(t,i){const s=l(this.Nn(t));s.io(t,!0),s.Ja(t,i,!0)}Fu(){const t=Y.gn();t.rn(),this.rc(t)}zc(t){const i=Y.gn();i._n(t),this.rc(i)}dn(){const t=Y.gn();t.dn(),this.rc(t)}fn(t){const i=Y.gn();i.fn(t),this.rc(i)}pn(t){const i=Y.gn();i.pn(t),this.rc(i)}un(t){const i=Y.gn();i.un(t),this.rc(i)}ln(){const t=Y.gn();t.ln(),this.rc(t)}Oc(){return this.Cs.rightPriceScale.visible?"right":"left"}Wc(t,i){h(i>=0,"Index should be greater or equal to 0");if(i===this.$c(t))return;const s=l(this.Nn(t));s.io(t);const n=this.sc(i);this.Ic(t,n),0===s.bl().length&&this.Bc(s),this.Ar()}Hc(){return this.hc}q(){return this.nc}Ut(t){const i=this.hc,s=this.nc;if(i===s)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Zu||this.Zu.gh!==s||this.Zu.Mh!==i)this.Zu={gh:s,Mh:i,Nc:new Map};else{const i=this.Zu.Nc.get(t);if(void 0!==i)return i}const n=this.Sa.it(s,i,t/100);return this.Zu.Nc.set(t,n),n}Uc(t){return this.ju.indexOf(t)}Xi(){return this.Sa}qc(){return this.jc()}jc(t){const i=new wi(this.cr,this);this.ju.push(i);const s=t??this.ju.length-1,n=Y.Mn();return n.tn(s,{sn:0,nn:!0}),this.rc(n),i}sc(t){return h(t>=0,"Index should be greater or equal to 0"),(t=Math.min(this.ju.length,t))<this.ju.length?this.ju[t]:this.jc(t)}$c(t){return this.ju.findIndex(i=>i.Oo().includes(t))}Mc(t,i){const s=new Y(i);if(null!==t){const n=this.ju.indexOf(t);s.tn(n,{sn:i})}return s}lc(t,i){return void 0===i&&(i=2),this.Mc(this.Nn(t),i)}rc(t){this.Ju&&this.Ju(t),this.ju.forEach(t=>t.s_()._h().Tt())}Ic(t,i){const s=t.W().priceScaleId,n=void 0!==s?s:this.Oc();i.Ja(t,n),j(n)||t.ah(t.W())}ec(t){const i=this.Cs.layout;return"gradient"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color}Bc(t){!t.zo()&&0===t.bl().length&&this.ju.length>1&&this.ju.splice(this.Uc(t),1)}}function Bi(t){if(t>=1)return 0;let i=0;for(;i<8;i++){const s=Math.round(t);if(Math.abs(s-t)<1e-8)return i;t*=10}return i}function zi(t){return!u(t)&&!d(t)}function Oi(t){return u(t)}!function(t){t[t.Disabled=0]="Disabled",t[t.Continuous=1]="Continuous",t[t.OnDataUpdate=2]="OnDataUpdate"}(Vi||(Vi={})),function(t){t[t.LastBar=0]="LastBar",t[t.LastVisible=1]="LastVisible"}(Li||(Li={})),function(t){t.Solid="solid",t.VerticalGradient="gradient"}(Ai||(Ai={})),function(t){t[t.Year=0]="Year",t[t.Month=1]="Month",t[t.DayOfMonth=2]="DayOfMonth",t[t.Time=3]="Time",t[t.TimeWithSeconds=4]="TimeWithSeconds"}(Ii||(Ii={}));const Wi=t=>t.getUTCFullYear();function $i(t,i,s){return i.replace(/yyyy/g,(t=>X(Wi(t),4))(t)).replace(/yy/g,(t=>X(Wi(t)%100,2))(t)).replace(/MMMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"long"}))(t,s)).replace(/MMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"short"}))(t,s)).replace(/MM/g,(t=>X((t=>t.getUTCMonth()+1)(t),2))(t)).replace(/dd/g,(t=>X((t=>t.getUTCDate())(t),2))(t))}class Hi{constructor(t="yyyy-MM-dd",i="default"){this.Yc=t,this.Gc=i}u_(t){return $i(t,this.Yc,this.Gc)}}class Ni{constructor(t){this.Kc=t||"%h:%m:%s"}u_(t){return this.Kc.replace("%h",X(t.getUTCHours(),2)).replace("%m",X(t.getUTCMinutes(),2)).replace("%s",X(t.getUTCSeconds(),2))}}const Ui={Xc:"yyyy-MM-dd",Zc:"%h:%m:%s",Jc:" ",Qc:"default"};class qi{constructor(t={}){const i={...Ui,...t};this.td=new Hi(i.Xc,i.Qc),this.sd=new Ni(i.Zc),this.nd=i.Jc}u_(t){return`${this.td.u_(t)}${this.nd}${this.sd.u_(t)}`}}function ji(t){return 60*t*60*1e3}function Yi(t){return 60*t*1e3}const Gi=[{ed:(Ki=1,1e3*Ki),hd:10},{ed:Yi(1),hd:20},{ed:Yi(5),hd:21},{ed:Yi(30),hd:22},{ed:ji(1),hd:30},{ed:ji(3),hd:31},{ed:ji(6),hd:32},{ed:ji(12),hd:33}];var Ki;function Xi(t,i){if(t.getUTCFullYear()!==i.getUTCFullYear())return 70;if(t.getUTCMonth()!==i.getUTCMonth())return 60;if(t.getUTCDate()!==i.getUTCDate())return 50;for(let s=Gi.length-1;s>=0;--s)if(Math.floor(i.getTime()/Gi[s].ed)!==Math.floor(t.getTime()/Gi[s].ed))return Gi[s].hd;return 0}function Zi(t){return t}function Ji(t){let i=t;if(d(t)&&(i=ts(t)),!zi(i))throw new Error("time must be of type BusinessDay");const s=new Date(Date.UTC(i.year,i.month-1,i.day,0,0,0,0));return{rd:Math.round(s.getTime()/1e3),ld:i}}function Qi(t){if(!Oi(t))throw new Error("time must be of type isUTCTimestamp");return{rd:t}}function ts(t){const i=new Date(t);if(isNaN(i.getTime()))throw new Error(`Invalid date string=${t}, expected format=yyyy-mm-dd`);return{day:i.getUTCDate(),month:i.getUTCMonth()+1,year:i.getUTCFullYear()}}function is(t){d(t.time)&&(t.time=ts(t.time))}class ss{options(){return this.Cs}setOptions(t){this.Cs=t,this.updateFormatter(t.localization)}preprocessData(t){Array.isArray(t)?function(t){t.forEach(is)}(t):is(t)}createConverterToInternalObj(t){return l(function(t){return 0===t.length?null:zi(t[0].time)||d(t[0].time)?Ji:Qi}(t))}key(t){return"object"==typeof t&&"rd"in t?t.rd:this.key(this.convertHorzItemToInternal(t))}cacheKey(t){const i=t;return void 0===i.ld?new Date(1e3*i.rd).getTime():new Date(Date.UTC(i.ld.year,i.ld.month-1,i.ld.day)).getTime()}convertHorzItemToInternal(t){return Oi(i=t)?Qi(i):zi(i)?Ji(i):Ji(ts(i));var i}updateFormatter(t){if(!this.Cs)return;const i=t.dateFormat;this.Cs.timeScale.timeVisible?this.ad=new qi({Xc:i,Zc:this.Cs.timeScale.secondsVisible?"%h:%m:%s":"%h:%m",Jc:" ",Qc:t.locale}):this.ad=new Hi(i,t.locale)}formatHorzItem(t){const i=t;return this.ad.u_(new Date(1e3*i.rd))}formatTickmark(t,i){const s=function(t,i,s){switch(t){case 0:case 10:return i?s?4:3:2;case 20:case 21:case 22:case 30:case 31:case 32:case 33:return i?3:2;case 50:return 2;case 60:return 1;case 70:return 0}}(t.weight,this.Cs.timeScale.timeVisible,this.Cs.timeScale.secondsVisible),n=this.Cs.timeScale;if(void 0!==n.tickMarkFormatter){const e=n.tickMarkFormatter(t.originalTime,s,i.locale);if(null!==e)return e}return function(t,i,s){const n={};switch(i){case 0:n.year="numeric";break;case 1:n.month="short";break;case 2:n.day="numeric";break;case 3:n.hour12=!1,n.hour="2-digit",n.minute="2-digit";break;case 4:n.hour12=!1,n.hour="2-digit",n.minute="2-digit",n.second="2-digit"}const e=void 0===t.ld?new Date(1e3*t.rd):new Date(Date.UTC(t.ld.year,t.ld.month-1,t.ld.day));return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()).toLocaleString(s,n)}(t.time,s,i.locale)}maxTickMarkWeight(t){let i=t.reduce(Di,t[0]).weight;return i>30&&i<50&&(i=30),i}fillWeightsForPoints(t,i){!function(t,i=0){if(0===t.length)return;let s=0===i?null:t[i-1].time.rd,n=null!==s?new Date(1e3*s):null,e=0;for(let h=i;h<t.length;++h){const i=t[h],r=new Date(1e3*Zi(i.time).rd);null!==n&&(i.timeWeight=Xi(r,n)),e+=Zi(i.time).rd-(s||Zi(i.time).rd),s=Zi(i.time).rd,n=r}if(0===i&&t.length>1){const i=Math.ceil(e/(t.length-1)),s=new Date(1e3*(t[0].time.rd-i));t[0].timeWeight=Xi(new Date(1e3*t[0].time.rd),s)}}(t,i)}static od(t){return _({localization:{dateFormat:"dd MMM 'yy"}},t??{})}}function ns(t){var i=t.width,s=t.height;if(i<0)throw new Error("Negative width is not allowed for Size");if(s<0)throw new Error("Negative height is not allowed for Size");return{width:i,height:s}}function es(t,i){return t.width===i.width&&t.height===i.height}var hs=function(){function t(t){var i=this;this._resolutionListener=function(){return i._onResolutionChanged()},this._resolutionMediaQueryList=null,this._observers=[],this._window=t,this._installResolutionListener()}return t.prototype.dispose=function(){this._uninstallResolutionListener(),this._window=null},Object.defineProperty(t.prototype,"value",{get:function(){return this._window.devicePixelRatio},enumerable:!1,configurable:!0}),t.prototype.subscribe=function(t){var i=this,s={next:t};return this._observers.push(s),{unsubscribe:function(){i._observers=i._observers.filter(function(t){return t!==s})}}},t.prototype._installResolutionListener=function(){if(null!==this._resolutionMediaQueryList)throw new Error("Resolution listener is already installed");var t=this._window.devicePixelRatio;this._resolutionMediaQueryList=this._window.matchMedia("all and (resolution: ".concat(t,"dppx)")),this._resolutionMediaQueryList.addListener(this._resolutionListener)},t.prototype._uninstallResolutionListener=function(){null!==this._resolutionMediaQueryList&&(this._resolutionMediaQueryList.removeListener(this._resolutionListener),this._resolutionMediaQueryList=null)},t.prototype._reinstallResolutionListener=function(){this._uninstallResolutionListener(),this._installResolutionListener()},t.prototype._onResolutionChanged=function(){var t=this;this._observers.forEach(function(i){return i.next(t._window.devicePixelRatio)}),this._reinstallResolutionListener()},t}();var rs=function(){function t(t,i,s){var n;this._canvasElement=null,this._bitmapSizeChangedListeners=[],this._suggestedBitmapSize=null,this._suggestedBitmapSizeChangedListeners=[],this._devicePixelRatioObservable=null,this._canvasElementResizeObserver=null,this._canvasElement=t,this._canvasElementClientSize=ns({width:this._canvasElement.clientWidth,height:this._canvasElement.clientHeight}),this._transformBitmapSize=null!=i?i:function(t){return t},this._allowResizeObserver=null===(n=null==s?void 0:s.allowResizeObserver)||void 0===n||n,this._chooseAndInitObserver()}return t.prototype.dispose=function(){var t,i;if(null===this._canvasElement)throw new Error("Object is disposed");null===(t=this._canvasElementResizeObserver)||void 0===t||t.disconnect(),this._canvasElementResizeObserver=null,null===(i=this._devicePixelRatioObservable)||void 0===i||i.dispose(),this._devicePixelRatioObservable=null,this._suggestedBitmapSizeChangedListeners.length=0,this._bitmapSizeChangedListeners.length=0,this._canvasElement=null},Object.defineProperty(t.prototype,"canvasElement",{get:function(){if(null===this._canvasElement)throw new Error("Object is disposed");return this._canvasElement},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"canvasElementClientSize",{get:function(){return this._canvasElementClientSize},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bitmapSize",{get:function(){return ns({width:this.canvasElement.width,height:this.canvasElement.height})},enumerable:!1,configurable:!0}),t.prototype.resizeCanvasElement=function(t){this._canvasElementClientSize=ns(t),this.canvasElement.style.width="".concat(this._canvasElementClientSize.width,"px"),this.canvasElement.style.height="".concat(this._canvasElementClientSize.height,"px"),this._invalidateBitmapSize()},t.prototype.subscribeBitmapSizeChanged=function(t){this._bitmapSizeChangedListeners.push(t)},t.prototype.unsubscribeBitmapSizeChanged=function(t){this._bitmapSizeChangedListeners=this._bitmapSizeChangedListeners.filter(function(i){return i!==t})},Object.defineProperty(t.prototype,"suggestedBitmapSize",{get:function(){return this._suggestedBitmapSize},enumerable:!1,configurable:!0}),t.prototype.subscribeSuggestedBitmapSizeChanged=function(t){this._suggestedBitmapSizeChangedListeners.push(t)},t.prototype.unsubscribeSuggestedBitmapSizeChanged=function(t){this._suggestedBitmapSizeChangedListeners=this._suggestedBitmapSizeChangedListeners.filter(function(i){return i!==t})},t.prototype.applySuggestedBitmapSize=function(){if(null!==this._suggestedBitmapSize){var t=this._suggestedBitmapSize;this._suggestedBitmapSize=null,this._resizeBitmap(t),this._emitSuggestedBitmapSizeChanged(t,this._suggestedBitmapSize)}},t.prototype._resizeBitmap=function(t){var i=this.bitmapSize;es(i,t)||(this.canvasElement.width=t.width,this.canvasElement.height=t.height,this._emitBitmapSizeChanged(i,t))},t.prototype._emitBitmapSizeChanged=function(t,i){var s=this;this._bitmapSizeChangedListeners.forEach(function(n){return n.call(s,t,i)})},t.prototype._suggestNewBitmapSize=function(t){var i=this._suggestedBitmapSize,s=ns(this._transformBitmapSize(t,this._canvasElementClientSize)),n=es(this.bitmapSize,s)?null:s;null===i&&null===n||null!==i&&null!==n&&es(i,n)||(this._suggestedBitmapSize=n,this._emitSuggestedBitmapSizeChanged(i,n))},t.prototype._emitSuggestedBitmapSizeChanged=function(t,i){var s=this;this._suggestedBitmapSizeChangedListeners.forEach(function(n){return n.call(s,t,i)})},t.prototype._chooseAndInitObserver=function(){var t=this;this._allowResizeObserver?new Promise(function(t){var i=new ResizeObserver(function(s){t(s.every(function(t){return"devicePixelContentBoxSize"in t})),i.disconnect()});i.observe(document.body,{box:"device-pixel-content-box"})}).catch(function(){return!1}).then(function(i){return i?t._initResizeObserver():t._initDevicePixelRatioObservable()}):this._initDevicePixelRatioObservable()},t.prototype._initDevicePixelRatioObservable=function(){var t=this;if(null!==this._canvasElement){var i=ls(this._canvasElement);if(null===i)throw new Error("No window is associated with the canvas");this._devicePixelRatioObservable=function(t){return new hs(t)}(i),this._devicePixelRatioObservable.subscribe(function(){return t._invalidateBitmapSize()}),this._invalidateBitmapSize()}},t.prototype._invalidateBitmapSize=function(){var t,i;if(null!==this._canvasElement){var s=ls(this._canvasElement);if(null!==s){var n=null!==(i=null===(t=this._devicePixelRatioObservable)||void 0===t?void 0:t.value)&&void 0!==i?i:s.devicePixelRatio,e=this._canvasElement.getClientRects(),h=void 0!==e[0]?function(t,i){return ns({width:Math.round(t.left*i+t.width*i)-Math.round(t.left*i),height:Math.round(t.top*i+t.height*i)-Math.round(t.top*i)})}(e[0],n):ns({width:this._canvasElementClientSize.width*n,height:this._canvasElementClientSize.height*n});this._suggestNewBitmapSize(h)}}},t.prototype._initResizeObserver=function(){var t=this;null!==this._canvasElement&&(this._canvasElementResizeObserver=new ResizeObserver(function(i){var s=i.find(function(i){return i.target===t._canvasElement});if(s&&s.devicePixelContentBoxSize&&s.devicePixelContentBoxSize[0]){var n=s.devicePixelContentBoxSize[0],e=ns({width:n.inlineSize,height:n.blockSize});t._suggestNewBitmapSize(e)}}),this._canvasElementResizeObserver.observe(this._canvasElement,{box:"device-pixel-content-box"}))},t}();function ls(t){return t.ownerDocument.defaultView}var as=function(){function t(t,i,s){if(0===i.width||0===i.height)throw new TypeError("Rendering target could only be created on a media with positive width and height");if(this._mediaSize=i,0===s.width||0===s.height)throw new TypeError("Rendering target could only be created using a bitmap with positive integer width and height");this._bitmapSize=s,this._context=t}return t.prototype.useMediaCoordinateSpace=function(t){try{return this._context.save(),this._context.setTransform(1,0,0,1,0,0),this._context.scale(this._horizontalPixelRatio,this._verticalPixelRatio),t({context:this._context,mediaSize:this._mediaSize})}finally{this._context.restore()}},t.prototype.useBitmapCoordinateSpace=function(t){try{return this._context.save(),this._context.setTransform(1,0,0,1,0,0),t({context:this._context,mediaSize:this._mediaSize,bitmapSize:this._bitmapSize,horizontalPixelRatio:this._horizontalPixelRatio,verticalPixelRatio:this._verticalPixelRatio})}finally{this._context.restore()}},Object.defineProperty(t.prototype,"_horizontalPixelRatio",{get:function(){return this._bitmapSize.width/this._mediaSize.width},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"_verticalPixelRatio",{get:function(){return this._bitmapSize.height/this._mediaSize.height},enumerable:!1,configurable:!0}),t}();function os(t,i){var s=t.canvasElementClientSize;if(0===s.width||0===s.height)return null;var n=t.bitmapSize;if(0===n.width||0===n.height)return null;var e=t.canvasElement.getContext("2d",i);return null===e?null:new as(e,s,n)}const _s="undefined"!=typeof window;function us(){return!!_s&&window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function cs(){return!!_s&&/iPhone|iPad|iPod/.test(window.navigator.platform)}function ds(t){return t+t%2}function fs(t){_s&&void 0!==window.chrome&&t.addEventListener("mousedown",t=>{if(1===t.button)return t.preventDefault(),!1})}class ps{constructor(t,i,s){this._d=0,this.ud=null,this.dd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY},this.fd=0,this.pd=null,this.vd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY},this.md=null,this.wd=!1,this.gd=null,this.Md=null,this.bd=!1,this.yd=!1,this.Sd=!1,this.xd=null,this.Pd=null,this.Cd=null,this.Td=null,this.kd=null,this.Dd=null,this.Rd=null,this.Ed=0,this.Vd=!1,this.Ld=!1,this.Ad=!1,this.Id=0,this.Fd=null,this.Bd=!cs(),this.zd=t=>{this.Od(t)},this.Wd=t=>{if(this.$d(t)){const i=this.Hd(t);if(++this.fd,this.pd&&this.fd>1){const{Nd:s}=this.Ud(ws(t),this.vd);s<30&&!this.Sd&&this.qd(i,this.Yd.jd),this.Gd()}}else{const i=this.Hd(t);if(++this._d,this.ud&&this._d>1){const{Nd:s}=this.Ud(ws(t),this.dd);s<5&&!this.yd&&this.Kd(i,this.Yd.Xd),this.Zd()}}},this.Jd=t,this.Yd=i,this.Cs=s,this.Qd()}m(){null!==this.xd&&(this.xd(),this.xd=null),null!==this.Pd&&(this.Pd(),this.Pd=null),null!==this.Td&&(this.Td(),this.Td=null),null!==this.kd&&(this.kd(),this.kd=null),null!==this.Dd&&(this.Dd(),this.Dd=null),null!==this.Cd&&(this.Cd(),this.Cd=null),this.tf(),this.Zd()}if(t){this.Td&&this.Td();const i=this.sf.bind(this);if(this.Td=()=>{this.Jd.removeEventListener("mousemove",i)},this.Jd.addEventListener("mousemove",i),this.$d(t))return;const s=this.Hd(t);this.Kd(s,this.Yd.nf),this.Bd=!0}Zd(){null!==this.ud&&clearTimeout(this.ud),this._d=0,this.ud=null,this.dd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY}}Gd(){null!==this.pd&&clearTimeout(this.pd),this.fd=0,this.pd=null,this.vd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY}}sf(t){if(this.Ad||null!==this.Md)return;if(this.$d(t))return;const i=this.Hd(t);this.Kd(i,this.Yd.ef),this.Bd=!0}hf(t){const i=Ms(t.changedTouches,l(this.Fd));if(null===i)return;if(this.Id=gs(t),null!==this.Rd)return;if(this.Ld)return;this.Vd=!0;const s=this.Ud(ws(i),l(this.Md)),{rf:n,lf:e,Nd:h}=s;if(this.bd||!(h<5)){if(!this.bd){const t=.5*n,i=e>=t&&!this.Cs.af(),s=t>e&&!this.Cs._f();i||s||(this.Ld=!0),this.bd=!0,this.Sd=!0,this.tf(),this.Gd()}if(!this.Ld){const s=this.Hd(t,i);this.qd(s,this.Yd.uf),ms(t)}}}cf(t){if(0!==t.button)return;const i=this.Ud(ws(t),l(this.gd)),{Nd:s}=i;if(s>=5&&(this.yd=!0,this.Zd()),this.yd){const i=this.Hd(t);this.Kd(i,this.Yd.df)}}Ud(t,i){const s=Math.abs(i.ut-t.ut),n=Math.abs(i.ct-t.ct);return{rf:s,lf:n,Nd:s+n}}ff(t){let i=Ms(t.changedTouches,l(this.Fd));if(null===i&&0===t.touches.length&&(i=t.changedTouches[0]),null===i)return;this.Fd=null,this.Id=gs(t),this.tf(),this.Md=null,this.Dd&&(this.Dd(),this.Dd=null);const s=this.Hd(t,i);if(this.qd(s,this.Yd.pf),++this.fd,this.pd&&this.fd>1){const{Nd:t}=this.Ud(ws(i),this.vd);t<30&&!this.Sd&&this.qd(s,this.Yd.jd),this.Gd()}else this.Sd||(this.qd(s,this.Yd.vf),this.Yd.vf&&ms(t));0===this.fd&&ms(t),0===t.touches.length&&this.wd&&(this.wd=!1,ms(t))}Od(t){if(0!==t.button)return;const i=this.Hd(t);if(this.gd=null,this.Ad=!1,this.kd&&(this.kd(),this.kd=null),us()){this.Jd.ownerDocument.documentElement.removeEventListener("mouseleave",this.zd)}if(!this.$d(t))if(this.Kd(i,this.Yd.mf),++this._d,this.ud&&this._d>1){const{Nd:s}=this.Ud(ws(t),this.dd);s<5&&!this.yd&&this.Kd(i,this.Yd.Xd),this.Zd()}else this.yd||this.Kd(i,this.Yd.wf)}tf(){null!==this.md&&(clearTimeout(this.md),this.md=null)}gf(t){if(null!==this.Fd)return;const i=t.changedTouches[0];this.Fd=i.identifier,this.Id=gs(t);const s=this.Jd.ownerDocument.documentElement;this.Sd=!1,this.bd=!1,this.Ld=!1,this.Md=ws(i),this.Dd&&(this.Dd(),this.Dd=null);{const i=this.hf.bind(this),n=this.ff.bind(this);this.Dd=()=>{s.removeEventListener("touchmove",i),s.removeEventListener("touchend",n)},s.addEventListener("touchmove",i,{passive:!1}),s.addEventListener("touchend",n,{passive:!1}),this.tf(),this.md=setTimeout(this.Mf.bind(this,t),240)}const n=this.Hd(t,i);this.qd(n,this.Yd.bf),this.pd||(this.fd=0,this.pd=setTimeout(this.Gd.bind(this),500),this.vd=ws(i))}yf(t){if(0!==t.button)return;const i=this.Jd.ownerDocument.documentElement;us()&&i.addEventListener("mouseleave",this.zd),this.yd=!1,this.gd=ws(t),this.kd&&(this.kd(),this.kd=null);{const t=this.cf.bind(this),s=this.Od.bind(this);this.kd=()=>{i.removeEventListener("mousemove",t),i.removeEventListener("mouseup",s)},i.addEventListener("mousemove",t),i.addEventListener("mouseup",s)}if(this.Ad=!0,this.$d(t))return;const s=this.Hd(t);this.Kd(s,this.Yd.Sf),this.ud||(this._d=0,this.ud=setTimeout(this.Zd.bind(this),500),this.dd=ws(t))}Qd(){this.Jd.addEventListener("mouseenter",this.if.bind(this)),this.Jd.addEventListener("touchcancel",this.tf.bind(this));{const t=this.Jd.ownerDocument,i=t=>{this.Yd.xf&&(t.composed&&this.Jd.contains(t.composedPath()[0])||t.target&&this.Jd.contains(t.target)||this.Yd.xf())};this.Pd=()=>{t.removeEventListener("touchstart",i)},this.xd=()=>{t.removeEventListener("mousedown",i)},t.addEventListener("mousedown",i),t.addEventListener("touchstart",i,{passive:!0})}cs()&&(this.Cd=()=>{this.Jd.removeEventListener("dblclick",this.Wd)},this.Jd.addEventListener("dblclick",this.Wd)),this.Jd.addEventListener("mouseleave",this.Pf.bind(this)),this.Jd.addEventListener("touchstart",this.gf.bind(this),{passive:!0}),fs(this.Jd),this.Jd.addEventListener("mousedown",this.yf.bind(this)),this.Cf(),this.Jd.addEventListener("touchmove",()=>{},{passive:!1})}Cf(){void 0===this.Yd.Tf&&void 0===this.Yd.kf&&void 0===this.Yd.Df||(this.Jd.addEventListener("touchstart",t=>this.Rf(t.touches),{passive:!0}),this.Jd.addEventListener("touchmove",t=>{if(2===t.touches.length&&null!==this.Rd&&void 0!==this.Yd.kf){const i=vs(t.touches[0],t.touches[1])/this.Ed;this.Yd.kf(this.Rd,i),ms(t)}},{passive:!1}),this.Jd.addEventListener("touchend",t=>{this.Rf(t.touches)}))}Rf(t){1===t.length&&(this.Vd=!1),2!==t.length||this.Vd||this.wd?this.Ef():this.Vf(t)}Vf(t){const i=this.Jd.getBoundingClientRect()||{left:0,top:0};this.Rd={ut:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,ct:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.Ed=vs(t[0],t[1]),void 0!==this.Yd.Tf&&this.Yd.Tf(),this.tf()}Ef(){null!==this.Rd&&(this.Rd=null,void 0!==this.Yd.Df&&this.Yd.Df())}Pf(t){if(this.Td&&this.Td(),this.$d(t))return;if(!this.Bd)return;const i=this.Hd(t);this.Kd(i,this.Yd.Lf),this.Bd=!cs()}Mf(t){const i=Ms(t.touches,l(this.Fd));if(null===i)return;const s=this.Hd(t,i);this.qd(s,this.Yd.Af),this.Sd=!0,this.wd=!0}$d(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:gs(t)<this.Id+500}qd(t,i){i&&i.call(this.Yd,t)}Kd(t,i){i&&i.call(this.Yd,t)}Hd(t,i){const s=i||t,n=this.Jd.getBoundingClientRect()||{left:0,top:0};return{clientX:s.clientX,clientY:s.clientY,pageX:s.pageX,pageY:s.pageY,screenX:s.screenX,screenY:s.screenY,localX:s.clientX-n.left,localY:s.clientY-n.top,ctrlKey:t.ctrlKey,altKey:t.altKey,shiftKey:t.shiftKey,metaKey:t.metaKey,If:!t.type.startsWith("mouse")&&"contextmenu"!==t.type&&"click"!==t.type,Ff:t.type,Bf:s.target,a_:t.view,zf:()=>{"touchstart"!==t.type&&ms(t)}}}}function vs(t,i){const s=t.clientX-i.clientX,n=t.clientY-i.clientY;return Math.sqrt(s*s+n*n)}function ms(t){t.cancelable&&t.preventDefault()}function ws(t){return{ut:t.pageX,ct:t.pageY}}function gs(t){return t.timeStamp||performance.now()}function Ms(t,i){for(let s=0;s<t.length;++s)if(t[s].identifier===i)return t[s];return null}class bs{constructor(t,i,s){this.Of=null,this.Wf=null,this.$f=!0,this.Hf=null,this.Nf=t,this.Uf=t.qf()[i],this.jf=t.qf()[s],this.Yf=document.createElement("tr"),this.Yf.style.height="1px",this.Gf=document.createElement("td"),this.Gf.style.position="relative",this.Gf.style.padding="0",this.Gf.style.margin="0",this.Gf.setAttribute("colspan","3"),this.Kf(),this.Yf.appendChild(this.Gf),this.$f=this.Nf.W().layout.panes.enableResize,this.$f?this.Xf():(this.Of=null,this.Wf=null)}m(){null!==this.Wf&&this.Wf.m()}Zf(){return this.Yf}Jf(){return ns({width:this.Uf.Jf().width,height:1})}Qf(){return ns({width:this.Uf.Qf().width,height:1*window.devicePixelRatio})}tp(t,i,s){const n=this.Qf();t.fillStyle=this.Nf.W().layout.panes.separatorColor,t.fillRect(i,s,n.width,n.height)}Tt(){this.Kf(),this.Nf.W().layout.panes.enableResize!==this.$f&&(this.$f=this.Nf.W().layout.panes.enableResize,this.$f?this.Xf():(null!==this.Of&&(this.Gf.removeChild(this.Of.ip),this.Gf.removeChild(this.Of.sp),this.Of=null),null!==this.Wf&&(this.Wf.m(),this.Wf=null)))}Xf(){const t=document.createElement("div"),i=t.style;i.position="fixed",i.display="none",i.zIndex="49",i.top="0",i.left="0",i.width="100%",i.height="100%",i.cursor="row-resize",this.Gf.appendChild(t);const s=document.createElement("div"),n=s.style;n.position="absolute",n.zIndex="50",n.top="-4px",n.height="9px",n.width="100%",n.backgroundColor="",n.cursor="row-resize",this.Gf.appendChild(s);const e={nf:this.np.bind(this),Lf:this.ep.bind(this),Sf:this.hp.bind(this),bf:this.hp.bind(this),df:this.rp.bind(this),uf:this.rp.bind(this),mf:this.lp.bind(this),pf:this.lp.bind(this)};this.Wf=new ps(s,e,{af:()=>!1,_f:()=>!0}),this.Of={sp:s,ip:t}}Kf(){this.Gf.style.background=this.Nf.W().layout.panes.separatorColor}np(t){null!==this.Of&&(this.Of.sp.style.backgroundColor=this.Nf.W().layout.panes.separatorHoverColor)}ep(t){null!==this.Of&&null===this.Hf&&(this.Of.sp.style.backgroundColor="")}hp(t){if(null===this.Of)return;const i=this.Uf.ap().Lo()+this.jf.ap().Lo(),s=i/(this.Uf.Jf().height+this.jf.Jf().height),n=30*s;i<=2*n||(this.Hf={op:t.pageY,_p:this.Uf.ap().Lo(),up:i-n,cp:i,dp:s,fp:n},this.Of.ip.style.display="block")}rp(t){const i=this.Hf;if(null===i)return;const s=(t.pageY-i.op)*i.dp,n=Gt(i._p+s,i.fp,i.up);this.Uf.ap().Ao(n),this.jf.ap().Ao(i.cp-n),this.Nf.ti().Ar()}lp(t){null!==this.Hf&&null!==this.Of&&(this.Hf=null,this.Of.ip.style.display="none")}}function ys(t,i){return t.pp-i.pp}function Ss(t,i,s){const n=(t.pp-i.pp)/(t.gt-i.gt);return Math.sign(n)*Math.min(Math.abs(n),s)}class xs{constructor(t,i,s,n){this.vp=null,this.mp=null,this.wp=null,this.gp=null,this.Mp=null,this.bp=0,this.yp=0,this.Sp=t,this.xp=i,this.Pp=s,this.bn=n}Cp(t,i){if(null!==this.vp){if(this.vp.gt===i)return void(this.vp.pp=t);if(Math.abs(this.vp.pp-t)<this.bn)return}this.gp=this.wp,this.wp=this.mp,this.mp=this.vp,this.vp={gt:i,pp:t}}oe(t,i){if(null===this.vp||null===this.mp)return;if(i-this.vp.gt>50)return;let s=0;const n=Ss(this.vp,this.mp,this.xp),e=ys(this.vp,this.mp),h=[n],r=[e];if(s+=e,null!==this.wp){const t=Ss(this.mp,this.wp,this.xp);if(Math.sign(t)===Math.sign(n)){const i=ys(this.mp,this.wp);if(h.push(t),r.push(i),s+=i,null!==this.gp){const t=Ss(this.wp,this.gp,this.xp);if(Math.sign(t)===Math.sign(n)){const i=ys(this.wp,this.gp);h.push(t),r.push(i),s+=i}}}}let l=0;for(let t=0;t<h.length;++t)l+=r[t]/s*h[t];Math.abs(l)<this.Sp||(this.Mp={pp:t,gt:i},this.yp=l,this.bp=function(t,i){const s=Math.log(i);return Math.log(1*s/-t)/s}(Math.abs(l),this.Pp))}Eu(t){const i=l(this.Mp),s=t-i.gt;return i.pp+this.yp*(Math.pow(this.Pp,s)-1)/Math.log(this.Pp)}Ru(t){return null===this.Mp||this.Tp(t)===this.bp}Tp(t){const i=t-l(this.Mp).gt;return Math.min(i,this.bp)}}class Ps{constructor(t,i){this.kp=void 0,this.Dp=void 0,this.Rp=void 0,this.vs=!1,this.Ep=t,this.Vp=i,this.Lp()}Tt(){this.Lp()}Ap(){this.kp&&this.Ep.removeChild(this.kp),this.Dp&&this.Ep.removeChild(this.Dp),this.kp=void 0,this.Dp=void 0}Ip(){return this.vs!==this.Fp()||this.Rp!==this.Bp()}Bp(){return this.Vp.ti().Xi().tt(this.Vp.W().layout.textColor)>160?"dark":"light"}Fp(){return this.Vp.W().layout.attributionLogo}zp(){const t=new URL(location.href);return t.hostname?"&utm_source="+t.hostname+t.pathname:""}Lp(){this.Ip()&&(this.Ap(),this.vs=this.Fp(),this.vs&&(this.Rp=this.Bp(),this.Dp=document.createElement("style"),this.Dp.innerText="a#pipsend-attr-logo{--fill:#13d3c9;position:absolute;left:10px;bottom:10px;height:24px;width:46px;margin:0;padding:0;border:0;z-index:3;opacity:0.8;transition:opacity 0.3s;}a#pipsend-attr-logo:hover{opacity:1;}a#pipsend-attr-logo[data-dark]{--fill:#13d3c9;}",this.kp=document.createElement("a"),this.kp.href=`https://pipsend.com${this.zp()}`,this.kp.title="Powered by Pipsend Charts",this.kp.id="pipsend-attr-logo",this.kp.target="_blank",this.kp.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 155.89"><g><circle cx="220.68" cy="77.94" r="32.86" style="fill: var(--fill);"/><path d="M138.84,77.94c0,12.01-3.69,23.15-10,32.37h42.32v-.22c-6.21-9.17-9.84-20.24-9.84-32.15s3.63-22.97,9.84-32.15v-.22h-42.32c6.3,9.22,10,20.36,10,32.37Z" style="fill: var(--fill);"/><path d="M222.06,0H77.94C34.9,0,0,34.9,0,77.94h0c0,43.05,34.9,77.94,77.94,77.94h144.11c43.05,0,77.94-34.9,77.94-77.94h0C300,34.9,265.1,0,222.06,0ZM279.4,77.94c0,31.75-25.74,57.49-57.49,57.49H78.09c-31.75,0-57.49-25.74-57.49-57.49h0c0-31.75,25.74-57.49,57.49-57.49h143.82c31.75,0,57.49,25.74,57.49,57.49h0Z" style="fill: var(--fill);"/><circle cx="79.33" cy="77.94" r="32.86" style="fill: var(--fill);"/></g></svg>',this.kp.toggleAttribute("data-dark","dark"===this.Rp),this.Ep.appendChild(this.Dp),this.Ep.appendChild(this.kp)))}}function Cs(t,i){const s=l(t.ownerDocument).createElement("canvas");t.appendChild(s);const n=new rs(s,(e={options:{allowResizeObserver:!0},transform:(t,i)=>({width:Math.max(t.width,i.width),height:Math.max(t.height,i.height)})}).transform,e.options);var e;return n.resizeCanvasElement(i),n}function Ts(t){t.width=1,t.height=1,t.getContext("2d")?.clearRect(0,0,1,1)}function ks(t,i,s,n){t.sr&&t.sr(i,s,n)}function Ds(t,i,s,n){t.et(i,s,n)}function Rs(t,i,s,n){const e=t(s,n);for(const t of e){const s=t.Dt(n);null!==s&&i(s)}}function Es(t,i){return s=>{if(!function(t){return void 0!==t.$t}(s))return[];return(s.$t()?.wl()??"")!==i?[]:s.il?.(t)??[]}}function Vs(t,i,s,n){if(!t.length)return;let e=0;const h=t[0].qt(n,!0);let r=1===i?s/2-(t[0].$i()-h/2):t[0].$i()-h/2-s/2;r=Math.max(0,r);for(let h=1;h<t.length;h++){const l=t[h],a=t[h-1],o=a.qt(n,!1),_=l.$i(),u=a.$i();if(1===i?_>u-o:_<u+o){const n=u-o*i;l.Hi(n);const h=n-i*o/2;if((1===i?h<0:h>s)&&r>0){const n=1===i?-1-h:h-s,l=Math.min(n,r);for(let s=e;s<t.length;s++)t[s].Hi(t[s].$i()+i*l);r-=l}}else e=h,r=1===i?u-o-_:_-(u+o)}}class Ls{constructor(t,i,s,n){this.Yi=null,this.Op=null,this.Wp=!1,this.$p=new it(200),this.Hp=null,this.Np=0,this.Up=!1,this.qp=()=>{this.Up||this.Ct.jp().ti().oh()},this.Yp=()=>{this.Up||this.Ct.jp().ti().oh()},this.Ct=t,this.Cs=i,this.ba=i.layout,this.Qu=s,this.Gp="left"===n,this.Kp=Es("normal",n),this.Xp=Es("top",n),this.Zp=Es("bottom",n),this.Gf=document.createElement("div"),this.Gf.style.height="100%",this.Gf.style.overflow="hidden",this.Gf.style.width="25px",this.Gf.style.left="0",this.Gf.style.position="relative",this.Jp=Cs(this.Gf,ns({width:16,height:16})),this.Jp.subscribeSuggestedBitmapSizeChanged(this.qp);const e=this.Jp.canvasElement;e.style.position="absolute",e.style.zIndex="1",e.style.left="0",e.style.top="0",this.Qp=Cs(this.Gf,ns({width:16,height:16})),this.Qp.subscribeSuggestedBitmapSizeChanged(this.Yp);const h=this.Qp.canvasElement;h.style.position="absolute",h.style.zIndex="2",h.style.left="0",h.style.top="0";const r={Sf:this.hp.bind(this),bf:this.hp.bind(this),df:this.rp.bind(this),uf:this.rp.bind(this),xf:this.tv.bind(this),mf:this.lp.bind(this),pf:this.lp.bind(this),Xd:this.iv.bind(this),jd:this.iv.bind(this),nf:this.sv.bind(this),Lf:this.ep.bind(this)};this.Wf=new ps(this.Qp.canvasElement,r,{af:()=>!this.Cs.handleScroll.vertTouchDrag,_f:()=>!0})}m(){this.Wf.m(),this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.Yp),Ts(this.Qp.canvasElement),this.Qp.dispose(),this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),Ts(this.Jp.canvasElement),this.Jp.dispose(),null!==this.Yi&&this.Yi.no().u(this),this.Yi=null}Zf(){return this.Gf}C(){return this.ba.fontSize}nv(){const t=this.Qu.W();return this.Hp!==t.T&&(this.$p.Ln(),this.Hp=t.T),t}ev(){if(null===this.Yi)return 0;let t=0;const i=this.nv(),s=l(this.Jp.canvasElement.getContext("2d",{colorSpace:this.Ct.jp().W().layout.colorSpace}));s.save();const n=this.Yi.El();s.font=this.hv(),n.length>0&&(t=Math.max(this.$p.Vi(s,n[0].Zl),this.$p.Vi(s,n[n.length-1].Zl)));const e=this.rv();for(let i=e.length;i--;){const n=this.$p.Vi(s,e[i].ri());n>t&&(t=n)}const h=this.Yi.Bt();if(null!==h&&null!==this.Op&&(2!==(r=this.Cs.crosshair).mode&&r.horzLine.visible&&r.horzLine.labelVisible)){const i=this.Yi.Ds(1,h),n=this.Yi.Ds(this.Op.height-2,h);t=Math.max(t,this.$p.Vi(s,this.Yi.Zi(Math.floor(Math.min(i,n))+.11111111111111,h)),this.$p.Vi(s,this.Yi.Zi(Math.ceil(Math.max(i,n))-.11111111111111,h)))}var r;s.restore();const a=t||34;return ds(Math.ceil(i.S+i.P+i.A+i.I+5+a))}lv(t){null!==this.Op&&es(this.Op,t)||(this.Op=t,this.Up=!0,this.Jp.resizeCanvasElement(t),this.Qp.resizeCanvasElement(t),this.Up=!1,this.Gf.style.width=`${t.width}px`,this.Gf.style.height=`${t.height}px`)}av(){return l(this.Op).width}us(t){this.Yi!==t&&(null!==this.Yi&&this.Yi.no().u(this),this.Yi=t,t.no().i(this.ua.bind(this),this))}$t(){return this.Yi}Ln(){const t=this.Ct.ap();this.Ct.jp().ti().Zo(t,l(this.$t()))}ov(t){if(null===this.Op)return;const i={colorSpace:this.Ct.jp().W().layout.colorSpace};if(1!==t){this._v(),this.Jp.applySuggestedBitmapSize();const t=os(this.Jp,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t)}),this.Ct.dv(t,this.Zp),this.fv(t),this.Ct.dv(t,this.Kp),this.pv(t))}this.Qp.applySuggestedBitmapSize();const s=os(this.Qp,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.vv(s),this.Ct.dv(s,this.Xp))}Qf(){return this.Jp.bitmapSize}tp(t,i,s,n){const e=this.Qf();if(e.width>0&&e.height>0&&(t.drawImage(this.Jp.canvasElement,i,s),n)){const n=this.Qp.canvasElement;t.drawImage(n,i,s)}}Tt(){this.Yi?.El()}hp(t){if(null===this.Yi||this.Yi.Ki()||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.jp().ti(),s=this.Ct.ap();this.Wp=!0,i.Uo(s,this.Yi,t.localY)}rp(t){if(null===this.Yi||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.jp().ti(),s=this.Ct.ap(),n=this.Yi;i.qo(s,n,t.localY)}tv(){if(null===this.Yi||!this.Cs.handleScale.axisPressedMouseMove.price)return;const t=this.Ct.jp().ti(),i=this.Ct.ap(),s=this.Yi;this.Wp&&(this.Wp=!1,t.jo(i,s))}lp(t){if(null===this.Yi||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.jp().ti(),s=this.Ct.ap();this.Wp=!1,i.jo(s,this.Yi)}iv(t){this.Cs.handleScale.axisDoubleClickReset.price&&this.Ln()}sv(t){if(null===this.Yi)return;!this.Ct.jp().ti().W().handleScale.axisPressedMouseMove.price||this.Yi.ze()||this.Yi.Ea()||this.mv(1)}ep(t){this.mv(0)}rv(){const t=[],i=null===this.Yi?void 0:this.Yi;return(s=>{for(let n=0;n<s.length;++n){const e=s[n].Hs(this.Ct.ap(),i);for(let i=0;i<e.length;i++)t.push(e[i])}})(this.Ct.ap().Et()),t}uv({context:t,bitmapSize:i}){const{width:s,height:n}=i,e=this.Ct.ap().ti(),h=e.q(),r=e.Hc();h===r?L(t,0,0,s,n,h):F(t,0,0,s,n,h,r)}cv({context:t,bitmapSize:i,horizontalPixelRatio:s}){if(null===this.Op||null===this.Yi||!this.Yi.W().borderVisible)return;t.fillStyle=this.Yi.W().borderColor;const n=Math.max(1,Math.floor(this.nv().S*s));let e;e=this.Gp?i.width-n:0,t.fillRect(e,0,n,i.height)}fv(t){if(null===this.Op||null===this.Yi)return;const i=this.Yi.El(),s=this.Yi.W(),n=this.nv(),e=this.Gp?this.Op.width-n.P:0;s.borderVisible&&s.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:h,verticalPixelRatio:r})=>{t.fillStyle=s.borderColor;const l=Math.max(1,Math.floor(r)),a=Math.floor(.5*r),o=Math.round(n.P*h);t.beginPath();for(const s of i)t.rect(Math.floor(e*h),Math.round(s.Cl*r)-a,o,l);t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{t.font=this.hv(),t.fillStyle=s.textColor??this.ba.textColor,t.textAlign=this.Gp?"right":"left",t.textBaseline="middle";const h=this.Gp?Math.round(e-n.A):Math.round(e+n.P+n.A),r=i.map(i=>this.$p.Ei(t,i.Zl));for(let s=i.length;s--;){const n=i[s];t.fillText(n.Zl,h,n.Cl+r[s])}})}_v(){if(null===this.Op||null===this.Yi)return;let t=this.Op.height/2;const i=[],s=this.Yi.Et().slice(),n=this.Ct.ap(),e=this.nv();this.Yi===n.qn()&&this.Ct.ap().Et().forEach(t=>{n.Un(t)&&s.push(t)});const h=this.Yi.bl()[0],r=this.Yi;s.forEach(s=>{const e=s.Hs(n,r);e.forEach(t=>{t.Hi(null),t.Ni()&&i.push(t)}),h===s&&e.length>0&&(t=e[0].Ai())}),i.forEach(t=>t.Hi(t.Ai()));this.Yi.W().alignLabels&&this.wv(i,e,t)}wv(t,i,s){if(null===this.Op)return;const n=t.filter(t=>t.Ai()<=s),e=t.filter(t=>t.Ai()>s);n.sort((t,i)=>i.Ai()-t.Ai()),n.length&&e.length&&e.push(n[0]),e.sort((t,i)=>t.Ai()-i.Ai());for(const s of t){const t=Math.floor(s.qt(i)/2),n=s.Ai();n>-t&&n<t&&s.Hi(t),n>this.Op.height-t&&n<this.Op.height+t&&s.Hi(this.Op.height-t)}Vs(n,1,this.Op.height,i),Vs(e,-1,this.Op.height,i)}pv(t){if(null===this.Op)return;const i=this.rv(),s=this.nv(),n=this.Gp?"right":"left";i.forEach(i=>{if(i.Ui()){i.Dt(l(this.Yi)).et(t,s,this.$p,n)}})}vv(t){if(null===this.Op||null===this.Yi)return;const i=this.Ct.jp().ti(),s=[],n=this.Ct.ap(),e=i.cc().Hs(n,this.Yi);e.length&&s.push(e);const h=this.nv(),r=this.Gp?"right":"left";s.forEach(i=>{i.forEach(i=>{i.Dt(l(this.Yi)).et(t,h,this.$p,r)})})}mv(t){this.Gf.style.cursor=1===t?"ns-resize":"default"}ua(){const t=this.ev();this.Np<t&&this.Ct.jp().ti().Ar(),this.Np=t}hv(){return g(this.ba.fontSize,this.ba.fontFamily)}}function As(t,i){return t.Qr?.(i)??[]}function Is(t,i){return t.$s?.(i)??[]}function Fs(t,i){return t.cs?.(i)??[]}function Bs(t,i){return t.Xr?.(i)??[]}class zs{constructor(t,i){this.Op=ns({width:0,height:0}),this.gv=null,this.Mv=null,this.bv=null,this.yv=null,this.Sv=!1,this.xv=new o,this.Pv=new o,this.Cv=0,this.Tv=!1,this.kv=null,this.Dv=!1,this.Rv=null,this.Ev=null,this.Up=!1,this.qp=()=>{this.Up||null===this.Vv||this.ss().oh()},this.Yp=()=>{this.Up||null===this.Vv||this.ss().oh()},this.Vp=t,this.Vv=i,this.Vv.i_().i(this.Lv.bind(this),this,!0),this.Av=document.createElement("td"),this.Av.style.padding="0",this.Av.style.position="relative";const s=document.createElement("div");s.style.width="100%",s.style.height="100%",s.style.position="relative",s.style.overflow="hidden",this.Iv=document.createElement("td"),this.Iv.style.padding="0",this.Fv=document.createElement("td"),this.Fv.style.padding="0",this.Av.appendChild(s),this.Jp=Cs(s,ns({width:16,height:16})),this.Jp.subscribeSuggestedBitmapSizeChanged(this.qp);const n=this.Jp.canvasElement;n.style.position="absolute",n.style.zIndex="1",n.style.left="0",n.style.top="0",this.Qp=Cs(s,ns({width:16,height:16})),this.Qp.subscribeSuggestedBitmapSizeChanged(this.Yp);const e=this.Qp.canvasElement;e.style.position="absolute",e.style.zIndex="2",e.style.left="0",e.style.top="0",this.Yf=document.createElement("tr"),this.Yf.appendChild(this.Iv),this.Yf.appendChild(this.Av),this.Yf.appendChild(this.Fv),this.Bv(),this.Wf=new ps(this.Qp.canvasElement,this,{af:()=>null===this.kv&&!this.Vp.W().handleScroll.vertTouchDrag,_f:()=>null===this.kv&&!this.Vp.W().handleScroll.horzTouchDrag})}m(){null!==this.gv&&this.gv.m(),null!==this.Mv&&this.Mv.m(),this.bv=null,this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.Yp),Ts(this.Qp.canvasElement),this.Qp.dispose(),this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),Ts(this.Jp.canvasElement),this.Jp.dispose(),null!==this.Vv&&(this.Vv.i_().u(this),this.Vv.m()),this.Wf.m()}ap(){return l(this.Vv)}zv(t){null!==this.Vv&&this.Vv.i_().u(this),this.Vv=t,null!==this.Vv&&this.Vv.i_().i(zs.prototype.Lv.bind(this),this,!0),this.Bv(),this.Vp.qf().indexOf(this)===this.Vp.qf().length-1?(this.bv=this.bv??new Ps(this.Av,this.Vp),this.bv.Tt()):(this.bv?.Ap(),this.bv=null)}jp(){return this.Vp}Zf(){return this.Yf}Bv(){if(null!==this.Vv&&(this.Ov(),0!==this.ss().Gs().length)){if(null!==this.gv){const t=this.Vv.Ho();this.gv.us(l(t))}if(null!==this.Mv){const t=this.Vv.No();this.Mv.us(l(t))}}}Wv(){null!==this.gv&&this.gv.Tt(),null!==this.Mv&&this.Mv.Tt()}Lo(){return null!==this.Vv?this.Vv.Lo():0}Ao(t){this.Vv&&this.Vv.Ao(t)}nf(t){if(!this.Vv)return;this.$v();const i=t.localX,s=t.localY;this.Hv(i,s,t)}Sf(t){this.$v(),this.Nv(),this.Hv(t.localX,t.localY,t)}ef(t){if(!this.Vv)return;this.$v();const i=t.localX,s=t.localY;this.Hv(i,s,t)}wf(t){null!==this.Vv&&(this.$v(),this.Uv(t))}Xd(t){null!==this.Vv&&this.qv(this.Pv,t)}jd(t){this.Xd(t)}df(t){this.$v(),this.jv(t),this.Hv(t.localX,t.localY,t)}mf(t){null!==this.Vv&&(this.$v(),this.Tv=!1,this.Yv(t))}vf(t){null!==this.Vv&&this.Uv(t)}Af(t){if(this.Tv=!0,null===this.kv){const i={x:t.localX,y:t.localY};this.Gv(i,i,t)}}Lf(t){null!==this.Vv&&(this.$v(),this.Vv.ti().oc(null),this.Kv())}Xv(){return this.xv}Zv(){return this.Pv}Tf(){this.Cv=1,this.ss().ln()}kf(t,i){if(!this.Vp.W().handleScale.pinch)return;const s=5*(i-this.Cv);this.Cv=i,this.ss().yc(t.ut,s)}bf(t){this.Tv=!1,this.Dv=null!==this.kv,this.Nv();const i=this.ss().cc();null!==this.kv&&i.Vt()&&(this.Rv={x:i.ni(),y:i.ei()},this.kv={x:t.localX,y:t.localY})}uf(t){if(null===this.Vv)return;const i=t.localX,s=t.localY;if(null!==this.kv){this.Dv=!1;const n=l(this.Rv),e=n.x+(i-this.kv.x),h=n.y+(s-this.kv.y);return void this.Hv(e,h,t)}this.jv(t)}pf(t){0===this.jp().W().trackingMode.exitMode&&(this.Dv=!0),this.Jv(),this.Yv(t)}Gn(t,i){const s=this.Vv;return null===s?null:Si(s,t,i)}Qv(t,i){l("left"===i?this.gv:this.Mv).lv(ns({width:t,height:this.Op.height}))}Jf(){return this.Op}lv(t){es(this.Op,t)||(this.Op=t,this.Up=!0,this.Jp.resizeCanvasElement(t),this.Qp.resizeCanvasElement(t),this.Up=!1,this.Av.style.width=t.width+"px",this.Av.style.height=t.height+"px")}tm(){const t=l(this.Vv);t.$o(t.Ho()),t.$o(t.No());for(const i of t.bl())if(t.Un(i)){const s=i.$t();null!==s&&t.$o(s),i.Ws()}for(const i of t.n_())i.Ws()}Qf(){return this.Jp.bitmapSize}tp(t,i,s,n){const e=this.Qf();if(e.width>0&&e.height>0&&(t.drawImage(this.Jp.canvasElement,i,s),n)){const n=this.Qp.canvasElement;null!==t&&t.drawImage(n,i,s)}}ov(t){if(0===t)return;if(null===this.Vv)return;t>1&&this.tm(),null!==this.gv&&this.gv.ov(t),null!==this.Mv&&this.Mv.ov(t);const i={colorSpace:this.Vp.W().layout.colorSpace};if(1!==t){this.Jp.applySuggestedBitmapSize();const t=os(this.Jp,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.uv(t)}),this.Vv&&(this.im(t,As),this.sm(t),this.im(t,Is),this.im(t,Fs)))}this.Qp.applySuggestedBitmapSize();const s=os(this.Qp,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.nm(s),this.im(s,Bs),this.im(s,Fs))}hm(){return this.gv}rm(){return this.Mv}dv(t,i){this.im(t,i)}Lv(){null!==this.Vv&&this.Vv.i_().u(this),this.Vv=null}Uv(t){this.qv(this.xv,t)}qv(t,i){const s=i.localX,n=i.localY;t.v()&&t.p(this.ss().It().du(s),{x:s,y:n},i)}uv({context:t,bitmapSize:i}){const{width:s,height:n}=i,e=this.ss(),h=e.q(),r=e.Hc();h===r?L(t,0,0,s,n,r):F(t,0,0,s,n,h,r)}sm(t){const i=l(this.Vv),s=i.s_()._h().Dt(i);null!==s&&s.et(t,!1)}nm(t){this.lm(t,Is,Ds,this.ss().cc())}im(t,i){const s=l(this.Vv),n=s.Et(),e=s.n_();for(const s of e)this.lm(t,i,ks,s);for(const s of n)this.lm(t,i,ks,s);for(const s of e)this.lm(t,i,Ds,s);for(const s of n)this.lm(t,i,Ds,s)}lm(t,i,s,n){const e=l(this.Vv),h=e.ti().ac(),r=null!==h&&h.e_===n,a=null!==h&&r&&void 0!==h.h_?h.h_.Xn:void 0;Rs(i,i=>s(i,t,r,a),n,e)}Ov(){if(null===this.Vv)return;const t=this.Vp,i=this.Vv.Ho().W().visible,s=this.Vv.No().W().visible;i||null===this.gv||(this.Iv.removeChild(this.gv.Zf()),this.gv.m(),this.gv=null),s||null===this.Mv||(this.Fv.removeChild(this.Mv.Zf()),this.Mv.m(),this.Mv=null);const n=t.ti().Lc();i&&null===this.gv&&(this.gv=new Ls(this,t.W(),n,"left"),this.Iv.appendChild(this.gv.Zf())),s&&null===this.Mv&&(this.Mv=new Ls(this,t.W(),n,"right"),this.Fv.appendChild(this.Mv.Zf()))}am(t){return t.If&&this.Tv||null!==this.kv}om(t){return Math.max(0,Math.min(t,this.Op.width-1))}_m(t){return Math.max(0,Math.min(t,this.Op.height-1))}Hv(t,i,s){this.ss().Dc(this.om(t),this._m(i),s,l(this.Vv))}Kv(){this.ss().Ec()}Jv(){this.Dv&&(this.kv=null,this.Kv())}Gv(t,i,s){this.kv=t,this.Dv=!1,this.Hv(i.x,i.y,s);const n=this.ss().cc();this.Rv={x:n.ni(),y:n.ei()}}ss(){return this.Vp.ti()}Yv(t){if(!this.Sv)return;const i=this.ss(),s=this.ap();if(i.Ko(s,s.ks()),this.yv=null,this.Sv=!1,i.Cc(),null!==this.Ev){const t=performance.now(),s=i.It();this.Ev.oe(s.Mu(),t),this.Ev.Ru(t)||i.un(this.Ev)}}$v(){this.kv=null}Nv(){if(!this.Vv)return;if(this.ss().ln(),document.activeElement!==document.body&&document.activeElement!==document.documentElement)l(document.activeElement).blur();else{const t=document.getSelection();null!==t&&t.removeAllRanges()}!this.Vv.ks().Ki()&&this.ss().It().Ki()}jv(t){if(null===this.Vv)return;const i=this.ss(),s=i.It();if(s.Ki())return;const n=this.Vp.W(),e=n.handleScroll,h=n.kineticScroll;if((!e.pressedMouseMove||t.If)&&(!e.horzTouchDrag&&!e.vertTouchDrag||!t.If))return;const r=this.Vv.ks(),l=performance.now();if(null!==this.yv||this.am(t)||(this.yv={x:t.clientX,y:t.clientY,rd:l,um:t.localX,dm:t.localY}),null!==this.yv&&!this.Sv&&(this.yv.x!==t.clientX||this.yv.y!==t.clientY)){if(t.If&&h.touch||!t.If&&h.mouse){const t=s.wu();this.Ev=new xs(.2/t,7/t,.997,15/t),this.Ev.Cp(s.Mu(),this.yv.rd)}else this.Ev=null;r.Ki()||i.Yo(this.Vv,r,t.localY),i.xc(t.localX),this.Sv=!0}this.Sv&&(r.Ki()||i.Go(this.Vv,r,t.localY),i.Pc(t.localX),null!==this.Ev&&this.Ev.Cp(s.Mu(),l))}}class Os{constructor(t,i,s,n,e){this.xt=!0,this.Op=ns({width:0,height:0}),this.qp=()=>this.ov(3),this.Gp="left"===t,this.Qu=s.Lc,this.Cs=i,this.fm=n,this.pm=e,this.Gf=document.createElement("div"),this.Gf.style.width="25px",this.Gf.style.height="100%",this.Gf.style.overflow="hidden",this.Jp=Cs(this.Gf,ns({width:16,height:16})),this.Jp.subscribeSuggestedBitmapSizeChanged(this.qp)}m(){this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),Ts(this.Jp.canvasElement),this.Jp.dispose()}Zf(){return this.Gf}Jf(){return this.Op}lv(t){es(this.Op,t)||(this.Op=t,this.Jp.resizeCanvasElement(t),this.Gf.style.width=`${t.width}px`,this.Gf.style.height=`${t.height}px`,this.xt=!0)}ov(t){if(t<3&&!this.xt)return;if(0===this.Op.width||0===this.Op.height)return;this.xt=!1,this.Jp.applySuggestedBitmapSize();const i=os(this.Jp,{colorSpace:this.Cs.layout.colorSpace});null!==i&&i.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t)})}Qf(){return this.Jp.bitmapSize}tp(t,i,s){const n=this.Qf();n.width>0&&n.height>0&&t.drawImage(this.Jp.canvasElement,i,s)}cv({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:n}){if(!this.fm())return;t.fillStyle=this.Cs.timeScale.borderColor;const e=Math.floor(this.Qu.W().S*s),h=Math.floor(this.Qu.W().S*n),r=this.Gp?i.width-e:0;t.fillRect(r,0,e,h)}uv({context:t,bitmapSize:i}){L(t,0,0,i.width,i.height,this.pm())}}function Ws(t){return i=>i.sl?.(t)??[]}const $s=Ws("normal"),Hs=Ws("top"),Ns=Ws("bottom");class Us{constructor(t,i){this.vm=null,this.wm=null,this.M=null,this.gm=!1,this.Op=ns({width:0,height:0}),this.Mm=new o,this.$p=new it(5),this.Up=!1,this.qp=()=>{this.Up||this.Vp.ti().oh()},this.Yp=()=>{this.Up||this.Vp.ti().oh()},this.Vp=t,this.__=i,this.Cs=t.W().layout,this.kp=document.createElement("tr"),this.bm=document.createElement("td"),this.bm.style.padding="0",this.ym=document.createElement("td"),this.ym.style.padding="0",this.Gf=document.createElement("td"),this.Gf.style.height="25px",this.Gf.style.padding="0",this.Sm=document.createElement("div"),this.Sm.style.width="100%",this.Sm.style.height="100%",this.Sm.style.position="relative",this.Sm.style.overflow="hidden",this.Gf.appendChild(this.Sm),this.Jp=Cs(this.Sm,ns({width:16,height:16})),this.Jp.subscribeSuggestedBitmapSizeChanged(this.qp);const s=this.Jp.canvasElement;s.style.position="absolute",s.style.zIndex="1",s.style.left="0",s.style.top="0",this.Qp=Cs(this.Sm,ns({width:16,height:16})),this.Qp.subscribeSuggestedBitmapSizeChanged(this.Yp);const n=this.Qp.canvasElement;n.style.position="absolute",n.style.zIndex="2",n.style.left="0",n.style.top="0",this.kp.appendChild(this.bm),this.kp.appendChild(this.Gf),this.kp.appendChild(this.ym),this.xm(),this.Vp.ti().Vo().i(this.xm.bind(this),this),this.Wf=new ps(this.Qp.canvasElement,this,{af:()=>!0,_f:()=>!this.Vp.W().handleScroll.horzTouchDrag})}m(){this.Wf.m(),null!==this.vm&&this.vm.m(),null!==this.wm&&this.wm.m(),this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.Yp),Ts(this.Qp.canvasElement),this.Qp.dispose(),this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),Ts(this.Jp.canvasElement),this.Jp.dispose()}Zf(){return this.kp}Pm(){return this.vm}Cm(){return this.wm}Sf(t){if(this.gm)return;this.gm=!0;const i=this.Vp.ti();!i.It().Ki()&&this.Vp.W().handleScale.axisPressedMouseMove.time&&i.bc(t.localX)}bf(t){this.Sf(t)}xf(){const t=this.Vp.ti();!t.It().Ki()&&this.gm&&(this.gm=!1,this.Vp.W().handleScale.axisPressedMouseMove.time&&t.kc())}df(t){const i=this.Vp.ti();!i.It().Ki()&&this.Vp.W().handleScale.axisPressedMouseMove.time&&i.Tc(t.localX)}uf(t){this.df(t)}mf(){this.gm=!1;const t=this.Vp.ti();t.It().Ki()&&!this.Vp.W().handleScale.axisPressedMouseMove.time||t.kc()}pf(){this.mf()}Xd(){this.Vp.W().handleScale.axisDoubleClickReset.time&&this.Vp.ti().dn()}jd(){this.Xd()}nf(){this.Vp.ti().W().handleScale.axisPressedMouseMove.time&&this.mv(1)}Lf(){this.mv(0)}Jf(){return this.Op}Tm(){return this.Mm}km(t,i,s){es(this.Op,t)||(this.Op=t,this.Up=!0,this.Jp.resizeCanvasElement(t),this.Qp.resizeCanvasElement(t),this.Up=!1,this.Gf.style.width=`${t.width}px`,this.Gf.style.height=`${t.height}px`,this.Mm.p(t)),null!==this.vm&&this.vm.lv(ns({width:i,height:t.height})),null!==this.wm&&this.wm.lv(ns({width:s,height:t.height}))}Dm(){const t=this.Rm();return Math.ceil(t.S+t.P+t.C+t.F+t.L+t.Em)}Tt(){this.Vp.ti().It().El()}Qf(){return this.Jp.bitmapSize}tp(t,i,s,n){const e=this.Qf();if(e.width>0&&e.height>0&&(t.drawImage(this.Jp.canvasElement,i,s),n)){const n=this.Qp.canvasElement;t.drawImage(n,i,s)}}ov(t){if(0===t)return;const i={colorSpace:this.Cs.colorSpace};if(1!==t){this.Jp.applySuggestedBitmapSize();const s=os(this.Jp,i);null!==s&&(s.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t),this.Vm(s,Ns)}),this.fv(s),this.Vm(s,$s)),null!==this.vm&&this.vm.ov(t),null!==this.wm&&this.wm.ov(t)}this.Qp.applySuggestedBitmapSize();const s=os(this.Qp,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.Lm([...this.Vp.ti().Gs(),this.Vp.ti().cc()],s),this.Vm(s,Hs))}Vm(t,i){const s=this.Vp.ti().Gs();for(const n of s)Rs(i,i=>ks(i,t,!1,void 0),n,void 0);for(const n of s)Rs(i,i=>Ds(i,t,!1,void 0),n,void 0)}uv({context:t,bitmapSize:i}){L(t,0,0,i.width,i.height,this.Vp.ti().Hc())}cv({context:t,bitmapSize:i,verticalPixelRatio:s}){if(this.Vp.W().timeScale.borderVisible){t.fillStyle=this.Am();const n=Math.max(1,Math.floor(this.Rm().S*s));t.fillRect(0,0,i.width,n)}}fv(t){const i=this.Vp.ti().It(),s=i.El();if(!s||0===s.length)return;const n=this.__.maxTickMarkWeight(s),e=this.Rm(),h=i.W();h.borderVisible&&h.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:i,verticalPixelRatio:n})=>{t.strokeStyle=this.Am(),t.fillStyle=this.Am();const h=Math.max(1,Math.floor(i)),r=Math.floor(.5*i);t.beginPath();const l=Math.round(e.P*n);for(let n=s.length;n--;){const e=Math.round(s[n].coord*i);t.rect(e-r,0,h,l)}t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{const i=e.S+e.P+e.F+e.C/2;t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.N(),t.font=this.hv();for(const e of s)if(e.weight<n){const s=e.needAlignCoordinate?this.Im(t,e.coord,e.label):e.coord;t.fillText(e.label,s,i)}this.Vp.W().timeScale.allowBoldLabels&&(t.font=this.Fm());for(const e of s)if(e.weight>=n){const s=e.needAlignCoordinate?this.Im(t,e.coord,e.label):e.coord;t.fillText(e.label,s,i)}})}Im(t,i,s){const n=this.$p.Vi(t,s),e=n/2,h=Math.floor(i-e)+.5;return h<0?i+=Math.abs(0-h):h+n>this.Op.width&&(i-=Math.abs(this.Op.width-(h+n))),i}Lm(t,i){const s=this.Rm();for(const n of t)for(const t of n.ds())t.Dt().et(i,s)}Am(){return this.Vp.W().timeScale.borderColor}N(){return this.Cs.textColor}$(){return this.Cs.fontSize}hv(){return g(this.$(),this.Cs.fontFamily)}Fm(){return g(this.$(),this.Cs.fontFamily,"bold")}Rm(){null===this.M&&(this.M={S:1,B:NaN,F:NaN,L:NaN,Qi:NaN,P:5,C:NaN,T:"",Ji:new it,Em:0});const t=this.M,i=this.hv();if(t.T!==i){const s=this.$();t.C=s,t.T=i,t.F=3*s/12,t.L=3*s/12,t.Qi=9*s/12,t.B=0,t.Em=4*s/12,t.Ji.Ln()}return this.M}mv(t){this.Gf.style.cursor=1===t?"ew-resize":"default"}xm(){const t=this.Vp.ti(),i=t.W();i.leftPriceScale.visible||null===this.vm||(this.bm.removeChild(this.vm.Zf()),this.vm.m(),this.vm=null),i.rightPriceScale.visible||null===this.wm||(this.ym.removeChild(this.wm.Zf()),this.wm.m(),this.wm=null);const s={Lc:this.Vp.ti().Lc()},n=()=>i.leftPriceScale.borderVisible&&t.It().W().borderVisible,e=()=>t.Hc();i.leftPriceScale.visible&&null===this.vm&&(this.vm=new Os("left",i,s,n,e),this.bm.appendChild(this.vm.Zf())),i.rightPriceScale.visible&&null===this.wm&&(this.wm=new Os("right",i,s,n,e),this.ym.appendChild(this.wm.Zf()))}}const qs=!!_s&&!!navigator.userAgentData&&navigator.userAgentData.brands.some(t=>t.brand.includes("Chromium"))&&!!_s&&(navigator?.userAgentData?.platform?"Windows"===navigator.userAgentData.platform:navigator.userAgent.toLowerCase().indexOf("win")>=0);class js{constructor(t,i,s){var n;this.Bm=[],this.zm=[],this.Om=0,this.sa=0,this.bo=0,this.Wm=0,this.$m=0,this.Hm=null,this.Nm=!1,this.xv=new o,this.Pv=new o,this.Xu=new o,this.Um=null,this.qm=null,this.Ep=t,this.Cs=i,this.__=s,this.kp=document.createElement("div"),this.kp.classList.add("tv-lightweight-charts"),this.kp.style.overflow="hidden",this.kp.style.direction="ltr",this.kp.style.width="100%",this.kp.style.height="100%",(n=this.kp).style.userSelect="none",n.style.webkitUserSelect="none",n.style.msUserSelect="none",n.style.MozUserSelect="none",n.style.webkitTapHighlightColor="transparent",this.jm=document.createElement("table"),this.jm.setAttribute("cellspacing","0"),this.kp.appendChild(this.jm),this.Ym=this.Gm.bind(this),Ys(this.Cs)&&this.Km(!0),this.ss=new Fi(this.Ju.bind(this),this.Cs,s),this.ti().dc().i(this.Xm.bind(this),this),this.Zm=new Us(this,this.__),this.jm.appendChild(this.Zm.Zf());const e=i.autoSize&&this.Jm();let h=this.Cs.width,r=this.Cs.height;if(e||0===h||0===r){const i=t.getBoundingClientRect();h=h||i.width,r=r||i.height}this.Qm(h,r),this.tw(),t.appendChild(this.kp),this.iw(),this.ss.It().Au().i(this.ss.Ar.bind(this.ss),this),this.ss.Vo().i(this.ss.Ar.bind(this.ss),this)}ti(){return this.ss}W(){return this.Cs}qf(){return this.Bm}sw(){return this.Zm}m(){this.Km(!1),0!==this.Om&&window.cancelAnimationFrame(this.Om),this.ss.dc().u(this),this.ss.It().Au().u(this),this.ss.Vo().u(this),this.ss.m();for(const t of this.Bm)this.jm.removeChild(t.Zf()),t.Xv().u(this),t.Zv().u(this),t.m();this.Bm=[];for(const t of this.zm)this.nw(t);this.zm=[],l(this.Zm).m(),null!==this.kp.parentElement&&this.kp.parentElement.removeChild(this.kp),this.Xu.m(),this.xv.m(),this.Pv.m(),this.ew()}Qm(t,i,s=!1){if(this.sa===i&&this.bo===t)return;const n=function(t){const i=Math.floor(t.width),s=Math.floor(t.height);return ns({width:i-i%2,height:s-s%2})}(ns({width:t,height:i}));this.sa=n.height,this.bo=n.width;const e=this.sa+"px",h=this.bo+"px";l(this.kp).style.height=e,l(this.kp).style.width=h,this.jm.style.height=e,this.jm.style.width=h,s?this.hw(Y.Mn(),performance.now()):this.ss.Ar()}ov(t){void 0===t&&(t=Y.Mn());for(let i=0;i<this.Bm.length;i++)this.Bm[i].ov(t.hn(i).sn);this.Cs.timeScale.visible&&this.Zm.ov(t.en())}ah(t){const i=Ys(this.Cs);this.ss.ah(t);const s=Ys(this.Cs);s!==i&&this.Km(s),t.layout?.panes&&this.rw(),this.iw(),this.lw(t)}Xv(){return this.xv}Zv(){return this.Pv}dc(){return this.Xu}aw(t=!1){null!==this.Hm&&(this.hw(this.Hm,performance.now()),this.Hm=null);const i=this.ow(null),s=document.createElement("canvas");s.width=i.width,s.height=i.height;const n=l(s.getContext("2d"));return this.ow(n,t),s}_w(t){if("left"===t&&!this.uw())return 0;if("right"===t&&!this.cw())return 0;if(0===this.Bm.length)return 0;return l("left"===t?this.Bm[0].hm():this.Bm[0].rm()).av()}dw(){return this.Cs.autoSize&&null!==this.Um}sp(){return this.kp}fw(t){this.qm=t,this.qm?this.sp().style.setProperty("cursor",t):this.sp().style.removeProperty("cursor")}pw(){return this.qm}mw(t){return r(this.Bm[t]).Jf()}rw(){this.zm.forEach(t=>{t.Tt()})}lw(t){(void 0!==t.autoSize||!this.Um||void 0===t.width&&void 0===t.height)&&(t.autoSize&&!this.Um&&this.Jm(),!1===t.autoSize&&null!==this.Um&&this.ew(),t.autoSize||void 0===t.width&&void 0===t.height||this.Qm(t.width||this.bo,t.height||this.sa))}ow(t,i){let s=0,n=0;const e=this.Bm[0],h=(s,n)=>{let e=0;for(let h=0;h<this.Bm.length;h++){const r=this.Bm[h],a=l("left"===s?r.hm():r.rm()),o=a.Qf();if(null!==t&&a.tp(t,n,e,i),e+=o.height,h<this.Bm.length-1){const i=this.zm[h],s=i.Qf();null!==t&&i.tp(t,n,e),e+=s.height}}};if(this.uw()){h("left",0);s+=l(e.hm()).Qf().width}for(let e=0;e<this.Bm.length;e++){const h=this.Bm[e],r=h.Qf();if(null!==t&&h.tp(t,s,n,i),n+=r.height,e<this.Bm.length-1){const i=this.zm[e],h=i.Qf();null!==t&&i.tp(t,s,n),n+=h.height}}if(s+=e.Qf().width,this.cw()){h("right",s);s+=l(e.rm()).Qf().width}const r=(i,s,n)=>{l("left"===i?this.Zm.Pm():this.Zm.Cm()).tp(l(t),s,n)};if(this.Cs.timeScale.visible){const s=this.Zm.Qf();if(null!==t){let h=0;this.uw()&&(r("left",h,n),h=l(e.hm()).Qf().width),this.Zm.tp(t,h,n,i),h+=s.width,this.cw()&&r("right",h,n)}n+=s.height}return ns({width:s,height:n})}ww(){let t=0,i=0,s=0;for(const n of this.Bm)this.uw()&&(i=Math.max(i,l(n.hm()).ev(),this.Cs.leftPriceScale.minimumWidth)),this.cw()&&(s=Math.max(s,l(n.rm()).ev(),this.Cs.rightPriceScale.minimumWidth)),t+=n.Lo();i=ds(i),s=ds(s);const n=this.bo,e=this.sa,h=Math.max(n-i-s,0),r=1*this.zm.length,a=this.Cs.timeScale.visible;let o=a?Math.max(this.Zm.Dm(),this.Cs.timeScale.minimumHeight):0;var _;o=(_=o)+_%2;const u=r+o,c=e<u?0:e-u,d=c/t;let f=0;const p=window.devicePixelRatio||1;for(let t=0;t<this.Bm.length;++t){const n=this.Bm[t];n.zv(this.ss.qs()[t]);let e=0,r=0;r=t===this.Bm.length-1?Math.ceil((c-f)*p)/p:Math.round(n.Lo()*d*p)/p,e=Math.max(r,2),f+=e,n.lv(ns({width:h,height:e})),this.uw()&&n.Qv(i,"left"),this.cw()&&n.Qv(s,"right"),n.ap()&&this.ss.fc(n.ap(),e)}this.Zm.km(ns({width:a?h:0,height:o}),a?i:0,a?s:0),this.ss.Io(h),this.Wm!==i&&(this.Wm=i),this.$m!==s&&(this.$m=s)}Km(t){t?this.kp.addEventListener("wheel",this.Ym,{passive:!1}):this.kp.removeEventListener("wheel",this.Ym)}gw(t){switch(t.deltaMode){case t.DOM_DELTA_PAGE:return 120;case t.DOM_DELTA_LINE:return 32}return qs?1/window.devicePixelRatio:1}Gm(t){if(!(0!==t.deltaX&&this.Cs.handleScroll.mouseWheel||0!==t.deltaY&&this.Cs.handleScale.mouseWheel))return;const i=this.gw(t),s=i*t.deltaX/100,n=-i*t.deltaY/100;if(t.cancelable&&t.preventDefault(),0!==n&&this.Cs.handleScale.mouseWheel){const i=Math.sign(n)*Math.min(1,Math.abs(n)),s=t.clientX-this.kp.getBoundingClientRect().left;this.ti().yc(s,i)}0!==s&&this.Cs.handleScroll.mouseWheel&&this.ti().Sc(-80*s)}hw(t,i){const s=t.en();3===s&&this.Mw(),3!==s&&2!==s||(this.bw(t),this.yw(t,i),this.Zm.Tt(),this.Bm.forEach(t=>{t.Wv()}),3===this.Hm?.en()&&(this.Hm.mn(t),this.Mw(),this.bw(this.Hm),this.yw(this.Hm,i),t=this.Hm,this.Hm=null)),this.ov(t)}yw(t,i){for(const s of t.vn())this.wn(s,i)}bw(t){const i=this.ss.qs();for(let s=0;s<i.length;s++)t.hn(s).nn&&i[s].Jo()}wn(t,i){const s=this.ss.It();switch(t.an){case 0:s.Fu();break;case 1:s.Bu(t.Ht);break;case 2:s.fn(t.Ht);break;case 3:s.pn(t.Ht);break;case 4:s.Su();break;case 5:t.Ht.Ru(i)||s.pn(t.Ht.Eu(i))}}Ju(t){null!==this.Hm?this.Hm.mn(t):this.Hm=t,this.Nm||(this.Nm=!0,this.Om=window.requestAnimationFrame(t=>{if(this.Nm=!1,this.Om=0,null!==this.Hm){const i=this.Hm;this.Hm=null,this.hw(i,t);for(const s of i.vn())if(5===s.an&&!s.Ht.Ru(t)){this.ti().un(s.Ht);break}}}))}Mw(){this.tw()}nw(t){this.jm.removeChild(t.Zf()),t.m()}tw(){const t=this.ss.qs(),i=t.length,s=this.Bm.length;for(let t=i;t<s;t++){const t=r(this.Bm.pop());this.jm.removeChild(t.Zf()),t.Xv().u(this),t.Zv().u(this),t.m();const i=this.zm.pop();void 0!==i&&this.nw(i)}for(let n=s;n<i;n++){const i=new zs(this,t[n]);if(i.Xv().i(this.Sw.bind(this,i),this),i.Zv().i(this.xw.bind(this,i),this),this.Bm.push(i),n>0){const t=new bs(this,n-1,n);this.zm.push(t),this.jm.insertBefore(t.Zf(),this.Zm.Zf())}this.jm.insertBefore(i.Zf(),this.Zm.Zf())}for(let s=0;s<i;s++){const i=t[s],n=this.Bm[s];n.ap()!==i?n.zv(i):n.Bv()}this.iw(),this.ww()}Pw(t,i,s,n){const e=new Map;if(null!==t){this.ss.Gs().forEach(i=>{const s=i.Xs().$h(t);null!==s&&e.set(i,s)})}let h;if(null!==t){const i=this.ss.It().ns(t)?.originalTime;void 0!==i&&(h=i)}const r=this.ti().ac(),l=null!==r&&r.e_ instanceof Ut?r.e_:void 0,a=null!==r&&void 0!==r.h_?r.h_.Kn:void 0,o=this.Cw(n);return{Tw:h,Re:t??void 0,kw:i??void 0,Dw:-1!==o?o:void 0,Rw:l,Ew:e,Vw:a,Lw:s??void 0}}Cw(t){let i=-1;if(t)i=this.Bm.indexOf(t);else{const t=this.ti().cc().Us();null!==t&&(i=this.ti().qs().indexOf(t))}return i}Sw(t,i,s,n){this.xv.p(()=>this.Pw(i,s,n,t))}xw(t,i,s,n){this.Pv.p(()=>this.Pw(i,s,n,t))}Xm(t,i,s){this.fw(this.ti().ac()?.l_??null),this.Xu.p(()=>this.Pw(t,i,s))}iw(){const t=this.Cs.timeScale.visible?"":"none";this.Zm.Zf().style.display=t}uw(){return this.Bm[0].ap().Ho().W().visible}cw(){return this.Bm[0].ap().No().W().visible}Jm(){return"ResizeObserver"in window&&(this.Um=new ResizeObserver(t=>{const i=t[t.length-1];i&&this.Qm(i.contentRect.width,i.contentRect.height)}),this.Um.observe(this.Ep,{box:"border-box"}),!0)}ew(){null!==this.Um&&this.Um.disconnect(),this.Um=null}}function Ys(t){return Boolean(t.handleScroll.mouseWheel||t.handleScale.mouseWheel)}function Gs(t){return void 0===t.open&&void 0===t.value}function Ks(t){return function(t){return void 0!==t.open}(t)||function(t){return void 0!==t.value}(t)}function Xs(t,i,s,n){const e=s.value,h={Re:i,gt:t,Ht:[e,e,e,e],Tw:n};return void 0!==s.color&&(h.R=s.color),h}function Zs(t,i,s,n){const e=s.value,h={Re:i,gt:t,Ht:[e,e,e,e],Tw:n};return void 0!==s.lineColor&&(h.wt=s.lineColor),void 0!==s.topColor&&(h.gh=s.topColor),void 0!==s.bottomColor&&(h.Mh=s.bottomColor),h}function Js(t,i,s,n){const e=s.value,h={Re:i,gt:t,Ht:[e,e,e,e],Tw:n};return void 0!==s.topLineColor&&(h.bh=s.topLineColor),void 0!==s.bottomLineColor&&(h.yh=s.bottomLineColor),void 0!==s.topFillColor1&&(h.Sh=s.topFillColor1),void 0!==s.topFillColor2&&(h.xh=s.topFillColor2),void 0!==s.bottomFillColor1&&(h.Ph=s.bottomFillColor1),void 0!==s.bottomFillColor2&&(h.Ch=s.bottomFillColor2),h}function Qs(t,i,s,n){const e={Re:i,gt:t,Ht:[s.open,s.high,s.low,s.close],Tw:n};return void 0!==s.color&&(e.R=s.color),e}function tn(t,i,s,n){const e={Re:i,gt:t,Ht:[s.open,s.high,s.low,s.close],Tw:n};return void 0!==s.color&&(e.R=s.color),void 0!==s.borderColor&&(e.Nt=s.borderColor),void 0!==s.wickColor&&(e.wh=s.wickColor),e}function sn(t,i,s,n,e){const h=r(e)(s),l=Math.max(...h),a=Math.min(...h),o=h[h.length-1],_=[o,l,a,o],{time:u,color:c,...d}=s;return{Re:i,gt:t,Ht:_,Tw:n,ne:d,R:c}}function nn(t){return void 0!==t.Ht}function en(t,i){return void 0!==i.customValues&&(t.Aw=i.customValues),t}function hn(t){return(i,s,n,e,h,r)=>function(t,i){return i?i(t):Gs(t)}(n,r)?en({gt:i,Re:s,Tw:e},n):en(t(i,s,n,e,h),n)}function rn(t){return{Candlestick:hn(tn),Bar:hn(Qs),Area:hn(Zs),Baseline:hn(Js),Histogram:hn(Xs),Line:hn(Xs),Custom:hn(sn)}[t]}function ln(t){return{Re:0,Iw:new Map,Nr:t}}function an(t,i){if(void 0!==t&&0!==t.length)return{Fw:i.key(t[0].gt),Bw:i.key(t[t.length-1].gt)}}function on(t){let i;return t.forEach(t=>{void 0===i&&(i=t.Tw)}),r(i)}class _n{constructor(t){this.zw=new Map,this.Ow=new Map,this.Ww=new Map,this.$w=[],this.__=t}m(){this.zw.clear(),this.Ow.clear(),this.Ww.clear(),this.$w=[]}Hw(t,i){let s=0!==this.zw.size,n=!1;const e=this.Ow.get(t);if(void 0!==e)if(1===this.Ow.size)s=!1,n=!0,this.zw.clear();else for(const i of this.$w)i.pointData.Iw.delete(t)&&(n=!0);let h=[];if(0!==i.length){const s=i.map(t=>t.time),e=this.__.createConverterToInternalObj(i),r=rn(t.Rh()),l=t.dl(),a=t.pl();h=i.map((i,h)=>{const o=e(i.time),_=this.__.key(o);let u=this.zw.get(_);void 0===u&&(u=ln(o),this.zw.set(_,u),n=!0);const c=r(o,u.Re,i,s[h],l,a);return u.Iw.set(t,c),c})}s&&this.Nw(),this.Uw(t,h);let r=-1;if(n){const t=[];this.zw.forEach(i=>{t.push({timeWeight:0,time:i.Nr,pointData:i,originalTime:on(i.Iw)})}),t.sort((t,i)=>this.__.key(t.time)-this.__.key(i.time)),r=this.qw(t)}return this.jw(t,r,function(t,i,s){const n=an(t,s),e=an(i,s);if(void 0!==n&&void 0!==e)return{Yw:!1,Br:n.Bw>=e.Bw&&n.Fw>=e.Fw}}(this.Ow.get(t),e,this.__))}Fc(t){return this.Hw(t,[])}Gw(t,i,s){const n=i;!function(t){void 0===t.Tw&&(t.Tw=t.time)}(n),this.__.preprocessData(i);const e=this.__.createConverterToInternalObj([i])(i.time),h=this.Ww.get(t);if(!s&&void 0!==h&&this.__.key(e)<this.__.key(h))throw new Error(`Cannot update oldest data, last time=${h}, new time=${e}`);let r=this.zw.get(this.__.key(e));if(s&&void 0===r)throw new Error("Cannot update non-existing data point when historicalUpdate is true");const l=void 0===r;void 0===r&&(r=ln(e),this.zw.set(this.__.key(e),r));const a=rn(t.Rh()),o=t.dl(),_=t.pl(),u=a(e,r.Re,i,n.Tw,o,_);r.Iw.set(t,u),s?this.Kw(t,u,r.Re):this.Xw(t,u);const c={Br:nn(u),Yw:s};if(!l)return this.jw(t,-1,c);const d={timeWeight:0,time:r.Nr,pointData:r,originalTime:on(r.Iw)},f=yt(this.$w,this.__.key(d.time),(t,i)=>this.__.key(t.time)<i);this.$w.splice(f,0,d);for(let t=f;t<this.$w.length;++t)un(this.$w[t].pointData,t);return this.__.fillWeightsForPoints(this.$w,f),this.jw(t,f,c)}Zw(t,i){const s=this.Ow.get(t);if(void 0===s||i<=0)return[[],this.Jw()];i=Math.min(i,s.length);const n=s.splice(-i).reverse();0===s.length?this.Ww.delete(t):this.Ww.set(t,s[s.length-1].gt);for(const i of n){const s=this.zw.get(this.__.key(i.gt));if(s&&(s.Iw.delete(t),0===s.Iw.size)){this.zw.delete(this.__.key(s.Nr)),this.$w.splice(s.Re,1);for(let t=s.Re;t<this.$w.length;++t)un(this.$w[t].pointData,t)}}return[n,this.jw(t,this.$w.length-1,{Yw:!1,Br:!1})]}Xw(t,i){let s=this.Ow.get(t);void 0===s&&(s=[],this.Ow.set(t,s));const n=0!==s.length?s[s.length-1]:null;null===n||this.__.key(i.gt)>this.__.key(n.gt)?nn(i)&&s.push(i):nn(i)?s[s.length-1]=i:s.splice(-1,1),this.Ww.set(t,i.gt)}Kw(t,i,s){const n=this.Ow.get(t);if(void 0===n)return;const e=yt(n,s,(t,i)=>t.Re<i);nn(i)?n[e]=i:n.splice(e,1)}Uw(t,i){0!==i.length?(this.Ow.set(t,i.filter(nn)),this.Ww.set(t,i[i.length-1].gt)):(this.Ow.delete(t),this.Ww.delete(t))}Nw(){for(const t of this.$w)0===t.pointData.Iw.size&&this.zw.delete(this.__.key(t.time))}qw(t){let i=-1;for(let s=0;s<this.$w.length&&s<t.length;++s){const n=this.$w[s],e=t[s];if(this.__.key(n.time)!==this.__.key(e.time)){i=s;break}e.timeWeight=n.timeWeight,un(e.pointData,s)}if(-1===i&&this.$w.length!==t.length&&(i=Math.min(this.$w.length,t.length)),-1===i)return-1;for(let s=i;s<t.length;++s)un(t[s].pointData,s);return this.__.fillWeightsForPoints(t,i),this.$w=t,i}Qw(){if(0===this.Ow.size)return null;let t=0;return this.Ow.forEach(i=>{0!==i.length&&(t=Math.max(t,i[i.length-1].Re))}),t}jw(t,i,s){const n=this.Jw();if(-1!==i)this.Ow.forEach((i,e)=>{n.Oo.set(e,{ne:i,tg:e===t?s:void 0})}),this.Ow.has(t)||n.Oo.set(t,{ne:[],tg:s}),n.It.ig=this.$w,n.It.sg=i;else{const i=this.Ow.get(t);n.Oo.set(t,{ne:i||[],tg:s})}return n}Jw(){return{Oo:new Map,It:{uu:this.Qw()}}}}function un(t,i){t.Re=i,t.Iw.forEach(t=>{t.Re=i})}function cn(t,i){return t.gt<i}function dn(t,i){return i<t.gt}function fn(t,i,s){const n=i.Ur(),e=i.yi(),h=yt(t,n,cn),r=St(t,e,dn);if(!s)return{from:h,to:r};let l=h,a=r;return h>0&&h<t.length&&t[h].gt>=n&&(l=h-1),r>0&&r<t.length&&t[r-1].gt<=e&&(a=r+1),{from:l,to:a}}class pn{constructor(t,i,s){this.ng=!0,this.eg=!0,this.hg=!0,this.rg=[],this.lg=null,this.Qn=t,this.te=i,this.ag=s}Tt(t){this.ng=!0,"data"===t&&(this.eg=!0),"options"===t&&(this.hg=!0)}Dt(){return this.Qn.Vt()?(this.og(),null===this.lg?null:this._g):null}ug(){this.rg=this.rg.map(t=>({...t,...this.Qn.Rr().Eh(t.gt)}))}cg(){this.lg=null}og(){this.eg&&(this.dg(),this.eg=!1),this.hg&&(this.ug(),this.hg=!1),this.ng&&(this.fg(),this.ng=!1)}fg(){const t=this.Qn.$t(),i=this.te.It();if(this.cg(),i.Ki()||t.Ki())return;const s=i.Ce();if(null===s)return;if(0===this.Qn.Xs().Bh())return;const n=this.Qn.Bt();null!==n&&(this.lg=fn(this.rg,s,this.ag),this.pg(t,i,n.Ht),this.vg())}}class vn{constructor(t,i){this.mg=t,this.Yi=i}et(t,i,s){this.mg.draw(t,this.Yi,i,s)}}class mn extends pn{constructor(t,i,s){super(t,i,!1),this.nr=s,this._g=new vn(this.nr.renderer(),i=>{const s=t.Bt();return null===s?null:t.$t().Wt(i,s.Ht)})}fl(t){return this.nr.priceValueBuilder(t)}vl(t){return this.nr.isWhitespace(t)}dg(){const t=this.Qn.Rr();this.rg=this.Qn.Xs().Nh().map(i=>({gt:i.Re,ut:NaN,...t.Eh(i.Re),wg:i.ne}))}pg(t,i){i.cu(this.rg,m(this.lg))}vg(){this.nr.update({bars:this.rg.map(wn),barSpacing:this.te.It().wu(),visibleRange:this.lg},this.Qn.W())}}function wn(t){return{x:t.ut,time:t.gt,originalData:t.wg,barColor:t.fh}}const gn={color:"#2196f3"},Mn=(t,i,s)=>{const n=a(s);return new mn(t,i,n)};function bn(t){const i={value:t.Ht[3],time:t.Tw};return void 0!==t.Aw&&(i.customValues=t.Aw),i}function yn(t){const i=bn(t);return void 0!==t.R&&(i.color=t.R),i}function Sn(t){const i=bn(t);return void 0!==t.wt&&(i.lineColor=t.wt),void 0!==t.gh&&(i.topColor=t.gh),void 0!==t.Mh&&(i.bottomColor=t.Mh),i}function xn(t){const i=bn(t);return void 0!==t.bh&&(i.topLineColor=t.bh),void 0!==t.yh&&(i.bottomLineColor=t.yh),void 0!==t.Sh&&(i.topFillColor1=t.Sh),void 0!==t.xh&&(i.topFillColor2=t.xh),void 0!==t.Ph&&(i.bottomFillColor1=t.Ph),void 0!==t.Ch&&(i.bottomFillColor2=t.Ch),i}function Pn(t){const i={open:t.Ht[0],high:t.Ht[1],low:t.Ht[2],close:t.Ht[3],time:t.Tw};return void 0!==t.Aw&&(i.customValues=t.Aw),i}function Cn(t){const i=Pn(t);return void 0!==t.R&&(i.color=t.R),i}function Tn(t){const i=Pn(t),{R:s,Nt:n,wh:e}=t;return void 0!==s&&(i.color=s),void 0!==n&&(i.borderColor=n),void 0!==e&&(i.wickColor=e),i}function kn(t){return{Area:Sn,Line:yn,Baseline:xn,Histogram:yn,Bar:Cn,Candlestick:Tn,Custom:Dn}[t]}function Dn(t){const i=t.Tw;return{...t.ne,time:i}}const Rn={vertLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},horzLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},mode:1},En={vertLines:{color:"#D6DCDE",style:0,visible:!0},horzLines:{color:"#D6DCDE",style:0,visible:!0}},Vn={background:{type:"solid",color:"#FFFFFF"},textColor:"#191919",fontSize:12,fontFamily:w,panes:{enableResize:!0,separatorColor:"#E0E3EB",separatorHoverColor:"rgba(178, 181, 189, 0.2)"},attributionLogo:!0,colorSpace:"srgb",colorParsers:[]},Ln={autoScale:!0,mode:0,invertScale:!1,alignLabels:!0,borderVisible:!0,borderColor:"#2B2B43",entireTextOnly:!1,visible:!1,ticksVisible:!1,scaleMargins:{bottom:.1,top:.2},minimumWidth:0,ensureEdgeTickMarksVisible:!1},An={rightOffset:0,barSpacing:6,minBarSpacing:.5,maxBarSpacing:0,fixLeftEdge:!1,fixRightEdge:!1,lockVisibleTimeRangeOnResize:!1,rightBarStaysOnScroll:!1,borderVisible:!0,borderColor:"#2B2B43",visible:!0,timeVisible:!1,secondsVisible:!0,shiftVisibleRangeOnNewBar:!0,allowShiftVisibleRangeOnWhitespaceReplacement:!1,ticksVisible:!1,uniformDistribution:!1,minimumHeight:0,allowBoldLabels:!0,ignoreWhitespaceIndices:!1};function In(){return{addDefaultPane:!0,width:0,height:0,autoSize:!1,layout:Vn,crosshair:Rn,grid:En,overlayPriceScales:{...Ln},leftPriceScale:{...Ln,visible:!1},rightPriceScale:{...Ln,visible:!0},timeScale:An,localization:{locale:_s?navigator.language:"",dateFormat:"dd MMM 'yy"},handleScroll:{mouseWheel:!0,pressedMouseMove:!0,horzTouchDrag:!0,vertTouchDrag:!0},handleScale:{axisPressedMouseMove:{time:!0,price:!0},axisDoubleClickReset:{time:!0,price:!0},mouseWheel:!0,pinch:!0},kineticScroll:{mouse:!1,touch:!0},trackingMode:{exitMode:1}}}class Fn{constructor(t,i,s){this.Nf=t,this.gg=i,this.Mg=s??0}applyOptions(t){this.Nf.ti()._c(this.gg,t,this.Mg)}options(){return this.Yi().W()}width(){return j(this.gg)?this.Nf._w(this.gg):0}setVisibleRange(t){this.setAutoScale(!1),this.Yi().$a(new dt(t.from,t.to))}getVisibleRange(){let t,i,s=this.Yi().th();if(null===s)return null;if(this.Yi().Ql()){const n=this.Yi().po(),e=Bi(n);s=ai(s,this.Yi().ia()),t=Number((Math.round(s.qe()/n)*n).toFixed(e)),i=Number((Math.round(s.je()/n)*n).toFixed(e))}else t=s.qe(),i=s.je();return{from:t,to:i}}setAutoScale(t){this.applyOptions({autoScale:t})}Yi(){return l(this.Nf.ti().uc(this.gg,this.Mg)).$t}}class Bn{constructor(t,i,s,n){this.Nf=t,this.Ct=s,this.bg=i,this.yg=n}getHeight(){return this.Ct.qt()}setHeight(t){const i=this.Nf.ti(),s=i.Uc(this.Ct);i.mc(s,t)}getStretchFactor(){return this.Ct.Lo()}setStretchFactor(t){this.Ct.Ao(t),this.Nf.ti().Ar()}paneIndex(){return this.Nf.ti().Uc(this.Ct)}moveTo(t){const i=this.paneIndex();i!==t&&(h(t>=0&&t<this.Nf.qf().length,"Invalid pane index"),this.Nf.ti().gc(i,t))}getSeries(){return this.Ct.Oo().map(t=>this.bg(t))??[]}getHTMLElement(){const t=this.Nf.qf();return t&&0!==t.length&&t[this.paneIndex()]?t[this.paneIndex()].Zf():null}attachPrimitive(t){this.Ct.ul(t),t.attached&&t.attached({chart:this.yg,requestUpdate:()=>this.Ct.ti().Ar()})}detachPrimitive(t){this.Ct.cl(t)}priceScale(t){if(null===this.Ct.Eo(t))throw new Error(`Cannot find price scale with id: ${t}`);return new Fn(this.Nf,t,this.paneIndex())}setPreserveEmptyPane(t){this.Ct.Bo(t)}preserveEmptyPane(){return this.Ct.zo()}addCustomSeries(t,i={},s=0){return this.yg.addCustomSeries(t,i,s)}addSeries(t,i={}){return this.yg.addSeries(t,i,this.paneIndex())}}const zn={color:"#FF0000",price:0,lineStyle:2,lineWidth:1,lineVisible:!0,axisLabelVisible:!0,title:"",axisLabelColor:"",axisLabelTextColor:""};class On{constructor(t){this.sh=t}applyOptions(t){this.sh.ah(t)}options(){return this.sh.W()}Sg(){return this.sh}}class Wn{constructor(t,i,s,n,e,h){this.xg=new o,this.Qn=t,this.Pg=i,this.Cg=s,this.__=e,this.yg=n,this.Tg=h}m(){this.xg.m()}priceFormatter(){return this.Qn.hl()}priceToCoordinate(t){const i=this.Qn.Bt();return null===i?null:this.Qn.$t().Wt(t,i.Ht)}coordinateToPrice(t){const i=this.Qn.Bt();return null===i?null:this.Qn.$t().Ds(t,i.Ht)}barsInLogicalRange(t){if(null===t)return null;const i=new ki(new Pi(t.from,t.to)).T_(),s=this.Qn.Xs();if(s.Ki())return null;const n=s.$h(i.Ur(),1),e=s.$h(i.yi(),-1),h=l(s.zh()),r=l(s.Ks());if(null!==n&&null!==e&&n.Re>e.Re)return{barsBefore:t.from-h,barsAfter:r-t.to};const a={barsBefore:null===n||n.Re===h?t.from-h:n.Re-h,barsAfter:null===e||e.Re===r?r-t.to:r-e.Re};return null!==n&&null!==e&&(a.from=n.Tw,a.to=e.Tw),a}setData(t){this.__,this.Qn.Rh(),this.Pg.kg(this.Qn,t),this.Dg("full")}update(t,i=!1){this.Qn.Rh(),this.Pg.Rg(this.Qn,t,i),this.Dg("update")}pop(t=1){const i=this.Pg.Eg(this.Qn,t);0!==i.length&&this.Dg("update");const s=kn(this.seriesType());return i.map(t=>s(t))}dataByIndex(t,i){const s=this.Qn.Xs().$h(t,i);if(null===s)return null;return kn(this.seriesType())(s)}data(){const t=kn(this.seriesType());return this.Qn.Xs().Nh().map(i=>t(i))}subscribeDataChanged(t){this.xg.i(t)}unsubscribeDataChanged(t){this.xg._(t)}applyOptions(t){this.Qn.ah(t)}options(){return p(this.Qn.W())}priceScale(){return this.Cg.priceScale(this.Qn.$t().wl(),this.getPane().paneIndex())}createPriceLine(t){const i=_(p(zn),t),s=this.Qn.Or(i);return new On(s)}removePriceLine(t){this.Qn.Wr(t.Sg())}priceLines(){return this.Qn.$r().map(t=>new On(t))}seriesType(){return this.Qn.Rh()}lastValueData(t){const i=this.Qn.Te(t);return i.ke?{noData:!0}:{noData:!1,price:i.Mt,color:i.R}}attachPrimitive(t){this.Qn.ul(t),t.attached&&t.attached({chart:this.yg,series:this,requestUpdate:()=>this.Qn.ti().Ar(),horzScaleBehavior:this.__})}detachPrimitive(t){this.Qn.cl(t),t.detached&&t.detached(),this.Qn.ti().Ar()}getPane(){const t=this.Qn,i=l(this.Qn.ti().Nn(t));return this.Tg(i)}moveToPane(t){this.Qn.ti().Wc(this.Qn,t)}seriesOrder(){const t=this.Qn.ti().Nn(this.Qn);return null===t?-1:t.Oo().indexOf(this.Qn)}setSeriesOrder(t){const i=this.Qn.ti().Nn(this.Qn);null!==i&&i.t_(this.Qn,t)}Dg(t){this.xg.v()&&this.xg.p(t)}}class $n{constructor(t,i,s){this.Vg=new o,this.B_=new o,this.Mm=new o,this.ss=t,this.cr=t.It(),this.Zm=i,this.cr.Vu().i(this.Lg.bind(this)),this.cr.Lu().i(this.Ag.bind(this)),this.Zm.Tm().i(this.Ig.bind(this)),this.__=s}m(){this.cr.Vu().u(this),this.cr.Lu().u(this),this.Zm.Tm().u(this),this.Vg.m(),this.B_.m(),this.Mm.m()}scrollPosition(){return this.cr.Mu()}scrollToPosition(t,i){i?this.cr.Du(t,1e3):this.ss.pn(t)}scrollToRealTime(){this.cr.ku()}getVisibleRange(){const t=this.cr.eu();return null===t?null:{from:t.from.originalTime,to:t.to.originalTime}}setVisibleRange(t){const i={from:this.__.convertHorzItemToInternal(t.from),to:this.__.convertHorzItemToInternal(t.to)},s=this.cr.au(i);this.ss.zc(s)}getVisibleLogicalRange(){const t=this.cr.nu();return null===t?null:{from:t.Ur(),to:t.yi()}}setVisibleLogicalRange(t){h(t.from<=t.to,"The from index cannot be after the to index."),this.ss.zc(t)}resetTimeScale(){this.ss.dn()}fitContent(){this.ss.Fu()}logicalToCoordinate(t){const i=this.ss.It();return i.Ki()?null:i.jt(t)}coordinateToLogical(t){return this.cr.Ki()?null:this.cr.du(t)}timeToIndex(t,i){const s=this.__.convertHorzItemToInternal(t);return this.cr.tu(s,i)}timeToCoordinate(t){const i=this.timeToIndex(t,!1);return null===i?null:this.cr.jt(i)}coordinateToTime(t){const i=this.ss.It(),s=i.du(t),n=i.ns(s);return null===n?null:n.originalTime}width(){return this.Zm.Jf().width}height(){return this.Zm.Jf().height}subscribeVisibleTimeRangeChange(t){this.Vg.i(t)}unsubscribeVisibleTimeRangeChange(t){this.Vg._(t)}subscribeVisibleLogicalRangeChange(t){this.B_.i(t)}unsubscribeVisibleLogicalRangeChange(t){this.B_._(t)}subscribeSizeChange(t){this.Mm.i(t)}unsubscribeSizeChange(t){this.Mm._(t)}applyOptions(t){this.cr.ah(t)}options(){return{...p(this.cr.W()),barSpacing:this.cr.wu()}}Lg(){this.Vg.v()&&this.Vg.p(this.getVisibleRange())}Ag(){this.B_.v()&&this.B_.p(this.getVisibleLogicalRange())}Ig(t){this.Mm.p(t.width,t.height)}}function Hn(t){return function(t){if(f(t.handleScale)){const i=t.handleScale;t.handleScale={axisDoubleClickReset:{time:i,price:i},axisPressedMouseMove:{time:i,price:i},mouseWheel:i,pinch:i}}else if(void 0!==t.handleScale){const{axisPressedMouseMove:i,axisDoubleClickReset:s}=t.handleScale;f(i)&&(t.handleScale.axisPressedMouseMove={time:i,price:i}),f(s)&&(t.handleScale.axisDoubleClickReset={time:s,price:s})}const i=t.handleScroll;f(i)&&(t.handleScroll={horzTouchDrag:i,vertTouchDrag:i,mouseWheel:i,pressedMouseMove:i})}(t),t}class Nn{constructor(t,i,s){this.Fg=new Map,this.Bg=new Map,this.zg=new o,this.Og=new o,this.Wg=new o,this.ju=new WeakMap,this.$g=new _n(i);const n=void 0===s?p(In()):_(p(In()),Hn(s));this.Hg=i,this.Nf=new js(t,n,i),this.Nf.Xv().i(t=>{this.zg.v()&&this.zg.p(this.Ng(t()))},this),this.Nf.Zv().i(t=>{this.Og.v()&&this.Og.p(this.Ng(t()))},this),this.Nf.dc().i(t=>{this.Wg.v()&&this.Wg.p(this.Ng(t()))},this);const e=this.Nf.ti();this.Ug=new $n(e,this.Nf.sw(),this.Hg)}remove(){this.Nf.Xv().u(this),this.Nf.Zv().u(this),this.Nf.dc().u(this),this.Ug.m(),this.Nf.m(),this.Fg.clear(),this.Bg.clear(),this.zg.m(),this.Og.m(),this.Wg.m(),this.$g.m()}resize(t,i,s){this.autoSizeActive()||this.Nf.Qm(t,i,s)}addCustomSeries(t,i={},s=0){const n=(t=>({type:"Custom",isBuiltIn:!1,defaultOptions:{...gn,...t.defaultOptions()},qg:Mn,jg:t}))(a(t));return this.Yg(n,i,s)}addSeries(t,i={},s=0){return this.Yg(t,i,s)}removeSeries(t){const i=r(this.Fg.get(t)),s=this.$g.Fc(i);this.Nf.ti().Fc(i),this.Gg(s),this.Fg.delete(t),this.Bg.delete(i)}kg(t,i){this.Gg(this.$g.Hw(t,i))}Rg(t,i,s){this.Gg(this.$g.Gw(t,i,s))}Eg(t,i){const[s,n]=this.$g.Zw(t,i);return 0!==s.length&&this.Gg(n),s}subscribeClick(t){this.zg.i(t)}unsubscribeClick(t){this.zg._(t)}subscribeCrosshairMove(t){this.Wg.i(t)}unsubscribeCrosshairMove(t){this.Wg._(t)}subscribeDblClick(t){this.Og.i(t)}unsubscribeDblClick(t){this.Og._(t)}priceScale(t,i=0){return new Fn(this.Nf,t,i)}timeScale(){return this.Ug}applyOptions(t){this.Nf.ah(Hn(t))}options(){return this.Nf.W()}takeScreenshot(t=!1,i=!1){let s,n;try{i||(s=this.Nf.ti().W().crosshair.mode,this.Nf.ah({crosshair:{mode:2}})),n=this.Nf.aw(t)}finally{i||void 0===s||this.Nf.ti().ah({crosshair:{mode:s}})}return n}addPane(t=!1){const i=this.Nf.ti().qc();return i.Bo(t),this.Kg(i)}removePane(t){this.Nf.ti().vc(t)}swapPanes(t,i){this.Nf.ti().wc(t,i)}autoSizeActive(){return this.Nf.dw()}chartElement(){return this.Nf.sp()}panes(){return this.Nf.ti().qs().map(t=>this.Kg(t))}paneSize(t=0){const i=this.Nf.mw(t);return{height:i.height,width:i.width}}setCrosshairPosition(t,i,s){const n=this.Fg.get(s);if(void 0===n)return;const e=this.Nf.ti().Nn(n);null!==e&&this.Nf.ti().Rc(t,i,e)}clearCrosshairPosition(){this.Nf.ti().Ec(!0)}horzBehaviour(){return this.Hg}Yg(i,s={},n=0){h(void 0!==i.qg),function(t){if(void 0===t||"custom"===t.type)return;const i=t;void 0!==i.minMove&&void 0===i.precision&&(i.precision=Bi(i.minMove))}(s.priceFormat),"Candlestick"===i.type&&function(t){void 0!==t.borderColor&&(t.borderUpColor=t.borderColor,t.borderDownColor=t.borderColor),void 0!==t.wickColor&&(t.wickUpColor=t.wickColor,t.wickDownColor=t.wickColor)}(s);const e=_(p(t),p(i.defaultOptions),s),r=i.qg,l=new Ut(this.Nf.ti(),i.type,e,r,i.jg);this.Nf.ti().Ac(l,n);const a=new Wn(l,this,this,this,this.Hg,t=>this.Kg(t));return this.Fg.set(a,l),this.Bg.set(l,a),a}Gg(t){const i=this.Nf.ti();i.Vc(t.It.uu,t.It.ig,t.It.sg),t.Oo.forEach((t,i)=>i.lt(t.ne,t.tg)),i.It().K_(),i.mu()}Xg(t){return r(this.Bg.get(t))}Ng(t){const i=new Map;t.Ew.forEach((t,s)=>{const n=s.Rh(),e=kn(n)(t);if("Custom"!==n)h(Ks(e));else{const t=s.pl();h(!t||!1===t(e))}i.set(this.Xg(s),e)});const s=void 0!==t.Rw&&this.Bg.has(t.Rw)?this.Xg(t.Rw):void 0;return{time:t.Tw,logical:t.Re,point:t.kw,paneIndex:t.Dw,hoveredSeries:s,hoveredObjectId:t.Vw,seriesData:i,sourceEvent:t.Lw}}Kg(t){let i=this.ju.get(t);return i||(i=new Bn(this.Nf,t=>this.Xg(t),t,this),this.ju.set(t,i)),i}}function Un(t){if(d(t)){const i=document.getElementById(t);return h(null!==i,`Cannot find element in DOM with id=${t}`),i}return t}function qn(t,i,s){const n=Un(t),e=new Nn(n,i,s);return i.setOptions(e.options()),e}function jn(t,i){return qn(t,new ss,ss.od(i))}function Yn(){return ss}function Gn(t,i){const s=t.timeScale(),n=i.dataByIndex(Number.MAX_SAFE_INTEGER,-1);if(!n||"number"!=typeof n.time)return null;const e=s.timeToCoordinate(n.time);if(null===e)return null;const h=s.coordinateToLogical(e);if(null===h)return null;const r=i.dataByIndex(h-1,-1);return!r||"number"!=typeof r.time||r.time>=n.time?null:{gt:n.time,Kl:h,Zg:n.time-r.time}}function Kn(t,i,s){const n=t.timeScale(),e=n.coordinateToTime(s);if(null!==e)return e;const h=n.coordinateToLogical(s);if(null===h)return null;const r=Gn(t,i);if(null===r)return null;const l=h-r.Kl;return Math.round(r.gt+l*r.Zg)}function Xn(t,i,s){if(null==s)return null;const n=t.timeScale(),e=n.timeToCoordinate(s);if(null!==e)return e;if("number"!=typeof s)return null;const h=Gn(t,i);if(null===h)return null;const r=h.Kl+(s-h.gt)/h.Zg,l=n.logicalToCoordinate(r);return null===l?null:l}class Zn extends pn{constructor(t,i){super(t,i,!0)}pg(t,i,s){i.cu(this.rg,m(this.lg)),t.Ua(this.rg,s,m(this.lg))}Jg(t,i){return{gt:t,Mt:i,ut:NaN,ct:NaN}}dg(){const t=this.Qn.Rr();this.rg=this.Qn.Xs().Nh().map(i=>{const s=i.Ht[3];return this.Qg(i.Re,s,t)})}}function Jn(t,i,s,n,e,h,r){if(0===i.length||n.from>=i.length||n.to<=0)return;const{context:l,horizontalPixelRatio:a,verticalPixelRatio:o}=t,_=i[n.from];let u=h(t,_),c=_;if(n.to-n.from<2){const i=e/2;l.beginPath();const s={ut:_.ut-i,ct:_.ct},n={ut:_.ut+i,ct:_.ct};l.moveTo(s.ut*a,s.ct*o),l.lineTo(n.ut*a,n.ct*o),r(t,u,s,n)}else{const e=(i,s)=>{r(t,u,c,s),l.beginPath(),u=i,c=s};let d=c;l.beginPath(),l.moveTo(_.ut*a,_.ct*o);for(let r=n.from+1;r<n.to;++r){d=i[r];const n=h(t,d);switch(s){case 0:l.lineTo(d.ut*a,d.ct*o);break;case 1:l.lineTo(d.ut*a,i[r-1].ct*o),n!==u&&(e(n,d),l.lineTo(d.ut*a,i[r-1].ct*o)),l.lineTo(d.ut*a,d.ct*o);break;case 2:{const[t,s]=se(i,r-1,r);l.bezierCurveTo(t.ut*a,t.ct*o,s.ut*a,s.ct*o,d.ut*a,d.ct*o);break}}1!==s&&n!==u&&(e(n,d),l.moveTo(d.ut*a,d.ct*o))}(c!==d||c===d&&1===s)&&r(t,u,c,d)}}const Qn=6;function te(t,i){return{ut:t.ut-i.ut,ct:t.ct-i.ct}}function ie(t,i){return{ut:t.ut/i,ct:t.ct/i}}function se(t,i,s){const n=Math.max(0,i-1),e=Math.min(t.length-1,s+1);var h,r;return[(h=t[i],r=ie(te(t[s],t[n]),Qn),{ut:h.ut+r.ut,ct:h.ct+r.ct}),te(t[s],ie(te(t[e],t[i]),Qn))]}function ne(t,i){const s=t.context;s.strokeStyle=i,s.stroke()}class ee extends P{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht(t){if(null===this.rt)return;const{_t:i,ot:s,tM:e,iM:h,dt:r,Xt:l,sM:a}=this.rt;if(null===s)return;const o=t.context;o.lineCap="butt",o.lineWidth=r*t.verticalPixelRatio,n(o,l),o.lineJoin="round";const _=this.nM.bind(this);void 0!==h&&Jn(t,i,h,s,e,_,ne),a&&function(t,i,s,n,e){if(n.to-n.from<=0)return;const{horizontalPixelRatio:h,verticalPixelRatio:r,context:l}=t;let a=null;const o=Math.max(1,Math.floor(h))%2/2,_=s*r+o;for(let s=n.to-1;s>=n.from;--s){const n=i[s];if(n){const i=e(t,n);i!==a&&(l.beginPath(),null!==a&&l.fill(),l.fillStyle=i,a=i);const s=Math.round(n.ut*h)+o,u=n.ct*r;l.moveTo(s,u),l.arc(s,u,_,0,2*Math.PI)}}l.fill()}(t,i,a,s,_)}}class he extends ee{nM(t,i){return i.wt}}class re extends Zn{constructor(){super(...arguments),this._g=new he}Qg(t,i,s){return{...this.Jg(t,i),...s.Eh(t)}}vg(){const t=this.Qn.W(),i={_t:this.rg,Xt:t.lineStyle,iM:t.lineVisible?t.lineType:void 0,dt:t.lineWidth,sM:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0,ot:this.lg,tM:this.te.It().wu()};this._g.lt(i)}}const le={type:"Line",isBuiltIn:!0,defaultOptions:{color:"#2196f3",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qg:(t,i)=>new re(t,i)};function ae(t,i){return t.weight>i.weight?t:i}function oe(t){return t}class _e{constructor(){this.eM=new o,this.hM=function(t){let i=!1;return function(...s){i||(i=!0,queueMicrotask(()=>{t(...s),i=!1}))}}(()=>this.eM.p(this.rM)),this.rM=0}lM(){return this.eM}m(){this.eM.m()}options(){return this.Cs}setOptions(t){this.Cs=t}preprocessData(t){}updateFormatter(t){this.Cs&&(this.Cs.localization=t)}createConverterToInternalObj(t){return this.hM(),t=>(t>this.rM&&(this.rM=t),t)}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return this.aM(t)}formatTickmark(t){return this.aM(t.time)}maxTickMarkWeight(t){return t.reduce(ae,t[0]).weight}fillWeightsForPoints(t,i){const s=t=>t%120==0?10:t%60==0?9:t%36==0?8:t%12==0?7:t%6==0?6:t%3==0?5:t%1==0?4:0;for(let n=i;n<t.length;++n)t[n].timeWeight=s(oe(t[n].time));this.rM=t[t.length-1].time,this.hM()}aM(t){if(this.Cs.localization?.timeFormatter)return this.Cs.localization.timeFormatter(t);if(t<12)return`${t}M`;const i=Math.floor(t/12),s=t%12;return 0===s?`${i}Y`:`${i}Y${s}M`}}const ue={yieldCurve:{baseResolution:1,minimumTimeRange:120,startTimeRange:0},timeScale:{ignoreWhitespaceIndices:!0},leftPriceScale:{visible:!0},rightPriceScale:{visible:!1},localization:{priceFormatter:t=>t.toFixed(3)+"%"}},ce={lastValueVisible:!1,priceLineVisible:!1};class de extends Nn{constructor(t,i){const s=_(ue,i||{}),n=new _e;super(t,n,s),n.setOptions(this.options()),this._initWhitespaceSeries()}addSeries(t,i={},s=0){if(t.isBuiltIn&&!1===["Area","Line"].includes(t.type))throw new Error("Yield curve only support Area and Line series");const n={...ce,...i};return super.addSeries(t,n,s)}_initWhitespaceSeries(){const t=this.horzBehaviour(),i=this.addSeries(le);let s;function n(n){const e=function(t,i){return{oe:Math.max(0,t.startTimeRange),_e:Math.max(0,t.minimumTimeRange,i||0),oM:Math.max(1,t.baseResolution)}}(t.options().yieldCurve,n),h=(({oe:t,_e:i,oM:s})=>`${t}~${i}~${s}`)(e);h!==s&&(s=h,i.setData(function({oe:t,_e:i,oM:s}){return Array.from({length:Math.floor((i-t)/s)+1},(i,n)=>({time:t+n*s}))}(e)))}n(0),t.lM().i(n)}}function fe(t,i){const s=Un(t);return new de(s,i)}function pe(t,i){return t.weight>i.weight?t:i}class ve{options(){return this.Cs}setOptions(t){this.Cs=t}preprocessData(t){}updateFormatter(t){this.Cs&&(this.Cs.localization=t)}createConverterToInternalObj(t){return t=>t}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return t.toFixed(this.Pn())}formatTickmark(t,i){return t.time.toFixed(this.Pn())}maxTickMarkWeight(t){return t.reduce(pe,t[0]).weight}fillWeightsForPoints(t,i){const s=t=>t===100*Math.ceil(t/100)?8:t===50*Math.ceil(t/50)?7:t===25*Math.ceil(t/25)?6:t===10*Math.ceil(t/10)?5:t===5*Math.ceil(t/5)?4:t===Math.ceil(t)?3:2*t===Math.ceil(2*t)?1:0;for(let n=i;n<t.length;++n)t[n].timeWeight=s(t[n].time)}Pn(){return this.Cs.localization.precision}}function me(t,i){return qn(t,new ve,i)}function we(t,i,s,n,e){const{context:h,horizontalPixelRatio:r,verticalPixelRatio:l}=i;h.lineTo(e.ut*r,t*l),h.lineTo(n.ut*r,t*l),h.closePath(),h.fillStyle=s,h.fill()}class ge extends P{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht(t){if(null===this.rt)return;const{_t:i,ot:s,tM:e,dt:h,Xt:r,iM:l}=this.rt,a=this.rt._M??(this.rt.uM?0:t.mediaSize.height);if(null===s)return;const o=t.context;o.lineCap="butt",o.lineJoin="round",o.lineWidth=h,n(o,r),o.lineWidth=1,Jn(t,i,l,s,e,this.cM.bind(this),we.bind(null,a))}}class Me{dM(t,i){const s=this.fM,{pM:n,vM:e,mM:h,wM:r,_M:l,gM:a,MM:o}=i;if(void 0===this.bM||void 0===s||s.pM!==n||s.vM!==e||s.mM!==h||s.wM!==r||s._M!==l||s.gM!==a||s.MM!==o){const{verticalPixelRatio:s}=t,_=l||a>0?s:1,u=a*_,c=o===t.bitmapSize.height?o:o*_,d=(l??0)*_,f=t.context.createLinearGradient(0,u,0,c);if(f.addColorStop(0,n),null!=l){const t=Gt((d-u)/(c-u),0,1);f.addColorStop(t,e),f.addColorStop(t,h)}f.addColorStop(1,r),this.bM=f,this.fM=i}return this.bM}}class be extends ge{constructor(){super(...arguments),this.yM=new Me}cM(t,i){const s=this.rt;return this.yM.dM(t,{pM:i.Sh,vM:i.xh,mM:i.Ph,wM:i.Ch,_M:s._M,gM:s.gM??0,MM:s.MM??t.bitmapSize.height})}}class ye extends ee{constructor(){super(...arguments),this.SM=new Me}nM(t,i){const s=this.rt;return this.SM.dM(t,{pM:i.bh,vM:i.bh,mM:i.yh,wM:i.yh,_M:s._M,gM:s.gM??0,MM:s.MM??t.bitmapSize.height})}}class Se extends Zn{constructor(t,i){super(t,i),this._g=new x,this.xM=new be,this.PM=new ye,this._g.nt([this.xM,this.PM])}Qg(t,i,s){return{...this.Jg(t,i),...s.Eh(t)}}vg(){const t=this.Qn.Bt();if(null===t)return;const i=this.Qn.W(),s=this.Qn.$t().Wt(i.baseValue.price,t.Ht),n=this.te.It().wu();if(null===this.lg||0===this.rg.length)return;let e,h;if(i.relativeGradient){e=this.rg[this.lg.from].ct,h=this.rg[this.lg.from].ct;for(let t=this.lg.from;t<this.lg.to;t++){const i=this.rg[t];i.ct<e&&(e=i.ct),i.ct>h&&(h=i.ct)}}this.xM.lt({_t:this.rg,dt:i.lineWidth,Xt:i.lineStyle,iM:i.lineType,_M:s,gM:e,MM:h,uM:!1,ot:this.lg,tM:n}),this.PM.lt({_t:this.rg,dt:i.lineWidth,Xt:i.lineStyle,iM:i.lineVisible?i.lineType:void 0,sM:i.pointMarkersVisible?i.pointMarkersRadius||i.lineWidth/2+2:void 0,_M:s,gM:e,MM:h,ot:this.lg,tM:n})}}const xe={type:"Baseline",isBuiltIn:!0,defaultOptions:{baseValue:{type:"price",price:0},relativeGradient:!1,topFillColor1:"rgba(38, 166, 154, 0.28)",topFillColor2:"rgba(38, 166, 154, 0.05)",topLineColor:"rgba(38, 166, 154, 1)",bottomFillColor1:"rgba(239, 83, 80, 0.05)",bottomFillColor2:"rgba(239, 83, 80, 0.28)",bottomLineColor:"rgba(239, 83, 80, 1)",lineWidth:3,lineStyle:0,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qg:(t,i)=>new Se(t,i)};class Pe extends ge{constructor(){super(...arguments),this.yM=new Me}cM(t,i){return this.yM.dM(t,{pM:i.gh,vM:"",mM:"",wM:i.Mh,gM:this.rt?.gM??0,MM:t.bitmapSize.height})}}class Ce extends Zn{constructor(t,i){super(t,i),this._g=new x,this.CM=new Pe,this.TM=new he,this._g.nt([this.CM,this.TM])}Qg(t,i,s){return{...this.Jg(t,i),...s.Eh(t)}}vg(){const t=this.Qn.W();if(null===this.lg||0===this.rg.length)return;let i;if(t.relativeGradient){i=this.rg[this.lg.from].ct;for(let t=this.lg.from;t<this.lg.to;t++){const s=this.rg[t];s.ct<i&&(i=s.ct)}}this.CM.lt({iM:t.lineType,_t:this.rg,Xt:t.lineStyle,dt:t.lineWidth,_M:null,gM:i,uM:t.invertFilledArea,ot:this.lg,tM:this.te.It().wu()}),this.TM.lt({iM:t.lineVisible?t.lineType:void 0,_t:this.rg,Xt:t.lineStyle,dt:t.lineWidth,ot:this.lg,tM:this.te.It().wu(),sM:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0})}}const Te={type:"Area",isBuiltIn:!0,defaultOptions:{topColor:"rgba( 46, 220, 135, 0.4)",bottomColor:"rgba( 40, 221, 100, 0)",invertFilledArea:!1,relativeGradient:!1,lineColor:"#33D778",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qg:(t,i)=>new Ce(t,i)};class ke extends P{constructor(){super(...arguments),this.Yt=null,this.kM=0,this.DM=0}lt(t){this.Yt=t}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.Yt||0===this.Yt.Xs.length||null===this.Yt.ot)return;if(this.kM=this.RM(i),this.kM>=2){Math.max(1,Math.floor(i))%2!=this.kM%2&&this.kM--}this.DM=this.Yt.EM?Math.min(this.kM,Math.floor(i)):this.kM;let n=null;const e=this.DM<=this.kM&&this.Yt.wu>=Math.floor(1.5*i);for(let h=this.Yt.ot.from;h<this.Yt.ot.to;++h){const r=this.Yt.Xs[h];n!==r.fh&&(t.fillStyle=r.fh,n=r.fh);const l=Math.floor(.5*this.DM),a=Math.round(r.ut*i),o=a-l,_=this.DM,u=o+_-1,c=Math.min(r.Ga,r.Ka),d=Math.max(r.Ga,r.Ka),f=Math.round(c*s)-l,p=Math.round(d*s)+l,v=Math.max(p-f,this.DM);t.fillRect(o,f,_,v);const m=Math.ceil(1.5*this.kM);if(e){if(this.Yt.VM){const i=a-m;let n=Math.max(f,Math.round(r.Ya*s)-l),e=n+_-1;e>f+v-1&&(e=f+v-1,n=e-_+1),t.fillRect(i,n,o-i,e-n+1)}const i=a+m;let n=Math.max(f,Math.round(r.Xa*s)-l),e=n+_-1;e>f+v-1&&(e=f+v-1,n=e-_+1),t.fillRect(u+1,n,i-u,e-n+1)}}}RM(t){const i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(l(this.Yt).wu,t)))}}class De extends pn{constructor(t,i){super(t,i,!1)}pg(t,i,s){i.cu(this.rg,m(this.lg)),t.ja(this.rg,s,m(this.lg))}LM(t,i,s){return{gt:t,jr:i.Ht[0],Yr:i.Ht[1],Gr:i.Ht[2],Kr:i.Ht[3],ut:NaN,Ya:NaN,Ga:NaN,Ka:NaN,Xa:NaN}}dg(){const t=this.Qn.Rr();this.rg=this.Qn.Xs().Nh().map(i=>this.Qg(i.Re,i,t))}}class Re extends De{constructor(){super(...arguments),this._g=new ke}Qg(t,i,s){return{...this.LM(t,i,s),...s.Eh(t)}}vg(){const t=this.Qn.W();this._g.lt({Xs:this.rg,wu:this.te.It().wu(),VM:t.openVisible,EM:t.thinBars,ot:this.lg})}}const Ee={type:"Bar",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},qg:(t,i)=>new Re(t,i)};class Ve extends P{constructor(){super(...arguments),this.Yt=null,this.kM=0}lt(t){this.Yt=t}ht(t){if(null===this.Yt||0===this.Yt.Xs.length||null===this.Yt.ot)return;const{horizontalPixelRatio:i}=t;if(this.kM=function(t,i){if(t>=2.5&&t<=4)return Math.floor(3*i);const s=1-.2*Math.atan(Math.max(4,t)-4)/(.5*Math.PI),n=Math.floor(t*s*i),e=Math.floor(t*i),h=Math.min(n,e);return Math.max(Math.floor(i),h)}(this.Yt.wu,i),this.kM>=2){Math.floor(i)%2!=this.kM%2&&this.kM--}const s=this.Yt.Xs;this.Yt.AM&&this.IM(t,s,this.Yt.ot),this.Yt.bi&&this.cv(t,s,this.Yt.ot);const n=this.FM(i);(!this.Yt.bi||this.kM>2*n)&&this.BM(t,s,this.Yt.ot)}IM(t,i,s){if(null===this.Yt)return;const{context:n,horizontalPixelRatio:e,verticalPixelRatio:h}=t;let r="",l=Math.min(Math.floor(e),Math.floor(this.Yt.wu*e));l=Math.max(Math.floor(e),Math.min(l,this.kM));const a=Math.floor(.5*l);let o=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.mh!==r&&(n.fillStyle=s.mh,r=s.mh);const _=Math.round(Math.min(s.Ya,s.Xa)*h),u=Math.round(Math.max(s.Ya,s.Xa)*h),c=Math.round(s.Ga*h),d=Math.round(s.Ka*h);let f=Math.round(e*s.ut)-a;const p=f+l-1;null!==o&&(f=Math.max(o+1,f),f=Math.min(f,p));const v=p-f+1;n.fillRect(f,c,v,_-c),n.fillRect(f,u+1,v,d-u),o=p}}FM(t){let i=Math.floor(1*t);this.kM<=2*i&&(i=Math.floor(.5*(this.kM-1)));const s=Math.max(Math.floor(t),i);return this.kM<=2*s?Math.max(Math.floor(t),Math.floor(1*t)):s}cv(t,i,s){if(null===this.Yt)return;const{context:n,horizontalPixelRatio:e,verticalPixelRatio:h}=t;let r="";const l=this.FM(e);let a=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.ph!==r&&(n.fillStyle=s.ph,r=s.ph);let o=Math.round(s.ut*e)-Math.floor(.5*this.kM);const _=o+this.kM-1,u=Math.round(Math.min(s.Ya,s.Xa)*h),c=Math.round(Math.max(s.Ya,s.Xa)*h);if(null!==a&&(o=Math.max(a+1,o),o=Math.min(o,_)),this.Yt.wu*e>2*l)V(n,o,u,_-o+1,c-u+1,l);else{const t=_-o+1;n.fillRect(o,u,t,c-u+1)}a=_}}BM(t,i,s){if(null===this.Yt)return;const{context:n,horizontalPixelRatio:e,verticalPixelRatio:h}=t;let r="";const l=this.FM(e);for(let t=s.from;t<s.to;t++){const s=i[t];let a=Math.round(Math.min(s.Ya,s.Xa)*h),o=Math.round(Math.max(s.Ya,s.Xa)*h),_=Math.round(s.ut*e)-Math.floor(.5*this.kM),u=_+this.kM-1;if(s.fh!==r){const t=s.fh;n.fillStyle=t,r=t}this.Yt.bi&&(_+=l,a+=l,u-=l,o-=l),a>o||n.fillRect(_,a,u-_+1,o-a+1)}}}class Le extends De{constructor(){super(...arguments),this._g=new Ve}Qg(t,i,s){return{...this.LM(t,i,s),...s.Eh(t)}}vg(){const t=this.Qn.W();this._g.lt({Xs:this.rg,wu:this.te.It().wu(),AM:t.wickVisible,bi:t.borderVisible,ot:this.lg})}}const Ae={type:"Candlestick",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",wickVisible:!0,borderVisible:!0,borderColor:"#378658",borderUpColor:"#26a69a",borderDownColor:"#ef5350",wickColor:"#737375",wickUpColor:"#26a69a",wickDownColor:"#ef5350"},qg:(t,i)=>new Le(t,i)};class Ie extends P{constructor(){super(...arguments),this.Yt=null,this.zM=[]}lt(t){this.Yt=t,this.zM=[]}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.Yt||0===this.Yt._t.length||null===this.Yt.ot)return;this.zM.length||this.OM(i);const n=Math.max(1,Math.floor(s)),e=Math.round(this.Yt.WM*s)-Math.floor(n/2),h=e+n;for(let i=this.Yt.ot.from;i<this.Yt.ot.to;i++){const r=this.Yt._t[i],l=this.zM[i-this.Yt.ot.from],a=Math.round(r.ct*s);let o,_;t.fillStyle=r.fh,a<=e?(o=a,_=h):(o=e,_=a-Math.floor(n/2)+n),t.fillRect(l.Ur,o,l.yi-l.Ur+1,_-o)}}OM(t){if(null===this.Yt||0===this.Yt._t.length||null===this.Yt.ot)return void(this.zM=[]);const i=Math.ceil(this.Yt.wu*t)<=1?0:Math.max(1,Math.floor(t)),s=Math.round(this.Yt.wu*t)-i;this.zM=new Array(this.Yt.ot.to-this.Yt.ot.from);for(let i=this.Yt.ot.from;i<this.Yt.ot.to;i++){const n=this.Yt._t[i],e=Math.round(n.ut*t);let h,r;if(s%2){const t=(s-1)/2;h=e-t,r=e+t}else{const t=s/2;h=e-t,r=e+t-1}this.zM[i-this.Yt.ot.from]={Ur:h,yi:r,$M:e,ee:n.ut*t,gt:n.gt}}for(let t=this.Yt.ot.from+1;t<this.Yt.ot.to;t++){const s=this.zM[t-this.Yt.ot.from],n=this.zM[t-this.Yt.ot.from-1];s.gt===n.gt+1&&(s.Ur-n.yi!==i+1&&(n.$M>n.ee?n.yi=s.Ur-i-1:s.Ur=n.yi+i+1))}let n=Math.ceil(this.Yt.wu*t);for(let t=this.Yt.ot.from;t<this.Yt.ot.to;t++){const i=this.zM[t-this.Yt.ot.from];i.yi<i.Ur&&(i.yi=i.Ur);const s=i.yi-i.Ur+1;n=Math.min(s,n)}if(i>0&&n<4)for(let t=this.Yt.ot.from;t<this.Yt.ot.to;t++){const i=this.zM[t-this.Yt.ot.from];i.yi-i.Ur+1>n&&(i.$M>i.ee?i.yi-=1:i.Ur+=1)}}}class Fe extends Zn{constructor(){super(...arguments),this._g=new Ie}Qg(t,i,s){return{...this.Jg(t,i),...s.Eh(t)}}vg(){const t={_t:this.rg,wu:this.te.It().wu(),ot:this.lg,WM:this.Qn.$t().Wt(this.Qn.W().base,l(this.Qn.Bt()).Ht)};this._g.lt(t)}}const Be={type:"Histogram",isBuiltIn:!0,defaultOptions:{color:"#26a69a",base:0},qg:(t,i)=>new Fe(t,i)};class ze{constructor(t,i){this.Ct=t,this.HM=i,this.NM()}detach(){this.Ct.detachPrimitive(this.HM)}getPane(){return this.Ct}applyOptions(t){this.HM.ah?.(t)}NM(){this.Ct.attachPrimitive(this.HM)}}const Oe={visible:!0,horzAlign:"center",vertAlign:"center",lines:[]},We={color:"rgba(0, 0, 0, 0.5)",fontSize:48,fontFamily:w,fontStyle:"",text:""};class $e{constructor(t){this.UM=new Map,this.Yt=t}draw(t){t.useMediaCoordinateSpace(t=>{if(!this.Yt.visible)return;const{context:i,mediaSize:s}=t;let n=0;for(const t of this.Yt.lines){if(0===t.text.length)continue;i.font=t.T;const e=this.qM(i,t.text);e>s.width?t.Pu=s.width/e:t.Pu=1,n+=t.lineHeight*t.Pu}let e=0;switch(this.Yt.vertAlign){case"top":e=0;break;case"center":e=Math.max((s.height-n)/2,0);break;case"bottom":e=Math.max(s.height-n,0)}for(const t of this.Yt.lines){i.save(),i.fillStyle=t.color;let n=0;switch(this.Yt.horzAlign){case"left":i.textAlign="left",n=t.lineHeight/2;break;case"center":i.textAlign="center",n=s.width/2;break;case"right":i.textAlign="right",n=s.width-1-t.lineHeight/2}i.translate(n,e),i.textBaseline="top",i.font=t.T,i.scale(t.Pu,t.Pu),i.fillText(t.text,0,t.jM),i.restore(),e+=t.lineHeight*t.Pu}})}qM(t,i){const s=this.YM(t.font);let n=s.get(i);return void 0===n&&(n=t.measureText(i).width,s.set(i,n)),n}YM(t){let i=this.UM.get(t);return void 0===i&&(i=new Map,this.UM.set(t,i)),i}}class He{constructor(t){this.Cs=Ue(t)}Tt(t){this.Cs=Ue(t)}renderer(){return new $e(this.Cs)}}function Ne(t){return{...t,T:g(t.fontSize,t.fontFamily,t.fontStyle),lineHeight:t.lineHeight||1.2*t.fontSize,jM:0,Pu:0}}function Ue(t){return{...t,lines:t.lines.map(Ne)}}function qe(t){return{...We,...t}}function je(t){return{...Oe,...t,lines:t.lines?.map(qe)??[]}}class Ye{constructor(t){this.Cs=je(t),this.GM=[new He(this.Cs)]}updateAllViews(){this.GM.forEach(t=>t.Tt(this.Cs))}paneViews(){return this.GM}attached({requestUpdate:t}){this.KM=t}detached(){this.KM=void 0}ah(t){this.Cs=je({...this.Cs,...t}),this.KM&&this.KM()}}function Ge(t,i){return new ze(t,new Ye(i))}const Ke={alpha:1,padding:0};class Xe{constructor(t){this.Yt=t}draw(t){t.useMediaCoordinateSpace(t=>{const i=t.context,s=this.XM(this.Yt,t.mediaSize);s&&this.Yt.ZM&&(i.globalAlpha=this.Yt.alpha??1,i.drawImage(this.Yt.ZM,s.ut,s.ct,s.ts,s.qt))})}XM(t,i){const{maxHeight:s,maxWidth:n,JM:e,QM:h,padding:r}=t,l=Math.round(i.width/2),a=Math.round(i.height/2),o=r??0;let _=i.width-2*o,u=i.height-2*o;s&&(u=Math.min(u,s)),n&&(_=Math.min(_,n));const c=_/h,d=u/e,f=Math.min(c,d),p=h*f,v=e*f;return{ut:l-.5*p,ct:a-.5*v,qt:v,ts:p}}}class Ze{constructor(t){this.tb=null,this.ib=0,this.sb=0,this.Cs=t,this.M=Je(this.Cs,this.tb,this.ib,this.sb)}nb(t){void 0!==t.eb&&(this.ib=t.eb),void 0!==t.hb&&(this.sb=t.hb),void 0!==t.rb&&(this.tb=t.rb),this.Tt()}lb(t){this.Cs=t,this.Tt()}zOrder(){return"bottom"}Tt(){this.M=Je(this.Cs,this.tb,this.ib,this.sb)}renderer(){return new Xe(this.M)}}function Je(t,i,s,n){return{...t,ZM:i,QM:s,JM:n}}function Qe(t){return{...Ke,...t}}class th{constructor(t,i){this.ab=null,this.ob=t,this.Cs=Qe(i),this.GM=[new Ze(this.Cs)]}updateAllViews(){this.GM.forEach(t=>t.Tt())}paneViews(){return this.GM}attached(t){const{requestUpdate:i}=t;this._b=i,this.ab=new Image,this.ab.onload=()=>{const t=this.ab?.naturalHeight??1,i=this.ab?.naturalWidth??1;this.GM.forEach(s=>s.nb({hb:t,eb:i,rb:this.ab})),this._b&&this._b()},this.ab.src=this.ob}detached(){this._b=void 0,this.ab=null}ah(t){this.Cs=Qe({...this.Cs,...t}),this.ub(),this.KM&&this.KM()}KM(){this._b&&this._b()}ub(){this.GM.forEach(t=>t.lb(this.Cs))}}function ih(t,i,s){return new ze(t,new th(i,s))}class sh{constructor(t,i){this.Qn=t,this.ar=i,this.NM()}detach(){this.Qn.detachPrimitive(this.ar)}getSeries(){return this.Qn}applyOptions(t){this.ar&&this.ar.ah&&this.ar.ah(t)}NM(){this.Qn.attachPrimitive(this.ar)}}const nh={autoScale:!0,zOrder:"normal"};function eh(t,i){return Xt(Math.min(Math.max(t,12),30)*i)}function hh(t,i){switch(t){case"arrowDown":case"arrowUp":return eh(i,1);case"circle":return eh(i,.8);case"square":return eh(i,.7)}}function rh(t){return function(t){const i=Math.ceil(t);return i%2!=0?i-1:i}(eh(t,1))}function lh(t){return Math.max(eh(t,.1),3)}function ah(t,i,s){return i?t:s?Math.ceil(t/2):0}function oh(t,i,s,n){const e=(hh("arrowUp",n)-1)/2*s.cb,h=(Xt(n/2)-1)/2*s.cb;i.beginPath(),t?(i.moveTo(s.ut-e,s.ct),i.lineTo(s.ut,s.ct-e),i.lineTo(s.ut+e,s.ct),i.lineTo(s.ut+h,s.ct),i.lineTo(s.ut+h,s.ct+e),i.lineTo(s.ut-h,s.ct+e),i.lineTo(s.ut-h,s.ct)):(i.moveTo(s.ut-e,s.ct),i.lineTo(s.ut,s.ct+e),i.lineTo(s.ut+e,s.ct),i.lineTo(s.ut+h,s.ct),i.lineTo(s.ut+h,s.ct-e),i.lineTo(s.ut-h,s.ct-e),i.lineTo(s.ut-h,s.ct)),i.fill()}function _h(t,i,s,n,e,h){const r=(hh("arrowUp",n)-1)/2,l=(Xt(n/2)-1)/2;if(e>=i-l-2&&e<=i+l+2&&h>=(t?s:s-r)-2&&h<=(t?s+r:s)+2)return!0;return(()=>{if(e<i-r-3||e>i+r+3||h<(t?s-r-3:s)||h>(t?s:s+r+3))return!1;const n=Math.abs(e-i);return Math.abs(h-s)+3>=n/2})()}class uh{constructor(){this.Yt=null,this.On=new it,this.$=-1,this.H="",this.Hp="",this.fb="normal"}lt(t){this.Yt=t}Wn(t,i,s){this.$===t&&this.H===i||(this.$=t,this.H=i,this.Hp=g(t,i),this.On.Ln()),this.fb=s}Gn(t,i){if(null===this.Yt||null===this.Yt.ot)return null;for(let s=this.Yt.ot.from;s<this.Yt.ot.to;s++){const n=this.Yt._t[s];if(n&&dh(n,t,i))return{zOrder:"normal",externalId:n.Kn??""}}return null}draw(t){"aboveSeries"!==this.fb&&t.useBitmapCoordinateSpace(t=>{this.ht(t)})}drawBackground(t){"aboveSeries"===this.fb&&t.useBitmapCoordinateSpace(t=>{this.ht(t)})}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null!==this.Yt&&null!==this.Yt.ot){t.textBaseline="middle",t.font=this.Hp;for(let n=this.Yt.ot.from;n<this.Yt.ot.to;n++){const e=this.Yt._t[n];void 0!==e.ri&&(e.ri.ts=this.On.Vi(t,e.ri.pb),e.ri.qt=this.$,e.ri.ut=e.ut-e.ri.ts/2),ch(e,t,i,s)}}}}function ch(t,i,s,n){i.fillStyle=t.R,void 0!==t.ri&&function(t,i,s,n,e,h){t.save(),t.scale(e,h),t.fillText(i,s,n),t.restore()}(i,t.ri.pb,t.ri.ut,t.ri.ct,s,n),function(t,i,s){if(0===t.Bh)return;switch(t.mb){case"arrowDown":return void oh(!1,i,s,t.Bh);case"arrowUp":return void oh(!0,i,s,t.Bh);case"circle":return void function(t,i,s){const n=(hh("circle",s)-1)/2;t.beginPath(),t.arc(i.ut,i.ct,n*i.cb,0,2*Math.PI,!1),t.fill()}(i,s,t.Bh);case"square":return void function(t,i,s){const n=hh("square",s),e=(n-1)*i.cb/2,h=i.ut-e,r=i.ct-e;t.fillRect(h,r,n*i.cb,n*i.cb)}(i,s,t.Bh)}t.mb}(t,i,function(t,i,s){const n=Math.max(1,Math.floor(i))%2/2;return{ut:Math.round(t.ut*i)+n,ct:t.ct*s,cb:i}}(t,s,n))}function dh(t,i,s){return!(void 0===t.ri||!function(t,i,s,n,e,h){const r=n/2;return e>=t&&e<=t+s&&h>=i-r&&h<=i+r}(t.ri.ut,t.ri.ct,t.ri.ts,t.ri.qt,i,s))||function(t,i,s){if(0===t.Bh)return!1;switch(t.mb){case"arrowDown":return _h(!0,t.ut,t.ct,t.Bh,i,s);case"arrowUp":return _h(!1,t.ut,t.ct,t.Bh,i,s);case"circle":return function(t,i,s,n,e){const h=2+hh("circle",s)/2,r=t-n,l=i-e;return Math.sqrt(r*r+l*l)<=h}(t.ut,t.ct,t.Bh,i,s);case"square":return function(t,i,s,n,e){const h=hh("square",s),r=(h-1)/2,l=t-r,a=i-r;return n>=l&&n<=l+h&&e>=a&&e<=a+h}(t.ut,t.ct,t.Bh,i,s)}}(t,i,s)}function fh(t){return"atPriceTop"===t||"atPriceBottom"===t||"atPriceMiddle"===t}function ph(t,i,s,n,e,h,r,a){const o=function(t,i,s){if(fh(i.position)&&void 0!==i.price)return i.price;if("value"in(n=t)&&"number"==typeof n.value)return t.value;var n;if(function(t){return"open"in t&&"high"in t&&"low"in t&&"close"in t}(t)){if("inBar"===i.position)return t.close;if("aboveBar"===i.position)return s?t.low:t.high;if("belowBar"===i.position)return s?t.high:t.low}}(s,i,r.priceScale().options().invertScale);if(void 0===o)return;const _=fh(i.position),c=a.timeScale(),d=u(i.size)?Math.max(i.size,0):1,f=rh(c.options().barSpacing)*d,p=f/2;t.Bh=f;switch(i.position){case"inBar":case"atPriceMiddle":return t.ct=l(r.priceToCoordinate(o)),void(void 0!==t.ri&&(t.ri.ct=t.ct+p+h+.6*e));case"aboveBar":case"atPriceTop":{const i=_?0:n.wb;return t.ct=l(r.priceToCoordinate(o))-p-i,void 0!==t.ri&&(t.ri.ct=t.ct-p-.6*e,n.wb+=1.2*e),void(_||(n.wb+=f+h))}case"belowBar":case"atPriceBottom":{const i=_?0:n.gb;return t.ct=l(r.priceToCoordinate(o))+p+i,void 0!==t.ri&&(t.ri.ct=t.ct+p+h+.6*e,n.gb+=1.2*e),void(_||(n.gb+=f+h))}}}class vh{constructor(t,i,s){this.Mb=[],this.xt=!0,this.bb=!0,this.Jt=new uh,this.Me=t,this.Vp=i,this.Yt={_t:[],ot:null},this.Cs=s}renderer(){if(!this.Me.options().visible)return null;this.xt&&this.yb();const t=this.Vp.options().layout;return this.Jt.Wn(t.fontSize,t.fontFamily,this.Cs.zOrder),this.Jt.lt(this.Yt),this.Jt}Sb(t){this.Mb=t,this.Tt("data")}Tt(t){this.xt=!0,"data"===t&&(this.bb=!0)}xb(t){this.xt=!0,this.Cs=t}zOrder(){return"aboveSeries"===this.Cs.zOrder?"top":this.Cs.zOrder}yb(){const t=this.Vp.timeScale(),i=this.Mb;this.bb&&(this.Yt._t=i.map(t=>({gt:t.time,ut:0,ct:0,Bh:0,mb:t.shape,R:t.color,Kn:t.id,Pb:t.Pb,ri:void 0})),this.bb=!1);const s=this.Vp.options().layout;this.Yt.ot=null;const n=t.getVisibleLogicalRange();if(null===n)return;const e=new Pi(Math.floor(n.from),Math.ceil(n.to));if(null===this.Me.data()[0])return;if(0===this.Yt._t.length)return;let h=NaN;const r=lh(t.options().barSpacing),a={wb:r,gb:r};this.Yt.ot=fn(this.Yt._t,e,!0);for(let n=this.Yt.ot.from;n<this.Yt.ot.to;n++){const e=i[n];e.time!==h&&(a.wb=r,a.gb=r,h=e.time);const o=this.Yt._t[n];o.ut=l(t.logicalToCoordinate(e.time)),void 0!==e.text&&e.text.length>0&&(o.ri={pb:e.text,ut:0,ct:0,ts:0,qt:0});const _=this.Me.dataByIndex(e.time,0);null!==_&&ph(o,e,_,a,s.fontSize,r,this.Me,this.Vp)}this.xt=!1}}function mh(t){return{...nh,...t}}class wh{constructor(t){this.nr=null,this.Mb=[],this.Cb=[],this.Tb=null,this.Me=null,this.Vp=null,this.kb=!0,this.Db=null,this.Rb=null,this.Eb=null,this.Vb=!0,this.Cs=mh(t)}attached(t){this.Lb(),this.Vp=t.chart,this.Me=t.series,this.nr=new vh(this.Me,l(this.Vp),this.Cs),this._b=t.requestUpdate,this.Me.subscribeDataChanged(t=>this.Dg(t)),this.Vb=!0,this.KM()}KM(){this._b&&this._b()}detached(){this.Me&&this.Tb&&this.Me.unsubscribeDataChanged(this.Tb),this.Vp=null,this.Me=null,this.nr=null,this.Tb=null}Sb(t){this.Vb=!0,this.Mb=t,this.Lb(),this.kb=!0,this.Rb=null,this.KM()}Ab(){return this.Mb}paneViews(){return this.nr?[this.nr]:[]}updateAllViews(){this.Ib()}hitTest(t,i){return this.nr?this.nr.renderer()?.Gn(t,i)??null:null}autoscaleInfo(t,i){if(this.Cs.autoScale&&this.nr){const t=this.Fb();if(t)return{priceRange:null,margins:t}}return null}ah(t){this.Cs=mh({...this.Cs,...t}),this.KM&&this.KM()}Fb(){const t=l(this.Vp).timeScale().options().barSpacing;if(this.kb||t!==this.Eb){if(this.Eb=t,this.Mb.length>0){const i=lh(t),s=1.5*rh(t)+2*i,n=this.Bb();this.Db={above:ah(s,n.aboveBar,n.inBar),below:ah(s,n.belowBar,n.inBar)}}else this.Db=null;this.kb=!1}return this.Db}Bb(){return null===this.Rb&&(this.Rb=this.Mb.reduce((t,i)=>(t[i.position]||(t[i.position]=!0),t),{inBar:!1,aboveBar:!1,belowBar:!1,atPriceTop:!1,atPriceBottom:!1,atPriceMiddle:!1})),this.Rb}Lb(){if(!this.Vb||!this.Vp||!this.Me)return;const t=this.Vp.timeScale(),i=this.Me?.data();if(null==t.getVisibleLogicalRange()||!this.Me||0===i.length)return void(this.Cb=[]);const s=t.timeToIndex(l(i[0].time),!0);this.Cb=this.Mb.map((i,n)=>{const e=t.timeToIndex(i.time,!0),h=e<s?1:-1,r=l(this.Me).dataByIndex(e,h),a={time:t.timeToIndex(l(r).time,!1),position:i.position,shape:i.shape,color:i.color,id:i.id,Pb:n,text:i.text,size:i.size,price:i.price,Tw:i.time};if("atPriceTop"===i.position||"atPriceBottom"===i.position||"atPriceMiddle"===i.position){if(void 0===i.price)throw new Error(`Price is required for position ${i.position}`);return{...a,position:i.position,price:i.price}}return{...a,position:i.position,price:i.price}}),this.Vb=!1}Ib(t){this.nr&&(this.Lb(),this.nr.Sb(this.Cb),this.nr.xb(this.Cs),this.nr.Tt(t))}Dg(t){this.Vb=!0,this.KM()}}class gh extends sh{constructor(t,i,s){super(t,i),s&&this.setMarkers(s)}setMarkers(t){this.ar.Sb(t)}markers(){return this.ar.Ab()}}function Mh(t,i,s){const n=new gh(t,new wh(s??{}));return i&&n.setMarkers(i),n}class bh{constructor(t){this.Mb=new Map,this.zb=t}Ob(t,i,s){if(this.Wb(i),void 0!==s){const n=window.setTimeout(()=>{this.Mb.delete(i),this.$b()},s),e={...t,Hb:n,Nb:Date.now()+s};this.Mb.set(i,e)}else this.Mb.set(i,{...t,Hb:void 0,Nb:void 0});this.$b()}Wb(t){const i=this.Mb.get(t);i&&void 0!==i.Hb&&window.clearTimeout(i.Hb),this.Mb.delete(t),this.$b()}Ub(){for(const[t]of this.Mb)this.Wb(t)}qb(){const t=Date.now(),i=[];for(const[s,n]of this.Mb)!n.Nb||n.Nb>t?i.push({time:n.time,sign:n.sign,value:n.value}):this.Wb(s);return i}jb(t){this.zb=t}$b(){this.zb&&this.zb()}}const yh={positiveColor:"#22AB94",negativeColor:"#F7525F",updateVisibilityDuration:5e3};class Sh{constructor(t,i,s,n){this.Yt=t,this.Yb=i,this.Gb=s,this.Kb=n}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=Math.max(1,Math.floor(t.horizontalPixelRatio))%2/2,n=4*t.verticalPixelRatio+s;this.Yt.forEach(e=>{const h=Math.round(e.ut*t.horizontalPixelRatio)+s;i.beginPath();const r=this.Xb(e.Zb);i.fillStyle=r,i.arc(h,e.ct*t.verticalPixelRatio,n,0,2*Math.PI,!1),i.fill(),e.Zb&&(i.strokeStyle=r,i.lineWidth=Math.floor(2*t.horizontalPixelRatio),i.beginPath(),i.moveTo((e.ut-4.7)*t.horizontalPixelRatio+s,(e.ct-7*e.Zb)*t.verticalPixelRatio),i.lineTo(e.ut*t.horizontalPixelRatio+s,(e.ct-7*e.Zb-7*e.Zb*.5)*t.verticalPixelRatio),i.lineTo((e.ut+4.7)*t.horizontalPixelRatio+s,(e.ct-7*e.Zb)*t.verticalPixelRatio),i.stroke())})})}Xb(t){return 0===t?this.Yb:t>0?this.Kb:this.Gb}}class xh{constructor(t,i,s){this.Yt=[],this.Me=t,this.cr=i,this.Cs=s}Tt(t){this.Yt=t.map(t=>{const i=this.Me.priceToCoordinate(t.value);if(null===i)return null;return{ut:l(this.cr.timeToCoordinate(t.time)),ct:i,Zb:t.sign}}).filter(v)}renderer(){const t=function(t,i){return function(t,i){return"Area"===i}(0,i)?t.lineColor:t.color}(this.Me.options(),this.Me.seriesType());return new Sh(this.Yt,t,this.Cs.negativeColor,this.Cs.positiveColor)}}function Ph(t,i){return"Line"===i||"Area"===i}class Ch{constructor(t){this.Vp=void 0,this.Me=void 0,this.GM=[],this.__=null,this.Jb=new Map,this.Qb=new bh(()=>this.KM()),this.Cs={...yh,...t}}ah(t){this.Cs={...this.Cs,...t},this.KM()}Sb(t){this.Qb.Ub();const i=this.__;i&&t.forEach(t=>{this.Qb.Ob(t,i.key(t.time))})}Ab(){return this.Qb.qb()}KM(){this._b?.()}attached(t){const{chart:i,series:s,requestUpdate:n,horzScaleBehavior:e}=t;this.Vp=i,this.Me=s,this.__=e;const h=this.Me.seriesType();if("Area"!==h&&"Line"!==h)throw new Error("UpDownMarkersPrimitive is only supported for Area and Line series types");this.GM=[new xh(this.Me,this.Vp.timeScale(),this.Cs)],this._b=n,this.KM()}detached(){this.Vp=void 0,this.Me=void 0,this._b=void 0}jp(){return r(this.Vp)}Oo(){return r(this.Me)}updateAllViews(){this.GM.forEach(t=>t.Tt(this.Ab()))}paneViews(){return this.GM}lt(t){if(!this.Me)throw new Error("Primitive not attached to series");const i=this.Me.seriesType();this.Jb.clear();const s=this.__;s&&t.forEach(t=>{Ks(t)&&Ph(0,i)&&this.Jb.set(s.key(t.time),t.value)}),r(this.Me).setData(t)}Tt(t,i){if(!this.Me||!this.__)throw new Error("Primitive not attached to series");const s=this.Me.seriesType(),n=this.__.key(t.time);if(Gs(t)&&this.Jb.delete(n),Ks(t)&&Ph(0,s)){const i=this.Jb.get(n);i&&this.Qb.Ob({time:t.time,value:t.value,sign:Th(t.value,i)},n,this.Cs.updateVisibilityDuration)}r(this.Me).update(t,i)}ty(){this.Qb.Ub()}}function Th(t,i){return t===i?0:t-i>0?1:-1}class kh extends sh{setData(t){return this.ar.lt(t)}update(t,i){return this.ar.Tt(t,i)}markers(){return this.ar.Ab()}setMarkers(t){return this.ar.Sb(t)}clearMarkers(){return this.ar.ty()}}function Dh(t,i={}){return new kh(t,new Ch(i))}class Rh{constructor(t,i){this.iy=null,this.sy=[],this.Cs={longColors:{entry:i?.longColors?.entry??"#26a69a",exit:i?.longColors?.exit??"#ef5350"},shortColors:{entry:i?.shortColors?.entry??"#ef5350",exit:i?.shortColors?.exit??"#26a69a"},defaultSize:i?.defaultSize??1,entryOffset:i?.entryOffset??0,exitOffset:i?.exitOffset??0},this.iy=Mh(t)}addPosition(t){this.sy.push(t),this.ny()}addPositions(t){this.sy.push(...t),this.ny()}setPositions(t){this.sy=[...t],this.ny()}closePosition(t,i,s){const n=this.sy.find(i=>i.id===t);n&&(n.exit=i,s&&n.text?n.text.exit=s:s&&(n.text={exit:s}),this.ny())}removePosition(t){this.sy=this.sy.filter(i=>i.id!==t),this.ny()}clearPositions(){this.sy=[],this.ny()}getPositions(){return this.sy}applyOptions(t){t.longColors&&(this.Cs.longColors={...this.Cs.longColors,...t.longColors}),t.shortColors&&(this.Cs.shortColors={...this.Cs.shortColors,...t.shortColors}),void 0!==t.defaultSize&&(this.Cs.defaultSize=t.defaultSize),void 0!==t.entryOffset&&(this.Cs.entryOffset=t.entryOffset),void 0!==t.exitOffset&&(this.Cs.exitOffset=t.exitOffset),this.ny()}ey(){const t=[];for(const i of this.sy){const s="long"===i.type,n=i.size??this.Cs.defaultSize,e=i.color?.entry??(s?this.Cs.longColors.entry:this.Cs.shortColors.entry),h=i.color?.exit??(s?this.Cs.longColors.exit:this.Cs.shortColors.exit),r={time:i.entry.time,position:"atPriceMiddle",price:i.entry.price+this.Cs.entryOffset,shape:s?"arrowUp":"arrowDown",color:e,size:n};if(i.text?.entry&&(r.text=i.text.entry),i.id&&(r.id=`${i.id}-entry`),t.push(r),i.exit){const e={time:i.exit.time,position:"atPriceMiddle",price:i.exit.price+this.Cs.exitOffset,shape:s?"arrowDown":"arrowUp",color:h,size:n};i.text?.exit&&(e.text=i.text.exit),i.id&&(e.id=`${i.id}-exit`),t.push(e)}}return t}ny(){if(this.iy){const t=this.ey();this.iy.setMarkers(t)}}detach(){this.iy&&(this.iy.detach(),this.iy=null),this.sy=[]}}function Eh(t,i,s){const n=new Rh(t,s);return i&&i.length>0&&n.setPositions(i),n}function Vh(t,i){return()=>{const s={};s.minValue=t,s.maxValue=i;const n={};return n.priceRange=s,n}}function Lh(t){return null==t?void 0:t.time}function Ah(t){const{e_:i,jp:s,hy:n,ly:e,Zl:h}=t;let r=[],l=new Map,a=!1;const o=(t,i)=>{if(0===i.length)return;const s=l.get(t),n=i[i.length-1];if(void 0!==s&&s.length>0){const e=i.length===s.length+1,h=i.length===s.length,r=Lh(s[s.length-1])===Lh(n);if(e||h&&r)return t.update(n),void l.set(t,i)}t.setData(i),l.set(t,i)},_=t=>{if(!a)try{if("full"===t||0===r.length)r=i.data();else{const t=function(t){return t.dataByIndex(Number.MAX_SAFE_INTEGER,-1)}(i);if(null===t)return;r.length>0&&Lh(r[r.length-1])===Lh(t)?r[r.length-1]=t:r.push(t)}if(0===r.length)return;const s=e(r);for(const[t,i]of s)o(t,i);s.every(([,t])=>0===t.length)&&r.length}catch(t){console.error(`Error calculating ${h}:`,t)}},u=t=>_(t);return i.subscribeDataChanged(u),_("full"),{oy(){if(!a){a=!0,i.unsubscribeDataChanged(u);for(const t of n)try{s.removeSeries(t)}catch(t){}l=new Map,r=[]}},Qo(){_("full")}}}function Ih(t,i,s={}){const n=s.period??20,e=s.paneIndex??0,h=s.color??"#2196F3",r=i.addSeries(le,{color:h,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},e),l=t=>{if(!t||t.length<n)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[];for(let e=n-1;e<i.length;e++){let h=0;for(let t=0;t<n;t++)h+=i[e-t];const r=h/n;t[e]&&t[e].time&&s.push({time:t[e].time,value:r})}return s},a=Ah({e_:t,jp:i,hy:[r],Zl:"SMA",ly:t=>[[r,l(t)]]});return{series:r,remove:a.oy}}function Fh(t,i,s={}){const n=s.period??12,e=s.paneIndex??0,h=s.color??"#FF9800",r=i.addSeries(le,{color:h,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},e),l=t=>{if(!t||t.length<n)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],e=2/(n+1);let h=0;for(let t=0;t<n;t++)h+=i[t];h/=n,t[n-1]&&t[n-1].time&&s.push({time:t[n-1].time,value:h});for(let r=n;r<i.length;r++)h=(i[r]-h)*e+h,t[r]&&t[r].time&&s.push({time:t[r].time,value:h});return s},a=Ah({e_:t,jp:i,hy:[r],Zl:"EMA",ly:t=>[[r,l(t)]]});return{series:r,remove:a.oy}}function Bh(t,i,s={}){const n=s.period??20,e=s.paneIndex??0,h=s.color??"#4CAF50",r=i.addSeries(le,{color:h,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},e),l=t=>{if(!t||t.length<n)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],e=n*(n+1)/2;for(let h=n-1;h<i.length;h++){let r=0;for(let t=0;t<n;t++){const s=t+1;r+=i[h-n+1+t]*s}const l=r/e;t[h]&&t[h].time&&s.push({time:t[h].time,value:l})}return s},a=Ah({e_:t,jp:i,hy:[r],Zl:"WMA",ly:t=>[[r,l(t)]]});return{series:r,remove:a.oy}}function zh(t,i,s={}){const n=s.period??20,e=s.paneIndex??0,h=s.stdDev??2,r=i.addSeries(le,{color:s.colorUpper??"#3F51B5",lineWidth:1},e),l=i.addSeries(le,{color:s.colorMiddle??"#2196F3",lineWidth:2},e),a=i.addSeries(le,{color:s.colorLower??"#3F51B5",lineWidth:1},e),o=Ah({e_:t,jp:i,hy:[r,l,a],Zl:"Bollinger Bands",ly:t=>{const i=(t=>{if(!t||t.length<n)return{_y:[],uy:[],py:[]};const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],e=[],r=[];for(let l=n-1;l<i.length;l++){let a=0;for(let t=0;t<n;t++)a+=i[l-t];const o=a/n;let _=0;for(let t=0;t<n;t++)_+=Math.pow(i[l-t]-o,2);const u=Math.sqrt(_/n),c=o+u*h,d=o-u*h;if(t[l]&&t[l].time){const i=t[l].time;s.push({time:i,value:c}),e.push({time:i,value:o}),r.push({time:i,value:d})}}return{_y:s,uy:e,py:r}})(t);return[[r,i._y],[l,i.uy],[a,i.py]]}});return{upper:r,middle:l,lower:a,remove:o.oy}}function Oh(t,i,s={}){const n=s.period??14,e=s.paneIndex??1,h=s.color??"#9C27B0",r=i.addSeries(le,{color:h,priceFormat:{type:"price",precision:2,minMove:.01},autoscaleInfoProvider:Vh(0,100)},e);i.priceScale(r.options().priceScaleId??"right",e).applyOptions({scaleMargins:{top:.1,bottom:.1},borderVisible:!1});const l=t=>{if(!t||t.length<n+1)return[];const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=[],e=[];for(let t=1;t<i.length;t++)e.push(i[t]-i[t-1]);let h=0,r=0;for(let t=0;t<n;t++)e[t]>0?h+=e[t]:r+=Math.abs(e[t]);h/=n,r/=n;let l=0===r?100:h/r,a=100-100/(1+l);t[n]&&t[n].time&&s.push({time:t[n].time,value:a});for(let i=n;i<e.length;i++){const o=e[i],_=o>0?o:0,u=o<0?Math.abs(o):0;h=(h*(n-1)+_)/n,r=(r*(n-1)+u)/n,l=0===r?100:h/r,a=100-100/(1+l),t[i+1]&&t[i+1].time&&s.push({time:t[i+1].time,value:a})}return s},a=Ah({e_:t,jp:i,hy:[r],Zl:"RSI",ly:t=>[[r,l(t)]]});return{series:r,remove:a.oy}}function Wh(t,i,s={}){const n=s.fastPeriod??12,e=s.paneIndex??2,h=s.slowPeriod??26,r=s.signalPeriod??9,l=i.addSeries(le,{color:s.colorMACD??"#2196F3",lineWidth:2},e),a=i.addSeries(le,{color:s.colorSignal??"#FF6D00",lineWidth:2},e),o=i.addSeries(Be,{color:s.colorHistogram??"#26a69a"},e),_=(t,i)=>{const s=[],n=2/(i+1);let e=0;for(let s=0;s<i;s++)e+=t[s];s.push(e/i);for(let e=i;e<t.length;e++)s.push((t[e]-s[s.length-1])*n+s[s.length-1]);return s},u=Ah({e_:t,jp:i,hy:[l,a,o],Zl:"MACD",ly:t=>{const i=(t=>{if(!t||t.length<h+r)return{vy:[],my:[],wy:[]};const i=[];for(const s of t)"close"in s?i.push(s.close):"value"in s?i.push(s.value):i.push(0);const s=_(i,n),e=_(i,h),l=[],a=h-n;for(let t=0;t<e.length;t++)l.push(s[t+a]-e[t]);const o=_(l,r),u=[],c=[],d=[],f=h-1;for(let i=r-1;i<o.length;i++){const s=f+i;if(t[s]&&t[s].time){const n=t[s].time,e=l[i],h=o[i],r=e-h;u.push({time:n,value:e}),c.push({time:n,value:h}),d.push({time:n,value:r,color:r>=0?"#26a69a":"#ef5350"})}}return{vy:u,my:c,wy:d}})(t);return[[l,i.vy],[a,i.my],[o,i.wy]]}});return{macd:l,signal:a,histogram:o,remove:u.oy}}function $h(t,i,s={}){const n=s.kPeriod??14,e=s.paneIndex??4,h=s.dPeriod??3,r=Vh(0,100),l=i.addSeries(le,{color:s.colorK??"#2196F3",lineWidth:2,autoscaleInfoProvider:r},e),a=i.addSeries(le,{color:s.colorD??"#FF6D00",lineWidth:2,autoscaleInfoProvider:r},e);i.priceScale(l.options().priceScaleId??"right",e).applyOptions({scaleMargins:{top:.1,bottom:.1}});const o=Ah({e_:t,jp:i,hy:[l,a],Zl:"Stochastic",ly:t=>{const i=(t=>{if(!t||t.length<n)return{gy:[],My:[]};const i=[];for(let s=n-1;s<t.length;s++){let e=-1/0,h=1/0;for(let i=0;i<n;i++){const n=t[s-i];"high"in n&&"low"in n&&(e=Math.max(e,n.high),h=Math.min(h,n.low))}const r=t[s];if("close"in r){const t=(r.close-h)/(e-h)*100;i.push(t)}}const s=[];for(let e=0;e<i.length;e++){const h=n-1+e;t[h]&&t[h].time&&s.push({time:t[h].time,value:i[e]})}const e=[];if(i.length>=h)for(let s=h-1;s<i.length;s++){let r=0;for(let t=0;t<h;t++)r+=i[s-t];const l=r/h,a=n-1+s;t[a]&&t[a].time&&e.push({time:t[a].time,value:l})}return{gy:s,My:e}})(t);return[[l,i.gy],[a,i.My]]}});return{k:l,d:a,remove:o.oy}}function Hh(t,i,s={}){const n=s.period??14,e=s.paneIndex??6,h=s.color??"#FF9800",r=i.addSeries(le,{color:h,lineWidth:2},e),l=t=>{if(!t||t.length<n+1)return[];const i=[];for(let s=1;s<t.length;s++){const n=t[s],e=t[s-1];if("high"in n&&"low"in n&&"close"in e){const t=n.high-n.low,s=Math.abs(n.high-e.close),h=Math.abs(n.low-e.close),r=Math.max(t,s,h);i.push(r)}}if(i.length<n)return[];const s=[];let e=0;for(let t=0;t<n;t++)e+=i[t];e/=n,t[n]&&t[n].time&&s.push({time:t[n].time,value:e});for(let h=n;h<i.length;h++)e=(e*(n-1)+i[h])/n,t[h+1]&&t[h+1].time&&s.push({time:t[h+1].time,value:e});return s},a=Ah({e_:t,jp:i,hy:[r],Zl:"ATR",ly:t=>[[r,l(t)]]});return{series:r,remove:a.oy}}const Nh=new Map;function Uh(t,i,s={}){const n=s.colorUp??"#26a69a",e=s.paneIndex??3,h=s.colorDown??"#ef5350";Nh.has(t)||Nh.set(t,new Map);const r=i.addSeries(Be,{color:n,priceFormat:{type:"volume"},priceScaleId:""},e);i.priceScale(r.options().priceScaleId??"right",e).applyOptions({scaleMargins:{top:.8,bottom:0}});const l=()=>{const i=t.data(),s=Nh.get(t);if(!i||0===i.length)return[];if(!s||0===s.size)return[];const e=[];for(const t of i){const i="string"==typeof t.time?t.time:String(t.time),r=s.get(i);r&&"close"in t&&"open"in t&&e.push({time:t.time,value:r,color:t.close>=t.open?n:h})}return e},a=Ah({e_:t,jp:i,hy:[r],Zl:"Volume",ly:t=>[[r,l()]]});return{series:r,remove:a.oy}}function qh(t,i){Nh.has(t)||Nh.set(t,new Map);const s=Nh.get(t);s.clear();for(const t of i)if("time"in t&&"volume"in t){const i="string"==typeof t.time?t.time:String(t.time);s.set(i,t.volume)}}const jh=new Map;function Yh(t,i,s={}){const n=s.color??"#2196F3",e=s.paneIndex??5;jh.has(t)||jh.set(t,new Map);const h=i.addSeries(le,{color:n,lineWidth:2},e),r=()=>{const i=t.data(),s=jh.get(t);if(!i||i.length<2)return[];if(!s||0===s.size)return[];const n=[];let e=0;n.push({time:i[0].time,value:e});for(let t=1;t<i.length;t++){const h=i[t],r=i[t-1],l="string"==typeof h.time?h.time:String(h.time),a=s.get(l);a&&"close"in h&&"close"in r&&(h.close>r.close?e+=a:h.close<r.close&&(e-=a),n.push({time:h.time,value:e}))}return n},l=Ah({e_:t,jp:i,hy:[h],Zl:"OBV",ly:t=>[[h,r()]]});return{series:h,remove:l.oy}}function Gh(t,i){jh.has(t)||jh.set(t,new Map);const s=jh.get(t);s.clear();for(const t of i)if("time"in t&&"volume"in t){const i="string"==typeof t.time?t.time:String(t.time);s.set(i,t.volume)}}class Kh{constructor(t){this.by=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.by.getSessionBoxes();if(s&&0!==s.length)for(const n of s)this.yy(i,n,t.horizontalPixelRatio,t.verticalPixelRatio)})}yy(t,i,s,n){const e=i.Sy||i.startTime,h=i.xy||i.endTime,r=i.R||i.color,l=i.Py||i.opacity;if(!i||!e||!h)return;const a=this.by.getChart().timeScale(),o=a.timeToCoordinate(e),_=a.timeToCoordinate(h);if(null===o||null===_)return;const u=o*s,c=_*s,d=0*n,f=t.canvas.height/n*n;t.fillStyle=this.Cy(r,l),t.fillRect(u,d,c-u,f-d)}Cy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class Xh{constructor(t){this.Jt=new Kh(t)}renderer(){return this.Jt}zOrder(){return"bottom"}}const Zh=[{name:"Tokyo",startHour:0,endHour:9,color:"#FF6B00",opacity:.1},{name:"London",startHour:8,endHour:17,color:"#2962FF",opacity:.1},{name:"New York",startHour:13,endHour:22,color:"#089981",opacity:.1}];class Jh{constructor(t,i,s={}){this.Ty=[],this.HM=null,this.nr=null,this.Vp=t,this.Me=i,this.Cs={sessions:s.sessions||Zh,showOverlaps:s.showOverlaps??!0,overlapColor:s.overlapColor||"#9C27B0",overlapOpacity:s.overlapOpacity||.15,enabled:s.enabled??!0},this.ky(),this.Cs.enabled&&this.Dy()}ky(){this.nr=new Xh(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.nr?[this.nr]:[],updateAllViews:()=>{this.nr}};this.HM=t,this.Me.attachPrimitive(t)}Dy(){this.Vp.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.Ry()}),this.Ry()}Ry(){this.Ey();const t=this.Vp.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.Me.data();if(!i||0===i.length)return;const s=i.filter((i,s)=>s>=t.from&&s<=t.to);this.Vy(s),this._b()}Vy(t){if(0!==t.length){for(const i of this.Cs.sessions)this.Ly(i,t);this.Cs.showOverlaps&&this.Ay(t)}}Ly(t,i){let s=null,n=[];for(const e of i){const i=e.time,h=this.Iy(i);this.Fy(h,t.startHour,t.endHour)?(s||(s=i),n.push(e)):s&&n.length>0&&(this.By(s,n[n.length-1].time,t),s=null,n=[])}s&&n.length>0&&this.By(s,n[n.length-1].time,t)}Ay(t){const i=this.Cs.sessions;for(let s=0;s<i.length;s++)for(let n=s+1;n<i.length;n++){const e=i[s],h=i[n],r=this.zy(e,h);r&&this.Oy(r,t)}}zy(t,i){const s=Math.max(t.startHour,i.startHour),n=Math.min(t.endHour,i.endHour);return s<n?{oe:s,_e:n}:null}Oy(t,i){let s=null,n=[];for(const e of i){const i=e.time,h=this.Iy(i);h>=t.oe&&h<t._e?(s||(s=i),n.push(e)):s&&n.length>0&&(this.Wy(s,n[n.length-1].time),s=null,n=[])}s&&n.length>0&&this.Wy(s,n[n.length-1].time)}By(t,i,s){if(!t||!i)return void console.warn("Invalid session box times:",{startTime:t,endTime:i,session:s.name});const n={an:"session",Sy:t,xy:i,R:s.color,Py:s.opacity,$y:s.name};this.Ty.push(n)}Wy(t,i){const s={an:"overlap",Sy:t,xy:i,R:this.Cs.overlapColor,Py:this.Cs.overlapOpacity,$y:"Overlap"};this.Ty.push(s)}Fy(t,i,s){return i<s?t>=i&&t<s:t>=i||t<s}Iy(t){if("number"==typeof t){return new Date(1e3*t).getUTCHours()}if("string"==typeof t){return new Date(t).getUTCHours()}return 0}Ey(){this.Ty=[]}updateOptions(t){this.Cs={...this.Cs,...t},this.Cs.enabled?this.Ry():this.Ey()}enable(){this.Cs.enabled=!0,this.Ry()}disable(){this.Cs.enabled=!1,this.Ey()}remove(){this.HM&&this.Me&&this.Me.detachPrimitive(this.HM),this.Ey()}getSessionBoxes(){return this.Ty}getChart(){return this.Vp}getSeries(){return this.Me}_b(){this.HM&&this.HM.updateAllViews?.(),this.Vp.timeScale().applyOptions({})}}function Qh(t,i,s){return new Jh(t,i,s)}class tr{constructor(t){this.by=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.by.getProfileData();if(!s||0===s.bins.length)return;const n=this.by.getOptions(),e=this.by.getSeries(),h=i.canvas.width/t.horizontalPixelRatio,r=Math.min(n.width||100,.2*h),l="right"===n.position?h-r:0;let a=0;for(const t of s.bins)t.volume>a&&(a=t.volume);if(0!==a){for(const h of s.bins)this.Hy(i,h,l,r,a,s,n,e,t.horizontalPixelRatio,t.verticalPixelRatio);n.showPOC&&this.Ny(i,s.poc,n.pocColor||"#FF6B00",e,h,t.horizontalPixelRatio,t.verticalPixelRatio),n.showValueArea&&this.Uy(i,s.valueAreaHigh,s.valueAreaLow,n.valueAreaColor||"#089981",e,h,t.horizontalPixelRatio,t.verticalPixelRatio)}})}Hy(t,i,s,n,e,h,r,l,a,o){const _=i.volume/e*n,u=l.priceToCoordinate(i.priceLevel);if(null===u)return;const c=s*a,d=(u-1.5)*o,f=_*a,p=3*o,v=i.priceLevel>=h.valueAreaLow&&i.priceLevel<=h.valueAreaHigh,m=Math.abs(i.priceLevel-h.poc)<1e-5;let w=r.profileColor||"#2962FF",g=r.opacity||.3;m?(w=r.pocColor||"#FF6B00",g=.6):v&&r.showValueArea&&(w=r.valueAreaColor||"#089981",g=.4),t.fillStyle=this.Cy(w,g),t.fillRect(c,d,f,p)}Ny(t,i,s,n,e,h,r){const l=n.priceToCoordinate(i);if(null===l)return;const a=l*r;t.strokeStyle=s,t.lineWidth=2*Math.min(h,r),t.setLineDash([5*h,3*h]),t.beginPath(),t.moveTo(0,a),t.lineTo(e*h,a),t.stroke(),t.setLineDash([])}Uy(t,i,s,n,e,h,r,l){const a=e.priceToCoordinate(i);if(null!==a){const i=a*l;t.strokeStyle=this.Cy(n,.5),t.lineWidth=1*Math.min(r,l),t.setLineDash([3*r,2*r]),t.beginPath(),t.moveTo(0,i),t.lineTo(h*r,i),t.stroke()}const o=e.priceToCoordinate(s);if(null!==o){const i=o*l;t.strokeStyle=this.Cy(n,.5),t.lineWidth=1*Math.min(r,l),t.setLineDash([3*r,2*r]),t.beginPath(),t.moveTo(0,i),t.lineTo(h*r,i),t.stroke()}t.setLineDash([])}Cy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class ir{constructor(t){this.Jt=new tr(t)}renderer(){return this.Jt}zOrder(){return"normal"}}class sr{constructor(t,i,s={}){this.qy=null,this.jy=new Map,this.HM=null,this.nr=null,this.Vp=t,this.Me=i,this.Cs={numberOfBins:s.numberOfBins||24,valueAreaPercentage:s.valueAreaPercentage||.7,showPOC:s.showPOC??!0,showValueArea:s.showValueArea??!0,profileColor:s.profileColor||"#2962FF",pocColor:s.pocColor||"#FF6B00",valueAreaColor:s.valueAreaColor||"#089981",opacity:s.opacity||.3,width:s.width||100,position:s.position||"right"},this.ky(),this.Dy()}ky(){this.nr=new ir(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.nr?[this.nr]:[],updateAllViews:()=>{this.nr}};this.HM=t,this.Me.attachPrimitive(t)}Dy(){this.Vp.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.Yy()}),this.Yy()}setVolumeData(t){this.jy=t,this.Yy()}addVolumeData(t,i){this.jy.set(t,i),this.Yy()}Yy(){const t=this.Vp.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.Me.data();if(!i||0===i.length)return;const s=i.filter((i,s)=>s>=t.from&&s<=t.to);if(0===s.length)return;let n=1/0,e=-1/0;for(const t of s){const i=t.low||t.value||t.close,s=t.high||t.value||t.close;i<n&&(n=i),s>e&&(e=s)}const h=(e-n)/this.Cs.numberOfBins,r=[];for(let t=0;t<this.Cs.numberOfBins;t++)r.push({priceLevel:n+(t+.5)*h,volume:0,percentage:0});let l=0;for(const t of s){const i=t.close||t.value,s=this.jy.get(t.time)||1,e=Math.floor((i-n)/h);r[Math.max(0,Math.min(this.Cs.numberOfBins-1,e))].volume+=s,l+=s}for(const t of r)t.percentage=l>0?t.volume/l*100:0;let a=r[0];for(const t of r)t.volume>a.volume&&(a=t);const o=l*this.Cs.valueAreaPercentage,_=[...r].sort((t,i)=>i.volume-t.volume);let u=0;const c=[];for(const t of _){if(!(u<o))break;c.push(t),u+=t.volume}let d=-1/0,f=1/0;for(const t of c)t.priceLevel>d&&(d=t.priceLevel),t.priceLevel<f&&(f=t.priceLevel);this.qy={bins:r,poc:a.priceLevel,valueAreaHigh:d,valueAreaLow:f,totalVolume:l},this._b()}getProfileData(){return this.qy}updateOptions(t){this.Cs={...this.Cs,...t},this.Yy()}remove(){this.HM&&this.Me&&this.Me.detachPrimitive(this.HM),this.qy=null,this.jy.clear()}getChart(){return this.Vp}getSeries(){return this.Me}getOptions(){return this.Cs}_b(){this.HM&&this.HM.updateAllViews?.(),this.Vp.timeScale().applyOptions({})}}function nr(t,i,s){return new sr(t,i,s)}function er(t,i){const s=new Map;for(const t of i)s.set(t.time,t.volume);t.setVolumeData(s)}class hr{constructor(t,i){this.Gy=new Map,this.Ky=null,this.Xy=null,this.Zy=null,this.Jy=null,this.Qy=null,this.tS=null,this.Mg=void 0,this.Vp=t,this.kp=i,this.iS=t=>this.sS(t),this.nS=t=>this.eS(t),this.hS=t=>this.rS(t),this.lS=t=>this.aS(t),this.oS=()=>this._S(),this.uS=t=>{"Escape"===t.key&&this._S()},this.Vp.subscribeCrosshairMove(this.iS),this.kp.addEventListener("pointerdown",this.nS),this.kp.addEventListener("pointermove",this.hS),this.kp.addEventListener("pointerup",this.lS),this.kp.addEventListener("pointercancel",this.oS),document.addEventListener("keydown",this.uS)}cS(t){this.Gy.set(t.id(),t)}dS(t){const i=t.id();this.Ky===i&&this.fS(null),this.Xy===t&&this._S(),this.Gy.delete(i)}Ki(){return 0===this.Gy.size}m(){this.Vp.unsubscribeCrosshairMove(this.iS),this.kp.removeEventListener("pointerdown",this.nS),this.kp.removeEventListener("pointermove",this.hS),this.kp.removeEventListener("pointerup",this.lS),this.kp.removeEventListener("pointercancel",this.oS),document.removeEventListener("keydown",this.uS),this.Gy.clear()}sS(t){if(this.tS=t.point?{ut:t.point.x,ct:t.point.y}:null,this.Mg=t.paneIndex,null!==this.Xy)return;const i=this.pS(t.hoveredObjectId);this.fS(i?i.id():null),this.vS()}eS(t){const i=null===this.Ky?null:this.Gy.get(this.Ky)??null;i&&(this.Jy={ut:t.clientX,ct:t.clientY},this.Qy=i,i.isDraggable()&&(this.Xy=i,this.Zy=t.pointerId,this.kp.setPointerCapture(t.pointerId),i.beginDrag(),this.vS(),t.preventDefault(),t.stopPropagation()))}rS(t){if(null===this.Xy)return;if(!this.mS(t))return void this._S();const i=this.wS(t);null!==i&&this.Xy.dragTo(i),t.preventDefault(),t.stopPropagation()}aS(t){const i=this.Xy,s=this.Qy,n=this.Jy;this.gS(),this.Qy=null,this.Jy=null;const e=null!==n&&(Math.abs(t.clientX-n.ut)>4||Math.abs(t.clientY-n.ct)>4);if(null!==i)return this.Xy=null,e?i.commitDrag():(i.cancelDrag(),i.isClickable()&&i.click()),void this.vS();null!==s&&!e&&s.isClickable()&&s.click()}_S(){if(null===this.Xy)return;const t=this.Xy;this.Xy=null,this.gS(),t.cancelDrag(),this.vS()}mS(t){const i=this.kp.getBoundingClientRect();return t.clientX>=i.left&&t.clientX<=i.right&&t.clientY>=i.top&&t.clientY<=i.bottom}gS(){null!==this.Zy&&(this.kp.hasPointerCapture(this.Zy)&&this.kp.releasePointerCapture(this.Zy),this.Zy=null)}wS(t){const i=this.Xy;if(null===i)return null;if(null!==this.tS&&this.Mg===i.paneIndex())return i.priceAt(this.tS.ct);const s=this.Vp.panes()[i.paneIndex()],n=s?s.getHTMLElement():null;return n?i.priceAt(t.clientY-n.getBoundingClientRect().top):null}pS(t){return"string"!=typeof t?null:this.Gy.get(t)??null}fS(t){this.Ky!==t&&(null!==this.Ky&&this.Gy.get(this.Ky)?.setHovered(!1),this.Ky=t,null!==t&&this.Gy.get(t)?.setHovered(!0))}vS(){if(null!==this.Xy)return void this.Vp.chartElement().style.setProperty("cursor","ns-resize");const t=null===this.Ky?null:this.Gy.get(this.Ky);t?this.Vp.chartElement().style.setProperty("cursor",t.isDraggable()?"ns-resize":"pointer"):this.Vp.chartElement().style.removeProperty("cursor")}}const rr=new WeakMap;let lr=0;class ar{constructor(t,i,s){this.sh=null,this.MS=!1,this.bS="",this.yS=null,this.Vp=t,this.Me=i,this.Ma="pipsend-trading-line-"+lr++,this.Cs={lineWidth:2,lineStyle:0,axisLabelVisible:!0,draggable:!0,hoverColor:"#000000",...s},this.SS(),(this.Cs.draggable||this.Cs.onClick)&&function(t){const i=t.chartElement();if(!i)return null;let s=rr.get(t);return s||(s=new hr(t,i),rr.set(t,s)),s}(this.Vp)?.cS(this)}id(){return this.Ma}paneIndex(){try{return this.Me.getPane().paneIndex()}catch(t){return 0}}isDraggable(){return!0===this.Cs.draggable}isClickable(){return void 0!==this.Cs.onClick}setHovered(t){this.MS!==t&&this.sh&&(this.MS=t,this.sh.applyOptions({color:t?this.Cs.hoverColor:this.bS}))}priceAt(t){const i=this.Me.coordinateToPrice(t);return null===i?null:i}beginDrag(){this.yS=this.Cs.price,this.Cs.onDragStart&&this.Cs.onDragStart(this.Cs.price)}dragTo(t){this.xS(t),this.Cs.onDragMove&&this.Cs.onDragMove(t)}commitDrag(){this.yS=null,this.Cs.onDragEnd&&this.Cs.onDragEnd(this.Cs.price)}cancelDrag(){const t=this.yS;this.yS=null,null!==t&&t!==this.Cs.price&&(this.xS(t),this.Cs.onDragMove&&this.Cs.onDragMove(t))}click(){this.Cs.onClick&&this.Cs.onClick(this.Cs.price)}applyOptions(t){if(this.Cs={...this.Cs,...t},t.color&&(this.bS=t.color),!this.sh)return;const i={title:this.PS()};void 0!==t.price&&(i.price=t.price),void 0===t.color||this.MS||(i.color=t.color),void 0!==t.lineWidth&&(i.lineWidth=t.lineWidth),void 0!==t.lineStyle&&(i.lineStyle=t.lineStyle),this.sh.applyOptions(i)}setTitle(t){this.Cs.title=t,this.sh&&this.sh.applyOptions({title:t})}getPrice(){return this.Cs.price}setPrice(t){this.xS(t)}remove(){!function(t,i){const s=rr.get(t);s&&(s.dS(i),s.Ki()&&(s.m(),rr.delete(t)))}(this.Vp,this),this.sh&&(this.Me.removePriceLine(this.sh),this.sh=null)}getPriceLine(){return this.sh}PS(){if(this.Cs.formatTitle)try{return this.Cs.formatTitle(this.Cs.price)}catch(t){console.error("Error in formatTitle:",t)}return this.Cs.title||""}SS(){this.bS=this.Cs.color,this.sh=this.Me.createPriceLine({id:this.Ma,price:this.Cs.price,color:this.Cs.color,lineWidth:this.Cs.lineWidth,lineStyle:this.Cs.lineStyle,axisLabelVisible:this.Cs.axisLabelVisible,title:this.PS()})}xS(t){this.Cs.price=t,this.sh&&this.sh.applyOptions({price:t,title:this.PS()})}}function or(t,i,s){const n={"stop-loss":{color:"#ef5350",lineStyle:2,title:"Stop Loss",draggable:!0},"take-profit":{color:"#26a69a",lineStyle:2,title:"Take Profit",draggable:!0},entry:{color:"#2196F3",lineStyle:0,title:"Entry",draggable:!0},target:{color:"#FF9800",lineStyle:2,title:"Target",draggable:!0},resistance:{color:"#f44336",lineStyle:0,title:"Resistance",draggable:!0},support:{color:"#4CAF50",lineStyle:0,title:"Support",draggable:!0},custom:{color:"#9E9E9E",lineStyle:0,title:"",draggable:!0}},e=s.type?n[s.type]:n.custom,h={price:s.price,color:s.color??e.color??"#9E9E9E",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??e.lineStyle??0,title:s.title??e.title??"",axisLabelVisible:s.axisLabelVisible??!0,draggable:s.draggable??e.draggable??!0,onDragStart:s.onDragStart,onDragMove:s.onDragMove,onDragEnd:s.onDragEnd,onClick:s.onClick,formatTitle:s.formatTitle};return new ar(i,t,h)}class _r{constructor(t,i){this.Ep=null,this.CS=null,this.TS=null,this.kS={},this.Vp=t,this.Me=i,this.DS()}DS(){this.Ep=this.Vp.chartElement()}RS(t){const i=this.Me.getPane().getHTMLElement();if(!i)return 0;const s=t.clientY-i.getBoundingClientRect().top,n=this.Me.coordinateToPrice(s);return null===n?0:n}enableClickToCreate(t,i){return this.Ep?(this.CS=t,this.kS=i||{},new Promise(t=>{this.Ep.style.cursor="crosshair",this.TS=i=>{const s=this.RS(i),n=this.ES(s);this.disableClickToCreate(),t(n)},this.Ep.addEventListener("click",this.TS)})):Promise.resolve(null)}disableClickToCreate(){this.Ep&&this.TS&&(this.Ep.removeEventListener("click",this.TS),this.Ep.style.cursor="default"),this.CS=null,this.TS=null,this.kS={}}ES(t){if(!this.CS)return null;let i;switch(this.CS){case"stop-loss":i={price:t,color:"#ef5350",lineWidth:2,title:"Stop Loss",draggable:!0,...this.kS};break;case"take-profit":i={price:t,color:"#26a69a",lineWidth:2,title:"Take Profit",draggable:!0,...this.kS};break;case"entry":i={price:t,color:"#2196F3",lineWidth:2,title:"Entry",draggable:!0,...this.kS};break;case"target":i={price:t,color:"#FF9800",lineWidth:2,title:"Target",draggable:!0,...this.kS};break;case"resistance":i={price:t,color:"#f44336",lineWidth:2,title:"Resistance",draggable:!0,...this.kS};break;case"support":i={price:t,color:"#4CAF50",lineWidth:2,title:"Support",draggable:!0,...this.kS};break;case"custom":i={price:t,color:"#9E9E9E",lineWidth:2,title:"Custom",draggable:!0,...this.kS};break;default:return null}return new ar(this.Vp,this.Me,i)}getCreationMode(){return this.CS}isCreating(){return null!==this.CS}}function ur(t,i){return new _r(t,i)}const cr=new Set(["line","body","stroke","center","move"]);function dr(t,i,s){if(null===i)return null;const n=String(i);return{externalId:`${t}#${n}`,zOrder:"normal",cursorStyle:s?cr.has(n)?"move":"grab":void 0}}function fr(t,i,s){return t?{Mt:s-t.price,gt:null===t.time?0:i-t.time}:{Mt:0,gt:0}}var pr;function vr(t){if(null==t)return null;if("number"==typeof t||"string"==typeof t)return t;const i=t,s=i.year??i.VS;if(void 0!==s){const t={};return t.year=s,t.month=i.month??i.LS,t.day=i.day??i.AS,t}return t}function mr(t,i){const s={};return s.price=t,s.time=i,s}function wr(t){if(!t)return mr(0,null);return mr(t.price??t.Mt??0,vr(t.time??t.gt??null))}function gr(t,i="time"){return t?t[i]??null:null}function Mr(t,i){if(t)return t[i]??void 0}!function(t){t.Idle="idle",t.Creating="creating",t.Editing="editing",t.Dragging="dragging",t.Hovering="hovering"}(pr||(pr={}));class br{constructor(t,i,s={}){this._state=pr.Idle,this._visible=!0,this._locked=!1,this._chart=t.chart,this._series=t.series,this._type=i,this._id=this.IS(),this._options={color:"#2196F3",lineWidth:2,lineStyle:"solid",visible:!0,locked:!1,zIndex:0,...s},this._visible=this._options.visible??!0,this._locked=this._options.locked??!1}IS(){return`${this._type}_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}get id(){return this._id}get type(){return this._type}applyOptions(t){this._options={...this._options,...t},void 0!==t.visible&&(this._visible=t.visible),void 0!==t.locked&&(this._locked=t.locked),this._update()}show(){this._visible=!0,this._update()}hide(){this._visible=!1,this._update()}lock(){this._locked=!0}unlock(){this._locked=!1}isLocked(){return this._locked}isVisible(){return this._visible}series(){return this._series}getState(){return this._state}serialize(){const t=this._serializeShape();return t.id=this._id,t.visible=this._visible,t.locked=this._locked,t}applySerializedState(t){"string"==typeof t.id&&t.id.length>0&&(this._id=t.id),"boolean"==typeof t.visible&&(this._visible=t.visible),"boolean"==typeof t.locked&&(this._locked=t.locked),this._update()}}const yr=new WeakMap;function Sr(t,i){yr.set(t,i)}function xr(t){const i=!0===yr.get(t);return i&&yr.set(t,!1),i}var Pr;!function(t){t.FS="idle",t.BS="waiting_first_point",t.zS="waiting_second_point",t.OS="completed"}(Pr||(Pr={}));class Cr{constructor(t,i,s={}){this.Vv=Pr.FS,this.WS=null,this.TS=null,this.sf=null,this.Vp=t,this.Me=i,this.$S=s}HS(){this.Vv===Pr.FS&&(this.Vv=Pr.BS,this.WS=null,this.NS(),this.US())}qS(){this.Vv=Pr.FS,this.WS=null,this.jS(),this.YS(),this.$S.GS&&this.$S.GS()}KS(){return this.Vv}XS(){return this.Vv===Pr.BS||this.Vv===Pr.zS}NS(){this.TS=t=>{this.ZS(t)},this.Vp.subscribeClick(this.TS)}US(){this.sf=t=>{this.JS(t)},this.Vp.subscribeCrosshairMove(this.sf)}jS(){this.TS&&(this.Vp.unsubscribeClick(this.TS),this.TS=null)}YS(){this.sf&&(this.Vp.unsubscribeCrosshairMove(this.sf),this.sf=null)}ZS(t){if(!t.point)return;if(xr(this.Vp))return;const i=this.Me.coordinateToPrice(t.point.y),s=Kn(this.Vp,this.Me,t.point.x);if(null===i||null===s)return;const n={gt:s,Mt:i};this.Vv===Pr.BS?(this.WS=n,this.Vv=Pr.zS,this.$S.QS&&this.$S.QS(n)):this.Vv===Pr.zS&&this.WS&&(this.Vv=Pr.OS,this.$S.tx&&this.$S.tx(n),this.$S.ix&&this.$S.ix(this.WS,n),this.jS(),this.YS(),this.Vv=Pr.FS,this.WS=null)}JS(t){if(!t.point)return;if(this.Vv!==Pr.zS)return;const i=this.Me.coordinateToPrice(t.point.y),s=Kn(this.Vp,this.Me,t.point.x);if(null===i||null===s)return;const n={gt:s,Mt:i};this.$S.sx&&this.$S.sx(n)}m(){this.qS()}}class Tr{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class kr{constructor(t){this.nx=t,this.Jt=new Tr(t)}renderer(){return this.nx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Dr extends br{constructor(t,i){super(t,"trend-line",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.ux=null,this.vx=null,this.mx=null,this.wx=null,this.gx=!1,this.Mx=null,this.bx={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",extendLeft:!1,extendRight:!1,interactive:!1,...i},this.ky(),this.bx.interactive?this.yx():this.gx=!0}yx(){new Cr(this._chart,this._series,{QS:t=>{this.bx.point1Time=t.gt,this.bx.point1Price=t.Mt,this._b()},tx:t=>{this.bx.point2Time=t.gt,this.bx.point2Price=t.Mt,this.gx=!0,this._b(),this.bx.onUpdate&&this.bx.onUpdate()},sx:t=>{this.bx.point1Time&&!this.gx&&(this.Mx=t,this._b())},ix:()=>{this.gx=!0}}).HS()}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new kr(this)}drawToCanvas(t,i,s){if(!this.gx&&this.bx.point1Time&&this.Mx)return void this.Px(t,i,s);if(!this.bx.point1Time||!this.bx.point2Time)return;const n=(Xn(this._chart,this._series,this.bx.point1Time)??0)*i,e=(this._series.priceToCoordinate(this.bx.point1Price)??0)*s,h=(Xn(this._chart,this._series,this.bx.point2Time)??0)*i,r=(this._series.priceToCoordinate(this.bx.point2Price)??0)*s,l=this.bx.lineColor,a=this.lx?this.bx.lineWidth+1:this.bx.lineWidth;t.strokeStyle=l,t.lineWidth=a*i,"dashed"===this.bx.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.bx.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath();const o=this._chart.chartElement().clientWidth*i;let _=n,u=e,c=h,d=r;if(this.bx.extendLeft||this.bx.extendRight){const t=(r-e)/(h-n);this.bx.extendLeft&&(_=0,u=e-t*(n-0)),this.bx.extendRight&&(c=o,d=e+t*(o-n))}t.moveTo(_,u),t.lineTo(c,d),t.stroke(),t.setLineDash([]),!this.lx&&!this.ox||this.isLocked()||(this.Cx(t,n,e,i,l),this.Cx(t,h,r,i,l))}Px(t,i,s){if(!this.bx.point1Time||!this.Mx)return;const n=(Xn(this._chart,this._series,this.bx.point1Time)??0)*i,e=(this._series.priceToCoordinate(this.bx.point1Price)??0)*s,h=(Xn(this._chart,this._series,this.Mx.gt)??0)*i,r=(this._series.priceToCoordinate(this.Mx.Mt)??0)*s;t.strokeStyle=this.bx.lineColor,t.lineWidth=this.bx.lineWidth*i,t.globalAlpha=.7,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,e),t.lineTo(h,r),t.stroke(),t.setLineDash([]),t.globalAlpha=1,this.Cx(t,n,e,i,this.bx.lineColor),t.globalAlpha=.5,this.Cx(t,h,r,i,this.bx.lineColor),t.globalAlpha=1}Cx(t,i,s,n,e){const h=5*n;t.fillStyle=e,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),t.stroke()}setColor(t){this.bx.lineColor=t,this._b()}color(){return this.bx.lineColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}isHovered(){return this.ox}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(!this.bx.point1Time||!this.bx.point2Time)return!1;const s=Xn(this._chart,this._series,this.bx.point1Time)??0,n=this._series.priceToCoordinate(this.bx.point1Price)??0,e=Xn(this._chart,this._series,this.bx.point2Time)??0,h=this._series.priceToCoordinate(this.bx.point2Price)??0;return this.Tx(t,i,s,n,e,h)<=8}Tx(t,i,s,n,e,h){const r=e-s,l=h-n,a=r*r+l*l;if(0===a)return Math.sqrt((t-s)*(t-s)+(i-n)*(i-n));let o=((t-s)*r+(i-n)*l)/a;o=Math.max(0,Math.min(1,o));const _=s+o*r,u=n+o*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.bx.point1Time||!this.bx.point2Time)return null;const s=Xn(this._chart,this._series,this.bx.point1Time)??0,n=this._series.priceToCoordinate(this.bx.point1Price)??0,e=Xn(this._chart,this._series,this.bx.point2Time)??0,h=this._series.priceToCoordinate(this.bx.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return"point1";if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-h,2))<=10)return"point2";return this.Tx(t,i,s,n,e,h)<=10?"line":null}startDrag(t,i){this._x=!0,this.ux=t,this.vx=i,"line"===t&&(this.mx={gt:this.bx.point1Time,Mt:this.bx.point1Price},this.wx={gt:this.bx.point2Time,Mt:this.bx.point2Price})}stopDrag(){this._x=!1,this.ux=null,this.vx=null,this.mx=null,this.wx=null}updateDrag(t,i){if(this._x&&this.ux){if("point1"===this.ux)this.bx.point1Time=t,this.bx.point1Price=i;else if("point2"===this.ux)this.bx.point2Time=t,this.bx.point2Price=i;else if("line"===this.ux&&this.mx&&this.wx){const s=fr(this.vx,t,i);this.bx.point1Time=this.mx.gt+s.gt,this.bx.point1Price=this.mx.Mt+s.Mt,this.bx.point2Time=this.wx.gt+s.gt,this.bx.point2Price=this.wx.Mt+s.Mt}this._b(),this.bx.onUpdate&&this.bx.onUpdate()}}isVisible(){return this._visible}_serializeShape(){return{type:"trendLine",points:[mr(this.bx.point1Price??0,vr(this.bx.point1Time)),mr(this.bx.point2Price??0,vr(this.bx.point2Time))],style:{lineColor:this.bx.lineColor,lineWidth:this.bx.lineWidth,lineStyle:this.bx.lineStyle,extendLeft:this.bx.extendLeft,extendRight:this.bx.extendRight}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.bx.onRemove&&this.bx.onRemove()}}function Rr(t,i){return new Dr(t,i)}class Er{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Vr{constructor(t){this.nx=t,this.Jt=new Er(t)}renderer(){return this.nx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Lr extends br{constructor(t,i){super(t,"horizontal-line",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.vx=null,this.kx=0,this.Dx={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",showLabel:!0,labelText:"",interactive:!1,...i},this.ky()}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new Vr(this)}drawToCanvas(t,i,s){if(void 0===this.Dx.price)return;const n=(this._series.priceToCoordinate(this.Dx.price)??0)*s,e=this._chart.chartElement().clientWidth*i,h=this.Dx.lineColor,r=this.lx?this.Dx.lineWidth+1:this.Dx.lineWidth;t.strokeStyle=h,t.lineWidth=r*i,"dashed"===this.Dx.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Dx.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(0,n),t.lineTo(e,n),t.stroke(),t.setLineDash([]),this.Dx.showLabel&&(this.lx||this.ox)&&this.Rx(t,n,i,s,h)}Rx(t,i,s,n,e){const h=this.Dx.labelText||this.Dx.price.toFixed(4),r=6*s,l=12*s;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const a=t.measureText(h).width,o=l,_=10*s,u=i-o/2-r;t.fillStyle=e,t.fillRect(_,u,a+2*r,o+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(h,_+r,u+r)}setColor(t){this.Dx.lineColor=t,this._b()}color(){return this.Dx.lineColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(void 0===this.Dx.price)return!1;const s=this._series.priceToCoordinate(this.Dx.price)??0;return Math.abs(i-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this._x=!0,this.vx=i,this.kx=this.Dx.price??0}stopDrag(){this._x=!1,this.vx=null}updateDrag(t,i){this._x&&(this.Dx.price=this.kx+fr(this.vx,t,i).Mt,this._b(),this.Dx.onUpdate&&this.Dx.onUpdate())}getPrice(){return this.Dx.price}setPrice(t){this.Dx.price=t,this._b()}setLabel(t){this.Dx.labelText=t,this._b()}isVisible(){return this._visible}_serializeShape(){return{type:"horizontalLine",points:[mr(this.Dx.price??0,null)],style:{lineColor:this.Dx.lineColor,lineWidth:this.Dx.lineWidth,lineStyle:this.Dx.lineStyle,showLabel:this.Dx.showLabel,labelText:this.Dx.labelText}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Dx.onRemove&&this.Dx.onRemove()}}function Ar(t,i){return new Lr(t,i)}class Ir{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Fr{constructor(t){this.nx=t,this.Jt=new Ir(t)}renderer(){return this.nx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Br extends br{constructor(t,i){super(t,"vertical-line",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.vx=null,this.Ex=0,this.Vx={lineColor:"#787b86",lineWidth:1,lineStyle:"dashed",showLabel:!0,labelText:"",interactive:!1,...i},this.ky()}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new Fr(this)}drawToCanvas(t,i,s){if(void 0===this.Vx.time)return;const n=(Xn(this._chart,this._series,this.Vx.time)??0)*i,e=this._chart.chartElement().clientHeight*s,h=this.Vx.lineColor,r=this.lx||this.ox&&!this.isLocked()?this.Vx.lineWidth+1:this.Vx.lineWidth;t.strokeStyle=h,t.lineWidth=r*i,"dashed"===this.Vx.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Vx.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(n,0),t.lineTo(n,e),t.stroke(),t.setLineDash([]),this.Vx.showLabel&&(this.lx||this.ox)&&this.Vx.labelText&&this.Rx(t,n,i,s,h)}Rx(t,i,s,n,e){const h=this.Vx.labelText,r=6*s,l=12*s;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const a=t.measureText(h).width,o=l,_=i-a/2-r,u=10*n;t.fillStyle=e,t.fillRect(_,u,a+2*r,o+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(h,_+r,u+r)}setColor(t){this.Vx.lineColor=t,this._b()}color(){return this.Vx.lineColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(void 0===this.Vx.time)return!1;const s=Xn(this._chart,this._series,this.Vx.time)??0;return Math.abs(t-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this._x=!0,this.vx=i,this.Ex=this.Vx.time}stopDrag(){this._x=!1,this.vx=null}updateDrag(t,i){this._x&&(this.Vx.time=this.Ex+fr(this.vx,t,i).gt,this._b(),this.Vx.onUpdate&&this.Vx.onUpdate())}getTime(){return this.Vx.time}setTime(t){this.Vx.time=t,this._b()}setLabel(t){this.Vx.labelText=t,this._b()}isVisible(){return this._visible}_serializeShape(){return{type:"verticalLine",points:[mr(0,vr(this.Vx.time))],style:{lineColor:this.Vx.lineColor,lineWidth:this.Vx.lineWidth,lineStyle:this.Vx.lineStyle,showLabel:this.Vx.showLabel,labelText:this.Vx.labelText}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Vx.onRemove&&this.Vx.onRemove()}}function zr(t,i){return new Br(t,i)}const Or=[{Lx:0,Zl:"0.0%"},{Lx:.236,Zl:"23.6%"},{Lx:.382,Zl:"38.2%"},{Lx:.5,Zl:"50.0%"},{Lx:.618,Zl:"61.8%"},{Lx:.786,Zl:"78.6%"},{Lx:1,Zl:"100.0%"}],Wr=[...Or,{Lx:1.272,Zl:"127.2%"},{Lx:1.414,Zl:"141.4%"},{Lx:1.618,Zl:"161.8%"},{Lx:2,Zl:"200.0%"},{Lx:2.618,Zl:"261.8%"}];class $r{constructor(t=!1){this.Ax=t?Wr:Or}calculateLevels(t,i,s,n){const e=Math.abs(n-i),h=e/i*100,r=n>i,l=this.Ax.map(({Lx:t,Zl:i})=>{let s;return s=r?n-e*t:n+e*t,{Lx:t,Mt:s,Zl:i}});return{point1:{time:t,price:i},point2:{time:s,price:n},priceRange:e,priceRangePercent:h,levels:l,isUptrend:r}}getPriceAtRatio(t,i,s){const n=Math.abs(i-t);return i>t?i-n*s:i+n*s}formatPrice(t,i=5){return t.toFixed(i)}formatLevel(t,i=5){return`${t.label} (${this.formatPrice(t.price,i)})`}updateRatios(t){this.Ax=t}getRatios(){return[...this.Ax]}useStandardRatios(){this.Ax=Or}useExtendedRatios(){this.Ax=Wr}}class Hr{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Nr{constructor(t){this.nx=t,this.Jt=new Hr(t)}renderer(){return this.nx.isVisible()?this.Jt:null}}class Ur extends br{constructor(t,i){super(t,"fibonacci-tool",i),this.HM=null,this.hx=null,this.qM=null,this.nr=null,this.Ix=null,this.gx=!1,this.lx=!1,this.ox=!1,this.Mx=null,this._x=!1,this.Fx=null,this.sf=null,this.Bx={lineColor:"#787b86",lineWidth:1,showLabels:!0,labelPosition:"right",useExtended:!1,levelColors:{0:"#787b86",.236:"#f23645",.382:"#ff9800",.5:"#2196f3",.618:"#4caf50",.786:"#9c27b0",1:"#787b86"},...i},this.zx=new $r(this.Bx.useExtended),this.ky(),this.Bx.interactive?this.yx():(this.gx=!0,this.Ox())}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new Nr(this)}drawToCanvas(t,i,s){if(!this.gx&&this.Bx.point1Time&&this.Mx)return void this.Px(t,i,s);if(!this.qM||!this.Bx.point1Time||!this.Bx.point2Time)return;const n=(Xn(this._chart,this._series,this.Bx.point1Time)??0)*i,e=(Xn(this._chart,this._series,this.Bx.point2Time)??0)*i,h=Math.min(n,e),r=Math.max(n,e),l=this.lx?2:this.Bx.lineWidth;this.qM.levels.forEach(n=>{this.Wx(t,n,h,r,i,s,l)}),!this.lx&&!this.ox||this.isLocked()||(this.Cx(t,n,(this._series.priceToCoordinate(this.Bx.point1Price)??0)*s,i),this.Cx(t,e,(this._series.priceToCoordinate(this.Bx.point2Price)??0)*s,i))}Wx(t,i,s,n,e,h,r=1){const l=i.ratio??i.Lx,a=i.price??i.Mt;if(void 0===l||void 0===a)return;const o=(this._series.priceToCoordinate(a)??0)*h;let _=this.Bx.levelColors?.[l.toString()]||this.Bx.lineColor;t.strokeStyle=_,t.lineWidth=r*e,t.beginPath(),t.moveTo(s,o),t.lineTo(n,o),t.stroke(),this.Bx.showLabels&&this.Rx(t,i,s,n,o,e,_)}Rx(t,i,s,n,e,h,r){const l=i.label??i.Zl,a=i.price??i.Mt,o=`${l} ${this.zx.formatPrice(a)}`;t.font=11*h+"px sans-serif";const _=t.measureText(o),u=4*h,c="right"===this.Bx.labelPosition?n+u:s-_.width-u,d=e;t.fillStyle="rgba(255, 255, 255, 0.9)",t.fillRect(c-u/2,d-11*h/2-u/2,_.width+u,11*h+u),t.fillStyle=r,t.textAlign="right"===this.Bx.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(o,c,d)}Ox(){this.Bx.point1Time&&this.Bx.point1Price&&this.Bx.point2Time&&this.Bx.point2Price&&(this.qM=this.zx.calculateLevels(this.Bx.point1Time,this.Bx.point1Price,this.Bx.point2Time,this.Bx.point2Price),this.Bx.onUpdate&&this.qM&&this.Bx.onUpdate(this.qM))}updatePoints(t,i,s,n){this.Bx.point1Time=t,this.Bx.point1Price=i,this.Bx.point2Time=s,this.Bx.point2Price=n,this.Ox(),this._b()}getMetrics(){return this.qM}getLevels(){return this.qM?.levels||[]}isVisible(){return this._visible}_serializeShape(){const t=this.zx.getRatios().map(t=>t.ratio);return{type:"fibRetracement",points:[mr(this.Bx.point1Price??0,vr(this.Bx.point1Time)),mr(this.Bx.point2Price??0,vr(this.Bx.point2Time))],style:{lineColor:this.Bx.lineColor,lineWidth:this.Bx.lineWidth,showLabels:this.Bx.showLabels,labelPosition:this.Bx.labelPosition,levelColors:this.Bx.levelColors},extra:{levels:t,useExtended:this.Bx.useExtended}}}useExtendedLevels(t){this.Bx.useExtended=t,t?this.zx.useExtendedRatios():this.zx.useStandardRatios(),this.Ox(),this._b()}yx(){this.Ix=new Cr(this._chart,this._series,{QS:t=>{this.Bx.point1Time=t.gt,this.Bx.point1Price=t.Mt,this._b()},tx:t=>{this.Bx.point2Time=t.gt,this.Bx.point2Price=t.Mt},ix:(t,i)=>{this.Bx.point1Time=t.gt,this.Bx.point1Price=t.Mt,this.Bx.point2Time=i.gt,this.Bx.point2Price=i.Mt,this.gx=!0,this.Mx=null,this.Ox(),this.$x(),this._b()},sx:t=>{this.Mx=t,this._b()}}),this.Ix.HS()}Px(t,i,s){if(!this.Bx.point1Time||!this.Mx)return;const n=(Xn(this._chart,this._series,this.Bx.point1Time)??0)*i,e=(this._series.priceToCoordinate(this.Bx.point1Price)??0)*s,h=(Xn(this._chart,this._series,this.Mx.gt)??0)*i,r=(this._series.priceToCoordinate(this.Mx.Mt)??0)*s,l=this.zx.calculateLevels(this.Bx.point1Time,this.Bx.point1Price,this.Mx.gt,this.Mx.Mt),a=Math.min(n,h),o=Math.max(n,h);t.setLineDash([5*i,5*i]),t.globalAlpha=.7,l.levels.forEach(n=>{const e=n.ratio??n.Lx,h=n.price??n.Mt;if(void 0===e||void 0===h)return;const r=(this._series.priceToCoordinate(h)??0)*s,l=this.Bx.levelColors?.[e.toString()]||this.Bx.lineColor;if(t.strokeStyle=l,t.lineWidth=this.Bx.lineWidth*i,t.beginPath(),t.moveTo(a,r),t.lineTo(o,r),t.stroke(),this.Bx.showLabels){const s=`${n.label??n.Zl} ${this.zx.formatPrice(h)}`;t.font=11*i+"px sans-serif";const e=t.measureText(s),_=4*i,u="right"===this.Bx.labelPosition?o+_:a-e.width-_,c=r;t.fillStyle="rgba(255, 255, 255, 0.8)",t.fillRect(u-_/2,c-11*i/2-_/2,e.width+_,11*i+_),t.fillStyle=l,t.textAlign="right"===this.Bx.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(s,u,c)}}),t.setLineDash([]),t.globalAlpha=1,this.Cx(t,n,e,i),t.globalAlpha=.6,this.Cx(t,h,r,i),t.globalAlpha=1}Cx(t,i,s,n){const e=this.Bx.lineColor,h=this.lx?5*n:4*n;t.fillStyle=e,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),this.lx&&(t.strokeStyle="#ffffff",t.lineWidth=2*n,t.stroke())}$x(){this.sf=t=>{this.Hx(t)},this._chart.subscribeCrosshairMove(this.sf)}Nx(){this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null)}Hx(t){if(!t.point)return;const i=Kn(this._chart,this._series,t.point.x);if(null===i)return;if(!this.lx||!this._x)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&("point1"===this.Fx?(this.Bx.point1Time=i,this.Bx.point1Price=s):"point2"===this.Fx&&(this.Bx.point2Time=i,this.Bx.point2Price=s),this.Ox(),this._b())}startDrag(t){this._x=!0,this.Fx=t}stopDrag(){this._x=!1,this.Fx=null}updateDrag(t,i){this._x&&this.Fx&&("point1"===this.Fx?(this.Bx.point1Time=t,this.Bx.point1Price=i):(this.Bx.point2Time=t,this.Bx.point2Price=i),this.Ox(),this._b())}hitTestEndpoint(t,i){if(!this.gx||!this.Bx.point1Time||!this.Bx.point2Time)return null;const s=Xn(this._chart,this._series,this.Bx.point1Time)??0,n=this._series.priceToCoordinate(this.Bx.point1Price)??0,e=Xn(this._chart,this._series,this.Bx.point2Time)??0,h=this._series.priceToCoordinate(this.Bx.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return"point1";return Math.sqrt(Math.pow(t-e,2)+Math.pow(i-h,2))<=10?"point2":null}setColor(t){this.Bx.lineColor=t,this._b()}color(){return this.Bx.lineColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}isSelected(){return this.lx}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(!this.gx||!this.Bx.point1Time||!this.Bx.point2Time)return!1;const s=Xn(this._chart,this._series,this.Bx.point1Time)??0,n=Xn(this._chart,this._series,this.Bx.point2Time)??0;if(t<Math.min(s,n)||t>Math.max(s,n))return!1;if(!this.qM)return!1;for(const t of this.qM.levels){const s=t.price??t.Mt;if(void 0===s)continue;const n=this._series.priceToCoordinate(s)??0;if(Math.abs(i-n)<=8)return!0}return!1}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Ix&&(this.Ix.m(),this.Ix=null),this.Nx(),this.Bx.onRemove&&this.Bx.onRemove()}destroy(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Bx.onRemove&&this.Bx.onRemove()}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this.Ox(),this._b()}}function qr(t,i){return new Ur(t,i)}class jr{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Yr{constructor(t){this.nx=t,this.Jt=new jr(t)}renderer(){return this.nx.isVisible()?this.Jt:null}}class Gr extends br{constructor(t,i){super(t,"fibonacci-extension",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.ux=null,this.Bx={levels:[{level:0,color:"#787B86",label:"0%"},{level:.618,color:"#2962FF",label:"61.8%"},{level:1,color:"#787B86",label:"100%"},{level:1.618,color:"#F23645",label:"161.8%"},{level:2.618,color:"#9C27B0",label:"261.8%"}],lineColor:"#787B86",lineWidth:1,showLabels:!0,extendLines:!0,...i},this.ky()}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new Yr(this)}getPoint1(){return this.Bx.point1}getPoint2(){return this.Bx.point2}getPoint3(){return this.Bx.point3}getLevels(){return this.Bx.levels||[]}getOptions(){return this.Bx}setPoint1(t){this.Bx.point1=t,this._b()}setPoint2(t){this.Bx.point2=t,this._b()}setPoint3(t){this.Bx.point3=t,this._b()}isComplete(){return!!(this.Bx.point1&&this.Bx.point2&&this.Bx.point3)}setColor(t){this.Bx.lineColor=t,this._b()}color(){return this.Bx.lineColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(!this.isComplete())return!1;const s=[this.Bx.point1,this.Bx.point2,this.Bx.point3];for(const n of s){const s=Xn(this._chart,this._series,n.time)??0,e=this._series.priceToCoordinate(n.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return!0}const n=this.Ux();for(const t of n){const s=this._series.priceToCoordinate(t.Mt)??0;if(Math.abs(i-s)<=10)return!0}return!1}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.Bx.point1,n=this.Bx.point2,e=this.Bx.point3;if(!s||!n||!e)return null;if(s&&s.time&&void 0!==s.price){const n=Xn(this._chart,this._series,s.time)??0,e=this._series.priceToCoordinate(s.price)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-e,2))<=20)return"point1"}if(n&&n.time&&void 0!==n.price){const s=Xn(this._chart,this._series,n.time)??0,e=this._series.priceToCoordinate(n.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=20)return"point2"}if(e&&e.time&&void 0!==e.price){const s=Xn(this._chart,this._series,e.time)??0,n=this._series.priceToCoordinate(e.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=20)return"point3"}return null}startDrag(t){this._x=!0,this.ux=t}stopDrag(){this._x=!1,this.ux=null}updateDrag(t,i){if(!this._x||!this.ux)return;const s={time:t,price:i};switch(this.ux){case"point1":this.setPoint1(s);break;case"point2":this.setPoint2(s);break;case"point3":this.setPoint3(s)}this.Bx.onUpdate&&this.Bx.onUpdate()}Ux(){if(!this.isComplete())return[];const t=this.Bx.point1,i=this.Bx.point2,s=this.Bx.point3,n=i.price-t.price;return(this.Bx.levels||[]).map(t=>({sn:t.level,Mt:s.price+n*t.level,Zl:t.label,R:t.color}))}getExtensionLevels(){return this.Ux()}drawToCanvas(t,i,s){if(!this.isComplete())return;const n=this.Bx.point1,e=this.Bx.point2,h=this.Bx.point3,r=this.lx||this.ox&&!this.isLocked(),l=(Xn(this._chart,this._series,n.time)??0)*i,a=(this._series.priceToCoordinate(n.price)??0)*s,o=(Xn(this._chart,this._series,e.time)??0)*i,_=(this._series.priceToCoordinate(e.price)??0)*s,u=(Xn(this._chart,this._series,h.time)??0)*i,c=(this._series.priceToCoordinate(h.price)??0)*s;t.strokeStyle=this.Bx.lineColor||"#787B86",t.lineWidth=(this.Bx.lineWidth||1)*i*(r?1.5:1),t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(l,a),t.lineTo(o,_),t.stroke(),t.beginPath(),t.moveTo(o,_),t.lineTo(u,c),t.stroke(),t.setLineDash([]);const d=this.getExtensionLevels(),f=t.canvas.width;for(const n of d){const e=n.Mt??n.price,h=n.R??n.color,l=n.Zl??n.label;if(null==e)continue;const a=(this._series.priceToCoordinate(e)??0)*s;if(t.strokeStyle=h,t.lineWidth=(this.Bx.lineWidth||1)*i*(r?1.5:1),t.beginPath(),this.Bx.extendLines?(t.moveTo(0,a),t.lineTo(f,a)):(t.moveTo(u,a),t.lineTo(f,a)),t.stroke(),this.Bx.showLabels){const s=`${l} (${e.toFixed(5)})`;t.font=12*i+"px Arial",t.fillStyle=h,t.textAlign="left",t.textBaseline="middle";const n=5*i,r=Math.max(u,10*i)+n;t.fillText(s,r,a)}}const p=(r?6:4)*i,v=[{ut:l,ct:a,Zl:"A"},{ut:o,ct:_,Zl:"B"},{ut:u,ct:c,Zl:"C"}];for(const s of v)t.fillStyle="#2962FF",t.beginPath(),t.arc(s.ut,s.ct,p,0,2*Math.PI),t.fill(),t.fillStyle="#ffffff",t.beginPath(),t.arc(s.ut,s.ct,p-2*i,0,2*Math.PI),t.fill(),r&&(t.fillStyle="#2962FF",t.font=`bold ${10*i}px Arial`,t.textAlign="center",t.textBaseline="middle",t.fillText(s.Zl,s.ut,s.ct))}isVisible(){return this._visible}_serializeShape(){return{type:"fibExtension",points:[wr(this.Bx.point1),wr(this.Bx.point2),wr(this.Bx.point3)],style:{lineColor:this.Bx.lineColor,lineWidth:this.Bx.lineWidth,showLabels:this.Bx.showLabels,extendLines:this.Bx.extendLines},extra:{levels:(this.Bx.levels||[]).map(t=>({sn:t.level,R:t.color,Zl:t.label}))}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}}}function Kr(t,i){return new Gr(t,i)}class Xr{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Zr{constructor(t){this.nx=t,this.Jt=new Xr(t)}renderer(){return this.nx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}const Jr=[{level:.382,color:"#787B86",label:"38.2%"},{level:.5,color:"#9598A1",label:"50%"},{level:.618,color:"#787B86",label:"61.8%"}];class Qr extends br{constructor(t,i){super(t,"fibonacci-fan",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.ux=null,this.qx=!1,this.TS=null,this.sf=null,this.Mx=null,this.jx={levels:Jr,lineWidth:1,showLabels:!0,extendLines:!0,interactive:!1,...i},this.ky(),this.jx.interactive&&!this.jx.point1Time&&this.yx()}yx(){this.qx=!0,this.TS=t=>{if(!t.point)return;if(xr(this._chart))return;const i=Kn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.jx.point1Time?(this.jx.point2Time=i,this.jx.point2Price=s,this.qx=!1,this.Mx=null,this.TS&&(this._chart.unsubscribeClick(this.TS),this.TS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this._b(),this.jx.onUpdate&&this.jx.onUpdate()):(this.jx.point1Time=i,this.jx.point1Price=s,this._b()))},this.sf=t=>{if(this.qx&&this.jx.point1Time)if(t.point){const i=Kn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.Mx={gt:i,Mt:s},this._b())}else this.Mx=null,this._b()},this._chart.subscribeClick(this.TS),this._chart.subscribeCrosshairMove(this.sf)}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new Zr(this)}drawToCanvas(t,i,s){const n=this.jx.point1Time,e=this.jx.point1Price,h=this.qx&&this.Mx?this.Mx.gt:this.jx.point2Time,r=this.qx&&this.Mx?this.Mx.Mt:this.jx.point2Price;if(!n||void 0===e||!h||void 0===r)return;const l=(Xn(this._chart,this._series,n)??0)*i,a=(this._series.priceToCoordinate(e)??0)*s,o=(Xn(this._chart,this._series,h)??0)*i,_=(this._series.priceToCoordinate(r)??0)*s,u=this.lx?this.jx.lineWidth+1:this.jx.lineWidth;if(this.Yx(t,l,a,o,_,"#2962FF",u*i),this.jx.levels)for(const n of this.jx.levels)this.Gx(t,l,a,o,_,n,i,s,undefined,u);!this.lx&&!this.ox||this.qx||this.isLocked()||(this.Cx(t,l,a,i,"#2962ff"),this.Cx(t,o,_,i,"#2962ff"))}Gx(t,i,s,n,e,h,r,l,a,o){const _=n,u=s+(e-s)*h.level;let c=_,d=u;if(this.jx.extendLines){const t=this._chart.chartElement().clientWidth*r,n=_-i,e=u-s,h=Math.sqrt(n*n+e*e);if(h>0){const r=2*t;c=i+n/h*r,d=s+e/h*r}}const f=a||h.color;this.Yx(t,i,s,c,d,f,o*r),this.jx.showLabels&&!this.qx&&this.Rx(t,_,u,h.label,r,f)}Yx(t,i,s,n,e,h,r){t.strokeStyle=h,t.lineWidth=r,t.beginPath(),t.moveTo(i,s),t.lineTo(n,e),t.stroke()}Cx(t,i,s,n,e){const h=5*n;t.fillStyle=e,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),t.strokeStyle="#ffffff",t.lineWidth=2*n,t.stroke()}Rx(t,i,s,n,e,h){const r=11*e,l=4*e;t.font=`${r}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const a=t.measureText(n).width,o=r;t.fillStyle=h,t.fillRect(i+l,s-o-l,a+2*l,o+2*l),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(n,i+2*l,s-o-l+l)}setColor(t){const i=this.jx.levels??[];for(const s of i)s.color=t;this._b()}color(){const t=this.jx.levels??[];return t.length>0?t[0].color:""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(!this.jx.point1Time||!this.jx.point2Time)return!1;const s=Xn(this._chart,this._series,this.jx.point1Time)??0,n=this._series.priceToCoordinate(this.jx.point1Price)??0,e=Xn(this._chart,this._series,this.jx.point2Time)??0,h=this._series.priceToCoordinate(this.jx.point2Price)??0;if(this.Tx(t,i,s,n,e,h)<=8)return!0;if(this.jx.levels)for(const r of this.jx.levels){const l=n+(h-n)*r.level,a=e;if(this.Tx(t,i,s,n,a,l)<=8)return!0}return!1}Tx(t,i,s,n,e,h){const r=e-s,l=h-n,a=r*r+l*l;if(0===a)return Math.sqrt((t-s)*(t-s)+(i-n)*(i-n));let o=((t-s)*r+(i-n)*l)/a;o=Math.max(0,Math.min(1,o));const _=s+o*r,u=n+o*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.jx.point1Time||!this.jx.point2Time)return null;const s=Xn(this._chart,this._series,this.jx.point1Time)??0,n=this._series.priceToCoordinate(this.jx.point1Price)??0,e=Xn(this._chart,this._series,this.jx.point2Time)??0,h=this._series.priceToCoordinate(this.jx.point2Price)??0;return Math.abs(t-s)<=10&&Math.abs(i-n)<=10?"point1":Math.abs(t-e)<=10&&Math.abs(i-h)<=10?"point2":null}startDrag(t){this._x=!0,this.ux=t}stopDrag(){this._x=!1,this.ux=null}updateDrag(t,i){this._x&&this.ux&&("point1"===this.ux?(this.jx.point1Time=t,this.jx.point1Price=i):"point2"===this.ux&&(this.jx.point2Time=t,this.jx.point2Price=i),this._b(),this.jx.onUpdate&&this.jx.onUpdate())}isVisible(){return this._visible}_serializeShape(){return{type:"fibFan",points:[mr(this.jx.point1Price??0,vr(this.jx.point1Time)),mr(this.jx.point2Price??0,vr(this.jx.point2Time))],style:{lineWidth:this.jx.lineWidth,showLabels:this.jx.showLabels,extendLines:this.jx.extendLines},extra:{levels:(this.jx.levels||[]).map(t=>({sn:t.level,R:t.color,Zl:t.label}))}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){if(this.TS&&(this._chart.unsubscribeClick(this.TS),this.TS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.jx.onRemove&&this.jx.onRemove()}}function tl(t,i){return new Qr(t,i)}class il{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class sl{constructor(t){this.nx=t,this.Jt=new il(t)}renderer(){return this.nx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class nl extends br{constructor(t,i){super(t,"rectangle",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.ux=null,this.vx=null,this.mx=null,this.wx=null,this.qx=!1,this.TS=null,this.sf=null,this.Mx=null,this.Kx={fillColor:"#2962ff",fillOpacity:.2,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!0,labelText:"",labelPosition:"top-left",interactive:!1,...i},this.ky(),!this.Kx.interactive||this.Kx.time1&&this.Kx.time2||this.yx()}yx(){this.qx=!0,this.TS=t=>{if(!t.point)return;if(xr(this._chart))return;const i=Kn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.Kx.time1?(this.Kx.time2=i,this.Kx.price2=s,this.qx=!1,this.Mx=null,this.TS&&(this._chart.unsubscribeClick(this.TS),this.TS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this._b(),this.Kx.onUpdate&&this.Kx.onUpdate()):(this.Kx.time1=i,this.Kx.price1=s,this._b()))},this.sf=t=>{if(this.qx&&this.Kx.time1)if(t.point){const i=Kn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.Mx={gt:i,Mt:s},this._b())}else this.Mx=null,this._b()},this._chart.subscribeClick(this.TS),this._chart.subscribeCrosshairMove(this.sf)}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new sl(this)}drawToCanvas(t,i,s){const n=this.Kx.time1,e=this.Kx.price1,h=this.qx&&this.Mx?this.Mx.gt:this.Kx.time2,r=this.qx&&this.Mx?this.Mx.Mt:this.Kx.price2;if(!n||void 0===e||!h||void 0===r)return;const l=(Xn(this._chart,this._series,n)??0)*i,a=(this._series.priceToCoordinate(e)??0)*s,o=(Xn(this._chart,this._series,h)??0)*i,_=(this._series.priceToCoordinate(r)??0)*s,u=Math.min(l,o),c=Math.max(l,o),d=Math.min(a,_),f=Math.max(a,_),p=c-u,v=f-d;if(this.Kx.fillOpacity>0){const i=this.Cy(this.Kx.fillColor,this.qx?.1:this.Kx.fillOpacity);t.fillStyle=i,t.fillRect(u,d,p,v)}const m=this.Kx.borderColor,w=this.lx?this.Kx.borderWidth+1:this.Kx.borderWidth;t.strokeStyle=m,t.lineWidth=w*i,"dashed"===this.Kx.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Kx.borderStyle&&t.setLineDash([2*i,3*i]),t.strokeRect(u,d,p,v),t.setLineDash([]),!this.lx&&!this.ox||this.qx||this.isLocked()||this.Xx(t,u,d,c,f,i,m),this.Kx.showLabel&&this.Kx.labelText&&!this.qx&&this.Rx(t,u,d,c,f,i,s,m)}Xx(t,i,s,n,e,h,r){const l=8*h,a=[{ut:i,ct:s},{ut:n,ct:s},{ut:i,ct:e},{ut:n,ct:e}];t.fillStyle=r,t.strokeStyle="#ffffff",t.lineWidth=2*h;for(const i of a)t.fillRect(i.ut-l/2,i.ct-l/2,l,l),t.strokeRect(i.ut-l/2,i.ct-l/2,l,l)}Rx(t,i,s,n,e,h,r,l){const a=6*h,o=12*h;t.font=`${o}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const _=t.measureText(this.Kx.labelText).width,u=o;let c=i+a,d=s+a;switch(this.Kx.labelPosition){case"top-right":c=n-_-2*a,d=s+a;break;case"bottom-left":c=i+a,d=e-u-2*a;break;case"bottom-right":c=n-_-2*a,d=e-u-2*a;break;case"center":c=(i+n)/2-_/2-a,d=(s+e)/2-u/2-a}t.fillStyle=l,t.fillRect(c,d,_+2*a,u+2*a),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.Kx.labelText,c+a,d+a)}Cy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setColor(t){this.Kx.borderColor=t,this.Kx.fillColor=t,this._b()}color(){return this.Kx.borderColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(!this.Kx.time1||!this.Kx.time2)return!1;const s=Xn(this._chart,this._series,this.Kx.time1)??0,n=this._series.priceToCoordinate(this.Kx.price1)??0,e=Xn(this._chart,this._series,this.Kx.time2)??0,h=this._series.priceToCoordinate(this.Kx.price2)??0,r=Math.min(s,e),l=Math.max(s,e),a=Math.min(n,h),o=Math.max(n,h);return t>=r&&t<=l&&i>=a&&i<=o}hitTestEndpoint(t,i){if(!this.Kx.time1||!this.Kx.time2)return null;const s=Xn(this._chart,this._series,this.Kx.time1)??0,n=this._series.priceToCoordinate(this.Kx.price1)??0,e=Xn(this._chart,this._series,this.Kx.time2)??0,h=this._series.priceToCoordinate(this.Kx.price2)??0,r=Math.min(s,e),l=Math.max(s,e),a=Math.min(n,h),o=Math.max(n,h),_=10;return Math.abs(t-r)<=_&&Math.abs(i-a)<=_?"corner1":Math.abs(t-l)<=_&&Math.abs(i-a)<=_?"corner2":Math.abs(t-r)<=_&&Math.abs(i-o)<=_?"corner3":Math.abs(t-l)<=_&&Math.abs(i-o)<=_?"corner4":t>=r&&t<=l&&i>=a&&i<=o?"body":null}startDrag(t,i){this._x=!0,this.ux=t,this.vx=i,"body"===t&&(this.mx={gt:this.Kx.time1,Mt:this.Kx.price1},this.wx={gt:this.Kx.time2,Mt:this.Kx.price2})}stopDrag(){this._x=!1,this.ux=null,this.vx=null,this.mx=null,this.wx=null}updateDrag(t,i){if(!this._x||!this.ux)return;const s=Xn(this._chart,this._series,this.Kx.time1)??0,n=this._series.priceToCoordinate(this.Kx.price1)??0,e=s<(Xn(this._chart,this._series,this.Kx.time2)??0),h=n<(this._series.priceToCoordinate(this.Kx.price2)??0);if("body"===this.ux&&this.mx&&this.wx){const s=fr(this.vx,t,i);this.Kx.time1=this.mx.gt+s.gt,this.Kx.price1=this.mx.Mt+s.Mt,this.Kx.time2=this.wx.gt+s.gt,this.Kx.price2=this.wx.Mt+s.Mt}else switch(this.ux){case"corner1":e&&h?(this.Kx.time1=t,this.Kx.price1=i):!e&&h?(this.Kx.time2=t,this.Kx.price1=i):e&&!h?(this.Kx.time1=t,this.Kx.price2=i):(this.Kx.time2=t,this.Kx.price2=i);break;case"corner2":e&&h?(this.Kx.time2=t,this.Kx.price1=i):!e&&h?(this.Kx.time1=t,this.Kx.price1=i):e&&!h?(this.Kx.time2=t,this.Kx.price2=i):(this.Kx.time1=t,this.Kx.price2=i);break;case"corner3":e&&h?(this.Kx.time1=t,this.Kx.price2=i):!e&&h?(this.Kx.time2=t,this.Kx.price2=i):e&&!h?(this.Kx.time1=t,this.Kx.price1=i):(this.Kx.time2=t,this.Kx.price1=i);break;case"corner4":e&&h?(this.Kx.time2=t,this.Kx.price2=i):!e&&h?(this.Kx.time1=t,this.Kx.price2=i):e&&!h?(this.Kx.time2=t,this.Kx.price1=i):(this.Kx.time1=t,this.Kx.price1=i)}this._b(),this.Kx.onUpdate&&this.Kx.onUpdate()}isVisible(){return this._visible}_serializeShape(){return{type:"rectangle",points:[mr(this.Kx.price1??0,vr(this.Kx.time1)),mr(this.Kx.price2??0,vr(this.Kx.time2))],style:{fillColor:this.Kx.fillColor,fillOpacity:this.Kx.fillOpacity,borderColor:this.Kx.borderColor,borderWidth:this.Kx.borderWidth,borderStyle:this.Kx.borderStyle,showLabel:this.Kx.showLabel,labelText:this.Kx.labelText,labelPosition:this.Kx.labelPosition}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){if(this.TS&&(this._chart.unsubscribeClick(this.TS),this.TS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Kx.onRemove&&this.Kx.onRemove()}}function el(t,i){return new nl(t,i)}class hl{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class rl{constructor(t){this.nx=t,this.Jt=new hl(t)}renderer(){return this.nx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class ll extends br{constructor(t,i){super(t,"circle",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.ux=null,this.vx=null,this.Zx=null,this.qx=!1,this.TS=null,this.sf=null,this.Mx=null,this.Jx={fillColor:"#2962ff",fillOpacity:.1,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!1,labelText:"",interactive:!1,...i},this.ky(),this.Jx.interactive&&!this.Jx.centerTime&&this.yx()}yx(){this.qx=!0,this.TS=t=>{if(!t.point)return;if(xr(this._chart))return;const i=Kn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);if(null!==s)if(this.Jx.centerTime){const t=this._chart.timeScale().timeToCoordinate(this.Jx.centerTime)??0,n=this._series.priceToCoordinate(this.Jx.centerPrice)??0,e=Xn(this._chart,this._series,i)??0,h=this._series.priceToCoordinate(s)??0;this.Jx.radiusTime=Math.abs(e-t),this.Jx.radiusPrice=Math.abs(h-n),this.qx=!1,this.Mx=null,this.TS&&(this._chart.unsubscribeClick(this.TS),this.TS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this._b(),this.Jx.onUpdate&&this.Jx.onUpdate()}else this.Jx.centerTime=i,this.Jx.centerPrice=s,this._b()},this.sf=t=>{if(this.qx&&this.Jx.centerTime)if(t.point){const i=Kn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.Mx={gt:i,Mt:s},this._b())}else this.Mx=null,this._b()},this._chart.subscribeClick(this.TS),this._chart.subscribeCrosshairMove(this.sf)}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new rl(this)}drawToCanvas(t,i,s){if(!this.Jx.centerTime||void 0===this.Jx.centerPrice)return;const n=(Xn(this._chart,this._series,this.Jx.centerTime)??0)*i,e=(this._series.priceToCoordinate(this.Jx.centerPrice)??0)*s;let h,r;if(this.qx&&this.Mx){const t=(Xn(this._chart,this._series,this.Mx.gt)??0)*i,l=(this._series.priceToCoordinate(this.Mx.Mt)??0)*s;h=Math.abs(t-n),r=Math.abs(l-e)}else{if(void 0===this.Jx.radiusTime||void 0===this.Jx.radiusPrice)return;h=this.Jx.radiusTime*i,r=this.Jx.radiusPrice*s}if(this.Jx.fillOpacity>0){const i=this.Cy(this.Jx.fillColor,this.qx?.05:this.Jx.fillOpacity);t.fillStyle=i,t.beginPath(),t.ellipse(n,e,h,r,0,0,2*Math.PI),t.fill()}const l=this.Jx.borderColor,a=this.lx?this.Jx.borderWidth+1:this.Jx.borderWidth;t.strokeStyle=l,t.lineWidth=a*i,"dashed"===this.Jx.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Jx.borderStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.ellipse(n,e,h,r,0,0,2*Math.PI),t.stroke(),t.setLineDash([]),!this.lx&&!this.ox||this.qx||this.isLocked()||this.Qx(t,n,e,i,l),!this.lx&&!this.ox||this.qx||this.isLocked()||this.tP(t,n,e,h,r,i,l),this.Jx.showLabel&&this.Jx.labelText&&!this.qx&&this.Rx(t,n,e,i,l)}Qx(t,i,s,n,e){const h=8*n;t.fillStyle=e,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.beginPath(),t.arc(i,s,h/2,0,2*Math.PI),t.fill(),t.stroke()}tP(t,i,s,n,e,h,r){const l=8*h,a=[{ut:i,ct:s-e},{ut:i+n,ct:s},{ut:i,ct:s+e},{ut:i-n,ct:s}];t.fillStyle=r,t.strokeStyle="#ffffff",t.lineWidth=2*h;for(const i of a)t.fillRect(i.ut-l/2,i.ct-l/2,l,l),t.strokeRect(i.ut-l/2,i.ct-l/2,l,l)}Rx(t,i,s,n,e){const h=6*n,r=12*n;t.font=`${r}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(this.Jx.labelText).width,a=r,o=i-l/2-h,_=s-a/2-h;t.fillStyle=e,t.fillRect(o,_,l+2*h,a+2*h),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.Jx.labelText,o+h,_+h)}Cy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setColor(t){this.Jx.borderColor=t,this.Jx.fillColor=t,this._b()}color(){return this.Jx.borderColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(!this.Jx.centerTime||void 0===this.Jx.radiusTime)return!1;const s=Xn(this._chart,this._series,this.Jx.centerTime)??0,n=this._series.priceToCoordinate(this.Jx.centerPrice)??0,e=(t-s)/this.Jx.radiusTime,h=(i-n)/this.Jx.radiusPrice;return e*e+h*h<=1}hitTestEndpoint(t,i){if(!this.Jx.centerTime||void 0===this.Jx.radiusTime)return null;const s=Xn(this._chart,this._series,this.Jx.centerTime)??0,n=this._series.priceToCoordinate(this.Jx.centerPrice)??0,e=this.Jx.radiusTime,h=this.Jx.radiusPrice;if(Math.abs(t-s)<=10&&Math.abs(i-n)<=10)return"center";const r=[{ut:s,ct:n-h},{ut:s+e,ct:n},{ut:s,ct:n+h},{ut:s-e,ct:n}];for(const s of r)if(Math.abs(t-s.ut)<=10&&Math.abs(i-s.ct)<=10)return"edge";return null}startDrag(t,i){this._x=!0,this.ux=t,this.vx=i,this.Zx="center"===t?{gt:this.Jx.centerTime,Mt:this.Jx.centerPrice}:null}stopDrag(){this._x=!1,this.ux=null,this.vx=null,this.Zx=null}updateDrag(t,i){if(this._x&&this.ux){if("center"===this.ux&&this.Zx){const s=fr(this.vx,t,i);this.Jx.centerTime=this.Zx.gt+s.gt,this.Jx.centerPrice=this.Zx.Mt+s.Mt}else if("edge"===this.ux){const s=Xn(this._chart,this._series,this.Jx.centerTime)??0,n=this._series.priceToCoordinate(this.Jx.centerPrice)??0,e=Xn(this._chart,this._series,t)??0,h=this._series.priceToCoordinate(i)??0;this.Jx.radiusTime=Math.abs(e-s),this.Jx.radiusPrice=Math.abs(h-n)}this._b(),this.Jx.onUpdate&&this.Jx.onUpdate()}}isVisible(){return this._visible}_serializeShape(){return{type:"circle",points:[mr(this.Jx.centerPrice??0,vr(this.Jx.centerTime))],style:{fillColor:this.Jx.fillColor,fillOpacity:this.Jx.fillOpacity,borderColor:this.Jx.borderColor,borderWidth:this.Jx.borderWidth,borderStyle:this.Jx.borderStyle,showLabel:this.Jx.showLabel,labelText:this.Jx.labelText},extra:{radiusTime:this.Jx.radiusTime,radiusPrice:this.Jx.radiusPrice}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){if(this.TS&&(this._chart.unsubscribeClick(this.TS),this.TS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Jx.onRemove&&this.Jx.onRemove()}}function al(t,i){return new ll(t,i)}class ol{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class _l{constructor(t){this.nx=t,this.Jt=new ol(t)}renderer(){return this.nx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class ul extends br{constructor(t,i){super(t,"arrow",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.iP=-1,this.qx=!1,this.TS=null,this.sP=null,this.sf=null,this.Mx=null,this.nP={points:[],lineColor:"#2962ff",lineWidth:2,showArrowHead:!0,showCircles:!0,circleRadius:4,interactive:!1,...i},this.ky(),!this.nP.interactive||this.nP.points&&0!==this.nP.points.length||this.yx()}yx(){this.qx=!0,this.TS=t=>{if(!t.point)return;if(xr(this._chart))return;const i=Kn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.nP.points||(this.nP.points=[]),this.nP.points.push({time:i,price:s}),this._b(),this.nP.onUpdate&&this.nP.onUpdate())},this.sf=t=>{if(this.qx)if(t.point){const i=Kn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.Mx={gt:i,Mt:s},this._b())}else this.Mx=null,this._b()},this.sP=t=>{this.qx&&(t.preventDefault(),t.stopPropagation(),this.finishDrawing())},this._chart.subscribeClick(this.TS),this._chart.subscribeCrosshairMove(this.sf);const t=this._chart.chartElement?.();t&&t.addEventListener("contextmenu",this.sP)}finishDrawing(){if(this.TS&&(this._chart.unsubscribeClick(this.TS),this.TS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.sP){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.sP),this.sP=null}this.qx=!1,this.Mx=null,this._b(),this.nP.onComplete&&this.nP.onComplete()}isDrawing(){return this.qx}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new _l(this)}drawToCanvas(t,i,s){if(!this.nP.points||0===this.nP.points.length)return;const n=this.nP.lineColor,e=this.lx||this.ox&&!this.isLocked()?this.nP.lineWidth+1:this.nP.lineWidth,h=[];for(const t of this.nP.points)try{let n=Xn(this._chart,this._series,t.time);if(null===n){const i=this._chart.timeScale(),s=i.timeToIndex(t.time,!0);null!=s&&(n=i.logicalToCoordinate(s))}if(null==n)continue;const e=this._series.priceToCoordinate(t.price);if(null===e)continue;h.push({ut:n*i,ct:e*s})}catch{continue}if(0===h.length&&!this.qx)return;let r=null;if(this.qx&&this.Mx&&this.nP.points.length>0){r={ut:(Xn(this._chart,this._series,this.Mx.gt)??0)*i,ct:(this._series.priceToCoordinate(this.Mx.Mt)??0)*s}}if(h.length>1){t.strokeStyle=n,t.lineWidth=e*i,t.beginPath(),t.moveTo(h[0].ut,h[0].ct);for(let i=1;i<h.length;i++)t.lineTo(h[i].ut,h[i].ct);t.stroke()}if(r&&h.length>0){const s=h[h.length-1];t.strokeStyle=n,t.lineWidth=e*i,t.globalAlpha=.5,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(s.ut,s.ct),t.lineTo(r.ut,r.ct),t.stroke(),t.setLineDash([]),t.globalAlpha=1}if(this.nP.showArrowHead&&h.length>1&&this.eP(t,h[h.length-2],h[h.length-1],i,n),this.nP.showCircles)for(let s=0;s<h.length;s++)this.hP(t,h[s].ut,h[s].ct,i,n,0===s)}eP(t,i,s,n,e){const h=12*n,r=Math.atan2(s.ct-i.ct,s.ut-i.ut),l={ut:s.ut-h*Math.cos(r-Math.PI/6),ct:s.ct-h*Math.sin(r-Math.PI/6)},a={ut:s.ut-h*Math.cos(r+Math.PI/6),ct:s.ct-h*Math.sin(r+Math.PI/6)};t.fillStyle=e,t.beginPath(),t.moveTo(s.ut,s.ct),t.lineTo(l.ut,l.ct),t.lineTo(a.ut,a.ct),t.closePath(),t.fill()}hP(t,i,s,n,e,h){const r=this.nP.circleRadius*n;t.beginPath(),t.arc(i,s,r,0,2*Math.PI),h?(t.fillStyle=e,t.fill()):(t.strokeStyle=e,t.lineWidth=2*n,t.stroke(),t.fillStyle="#ffffff",t.fill(),t.strokeStyle=e,t.stroke())}setColor(t){this.nP.lineColor=t,this._b()}color(){return this.nP.lineColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(!this.nP.points||0===this.nP.points.length)return!1;for(let s=0;s<this.nP.points.length-1;s++)try{const n=this.nP.points[s],e=this.nP.points[s+1];let h=Xn(this._chart,this._series,n.time);if(null===h){const t=this._chart.timeScale(),i=t.timeToIndex(n.time,!0);null!=i&&(h=t.logicalToCoordinate(i))}let r=Xn(this._chart,this._series,e.time);if(null===r){const t=this._chart.timeScale(),i=t.timeToIndex(e.time,!0);null!=i&&(r=t.logicalToCoordinate(i))}const l=this._series.priceToCoordinate(n.price),a=this._series.priceToCoordinate(e.price);if(null==h||null===l||null==r||null===a)continue;if(this.Tx(t,i,h,l,r,a)<=8)return!0}catch{continue}for(const s of this.nP.points)try{let n=Xn(this._chart,this._series,s.time);if(null===n){const t=this._chart.timeScale(),i=t.timeToIndex(s.time,!0);null!=i&&(n=t.logicalToCoordinate(i))}const e=this._series.priceToCoordinate(s.price);if(null==n||null===e)continue;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-e,2))<=8)return!0}catch{continue}return!1}Tx(t,i,s,n,e,h){const r=e-s,l=h-n,a=r*r+l*l;if(0===a)return Math.sqrt((t-s)*(t-s)+(i-n)*(i-n));let o=((t-s)*r+(i-n)*l)/a;o=Math.max(0,Math.min(1,o));const _=s+o*r,u=n+o*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.nP.points||0===this.nP.points.length)return null;for(let s=0;s<this.nP.points.length;s++)try{const n=this.nP.points[s];let e=Xn(this._chart,this._series,n.time);if(null===e){const t=this._chart.timeScale(),i=t.timeToIndex(n.time,!0);null!=i&&(e=t.logicalToCoordinate(i))}const h=this._series.priceToCoordinate(n.price);if(null==e||null===h)continue;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-h,2))<=10)return s}catch{continue}return null}startDrag(t){this._x=!0,this.iP=t}stopDrag(){this._x=!1,this.iP=-1}updateDrag(t,i){this._x&&-1!==this.iP&&this.nP.points&&this.iP>=0&&this.iP<this.nP.points.length&&(this.nP.points[this.iP]={time:t,price:i},this._b(),this.nP.onUpdate&&this.nP.onUpdate())}getPoints(){return this.nP.points||[]}addPoint(t){this.nP.points||(this.nP.points=[]),this.nP.points.push(t),this._b()}isVisible(){return this._visible}_serializeShape(){return{type:"arrow",points:(this.nP.points||[]).map(t=>wr(t)),style:{lineColor:this.nP.lineColor,lineWidth:this.nP.lineWidth,showArrowHead:this.nP.showArrowHead,showCircles:this.nP.showCircles,circleRadius:this.nP.circleRadius}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){if(this.TS&&(this._chart.unsubscribeClick(this.TS),this.TS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.sP){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.sP),this.sP=null}if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.nP.onRemove&&this.nP.onRemove()}}function cl(t,i){return new ul(t,i)}class dl{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class fl{constructor(t){this.nx=t,this.Jt=new dl(t)}renderer(){return this.nx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class pl extends br{constructor(t,i){super(t,"brush",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this.rP=!1,this.qx=!1,this.lP=[],this.aP=!1,this.kp=null,this.Zy=null,this.nS=null,this.hS=null,this.lS=null,this.oP=void 0,this.iS=null,this._x=!1,this.vx=null,this._P=null,this.uP={points:[],color:"#2962ff",lineWidth:2,smoothing:!0,sampleDistance:4,...i},this.ky(),0===(this.uP.points??[]).length&&this.startDrawingMode()}startDrawingMode(){if(this.rP)return;const t=this._chart.chartElement();t&&(this.kp=t,this.rP=!0,this.nS=t=>this.eS(t),this.hS=t=>this.rS(t),this.lS=()=>this.aS(),this.iS=t=>{this.oP=t.hoveredObjectId},this._chart.subscribeCrosshairMove(this.iS),t.addEventListener("pointerdown",this.nS,!0),t.addEventListener("pointermove",this.hS,!0),t.addEventListener("pointerup",this.lS,!0),t.addEventListener("pointercancel",this.lS,!0))}stopDrawingMode(){if(!this.rP)return;this.cP(),this.rP=!1;const t=this.kp;t&&(this.nS&&t.removeEventListener("pointerdown",this.nS,!0),this.hS&&t.removeEventListener("pointermove",this.hS,!0),this.lS&&(t.removeEventListener("pointerup",this.lS,!0),t.removeEventListener("pointercancel",this.lS,!0))),this.iS&&(this._chart.unsubscribeCrosshairMove(this.iS),this.iS=null),this.nS=null,this.hS=null,this.lS=null,this.kp=null}isDrawingModeActive(){return this.rP}eS(t){if(this.dP())return;const i=this.fP(t);null!==i&&(this.qx=!0,this.lP=[i],this.Zy=t.pointerId,Sr(this._chart,!0),this.kp?.setPointerCapture(t.pointerId),t.preventDefault(),t.stopPropagation(),this.pP())}rS(t){if(!this.qx)return;const i=this.fP(t);if(null===i)return;const s=this.lP[this.lP.length-1];Math.hypot(i.ut-s.ut,i.ct-s.ct)<(this.uP.sampleDistance??4)||(this.lP.push(i),t.preventDefault(),t.stopPropagation(),this.pP())}aS(){this.qx&&this.cP()}cP(){if(!this.qx)return;this.qx=!1,this.gS();const t=[];for(const i of this.lP){const s=Kn(this._chart,this._series,i.ut),n=this._series.coordinateToPrice(i.ct);null!==s&&null!==n&&t.push({time:s,price:n})}this.lP=[],t.length<2?this._b():(this.uP.points=t,this.stopDrawingMode(),this._b(),this.uP.onUpdate&&this.uP.onUpdate(),this.uP.onComplete&&this.uP.onComplete())}dP(){const t=this.oP;return"string"==typeof t&&t.split("#")[0]!==this.id}gS(){null!==this.Zy&&(this.kp&&this.kp.hasPointerCapture(this.Zy)&&this.kp.releasePointerCapture(this.Zy),this.Zy=null)}fP(t){const i=this.vP();if(null===i)return null;const s=i.getBoundingClientRect();return{ut:t.clientX-s.left,ct:t.clientY-s.top}}vP(){try{return this._series.getPane().getHTMLElement()}catch(t){return null}}pP(){this.aP||(this.aP=!0,requestAnimationFrame(()=>{this.aP=!1,this._b()}))}drawToCanvas(t,i,s){const n=this.qx?this.lP.map(t=>({ut:t.ut*i,ct:t.ct*s})):this.mP(i,s);if(0===n.length)return;const e=this.lx;if(t.strokeStyle=this.uP.color,t.lineWidth=(this.uP.lineWidth+(e?1:0))*i,t.lineCap="round",t.lineJoin="round",t.beginPath(),t.moveTo(n[0].ut,n[0].ct),this.uP.smoothing&&n.length>2){for(let i=1;i<n.length-1;i++){const s=(n[i].ut+n[i+1].ut)/2,e=(n[i].ct+n[i+1].ct)/2;t.quadraticCurveTo(n[i].ut,n[i].ct,s,e)}t.lineTo(n[n.length-1].ut,n[n.length-1].ct)}else for(let i=1;i<n.length;i++)t.lineTo(n[i].ut,n[i].ct);t.stroke(),!e&&!this.ox||this.isLocked()||(this.Cx(t,n[0],i),this.Cx(t,n[n.length-1],i))}Cx(t,i,s){t.fillStyle=this.uP.color,t.strokeStyle="#ffffff",t.lineWidth=2*s,t.beginPath(),t.arc(i.ut,i.ct,5*s,0,2*Math.PI),t.fill(),t.stroke()}mP(t,i){const s=this.uP.points??[],n=[];for(const e of s){const s=Xn(this._chart,this._series,e.time),h=this._series.priceToCoordinate(e.price);null!==s&&null!==h&&n.push({ut:s*t,ct:h*i})}return n}hitTest(t,i){const s=this.mP(1,1);for(let n=1;n<s.length;n++)if(vl(t,i,s[n-1],s[n])<=8)return!0;return!1}hitTestEndpoint(t,i){return this.hitTest(t,i)?"stroke":null}startDrag(t,i){this._x=!0,this.vx=i,this._P=(this.uP.points??[]).map(t=>({time:t.time,price:t.price}))}updateDrag(t,i){const s=this._P;if(!this._x||null===s||!this.uP.points)return;const n=fr(this.vx,t,i);this.uP.points.forEach((t,i)=>{const e=s[i];e&&(t.time=e.time+n.gt,t.price=e.price+n.Mt)}),this._b(),this.uP.onUpdate&&this.uP.onUpdate()}stopDrag(){this._x=!1,this.vx=null,this._P=null}setColor(t){this.uP.color=t,this._b()}color(){return this.uP.color??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}ky(){this.nr=new fl(this);const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):null}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){this.stopDrawingMode(),this.HM&&(this._series.detachPrimitive(this.HM),this.HM=null),this.nr=null,this.uP.onRemove&&this.uP.onRemove()}_serializeShape(){return{type:"brush",points:(this.uP.points??[]).map(wr),style:{color:this.uP.color,lineWidth:this.uP.lineWidth,smoothing:this.uP.smoothing}}}getPoints(){return this.uP.points??[]}}function vl(t,i,s,n){const e=n.ut-s.ut,h=n.ct-s.ct,r=e*e+h*h;if(0===r)return Math.hypot(t-s.ut,i-s.ct);let l=((t-s.ut)*e+(i-s.ct)*h)/r;return l=Math.max(0,Math.min(1,l)),Math.hypot(t-(s.ut+l*e),i-(s.ct+l*h))}function ml(t,i={}){return new pl(t,i)}class wl{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class gl{constructor(t){this.nx=t,this.Jt=new wl(t)}renderer(){return this.nx.isComplete()?this.Jt:null}}class Ml extends br{constructor(t,i){super(t,"text-tool",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.ux=null,this.vx=null,this.Zx=null,this.wP=!1,this.gP=null,this.MP={text:"Double-click to edit",fontSize:14,fontFamily:"Arial, sans-serif",textColor:"#FFFFFF",backgroundColor:"#2962FF",backgroundOpacity:.8,padding:8,borderColor:"#2962FF",borderWidth:1,textAlign:"left",maxWidth:200,...i},this.ky(),this.bP()}bP(){this.gP=this._chart.subscribeClick(t=>{if(!this.wP)return;const i=t.point?.x||0,s=t.point?.y||0;this.hitTest(i,s)||(this.setEditing(!1),this.MP.text&&""!==this.MP.text.trim()&&"Type here..."!==this.MP.text||this.remove())})}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new gl(this)}getTime(){return this.MP.time}getPrice(){return this.MP.price}getText(){return this.MP.text||""}getOptions(){return this.MP}setPosition(t,i){this.MP.time=t,this.MP.price=i,this._update()}setText(t){this.MP.text=t,this._update(),this.MP.onTextChange&&this.MP.onTextChange(t)}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}isComplete(){return!(!this.MP.time||void 0===this.MP.price)}setColor(t){this.MP.textColor=t,this.MP.borderColor=t,this._b()}color(){return this.MP.textColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._update())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._update())}isHovered(){return this.ox}setEditing(t){this.wP!==t&&(this.wP=t,this._update())}isEditing(){return this.wP}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(!this.isComplete())return!1;const s=this.MP.time,n=this.MP.price,e=Xn(this._chart,this._series,s)??0,h=this._series.priceToCoordinate(n)??0,r=this.MP.fontSize||14,l=this.MP.padding||8,a=this.MP.text||"",o=.6*r,_=Math.min(a.length*o,this.MP.maxWidth||200);return t>=e&&t<=e+_+2*l&&i>=h&&i<=h+(r+2*l)}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.MP.time,n=this.MP.price,e=Xn(this._chart,this._series,s)??0,h=this._series.priceToCoordinate(n)??0;return Math.sqrt(Math.pow(t-e,2)+Math.pow(i-h,2))<=10?"anchor":null}startDrag(t,i){this._x=!0,this.ux=t,this.vx=i,this.Zx={gt:this.MP.time,Mt:this.MP.price}}stopDrag(){this._x=!1,this.ux=null,this.vx=null,this.Zx=null}updateDrag(t,i){if(this._x){if("body"===this.ux&&this.Zx){const s=fr(this.vx,t,i);this.setPosition(this.Zx.gt+s.gt,this.Zx.Mt+s.Mt)}else this.setPosition(t,i);this.MP.onUpdate&&this.MP.onUpdate()}}drawToCanvas(t,i,s){if(!this.isComplete())return;const n=this.MP.time,e=this.MP.price,h=this.MP.text||"",r=(Xn(this._chart,this._series,n)??0)*i,l=(this._series.priceToCoordinate(e)??0)*s,a=(this.MP.fontSize||14)*i,o=(this.MP.padding||8)*i,_=(this.MP.maxWidth||200)*i;t.font=`${a}px ${this.MP.fontFamily||"Arial"}`,t.textBaseline="top";const u=h.split(" "),c=[];let d="";for(const i of u){const s=d?`${d} ${i}`:i;t.measureText(s).width>_&&d?(c.push(d),d=i):d=s}d&&c.push(d);let f=0;for(const i of c){const s=t.measureText(i);f=Math.max(f,s.width)}const p=f+2*o,v=1.2*a,m=c.length*v+2*o,w=this.MP.backgroundOpacity||.8,g=this.MP.backgroundColor||"#2962FF";t.fillStyle=this.Cy(g,w),t.fillRect(r,l,p,m),(this.lx||this.ox)&&(t.strokeStyle=this.MP.borderColor??"#FFFFFF",t.lineWidth=(this.MP.borderWidth||1)*i*(this.lx?2:1),t.strokeRect(r,l,p,m)),t.fillStyle=this.MP.textColor||"#FFFFFF";for(let i=0;i<c.length;i++){const s=c[i];let n=r+o;if("center"===this.MP.textAlign){n=r+(p-t.measureText(s).width)/2}else if("right"===this.MP.textAlign){n=r+p-t.measureText(s).width-o}const e=l+o+i*v;t.fillText(s,n,e)}if((this.lx||this.ox)&&!this.isLocked()){const s=4*i;t.fillStyle=this.MP.textColor??"#2962ff",t.beginPath(),t.arc(r,l,s,0,2*Math.PI),t.fill(),t.fillStyle="#FFFFFF",t.beginPath(),t.arc(r,l,s-2*i,0,2*Math.PI),t.fill()}}Cy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}_serializeShape(){return{type:"text",points:[mr(this.MP.price??0,vr(this.MP.time))],style:{fontSize:this.MP.fontSize,fontFamily:this.MP.fontFamily,textColor:this.MP.textColor,backgroundColor:this.MP.backgroundColor,backgroundOpacity:this.MP.backgroundOpacity,padding:this.MP.padding,borderColor:this.MP.borderColor,borderWidth:this.MP.borderWidth,textAlign:this.MP.textAlign,maxWidth:this.MP.maxWidth},extra:{text:this.MP.text}}}remove(){if(this.gP&&(this._chart.unsubscribeClick(this.gP),this.gP=null),this.HM&&this._series){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.MP.onRemove&&this.MP.onRemove()}}function bl(t,i){return new Ml(t,i)}class yl{constructor(t){this.yP=t}calculatePips(t,i){return Math.abs(i-t)/this.yP.pipValue}calculatePercent(t,i){return(i-t)/t*100}calculateRiskReward(t,i,s){const n=Math.abs(t-i),e=Math.abs(s-t);return 0===n?0:e/n}calculateMetrics(t,i,s,n){const e={entryPrice:t,stopLoss:i,takeProfit:s,quantity:n,stopLossPips:this.calculatePips(t,i),takeProfitPips:this.calculatePips(t,s),stopLossPercent:this.calculatePercent(t,i),takeProfitPercent:this.calculatePercent(t,s),riskRewardRatio:this.calculateRiskReward(t,i,s)};if(void 0!==n){const h=Math.abs(t-i),r=Math.abs(s-t);e.stopLossAmount=h*n,e.takeProfitAmount=r*n}return e}formatPips(t,i=1){return`${t>=0?"+":""}${t.toFixed(i)} pips`}formatPercent(t,i=2){return`${t>=0?"+":""}${t.toFixed(i)}%`}formatRiskReward(t,i=2){return`1:${t.toFixed(i)}`}updatePipConfig(t){this.yP={...this.yP,...t}}getPipConfig(){return{...this.yP}}}function Sl(t){const i=t.toString().split("."),s=i.length>1?i[1].length:0;let n;return n=s>=5?1e-5:4===s?1e-4:3===s?.001:2===s?.01:1===s?.1:1,{pipValue:n,decimals:s}}function xl(t,i){return"number"==typeof t?Sl(t):void 0!==i?Sl(i):{pipValue:.1,decimals:1}}class Pl{constructor(t){this.yP=t}calculateMetrics(t,i,s,n,e){const h=n-i;return{point1:{time:t,price:i},point2:{time:s,price:n},priceDifference:h,pricePercent:h/i*100,pips:Math.abs(h)/this.yP.pipValue,timeDifference:this.SP(t,s),barCount:e}}SP(t,i){return"number"==typeof t&&"number"==typeof i?Math.abs(i-t):0}formatPriceDifference(t,i=5){return`${t>=0?"+":""}${t.toFixed(i)}`}formatPips(t,i=1){return`${t.toFixed(i)} pips`}formatPercent(t,i=2){return`${t>=0?"+":""}${t.toFixed(i)}%`}formatTimeDifference(t){if(0===t)return"N/A";const i=Math.floor(t/86400),s=Math.floor(t%86400/3600),n=Math.floor(t%3600/60);return i>0?`${i}d ${s}h`:s>0?`${s}h ${n}m`:n>0?`${n}m`:`${t}s`}formatBarCount(t){return`${t} ${1===t?"bar":"bars"}`}updatePipConfig(t){this.yP={...this.yP,...t}}getPipConfig(){return{...this.yP}}}class Cl{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Tl{constructor(t){this.nx=t,this.Jt=new Cl(t)}renderer(){return this.nx.isVisible()?this.Jt:null}}class kl extends br{constructor(t,i){super(t,"ruler-tool",i),this.HM=null,this.hx=null,this.qM=null,this.nr=null,this.Ix=null,this.gx=!1,this.lx=!1,this.ox=!1,this.Mx=null,this._x=!1,this.Fx=null,this.sf=null,this.xP={lineColor:"#2962ff",lineWidth:2,showLabel:!0,labelBackgroundColor:"#2962ff",labelTextColor:"#ffffff",selectionColor:"#2962ff",selectionLineWidth:3,symbol:"DEFAULT",...i};const s=this.xP.pipConfig||xl(this.xP.symbol||"DEFAULT");this.zx=new Pl(s),this.ky(),this.xP.interactive?this.yx():this.xP.point1Time&&this.xP.point2Time&&(this.gx=!0,this.Ox())}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new Tl(this)}yx(){this.Ix=new Cr(this._chart,this._series,{QS:t=>{this.xP.point1Time=t.gt,this.xP.point1Price=t.Mt,this._b()},tx:t=>{this.xP.point2Time=t.gt,this.xP.point2Price=t.Mt},ix:(t,i)=>{this.xP.point1Time=t.gt,this.xP.point1Price=t.Mt,this.xP.point2Time=i.gt,this.xP.point2Price=i.Mt,this.gx=!0,this.Mx=null,this.Ox(),this.$x(),this._b()},sx:t=>{this.Mx=t,this._b()}}),this.Ix.HS()}drawToCanvas(t,i,s){if(!this.gx&&this.xP.point1Time&&this.Mx)return void this.Px(t,i,s);if(!this.gx||!this.xP.point1Time||!this.xP.point2Time)return;const n=(Xn(this._chart,this._series,this.xP.point1Time)??0)*i,e=(this._series.priceToCoordinate(this.xP.point1Price)??0)*s,h=(Xn(this._chart,this._series,this.xP.point2Time)??0)*i,r=(this._series.priceToCoordinate(this.xP.point2Price)??0)*s;(this.lx||this.ox&&!this.isLocked())&&(t.strokeStyle=this.xP.selectionColor,t.lineWidth=this.xP.selectionLineWidth*i,t.beginPath(),t.moveTo(n,e),t.lineTo(h,r),t.stroke()),t.strokeStyle=this.xP.lineColor,t.lineWidth=this.xP.lineWidth*i,t.beginPath(),t.moveTo(n,e),t.lineTo(h,r),t.stroke(),this.Cx(t,n,e,i),this.Cx(t,h,r,i),this.xP.showLabel&&this.qM&&this.Rx(t,n,e,h,r,i,s)}Cx(t,i,s,n){const e=this.lx?this.xP.selectionColor:this.xP.lineColor,h=this.lx?5*n:4*n;t.fillStyle=e,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),this.lx&&(t.strokeStyle="#ffffff",t.lineWidth=2*n,t.stroke())}Px(t,i,s){if(!this.xP.point1Time||!this.Mx)return;const n=(Xn(this._chart,this._series,this.xP.point1Time)??0)*i,e=(this._series.priceToCoordinate(this.xP.point1Price)??0)*s,h=(Xn(this._chart,this._series,this.Mx.gt)??0)*i,r=(this._series.priceToCoordinate(this.Mx.Mt)??0)*s;t.strokeStyle=this.xP.lineColor,t.lineWidth=this.xP.lineWidth*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,e),t.lineTo(h,r),t.stroke(),t.setLineDash([]),this.Cx(t,n,e,i),t.globalAlpha=.5,this.Cx(t,h,r,i),t.globalAlpha=1}Rx(t,i,s,n,e,h,r){if(!this.qM)return;const l=(i+n)/2,a=(s+e)/2,o=`${this.zx.formatPips(this.qM.pips)} | ${this.zx.formatPercent(this.qM.pricePercent)} | ${this.zx.formatBarCount(this.qM.barCount)}`;t.font=12*h+"px sans-serif";const _=6*h,u=t.measureText(o).width+2*_,c=12*h+2*_;t.fillStyle=this.xP.labelBackgroundColor,t.fillRect(l-u/2,a-c/2,u,c),t.fillStyle=this.xP.labelTextColor,t.textAlign="center",t.textBaseline="middle",t.fillText(o,l,a)}Ox(){if(!this.xP.point1Time||!this.xP.point2Time||void 0===this.xP.point1Price||void 0===this.xP.point2Price)return;const t=this.PP();this.qM=this.zx.calculateMetrics(this.xP.point1Time,this.xP.point1Price,this.xP.point2Time,this.xP.point2Price,t),this.xP.onUpdate&&this.qM&&this.xP.onUpdate(this.qM)}PP(){if(!this.xP.point1Time||!this.xP.point2Time)return 0;const t=Xn(this._chart,this._series,this.xP.point1Time),i=Xn(this._chart,this._series,this.xP.point2Time);if(null===t||null===i)return 0;return Math.abs(Math.round((i-t)/6))}updatePoints(t,i,s,n){this.xP.point1Time=t,this.xP.point1Price=i,this.xP.point2Time=s,this.xP.point2Price=n,this.Ox(),this._b()}getMetrics(){return this.qM}remove(){this.destroy()}destroy(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Ix&&(this.Ix.m(),this.Ix=null),this.Nx(),this.xP.onRemove&&this.xP.onRemove()}$x(){this.sf=t=>{this.Hx(t)},this._chart.subscribeCrosshairMove(this.sf)}Nx(){this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null)}Hx(t){if(!t.point)return;const i=Kn(this._chart,this._series,t.point.x);if(null===i)return;if(!this.lx||!this._x)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&("point1"===this.Fx?(this.xP.point1Time=i,this.xP.point1Price=s):"point2"===this.Fx&&(this.xP.point2Time=i,this.xP.point2Price=s),this.Ox(),this._b())}startDrag(t){this._x=!0,this.Fx=t}stopDrag(){this._x=!1,this.Fx=null}updateDrag(t,i){this._x&&this.Fx&&("point1"===this.Fx?(this.xP.point1Time=t,this.xP.point1Price=i):(this.xP.point2Time=t,this.xP.point2Price=i),this.Ox(),this._b())}hitTestEndpoint(t,i){if(!this.gx||!this.xP.point1Time||!this.xP.point2Time)return null;const s=Xn(this._chart,this._series,this.xP.point1Time)??0,n=this._series.priceToCoordinate(this.xP.point1Price)??0,e=Xn(this._chart,this._series,this.xP.point2Time)??0,h=this._series.priceToCoordinate(this.xP.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return"point1";return Math.sqrt(Math.pow(t-e,2)+Math.pow(i-h,2))<=10?"point2":null}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this.Ox(),this._b()}_serializeShape(){return{type:"ruler",points:[mr(this.xP.point1Price??0,vr(this.xP.point1Time)),mr(this.xP.point2Price??0,vr(this.xP.point2Time))],style:{lineColor:this.xP.lineColor,lineWidth:this.xP.lineWidth,showLabel:this.xP.showLabel,labelBackgroundColor:this.xP.labelBackgroundColor,labelTextColor:this.xP.labelTextColor,selectionColor:this.xP.selectionColor,selectionLineWidth:this.xP.selectionLineWidth},extra:{symbol:this.xP.symbol,pipConfig:this.xP.pipConfig}}}setColor(t){this.xP.lineColor=t,this._b()}color(){return this.xP.lineColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}isSelected(){return this.lx}isComplete(){return this.gx}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(!this.gx||!this.xP.point1Time||!this.xP.point2Time)return!1;const s=Xn(this._chart,this._series,this.xP.point1Time)??0,n=this._series.priceToCoordinate(this.xP.point1Price)??0,e=Xn(this._chart,this._series,this.xP.point2Time)??0,h=this._series.priceToCoordinate(this.xP.point2Price)??0;return this.CP(t,i,s,n,e,h)<=(this.lx?12:8)}CP(t,i,s,n,e,h){const r=e-s,l=h-n,a=r*r+l*l;let o,_,u=-1;0!==a&&(u=((t-s)*r+(i-n)*l)/a),u<0?(o=s,_=n):u>1?(o=e,_=h):(o=s+u*r,_=n+u*l);const c=t-o,d=i-_;return Math.sqrt(c*c+d*d)}}function Dl(t,i){return new kl(t,i)}class Rl{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class El{constructor(t){this.nx=t,this.Jt=new Rl(t)}renderer(){return this.nx.isVisible()?this.Jt:null}}class Vl extends br{constructor(t,i){super(t,"position-tool",i),this.HM=null,this.hx=null,this.qM=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.ux=null,this.vx=null,this.Zx=null,this.TP=null,this.kP=null,this.DP={profitColor:"#26a69a",lossColor:"#ef5350",entryLineColor:"#ffffff",opacity:.3,showTooltips:!0,...i};const s=this.DP.pipConfig||xl(this.DP.entryPrice);this.zx=new yl(s),this.ky(),this.Ox()}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new El(this)}drawToCanvas(t,i,s){if(this.TP&&this.DP.takeProfit){const n=this._chart.timeScale();this.RP(t,this.TP,i,s,n),(this.ox||this.lx)&&this.Rx(t,this.TP,"profit",i,s,n)}if(this.kP&&this.DP.stopLoss){const n=this._chart.timeScale();if(this.RP(t,this.kP,i,s,n),this.ox||this.lx){const n=this._chart.timeScale();this.Rx(t,this.kP,"loss",i,s,n)}}const n=this._chart.timeScale();if(this.EP(t,i,s,n),this.DP.takeProfit){const n=this._chart.timeScale();this.Cx(t,this.DP.takeProfit,this.DP.profitColor,i,s,n)}if(this.DP.stopLoss){const n=this._chart.timeScale();this.Cx(t,this.DP.stopLoss,this.DP.lossColor,i,s,n)}}RP(t,i,s,n,e){const h=(Xn(this._chart,this._series,this.DP.entryTime)??0)*s;let r;if(this.DP.endTime)r=(Xn(this._chart,this._series,this.DP.endTime)??0)*s;else{r=this._chart.chartElement().clientWidth*s}const l=(this._series.priceToCoordinate(i.VP)??0)*n,a=(this._series.priceToCoordinate(i.LP)??0)*n;t.fillStyle=this.Cy(i.R,.15),t.fillRect(h,Math.min(l,a),r-h,Math.abs(a-l)),t.strokeStyle=i.R,t.lineWidth=2*s,t.beginPath(),t.moveTo(h,a),t.lineTo(r,a),t.stroke()}EP(t,i,s,n){const e=(Xn(this._chart,this._series,this.DP.entryTime)??0)*i,h=(this._series.priceToCoordinate(this.DP.entryPrice)??0)*s;let r;if(this.DP.endTime)r=(Xn(this._chart,this._series,this.DP.endTime)??0)*i;else{r=this._chart.chartElement().clientWidth*i}const l=this.DP.entryLineColor;t.strokeStyle=l,t.lineWidth=2*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(e,h),t.lineTo(r,h),t.stroke(),t.setLineDash([]),t.strokeStyle=this.DP.entryLineColor,t.lineWidth=1*i,t.setLineDash([5*i,5*i]);const a=this._chart.chartElement().clientHeight*s;if(t.beginPath(),t.moveTo(e,0),t.lineTo(e,a),t.stroke(),t.setLineDash([]),!this.lx&&!this.ox||this.isLocked())t.fillStyle=this.DP.entryLineColor,t.beginPath(),t.arc(e,h,4*i,0,2*Math.PI),t.fill();else{t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.beginPath(),t.arc(e,h,5*i,0,2*Math.PI),t.fill(),t.stroke();const s=8*i;t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.fillRect(r-s/2,h-s/2,s,s),t.strokeRect(r-s/2,h-s/2,s,s)}}Ox(){this.DP.stopLoss&&this.DP.takeProfit&&(this.qM=this.zx.calculateMetrics(this.DP.entryPrice,this.DP.stopLoss,this.DP.takeProfit,this.DP.quantity),this.AP(),this.DP.onUpdate&&this.qM&&this.DP.onUpdate(this.qM))}AP(){const t=this.IP();this.DP.takeProfit&&(this.TP={FP:this.DP.entryTime,BP:t,VP:this.DP.entryPrice,LP:this.DP.takeProfit,R:this.DP.profitColor,Py:this.DP.opacity}),this.DP.stopLoss&&(this.kP={FP:this.DP.entryTime,BP:t,VP:this.DP.entryPrice,LP:this.DP.stopLoss,R:this.DP.lossColor,Py:this.DP.opacity})}IP(){this._chart.timeScale().getVisibleLogicalRange();return this.DP.entryTime}Rx(t,i,s,n,e,h){if(!this.qM)return;const r=(Xn(this._chart,this._series,this.DP.entryTime)??0)*n,l=(this._series.priceToCoordinate(i.LP)??0)*e,a="profit"===s,o=a?this.qM.takeProfitPips:this.qM.stopLossPips,_=a?this.DP.takeProfit:this.DP.stopLoss,u=this.qM.riskRewardRatio,c=a?`Objetivo: ${_?.toFixed(5)} (${o.toFixed(1)} pips) 1:${u.toFixed(2)}`:`P/G Abertura: ${_?.toFixed(5)} (${o.toFixed(1)} pips)`;t.font=11*n+'px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';const d=6*n,f=t.measureText(c).width+2*d,p=20*n,v=r+8*n,m=l-p/2;t.fillStyle=i.R,t.fillRect(v,m,f,p),t.fillStyle="#ffffff",t.textAlign="left",t.textBaseline="middle",t.fillText(c,v+d,l)}Cx(t,i,s,n,e,h){const r=(Xn(this._chart,this._series,this.DP.entryTime)??0)*n,l=(this._series.priceToCoordinate(i)??0)*e,a=s;let o;if(t.fillStyle=a,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.beginPath(),t.arc(r,l,5*n,0,2*Math.PI),t.fill(),t.stroke(),this.DP.endTime)o=(Xn(this._chart,this._series,this.DP.endTime)??0)*n;else{o=this._chart.chartElement().clientWidth*n-10*n}const _=8*n,u=s;t.fillStyle=u,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.fillRect(o-_/2,l-_/2,_,_),t.strokeRect(o-_/2,l-_/2,_,_)}Cy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}updatePosition(t){this.DP={...this.DP,...t},this.Ox(),this._update()}getMetrics(){return this.qM}setStopLoss(t){this.DP.stopLoss=t,this.Ox(),this._update()}setTakeProfit(t){this.DP.takeProfit=t,this.Ox(),this._update()}setEntryPrice(t){this.DP.entryPrice=t,this.Ox(),this._update()}_serializeShape(){return{type:"position",points:[mr(this.DP.entryPrice,vr(this.DP.entryTime))],style:{profitColor:this.DP.profitColor,lossColor:this.DP.lossColor,entryLineColor:this.DP.entryLineColor,opacity:this.DP.opacity,showTooltips:this.DP.showTooltips},extra:{endTime:vr(this.DP.endTime),stopLoss:this.DP.stopLoss,takeProfit:this.DP.takeProfit,quantity:this.DP.quantity,pipConfig:this.DP.pipConfig}}}setColor(t){this.DP.entryLineColor=t,this._b()}color(){return this.DP.entryLineColor??""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):this.hitTest(t,i)?dr(this.id,"body",!1):null}hitTest(t,i){if(!this.DP.stopLoss&&!this.DP.takeProfit)return!1;const s=Xn(this._chart,this._series,this.DP.entryTime)??0;let n;if(this.DP.endTime)n=Xn(this._chart,this._series,this.DP.endTime)??0;else{n=this._chart.chartElement().clientWidth}if(this.DP.takeProfit&&this.DP.stopLoss){const e=this._series.priceToCoordinate(this.DP.takeProfit)??0,h=this._series.priceToCoordinate(this.DP.stopLoss)??0,r=Math.min(e,h),l=Math.max(e,h);if(t>=s&&t<=n&&i>=r&&i<=l)return!0;const a=8;if(Math.abs(t-s)<=a&&i>=r&&i<=l)return!0}return!1}hitTestEndpoint(t,i){const s=Xn(this._chart,this._series,this.DP.entryTime)??0;let n;if(this.DP.endTime)n=Xn(this._chart,this._series,this.DP.endTime)??0;else{n=this._chart.chartElement().clientWidth}if(this.DP.takeProfit){const n=this._series.priceToCoordinate(this.DP.takeProfit)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return"tp"}if(this.DP.stopLoss){const n=this._series.priceToCoordinate(this.DP.stopLoss)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return"sl"}if(this.DP.takeProfit){const s=this._series.priceToCoordinate(this.DP.takeProfit)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-s,2))<=10)return"tp-right"}if(this.DP.stopLoss){const s=this._series.priceToCoordinate(this.DP.stopLoss)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-s,2))<=10)return"sl-right"}const e=this._series.priceToCoordinate(this.DP.entryPrice)??0;if(t>=s&&t<=n&&Math.abs(i-e)<=8)return"entry";if(this.DP.takeProfit&&this.DP.stopLoss){const e=this._series.priceToCoordinate(this.DP.takeProfit)??0,h=this._series.priceToCoordinate(this.DP.stopLoss)??0,r=Math.min(e,h),l=Math.max(e,h);if(t>=s&&t<=n&&i>=r&&i<=l)return"move"}return null}startDrag(t,i){this._x=!0,this.ux=t,this.vx=i,"move"===t&&(this.Zx={zP:this.DP.entryPrice,OP:this.DP.entryTime??null,xy:this.DP.endTime??null,WP:this.DP.takeProfit??null,$P:this.DP.stopLoss??null})}stopDrag(){this._x=!1,this.ux=null,this.vx=null,this.Zx=null}updateDrag(t,i){if(this._x&&this.ux){if("entry"===this.ux)this.DP.entryPrice=i;else if("move"===this.ux){if(this.Zx){const s=fr(this.vx,t,i),n=this.Zx;this.DP.entryPrice=n.zP+s.Mt,null!==n.WP&&(this.DP.takeProfit=n.WP+s.Mt),null!==n.$P&&(this.DP.stopLoss=n.$P+s.Mt),null!==n.OP&&(this.DP.entryTime=this.HP(n.OP,s.gt)),null!==n.xy&&(this.DP.endTime=this.HP(n.xy,s.gt))}}else"tp"===this.ux||"tp-right"===this.ux?(this.DP.takeProfit=i,"tp-right"===this.ux?this.DP.endTime=t:this.DP.entryTime=t):"sl"!==this.ux&&"sl-right"!==this.ux||(this.DP.stopLoss=i,"sl-right"===this.ux?this.DP.endTime=t:this.DP.entryTime=t);this.Ox(),this._b()}}HP(t,i){return t+i}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.DP.onRemove&&this.DP.onRemove()}}function Ll(t,i){return new Vl(t,i)}class Al{constructor(t){this.nx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.nx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Il{constructor(t){this.nx=t,this.Jt=new Al(t)}renderer(){return this.nx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Fl extends br{constructor(t,i){super(t,"gantt",i),this.HM=null,this.hx=null,this.nr=null,this.lx=!1,this.ox=!1,this._x=!1,this.NP=-1,this.vx=null,this.Zx=null,this.UP=-1,this.qP={segments:[],rowHeight:40,rowSpacing:5,fillOpacity:.7,borderWidth:2,showLabels:!0,showGrid:!0,...i},this.ky()}ky(){this.nr=this.Sx();const t={attached:t=>{this.hx=t.requestUpdate},detached:()=>{this.hx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.xx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}Sx(){return new Il(this)}drawToCanvas(t,i,s){if(!this.qP.segments||0===this.qP.segments.length)return;const n=50*s,e=this.qP.rowHeight*s,h=this.qP.rowSpacing*s;this.qP.showGrid&&this.sm(t,n,e,h,i,s),this.qP.segments.forEach((s,r)=>{const l=(Xn(this._chart,this._series,s.startTime)??0)*i,a=(Xn(this._chart,this._series,s.endTime)??0)*i,o=n+s.level*(e+h),_=r===this.UP||this.ox&&!this.isLocked();this.jP(t,l,a,o,e,s,_,i)})}sm(t,i,s,n,e,h){if(!this.qP.segments)return;const r=Math.max(...this.qP.segments.map(t=>t.level),0),l=this._chart.chartElement().clientWidth*e;t.strokeStyle="rgba(200, 200, 200, 0.3)",t.lineWidth=1*e;for(let e=0;e<=r+1;e++){const h=i+e*(s+n);t.beginPath(),t.moveTo(0,h),t.lineTo(l,h),t.stroke()}}jP(t,i,s,n,e,h,r,l){const a=s-i,o=this.Cy(h.color,r?this.qP.fillOpacity+.2:this.qP.fillOpacity);t.fillStyle=o,t.fillRect(i,n,a,e),t.strokeStyle=h.color;const _=this.qP.borderWidth+(this.lx?2:0);t.lineWidth=_*l,t.strokeRect(i,n,a,e),this.qP.showLabels&&h.label&&this.Rx(t,i,n,a,e,h.label,l)}Rx(t,i,s,n,e,h,r){const l=11*r,a=6*r;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,t.fillStyle="#ffffff",t.textBaseline="middle";let o=h;const _=n-2*a;let u=t.measureText(o).width;if(u>_&&_>0){for(;u>_&&o.length>0;)o=o.slice(0,-1),u=t.measureText(o+"...").width;o+="..."}t.fillText(o,i+a,s+e/2)}Cy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${Math.min(1,i)})`}addSegment(t){this.qP.segments||(this.qP.segments=[]),this.qP.segments.push(t),this._b(),this.qP.onUpdate&&this.qP.onUpdate()}removeSegment(t){this.qP.segments&&t>=0&&t<this.qP.segments.length&&(this.qP.segments.splice(t,1),this._b(),this.qP.onUpdate&&this.qP.onUpdate())}getSegments(){return this.qP.segments||[]}setColor(t){const i=this.qP.segments??[];for(const s of i)s.color=t;this._b()}color(){const t=this.qP.segments??[];return t.length>0?t[0].color:""}setSelected(t){this.lx!==t&&(this.lx=t,this._b())}isSelected(){return this.lx}setHovered(t){this.ox!==t&&(this.ox=t,this._b())}isHovered(){return this.ox}xx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?dr(this.id,s,!this.isLocked()):null}hitTestEndpoint(t,i){return this.hitTest(t,i)?"move":null}startDrag(t,i){const s=this.qP.segments?.[this.UP];s&&(this._x=!0,this.NP=this.UP,this.vx=i,this.Zx={Sy:s.startTime,xy:s.endTime})}updateDrag(t,i){const s=this.qP.segments?.[this.NP];if(!this._x||!this.Zx||!s)return;const n=fr(this.vx,t,i);s.startTime=this.Zx.Sy+n.gt,s.endTime=this.Zx.xy+n.gt,this._b(),this.qP.onUpdate&&this.qP.onUpdate()}stopDrag(){this._x=!1,this.NP=-1,this.vx=null,this.Zx=null}hitTest(t,i){if(!this.qP.segments||0===this.qP.segments.length)return!1;const s=this.qP.rowHeight,n=this.qP.rowSpacing;for(let e=0;e<this.qP.segments.length;e++){const h=this.qP.segments[e],r=Xn(this._chart,this._series,h.startTime)??0,l=Xn(this._chart,this._series,h.endTime)??0,a=50+h.level*(s+n);if(t>=r&&t<=l&&i>=a&&i<=a+s)return this.UP=e,!0}return this.UP=-1,!1}isVisible(){return this._visible}_serializeShape(){return{type:"gantt",points:[],style:{rowHeight:this.qP.rowHeight,rowSpacing:this.qP.rowSpacing,fillOpacity:this.qP.fillOpacity,borderWidth:this.qP.borderWidth,showLabels:this.qP.showLabels,showGrid:this.qP.showGrid},extra:{segments:(this.qP.segments||[]).map(t=>({Sy:vr(t.startTime),xy:vr(t.endTime),sn:t.level,Zl:t.label,R:t.color,YP:t.category}))}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.hx?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.qP.onRemove&&this.qP.onRemove()}}function Bl(t,i){return new Fl(t,i)}class zl{constructor(t,i,s={}){this.GP=[],this.KP=[],this.XP=[],this.ZP=!1,this.JP=new Map,this.QP=null,this.tC=null,this.iC=null,this.TS=null,this.sC=null,this.sf=null,this.nC=null,this.eC=null,this.hC=null,this.Zy=null,this.rC=!1,this.lC=null,this.aC=null,this.oC=new o,this._x=!1,this._C=null,this.Vp=t,this.Me=i,this.Cs={enableKeyboardShortcuts:!0,selectionColor:"#2962ff",selectionLineWidth:3,...s},this.uC()}startDrawing(t){this.iC=t,this.cC()}activeDrawingType(){return this.iC}stopDrawing(){this.iC=null}addTool(t,i){const s=i??t.id;return this.JP.set(s,t),this.recordChange(),s}removeTool(t){const i=this.JP.get(t);return!!i&&(this.QP===t&&this.dC(null),i.remove(),this.JP.delete(t),this.recordChange(),!0)}selectTool(t){return!!this.JP.has(t)&&(this.dC(t),!0)}dC(t){if(this.QP===t)return;const i=null===this.QP?void 0:this.JP.get(this.QP);i&&i.setSelected(!1),this.QP=t;const s=null===t?void 0:this.JP.get(t);s&&s.setSelected(!0),this.fC()}recordChange(){this.ZP||(this.GP.push(this.XP),this.KP=[],this.XP=this.serializeAll())}canUndo(){return this.GP.length>0}canRedo(){return this.KP.length>0}undo(){const t=this.GP.pop();return void 0!==t&&(this.KP.push(this.XP),this.pC(t),!0)}redo(){const t=this.KP.pop();return void 0!==t&&(this.GP.push(this.XP),this.pC(t),!0)}pC(t){this.ZP=!0;try{this.restoreAll({chart:this.Vp,series:this.Me},t,!0),this.XP=t}finally{this.ZP=!1}}subscribeSelectionChanged(t){this.oC.i(t)}unsubscribeSelectionChanged(t){this.oC._(t)}selectionBounds(){if(null===this.QP)return null;const t=this.JP.get(this.QP);return t?this.vC(t):null}vC(t){const i=t.series(),s=t.serialize().points;let n=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,r=Number.NEGATIVE_INFINITY,l=!1;for(const t of s){const s=Xn(this.Vp,i,t.time),a=i.priceToCoordinate(t.price);null!==s&&null!==a&&(l=!0,n=Math.min(n,s),h=Math.max(h,s),e=Math.min(e,a),r=Math.max(r,a))}if(!l)return null;const a=this.mC(t);return{left:n+a.ut,right:h+a.ut,top:e+a.ct,bottom:r+a.ct}}mC(t){const i=this.Vp.chartElement(),s=this.wC(t);if(!i||!s)return{ut:0,ct:0};const n=i.getBoundingClientRect(),e=s.getBoundingClientRect();return{ut:e.left-n.left,ct:e.top-n.top}}fC(){this.oC.p({id:this.QP,bounds:this.selectionBounds()})}deselectAll(){this.cC()}deleteSelected(){if(this.QP){const t=this.JP.get(this.QP);return(!t||!t.isLocked())&&this.removeTool(this.QP)}return!1}getSelectedToolId(){return this.QP}getAllTools(){return new Map(this.JP)}getTool(t){return this.JP.get(t)}clearAll(){this.dC(null),this.JP.forEach(t=>t.remove()),this.JP.clear(),this.recordChange()}getToolCount(){return this.JP.size}isToolSelected(t){return this.QP===t}serializeAll(){const t=[];for(const i of this.JP.values())t.push(i.serialize());return t}restoreTool(t,i){const s=zl.gC(t,i);return s.applySerializedState(i),this.addTool(s,s.id),s}restoreAll(t,i,s=!0){s&&this.clearAll();for(const s of i)this.restoreTool(t,s)}static gC(t,i){const{type:s,points:n,style:e,extra:h}=i,r=t=>({MC:gr(n[t]),bC:Mr(n[t],"price")??0});switch(s){case"trendLine":return Rr(t,{point1Time:r(0).MC,point1Price:r(0).bC,point2Time:r(1).MC,point2Price:r(1).bC,...e});case"horizontalLine":return Ar(t,{price:r(0).bC,...e});case"verticalLine":return zr(t,{time:r(0).MC,...e});case"fibRetracement":return qr(t,{point1Time:r(0).MC,point1Price:r(0).bC,point2Time:r(1).MC,point2Price:r(1).bC,useExtended:h?.useExtended,levelColors:e?.levelColors,...e});case"fibExtension":{const i=r(0),s=r(1),n=r(2);return Kr(t,{point1:i.MC?{time:i.MC,price:i.bC}:void 0,point2:s.MC?{time:s.MC,price:s.bC}:void 0,point3:n.MC?{time:n.MC,price:n.bC}:void 0,levels:h?.levels,...e})}case"fibFan":return tl(t,{point1Time:r(0).MC,point1Price:r(0).bC,point2Time:r(1).MC,point2Price:r(1).bC,levels:h?.levels,...e});case"rectangle":return el(t,{time1:r(0).MC,price1:r(0).bC,time2:r(1).MC,price2:r(1).bC,...e});case"circle":return al(t,{centerTime:r(0).MC,centerPrice:r(0).bC,radiusTime:h?.radiusTime,radiusPrice:h?.radiusPrice,...e});case"arrow":return cl(t,{points:n.map(t=>({gt:t.time,Mt:t.price})),...e});case"brush":return ml(t,{points:n.map(t=>({gt:t.time,Mt:t.price})),...e});case"text":return bl(t,{time:r(0).MC,price:r(0).bC,text:h?.text,...e});case"ruler":return Dl(t,{point1Time:r(0).MC,point1Price:r(0).bC,point2Time:r(1).MC,point2Price:r(1).bC,symbol:h?.symbol,pipConfig:h?.pipConfig,...e});case"position":return Ll(t,{entryPrice:r(0).bC,entryTime:r(0).MC,endTime:h?.endTime,stopLoss:h?.stopLoss,takeProfit:h?.takeProfit,quantity:h?.quantity,pipConfig:h?.pipConfig,...e});case"gantt":return Bl(t,{segments:h?.segments,...e});default:throw new Error(`Unknown drawing tool type: ${s}`)}}destroy(){this.clearAll(),this.yC()}uC(){this.TS=t=>{this.ZS(t)},this.Vp.subscribeClick(this.TS),this.sf=t=>{this.JS(t)},this.Vp.subscribeCrosshairMove(this.sf);const t=this.Vp.chartElement();t&&(this.nC=t=>this.SC(t),this.eC=t=>this.xC(),this.hC=t=>this.xC(),t.addEventListener("pointerdown",this.nC),t.addEventListener("pointerup",this.eC),t.addEventListener("pointercancel",this.hC)),this.Cs.enableKeyboardShortcuts&&(this.sC=t=>{this.PC(t)},document.addEventListener("keydown",this.sC))}yC(){this.TS&&(this.Vp.unsubscribeClick(this.TS),this.TS=null),this.sf&&(this.Vp.unsubscribeCrosshairMove(this.sf),this.sf=null);const t=this.Vp.chartElement();t&&(this.nC&&(t.removeEventListener("pointerdown",this.nC),this.nC=null),this.eC&&(t.removeEventListener("pointerup",this.eC),this.eC=null),this.hC&&(t.removeEventListener("pointercancel",this.hC),this.hC=null)),this.sC&&(document.removeEventListener("keydown",this.sC),this.sC=null)}ZS(t){if(!t.point)return;if(this.rC)return void(this.rC=!1);if(this._x)return;const i=this.CC(t.hoveredObjectId);i?this.selectTool(i):this.cC()}JS(t){if(this.lC=t.point?{ut:t.point.x,ct:t.point.y}:null,!t.point)return;if(this._x&&this._C){const i=this.JP.get(this._C);if(i){const s=i.series(),n=s.coordinateToPrice(t.point.y),e=s?Kn(this.Vp,s,t.point.x):null;null!==n&&null!==e&&i.updateDrag(e,n)}return}const i=this.CC(t.hoveredObjectId);if(this.tC&&this.tC!==i){const t=this.JP.get(this.tC);t&&t.setHovered(!1)}if(i){const t=this.JP.get(i);t&&t.setHovered(!0)}this.tC=i}CC(t){if("string"!=typeof t)return null;const i=t.split("#")[0];for(const[t,s]of this.JP)if(s.id===i)return t;return null}SC(t){Sr(this.Vp,!1);const i=this.Vp.chartElement();if(!i)return;const s=null!==this.tC&&null!==this.lC?{TC:this.tC,kw:this.lC}:this.kC(t);if(null===s)return;const{TC:n,kw:e}=s,h=this.JP.get(n);if(!h||h.isLocked())return;const r=h.hitTestEndpoint(e.ut,e.ct),l=this.DC(h,e.ut,e.ct);null!==r&&null!==l&&(Sr(this.Vp,!0),this.selectTool(n),this._x=!0,this.rC=!0,this._C=n,this.Zy=t.pointerId,i.setPointerCapture(t.pointerId),h.startDrag(r,l),this.RC())}xC(){if(!this._x||null===this._C)return;const t=this.JP.get(this._C);t&&t.stopDrag(),this.gS(),this.EC(),this._x=!1,this._C=null,this.recordChange()}wC(t){try{return t.series().getPane().getHTMLElement()}catch(t){return null}}kC(t){for(const[i,s]of this.JP){if(!s.isVisible()||s.isLocked())continue;const n=this.wC(s);if(null===n)continue;const e=n.getBoundingClientRect(),h={ut:t.clientX-e.left,ct:t.clientY-e.top};if(s.hitTest(h.ut,h.ct))return{TC:i,kw:h}}return null}gS(){if(null===this.Zy)return;const t=this.Vp.chartElement();t&&t.hasPointerCapture(this.Zy)&&t.releasePointerCapture(this.Zy),this.Zy=null}RC(){const t=this.Vp.options();this.aC={VC:t.handleScroll,LC:t.handleScale},this.Vp.applyOptions({handleScroll:!1,handleScale:!1})}EC(){const t=this.aC;this.aC=null,null!==t&&this.Vp.applyOptions({handleScroll:t.VC,handleScale:t.LC})}PC(t){"Delete"!==t.key&&"Backspace"!==t.key||this.deleteSelected()&&t.preventDefault();const i=t.metaKey||t.ctrlKey;if(i&&"z"===t.key.toLowerCase()){return void((t.shiftKey?this.redo():this.undo())&&t.preventDefault())}i&&"y"===t.key.toLowerCase()?this.redo()&&t.preventDefault():"Escape"===t.key&&(this.xC(),this.cC(),this.stopDrawing(),t.preventDefault())}DC(t,i,s){const n=t.series().coordinateToPrice(s);return null==n?null:{price:n,time:Kn(this.Vp,t.series(),i)}}cC(){this.dC(null)}}const Ol={...t,color:"#2196f3"};function Wl(){return"1.3.1"}export{Te as AreaSeries,ul as ArrowTool,Ee as BarSeries,xe as BaselineSeries,pl as BrushTool,Ae as CandlestickSeries,ll as CircleTool,Ai as ColorType,U as CrosshairMode,Zh as DEFAULT_SESSIONS,ar as DraggablePriceLine,zl as DrawingToolsManager,Wr as EXTENDED_FIBONACCI_RATIOS,$r as FibonacciCalculator,Gr as FibonacciExtensionTool,Qr as FibonacciFanTool,Ur as FibonacciTool,Fl as GanttTool,Be as HistogramSeries,Lr as HorizontalLineTool,_r as InteractiveLineManager,Vi as LastPriceAnimationMode,le as LineSeries,s as LineStyle,i as LineType,xt as MismatchDirection,yl as PositionCalculator,Rh as PositionMarkersManager,Vl as PositionTool,Li as PriceLineSource,di as PriceScaleMode,nl as RectangleTool,Pl as RulerCalculator,kl as RulerTool,Or as STANDARD_FIBONACCI_RATIOS,Ml as TextTool,Ii as TickMarkType,Ei as TrackingModeExitMode,Jh as TradingSessionsIndicator,Dr as TrendLineTool,Br as VerticalLineTool,sr as VolumeProfileIndicator,Hh as applyATR,zh as applyBollingerBands,Fh as applyEMA,Wh as applyMACD,Yh as applyOBV,Oh as applyRSI,Ih as applySMA,$h as applyStochastic,Uh as applyVolume,Bh as applyWMA,Sl as calculatePipConfig,Xn as coordinateFromTime,cl as createArrowTool,ml as createBrushTool,jn as createChart,qn as createChartEx,al as createCircleTool,Kr as createFibonacciExtensionTool,tl as createFibonacciFanTool,qr as createFibonacciTool,Bl as createGanttTool,Ar as createHorizontalLineTool,ih as createImageWatermark,ur as createInteractiveLineManager,me as createOptionsChart,Eh as createPositionMarkers,Ll as createPositionTool,el as createRectangleTool,Dl as createRulerTool,Mh as createSeriesMarkers,bl as createTextTool,Ge as createTextWatermark,or as createTradingLine,Qh as createTradingSessionsIndicator,Rr as createTrendLineTool,Dh as createUpDownMarkers,zr as createVerticalLineTool,nr as createVolumeProfileIndicator,fe as createYieldCurveChart,Ol as customSeriesDefaultOptions,Yn as defaultHorzScaleBehavior,xl as getPipConfig,zi as isBusinessDay,Oi as isUTCTimestamp,Gh as setOBVVolumeData,qh as setVolumeData,er as setVolumeProfileData,Kn as timeFromCoordinate,Wl as version};
|
|
8
|
+
const t={title:"",visible:!0,lastValueVisible:!0,priceLineVisible:!0,priceLineSource:0,priceLineWidth:1,priceLineColor:"",priceLineStyle:2,baseLineVisible:!0,baseLineWidth:1,baseLineColor:"#B2B5BE",baseLineStyle:0,priceFormat:{type:"price",precision:2,minMove:.01}};var i,s;function n(t,i){const s={0:[],1:[t.lineWidth,t.lineWidth],2:[2*t.lineWidth,2*t.lineWidth],3:[6*t.lineWidth,6*t.lineWidth],4:[t.lineWidth,4*t.lineWidth]}[i];t.setLineDash(s)}function e(t,i,s,n){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(s,i+e),t.lineTo(n,i+e),t.stroke()}function h(t,i){if(!t)throw new Error("Assertion failed"+(i?": "+i:""))}function r(t){if(void 0===t)throw new Error("Value is undefined");return t}function l(t){if(null===t)throw new Error("Value is null");return t}function o(t){return l(r(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps",t[t.Curved=2]="Curved"}(i||(i={})),function(t){t[t.Solid=0]="Solid",t[t.Dotted=1]="Dotted",t[t.Dashed=2]="Dashed",t[t.LargeDashed=3]="LargeDashed",t[t.SparseDotted=4]="SparseDotted"}(s||(s={}));class a{constructor(){this.t=[]}i(t,i,s){const n={h:t,l:i,o:!0===s};this.t.push(n)}_(t){const i=this.t.findIndex(i=>t===i.h);i>-1&&this.t.splice(i,1)}u(t){this.t=this.t.filter(i=>i.l!==t)}p(t,i,s){const n=[...this.t];this.t=this.t.filter(t=>!t.o),n.forEach(n=>n.h(t,i,s))}v(){return this.t.length>0}m(){this.t=[]}}function _(t,...i){for(const s of i)for(const i in s)void 0!==s[i]&&Object.prototype.hasOwnProperty.call(s,i)&&!["__proto__","constructor","prototype"].includes(i)&&("object"!=typeof s[i]||void 0===t[i]||Array.isArray(s[i])?t[i]=s[i]:_(t[i],s[i]));return t}function u(t){return"number"==typeof t&&isFinite(t)}function c(t){return"number"==typeof t&&t%1==0}function d(t){return"string"==typeof t}function p(t){return"boolean"==typeof t}function f(t){const i=t;if(!i||"object"!=typeof i)return i;let s,n,e;for(n in s=Array.isArray(i)?[]:{},i)i.hasOwnProperty(n)&&(e=i[n],s[n]=e&&"object"==typeof e?f(e):e);return s}function v(t){return null!==t}function m(t){return null===t?void 0:t}const w="-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif";function g(t,i,s){return void 0===i&&(i=w),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class b{constructor(t){this.M={S:1,P:5,C:NaN,T:"",D:"",I:"",R:"",V:0,F:0,L:0,A:0,B:0},this.W=t}O(){const t=this.M,i=this.$(),s=this.H();return t.C===i&&t.D===s||(t.C=i,t.D=s,t.T=g(i,s),t.A=2.5/12*i,t.V=t.A,t.F=i/12*t.P,t.L=i/12*t.P,t.B=0),t.I=this.N(),t.R=this.U(),this.M}N(){return this.W.O().layout.textColor}U(){return this.W.q()}$(){return this.W.O().layout.fontSize}H(){return this.W.O().layout.fontFamily}}function M(t){return t<0?0:t>255?255:Math.round(t)||0}function y(t){return.199*t[0]+.687*t[1]+.114*t[2]}class S{constructor(t,i){this.j=new Map,this.Y=t,i&&(this.j=i)}K(t,i){if("transparent"===t)return t;const s=this.G(t),n=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*n})`}X(t){const i=this.G(t);return{Z:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,J:y(i)>160?"black":"white"}}tt(t){return y(this.G(t))}it(t,i,s){const[n,e,h,r]=this.G(t),[l,o,a,_]=this.G(i),u=[M(n+s*(l-n)),M(e+s*(o-e)),M(h+s*(a-h)),(c=r+s*(_-r),c<=0||c>1?Math.min(Math.max(c,0),1):Math.round(1e4*c)/1e4)];var c;return`rgba(${u[0]}, ${u[1]}, ${u[2]}, ${u[3]})`}G(t){const i=this.j.get(t);if(i)return i;const s=function(t){const i=document.createElement("div");i.style.display="none",document.body.appendChild(i),i.style.color=t;const s=window.getComputedStyle(i).color;return document.body.removeChild(i),s}(t),n=s.match(/^rgba?\s*\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)$/);if(!n){if(this.Y.length)for(const i of this.Y){const s=i(t);if(s)return this.j.set(t,s),s}throw new Error(`Failed to parse color: ${t}`)}const e=[parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3],10),n[4]?parseFloat(n[4]):1];return this.j.set(t,e),e}}class x{constructor(){this.st=[]}nt(t){this.st=t}et(t,i,s){this.st.forEach(n=>{n.et(t,i,s)})}}class P{et(t,i,s){t.useBitmapCoordinateSpace(t=>this.ht(t,i,s))}}class C extends P{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.rt||null===this.rt.ot)return;const n=this.rt.ot,e=this.rt,h=Math.max(1,Math.floor(i))%2/2,r=r=>{t.beginPath();for(let l=n.to-1;l>=n.from;--l){const n=e._t[l],o=Math.round(n.ut*i)+h,a=n.ct*s,_=r*s+h;t.moveTo(o,a),t.arc(o,a,_,0,2*Math.PI)}t.fill()};e.dt>0&&(t.fillStyle=e.ft,r(e.vt+e.dt)),t.fillStyle=e.wt,r(e.vt)}}function T(){return{_t:[{ut:0,ct:0,gt:0,bt:0}],wt:"",ft:"",vt:0,dt:0,ot:null}}const k={from:0,to:1};class D{constructor(t,i,s){this.Mt=new x,this.yt=[],this.St=[],this.xt=!0,this.W=t,this.Pt=i,this.Ct=s,this.Mt.nt(this.yt)}Tt(t){this.kt(),this.xt=!0}Dt(){return this.xt&&(this.It(),this.xt=!1),this.Mt}kt(){const t=this.Ct.Rt();t.length!==this.yt.length&&(this.St=t.map(T),this.yt=this.St.map(t=>{const i=new C;return i.lt(t),i}),this.Mt.nt(this.yt))}It(){const t=2===this.Pt.O().mode||!this.Pt.Vt(),i=this.Ct.Ft(),s=this.Pt.Et(),n=this.W.Lt();this.kt(),i.forEach((i,e)=>{const h=this.St[e],r=i.At(s),l=i.Bt();!t&&null!==r&&i.Vt()&&null!==l?(h.wt=r.Wt,h.vt=r.vt,h.dt=r.Ot,h._t[0].bt=r.bt,h._t[0].ct=i.$t().zt(r.bt,l.Ht),h.ft=r.Nt??this.W.Ut(h._t[0].ct/i.$t().qt()),h._t[0].gt=s,h._t[0].ut=n.jt(s),h.ot=k):h.ot=null})}}class I extends P{constructor(t){super(),this.Yt=t}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:h}){if(null===this.Yt)return;const r=this.Yt.Kt.Vt,l=this.Yt.Gt.Vt;if(!r&&!l)return;const o=Math.round(this.Yt.ut*s),a=Math.round(this.Yt.ct*h);t.lineCap="butt",r&&o>=0&&(t.lineWidth=Math.floor(this.Yt.Kt.dt*s),t.strokeStyle=this.Yt.Kt.I,t.fillStyle=this.Yt.Kt.I,n(t,this.Yt.Kt.Xt),function(t,i,s,n){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(i+e,s),t.lineTo(i+e,n),t.stroke()}(t,o,0,i.height)),l&&a>=0&&(t.lineWidth=Math.floor(this.Yt.Gt.dt*h),t.strokeStyle=this.Yt.Gt.I,t.fillStyle=this.Yt.Gt.I,n(t,this.Yt.Gt.Xt),e(t,a,0,i.width))}}class R{constructor(t,i){this.xt=!0,this.Zt={Kt:{dt:1,Xt:0,I:"",Vt:!1},Gt:{dt:1,Xt:0,I:"",Vt:!1},ut:0,ct:0},this.Jt=new I(this.Zt),this.Qt=t,this.Ct=i}Tt(){this.xt=!0}Dt(t){return this.xt&&(this.It(),this.xt=!1),this.Jt}It(){const t=this.Qt.Vt(),i=this.Ct.ti().O().crosshair,s=this.Zt;if(2===i.mode)return s.Gt.Vt=!1,void(s.Kt.Vt=!1);s.Gt.Vt=t&&this.Qt.ii(this.Ct),s.Kt.Vt=t&&this.Qt.si(),s.Gt.dt=i.horzLine.width,s.Gt.Xt=i.horzLine.style,s.Gt.I=i.horzLine.color,s.Kt.dt=i.vertLine.width,s.Kt.Xt=i.vertLine.style,s.Kt.I=i.vertLine.color,s.ut=this.Qt.ni(),s.ct=this.Qt.ei()}}function V(t,i,s,n,e,h){t.fillRect(i+h,s,n-2*h,h),t.fillRect(i+h,s+e-h,n-2*h,h),t.fillRect(i,s,h,e),t.fillRect(i+n-h,s,h,e)}function F(t,i,s,n,e,h){t.save(),t.globalCompositeOperation="copy",t.fillStyle=h,t.fillRect(i,s,n,e),t.restore()}function E(t,i,s,n,e,h){t.beginPath(),t.roundRect?t.roundRect(i,s,n,e,h):(t.lineTo(i+n-h[1],s),0!==h[1]&&t.arcTo(i+n,s,i+n,s+h[1],h[1]),t.lineTo(i+n,s+e-h[2]),0!==h[2]&&t.arcTo(i+n,s+e,i+n-h[2],s+e,h[2]),t.lineTo(i+h[3],s+e),0!==h[3]&&t.arcTo(i,s+e,i,s+e-h[3],h[3]),t.lineTo(i,s+h[0]),0!==h[0]&&t.arcTo(i,s,i+h[0],s,h[0]))}function L(t,i,s,n,e,h,r=0,l=[0,0,0,0],o=""){if(t.save(),!r||!o||o===h)return E(t,i,s,n,e,l),t.fillStyle=h,t.fill(),void t.restore();const a=r/2;var _;E(t,i+a,s+a,n-r,e-r,(_=-a,l.map(t=>0===t?t:t+_))),"transparent"!==h&&(t.fillStyle=h,t.fill()),"transparent"!==o&&(t.lineWidth=r,t.strokeStyle=o,t.closePath(),t.stroke()),t.restore()}function A(t,i,s,n,e,h,r){t.save(),t.globalCompositeOperation="copy";const l=t.createLinearGradient(0,0,0,e);l.addColorStop(0,h),l.addColorStop(1,r),t.fillStyle=l,t.fillRect(i,s,n,e),t.restore()}class B{constructor(t,i){this.lt(t,i)}lt(t,i){this.Yt=t,this.hi=i}qt(t,i){return this.Yt.Vt?t.C+t.A+t.V:0}et(t,i,s,n){if(!this.Yt.Vt||0===this.Yt.ri.length)return;const e=this.Yt.I,h=this.hi.Z,r=t.useBitmapCoordinateSpace(t=>{const r=t.context;r.font=i.T;const l=this.li(t,i,s,n),o=l.oi;return l.ai?L(r,o._i,o.ui,o.ci,o.di,h,o.pi,[o.vt,0,0,o.vt],h):L(r,o.fi,o.ui,o.ci,o.di,h,o.pi,[0,o.vt,o.vt,0],h),this.Yt.mi&&(r.fillStyle=e,r.fillRect(o.fi,o.wi,o.gi-o.fi,o.bi)),this.Yt.Mi&&(r.fillStyle=i.R,r.fillRect(l.ai?o.yi-o.pi:0,o.ui,o.pi,o.Si-o.ui)),l});t.useMediaCoordinateSpace(({context:t})=>{const s=r.xi;t.font=i.T,t.textAlign=r.ai?"right":"left",t.textBaseline="middle",t.fillStyle=e,t.fillText(this.Yt.ri,s.Pi,(s.ui+s.Si)/2+s.Ci)})}li(t,i,s,n){const{context:e,bitmapSize:h,mediaSize:r,horizontalPixelRatio:l,verticalPixelRatio:o}=t,a=this.Yt.mi||!this.Yt.Ti?i.P:0,_=this.Yt.ki?i.S:0,u=i.A+this.hi.Di,c=i.V+this.hi.Ii,d=i.F,p=i.L,f=this.Yt.ri,v=i.C,m=s.Ri(e,f),w=Math.ceil(s.Vi(e,f)),g=v+u+c,b=i.S+d+p+w+a,M=Math.max(1,Math.floor(o));let y=Math.round(g*o);y%2!=M%2&&(y+=1);const S=_>0?Math.max(1,Math.floor(_*l)):0,x=Math.round(b*l),P=Math.round(a*l),C=this.hi.Fi??this.hi.Ei,T=Math.round(C*o)-Math.floor(.5*o),k=Math.floor(T+M/2-y/2),D=k+y,I="right"===n,R=I?r.width-_:_,V=I?h.width-S:S;let F,E,L;return I?(F=V-x,E=V-P,L=R-a-d-_):(F=V+x,E=V+P,L=R+a+d),{ai:I,oi:{ui:k,wi:T,Si:D,ci:x,di:y,vt:2*l,pi:S,_i:F,fi:V,gi:E,bi:M,yi:h.width},xi:{ui:k/o,Si:D/o,Pi:L,Ci:m}}}}class W{constructor(t){this.Li={Ei:0,Z:"#000",Ii:0,Di:0},this.Ai={ri:"",Vt:!1,mi:!0,Ti:!1,Nt:"",I:"#FFF",Mi:!1,ki:!1},this.Bi={ri:"",Vt:!1,mi:!1,Ti:!0,Nt:"",I:"#FFF",Mi:!0,ki:!0},this.xt=!0,this.Wi=new(t||B)(this.Ai,this.Li),this.Oi=new(t||B)(this.Bi,this.Li)}ri(){return this.zi(),this.Ai.ri}Ei(){return this.zi(),this.Li.Ei}Tt(){this.xt=!0}qt(t,i=!1){return Math.max(this.Wi.qt(t,i),this.Oi.qt(t,i))}$i(){return this.Li.Fi||0}Hi(t){this.Li.Fi=t}Ni(){return this.zi(),this.Ai.Vt||this.Bi.Vt}Ui(){return this.zi(),this.Ai.Vt}Dt(t){return this.zi(),this.Ai.mi=this.Ai.mi&&t.O().ticksVisible,this.Bi.mi=this.Bi.mi&&t.O().ticksVisible,this.Wi.lt(this.Ai,this.Li),this.Oi.lt(this.Bi,this.Li),this.Wi}qi(){return this.zi(),this.Wi.lt(this.Ai,this.Li),this.Oi.lt(this.Bi,this.Li),this.Oi}zi(){this.xt&&(this.Ai.mi=!0,this.Bi.mi=!1,this.ji(this.Ai,this.Bi,this.Li))}}class O extends W{constructor(t,i,s){super(),this.Qt=t,this.Yi=i,this.Ki=s}ji(t,i,s){if(t.Vt=!1,2===this.Qt.O().mode)return;const n=this.Qt.O().horzLine;if(!n.labelVisible)return;const e=this.Yi.Bt();if(!this.Qt.Vt()||this.Yi.Gi()||null===e)return;const h=this.Yi.Xi().X(n.labelBackgroundColor);s.Z=h.Z,t.I=h.J;const r=2/12*this.Yi.C();s.Di=r,s.Ii=r;const l=this.Ki(this.Yi);s.Ei=l.Ei,t.ri=this.Yi.Zi(l.bt,e),t.Vt=!0}}const z=/[1-9]/g;class ${constructor(){this.Yt=null}lt(t){this.Yt=t}et(t,i){if(null===this.Yt||!1===this.Yt.Vt||0===this.Yt.ri.length)return;const s=t.useMediaCoordinateSpace(({context:t})=>(t.font=i.T,Math.round(i.Ji.Vi(t,l(this.Yt).ri,z))));if(s<=0)return;const n=i.Qi,e=s+2*n,h=e/2,r=this.Yt.ts;let o=this.Yt.Ei,a=Math.floor(o-h)+.5;a<0?(o+=Math.abs(0-a),a=Math.floor(o-h)+.5):a+e>r&&(o-=Math.abs(r-(a+e)),a=Math.floor(o-h)+.5);const _=a+e,u=Math.ceil(0+i.S+i.P+i.A+i.C+i.V);t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:s,verticalPixelRatio:n})=>{const e=l(this.Yt);t.fillStyle=e.Z;const h=Math.round(a*s),r=Math.round(0*n),o=Math.round(_*s),c=Math.round(u*n),d=Math.round(2*s);if(t.beginPath(),t.moveTo(h,r),t.lineTo(h,c-d),t.arcTo(h,c,h+d,c,d),t.lineTo(o-d,c),t.arcTo(o,c,o,c-d,d),t.lineTo(o,r),t.fill(),e.mi){const h=Math.round(e.Ei*s),l=r,o=Math.round((l+i.P)*n);t.fillStyle=e.I;const a=Math.max(1,Math.floor(s)),_=Math.floor(.5*s);t.fillRect(h-_,l,a,o-l)}}),t.useMediaCoordinateSpace(({context:t})=>{const s=l(this.Yt),e=0+i.S+i.P+i.A+i.C/2;t.font=i.T,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.I;const h=i.Ji.Ri(t,"Apr0");t.translate(a+n,e+h),t.fillText(s.ri,0,0)})}}class H{constructor(t,i,s){this.xt=!0,this.Jt=new $,this.Zt={Vt:!1,Z:"#4c525e",I:"white",ri:"",ts:0,Ei:NaN,mi:!0},this.Pt=t,this.ss=i,this.Ki=s}Tt(){this.xt=!0}Dt(){return this.xt&&(this.It(),this.xt=!1),this.Jt.lt(this.Zt),this.Jt}It(){const t=this.Zt;if(t.Vt=!1,2===this.Pt.O().mode)return;const i=this.Pt.O().vertLine;if(!i.labelVisible)return;const s=this.ss.Lt();if(s.Gi())return;t.ts=s.ts();const n=this.Ki();if(null===n)return;t.Ei=n.Ei;const e=s.ns(this.Pt.Et());t.ri=s.es(l(e)),t.Vt=!0;const h=this.ss.Xi().X(i.labelBackgroundColor);t.Z=h.Z,t.I=h.J,t.mi=s.O().ticksVisible}}class N{constructor(){this.hs=null,this.rs=0}ls(){return this.rs}_s(t){this.rs=t}$t(){return this.hs}us(t){this.hs=t}cs(t){return[]}ds(){return[]}Vt(){return!0}}var U;!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet",t[t.Hidden=2]="Hidden",t[t.MagnetOHLC=3]="MagnetOHLC"}(U||(U={}));class q extends N{constructor(t,i){super(),this.Ct=null,this.ps=NaN,this.fs=0,this.vs=!1,this.ws=new Map,this.gs=!1,this.bs=new WeakMap,this.Ms=new WeakMap,this.ys=NaN,this.Ss=NaN,this.xs=NaN,this.Ps=NaN,this.ss=t,this.Cs=i;this.Ts=((t,i)=>s=>{const n=i(),e=t();if(s===l(this.Ct).ks())return{bt:e,Ei:n};{const t=l(s.Bt());return{bt:s.Ds(n,t),Ei:n}}})(()=>this.ps,()=>this.Ss);const s=((t,i)=>()=>{const s=this.ss.Lt().Is(t()),n=i();return s&&Number.isFinite(n)?{gt:s,Ei:n}:null})(()=>this.fs,()=>this.ni());this.Rs=new H(this,t,s)}O(){return this.Cs}Vs(t,i){this.xs=t,this.Ps=i}Fs(){this.xs=NaN,this.Ps=NaN}Es(){return this.xs}Ls(){return this.Ps}As(t,i,s){this.gs||(this.gs=!0),this.vs=!0,this.Bs(t,i,s)}Et(){return this.fs}ni(){return this.ys}ei(){return this.Ss}Vt(){return this.vs}Ws(){this.vs=!1,this.Os(),this.ps=NaN,this.ys=NaN,this.Ss=NaN,this.Ct=null,this.Fs(),this.zs()}$s(t){let i=this.bs.get(t);i||(i=new R(this,t),this.bs.set(t,i));let s=this.Ms.get(t);return s||(s=new D(this.ss,this,t),this.Ms.set(t,s)),[i,s]}ii(t){return t===this.Ct&&this.Cs.horzLine.visible}si(){return this.Cs.vertLine.visible}Hs(t,i){this.vs&&this.Ct===t||this.ws.clear();const s=[];return this.Ct===t&&s.push(this.Ns(this.ws,i,this.Ts)),s}ds(){return this.vs?[this.Rs]:[]}Us(){return this.Ct}zs(){this.ss.qs().forEach(t=>{this.bs.get(t)?.Tt(),this.Ms.get(t)?.Tt()}),this.ws.forEach(t=>t.Tt()),this.Rs.Tt()}js(t){return t&&!t.ks().Gi()?t.ks():null}Bs(t,i,s){this.Ys(t,i,s)&&this.zs()}Ys(t,i,s){const n=this.ys,e=this.Ss,h=this.ps,r=this.fs,l=this.Ct,o=this.js(s);this.fs=t,this.ys=isNaN(t)?NaN:this.ss.Lt().jt(t),this.Ct=s;const a=null!==o?o.Bt():null;return null!==o&&null!==a?(this.ps=i,this.Ss=o.zt(i,a)):(this.ps=NaN,this.Ss=NaN),n!==this.ys||e!==this.Ss||r!==this.fs||h!==this.ps||l!==this.Ct}Os(){const t=this.ss.Ks().map(t=>t.Xs().Gs()).filter(v),i=0===t.length?null:Math.max(...t);this.fs=null!==i?i:NaN}Ns(t,i,s){let n=t.get(i);return void 0===n&&(n=new O(this,i,s),t.set(i,n)),n}}function j(t){return"left"===t||"right"===t}class Y{constructor(t){this.Zs=new Map,this.Js=[],this.Qs=t}tn(t,i){const s=function(t,i){return void 0===t?i:{sn:Math.max(t.sn,i.sn),nn:t.nn||i.nn}}(this.Zs.get(t),i);this.Zs.set(t,s)}en(){return this.Qs}hn(t){const i=this.Zs.get(t);return void 0===i?{sn:this.Qs}:{sn:Math.max(this.Qs,i.sn),nn:i.nn}}rn(){this.ln(),this.Js=[{an:0}]}_n(t){this.ln(),this.Js=[{an:1,Ht:t}]}un(t){this.cn(),this.Js.push({an:5,Ht:t})}ln(){this.cn(),this.Js.push({an:6})}dn(){this.ln(),this.Js=[{an:4}]}pn(t){this.ln(),this.Js.push({an:2,Ht:t})}fn(t){this.ln(),this.Js.push({an:3,Ht:t})}vn(){return this.Js}mn(t){for(const i of t.Js)this.wn(i);this.Qs=Math.max(this.Qs,t.Qs),t.Zs.forEach((t,i)=>{this.tn(i,t)})}static gn(){return new Y(2)}static bn(){return new Y(3)}wn(t){switch(t.an){case 0:this.rn();break;case 1:this._n(t.Ht);break;case 2:this.pn(t.Ht);break;case 3:this.fn(t.Ht);break;case 4:this.dn();break;case 5:this.un(t.Ht);break;case 6:this.cn()}}cn(){const t=this.Js.findIndex(t=>5===t.an);-1!==t&&this.Js.splice(t,1)}}class K{formatTickmarks(t){return t.map(t=>this.format(t))}}const G=".";function X(t,i){if(!u(t))return"n/a";if(!c(i))throw new TypeError("invalid length");if(i<0||i>16)throw new TypeError("invalid length");if(0===i)return t.toString();return("0000000000000000"+t.toString()).slice(-i)}class Z extends K{constructor(t,i){if(super(),i||(i=1),u(t)&&c(t)||(t=100),t<0)throw new TypeError("invalid base");this.Yi=t,this.Mn=i,this.yn()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.Sn(t)}yn(){if(this.xn=0,this.Yi>0&&this.Mn>0){let t=this.Yi;for(;t>1;)t/=10,this.xn++}}Sn(t){const i=this.Yi/this.Mn;let s=Math.floor(t),n="";const e=void 0!==this.xn?this.xn:NaN;if(i>1){let h=+(Math.round(t*i)-s*i).toFixed(this.xn);h>=i&&(h-=i,s+=1),n=G+X(+h.toFixed(this.xn)*this.Mn,e)}else s=Math.round(s*i)/i,e>0&&(n=G+X(0,e));return s.toFixed(0)+n}}class J extends Z{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class Q extends K{constructor(t){super(),this.Pn=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.Cn(t):t<999995?i+this.Cn(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.Cn(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.Cn(t/1e9)+"B")}Cn(t){let i;const s=Math.pow(10,this.Pn);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.Pn).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,(t,i)=>i)}}const tt=/[2-9]/g;class it{constructor(t=50){this.Tn=0,this.kn=1,this.Dn=1,this.In={},this.Rn=new Map,this.Vn=t}Fn(){this.Tn=0,this.Rn.clear(),this.kn=1,this.Dn=1,this.In={}}Vi(t,i,s){return this.En(t,i,s).width}Ri(t,i,s){const n=this.En(t,i,s);return((n.actualBoundingBoxAscent||0)-(n.actualBoundingBoxDescent||0))/2}En(t,i,s){const n=s||tt,e=String(i).replace(n,"0");if(this.Rn.has(e))return r(this.Rn.get(e)).Ln;if(this.Tn===this.Vn){const t=this.In[this.Dn];delete this.In[this.Dn],this.Rn.delete(t),this.Dn++,this.Tn--}t.save(),t.textBaseline="middle";const h=t.measureText(e);return t.restore(),0===h.width&&i.length||(this.Rn.set(e,{Ln:h,An:this.kn}),this.In[this.kn]=e,this.Tn++,this.kn++),h}}class st{constructor(t){this.Bn=null,this.M=null,this.Wn="right",this.On=t}zn(t,i,s){this.Bn=t,this.M=i,this.Wn=s}et(t){null!==this.M&&null!==this.Bn&&this.Bn.et(t,this.M,this.On,this.Wn)}}class nt{constructor(t,i,s){this.$n=t,this.On=new it(50),this.Hn=i,this.W=s,this.$=-1,this.Jt=new st(this.On)}Dt(){const t=this.W.Nn(this.Hn);if(null===t)return null;const i=t.Un(this.Hn)?t.qn():this.Hn.$t();if(null===i)return null;const s=t.jn(i);if("overlay"===s)return null;const n=this.W.Yn();return n.C!==this.$&&(this.$=n.C,this.On.Fn()),this.Jt.zn(this.$n.qi(),n,s),this.Jt}}class et extends P{constructor(){super(...arguments),this.Yt=null}lt(t){this.Yt=t}Kn(t,i){if(!this.Yt?.Vt)return null;const{ct:s,dt:n,Gn:e}=this.Yt;return i>=s-n-7&&i<=s+n+7?{Xn:this.Yt,Gn:e}:null}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:h}){if(null===this.Yt)return;if(!1===this.Yt.Vt)return;const r=Math.round(this.Yt.ct*h);r<0||r>i.height||(t.lineCap="butt",t.strokeStyle=this.Yt.I,t.lineWidth=Math.floor(this.Yt.dt*s),n(t,this.Yt.Xt),e(t,r,0,i.width))}}class ht{constructor(t){this.Zn={ct:0,I:"rgba(0, 0, 0, 0)",dt:1,Xt:0,Vt:!1},this.Jn=new et,this.xt=!0,this.Qn=t,this.te=t.ti(),this.Jn.lt(this.Zn)}Tt(){this.xt=!0}Dt(){return this.Qn.Vt()?(this.xt&&(this.ie(),this.xt=!1),this.Jn):null}}class rt extends ht{constructor(t){super(t)}ie(){this.Zn.Vt=!1;const t=this.Qn.$t(),i=t.se().se;if(2!==i&&3!==i)return;const s=this.Qn.O();if(!s.baseLineVisible||!this.Qn.Vt())return;const n=this.Qn.Bt();null!==n&&(this.Zn.Vt=!0,this.Zn.ct=t.zt(n.Ht,n.Ht),this.Zn.I=s.baseLineColor,this.Zn.dt=s.baseLineWidth,this.Zn.Xt=s.baseLineStyle)}}class lt extends P{constructor(){super(...arguments),this.Yt=null}lt(t){this.Yt=t}ne(){return this.Yt}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const n=this.Yt;if(null===n)return;const e=Math.max(1,Math.floor(i)),h=e%2/2,r=Math.round(n.ee.x*i)+h,l=n.ee.y*s;t.fillStyle=n.he,t.beginPath();const o=Math.max(2,1.5*n.re)*i;t.arc(r,l,o,0,2*Math.PI,!1),t.fill(),t.fillStyle=n.le,t.beginPath(),t.arc(r,l,n.vt*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=e,t.strokeStyle=n.oe,t.beginPath(),t.arc(r,l,n.vt*i+e/2,0,2*Math.PI,!1),t.stroke()}}const ot=[{ae:0,_e:.25,ue:4,ce:10,de:.25,pe:0,fe:.4,ve:.8},{ae:.25,_e:.525,ue:10,ce:14,de:0,pe:0,fe:.8,ve:0},{ae:.525,_e:1,ue:14,ce:14,de:0,pe:0,fe:0,ve:0}];class at{constructor(t){this.Jt=new lt,this.xt=!0,this.me=!0,this.we=performance.now(),this.ge=this.we-1,this.be=t}Me(){this.ge=this.we-1,this.Tt()}ye(){if(this.Tt(),2===this.be.O().lastPriceAnimation){const t=performance.now(),i=this.ge-t;if(i>0)return void(i<650&&(this.ge+=2600));this.we=t,this.ge=t+2600}}Tt(){this.xt=!0}Se(){this.me=!0}Vt(){return 0!==this.be.O().lastPriceAnimation}xe(){switch(this.be.O().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.ge}}Dt(){return this.xt?(this.It(),this.xt=!1,this.me=!1):this.me&&(this.Pe(),this.me=!1),this.Jt}It(){this.Jt.lt(null);const t=this.be.ti().Lt(),i=t.Ce(),s=this.be.Bt();if(null===i||null===s)return;const n=this.be.Te(!0);if(n.ke||!i.De(n.Ie))return;const e={x:t.jt(n.Ie),y:this.be.$t().zt(n.bt,s.Ht)},h=n.I,r=this.be.O().lineWidth,l=this.Re(this.Ve(),h);this.Jt.lt({he:h,re:r,le:l.le,oe:l.oe,vt:l.vt,ee:e})}Pe(){const t=this.Jt.ne();if(null!==t){const i=this.Re(this.Ve(),t.he);t.le=i.le,t.oe=i.oe,t.vt=i.vt}}Ve(){return this.xe()?performance.now()-this.we:2599}Fe(t,i,s,n){const e=s+(n-s)*i;return this.be.ti().Xi().K(t,e)}Re(t,i){const s=t%2600/2600;let n;for(const t of ot)if(s>=t.ae&&s<=t._e){n=t;break}h(void 0!==n,"Last price animation internal logic error");const e=(s-n.ae)/(n._e-n.ae);return{le:this.Fe(i,e,n.de,n.pe),oe:this.Fe(i,e,n.fe,n.ve),vt:(r=e,l=n.ue,o=n.ce,l+(o-l)*r)};var r,l,o}}class _t extends ht{constructor(t){super(t)}ie(){const t=this.Zn;t.Vt=!1;const i=this.Qn.O();if(!i.priceLineVisible||!this.Qn.Vt())return;const s=this.Qn.Te(0===i.priceLineSource);s.ke||(t.Vt=!0,t.ct=s.Ei,t.I=this.Qn.Ee(s.I),t.dt=i.priceLineWidth,t.Xt=i.priceLineStyle)}}class ut extends W{constructor(t){super(),this.Qt=t}ji(t,i,s){t.Vt=!1,i.Vt=!1;const n=this.Qt;if(!n.Vt())return;const e=n.O(),h=e.lastValueVisible,r=""!==n.Le(),l=0===e.seriesLastValueMode,o=n.Te(!1);if(o.ke)return;h&&(t.ri=this.Ae(o,h,l),t.Vt=0!==t.ri.length),(r||l)&&(i.ri=this.Be(o,h,r,l),i.Vt=i.ri.length>0);const a=n.Ee(o.I),_=this.Qt.ti().Xi().X(a);s.Z=_.Z,s.Ei=o.Ei,i.Nt=n.ti().Ut(o.Ei/n.$t().qt()),t.Nt=a,t.I=_.J,i.I=_.J}Be(t,i,s,n){let e="";const h=this.Qt.Le();return s&&0!==h.length&&(e+=`${h} `),i&&n&&(e+=this.Qt.$t().We()?t.Oe:t.ze),e.trim()}Ae(t,i,s){return i?s?this.Qt.$t().We()?t.ze:t.Oe:t.ri:""}}function ct(t,i,s,n){const e=Number.isFinite(i),h=Number.isFinite(s);return e&&h?t(i,s):e||h?e?i:s:n}class dt{constructor(t,i){this.$e=t,this.He=i}Ne(t){return null!==t&&(this.$e===t.$e&&this.He===t.He)}Ue(){return new dt(this.$e,this.He)}qe(){return this.$e}je(){return this.He}Ye(){return this.He-this.$e}Gi(){return this.He===this.$e||Number.isNaN(this.He)||Number.isNaN(this.$e)}mn(t){return null===t?this:new dt(ct(Math.min,this.qe(),t.qe(),-1/0),ct(Math.max,this.je(),t.je(),1/0))}Ke(t){if(!u(t))return;if(0===this.He-this.$e)return;const i=.5*(this.He+this.$e);let s=this.He-i,n=this.$e-i;s*=t,n*=t,this.He=i+s,this.$e=i+n}Ge(t){u(t)&&(this.He+=t,this.$e+=t)}Xe(){return{minValue:this.$e,maxValue:this.He}}static Ze(t){return null===t?null:new dt(t.minValue,t.maxValue)}}class pt{constructor(t,i){this.Je=t,this.Qe=i||null}th(){return this.Je}ih(){return this.Qe}Xe(){return{priceRange:null===this.Je?null:this.Je.Xe(),margins:this.Qe||void 0}}static Ze(t){return null===t?null:new pt(dt.Ze(t.priceRange),t.margins)}}class ft extends ht{constructor(t,i){super(t),this.sh=i}ie(){const t=this.Zn;t.Vt=!1;const i=this.sh.O();if(!this.Qn.Vt()||!i.lineVisible)return;const s=this.sh.nh();null!==s&&(t.Vt=!0,t.ct=s,t.I=i.color,t.dt=i.lineWidth,t.Xt=i.lineStyle,t.Gn=this.sh.O().id)}}class vt extends W{constructor(t,i){super(),this.be=t,this.sh=i}ji(t,i,s){t.Vt=!1,i.Vt=!1;const n=this.sh.O(),e=n.axisLabelVisible,h=""!==n.title,r=this.be;if(!e||!r.Vt())return;const l=this.sh.nh();if(null===l)return;h&&(i.ri=n.title,i.Vt=!0),i.Nt=r.ti().Ut(l/r.$t().qt()),t.ri=this.eh(n.price),t.Vt=!0;const o=this.be.ti().Xi().X(n.axisLabelColor||n.color);s.Z=o.Z;const a=n.axisLabelTextColor||o.J;t.I=a,i.I=a,s.Ei=l}eh(t){const i=this.be.Bt();return null===i?"":this.be.$t().Zi(t,i.Ht)}}class mt{constructor(t,i){this.be=t,this.Cs=i,this.hh=new ft(t,this),this.$n=new vt(t,this),this.rh=new nt(this.$n,t,t.ti())}oh(t){_(this.Cs,t),this.Tt(),this.be.ti().ah()}O(){return this.Cs}_h(){return this.hh}uh(){return this.rh}dh(){return this.$n}Tt(){this.hh.Tt(),this.$n.Tt()}nh(){const t=this.be,i=t.$t();if(t.ti().Lt().Gi()||i.Gi())return null;const s=t.Bt();return null===s?null:i.zt(this.Cs.price,s.Ht)}}class wt extends N{constructor(t){super(),this.ss=t}ti(){return this.ss}}const gt={Bar:(t,i,s,n)=>{const e=i.upColor,h=i.downColor,r=l(t(s,n)),a=o(r.Ht[0])<=o(r.Ht[3]);return{ph:r.I??(a?e:h)}},Candlestick:(t,i,s,n)=>{const e=i.upColor,h=i.downColor,r=i.borderUpColor,a=i.borderDownColor,_=i.wickUpColor,u=i.wickDownColor,c=l(t(s,n)),d=o(c.Ht[0])<=o(c.Ht[3]);return{ph:c.I??(d?e:h),fh:c.Nt??(d?r:a),mh:c.wh??(d?_:u)}},Custom:(t,i,s,n)=>({ph:l(t(s,n)).I??i.color}),Area:(t,i,s,n)=>{const e=l(t(s,n));return{ph:e.wt??i.lineColor,wt:e.wt??i.lineColor,gh:e.gh??i.topColor,bh:e.bh??i.bottomColor}},Baseline:(t,i,s,n)=>{const e=l(t(s,n));return{ph:e.Ht[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,Mh:e.Mh??i.topLineColor,yh:e.yh??i.bottomLineColor,Sh:e.Sh??i.topFillColor1,xh:e.xh??i.topFillColor2,Ph:e.Ph??i.bottomFillColor1,Ch:e.Ch??i.bottomFillColor2}},Line:(t,i,s,n)=>{const e=l(t(s,n));return{ph:e.I??i.color,wt:e.I??i.color}},Histogram:(t,i,s,n)=>({ph:l(t(s,n)).I??i.color})};class bt{constructor(t){this.Th=(t,i)=>void 0!==i?i.Ht:this.be.Xs().kh(t),this.be=t,this.Dh=gt[t.Ih()]}Rh(t,i){return this.Dh(this.Th,this.be.O(),t,i)}}function Mt(t,i,s,n,e=0,h=i.length){let r=h-e;for(;0<r;){const h=r>>1,l=e+h;n(i[l],s)===t?(e=l+1,r-=h+1):r=h}return e}const yt=Mt.bind(null,!0),St=Mt.bind(null,!1);var xt;!function(t){t[t.NearestLeft=-1]="NearestLeft",t[t.None=0]="None",t[t.NearestRight=1]="NearestRight"}(xt||(xt={}));const Pt=30;class Ct{constructor(){this.Vh=[],this.Fh=new Map,this.Eh=new Map,this.Lh=[]}Ah(){return this.Bh()>0?this.Vh[this.Vh.length-1]:null}Wh(){return this.Bh()>0?this.Oh(0):null}Gs(){return this.Bh()>0?this.Oh(this.Vh.length-1):null}Bh(){return this.Vh.length}Gi(){return 0===this.Bh()}De(t){return null!==this.zh(t,0)}kh(t){return this.$h(t)}$h(t,i=0){const s=this.zh(t,i);return null===s?null:{...this.Hh(s),Ie:this.Oh(s)}}Nh(){return this.Vh}Uh(t,i,s){if(this.Gi())return null;let n=null;for(const e of s){n=Tt(n,this.qh(t,i,e))}return n}lt(t){this.Eh.clear(),this.Fh.clear(),this.Vh=t,this.Lh=t.map(t=>t.Ie)}jh(){return this.Lh}Oh(t){return this.Vh[t].Ie}Hh(t){return this.Vh[t]}zh(t,i){const s=this.Yh(t);if(null===s&&0!==i)switch(i){case-1:return this.Kh(t);case 1:return this.Gh(t);default:throw new TypeError("Unknown search mode")}return s}Kh(t){let i=this.Xh(t);return i>0&&(i-=1),i!==this.Vh.length&&this.Oh(i)<t?i:null}Gh(t){const i=this.Zh(t);return i!==this.Vh.length&&t<this.Oh(i)?i:null}Yh(t){const i=this.Xh(t);return i===this.Vh.length||t<this.Vh[i].Ie?null:i}Xh(t){return yt(this.Vh,t,(t,i)=>t.Ie<i)}Zh(t){return St(this.Vh,t,(t,i)=>t.Ie>i)}Jh(t,i,s){let n=null;for(let e=t;e<i;e++){const t=this.Vh[e].Ht[s];Number.isNaN(t)||(null===n?n={Qh:t,tr:t}:(t<n.Qh&&(n.Qh=t),t>n.tr&&(n.tr=t)))}return n}qh(t,i,s){if(this.Gi())return null;let n=null;const e=l(this.Wh()),h=l(this.Gs()),r=Math.max(t,e),o=Math.min(i,h),a=Math.ceil(r/Pt)*Pt,_=Math.max(a,Math.floor(o/Pt)*Pt);{const t=this.Xh(r),e=this.Zh(Math.min(o,a,i));n=Tt(n,this.Jh(t,e,s))}let u=this.Fh.get(s);void 0===u&&(u=new Map,this.Fh.set(s,u));for(let t=Math.max(a+1,r);t<_;t+=Pt){const i=Math.floor(t/Pt);let e=u.get(i);if(void 0===e){const t=this.Xh(i*Pt),n=this.Zh((i+1)*Pt-1);e=this.Jh(t,n,s),u.set(i,e)}n=Tt(n,e)}{const t=this.Xh(_),i=this.Zh(o);n=Tt(n,this.Jh(t,i,s))}return n}}function Tt(t,i){if(null===t)return i;if(null===i)return t;return{Qh:Math.min(t.Qh,i.Qh),tr:Math.max(t.tr,i.tr)}}const kt={setLineStyle:n};class Dt{constructor(t){this.ir=t}et(t,i,s){this.ir.draw(t,kt)}sr(t,i,s){this.ir.drawBackground?.(t,kt)}}class It{constructor(t){this.Rn=null,this.nr=t}Dt(){const t=this.nr.renderer();if(null===t)return null;if(this.Rn?.er===t)return this.Rn.hr;const i=new Dt(t);return this.Rn={er:t,hr:i},i}rr(){return this.nr.zOrder?.()??"normal"}}class Rt{constructor(t){this.lr=null,this.ar=t}_r(){return this.ar}zs(){this.ar.updateAllViews?.()}$s(){const t=this.ar.paneViews?.()??[];if(this.lr?.er===t)return this.lr.hr;const i=t.map(t=>new It(t));return this.lr={er:t,hr:i},i}Kn(t,i){return this.ar.hitTest?.(t,i)??null}}let Vt=class extends Rt{cs(){return[]}};class Ft{constructor(t){this.ir=t}et(t,i,s){this.ir.draw(t,kt)}sr(t,i,s){this.ir.drawBackground?.(t,kt)}}class Et{constructor(t){this.Rn=null,this.nr=t}Dt(){const t=this.nr.renderer();if(null===t)return null;if(this.Rn?.er===t)return this.Rn.hr;const i=new Ft(t);return this.Rn={er:t,hr:i},i}rr(){return this.nr.zOrder?.()??"normal"}}function Lt(t){return{ri:t.text(),Ei:t.coordinate(),Fi:t.fixedCoordinate?.(),I:t.textColor(),Z:t.backColor(),Vt:t.visible?.()??!0,mi:t.tickVisible?.()??!0}}class At{constructor(t,i){this.Jt=new $,this.ur=t,this.cr=i}Dt(){return this.Jt.lt({ts:this.cr.ts(),...Lt(this.ur)}),this.Jt}}class Bt extends W{constructor(t,i){super(),this.ur=t,this.Yi=i}ji(t,i,s){const n=Lt(this.ur);s.Z=n.Z,t.I=n.I;const e=2/12*this.Yi.C();s.Di=e,s.Ii=e,s.Ei=n.Ei,s.Fi=n.Fi,t.ri=n.ri,t.Vt=n.Vt,t.mi=n.mi}}class Wt extends Rt{constructor(t,i){super(t),this.dr=null,this.pr=null,this.vr=null,this.mr=null,this.be=i}ds(){const t=this.ar.timeAxisViews?.()??[];if(this.dr?.er===t)return this.dr.hr;const i=this.be.ti().Lt(),s=t.map(t=>new At(t,i));return this.dr={er:t,hr:s},s}Hs(){const t=this.ar.priceAxisViews?.()??[];if(this.pr?.er===t)return this.pr.hr;const i=this.be.$t(),s=t.map(t=>new Bt(t,i));return this.pr={er:t,hr:s},s}wr(){const t=this.ar.priceAxisPaneViews?.()??[];if(this.vr?.er===t)return this.vr.hr;const i=t.map(t=>new Et(t));return this.vr={er:t,hr:i},i}gr(){const t=this.ar.timeAxisPaneViews?.()??[];if(this.mr?.er===t)return this.mr.hr;const i=t.map(t=>new Et(t));return this.mr={er:t,hr:i},i}br(t,i){return this.ar.autoscaleInfo?.(t,i)??null}}function Ot(t,i,s,n){t.forEach(t=>{i(t).forEach(t=>{t.rr()===s&&n.push(t)})})}function zt(t){return t.$s()}function $t(t){return t.wr()}function Ht(t){return t.gr()}const Nt=["Area","Line","Baseline"];class Ut extends wt{constructor(t,i,s,n,e){super(t),this.Yt=new Ct,this.hh=new _t(this),this.Mr=[],this.yr=new rt(this),this.Sr=null,this.Pr=null,this.Cr=null,this.Tr=[],this.Cs=s,this.kr=i;const h=new ut(this);this.ws=[h],this.rh=new nt(h,this,t),Nt.includes(this.kr)&&(this.Sr=new at(this)),this.Dr(),this.nr=n(this,this.ti(),e)}m(){null!==this.Cr&&clearTimeout(this.Cr)}Ee(t){return this.Cs.priceLineColor||t}Te(t){const i={ke:!0},s=this.$t();if(this.ti().Lt().Gi()||s.Gi()||this.Yt.Gi())return i;const n=this.ti().Lt().Ce(),e=this.Bt();if(null===n||null===e)return i;let h,r;if(t){const t=this.Yt.Ah();if(null===t)return i;h=t,r=t.Ie}else{const t=this.Yt.$h(n.yi(),-1);if(null===t)return i;if(h=this.Yt.kh(t.Ie),null===h)return i;r=t.Ie}const l=h.Ht[3],o=this.Ir().Rh(r,{Ht:h}),a=s.zt(l,e.Ht);return{ke:!1,bt:l,ri:s.Zi(l,e.Ht),Oe:s.Rr(l),ze:s.Vr(l,e.Ht),I:o.ph,Ei:a,Ie:r}}Ir(){return null!==this.Pr||(this.Pr=new bt(this)),this.Pr}O(){return this.Cs}oh(t){const i=t.priceScaleId;void 0!==i&&i!==this.Cs.priceScaleId&&this.ti().Fr(this,i),_(this.Cs,t),void 0!==t.priceFormat&&(this.Dr(),this.ti().Er()),this.ti().Lr(this),this.ti().Ar(),this.nr.Tt("options")}lt(t,i){this.Yt.lt(t),this.nr.Tt("data"),null!==this.Sr&&(i&&i.Br?this.Sr.ye():0===t.length&&this.Sr.Me());const s=this.ti().Nn(this);this.ti().Wr(s),this.ti().Lr(this),this.ti().Ar(),this.ti().ah()}Or(t){const i=new mt(this,t);return this.Mr.push(i),this.ti().Lr(this),i}zr(t){const i=this.Mr.indexOf(t);-1!==i&&this.Mr.splice(i,1),this.ti().Lr(this)}$r(){return this.Mr}Ih(){return this.kr}Bt(){const t=this.Hr();return null===t?null:{Ht:t.Ht[3],Nr:t.gt}}Hr(){const t=this.ti().Lt().Ce();if(null===t)return null;const i=t.Ur();return this.Yt.$h(i,1)}Xs(){return this.Yt}qr(t){const i=this.Yt.kh(t);return null===i?null:"Bar"===this.kr||"Candlestick"===this.kr||"Custom"===this.kr?{jr:i.Ht[0],Yr:i.Ht[1],Kr:i.Ht[2],Gr:i.Ht[3]}:i.Ht[3]}Xr(t){const i=[];Ot(this.Tr,zt,"top",i);const s=this.Sr;return null!==s&&s.Vt()?(null===this.Cr&&s.xe()&&(this.Cr=setTimeout(()=>{this.Cr=null,this.ti().Zr()},0)),s.Se(),i.unshift(s),i):i}$s(){const t=[];this.Jr()||t.push(this.yr),t.push(this.nr,this.hh);const i=this.Mr.map(t=>t._h());return t.push(...i),Ot(this.Tr,zt,"normal",t),t}Qr(){return this.tl(zt,"bottom")}il(t){return this.tl($t,t)}sl(t){return this.tl(Ht,t)}nl(t,i){return this.Tr.map(s=>s.Kn(t,i)).filter(t=>null!==t)}cs(){return[this.rh,...this.Mr.map(t=>t.uh())]}Hs(t,i){if(i!==this.hs&&!this.Jr())return[];const s=[...this.ws];for(const t of this.Mr)s.push(t.dh());return this.Tr.forEach(t=>{s.push(...t.Hs())}),s}ds(){const t=[];return this.Tr.forEach(i=>{t.push(...i.ds())}),t}br(t,i){if(void 0!==this.Cs.autoscaleInfoProvider){const s=this.Cs.autoscaleInfoProvider(()=>{const s=this.el(t,i);return null===s?null:s.Xe()});return pt.Ze(s)}return this.el(t,i)}er(){const t=this.Cs.priceFormat;return t.base??1/t.minMove}hl(){return this.rl}zs(){this.nr.Tt();for(const t of this.ws)t.Tt();for(const t of this.Mr)t.Tt();this.hh.Tt(),this.yr.Tt(),this.Sr?.Tt(),this.Tr.forEach(t=>t.zs())}$t(){return l(super.$t())}At(t){if(!(("Line"===this.kr||"Area"===this.kr||"Baseline"===this.kr)&&this.Cs.crosshairMarkerVisible))return null;const i=this.Yt.kh(t);if(null===i)return null;return{bt:i.Ht[3],vt:this.ll(),Nt:this.ol(),Ot:this.al(),Wt:this._l(t)}}Le(){return this.Cs.title}Vt(){return this.Cs.visible}ul(t){this.Tr.push(new Wt(t,this))}cl(t){this.Tr=this.Tr.filter(i=>i._r()!==t)}dl(){if("Custom"===this.kr)return t=>this.nr.pl(t)}fl(){if("Custom"===this.kr)return t=>this.nr.vl(t)}ml(){return this.Yt.jh()}Jr(){return!j(this.$t().wl())}el(t,i){if(!c(t)||!c(i)||this.Yt.Gi())return null;const s="Line"===this.kr||"Area"===this.kr||"Baseline"===this.kr||"Histogram"===this.kr?[3]:[2,1],n=this.Yt.Uh(t,i,s);let e=null!==n?new dt(n.Qh,n.tr):null,h=null;if("Histogram"===this.Ih()){const t=this.Cs.base,i=new dt(t,t);e=null!==e?e.mn(i):i}return this.Tr.forEach(s=>{const n=s.br(t,i);if(n?.priceRange){const t=new dt(n.priceRange.minValue,n.priceRange.maxValue);e=null!==e?e.mn(t):t}n?.margins&&(h=n.margins)}),new pt(e,h)}ll(){switch(this.kr){case"Line":case"Area":case"Baseline":return this.Cs.crosshairMarkerRadius}return 0}ol(){switch(this.kr){case"Line":case"Area":case"Baseline":{const t=this.Cs.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}al(){switch(this.kr){case"Line":case"Area":case"Baseline":return this.Cs.crosshairMarkerBorderWidth}return 0}_l(t){switch(this.kr){case"Line":case"Area":case"Baseline":{const t=this.Cs.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Ir().Rh(t).ph}Dr(){switch(this.Cs.priceFormat.type){case"custom":{const t=this.Cs.priceFormat.formatter;this.rl={format:t,formatTickmarks:this.Cs.priceFormat.tickmarksFormatter??(i=>i.map(t))};break}case"volume":this.rl=new Q(this.Cs.priceFormat.precision);break;case"percent":this.rl=new J(this.Cs.priceFormat.precision);break;default:{const t=Math.pow(10,this.Cs.priceFormat.precision);this.rl=new Z(t,this.Cs.priceFormat.minMove*t)}}null!==this.hs&&this.hs.gl()}tl(t,i){const s=[];return Ot(this.Tr,t,i,s),s}}const qt=[3],jt=[0,1,2,3];class Yt{constructor(t){this.Cs=t}bl(t,i,s){let n=t;if(0===this.Cs.mode)return n;const e=s.ks(),h=e.Bt();if(null===h)return n;const r=e.zt(t,h),l=s.Ml().filter(t=>t instanceof Ut).reduce((t,n)=>{if(s.Un(n)||!n.Vt())return t;const e=n.$t(),h=n.Xs();if(e.Gi()||!h.De(i))return t;const r=h.kh(i);if(null===r)return t;const l=o(n.Bt()),a=3===this.Cs.mode?jt:qt;return t.concat(a.map(t=>e.zt(r.Ht[t],l.Ht)))},[]);if(0===l.length)return n;l.sort((t,i)=>Math.abs(t-r)-Math.abs(i-r));const a=l[0];return n=e.Ds(a,h),n}}function Kt(t,i,s){return Math.min(Math.max(t,i),s)}function Gt(t,i,s){return i-t<=s}function Xt(t){const i=Math.ceil(t);return i%2==0?i-1:i}class Zt extends P{constructor(){super(...arguments),this.Yt=null}lt(t){this.Yt=t}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.Yt)return;const h=Math.max(1,Math.floor(s));t.lineWidth=h,function(t,i){t.save(),t.lineWidth%2&&t.translate(.5,.5),i(),t.restore()}(t,()=>{const r=l(this.Yt);if(r.yl){t.strokeStyle=r.Sl,n(t,r.xl),t.beginPath();for(const n of r.Pl){const e=Math.round(n.Cl*s);t.moveTo(e,-h),t.lineTo(e,i.height+h)}t.stroke()}if(r.Tl){t.strokeStyle=r.kl,n(t,r.Dl),t.beginPath();for(const s of r.Il){const n=Math.round(s.Cl*e);t.moveTo(-h,n),t.lineTo(i.width+h,n)}t.stroke()}})}}class Jt{constructor(t){this.Jt=new Zt,this.xt=!0,this.Ct=t}Tt(){this.xt=!0}Dt(){if(this.xt){const t=this.Ct.ti().O().grid,i={Tl:t.horzLines.visible,yl:t.vertLines.visible,kl:t.horzLines.color,Sl:t.vertLines.color,Dl:t.horzLines.style,xl:t.vertLines.style,Il:this.Ct.ks().Rl(),Pl:(this.Ct.ti().Lt().Rl()||[]).map(t=>({Cl:t.coord}))};this.Jt.lt(i),this.xt=!1}return this.Jt}}class Qt{constructor(t){this.nr=new Jt(t)}_h(){return this.nr}}const ti={Vl:4,Fl:1e-4};function ii(t,i){const s=100*(t-i)/i;return i<0?-s:s}function si(t,i){const s=ii(t.qe(),i),n=ii(t.je(),i);return new dt(s,n)}function ni(t,i){const s=100*(t-i)/i+100;return i<0?-s:s}function ei(t,i){const s=ni(t.qe(),i),n=ni(t.je(),i);return new dt(s,n)}function hi(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const n=Math.log10(s+i.Fl)+i.Vl;return t<0?-n:n}function ri(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const n=Math.pow(10,s-i.Vl)-i.Fl;return t<0?-n:n}function li(t,i){if(null===t)return null;const s=hi(t.qe(),i),n=hi(t.je(),i);return new dt(s,n)}function oi(t,i){if(null===t)return null;const s=ri(t.qe(),i),n=ri(t.je(),i);return new dt(s,n)}function ai(t){if(null===t)return ti;const i=Math.abs(t.je()-t.qe());if(i>=1||i<1e-15)return ti;const s=Math.ceil(Math.abs(Math.log10(i))),n=ti.Vl+s;return{Vl:n,Fl:1/Math.pow(10,n)}}class _i{constructor(t,i){if(this.El=t,this.Ll=i,function(t){if(t<0)return!1;if(t>1e18)return!0;for(let i=t;i>1;i/=10)if(i%10!=0)return!1;return!0}(this.El))this.Al=[2,2.5,2];else{this.Al=[];for(let t=this.El;1!==t;){if(t%2==0)this.Al.push(2),t/=2;else{if(t%5!=0)throw new Error("unexpected base");this.Al.push(2,2.5),t/=5}if(this.Al.length>100)throw new Error("something wrong with base")}}}Bl(t,i,s){const n=0===this.El?0:1/this.El;let e=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),h=0,r=this.Ll[0];for(;;){const t=Gt(e,n,1e-14)&&e>n+1e-14,i=Gt(e,s*r,1e-14),l=Gt(e,1,1e-14);if(!(t&&i&&l))break;e/=r,r=this.Ll[++h%this.Ll.length]}if(e<=n+1e-14&&(e=n),e=Math.max(1,e),this.Al.length>0&&(l=e,o=1,a=1e-14,Math.abs(l-o)<a))for(h=0,r=this.Al[0];Gt(e,s*r,1e-14)&&e>n+1e-14;)e/=r,r=this.Al[++h%this.Al.length];var l,o,a;return e}}class ui{constructor(t,i,s,n){this.Wl=[],this.Yi=t,this.El=i,this.Ol=s,this.zl=n}Bl(t,i){if(t<i)throw new Error("high < low");const s=this.Yi.qt(),n=(t-i)*this.$l()/s,e=new _i(this.El,[2,2.5,2]),h=new _i(this.El,[2,2,2.5]),r=new _i(this.El,[2.5,2,2]),l=[];return l.push(e.Bl(t,i,n),h.Bl(t,i,n),r.Bl(t,i,n)),function(t){if(t.length<1)throw Error("array is empty");let i=t[0];for(let s=1;s<t.length;++s)t[s]<i&&(i=t[s]);return i}(l)}Hl(){const t=this.Yi,i=t.Bt();if(null===i)return void(this.Wl=[]);const s=t.qt(),n=this.Ol(s-1,i),e=this.Ol(0,i),h=this.Yi.O().entireTextOnly?this.Nl()/2:0,r=h,l=s-1-h,o=Math.max(n,e),a=Math.min(n,e);if(o===a)return void(this.Wl=[]);const _=this.Bl(o,a);if(this.Ul(i,_,o,a,r,l),t.ql()&&this.jl(_,a,o)){const t=this.Yi.Yl();this.Kl(i,_,r,l,t,2*t)}const u=this.Wl.map(t=>t.Gl),c=this.Yi.Xl(u);for(let t=0;t<this.Wl.length;t++)this.Wl[t].Zl=c[t]}Rl(){return this.Wl}Nl(){return this.Yi.C()}$l(){return Math.ceil(2.5*this.Nl())}Ul(t,i,s,n,e,h){const r=this.Wl,l=this.Yi;let o=s%i;o+=o<0?i:0;const a=s>=n?1:-1;let _=null,u=0;for(let c=s-o;c>n;c-=i){const s=this.zl(c,t,!0);null!==_&&Math.abs(s-_)<this.$l()||(s<e||s>h||(u<r.length?(r[u].Cl=s,r[u].Zl=l.Jl(c),r[u].Gl=c):r.push({Cl:s,Zl:l.Jl(c),Gl:c}),u++,_=s,l.Ql()&&(i=this.Bl(c*a,n))))}r.length=u}Kl(t,i,s,n,e,h){const r=this.Wl,l=this.io(t,s,e,h),o=this.io(t,n,-h,-e),a=this.zl(0,t,!0)-this.zl(i,t,!0);r.length>0&&r[0].Cl-l.Cl<a/2&&r.shift(),r.length>0&&o.Cl-r[r.length-1].Cl<a/2&&r.pop(),r.unshift(l),r.push(o)}io(t,i,s,n){const e=(s+n)/2,h=this.Ol(i+s,t),r=this.Ol(i+n,t),l=Math.min(h,r),o=Math.max(h,r),a=Math.max(.1,this.Bl(o,l)),_=this.Ol(i+e,t),u=_-_%a,c=this.zl(u,t,!0);return{Zl:this.Yi.Jl(u),Cl:c,Gl:u}}jl(t,i,s){let n=o(this.Yi.th());return this.Yi.Ql()&&(n=oi(n,this.Yi.so())),n.qe()-i<t&&s-n.je()<t}}function ci(t){return t.slice().sort((t,i)=>l(t.ls())-l(i.ls()))}var di;!function(t){t[t.Normal=0]="Normal",t[t.Logarithmic=1]="Logarithmic",t[t.Percentage=2]="Percentage",t[t.IndexedTo100=3]="IndexedTo100"}(di||(di={}));const pi=new J,fi=new Z(100,1);class vi{constructor(t,i,s,n,e){this.no=0,this.eo=null,this.Je=null,this.ho=null,this.ro={lo:!1,oo:null},this.ao=!1,this._o=0,this.uo=0,this.co=new a,this.do=new a,this.po=[],this.fo=null,this.vo=null,this.mo=null,this.wo=null,this.bo=null,this.rl=fi,this.Mo=ai(null),this.yo=t,this.Cs=i,this.So=s,this.xo=n,this.Po=e,this.Co=new ui(this,100,this.To.bind(this),this.ko.bind(this))}wl(){return this.yo}O(){return this.Cs}oh(t){if(_(this.Cs,t),this.gl(),void 0!==t.mode&&this.Do({se:t.mode}),void 0!==t.scaleMargins){const i=r(t.scaleMargins.top),s=r(t.scaleMargins.bottom);if(i<0||i>1)throw new Error(`Invalid top margin - expect value between 0 and 1, given=${i}`);if(s<0||s>1)throw new Error(`Invalid bottom margin - expect value between 0 and 1, given=${s}`);if(i+s>1)throw new Error(`Invalid margins - sum of margins must be less than 1, given=${i+s}`);this.Io(),this.mo=null}}Ro(){return this.Cs.autoScale}Vo(){return this.ao}Ql(){return 1===this.Cs.mode}We(){return 2===this.Cs.mode}Fo(){return 3===this.Cs.mode}so(){return this.Mo}se(){return{nn:this.Cs.autoScale,Eo:this.Cs.invertScale,se:this.Cs.mode}}Do(t){const i=this.se();let s=null;void 0!==t.nn&&(this.Cs.autoScale=t.nn),void 0!==t.se&&(this.Cs.mode=t.se,2!==t.se&&3!==t.se||(this.Cs.autoScale=!0),this.ro.lo=!1),1===i.se&&t.se!==i.se&&(!function(t,i){if(null===t)return!1;const s=ri(t.qe(),i),n=ri(t.je(),i);return isFinite(s)&&isFinite(n)}(this.Je,this.Mo)?this.Cs.autoScale=!0:(s=oi(this.Je,this.Mo),null!==s&&this.Lo(s))),1===t.se&&t.se!==i.se&&(s=li(this.Je,this.Mo),null!==s&&this.Lo(s));const n=i.se!==this.Cs.mode;n&&(2===i.se||this.We())&&this.gl(),n&&(3===i.se||this.Fo())&&this.gl(),void 0!==t.Eo&&i.Eo!==t.Eo&&(this.Cs.invertScale=t.Eo,this.Ao()),this.do.p(i,this.se())}Bo(){return this.do}C(){return this.So.fontSize}qt(){return this.no}Wo(t){this.no!==t&&(this.no=t,this.Io(),this.mo=null)}Oo(){if(this.eo)return this.eo;const t=this.qt()-this.zo()-this.$o();return this.eo=t,t}th(){return this.Ho(),this.Je}Lo(t,i){const s=this.Je;(i||null===s&&null!==t||null!==s&&!s.Ne(t))&&(this.mo=null,this.Je=t)}No(t){this.Lo(t),this.Uo(null!==t)}Gi(){return this.Ho(),0===this.no||!this.Je||this.Je.Gi()}qo(t){return this.Eo()?t:this.qt()-1-t}zt(t,i){return this.We()?t=ii(t,i):this.Fo()&&(t=ni(t,i)),this.ko(t,i)}jo(t,i,s){this.Ho();const n=this.$o(),e=l(this.th()),h=e.qe(),r=e.je(),o=this.Oo()-1,a=this.Eo(),_=o/(r-h),u=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.Yo();for(let s=u;s<c;s++){const e=t[s],r=e.bt;if(isNaN(r))continue;let l=r;null!==d&&(l=d(e.bt,i));const o=n+_*(l-h),u=a?o:this.no-1-o;e.ct=u}}Ko(t,i,s){this.Ho();const n=this.$o(),e=l(this.th()),h=e.qe(),r=e.je(),o=this.Oo()-1,a=this.Eo(),_=o/(r-h),u=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.Yo();for(let s=u;s<c;s++){const e=t[s];let r=e.jr,l=e.Yr,o=e.Kr,u=e.Gr;null!==d&&(r=d(e.jr,i),l=d(e.Yr,i),o=d(e.Kr,i),u=d(e.Gr,i));let c=n+_*(r-h),p=a?c:this.no-1-c;e.Go=p,c=n+_*(l-h),p=a?c:this.no-1-c,e.Xo=p,c=n+_*(o-h),p=a?c:this.no-1-c,e.Zo=p,c=n+_*(u-h),p=a?c:this.no-1-c,e.Jo=p}}Ds(t,i){const s=this.To(t,i);return this.Qo(s,i)}Qo(t,i){let s=t;return this.We()?s=function(t,i){return i<0&&(t=-t),t/100*i+i}(s,i):this.Fo()&&(s=function(t,i){return t-=100,i<0&&(t=-t),t/100*i+i}(s,i)),s}Ml(){return this.po}Rt(){return this.vo||(this.vo=ci(this.po)),this.vo}ta(t){-1===this.po.indexOf(t)&&(this.po.push(t),this.gl(),this.ia())}sa(t){const i=this.po.indexOf(t);if(-1===i)throw new Error("source is not attached to scale");this.po.splice(i,1),0===this.po.length&&(this.Do({nn:!0}),this.Lo(null)),this.gl(),this.ia()}Bt(){let t=null;for(const i of this.po){const s=i.Bt();null!==s&&((null===t||s.Nr<t.Nr)&&(t=s))}return null===t?null:t.Ht}Eo(){return this.Cs.invertScale}Rl(){const t=null===this.Bt();if(null!==this.mo&&(t||this.mo.na===t))return this.mo.Rl;this.Co.Hl();const i=this.Co.Rl();return this.mo={Rl:i,na:t},this.co.p(),i}ea(){return this.co}ha(t){this.We()||this.Fo()||null===this.wo&&null===this.ho&&(this.Gi()||(this.wo=this.no-t,this.ho=l(this.th()).Ue()))}ra(t){if(this.We()||this.Fo())return;if(null===this.wo)return;this.Do({nn:!1}),(t=this.no-t)<0&&(t=0);let i=(this.wo+.2*(this.no-1))/(t+.2*(this.no-1));const s=l(this.ho).Ue();i=Math.max(i,.1),s.Ke(i),this.Lo(s)}la(){this.We()||this.Fo()||(this.wo=null,this.ho=null)}oa(t){this.Ro()||null===this.bo&&null===this.ho&&(this.Gi()||(this.bo=t,this.ho=l(this.th()).Ue()))}aa(t){if(this.Ro())return;if(null===this.bo)return;const i=l(this.th()).Ye()/(this.Oo()-1);let s=t-this.bo;this.Eo()&&(s*=-1);const n=s*i,e=l(this.ho).Ue();e.Ge(n),this.Lo(e,!0),this.mo=null}_a(){this.Ro()||null!==this.bo&&(this.bo=null,this.ho=null)}hl(){return this.rl||this.gl(),this.rl}Zi(t,i){switch(this.Cs.mode){case 2:return this.ua(ii(t,i));case 3:return this.hl().format(ni(t,i));default:return this.eh(t)}}Jl(t){switch(this.Cs.mode){case 2:return this.ua(t);case 3:return this.hl().format(t);default:return this.eh(t)}}Xl(t){switch(this.Cs.mode){case 2:return this.ca(t);case 3:return this.hl().formatTickmarks(t);default:return this.da(t)}}Rr(t){return this.eh(t,l(this.fo).hl())}Vr(t,i){return t=ii(t,i),this.ua(t,pi)}pa(){return this.po}fa(t){this.ro={oo:t,lo:!1}}zs(){this.po.forEach(t=>t.zs())}ql(){return this.Cs.ensureEdgeTickMarksVisible&&this.Ro()}Yl(){return this.C()/2}gl(){this.mo=null;let t=1/0;this.fo=null;for(const i of this.po)i.ls()<t&&(t=i.ls(),this.fo=i);let i=100;null!==this.fo&&(i=Math.round(this.fo.er())),this.rl=fi,this.We()?(this.rl=pi,i=100):this.Fo()?(this.rl=new Z(100,1),i=100):null!==this.fo&&(this.rl=this.fo.hl()),this.Co=new ui(this,i,this.To.bind(this),this.ko.bind(this)),this.Co.Hl()}ia(){this.vo=null}va(){return null===this.fo||this.We()||this.Fo()?1:1/this.fo.er()}Xi(){return this.Po}Uo(t){this.ao=t}zo(){return this.Eo()?this.Cs.scaleMargins.bottom*this.qt()+this.uo:this.Cs.scaleMargins.top*this.qt()+this._o}$o(){return this.Eo()?this.Cs.scaleMargins.top*this.qt()+this._o:this.Cs.scaleMargins.bottom*this.qt()+this.uo}Ho(){this.ro.lo||(this.ro.lo=!0,this.ma())}Io(){this.eo=null}ko(t,i){if(this.Ho(),this.Gi())return 0;t=this.Ql()&&t?hi(t,this.Mo):t;const s=l(this.th()),n=this.$o()+(this.Oo()-1)*(t-s.qe())/s.Ye();return this.qo(n)}To(t,i){if(this.Ho(),this.Gi())return 0;const s=this.qo(t),n=l(this.th()),e=n.qe()+n.Ye()*((s-this.$o())/(this.Oo()-1));return this.Ql()?ri(e,this.Mo):e}Ao(){this.mo=null,this.Co.Hl()}ma(){if(this.Vo()&&!this.Ro())return;const t=this.ro.oo;if(null===t)return;let i=null;const s=this.pa();let n=0,e=0;for(const h of s){if(!h.Vt())continue;const s=h.Bt();if(null===s)continue;const r=h.br(t.Ur(),t.yi());let o=r&&r.th();if(null!==o){switch(this.Cs.mode){case 1:o=li(o,this.Mo);break;case 2:o=si(o,s.Ht);break;case 3:o=ei(o,s.Ht)}if(i=null===i?o:i.mn(l(o)),null!==r){const t=r.ih();null!==t&&(n=Math.max(n,t.above),e=Math.max(e,t.below))}}}if(this.ql()&&(n=Math.max(n,this.Yl()),e=Math.max(e,this.Yl())),n===this._o&&e===this.uo||(this._o=n,this.uo=e,this.mo=null,this.Io()),null!==i){if(i.qe()===i.je()){const t=5*this.va();this.Ql()&&(i=oi(i,this.Mo)),i=new dt(i.qe()-t,i.je()+t),this.Ql()&&(i=li(i,this.Mo))}if(this.Ql()){const t=oi(i,this.Mo),s=ai(t);if(h=s,r=this.Mo,h.Vl!==r.Vl||h.Fl!==r.Fl){const n=null!==this.ho?oi(this.ho,this.Mo):null;this.Mo=s,i=li(t,s),null!==n&&(this.ho=li(n,s))}}this.Lo(i)}else null===this.Je&&(this.Lo(new dt(-.5,.5)),this.Mo=ai(null));var h,r}Yo(){return this.We()?ii:this.Fo()?ni:this.Ql()?t=>hi(t,this.Mo):null}wa(t,i,s){return void 0===i?(void 0===s&&(s=this.hl()),s.format(t)):i(t)}ga(t,i,s){return void 0===i?(void 0===s&&(s=this.hl()),s.formatTickmarks(t)):i(t)}eh(t,i){return this.wa(t,this.xo.priceFormatter,i)}da(t,i){const s=this.xo.priceFormatter;return this.ga(t,this.xo.tickmarksPriceFormatter??(s?t=>t.map(s):void 0),i)}ua(t,i){return this.wa(t,this.xo.percentageFormatter,i)}ca(t,i){const s=this.xo.percentageFormatter;return this.ga(t,this.xo.tickmarksPercentageFormatter??(s?t=>t.map(s):void 0),i)}}function mi(t){return t instanceof Ut}class wi{constructor(t,i){this.po=[],this.ba=new Map,this.no=0,this.Ma=0,this.ya=1,this.vo=null,this.Sa=!1,this.xa=new a,this.Tr=[],this.cr=t,this.ss=i,this.Pa=new Qt(this);const s=i.O();this.Ca=this.Ta("left",s.leftPriceScale),this.ka=this.Ta("right",s.rightPriceScale),this.Ca.Bo().i(this.Da.bind(this,this.Ca),this),this.ka.Bo().i(this.Da.bind(this,this.ka),this),this.Ia(s)}Ia(t){if(t.leftPriceScale&&this.Ca.oh(t.leftPriceScale),t.rightPriceScale&&this.ka.oh(t.rightPriceScale),t.localization&&(this.Ca.gl(),this.ka.gl()),t.overlayPriceScales){const i=Array.from(this.ba.values());for(const s of i){const i=l(s[0].$t());i.oh(t.overlayPriceScales),t.localization&&i.gl()}}}Ra(t){switch(t){case"left":return this.Ca;case"right":return this.ka}return this.ba.has(t)?r(this.ba.get(t))[0].$t():null}m(){this.ti().Va().u(this),this.Ca.Bo().u(this),this.ka.Bo().u(this),this.po.forEach(t=>{t.m&&t.m()}),this.Tr=this.Tr.filter(t=>{const i=t._r();return i.detached&&i.detached(),!1}),this.xa.p()}Fa(){return this.ya}Ea(t){this.ya=t}ti(){return this.ss}ts(){return this.Ma}qt(){return this.no}La(t){this.Ma=t,this.Aa()}Wo(t){this.no=t,this.Ca.Wo(t),this.ka.Wo(t),this.po.forEach(i=>{if(this.Un(i)){const s=i.$t();null!==s&&s.Wo(t)}}),this.Aa()}Ba(t){this.Sa=t}Wa(){return this.Sa}Oa(){return this.po.filter(mi)}Ml(){return this.po}Un(t){const i=t.$t();return null===i||this.Ca!==i&&this.ka!==i}ta(t,i,s){this.za(t,i,s?t.ls():this.po.length)}sa(t,i){const s=this.po.indexOf(t);h(-1!==s,"removeDataSource: invalid data source"),this.po.splice(s,1),i||this.po.forEach((t,i)=>t._s(i));const n=l(t.$t()).wl();if(this.ba.has(n)){const i=r(this.ba.get(n)),s=i.indexOf(t);-1!==s&&(i.splice(s,1),0===i.length&&this.ba.delete(n))}const e=t.$t();e&&e.Ml().indexOf(t)>=0&&(e.sa(t),this.$a(e)),this.vo=null}jn(t){return t===this.Ca?"left":t===this.ka?"right":"overlay"}Ha(){return this.Ca}Na(){return this.ka}Ua(t,i){t.ha(i)}qa(t,i){t.ra(i),this.Aa()}ja(t){t.la()}Ya(t,i){t.oa(i)}Ka(t,i){t.aa(i),this.Aa()}Ga(t){t._a()}Aa(){this.po.forEach(t=>{t.zs()})}ks(){let t=null;return this.ss.O().rightPriceScale.visible&&0!==this.ka.Ml().length?t=this.ka:this.ss.O().leftPriceScale.visible&&0!==this.Ca.Ml().length?t=this.Ca:0!==this.po.length&&(t=this.po[0].$t()),null===t&&(t=this.ka),t}qn(){let t=null;return this.ss.O().rightPriceScale.visible?t=this.ka:this.ss.O().leftPriceScale.visible&&(t=this.Ca),t}$a(t){null!==t&&t.Ro()&&this.Xa(t)}Za(t){const i=this.cr.Ce();t.Do({nn:!0}),null!==i&&t.fa(i),this.Aa()}Ja(){this.Xa(this.Ca),this.Xa(this.ka)}Qa(){this.$a(this.Ca),this.$a(this.ka),this.po.forEach(t=>{this.Un(t)&&this.$a(t.$t())}),this.Aa(),this.ss.ah()}Rt(){return null===this.vo&&(this.vo=ci(this.po)),this.vo}t_(t,i){i=Kt(i,0,this.po.length-1);const s=this.po.indexOf(t);h(-1!==s,"setSeriesOrder: invalid data source"),this.po.splice(s,1),this.po.splice(i,0,t),this.po.forEach((t,i)=>t._s(i)),this.vo=null;for(const t of[this.Ca,this.ka])t.ia(),t.gl();this.ss.ah()}Ft(){return this.Rt().filter(mi)}i_(){return this.xa}s_(){return this.Pa}ul(t){this.Tr.push(new Vt(t))}cl(t){this.Tr=this.Tr.filter(i=>i._r()!==t),t.detached&&t.detached(),this.ss.ah()}n_(){return this.Tr}nl(t,i){return this.Tr.map(s=>s.Kn(t,i)).filter(t=>null!==t)}Xa(t){const i=t.pa();if(i&&i.length>0&&!this.cr.Gi()){const i=this.cr.Ce();null!==i&&t.fa(i)}t.zs()}za(t,i,s){let n=this.Ra(i);if(null===n&&(n=this.Ta(i,this.ss.O().overlayPriceScales)),this.po.splice(s,0,t),!j(i)){const s=this.ba.get(i)||[];s.push(t),this.ba.set(i,s)}t._s(s),n.ta(t),t.us(n),this.$a(n),this.vo=null}Da(t,i,s){i.se!==s.se&&this.Xa(t)}Ta(t,i){const s={visible:!0,autoScale:!0,...f(i)},n=new vi(t,s,this.ss.O().layout,this.ss.O().localization,this.ss.Xi());return n.Wo(this.qt()),n}}function gi(t,i){return!i||"top"===t&&"top"!==i||"normal"===t&&"bottom"===i}function bi(t){return{e_:t.e_,h_:{Gn:t.r_.externalId},l_:t.r_.cursorStyle}}function Mi(t,i,s,n){for(const e of t){const t=e.Dt(n);if(null!==t&&t.Kn){const n=t.Kn(i,s);if(null!==n)return{o_:e,h_:n}}}return null}function yi(t){return void 0!==t.$s}function Si(t,i,s){const n=[t,...t.Rt()],e=function(t,i,s){let n,e;for(const h of t){const t=h.nl?.(i,s)??[];for(const i of t)gi(i.zOrder,n?.zOrder)&&(n=i,e=h)}return n&&e?{r_:n,e_:e}:null}(n,i,s);if("top"===e?.r_.zOrder)return bi(e);for(const h of n){if(e&&e.e_===h&&"bottom"!==e.r_.zOrder&&!e.r_.isBackground)return bi(e);if(yi(h)){const n=Mi(h.$s(t),i,s,t);if(null!==n)return{e_:h,o_:n.o_,h_:n.h_}}if(e&&e.e_===h&&"bottom"!==e.r_.zOrder&&e.r_.isBackground)return bi(e)}return e?.r_?bi(e):null}class xi{constructor(t,i,s=50){this.Tn=0,this.kn=1,this.Dn=1,this.Rn=new Map,this.In=new Map,this.a_=t,this.__=i,this.Vn=s}u_(t){const i=t.time,s=this.__.cacheKey(i),n=this.Rn.get(s);if(void 0!==n)return n.c_;if(this.Tn===this.Vn){const t=this.In.get(this.Dn);this.In.delete(this.Dn),this.Rn.delete(r(t)),this.Dn++,this.Tn--}const e=this.a_(t);return this.Rn.set(s,{c_:e,An:this.kn}),this.In.set(this.kn,s),this.Tn++,this.kn++,e}}class Pi{constructor(t,i){h(t<=i,"right should be >= left"),this.d_=t,this.p_=i}Ur(){return this.d_}yi(){return this.p_}f_(){return this.p_-this.d_+1}De(t){return this.d_<=t&&t<=this.p_}Ne(t){return this.d_===t.Ur()&&this.p_===t.yi()}}function Ci(t,i){return null===t||null===i?t===i:t.Ne(i)}class Ti{constructor(){this.v_=new Map,this.Rn=null,this.m_=!1}w_(t){this.m_=t,this.Rn=null}g_(t,i){this.b_(i),this.Rn=null;for(let s=i;s<t.length;++s){const i=t[s];let n=this.v_.get(i.timeWeight);void 0===n&&(n=[],this.v_.set(i.timeWeight,n)),n.push({index:s,time:i.time,weight:i.timeWeight,originalTime:i.originalTime})}}M_(t,i,s,n,e){const h=Math.ceil(i/t);return null!==this.Rn&&this.Rn.y_===h&&e===this.Rn.S_&&s===this.Rn.x_||(this.Rn={S_:e,x_:s,Rl:this.P_(h,s,n),y_:h}),this.Rn.Rl}b_(t){if(0===t)return void this.v_.clear();const i=[];this.v_.forEach((s,n)=>{t<=s[0].index?i.push(n):s.splice(yt(s,t,i=>i.index<t),1/0)});for(const t of i)this.v_.delete(t)}P_(t,i,s){let n=[];const e=t=>!i||s.has(t.index);for(const i of Array.from(this.v_.keys()).sort((t,i)=>i-t)){if(!this.v_.get(i))continue;const s=n;n=[];const h=s.length;let l=0;const o=r(this.v_.get(i)),a=o.length;let _=1/0,u=-1/0;for(let i=0;i<a;i++){const r=o[i],a=r.index;for(;l<h;){const t=s[l],i=t.index;if(!(i<a&&e(t))){_=i;break}l++,n.push(t),u=i,_=1/0}if(_-a>=t&&a-u>=t&&e(r))n.push(r),u=a;else if(this.m_)return s}for(;l<h;l++)e(s[l])&&n.push(s[l])}return n}}class ki{constructor(t){this.C_=t}T_(){return null===this.C_?null:new Pi(Math.floor(this.C_.Ur()),Math.ceil(this.C_.yi()))}k_(){return this.C_}static D_(){return new ki(null)}}function Di(t,i){return t.weight>i.weight?t:i}class Ii{constructor(t,i,s,n){this.Ma=0,this.I_=null,this.R_=[],this.bo=null,this.wo=null,this.V_=new Ti,this.F_=new Map,this.E_=ki.D_(),this.L_=!0,this.A_=new a,this.B_=new a,this.W_=new a,this.O_=null,this.z_=null,this.H_=new Map,this.N_=-1,this.U_=[],this.Cs=i,this.xo=s,this.q_=i.rightOffset,this.j_=i.barSpacing,this.ss=t,this.Y_(i),this.__=n,this.K_(),this.V_.w_(i.uniformDistribution),this.G_()}O(){return this.Cs}X_(t){_(this.xo,t),this.Z_(),this.K_()}oh(t,i){_(this.Cs,t),this.Cs.fixLeftEdge&&this.J_(),this.Cs.fixRightEdge&&this.Q_(),void 0!==t.barSpacing&&this.ss.pn(t.barSpacing),void 0!==t.rightOffset&&this.ss.fn(t.rightOffset),this.Y_(t),void 0===t.minBarSpacing&&void 0===t.maxBarSpacing||this.ss.pn(t.barSpacing??this.j_),void 0!==t.ignoreWhitespaceIndices&&t.ignoreWhitespaceIndices!==this.Cs.ignoreWhitespaceIndices&&this.G_(),this.Z_(),this.K_(),this.W_.p()}Is(t){return this.R_[t]?.time??null}ns(t){return this.R_[t]??null}tu(t,i){if(this.R_.length<1)return null;if(this.__.key(t)>this.__.key(this.R_[this.R_.length-1].time))return i?this.R_.length-1:null;const s=yt(this.R_,this.__.key(t),(t,i)=>this.__.key(t.time)<i);return this.__.key(t)<this.__.key(this.R_[s].time)?i?s:null:s}Gi(){return 0===this.Ma||0===this.R_.length||null===this.I_}iu(){return this.R_.length>0}Ce(){return this.su(),this.E_.T_()}nu(){return this.su(),this.E_.k_()}eu(){const t=this.Ce();if(null===t)return null;const i={from:t.Ur(),to:t.yi()};return this.hu(i)}hu(t){const i=Math.round(t.from),s=Math.round(t.to),n=l(this.ru()),e=l(this.lu());return{from:l(this.ns(Math.max(n,i))),to:l(this.ns(Math.min(e,s)))}}ou(t){return{from:l(this.tu(t.from,!0)),to:l(this.tu(t.to,!0))}}ts(){return this.Ma}La(t){if(!isFinite(t)||t<=0)return;if(this.Ma===t)return;const i=this.nu(),s=this.Ma;if(this.Ma=t,this.L_=!0,this.Cs.lockVisibleTimeRangeOnResize&&0!==s){const i=this.j_*t/s;this.j_=i}if(this.Cs.fixLeftEdge&&null!==i&&i.Ur()<=0){const i=s-t;this.q_-=Math.round(i/this.j_)+1,this.L_=!0}this.au(),this._u()}jt(t){if(this.Gi()||!c(t))return 0;const i=this.uu()+this.q_-t;return this.Ma-(i+.5)*this.j_-1}cu(t,i){const s=this.uu(),n=void 0===i?0:i.from,e=void 0===i?t.length:i.to;for(let i=n;i<e;i++){const n=t[i].gt,e=s+this.q_-n,h=this.Ma-(e+.5)*this.j_-1;t[i].ut=h}}du(t,i){const s=Math.ceil(this.pu(t));return i&&this.Cs.ignoreWhitespaceIndices&&!this.fu(s)?this.vu(s):s}fn(t){this.L_=!0,this.q_=t,this._u(),this.ss.mu(),this.ss.ah()}wu(){return this.j_}pn(t){const i=this.j_;if(this.gu(t),void 0!==this.Cs.rightOffsetPixels&&0!==i){const t=this.q_*i/this.j_;this.q_=t}this._u(),this.ss.mu(),this.ss.ah()}bu(){return this.q_}Rl(){if(this.Gi())return null;if(null!==this.z_)return this.z_;const t=this.j_,i=5*(this.ss.O().layout.fontSize+4)/8*(this.Cs.tickMarkMaxCharacterLength||8),s=Math.round(i/t),n=l(this.Ce()),e=Math.max(n.Ur(),n.Ur()-s),h=Math.max(n.yi(),n.yi()-s),r=this.V_.M_(t,i,this.Cs.ignoreWhitespaceIndices,this.H_,this.N_),o=this.ru()+s,a=this.lu()-s,_=this.Mu(),u=this.Cs.fixLeftEdge||_,c=this.Cs.fixRightEdge||_;let d=0;for(const t of r){if(!(e<=t.index&&t.index<=h))continue;let s;d<this.U_.length?(s=this.U_[d],s.coord=this.jt(t.index),s.label=this.yu(t),s.weight=t.weight):(s={needAlignCoordinate:!1,coord:this.jt(t.index),label:this.yu(t),weight:t.weight},this.U_.push(s)),this.j_>i/2&&!_?s.needAlignCoordinate=!1:s.needAlignCoordinate=u&&t.index<=o||c&&t.index>=a,d++}return this.U_.length=d,this.z_=this.U_,this.U_}Su(){let t;this.L_=!0,this.pn(this.Cs.barSpacing),t=void 0!==this.Cs.rightOffsetPixels?this.Cs.rightOffsetPixels/this.wu():this.Cs.rightOffset,this.fn(t)}xu(t){this.L_=!0,this.I_=t,this._u(),this.J_()}Pu(t,i){const s=this.pu(t),n=this.wu(),e=n+i*(n/10);this.pn(e),this.Cs.rightBarStaysOnScroll||this.fn(this.bu()+(s-this.pu(t)))}ha(t){this.bo&&this._a(),null===this.wo&&null===this.O_&&(this.Gi()||(this.wo=t,this.Cu()))}ra(t){if(null===this.O_)return;const i=Kt(this.Ma-t,0,this.Ma),s=Kt(this.Ma-l(this.wo),0,this.Ma);0!==i&&0!==s&&this.pn(this.O_.wu*i/s)}la(){null!==this.wo&&(this.wo=null,this.Tu())}oa(t){null===this.bo&&null===this.O_&&(this.Gi()||(this.bo=t,this.Cu()))}aa(t){if(null===this.bo)return;const i=(this.bo-t)/this.wu();this.q_=l(this.O_).bu+i,this.L_=!0,this._u()}_a(){null!==this.bo&&(this.bo=null,this.Tu())}ku(){this.Du(this.Cs.rightOffset)}Du(t,i=400){if(!isFinite(t))throw new RangeError("offset is required and must be finite number");if(!isFinite(i)||i<=0)throw new RangeError("animationDuration (optional) must be finite positive number");const s=this.q_,n=performance.now();this.ss.un({Iu:t=>(t-n)/i>=1,Ru:e=>{const h=(e-n)/i;return h>=1?t:s+(t-s)*h}})}Tt(t,i){this.L_=!0,this.R_=t,this.V_.g_(t,i),this._u()}Vu(){return this.A_}Fu(){return this.B_}Eu(){return this.W_}uu(){return this.I_||0}Lu(t,i){const s=t.f_(),n=i&&this.Cs.rightOffsetPixels||0;this.gu((this.Ma-n)/s),this.q_=t.yi()-this.uu(),i&&(this.q_=n?n/this.wu():this.Cs.rightOffset),this._u(),this.L_=!0,this.ss.mu(),this.ss.ah()}Au(){const t=this.ru(),i=this.lu();null!==t&&null!==i&&this.Lu(new Pi(t,i),!0)}Bu(t){const i=new Pi(t.from,t.to);this.Lu(i)}es(t){return void 0!==this.xo.timeFormatter?this.xo.timeFormatter(t.originalTime):this.__.formatHorzItem(t.time)}G_(){if(!this.Cs.ignoreWhitespaceIndices)return;this.H_.clear();const t=this.ss.Ks();for(const i of t)for(const t of i.ml())this.H_.set(t,!0);this.N_++}Mu(){const t=this.ss.O().handleScroll,i=this.ss.O().handleScale;return!(t.horzTouchDrag||t.mouseWheel||t.pressedMouseMove||t.vertTouchDrag||i.axisDoubleClickReset.time||i.axisPressedMouseMove.time||i.mouseWheel||i.pinch)}ru(){return 0===this.R_.length?null:0}lu(){return 0===this.R_.length?null:this.R_.length-1}Wu(t){return(this.Ma-1-t)/this.j_}pu(t){const i=this.Wu(t),s=this.uu()+this.q_-i;return Math.round(1e6*s)/1e6}gu(t){const i=this.j_;this.j_=t,this.au(),i!==this.j_&&(this.L_=!0,this.Ou())}su(){if(!this.L_)return;if(this.L_=!1,this.Gi())return void this.zu(ki.D_());const t=this.uu(),i=this.Ma/this.j_,s=this.q_+t,n=new Pi(s-i+1,s);this.zu(new ki(n))}au(){const t=Kt(this.j_,this.$u(),this.Hu());this.j_!==t&&(this.j_=t,this.L_=!0)}Hu(){return this.Cs.maxBarSpacing>0?this.Cs.maxBarSpacing:.5*this.Ma}$u(){return this.Cs.fixLeftEdge&&this.Cs.fixRightEdge&&0!==this.R_.length?this.Ma/this.R_.length:this.Cs.minBarSpacing}_u(){const t=this.Nu();null!==t&&this.q_<t&&(this.q_=t,this.L_=!0);const i=this.Uu();this.q_>i&&(this.q_=i,this.L_=!0)}Nu(){const t=this.ru(),i=this.I_;if(null===t||null===i)return null;return t-i-1+(this.Cs.fixLeftEdge?this.Ma/this.j_:Math.min(2,this.R_.length))}Uu(){return this.Cs.fixRightEdge?0:this.Ma/this.j_-Math.min(2,this.R_.length)}Cu(){this.O_={wu:this.wu(),bu:this.bu()}}Tu(){this.O_=null}yu(t){let i=this.F_.get(t.weight);return void 0===i&&(i=new xi(t=>this.qu(t),this.__),this.F_.set(t.weight,i)),i.u_(t)}qu(t){return this.__.formatTickmark(t,this.xo)}zu(t){const i=this.E_;this.E_=t,Ci(i.T_(),this.E_.T_())||this.A_.p(),Ci(i.k_(),this.E_.k_())||this.B_.p(),this.Ou()}Ou(){this.z_=null}Z_(){this.Ou(),this.F_.clear()}K_(){this.__.updateFormatter(this.xo)}J_(){if(!this.Cs.fixLeftEdge)return;const t=this.ru();if(null===t)return;const i=this.Ce();if(null===i)return;const s=i.Ur()-t;if(s<0){const t=this.q_-s-1;this.fn(t)}this.au()}Q_(){this._u(),this.au()}fu(t){return!this.Cs.ignoreWhitespaceIndices||(this.H_.get(t)||!1)}vu(t){const i=function*(t){const i=Math.round(t),s=i<t;let n=1;for(;;)s?(yield i+n,yield i-n):(yield i-n,yield i+n),n++}(t),s=this.lu();for(;s;){const t=i.next().value;if(this.H_.get(t))return t;if(t<0||t>s)break}return t}Y_(t){if(void 0!==t.rightOffsetPixels){const i=t.rightOffsetPixels/(t.barSpacing||this.j_);this.ss.fn(i)}}}var Ri,Vi,Fi,Ei,Li;!function(t){t[t.OnTouchEnd=0]="OnTouchEnd",t[t.OnNextTap=1]="OnNextTap"}(Ri||(Ri={}));class Ai{constructor(t,i,s){this.ju=[],this.Yu=[],this.Ma=0,this.Ku=null,this.Gu=new a,this.Xu=new a,this.Zu=null,this.Ju=t,this.Cs=i,this.__=s,this.Po=new S(this.Cs.layout.colorParsers),this.Qu=new b(this),this.cr=new Ii(this,i.timeScale,this.Cs.localization,s),this.Pt=new q(this,i.crosshair),this.tc=new Yt(i.crosshair),i.addDefaultPane&&(this.sc(0),this.ju[0].Ea(2)),this.nc=this.ec(0),this.hc=this.ec(1)}Er(){this.rc(Y.bn())}ah(){this.rc(Y.gn())}Zr(){this.rc(new Y(1))}Lr(t){const i=this.lc(t);this.rc(i)}oc(){return this.Ku}ac(t){if(this.Ku?.e_===t?.e_&&this.Ku?.h_?.Gn===t?.h_?.Gn)return;const i=this.Ku;this.Ku=t,null!==i&&this.Lr(i.e_),null!==t&&t.e_!==i?.e_&&this.Lr(t.e_)}O(){return this.Cs}oh(t){_(this.Cs,t),this.ju.forEach(i=>i.Ia(t)),void 0!==t.timeScale&&this.cr.oh(t.timeScale),void 0!==t.localization&&this.cr.X_(t.localization),(t.leftPriceScale||t.rightPriceScale)&&this.Gu.p(),this.nc=this.ec(0),this.hc=this.ec(1),this.Er()}_c(t,i,s=0){const n=this.ju[s];if(void 0===n)return;if("left"===t)return _(this.Cs,{leftPriceScale:i}),n.Ia({leftPriceScale:i}),this.Gu.p(),void this.Er();if("right"===t)return _(this.Cs,{rightPriceScale:i}),n.Ia({rightPriceScale:i}),this.Gu.p(),void this.Er();const e=this.uc(t,s);null!==e&&(e.$t.oh(i),this.Gu.p())}uc(t,i){const s=this.ju[i];if(void 0===s)return null;const n=s.Ra(t);return null!==n?{Us:s,$t:n}:null}Lt(){return this.cr}qs(){return this.ju}cc(){return this.Pt}dc(){return this.Xu}fc(t,i){t.Wo(i),this.mu()}La(t){this.Ma=t,this.cr.La(this.Ma),this.ju.forEach(i=>i.La(t)),this.mu()}vc(t){1!==this.ju.length&&(h(t>=0&&t<this.ju.length,"Invalid pane index"),this.ju.splice(t,1),this.Er())}mc(t,i){if(this.ju.length<2)return;h(t>=0&&t<this.ju.length,"Invalid pane index");const s=this.ju[t],n=this.ju.reduce((t,i)=>t+i.Fa(),0),e=this.ju.reduce((t,i)=>t+i.qt(),0),r=e-30*(this.ju.length-1);i=Math.min(r,Math.max(30,i));const l=n/e,o=s.qt();s.Ea(i*l);let a=i-o,_=this.ju.length-1;for(const t of this.ju)if(t!==s){const i=Math.min(r,Math.max(30,t.qt()-a/_));a-=t.qt()-i,_-=1;const s=i*l;t.Ea(s)}this.Er()}wc(t,i){h(t>=0&&t<this.ju.length&&i>=0&&i<this.ju.length,"Invalid pane index");const s=this.ju[t],n=this.ju[i];this.ju[t]=n,this.ju[i]=s,this.Er()}gc(t,i){if(h(t>=0&&t<this.ju.length&&i>=0&&i<this.ju.length,"Invalid pane index"),t===i)return;const[s]=this.ju.splice(t,1);this.ju.splice(i,0,s),this.Er()}Ua(t,i,s){t.Ua(i,s)}qa(t,i,s){t.qa(i,s),this.Ar(),this.rc(this.bc(t,2))}ja(t,i){t.ja(i),this.rc(this.bc(t,2))}Ya(t,i,s){i.Ro()||t.Ya(i,s)}Ka(t,i,s){i.Ro()||(t.Ka(i,s),this.Ar(),this.rc(this.bc(t,2)))}Ga(t,i){i.Ro()||(t.Ga(i),this.rc(this.bc(t,2)))}Za(t,i){t.Za(i),this.rc(this.bc(t,2))}Mc(t){this.cr.ha(t)}yc(t,i){const s=this.Lt();if(s.Gi()||0===i)return;const n=s.ts();t=Math.max(1,Math.min(t,n)),s.Pu(t,i),this.mu()}Sc(t){this.xc(0),this.Pc(t),this.Cc()}Tc(t){this.cr.ra(t),this.mu()}kc(){this.cr.la(),this.ah()}xc(t){this.cr.oa(t)}Pc(t){this.cr.aa(t),this.mu()}Cc(){this.cr._a(),this.ah()}Ks(){return this.Yu}Dc(t,i,s,n,e){this.Pt.Vs(t,i);let h=NaN,r=this.cr.du(t,!0);const l=this.cr.Ce();null!==l&&(r=Math.min(Math.max(l.Ur(),r),l.yi()));const o=n.ks(),a=o.Bt();if(null!==a&&(h=o.Ds(i,a)),h=this.tc.bl(h,r,n),this.Pt.As(r,h,n),this.Zr(),!e){const e=Si(n,t,i);this.ac(e&&{e_:e.e_,h_:e.h_,l_:e.l_||null}),this.Xu.p(this.Pt.Et(),{x:t,y:i},s)}}Ic(t,i,s){const n=s.ks(),e=n.Bt(),h=n.zt(t,l(e)),r=this.cr.tu(i,!0),o=this.cr.jt(l(r));this.Dc(o,h,null,s,!0)}Rc(t){this.cc().Ws(),this.Zr(),t||this.Xu.p(null,null,null)}Ar(){const t=this.Pt.Us();if(null!==t){const i=this.Pt.Es(),s=this.Pt.Ls();this.Dc(i,s,null,t)}this.Pt.zs()}Vc(t,i,s){const n=this.cr.Is(0);void 0!==i&&void 0!==s&&this.cr.Tt(i,s);const e=this.cr.Is(0),h=this.cr.uu(),r=this.cr.Ce();if(null!==r&&null!==n&&null!==e){const i=r.De(h),l=this.__.key(n)>this.__.key(e),o=null!==t&&t>h&&!l,a=this.cr.O().allowShiftVisibleRangeOnWhitespaceReplacement,_=i&&(!(void 0===s)||a)&&this.cr.O().shiftVisibleRangeOnNewBar;if(o&&!_){const i=t-h;this.cr.fn(this.cr.bu()-i)}}this.cr.xu(t)}Wr(t){null!==t&&t.Qa()}Nn(t){if(function(t){return t instanceof wi}(t))return t;const i=this.ju.find(i=>i.Rt().includes(t));return void 0===i?null:i}mu(){this.ju.forEach(t=>t.Qa()),this.Ar()}m(){this.ju.forEach(t=>t.m()),this.ju.length=0,this.Cs.localization.priceFormatter=void 0,this.Cs.localization.percentageFormatter=void 0,this.Cs.localization.timeFormatter=void 0}Fc(){return this.Qu}Yn(){return this.Qu.O()}Va(){return this.Gu}Ec(t,i){const s=this.sc(i);this.Lc(t,s),this.Yu.push(t),1===this.Yu.length?this.Er():this.ah()}Ac(t){const i=this.Nn(t),s=this.Yu.indexOf(t);h(-1!==s,"Series not found");const n=l(i);this.Yu.splice(s,1),n.sa(t),t.m&&t.m(),this.cr.G_();const e=this.ju.length;this.Bc(n),this.ju.length<e&&this.Er()}Fr(t,i){const s=l(this.Nn(t));s.sa(t,!0),s.ta(t,i,!0)}Au(){const t=Y.gn();t.rn(),this.rc(t)}Wc(t){const i=Y.gn();i._n(t),this.rc(i)}dn(){const t=Y.gn();t.dn(),this.rc(t)}pn(t){const i=Y.gn();i.pn(t),this.rc(i)}fn(t){const i=Y.gn();i.fn(t),this.rc(i)}un(t){const i=Y.gn();i.un(t),this.rc(i)}ln(){const t=Y.gn();t.ln(),this.rc(t)}Oc(){return this.Cs.rightPriceScale.visible?"right":"left"}zc(t,i){h(i>=0,"Index should be greater or equal to 0");if(i===this.$c(t))return;const s=l(this.Nn(t));s.sa(t);const n=this.sc(i);this.Lc(t,n),0===s.Ml().length&&this.Bc(s),this.Er()}Hc(){return this.hc}q(){return this.nc}Ut(t){const i=this.hc,s=this.nc;if(i===s)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Zu||this.Zu.gh!==s||this.Zu.bh!==i)this.Zu={gh:s,bh:i,Nc:new Map};else{const i=this.Zu.Nc.get(t);if(void 0!==i)return i}const n=this.Po.it(s,i,t/100);return this.Zu.Nc.set(t,n),n}Uc(t){return this.ju.indexOf(t)}Xi(){return this.Po}qc(){return this.jc()}jc(t){const i=new wi(this.cr,this);this.ju.push(i);const s=t??this.ju.length-1,n=Y.bn();return n.tn(s,{sn:0,nn:!0}),this.rc(n),i}sc(t){return h(t>=0,"Index should be greater or equal to 0"),(t=Math.min(this.ju.length,t))<this.ju.length?this.ju[t]:this.jc(t)}$c(t){return this.ju.findIndex(i=>i.Oa().includes(t))}bc(t,i){const s=new Y(i);if(null!==t){const n=this.ju.indexOf(t);s.tn(n,{sn:i})}return s}lc(t,i){return void 0===i&&(i=2),this.bc(this.Nn(t),i)}rc(t){this.Ju&&this.Ju(t),this.ju.forEach(t=>t.s_()._h().Tt())}Lc(t,i){const s=t.O().priceScaleId,n=void 0!==s?s:this.Oc();i.ta(t,n),j(n)||t.oh(t.O())}ec(t){const i=this.Cs.layout;return"gradient"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color}Bc(t){!t.Wa()&&0===t.Ml().length&&this.ju.length>1&&this.ju.splice(this.Uc(t),1)}}function Bi(t){if(t>=1)return 0;let i=0;for(;i<8;i++){const s=Math.round(t);if(Math.abs(s-t)<1e-8)return i;t*=10}return i}function Wi(t){return!u(t)&&!d(t)}function Oi(t){return u(t)}!function(t){t[t.Disabled=0]="Disabled",t[t.Continuous=1]="Continuous",t[t.OnDataUpdate=2]="OnDataUpdate"}(Vi||(Vi={})),function(t){t[t.LastBar=0]="LastBar",t[t.LastVisible=1]="LastVisible"}(Fi||(Fi={})),function(t){t.Solid="solid",t.VerticalGradient="gradient"}(Ei||(Ei={})),function(t){t[t.Year=0]="Year",t[t.Month=1]="Month",t[t.DayOfMonth=2]="DayOfMonth",t[t.Time=3]="Time",t[t.TimeWithSeconds=4]="TimeWithSeconds"}(Li||(Li={}));const zi=t=>t.getUTCFullYear();function $i(t,i,s){return i.replace(/yyyy/g,(t=>X(zi(t),4))(t)).replace(/yy/g,(t=>X(zi(t)%100,2))(t)).replace(/MMMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"long"}))(t,s)).replace(/MMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"short"}))(t,s)).replace(/MM/g,(t=>X((t=>t.getUTCMonth()+1)(t),2))(t)).replace(/dd/g,(t=>X((t=>t.getUTCDate())(t),2))(t))}class Hi{constructor(t="yyyy-MM-dd",i="default"){this.Yc=t,this.Kc=i}u_(t){return $i(t,this.Yc,this.Kc)}}class Ni{constructor(t){this.Gc=t||"%h:%m:%s"}u_(t){return this.Gc.replace("%h",X(t.getUTCHours(),2)).replace("%m",X(t.getUTCMinutes(),2)).replace("%s",X(t.getUTCSeconds(),2))}}const Ui={Xc:"yyyy-MM-dd",Zc:"%h:%m:%s",Jc:" ",Qc:"default"};class qi{constructor(t={}){const i={...Ui,...t};this.td=new Hi(i.Xc,i.Qc),this.sd=new Ni(i.Zc),this.nd=i.Jc}u_(t){return`${this.td.u_(t)}${this.nd}${this.sd.u_(t)}`}}function ji(t){return 60*t*60*1e3}function Yi(t){return 60*t*1e3}const Ki=[{ed:(Gi=1,1e3*Gi),hd:10},{ed:Yi(1),hd:20},{ed:Yi(5),hd:21},{ed:Yi(30),hd:22},{ed:ji(1),hd:30},{ed:ji(3),hd:31},{ed:ji(6),hd:32},{ed:ji(12),hd:33}];var Gi;function Xi(t,i){if(t.getUTCFullYear()!==i.getUTCFullYear())return 70;if(t.getUTCMonth()!==i.getUTCMonth())return 60;if(t.getUTCDate()!==i.getUTCDate())return 50;for(let s=Ki.length-1;s>=0;--s)if(Math.floor(i.getTime()/Ki[s].ed)!==Math.floor(t.getTime()/Ki[s].ed))return Ki[s].hd;return 0}function Zi(t){return t}function Ji(t){let i=t;if(d(t)&&(i=ts(t)),!Wi(i))throw new Error("time must be of type BusinessDay");const s=new Date(Date.UTC(i.year,i.month-1,i.day,0,0,0,0));return{rd:Math.round(s.getTime()/1e3),ld:i}}function Qi(t){if(!Oi(t))throw new Error("time must be of type isUTCTimestamp");return{rd:t}}function ts(t){const i=new Date(t);if(isNaN(i.getTime()))throw new Error(`Invalid date string=${t}, expected format=yyyy-mm-dd`);return{day:i.getUTCDate(),month:i.getUTCMonth()+1,year:i.getUTCFullYear()}}function is(t){d(t.time)&&(t.time=ts(t.time))}class ss{options(){return this.Cs}setOptions(t){this.Cs=t,this.updateFormatter(t.localization)}preprocessData(t){Array.isArray(t)?function(t){t.forEach(is)}(t):is(t)}createConverterToInternalObj(t){return l(function(t){return 0===t.length?null:Wi(t[0].time)||d(t[0].time)?Ji:Qi}(t))}key(t){return"object"==typeof t&&"rd"in t?t.rd:this.key(this.convertHorzItemToInternal(t))}cacheKey(t){const i=t;return void 0===i.ld?new Date(1e3*i.rd).getTime():new Date(Date.UTC(i.ld.year,i.ld.month-1,i.ld.day)).getTime()}convertHorzItemToInternal(t){return Oi(i=t)?Qi(i):Wi(i)?Ji(i):Ji(ts(i));var i}updateFormatter(t){if(!this.Cs)return;const i=t.dateFormat;this.Cs.timeScale.timeVisible?this.od=new qi({Xc:i,Zc:this.Cs.timeScale.secondsVisible?"%h:%m:%s":"%h:%m",Jc:" ",Qc:t.locale}):this.od=new Hi(i,t.locale)}formatHorzItem(t){const i=t;return this.od.u_(new Date(1e3*i.rd))}formatTickmark(t,i){const s=function(t,i,s){switch(t){case 0:case 10:return i?s?4:3:2;case 20:case 21:case 22:case 30:case 31:case 32:case 33:return i?3:2;case 50:return 2;case 60:return 1;case 70:return 0}}(t.weight,this.Cs.timeScale.timeVisible,this.Cs.timeScale.secondsVisible),n=this.Cs.timeScale;if(void 0!==n.tickMarkFormatter){const e=n.tickMarkFormatter(t.originalTime,s,i.locale);if(null!==e)return e}return function(t,i,s){const n={};switch(i){case 0:n.year="numeric";break;case 1:n.month="short";break;case 2:n.day="numeric";break;case 3:n.hour12=!1,n.hour="2-digit",n.minute="2-digit";break;case 4:n.hour12=!1,n.hour="2-digit",n.minute="2-digit",n.second="2-digit"}const e=void 0===t.ld?new Date(1e3*t.rd):new Date(Date.UTC(t.ld.year,t.ld.month-1,t.ld.day));return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()).toLocaleString(s,n)}(t.time,s,i.locale)}maxTickMarkWeight(t){let i=t.reduce(Di,t[0]).weight;return i>30&&i<50&&(i=30),i}fillWeightsForPoints(t,i){!function(t,i=0){if(0===t.length)return;let s=0===i?null:t[i-1].time.rd,n=null!==s?new Date(1e3*s):null,e=0;for(let h=i;h<t.length;++h){const i=t[h],r=new Date(1e3*Zi(i.time).rd);null!==n&&(i.timeWeight=Xi(r,n)),e+=Zi(i.time).rd-(s||Zi(i.time).rd),s=Zi(i.time).rd,n=r}if(0===i&&t.length>1){const i=Math.ceil(e/(t.length-1)),s=new Date(1e3*(t[0].time.rd-i));t[0].timeWeight=Xi(new Date(1e3*t[0].time.rd),s)}}(t,i)}static ad(t){return _({localization:{dateFormat:"dd MMM 'yy"}},t??{})}}function ns(t){var i=t.width,s=t.height;if(i<0)throw new Error("Negative width is not allowed for Size");if(s<0)throw new Error("Negative height is not allowed for Size");return{width:i,height:s}}function es(t,i){return t.width===i.width&&t.height===i.height}var hs=function(){function t(t){var i=this;this._resolutionListener=function(){return i._onResolutionChanged()},this._resolutionMediaQueryList=null,this._observers=[],this._window=t,this._installResolutionListener()}return t.prototype.dispose=function(){this._uninstallResolutionListener(),this._window=null},Object.defineProperty(t.prototype,"value",{get:function(){return this._window.devicePixelRatio},enumerable:!1,configurable:!0}),t.prototype.subscribe=function(t){var i=this,s={next:t};return this._observers.push(s),{unsubscribe:function(){i._observers=i._observers.filter(function(t){return t!==s})}}},t.prototype._installResolutionListener=function(){if(null!==this._resolutionMediaQueryList)throw new Error("Resolution listener is already installed");var t=this._window.devicePixelRatio;this._resolutionMediaQueryList=this._window.matchMedia("all and (resolution: ".concat(t,"dppx)")),this._resolutionMediaQueryList.addListener(this._resolutionListener)},t.prototype._uninstallResolutionListener=function(){null!==this._resolutionMediaQueryList&&(this._resolutionMediaQueryList.removeListener(this._resolutionListener),this._resolutionMediaQueryList=null)},t.prototype._reinstallResolutionListener=function(){this._uninstallResolutionListener(),this._installResolutionListener()},t.prototype._onResolutionChanged=function(){var t=this;this._observers.forEach(function(i){return i.next(t._window.devicePixelRatio)}),this._reinstallResolutionListener()},t}();var rs=function(){function t(t,i,s){var n;this._canvasElement=null,this._bitmapSizeChangedListeners=[],this._suggestedBitmapSize=null,this._suggestedBitmapSizeChangedListeners=[],this._devicePixelRatioObservable=null,this._canvasElementResizeObserver=null,this._canvasElement=t,this._canvasElementClientSize=ns({width:this._canvasElement.clientWidth,height:this._canvasElement.clientHeight}),this._transformBitmapSize=null!=i?i:function(t){return t},this._allowResizeObserver=null===(n=null==s?void 0:s.allowResizeObserver)||void 0===n||n,this._chooseAndInitObserver()}return t.prototype.dispose=function(){var t,i;if(null===this._canvasElement)throw new Error("Object is disposed");null===(t=this._canvasElementResizeObserver)||void 0===t||t.disconnect(),this._canvasElementResizeObserver=null,null===(i=this._devicePixelRatioObservable)||void 0===i||i.dispose(),this._devicePixelRatioObservable=null,this._suggestedBitmapSizeChangedListeners.length=0,this._bitmapSizeChangedListeners.length=0,this._canvasElement=null},Object.defineProperty(t.prototype,"canvasElement",{get:function(){if(null===this._canvasElement)throw new Error("Object is disposed");return this._canvasElement},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"canvasElementClientSize",{get:function(){return this._canvasElementClientSize},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bitmapSize",{get:function(){return ns({width:this.canvasElement.width,height:this.canvasElement.height})},enumerable:!1,configurable:!0}),t.prototype.resizeCanvasElement=function(t){this._canvasElementClientSize=ns(t),this.canvasElement.style.width="".concat(this._canvasElementClientSize.width,"px"),this.canvasElement.style.height="".concat(this._canvasElementClientSize.height,"px"),this._invalidateBitmapSize()},t.prototype.subscribeBitmapSizeChanged=function(t){this._bitmapSizeChangedListeners.push(t)},t.prototype.unsubscribeBitmapSizeChanged=function(t){this._bitmapSizeChangedListeners=this._bitmapSizeChangedListeners.filter(function(i){return i!==t})},Object.defineProperty(t.prototype,"suggestedBitmapSize",{get:function(){return this._suggestedBitmapSize},enumerable:!1,configurable:!0}),t.prototype.subscribeSuggestedBitmapSizeChanged=function(t){this._suggestedBitmapSizeChangedListeners.push(t)},t.prototype.unsubscribeSuggestedBitmapSizeChanged=function(t){this._suggestedBitmapSizeChangedListeners=this._suggestedBitmapSizeChangedListeners.filter(function(i){return i!==t})},t.prototype.applySuggestedBitmapSize=function(){if(null!==this._suggestedBitmapSize){var t=this._suggestedBitmapSize;this._suggestedBitmapSize=null,this._resizeBitmap(t),this._emitSuggestedBitmapSizeChanged(t,this._suggestedBitmapSize)}},t.prototype._resizeBitmap=function(t){var i=this.bitmapSize;es(i,t)||(this.canvasElement.width=t.width,this.canvasElement.height=t.height,this._emitBitmapSizeChanged(i,t))},t.prototype._emitBitmapSizeChanged=function(t,i){var s=this;this._bitmapSizeChangedListeners.forEach(function(n){return n.call(s,t,i)})},t.prototype._suggestNewBitmapSize=function(t){var i=this._suggestedBitmapSize,s=ns(this._transformBitmapSize(t,this._canvasElementClientSize)),n=es(this.bitmapSize,s)?null:s;null===i&&null===n||null!==i&&null!==n&&es(i,n)||(this._suggestedBitmapSize=n,this._emitSuggestedBitmapSizeChanged(i,n))},t.prototype._emitSuggestedBitmapSizeChanged=function(t,i){var s=this;this._suggestedBitmapSizeChangedListeners.forEach(function(n){return n.call(s,t,i)})},t.prototype._chooseAndInitObserver=function(){var t=this;this._allowResizeObserver?new Promise(function(t){var i=new ResizeObserver(function(s){t(s.every(function(t){return"devicePixelContentBoxSize"in t})),i.disconnect()});i.observe(document.body,{box:"device-pixel-content-box"})}).catch(function(){return!1}).then(function(i){return i?t._initResizeObserver():t._initDevicePixelRatioObservable()}):this._initDevicePixelRatioObservable()},t.prototype._initDevicePixelRatioObservable=function(){var t=this;if(null!==this._canvasElement){var i=ls(this._canvasElement);if(null===i)throw new Error("No window is associated with the canvas");this._devicePixelRatioObservable=function(t){return new hs(t)}(i),this._devicePixelRatioObservable.subscribe(function(){return t._invalidateBitmapSize()}),this._invalidateBitmapSize()}},t.prototype._invalidateBitmapSize=function(){var t,i;if(null!==this._canvasElement){var s=ls(this._canvasElement);if(null!==s){var n=null!==(i=null===(t=this._devicePixelRatioObservable)||void 0===t?void 0:t.value)&&void 0!==i?i:s.devicePixelRatio,e=this._canvasElement.getClientRects(),h=void 0!==e[0]?function(t,i){return ns({width:Math.round(t.left*i+t.width*i)-Math.round(t.left*i),height:Math.round(t.top*i+t.height*i)-Math.round(t.top*i)})}(e[0],n):ns({width:this._canvasElementClientSize.width*n,height:this._canvasElementClientSize.height*n});this._suggestNewBitmapSize(h)}}},t.prototype._initResizeObserver=function(){var t=this;null!==this._canvasElement&&(this._canvasElementResizeObserver=new ResizeObserver(function(i){var s=i.find(function(i){return i.target===t._canvasElement});if(s&&s.devicePixelContentBoxSize&&s.devicePixelContentBoxSize[0]){var n=s.devicePixelContentBoxSize[0],e=ns({width:n.inlineSize,height:n.blockSize});t._suggestNewBitmapSize(e)}}),this._canvasElementResizeObserver.observe(this._canvasElement,{box:"device-pixel-content-box"}))},t}();function ls(t){return t.ownerDocument.defaultView}var os=function(){function t(t,i,s){if(0===i.width||0===i.height)throw new TypeError("Rendering target could only be created on a media with positive width and height");if(this._mediaSize=i,0===s.width||0===s.height)throw new TypeError("Rendering target could only be created using a bitmap with positive integer width and height");this._bitmapSize=s,this._context=t}return t.prototype.useMediaCoordinateSpace=function(t){try{return this._context.save(),this._context.setTransform(1,0,0,1,0,0),this._context.scale(this._horizontalPixelRatio,this._verticalPixelRatio),t({context:this._context,mediaSize:this._mediaSize})}finally{this._context.restore()}},t.prototype.useBitmapCoordinateSpace=function(t){try{return this._context.save(),this._context.setTransform(1,0,0,1,0,0),t({context:this._context,mediaSize:this._mediaSize,bitmapSize:this._bitmapSize,horizontalPixelRatio:this._horizontalPixelRatio,verticalPixelRatio:this._verticalPixelRatio})}finally{this._context.restore()}},Object.defineProperty(t.prototype,"_horizontalPixelRatio",{get:function(){return this._bitmapSize.width/this._mediaSize.width},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"_verticalPixelRatio",{get:function(){return this._bitmapSize.height/this._mediaSize.height},enumerable:!1,configurable:!0}),t}();function as(t,i){var s=t.canvasElementClientSize;if(0===s.width||0===s.height)return null;var n=t.bitmapSize;if(0===n.width||0===n.height)return null;var e=t.canvasElement.getContext("2d",i);return null===e?null:new os(e,s,n)}const _s="undefined"!=typeof window;function us(){return!!_s&&window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function cs(){return!!_s&&/iPhone|iPad|iPod/.test(window.navigator.platform)}function ds(t){return t+t%2}function ps(t){_s&&void 0!==window.chrome&&t.addEventListener("mousedown",t=>{if(1===t.button)return t.preventDefault(),!1})}class fs{constructor(t,i,s){this._d=0,this.ud=null,this.dd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY},this.pd=0,this.fd=null,this.vd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY},this.md=null,this.wd=!1,this.gd=null,this.bd=null,this.Md=!1,this.yd=!1,this.Sd=!1,this.xd=null,this.Pd=null,this.Cd=null,this.Td=null,this.kd=null,this.Dd=null,this.Id=null,this.Rd=0,this.Vd=!1,this.Fd=!1,this.Ed=!1,this.Ld=0,this.Ad=null,this.Bd=!cs(),this.Wd=t=>{this.Od(t)},this.zd=t=>{if(this.$d(t)){const i=this.Hd(t);if(++this.pd,this.fd&&this.pd>1){const{Nd:s}=this.Ud(ws(t),this.vd);s<30&&!this.Sd&&this.qd(i,this.Yd.jd),this.Kd()}}else{const i=this.Hd(t);if(++this._d,this.ud&&this._d>1){const{Nd:s}=this.Ud(ws(t),this.dd);s<5&&!this.yd&&this.Gd(i,this.Yd.Xd),this.Zd()}}},this.Jd=t,this.Yd=i,this.Cs=s,this.Qd()}m(){null!==this.xd&&(this.xd(),this.xd=null),null!==this.Pd&&(this.Pd(),this.Pd=null),null!==this.Td&&(this.Td(),this.Td=null),null!==this.kd&&(this.kd(),this.kd=null),null!==this.Dd&&(this.Dd(),this.Dd=null),null!==this.Cd&&(this.Cd(),this.Cd=null),this.tp(),this.Zd()}ip(t){this.Td&&this.Td();const i=this.sp.bind(this);if(this.Td=()=>{this.Jd.removeEventListener("mousemove",i)},this.Jd.addEventListener("mousemove",i),this.$d(t))return;const s=this.Hd(t);this.Gd(s,this.Yd.np),this.Bd=!0}Zd(){null!==this.ud&&clearTimeout(this.ud),this._d=0,this.ud=null,this.dd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY}}Kd(){null!==this.fd&&clearTimeout(this.fd),this.pd=0,this.fd=null,this.vd={ut:Number.NEGATIVE_INFINITY,ct:Number.POSITIVE_INFINITY}}sp(t){if(this.Ed||null!==this.bd)return;if(this.$d(t))return;const i=this.Hd(t);this.Gd(i,this.Yd.ep),this.Bd=!0}hp(t){const i=bs(t.changedTouches,l(this.Ad));if(null===i)return;if(this.Ld=gs(t),null!==this.Id)return;if(this.Fd)return;this.Vd=!0;const s=this.Ud(ws(i),l(this.bd)),{rp:n,lp:e,Nd:h}=s;if(this.Md||!(h<5)){if(!this.Md){const t=.5*n,i=e>=t&&!this.Cs.op(),s=t>e&&!this.Cs.ap();i||s||(this.Fd=!0),this.Md=!0,this.Sd=!0,this.tp(),this.Kd()}if(!this.Fd){const s=this.Hd(t,i);this.qd(s,this.Yd._p),ms(t)}}}up(t){if(0!==t.button)return;const i=this.Ud(ws(t),l(this.gd)),{Nd:s}=i;if(s>=5&&(this.yd=!0,this.Zd()),this.yd){const i=this.Hd(t);this.Gd(i,this.Yd.cp)}}Ud(t,i){const s=Math.abs(i.ut-t.ut),n=Math.abs(i.ct-t.ct);return{rp:s,lp:n,Nd:s+n}}dp(t){let i=bs(t.changedTouches,l(this.Ad));if(null===i&&0===t.touches.length&&(i=t.changedTouches[0]),null===i)return;this.Ad=null,this.Ld=gs(t),this.tp(),this.bd=null,this.Dd&&(this.Dd(),this.Dd=null);const s=this.Hd(t,i);if(this.qd(s,this.Yd.pp),++this.pd,this.fd&&this.pd>1){const{Nd:t}=this.Ud(ws(i),this.vd);t<30&&!this.Sd&&this.qd(s,this.Yd.jd),this.Kd()}else this.Sd||(this.qd(s,this.Yd.fp),this.Yd.fp&&ms(t));0===this.pd&&ms(t),0===t.touches.length&&this.wd&&(this.wd=!1,ms(t))}Od(t){if(0!==t.button)return;const i=this.Hd(t);if(this.gd=null,this.Ed=!1,this.kd&&(this.kd(),this.kd=null),us()){this.Jd.ownerDocument.documentElement.removeEventListener("mouseleave",this.Wd)}if(!this.$d(t))if(this.Gd(i,this.Yd.vp),++this._d,this.ud&&this._d>1){const{Nd:s}=this.Ud(ws(t),this.dd);s<5&&!this.yd&&this.Gd(i,this.Yd.Xd),this.Zd()}else this.yd||this.Gd(i,this.Yd.mp)}tp(){null!==this.md&&(clearTimeout(this.md),this.md=null)}wp(t){if(null!==this.Ad)return;const i=t.changedTouches[0];this.Ad=i.identifier,this.Ld=gs(t);const s=this.Jd.ownerDocument.documentElement;this.Sd=!1,this.Md=!1,this.Fd=!1,this.bd=ws(i),this.Dd&&(this.Dd(),this.Dd=null);{const i=this.hp.bind(this),n=this.dp.bind(this);this.Dd=()=>{s.removeEventListener("touchmove",i),s.removeEventListener("touchend",n)},s.addEventListener("touchmove",i,{passive:!1}),s.addEventListener("touchend",n,{passive:!1}),this.tp(),this.md=setTimeout(this.gp.bind(this,t),240)}const n=this.Hd(t,i);this.qd(n,this.Yd.bp),this.fd||(this.pd=0,this.fd=setTimeout(this.Kd.bind(this),500),this.vd=ws(i))}Mp(t){if(0!==t.button)return;const i=this.Jd.ownerDocument.documentElement;us()&&i.addEventListener("mouseleave",this.Wd),this.yd=!1,this.gd=ws(t),this.kd&&(this.kd(),this.kd=null);{const t=this.up.bind(this),s=this.Od.bind(this);this.kd=()=>{i.removeEventListener("mousemove",t),i.removeEventListener("mouseup",s)},i.addEventListener("mousemove",t),i.addEventListener("mouseup",s)}if(this.Ed=!0,this.$d(t))return;const s=this.Hd(t);this.Gd(s,this.Yd.yp),this.ud||(this._d=0,this.ud=setTimeout(this.Zd.bind(this),500),this.dd=ws(t))}Qd(){this.Jd.addEventListener("mouseenter",this.ip.bind(this)),this.Jd.addEventListener("touchcancel",this.tp.bind(this));{const t=this.Jd.ownerDocument,i=t=>{this.Yd.Sp&&(t.composed&&this.Jd.contains(t.composedPath()[0])||t.target&&this.Jd.contains(t.target)||this.Yd.Sp())};this.Pd=()=>{t.removeEventListener("touchstart",i)},this.xd=()=>{t.removeEventListener("mousedown",i)},t.addEventListener("mousedown",i),t.addEventListener("touchstart",i,{passive:!0})}cs()&&(this.Cd=()=>{this.Jd.removeEventListener("dblclick",this.zd)},this.Jd.addEventListener("dblclick",this.zd)),this.Jd.addEventListener("mouseleave",this.xp.bind(this)),this.Jd.addEventListener("touchstart",this.wp.bind(this),{passive:!0}),ps(this.Jd),this.Jd.addEventListener("mousedown",this.Mp.bind(this)),this.Pp(),this.Jd.addEventListener("touchmove",()=>{},{passive:!1})}Pp(){void 0===this.Yd.Cp&&void 0===this.Yd.Tp&&void 0===this.Yd.kp||(this.Jd.addEventListener("touchstart",t=>this.Dp(t.touches),{passive:!0}),this.Jd.addEventListener("touchmove",t=>{if(2===t.touches.length&&null!==this.Id&&void 0!==this.Yd.Tp){const i=vs(t.touches[0],t.touches[1])/this.Rd;this.Yd.Tp(this.Id,i),ms(t)}},{passive:!1}),this.Jd.addEventListener("touchend",t=>{this.Dp(t.touches)}))}Dp(t){1===t.length&&(this.Vd=!1),2!==t.length||this.Vd||this.wd?this.Ip():this.Rp(t)}Rp(t){const i=this.Jd.getBoundingClientRect()||{left:0,top:0};this.Id={ut:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,ct:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.Rd=vs(t[0],t[1]),void 0!==this.Yd.Cp&&this.Yd.Cp(),this.tp()}Ip(){null!==this.Id&&(this.Id=null,void 0!==this.Yd.kp&&this.Yd.kp())}xp(t){if(this.Td&&this.Td(),this.$d(t))return;if(!this.Bd)return;const i=this.Hd(t);this.Gd(i,this.Yd.Vp),this.Bd=!cs()}gp(t){const i=bs(t.touches,l(this.Ad));if(null===i)return;const s=this.Hd(t,i);this.qd(s,this.Yd.Fp),this.Sd=!0,this.wd=!0}$d(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:gs(t)<this.Ld+500}qd(t,i){i&&i.call(this.Yd,t)}Gd(t,i){i&&i.call(this.Yd,t)}Hd(t,i){const s=i||t,n=this.Jd.getBoundingClientRect()||{left:0,top:0};return{clientX:s.clientX,clientY:s.clientY,pageX:s.pageX,pageY:s.pageY,screenX:s.screenX,screenY:s.screenY,localX:s.clientX-n.left,localY:s.clientY-n.top,ctrlKey:t.ctrlKey,altKey:t.altKey,shiftKey:t.shiftKey,metaKey:t.metaKey,Ep:!t.type.startsWith("mouse")&&"contextmenu"!==t.type&&"click"!==t.type,Lp:t.type,Ap:s.target,o_:t.view,Bp:()=>{"touchstart"!==t.type&&ms(t)}}}}function vs(t,i){const s=t.clientX-i.clientX,n=t.clientY-i.clientY;return Math.sqrt(s*s+n*n)}function ms(t){t.cancelable&&t.preventDefault()}function ws(t){return{ut:t.pageX,ct:t.pageY}}function gs(t){return t.timeStamp||performance.now()}function bs(t,i){for(let s=0;s<t.length;++s)if(t[s].identifier===i)return t[s];return null}class Ms{constructor(t,i,s){this.Wp=null,this.Op=null,this.zp=!0,this.$p=null,this.Hp=t,this.Np=t.Up()[i],this.qp=t.Up()[s],this.jp=document.createElement("tr"),this.jp.style.height="1px",this.Yp=document.createElement("td"),this.Yp.style.position="relative",this.Yp.style.padding="0",this.Yp.style.margin="0",this.Yp.setAttribute("colspan","3"),this.Kp(),this.jp.appendChild(this.Yp),this.zp=this.Hp.O().layout.panes.enableResize,this.zp?this.Gp():(this.Wp=null,this.Op=null)}m(){null!==this.Op&&this.Op.m()}Xp(){return this.jp}Zp(){return ns({width:this.Np.Zp().width,height:1})}Jp(){return ns({width:this.Np.Jp().width,height:1*window.devicePixelRatio})}Qp(t,i,s){const n=this.Jp();t.fillStyle=this.Hp.O().layout.panes.separatorColor,t.fillRect(i,s,n.width,n.height)}Tt(){this.Kp(),this.Hp.O().layout.panes.enableResize!==this.zp&&(this.zp=this.Hp.O().layout.panes.enableResize,this.zp?this.Gp():(null!==this.Wp&&(this.Yp.removeChild(this.Wp.tf),this.Yp.removeChild(this.Wp.if),this.Wp=null),null!==this.Op&&(this.Op.m(),this.Op=null)))}Gp(){const t=document.createElement("div"),i=t.style;i.position="fixed",i.display="none",i.zIndex="49",i.top="0",i.left="0",i.width="100%",i.height="100%",i.cursor="row-resize",this.Yp.appendChild(t);const s=document.createElement("div"),n=s.style;n.position="absolute",n.zIndex="50",n.top="-4px",n.height="9px",n.width="100%",n.backgroundColor="",n.cursor="row-resize",this.Yp.appendChild(s);const e={np:this.sf.bind(this),Vp:this.nf.bind(this),yp:this.ef.bind(this),bp:this.ef.bind(this),cp:this.hf.bind(this),_p:this.hf.bind(this),vp:this.rf.bind(this),pp:this.rf.bind(this)};this.Op=new fs(s,e,{op:()=>!1,ap:()=>!0}),this.Wp={if:s,tf:t}}Kp(){this.Yp.style.background=this.Hp.O().layout.panes.separatorColor}sf(t){null!==this.Wp&&(this.Wp.if.style.backgroundColor=this.Hp.O().layout.panes.separatorHoverColor)}nf(t){null!==this.Wp&&null===this.$p&&(this.Wp.if.style.backgroundColor="")}ef(t){if(null===this.Wp)return;const i=this.Np.lf().Fa()+this.qp.lf().Fa(),s=i/(this.Np.Zp().height+this.qp.Zp().height),n=30*s;i<=2*n||(this.$p={af:t.pageY,_f:this.Np.lf().Fa(),uf:i-n,cf:i,df:s,pf:n},this.Wp.tf.style.display="block")}hf(t){const i=this.$p;if(null===i)return;const s=(t.pageY-i.af)*i.df,n=Kt(i._f+s,i.pf,i.uf);this.Np.lf().Ea(n),this.qp.lf().Ea(i.cf-n),this.Hp.ti().Er()}rf(t){null!==this.$p&&null!==this.Wp&&(this.$p=null,this.Wp.tf.style.display="none")}}function ys(t,i){return t.ff-i.ff}function Ss(t,i,s){const n=(t.ff-i.ff)/(t.gt-i.gt);return Math.sign(n)*Math.min(Math.abs(n),s)}class xs{constructor(t,i,s,n){this.vf=null,this.mf=null,this.wf=null,this.gf=null,this.bf=null,this.Mf=0,this.yf=0,this.Sf=t,this.xf=i,this.Pf=s,this.Mn=n}Cf(t,i){if(null!==this.vf){if(this.vf.gt===i)return void(this.vf.ff=t);if(Math.abs(this.vf.ff-t)<this.Mn)return}this.gf=this.wf,this.wf=this.mf,this.mf=this.vf,this.vf={gt:i,ff:t}}ae(t,i){if(null===this.vf||null===this.mf)return;if(i-this.vf.gt>50)return;let s=0;const n=Ss(this.vf,this.mf,this.xf),e=ys(this.vf,this.mf),h=[n],r=[e];if(s+=e,null!==this.wf){const t=Ss(this.mf,this.wf,this.xf);if(Math.sign(t)===Math.sign(n)){const i=ys(this.mf,this.wf);if(h.push(t),r.push(i),s+=i,null!==this.gf){const t=Ss(this.wf,this.gf,this.xf);if(Math.sign(t)===Math.sign(n)){const i=ys(this.wf,this.gf);h.push(t),r.push(i),s+=i}}}}let l=0;for(let t=0;t<h.length;++t)l+=r[t]/s*h[t];Math.abs(l)<this.Sf||(this.bf={ff:t,gt:i},this.yf=l,this.Mf=function(t,i){const s=Math.log(i);return Math.log(1*s/-t)/s}(Math.abs(l),this.Pf))}Ru(t){const i=l(this.bf),s=t-i.gt;return i.ff+this.yf*(Math.pow(this.Pf,s)-1)/Math.log(this.Pf)}Iu(t){return null===this.bf||this.Tf(t)===this.Mf}Tf(t){const i=t-l(this.bf).gt;return Math.min(i,this.Mf)}}class Ps{constructor(t,i){this.kf=void 0,this.Df=void 0,this.If=void 0,this.vs=!1,this.Rf=t,this.Vf=i,this.Ff()}Tt(){this.Ff()}Ef(){this.kf&&this.Rf.removeChild(this.kf),this.Df&&this.Rf.removeChild(this.Df),this.kf=void 0,this.Df=void 0}Lf(){return this.vs!==this.Af()||this.If!==this.Bf()}Bf(){return this.Vf.ti().Xi().tt(this.Vf.O().layout.textColor)>160?"dark":"light"}Af(){return this.Vf.O().layout.attributionLogo}Wf(){const t=new URL(location.href);return t.hostname?"&utm_source="+t.hostname+t.pathname:""}Ff(){this.Lf()&&(this.Ef(),this.vs=this.Af(),this.vs&&(this.If=this.Bf(),this.Df=document.createElement("style"),this.Df.innerText="a#pipsend-attr-logo{--fill:#13d3c9;position:absolute;left:10px;bottom:10px;height:24px;width:46px;margin:0;padding:0;border:0;z-index:3;opacity:0.8;transition:opacity 0.3s;}a#pipsend-attr-logo:hover{opacity:1;}a#pipsend-attr-logo[data-dark]{--fill:#13d3c9;}",this.kf=document.createElement("a"),this.kf.href=`https://pipsend.com${this.Wf()}`,this.kf.title="Powered by Pipsend Charts",this.kf.id="pipsend-attr-logo",this.kf.target="_blank",this.kf.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 155.89"><g><circle cx="220.68" cy="77.94" r="32.86" style="fill: var(--fill);"/><path d="M138.84,77.94c0,12.01-3.69,23.15-10,32.37h42.32v-.22c-6.21-9.17-9.84-20.24-9.84-32.15s3.63-22.97,9.84-32.15v-.22h-42.32c6.3,9.22,10,20.36,10,32.37Z" style="fill: var(--fill);"/><path d="M222.06,0H77.94C34.9,0,0,34.9,0,77.94h0c0,43.05,34.9,77.94,77.94,77.94h144.11c43.05,0,77.94-34.9,77.94-77.94h0C300,34.9,265.1,0,222.06,0ZM279.4,77.94c0,31.75-25.74,57.49-57.49,57.49H78.09c-31.75,0-57.49-25.74-57.49-57.49h0c0-31.75,25.74-57.49,57.49-57.49h143.82c31.75,0,57.49,25.74,57.49,57.49h0Z" style="fill: var(--fill);"/><circle cx="79.33" cy="77.94" r="32.86" style="fill: var(--fill);"/></g></svg>',this.kf.toggleAttribute("data-dark","dark"===this.If),this.Rf.appendChild(this.Df),this.Rf.appendChild(this.kf)))}}function Cs(t,i){const s=l(t.ownerDocument).createElement("canvas");t.appendChild(s);const n=new rs(s,(e={options:{allowResizeObserver:!0},transform:(t,i)=>({width:Math.max(t.width,i.width),height:Math.max(t.height,i.height)})}).transform,e.options);var e;return n.resizeCanvasElement(i),n}function Ts(t){t.width=1,t.height=1,t.getContext("2d")?.clearRect(0,0,1,1)}function ks(t,i,s,n){t.sr&&t.sr(i,s,n)}function Ds(t,i,s,n){t.et(i,s,n)}function Is(t,i,s,n){const e=t(s,n);for(const t of e){const s=t.Dt(n);null!==s&&i(s)}}function Rs(t,i){return s=>{if(!function(t){return void 0!==t.$t}(s))return[];return(s.$t()?.wl()??"")!==i?[]:s.il?.(t)??[]}}function Vs(t,i,s,n){if(!t.length)return;let e=0;const h=t[0].qt(n,!0);let r=1===i?s/2-(t[0].$i()-h/2):t[0].$i()-h/2-s/2;r=Math.max(0,r);for(let h=1;h<t.length;h++){const l=t[h],o=t[h-1],a=o.qt(n,!1),_=l.$i(),u=o.$i();if(1===i?_>u-a:_<u+a){const n=u-a*i;l.Hi(n);const h=n-i*a/2;if((1===i?h<0:h>s)&&r>0){const n=1===i?-1-h:h-s,l=Math.min(n,r);for(let s=e;s<t.length;s++)t[s].Hi(t[s].$i()+i*l);r-=l}}else e=h,r=1===i?u-a-_:_-(u+a)}}class Fs{constructor(t,i,s,n){this.Yi=null,this.Of=null,this.zf=!1,this.$f=new it(200),this.Hf=null,this.Nf=0,this.Uf=!1,this.qf=()=>{this.Uf||this.Ct.jf().ti().ah()},this.Yf=()=>{this.Uf||this.Ct.jf().ti().ah()},this.Ct=t,this.Cs=i,this.So=i.layout,this.Qu=s,this.Kf="left"===n,this.Gf=Rs("normal",n),this.Xf=Rs("top",n),this.Zf=Rs("bottom",n),this.Yp=document.createElement("div"),this.Yp.style.height="100%",this.Yp.style.overflow="hidden",this.Yp.style.width="25px",this.Yp.style.left="0",this.Yp.style.position="relative",this.Jf=Cs(this.Yp,ns({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf);const e=this.Jf.canvasElement;e.style.position="absolute",e.style.zIndex="1",e.style.left="0",e.style.top="0",this.Qf=Cs(this.Yp,ns({width:16,height:16})),this.Qf.subscribeSuggestedBitmapSizeChanged(this.Yf);const h=this.Qf.canvasElement;h.style.position="absolute",h.style.zIndex="2",h.style.left="0",h.style.top="0";const r={yp:this.ef.bind(this),bp:this.ef.bind(this),cp:this.hf.bind(this),_p:this.hf.bind(this),Sp:this.tv.bind(this),vp:this.rf.bind(this),pp:this.rf.bind(this),Xd:this.iv.bind(this),jd:this.iv.bind(this),np:this.sv.bind(this),Vp:this.nf.bind(this)};this.Op=new fs(this.Qf.canvasElement,r,{op:()=>!this.Cs.handleScroll.vertTouchDrag,ap:()=>!0})}m(){this.Op.m(),this.Qf.unsubscribeSuggestedBitmapSizeChanged(this.Yf),Ts(this.Qf.canvasElement),this.Qf.dispose(),this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),Ts(this.Jf.canvasElement),this.Jf.dispose(),null!==this.Yi&&this.Yi.ea().u(this),this.Yi=null}Xp(){return this.Yp}C(){return this.So.fontSize}nv(){const t=this.Qu.O();return this.Hf!==t.T&&(this.$f.Fn(),this.Hf=t.T),t}ev(){if(null===this.Yi)return 0;let t=0;const i=this.nv(),s=l(this.Jf.canvasElement.getContext("2d",{colorSpace:this.Ct.jf().O().layout.colorSpace}));s.save();const n=this.Yi.Rl();s.font=this.hv(),n.length>0&&(t=Math.max(this.$f.Vi(s,n[0].Zl),this.$f.Vi(s,n[n.length-1].Zl)));const e=this.rv();for(let i=e.length;i--;){const n=this.$f.Vi(s,e[i].ri());n>t&&(t=n)}const h=this.Yi.Bt();if(null!==h&&null!==this.Of&&(2!==(r=this.Cs.crosshair).mode&&r.horzLine.visible&&r.horzLine.labelVisible)){const i=this.Yi.Ds(1,h),n=this.Yi.Ds(this.Of.height-2,h);t=Math.max(t,this.$f.Vi(s,this.Yi.Zi(Math.floor(Math.min(i,n))+.11111111111111,h)),this.$f.Vi(s,this.Yi.Zi(Math.ceil(Math.max(i,n))-.11111111111111,h)))}var r;s.restore();const o=t||34;return ds(Math.ceil(i.S+i.P+i.F+i.L+5+o))}lv(t){null!==this.Of&&es(this.Of,t)||(this.Of=t,this.Uf=!0,this.Jf.resizeCanvasElement(t),this.Qf.resizeCanvasElement(t),this.Uf=!1,this.Yp.style.width=`${t.width}px`,this.Yp.style.height=`${t.height}px`)}ov(){return l(this.Of).width}us(t){this.Yi!==t&&(null!==this.Yi&&this.Yi.ea().u(this),this.Yi=t,t.ea().i(this.co.bind(this),this))}$t(){return this.Yi}Fn(){const t=this.Ct.lf();this.Ct.jf().ti().Za(t,l(this.$t()))}av(t){if(null===this.Of)return;const i={colorSpace:this.Ct.jf().O().layout.colorSpace};if(1!==t){this._v(),this.Jf.applySuggestedBitmapSize();const t=as(this.Jf,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t)}),this.Ct.dv(t,this.Zf),this.pv(t),this.Ct.dv(t,this.Gf),this.fv(t))}this.Qf.applySuggestedBitmapSize();const s=as(this.Qf,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.vv(s),this.Ct.dv(s,this.Xf))}Jp(){return this.Jf.bitmapSize}Qp(t,i,s,n){const e=this.Jp();if(e.width>0&&e.height>0&&(t.drawImage(this.Jf.canvasElement,i,s),n)){const n=this.Qf.canvasElement;t.drawImage(n,i,s)}}Tt(){this.Yi?.Rl()}ef(t){if(null===this.Yi||this.Yi.Gi()||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.jf().ti(),s=this.Ct.lf();this.zf=!0,i.Ua(s,this.Yi,t.localY)}hf(t){if(null===this.Yi||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.jf().ti(),s=this.Ct.lf(),n=this.Yi;i.qa(s,n,t.localY)}tv(){if(null===this.Yi||!this.Cs.handleScale.axisPressedMouseMove.price)return;const t=this.Ct.jf().ti(),i=this.Ct.lf(),s=this.Yi;this.zf&&(this.zf=!1,t.ja(i,s))}rf(t){if(null===this.Yi||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.Ct.jf().ti(),s=this.Ct.lf();this.zf=!1,i.ja(s,this.Yi)}iv(t){this.Cs.handleScale.axisDoubleClickReset.price&&this.Fn()}sv(t){if(null===this.Yi)return;!this.Ct.jf().ti().O().handleScale.axisPressedMouseMove.price||this.Yi.We()||this.Yi.Fo()||this.mv(1)}nf(t){this.mv(0)}rv(){const t=[],i=null===this.Yi?void 0:this.Yi;return(s=>{for(let n=0;n<s.length;++n){const e=s[n].Hs(this.Ct.lf(),i);for(let i=0;i<e.length;i++)t.push(e[i])}})(this.Ct.lf().Rt()),t}uv({context:t,bitmapSize:i}){const{width:s,height:n}=i,e=this.Ct.lf().ti(),h=e.q(),r=e.Hc();h===r?F(t,0,0,s,n,h):A(t,0,0,s,n,h,r)}cv({context:t,bitmapSize:i,horizontalPixelRatio:s}){if(null===this.Of||null===this.Yi||!this.Yi.O().borderVisible)return;t.fillStyle=this.Yi.O().borderColor;const n=Math.max(1,Math.floor(this.nv().S*s));let e;e=this.Kf?i.width-n:0,t.fillRect(e,0,n,i.height)}pv(t){if(null===this.Of||null===this.Yi)return;const i=this.Yi.Rl(),s=this.Yi.O(),n=this.nv(),e=this.Kf?this.Of.width-n.P:0;s.borderVisible&&s.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:h,verticalPixelRatio:r})=>{t.fillStyle=s.borderColor;const l=Math.max(1,Math.floor(r)),o=Math.floor(.5*r),a=Math.round(n.P*h);t.beginPath();for(const s of i)t.rect(Math.floor(e*h),Math.round(s.Cl*r)-o,a,l);t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{t.font=this.hv(),t.fillStyle=s.textColor??this.So.textColor,t.textAlign=this.Kf?"right":"left",t.textBaseline="middle";const h=this.Kf?Math.round(e-n.F):Math.round(e+n.P+n.F),r=i.map(i=>this.$f.Ri(t,i.Zl));for(let s=i.length;s--;){const n=i[s];t.fillText(n.Zl,h,n.Cl+r[s])}})}_v(){if(null===this.Of||null===this.Yi)return;let t=this.Of.height/2;const i=[],s=this.Yi.Rt().slice(),n=this.Ct.lf(),e=this.nv();this.Yi===n.qn()&&this.Ct.lf().Rt().forEach(t=>{n.Un(t)&&s.push(t)});const h=this.Yi.Ml()[0],r=this.Yi;s.forEach(s=>{const e=s.Hs(n,r);e.forEach(t=>{t.Hi(null),t.Ni()&&i.push(t)}),h===s&&e.length>0&&(t=e[0].Ei())}),i.forEach(t=>t.Hi(t.Ei()));this.Yi.O().alignLabels&&this.wv(i,e,t)}wv(t,i,s){if(null===this.Of)return;const n=t.filter(t=>t.Ei()<=s),e=t.filter(t=>t.Ei()>s);n.sort((t,i)=>i.Ei()-t.Ei()),n.length&&e.length&&e.push(n[0]),e.sort((t,i)=>t.Ei()-i.Ei());for(const s of t){const t=Math.floor(s.qt(i)/2),n=s.Ei();n>-t&&n<t&&s.Hi(t),n>this.Of.height-t&&n<this.Of.height+t&&s.Hi(this.Of.height-t)}Vs(n,1,this.Of.height,i),Vs(e,-1,this.Of.height,i)}fv(t){if(null===this.Of)return;const i=this.rv(),s=this.nv(),n=this.Kf?"right":"left";i.forEach(i=>{if(i.Ui()){i.Dt(l(this.Yi)).et(t,s,this.$f,n)}})}vv(t){if(null===this.Of||null===this.Yi)return;const i=this.Ct.jf().ti(),s=[],n=this.Ct.lf(),e=i.cc().Hs(n,this.Yi);e.length&&s.push(e);const h=this.nv(),r=this.Kf?"right":"left";s.forEach(i=>{i.forEach(i=>{i.Dt(l(this.Yi)).et(t,h,this.$f,r)})})}mv(t){this.Yp.style.cursor=1===t?"ns-resize":"default"}co(){const t=this.ev();this.Nf<t&&this.Ct.jf().ti().Er(),this.Nf=t}hv(){return g(this.So.fontSize,this.So.fontFamily)}}function Es(t,i){return t.Qr?.(i)??[]}function Ls(t,i){return t.$s?.(i)??[]}function As(t,i){return t.cs?.(i)??[]}function Bs(t,i){return t.Xr?.(i)??[]}class Ws{constructor(t,i){this.Of=ns({width:0,height:0}),this.gv=null,this.bv=null,this.Mv=null,this.yv=null,this.Sv=!1,this.xv=new a,this.Pv=new a,this.Cv=0,this.Tv=!1,this.kv=null,this.Dv=!1,this.Iv=null,this.Rv=null,this.Uf=!1,this.qf=()=>{this.Uf||null===this.Vv||this.ss().ah()},this.Yf=()=>{this.Uf||null===this.Vv||this.ss().ah()},this.Vf=t,this.Vv=i,this.Vv.i_().i(this.Fv.bind(this),this,!0),this.Ev=document.createElement("td"),this.Ev.style.padding="0",this.Ev.style.position="relative";const s=document.createElement("div");s.style.width="100%",s.style.height="100%",s.style.position="relative",s.style.overflow="hidden",this.Lv=document.createElement("td"),this.Lv.style.padding="0",this.Av=document.createElement("td"),this.Av.style.padding="0",this.Ev.appendChild(s),this.Jf=Cs(s,ns({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf);const n=this.Jf.canvasElement;n.style.position="absolute",n.style.zIndex="1",n.style.left="0",n.style.top="0",this.Qf=Cs(s,ns({width:16,height:16})),this.Qf.subscribeSuggestedBitmapSizeChanged(this.Yf);const e=this.Qf.canvasElement;e.style.position="absolute",e.style.zIndex="2",e.style.left="0",e.style.top="0",this.jp=document.createElement("tr"),this.jp.appendChild(this.Lv),this.jp.appendChild(this.Ev),this.jp.appendChild(this.Av),this.Bv(),this.Op=new fs(this.Qf.canvasElement,this,{op:()=>null===this.kv&&!this.Vf.O().handleScroll.vertTouchDrag,ap:()=>null===this.kv&&!this.Vf.O().handleScroll.horzTouchDrag})}m(){null!==this.gv&&this.gv.m(),null!==this.bv&&this.bv.m(),this.Mv=null,this.Qf.unsubscribeSuggestedBitmapSizeChanged(this.Yf),Ts(this.Qf.canvasElement),this.Qf.dispose(),this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),Ts(this.Jf.canvasElement),this.Jf.dispose(),null!==this.Vv&&(this.Vv.i_().u(this),this.Vv.m()),this.Op.m()}lf(){return l(this.Vv)}Wv(t){null!==this.Vv&&this.Vv.i_().u(this),this.Vv=t,null!==this.Vv&&this.Vv.i_().i(Ws.prototype.Fv.bind(this),this,!0),this.Bv(),this.Vf.Up().indexOf(this)===this.Vf.Up().length-1?(this.Mv=this.Mv??new Ps(this.Ev,this.Vf),this.Mv.Tt()):(this.Mv?.Ef(),this.Mv=null)}jf(){return this.Vf}Xp(){return this.jp}Bv(){if(null!==this.Vv&&(this.Ov(),0!==this.ss().Ks().length)){if(null!==this.gv){const t=this.Vv.Ha();this.gv.us(l(t))}if(null!==this.bv){const t=this.Vv.Na();this.bv.us(l(t))}}}zv(){null!==this.gv&&this.gv.Tt(),null!==this.bv&&this.bv.Tt()}Fa(){return null!==this.Vv?this.Vv.Fa():0}Ea(t){this.Vv&&this.Vv.Ea(t)}np(t){if(!this.Vv)return;this.$v();const i=t.localX,s=t.localY;this.Hv(i,s,t)}yp(t){this.$v(),this.Nv(),this.Hv(t.localX,t.localY,t)}ep(t){if(!this.Vv)return;this.$v();const i=t.localX,s=t.localY;this.Hv(i,s,t)}mp(t){null!==this.Vv&&(this.$v(),this.Uv(t))}Xd(t){null!==this.Vv&&this.qv(this.Pv,t)}jd(t){this.Xd(t)}cp(t){this.$v(),this.jv(t),this.Hv(t.localX,t.localY,t)}vp(t){null!==this.Vv&&(this.$v(),this.Tv=!1,this.Yv(t))}fp(t){null!==this.Vv&&this.Uv(t)}Fp(t){if(this.Tv=!0,null===this.kv){const i={x:t.localX,y:t.localY};this.Kv(i,i,t)}}Vp(t){null!==this.Vv&&(this.$v(),this.Vv.ti().ac(null),this.Gv())}Xv(){return this.xv}Zv(){return this.Pv}Cp(){this.Cv=1,this.ss().ln()}Tp(t,i){if(!this.Vf.O().handleScale.pinch)return;const s=5*(i-this.Cv);this.Cv=i,this.ss().yc(t.ut,s)}bp(t){this.Tv=!1,this.Dv=null!==this.kv,this.Nv();const i=this.ss().cc();null!==this.kv&&i.Vt()&&(this.Iv={x:i.ni(),y:i.ei()},this.kv={x:t.localX,y:t.localY})}_p(t){if(null===this.Vv)return;const i=t.localX,s=t.localY;if(null!==this.kv){this.Dv=!1;const n=l(this.Iv),e=n.x+(i-this.kv.x),h=n.y+(s-this.kv.y);return void this.Hv(e,h,t)}this.jv(t)}pp(t){0===this.jf().O().trackingMode.exitMode&&(this.Dv=!0),this.Jv(),this.Yv(t)}Kn(t,i){const s=this.Vv;return null===s?null:Si(s,t,i)}Qv(t,i){l("left"===i?this.gv:this.bv).lv(ns({width:t,height:this.Of.height}))}Zp(){return this.Of}lv(t){es(this.Of,t)||(this.Of=t,this.Uf=!0,this.Jf.resizeCanvasElement(t),this.Qf.resizeCanvasElement(t),this.Uf=!1,this.Ev.style.width=t.width+"px",this.Ev.style.height=t.height+"px")}tm(){const t=l(this.Vv);t.$a(t.Ha()),t.$a(t.Na());for(const i of t.Ml())if(t.Un(i)){const s=i.$t();null!==s&&t.$a(s),i.zs()}for(const i of t.n_())i.zs()}Jp(){return this.Jf.bitmapSize}Qp(t,i,s,n){const e=this.Jp();if(e.width>0&&e.height>0&&(t.drawImage(this.Jf.canvasElement,i,s),n)){const n=this.Qf.canvasElement;null!==t&&t.drawImage(n,i,s)}}av(t){if(0===t)return;if(null===this.Vv)return;t>1&&this.tm(),null!==this.gv&&this.gv.av(t),null!==this.bv&&this.bv.av(t);const i={colorSpace:this.Vf.O().layout.colorSpace};if(1!==t){this.Jf.applySuggestedBitmapSize();const t=as(this.Jf,i);null!==t&&(t.useBitmapCoordinateSpace(t=>{this.uv(t)}),this.Vv&&(this.im(t,Es),this.sm(t),this.im(t,Ls),this.im(t,As)))}this.Qf.applySuggestedBitmapSize();const s=as(this.Qf,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.nm(s),this.im(s,Bs),this.im(s,As))}hm(){return this.gv}rm(){return this.bv}dv(t,i){this.im(t,i)}Fv(){null!==this.Vv&&this.Vv.i_().u(this),this.Vv=null}Uv(t){this.qv(this.xv,t)}qv(t,i){const s=i.localX,n=i.localY;t.v()&&t.p(this.ss().Lt().du(s),{x:s,y:n},i)}uv({context:t,bitmapSize:i}){const{width:s,height:n}=i,e=this.ss(),h=e.q(),r=e.Hc();h===r?F(t,0,0,s,n,r):A(t,0,0,s,n,h,r)}sm(t){const i=l(this.Vv),s=i.s_()._h().Dt(i);null!==s&&s.et(t,!1)}nm(t){this.lm(t,Ls,Ds,this.ss().cc())}im(t,i){const s=l(this.Vv),n=s.Rt(),e=s.n_();for(const s of e)this.lm(t,i,ks,s);for(const s of n)this.lm(t,i,ks,s);for(const s of e)this.lm(t,i,Ds,s);for(const s of n)this.lm(t,i,Ds,s)}lm(t,i,s,n){const e=l(this.Vv),h=e.ti().oc(),r=null!==h&&h.e_===n,o=null!==h&&r&&void 0!==h.h_?h.h_.Xn:void 0;Is(i,i=>s(i,t,r,o),n,e)}Ov(){if(null===this.Vv)return;const t=this.Vf,i=this.Vv.Ha().O().visible,s=this.Vv.Na().O().visible;i||null===this.gv||(this.Lv.removeChild(this.gv.Xp()),this.gv.m(),this.gv=null),s||null===this.bv||(this.Av.removeChild(this.bv.Xp()),this.bv.m(),this.bv=null);const n=t.ti().Fc();i&&null===this.gv&&(this.gv=new Fs(this,t.O(),n,"left"),this.Lv.appendChild(this.gv.Xp())),s&&null===this.bv&&(this.bv=new Fs(this,t.O(),n,"right"),this.Av.appendChild(this.bv.Xp()))}om(t){return t.Ep&&this.Tv||null!==this.kv}am(t){return Math.max(0,Math.min(t,this.Of.width-1))}_m(t){return Math.max(0,Math.min(t,this.Of.height-1))}Hv(t,i,s){this.ss().Dc(this.am(t),this._m(i),s,l(this.Vv))}Gv(){this.ss().Rc()}Jv(){this.Dv&&(this.kv=null,this.Gv())}Kv(t,i,s){this.kv=t,this.Dv=!1,this.Hv(i.x,i.y,s);const n=this.ss().cc();this.Iv={x:n.ni(),y:n.ei()}}ss(){return this.Vf.ti()}Yv(t){if(!this.Sv)return;const i=this.ss(),s=this.lf();if(i.Ga(s,s.ks()),this.yv=null,this.Sv=!1,i.Cc(),null!==this.Rv){const t=performance.now(),s=i.Lt();this.Rv.ae(s.bu(),t),this.Rv.Iu(t)||i.un(this.Rv)}}$v(){this.kv=null}Nv(){if(!this.Vv)return;if(this.ss().ln(),document.activeElement!==document.body&&document.activeElement!==document.documentElement)l(document.activeElement).blur();else{const t=document.getSelection();null!==t&&t.removeAllRanges()}!this.Vv.ks().Gi()&&this.ss().Lt().Gi()}jv(t){if(null===this.Vv)return;const i=this.ss(),s=i.Lt();if(s.Gi())return;const n=this.Vf.O(),e=n.handleScroll,h=n.kineticScroll;if((!e.pressedMouseMove||t.Ep)&&(!e.horzTouchDrag&&!e.vertTouchDrag||!t.Ep))return;const r=this.Vv.ks(),l=performance.now();if(null!==this.yv||this.om(t)||(this.yv={x:t.clientX,y:t.clientY,rd:l,um:t.localX,dm:t.localY}),null!==this.yv&&!this.Sv&&(this.yv.x!==t.clientX||this.yv.y!==t.clientY)){if(t.Ep&&h.touch||!t.Ep&&h.mouse){const t=s.wu();this.Rv=new xs(.2/t,7/t,.997,15/t),this.Rv.Cf(s.bu(),this.yv.rd)}else this.Rv=null;r.Gi()||i.Ya(this.Vv,r,t.localY),i.xc(t.localX),this.Sv=!0}this.Sv&&(r.Gi()||i.Ka(this.Vv,r,t.localY),i.Pc(t.localX),null!==this.Rv&&this.Rv.Cf(s.bu(),l))}}class Os{constructor(t,i,s,n,e){this.xt=!0,this.Of=ns({width:0,height:0}),this.qf=()=>this.av(3),this.Kf="left"===t,this.Qu=s.Fc,this.Cs=i,this.pm=n,this.fm=e,this.Yp=document.createElement("div"),this.Yp.style.width="25px",this.Yp.style.height="100%",this.Yp.style.overflow="hidden",this.Jf=Cs(this.Yp,ns({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf)}m(){this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),Ts(this.Jf.canvasElement),this.Jf.dispose()}Xp(){return this.Yp}Zp(){return this.Of}lv(t){es(this.Of,t)||(this.Of=t,this.Jf.resizeCanvasElement(t),this.Yp.style.width=`${t.width}px`,this.Yp.style.height=`${t.height}px`,this.xt=!0)}av(t){if(t<3&&!this.xt)return;if(0===this.Of.width||0===this.Of.height)return;this.xt=!1,this.Jf.applySuggestedBitmapSize();const i=as(this.Jf,{colorSpace:this.Cs.layout.colorSpace});null!==i&&i.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t)})}Jp(){return this.Jf.bitmapSize}Qp(t,i,s){const n=this.Jp();n.width>0&&n.height>0&&t.drawImage(this.Jf.canvasElement,i,s)}cv({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:n}){if(!this.pm())return;t.fillStyle=this.Cs.timeScale.borderColor;const e=Math.floor(this.Qu.O().S*s),h=Math.floor(this.Qu.O().S*n),r=this.Kf?i.width-e:0;t.fillRect(r,0,e,h)}uv({context:t,bitmapSize:i}){F(t,0,0,i.width,i.height,this.fm())}}function zs(t){return i=>i.sl?.(t)??[]}const $s=zs("normal"),Hs=zs("top"),Ns=zs("bottom");class Us{constructor(t,i){this.vm=null,this.wm=null,this.M=null,this.gm=!1,this.Of=ns({width:0,height:0}),this.bm=new a,this.$f=new it(5),this.Uf=!1,this.qf=()=>{this.Uf||this.Vf.ti().ah()},this.Yf=()=>{this.Uf||this.Vf.ti().ah()},this.Vf=t,this.__=i,this.Cs=t.O().layout,this.kf=document.createElement("tr"),this.Mm=document.createElement("td"),this.Mm.style.padding="0",this.ym=document.createElement("td"),this.ym.style.padding="0",this.Yp=document.createElement("td"),this.Yp.style.height="25px",this.Yp.style.padding="0",this.Sm=document.createElement("div"),this.Sm.style.width="100%",this.Sm.style.height="100%",this.Sm.style.position="relative",this.Sm.style.overflow="hidden",this.Yp.appendChild(this.Sm),this.Jf=Cs(this.Sm,ns({width:16,height:16})),this.Jf.subscribeSuggestedBitmapSizeChanged(this.qf);const s=this.Jf.canvasElement;s.style.position="absolute",s.style.zIndex="1",s.style.left="0",s.style.top="0",this.Qf=Cs(this.Sm,ns({width:16,height:16})),this.Qf.subscribeSuggestedBitmapSizeChanged(this.Yf);const n=this.Qf.canvasElement;n.style.position="absolute",n.style.zIndex="2",n.style.left="0",n.style.top="0",this.kf.appendChild(this.Mm),this.kf.appendChild(this.Yp),this.kf.appendChild(this.ym),this.xm(),this.Vf.ti().Va().i(this.xm.bind(this),this),this.Op=new fs(this.Qf.canvasElement,this,{op:()=>!0,ap:()=>!this.Vf.O().handleScroll.horzTouchDrag})}m(){this.Op.m(),null!==this.vm&&this.vm.m(),null!==this.wm&&this.wm.m(),this.Qf.unsubscribeSuggestedBitmapSizeChanged(this.Yf),Ts(this.Qf.canvasElement),this.Qf.dispose(),this.Jf.unsubscribeSuggestedBitmapSizeChanged(this.qf),Ts(this.Jf.canvasElement),this.Jf.dispose()}Xp(){return this.kf}Pm(){return this.vm}Cm(){return this.wm}yp(t){if(this.gm)return;this.gm=!0;const i=this.Vf.ti();!i.Lt().Gi()&&this.Vf.O().handleScale.axisPressedMouseMove.time&&i.Mc(t.localX)}bp(t){this.yp(t)}Sp(){const t=this.Vf.ti();!t.Lt().Gi()&&this.gm&&(this.gm=!1,this.Vf.O().handleScale.axisPressedMouseMove.time&&t.kc())}cp(t){const i=this.Vf.ti();!i.Lt().Gi()&&this.Vf.O().handleScale.axisPressedMouseMove.time&&i.Tc(t.localX)}_p(t){this.cp(t)}vp(){this.gm=!1;const t=this.Vf.ti();t.Lt().Gi()&&!this.Vf.O().handleScale.axisPressedMouseMove.time||t.kc()}pp(){this.vp()}Xd(){this.Vf.O().handleScale.axisDoubleClickReset.time&&this.Vf.ti().dn()}jd(){this.Xd()}np(){this.Vf.ti().O().handleScale.axisPressedMouseMove.time&&this.mv(1)}Vp(){this.mv(0)}Zp(){return this.Of}Tm(){return this.bm}km(t,i,s){es(this.Of,t)||(this.Of=t,this.Uf=!0,this.Jf.resizeCanvasElement(t),this.Qf.resizeCanvasElement(t),this.Uf=!1,this.Yp.style.width=`${t.width}px`,this.Yp.style.height=`${t.height}px`,this.bm.p(t)),null!==this.vm&&this.vm.lv(ns({width:i,height:t.height})),null!==this.wm&&this.wm.lv(ns({width:s,height:t.height}))}Dm(){const t=this.Im();return Math.ceil(t.S+t.P+t.C+t.A+t.V+t.Rm)}Tt(){this.Vf.ti().Lt().Rl()}Jp(){return this.Jf.bitmapSize}Qp(t,i,s,n){const e=this.Jp();if(e.width>0&&e.height>0&&(t.drawImage(this.Jf.canvasElement,i,s),n)){const n=this.Qf.canvasElement;t.drawImage(n,i,s)}}av(t){if(0===t)return;const i={colorSpace:this.Cs.colorSpace};if(1!==t){this.Jf.applySuggestedBitmapSize();const s=as(this.Jf,i);null!==s&&(s.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t),this.Vm(s,Ns)}),this.pv(s),this.Vm(s,$s)),null!==this.vm&&this.vm.av(t),null!==this.wm&&this.wm.av(t)}this.Qf.applySuggestedBitmapSize();const s=as(this.Qf,i);null!==s&&(s.useBitmapCoordinateSpace(({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)}),this.Fm([...this.Vf.ti().Ks(),this.Vf.ti().cc()],s),this.Vm(s,Hs))}Vm(t,i){const s=this.Vf.ti().Ks();for(const n of s)Is(i,i=>ks(i,t,!1,void 0),n,void 0);for(const n of s)Is(i,i=>Ds(i,t,!1,void 0),n,void 0)}uv({context:t,bitmapSize:i}){F(t,0,0,i.width,i.height,this.Vf.ti().Hc())}cv({context:t,bitmapSize:i,verticalPixelRatio:s}){if(this.Vf.O().timeScale.borderVisible){t.fillStyle=this.Em();const n=Math.max(1,Math.floor(this.Im().S*s));t.fillRect(0,0,i.width,n)}}pv(t){const i=this.Vf.ti().Lt(),s=i.Rl();if(!s||0===s.length)return;const n=this.__.maxTickMarkWeight(s),e=this.Im(),h=i.O();h.borderVisible&&h.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:i,verticalPixelRatio:n})=>{t.strokeStyle=this.Em(),t.fillStyle=this.Em();const h=Math.max(1,Math.floor(i)),r=Math.floor(.5*i);t.beginPath();const l=Math.round(e.P*n);for(let n=s.length;n--;){const e=Math.round(s[n].coord*i);t.rect(e-r,0,h,l)}t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{const i=e.S+e.P+e.A+e.C/2;t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.N(),t.font=this.hv();for(const e of s)if(e.weight<n){const s=e.needAlignCoordinate?this.Lm(t,e.coord,e.label):e.coord;t.fillText(e.label,s,i)}this.Vf.O().timeScale.allowBoldLabels&&(t.font=this.Am());for(const e of s)if(e.weight>=n){const s=e.needAlignCoordinate?this.Lm(t,e.coord,e.label):e.coord;t.fillText(e.label,s,i)}})}Lm(t,i,s){const n=this.$f.Vi(t,s),e=n/2,h=Math.floor(i-e)+.5;return h<0?i+=Math.abs(0-h):h+n>this.Of.width&&(i-=Math.abs(this.Of.width-(h+n))),i}Fm(t,i){const s=this.Im();for(const n of t)for(const t of n.ds())t.Dt().et(i,s)}Em(){return this.Vf.O().timeScale.borderColor}N(){return this.Cs.textColor}$(){return this.Cs.fontSize}hv(){return g(this.$(),this.Cs.fontFamily)}Am(){return g(this.$(),this.Cs.fontFamily,"bold")}Im(){null===this.M&&(this.M={S:1,B:NaN,A:NaN,V:NaN,Qi:NaN,P:5,C:NaN,T:"",Ji:new it,Rm:0});const t=this.M,i=this.hv();if(t.T!==i){const s=this.$();t.C=s,t.T=i,t.A=3*s/12,t.V=3*s/12,t.Qi=9*s/12,t.B=0,t.Rm=4*s/12,t.Ji.Fn()}return this.M}mv(t){this.Yp.style.cursor=1===t?"ew-resize":"default"}xm(){const t=this.Vf.ti(),i=t.O();i.leftPriceScale.visible||null===this.vm||(this.Mm.removeChild(this.vm.Xp()),this.vm.m(),this.vm=null),i.rightPriceScale.visible||null===this.wm||(this.ym.removeChild(this.wm.Xp()),this.wm.m(),this.wm=null);const s={Fc:this.Vf.ti().Fc()},n=()=>i.leftPriceScale.borderVisible&&t.Lt().O().borderVisible,e=()=>t.Hc();i.leftPriceScale.visible&&null===this.vm&&(this.vm=new Os("left",i,s,n,e),this.Mm.appendChild(this.vm.Xp())),i.rightPriceScale.visible&&null===this.wm&&(this.wm=new Os("right",i,s,n,e),this.ym.appendChild(this.wm.Xp()))}}const qs=!!_s&&!!navigator.userAgentData&&navigator.userAgentData.brands.some(t=>t.brand.includes("Chromium"))&&!!_s&&(navigator?.userAgentData?.platform?"Windows"===navigator.userAgentData.platform:navigator.userAgent.toLowerCase().indexOf("win")>=0);class js{constructor(t,i,s){var n;this.Bm=[],this.Wm=[],this.Om=0,this.no=0,this.Ma=0,this.zm=0,this.$m=0,this.Hm=null,this.Nm=!1,this.xv=new a,this.Pv=new a,this.Xu=new a,this.Um=null,this.qm=null,this.Rf=t,this.Cs=i,this.__=s,this.kf=document.createElement("div"),this.kf.classList.add("tv-lightweight-charts"),this.kf.style.overflow="hidden",this.kf.style.direction="ltr",this.kf.style.width="100%",this.kf.style.height="100%",(n=this.kf).style.userSelect="none",n.style.webkitUserSelect="none",n.style.msUserSelect="none",n.style.MozUserSelect="none",n.style.webkitTapHighlightColor="transparent",this.jm=document.createElement("table"),this.jm.setAttribute("cellspacing","0"),this.kf.appendChild(this.jm),this.Ym=this.Km.bind(this),Ys(this.Cs)&&this.Gm(!0),this.ss=new Ai(this.Ju.bind(this),this.Cs,s),this.ti().dc().i(this.Xm.bind(this),this),this.Zm=new Us(this,this.__),this.jm.appendChild(this.Zm.Xp());const e=i.autoSize&&this.Jm();let h=this.Cs.width,r=this.Cs.height;if(e||0===h||0===r){const i=t.getBoundingClientRect();h=h||i.width,r=r||i.height}this.Qm(h,r),this.tw(),t.appendChild(this.kf),this.iw(),this.ss.Lt().Eu().i(this.ss.Er.bind(this.ss),this),this.ss.Va().i(this.ss.Er.bind(this.ss),this)}ti(){return this.ss}O(){return this.Cs}Up(){return this.Bm}sw(){return this.Zm}m(){this.Gm(!1),0!==this.Om&&window.cancelAnimationFrame(this.Om),this.ss.dc().u(this),this.ss.Lt().Eu().u(this),this.ss.Va().u(this),this.ss.m();for(const t of this.Bm)this.jm.removeChild(t.Xp()),t.Xv().u(this),t.Zv().u(this),t.m();this.Bm=[];for(const t of this.Wm)this.nw(t);this.Wm=[],l(this.Zm).m(),null!==this.kf.parentElement&&this.kf.parentElement.removeChild(this.kf),this.Xu.m(),this.xv.m(),this.Pv.m(),this.ew()}Qm(t,i,s=!1){if(this.no===i&&this.Ma===t)return;const n=function(t){const i=Math.floor(t.width),s=Math.floor(t.height);return ns({width:i-i%2,height:s-s%2})}(ns({width:t,height:i}));this.no=n.height,this.Ma=n.width;const e=this.no+"px",h=this.Ma+"px";l(this.kf).style.height=e,l(this.kf).style.width=h,this.jm.style.height=e,this.jm.style.width=h,s?this.hw(Y.bn(),performance.now()):this.ss.Er()}av(t){void 0===t&&(t=Y.bn());for(let i=0;i<this.Bm.length;i++)this.Bm[i].av(t.hn(i).sn);this.Cs.timeScale.visible&&this.Zm.av(t.en())}oh(t){const i=Ys(this.Cs);this.ss.oh(t);const s=Ys(this.Cs);s!==i&&this.Gm(s),t.layout?.panes&&this.rw(),this.iw(),this.lw(t)}Xv(){return this.xv}Zv(){return this.Pv}dc(){return this.Xu}ow(t=!1){null!==this.Hm&&(this.hw(this.Hm,performance.now()),this.Hm=null);const i=this.aw(null),s=document.createElement("canvas");s.width=i.width,s.height=i.height;const n=l(s.getContext("2d"));return this.aw(n,t),s}_w(t){if("left"===t&&!this.uw())return 0;if("right"===t&&!this.cw())return 0;if(0===this.Bm.length)return 0;return l("left"===t?this.Bm[0].hm():this.Bm[0].rm()).ov()}dw(){return this.Cs.autoSize&&null!==this.Um}if(){return this.kf}pw(t){this.qm=t,this.qm?this.if().style.setProperty("cursor",t):this.if().style.removeProperty("cursor")}fw(){return this.qm}mw(t){return r(this.Bm[t]).Zp()}rw(){this.Wm.forEach(t=>{t.Tt()})}lw(t){(void 0!==t.autoSize||!this.Um||void 0===t.width&&void 0===t.height)&&(t.autoSize&&!this.Um&&this.Jm(),!1===t.autoSize&&null!==this.Um&&this.ew(),t.autoSize||void 0===t.width&&void 0===t.height||this.Qm(t.width||this.Ma,t.height||this.no))}aw(t,i){let s=0,n=0;const e=this.Bm[0],h=(s,n)=>{let e=0;for(let h=0;h<this.Bm.length;h++){const r=this.Bm[h],o=l("left"===s?r.hm():r.rm()),a=o.Jp();if(null!==t&&o.Qp(t,n,e,i),e+=a.height,h<this.Bm.length-1){const i=this.Wm[h],s=i.Jp();null!==t&&i.Qp(t,n,e),e+=s.height}}};if(this.uw()){h("left",0);s+=l(e.hm()).Jp().width}for(let e=0;e<this.Bm.length;e++){const h=this.Bm[e],r=h.Jp();if(null!==t&&h.Qp(t,s,n,i),n+=r.height,e<this.Bm.length-1){const i=this.Wm[e],h=i.Jp();null!==t&&i.Qp(t,s,n),n+=h.height}}if(s+=e.Jp().width,this.cw()){h("right",s);s+=l(e.rm()).Jp().width}const r=(i,s,n)=>{l("left"===i?this.Zm.Pm():this.Zm.Cm()).Qp(l(t),s,n)};if(this.Cs.timeScale.visible){const s=this.Zm.Jp();if(null!==t){let h=0;this.uw()&&(r("left",h,n),h=l(e.hm()).Jp().width),this.Zm.Qp(t,h,n,i),h+=s.width,this.cw()&&r("right",h,n)}n+=s.height}return ns({width:s,height:n})}ww(){let t=0,i=0,s=0;for(const n of this.Bm)this.uw()&&(i=Math.max(i,l(n.hm()).ev(),this.Cs.leftPriceScale.minimumWidth)),this.cw()&&(s=Math.max(s,l(n.rm()).ev(),this.Cs.rightPriceScale.minimumWidth)),t+=n.Fa();i=ds(i),s=ds(s);const n=this.Ma,e=this.no,h=Math.max(n-i-s,0),r=1*this.Wm.length,o=this.Cs.timeScale.visible;let a=o?Math.max(this.Zm.Dm(),this.Cs.timeScale.minimumHeight):0;var _;a=(_=a)+_%2;const u=r+a,c=e<u?0:e-u,d=c/t;let p=0;const f=window.devicePixelRatio||1;for(let t=0;t<this.Bm.length;++t){const n=this.Bm[t];n.Wv(this.ss.qs()[t]);let e=0,r=0;r=t===this.Bm.length-1?Math.ceil((c-p)*f)/f:Math.round(n.Fa()*d*f)/f,e=Math.max(r,2),p+=e,n.lv(ns({width:h,height:e})),this.uw()&&n.Qv(i,"left"),this.cw()&&n.Qv(s,"right"),n.lf()&&this.ss.fc(n.lf(),e)}this.Zm.km(ns({width:o?h:0,height:a}),o?i:0,o?s:0),this.ss.La(h),this.zm!==i&&(this.zm=i),this.$m!==s&&(this.$m=s)}Gm(t){t?this.kf.addEventListener("wheel",this.Ym,{passive:!1}):this.kf.removeEventListener("wheel",this.Ym)}gw(t){switch(t.deltaMode){case t.DOM_DELTA_PAGE:return 120;case t.DOM_DELTA_LINE:return 32}return qs?1/window.devicePixelRatio:1}Km(t){if(!(0!==t.deltaX&&this.Cs.handleScroll.mouseWheel||0!==t.deltaY&&this.Cs.handleScale.mouseWheel))return;const i=this.gw(t),s=i*t.deltaX/100,n=-i*t.deltaY/100;if(t.cancelable&&t.preventDefault(),0!==n&&this.Cs.handleScale.mouseWheel){const i=Math.sign(n)*Math.min(1,Math.abs(n)),s=t.clientX-this.kf.getBoundingClientRect().left;this.ti().yc(s,i)}0!==s&&this.Cs.handleScroll.mouseWheel&&this.ti().Sc(-80*s)}hw(t,i){const s=t.en();3===s&&this.bw(),3!==s&&2!==s||(this.Mw(t),this.yw(t,i),this.Zm.Tt(),this.Bm.forEach(t=>{t.zv()}),3===this.Hm?.en()&&(this.Hm.mn(t),this.bw(),this.Mw(this.Hm),this.yw(this.Hm,i),t=this.Hm,this.Hm=null)),this.av(t)}yw(t,i){for(const s of t.vn())this.wn(s,i)}Mw(t){const i=this.ss.qs();for(let s=0;s<i.length;s++)t.hn(s).nn&&i[s].Ja()}wn(t,i){const s=this.ss.Lt();switch(t.an){case 0:s.Au();break;case 1:s.Bu(t.Ht);break;case 2:s.pn(t.Ht);break;case 3:s.fn(t.Ht);break;case 4:s.Su();break;case 5:t.Ht.Iu(i)||s.fn(t.Ht.Ru(i))}}Ju(t){null!==this.Hm?this.Hm.mn(t):this.Hm=t,this.Nm||(this.Nm=!0,this.Om=window.requestAnimationFrame(t=>{if(this.Nm=!1,this.Om=0,null!==this.Hm){const i=this.Hm;this.Hm=null,this.hw(i,t);for(const s of i.vn())if(5===s.an&&!s.Ht.Iu(t)){this.ti().un(s.Ht);break}}}))}bw(){this.tw()}nw(t){this.jm.removeChild(t.Xp()),t.m()}tw(){const t=this.ss.qs(),i=t.length,s=this.Bm.length;for(let t=i;t<s;t++){const t=r(this.Bm.pop());this.jm.removeChild(t.Xp()),t.Xv().u(this),t.Zv().u(this),t.m();const i=this.Wm.pop();void 0!==i&&this.nw(i)}for(let n=s;n<i;n++){const i=new Ws(this,t[n]);if(i.Xv().i(this.Sw.bind(this,i),this),i.Zv().i(this.xw.bind(this,i),this),this.Bm.push(i),n>0){const t=new Ms(this,n-1,n);this.Wm.push(t),this.jm.insertBefore(t.Xp(),this.Zm.Xp())}this.jm.insertBefore(i.Xp(),this.Zm.Xp())}for(let s=0;s<i;s++){const i=t[s],n=this.Bm[s];n.lf()!==i?n.Wv(i):n.Bv()}this.iw(),this.ww()}Pw(t,i,s,n){const e=new Map;if(null!==t){this.ss.Ks().forEach(i=>{const s=i.Xs().$h(t);null!==s&&e.set(i,s)})}let h;if(null!==t){const i=this.ss.Lt().ns(t)?.originalTime;void 0!==i&&(h=i)}const r=this.ti().oc(),l=null!==r&&r.e_ instanceof Ut?r.e_:void 0,o=null!==r&&void 0!==r.h_?r.h_.Gn:void 0,a=this.Cw(n);return{Tw:h,Ie:t??void 0,kw:i??void 0,Dw:-1!==a?a:void 0,Iw:l,Rw:e,Vw:o,Fw:s??void 0}}Cw(t){let i=-1;if(t)i=this.Bm.indexOf(t);else{const t=this.ti().cc().Us();null!==t&&(i=this.ti().qs().indexOf(t))}return i}Sw(t,i,s,n){this.xv.p(()=>this.Pw(i,s,n,t))}xw(t,i,s,n){this.Pv.p(()=>this.Pw(i,s,n,t))}Xm(t,i,s){this.pw(this.ti().oc()?.l_??null),this.Xu.p(()=>this.Pw(t,i,s))}iw(){const t=this.Cs.timeScale.visible?"":"none";this.Zm.Xp().style.display=t}uw(){return this.Bm[0].lf().Ha().O().visible}cw(){return this.Bm[0].lf().Na().O().visible}Jm(){return"ResizeObserver"in window&&(this.Um=new ResizeObserver(t=>{const i=t[t.length-1];i&&this.Qm(i.contentRect.width,i.contentRect.height)}),this.Um.observe(this.Rf,{box:"border-box"}),!0)}ew(){null!==this.Um&&this.Um.disconnect(),this.Um=null}}function Ys(t){return Boolean(t.handleScroll.mouseWheel||t.handleScale.mouseWheel)}function Ks(t){return void 0===t.open&&void 0===t.value}function Gs(t){return function(t){return void 0!==t.open}(t)||function(t){return void 0!==t.value}(t)}function Xs(t,i,s,n){const e=s.value,h={Ie:i,gt:t,Ht:[e,e,e,e],Tw:n};return void 0!==s.color&&(h.I=s.color),h}function Zs(t,i,s,n){const e=s.value,h={Ie:i,gt:t,Ht:[e,e,e,e],Tw:n};return void 0!==s.lineColor&&(h.wt=s.lineColor),void 0!==s.topColor&&(h.gh=s.topColor),void 0!==s.bottomColor&&(h.bh=s.bottomColor),h}function Js(t,i,s,n){const e=s.value,h={Ie:i,gt:t,Ht:[e,e,e,e],Tw:n};return void 0!==s.topLineColor&&(h.Mh=s.topLineColor),void 0!==s.bottomLineColor&&(h.yh=s.bottomLineColor),void 0!==s.topFillColor1&&(h.Sh=s.topFillColor1),void 0!==s.topFillColor2&&(h.xh=s.topFillColor2),void 0!==s.bottomFillColor1&&(h.Ph=s.bottomFillColor1),void 0!==s.bottomFillColor2&&(h.Ch=s.bottomFillColor2),h}function Qs(t,i,s,n){const e={Ie:i,gt:t,Ht:[s.open,s.high,s.low,s.close],Tw:n};return void 0!==s.color&&(e.I=s.color),e}function tn(t,i,s,n){const e={Ie:i,gt:t,Ht:[s.open,s.high,s.low,s.close],Tw:n};return void 0!==s.color&&(e.I=s.color),void 0!==s.borderColor&&(e.Nt=s.borderColor),void 0!==s.wickColor&&(e.wh=s.wickColor),e}function sn(t,i,s,n,e){const h=r(e)(s),l=Math.max(...h),o=Math.min(...h),a=h[h.length-1],_=[a,l,o,a],{time:u,color:c,...d}=s;return{Ie:i,gt:t,Ht:_,Tw:n,ne:d,I:c}}function nn(t){return void 0!==t.Ht}function en(t,i){return void 0!==i.customValues&&(t.Ew=i.customValues),t}function hn(t){return(i,s,n,e,h,r)=>function(t,i){return i?i(t):Ks(t)}(n,r)?en({gt:i,Ie:s,Tw:e},n):en(t(i,s,n,e,h),n)}function rn(t){return{Candlestick:hn(tn),Bar:hn(Qs),Area:hn(Zs),Baseline:hn(Js),Histogram:hn(Xs),Line:hn(Xs),Custom:hn(sn)}[t]}function ln(t){return{Ie:0,Lw:new Map,Nr:t}}function on(t,i){if(void 0!==t&&0!==t.length)return{Aw:i.key(t[0].gt),Bw:i.key(t[t.length-1].gt)}}function an(t){let i;return t.forEach(t=>{void 0===i&&(i=t.Tw)}),r(i)}class _n{constructor(t){this.Ww=new Map,this.Ow=new Map,this.zw=new Map,this.$w=[],this.__=t}m(){this.Ww.clear(),this.Ow.clear(),this.zw.clear(),this.$w=[]}Hw(t,i){let s=0!==this.Ww.size,n=!1;const e=this.Ow.get(t);if(void 0!==e)if(1===this.Ow.size)s=!1,n=!0,this.Ww.clear();else for(const i of this.$w)i.pointData.Lw.delete(t)&&(n=!0);let h=[];if(0!==i.length){const s=i.map(t=>t.time),e=this.__.createConverterToInternalObj(i),r=rn(t.Ih()),l=t.dl(),o=t.fl();h=i.map((i,h)=>{const a=e(i.time),_=this.__.key(a);let u=this.Ww.get(_);void 0===u&&(u=ln(a),this.Ww.set(_,u),n=!0);const c=r(a,u.Ie,i,s[h],l,o);return u.Lw.set(t,c),c})}s&&this.Nw(),this.Uw(t,h);let r=-1;if(n){const t=[];this.Ww.forEach(i=>{t.push({timeWeight:0,time:i.Nr,pointData:i,originalTime:an(i.Lw)})}),t.sort((t,i)=>this.__.key(t.time)-this.__.key(i.time)),r=this.qw(t)}return this.jw(t,r,function(t,i,s){const n=on(t,s),e=on(i,s);if(void 0!==n&&void 0!==e)return{Yw:!1,Br:n.Bw>=e.Bw&&n.Aw>=e.Aw}}(this.Ow.get(t),e,this.__))}Ac(t){return this.Hw(t,[])}Kw(t,i,s){const n=i;!function(t){void 0===t.Tw&&(t.Tw=t.time)}(n),this.__.preprocessData(i);const e=this.__.createConverterToInternalObj([i])(i.time),h=this.zw.get(t);if(!s&&void 0!==h&&this.__.key(e)<this.__.key(h))throw new Error(`Cannot update oldest data, last time=${h}, new time=${e}`);let r=this.Ww.get(this.__.key(e));if(s&&void 0===r)throw new Error("Cannot update non-existing data point when historicalUpdate is true");const l=void 0===r;void 0===r&&(r=ln(e),this.Ww.set(this.__.key(e),r));const o=rn(t.Ih()),a=t.dl(),_=t.fl(),u=o(e,r.Ie,i,n.Tw,a,_);r.Lw.set(t,u),s?this.Gw(t,u,r.Ie):this.Xw(t,u);const c={Br:nn(u),Yw:s};if(!l)return this.jw(t,-1,c);const d={timeWeight:0,time:r.Nr,pointData:r,originalTime:an(r.Lw)},p=yt(this.$w,this.__.key(d.time),(t,i)=>this.__.key(t.time)<i);this.$w.splice(p,0,d);for(let t=p;t<this.$w.length;++t)un(this.$w[t].pointData,t);return this.__.fillWeightsForPoints(this.$w,p),this.jw(t,p,c)}Zw(t,i){const s=this.Ow.get(t);if(void 0===s||i<=0)return[[],this.Jw()];i=Math.min(i,s.length);const n=s.splice(-i).reverse();0===s.length?this.zw.delete(t):this.zw.set(t,s[s.length-1].gt);for(const i of n){const s=this.Ww.get(this.__.key(i.gt));if(s&&(s.Lw.delete(t),0===s.Lw.size)){this.Ww.delete(this.__.key(s.Nr)),this.$w.splice(s.Ie,1);for(let t=s.Ie;t<this.$w.length;++t)un(this.$w[t].pointData,t)}}return[n,this.jw(t,this.$w.length-1,{Yw:!1,Br:!1})]}Xw(t,i){let s=this.Ow.get(t);void 0===s&&(s=[],this.Ow.set(t,s));const n=0!==s.length?s[s.length-1]:null;null===n||this.__.key(i.gt)>this.__.key(n.gt)?nn(i)&&s.push(i):nn(i)?s[s.length-1]=i:s.splice(-1,1),this.zw.set(t,i.gt)}Gw(t,i,s){const n=this.Ow.get(t);if(void 0===n)return;const e=yt(n,s,(t,i)=>t.Ie<i);nn(i)?n[e]=i:n.splice(e,1)}Uw(t,i){0!==i.length?(this.Ow.set(t,i.filter(nn)),this.zw.set(t,i[i.length-1].gt)):(this.Ow.delete(t),this.zw.delete(t))}Nw(){for(const t of this.$w)0===t.pointData.Lw.size&&this.Ww.delete(this.__.key(t.time))}qw(t){let i=-1;for(let s=0;s<this.$w.length&&s<t.length;++s){const n=this.$w[s],e=t[s];if(this.__.key(n.time)!==this.__.key(e.time)){i=s;break}e.timeWeight=n.timeWeight,un(e.pointData,s)}if(-1===i&&this.$w.length!==t.length&&(i=Math.min(this.$w.length,t.length)),-1===i)return-1;for(let s=i;s<t.length;++s)un(t[s].pointData,s);return this.__.fillWeightsForPoints(t,i),this.$w=t,i}Qw(){if(0===this.Ow.size)return null;let t=0;return this.Ow.forEach(i=>{0!==i.length&&(t=Math.max(t,i[i.length-1].Ie))}),t}jw(t,i,s){const n=this.Jw();if(-1!==i)this.Ow.forEach((i,e)=>{n.Oa.set(e,{ne:i,tg:e===t?s:void 0})}),this.Ow.has(t)||n.Oa.set(t,{ne:[],tg:s}),n.Lt.ig=this.$w,n.Lt.sg=i;else{const i=this.Ow.get(t);n.Oa.set(t,{ne:i||[],tg:s})}return n}Jw(){return{Oa:new Map,Lt:{uu:this.Qw()}}}}function un(t,i){t.Ie=i,t.Lw.forEach(t=>{t.Ie=i})}function cn(t,i){return t.gt<i}function dn(t,i){return i<t.gt}function pn(t,i,s){const n=i.Ur(),e=i.yi(),h=yt(t,n,cn),r=St(t,e,dn);if(!s)return{from:h,to:r};let l=h,o=r;return h>0&&h<t.length&&t[h].gt>=n&&(l=h-1),r>0&&r<t.length&&t[r-1].gt<=e&&(o=r+1),{from:l,to:o}}class fn{constructor(t,i,s){this.ng=!0,this.eg=!0,this.hg=!0,this.rg=[],this.lg=null,this.Qn=t,this.te=i,this.og=s}Tt(t){this.ng=!0,"data"===t&&(this.eg=!0),"options"===t&&(this.hg=!0)}Dt(){return this.Qn.Vt()?(this.ag(),null===this.lg?null:this._g):null}ug(){this.rg=this.rg.map(t=>({...t,...this.Qn.Ir().Rh(t.gt)}))}cg(){this.lg=null}ag(){this.eg&&(this.dg(),this.eg=!1),this.hg&&(this.ug(),this.hg=!1),this.ng&&(this.pg(),this.ng=!1)}pg(){const t=this.Qn.$t(),i=this.te.Lt();if(this.cg(),i.Gi()||t.Gi())return;const s=i.Ce();if(null===s)return;if(0===this.Qn.Xs().Bh())return;const n=this.Qn.Bt();null!==n&&(this.lg=pn(this.rg,s,this.og),this.fg(t,i,n.Ht),this.vg())}}class vn{constructor(t,i){this.mg=t,this.Yi=i}et(t,i,s){this.mg.draw(t,this.Yi,i,s)}}class mn extends fn{constructor(t,i,s){super(t,i,!1),this.nr=s,this._g=new vn(this.nr.renderer(),i=>{const s=t.Bt();return null===s?null:t.$t().zt(i,s.Ht)})}pl(t){return this.nr.priceValueBuilder(t)}vl(t){return this.nr.isWhitespace(t)}dg(){const t=this.Qn.Ir();this.rg=this.Qn.Xs().Nh().map(i=>({gt:i.Ie,ut:NaN,...t.Rh(i.Ie),wg:i.ne}))}fg(t,i){i.cu(this.rg,m(this.lg))}vg(){this.nr.update({bars:this.rg.map(wn),barSpacing:this.te.Lt().wu(),visibleRange:this.lg},this.Qn.O())}}function wn(t){return{x:t.ut,time:t.gt,originalData:t.wg,barColor:t.ph}}const gn={color:"#2196f3"},bn=(t,i,s)=>{const n=o(s);return new mn(t,i,n)};function Mn(t){const i={value:t.Ht[3],time:t.Tw};return void 0!==t.Ew&&(i.customValues=t.Ew),i}function yn(t){const i=Mn(t);return void 0!==t.I&&(i.color=t.I),i}function Sn(t){const i=Mn(t);return void 0!==t.wt&&(i.lineColor=t.wt),void 0!==t.gh&&(i.topColor=t.gh),void 0!==t.bh&&(i.bottomColor=t.bh),i}function xn(t){const i=Mn(t);return void 0!==t.Mh&&(i.topLineColor=t.Mh),void 0!==t.yh&&(i.bottomLineColor=t.yh),void 0!==t.Sh&&(i.topFillColor1=t.Sh),void 0!==t.xh&&(i.topFillColor2=t.xh),void 0!==t.Ph&&(i.bottomFillColor1=t.Ph),void 0!==t.Ch&&(i.bottomFillColor2=t.Ch),i}function Pn(t){const i={open:t.Ht[0],high:t.Ht[1],low:t.Ht[2],close:t.Ht[3],time:t.Tw};return void 0!==t.Ew&&(i.customValues=t.Ew),i}function Cn(t){const i=Pn(t);return void 0!==t.I&&(i.color=t.I),i}function Tn(t){const i=Pn(t),{I:s,Nt:n,wh:e}=t;return void 0!==s&&(i.color=s),void 0!==n&&(i.borderColor=n),void 0!==e&&(i.wickColor=e),i}function kn(t){return{Area:Sn,Line:yn,Baseline:xn,Histogram:yn,Bar:Cn,Candlestick:Tn,Custom:Dn}[t]}function Dn(t){const i=t.Tw;return{...t.ne,time:i}}const In={vertLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},horzLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},mode:1},Rn={vertLines:{color:"#D6DCDE",style:0,visible:!0},horzLines:{color:"#D6DCDE",style:0,visible:!0}},Vn={background:{type:"solid",color:"#FFFFFF"},textColor:"#191919",fontSize:12,fontFamily:w,panes:{enableResize:!0,separatorColor:"#E0E3EB",separatorHoverColor:"rgba(178, 181, 189, 0.2)"},attributionLogo:!0,colorSpace:"srgb",colorParsers:[]},Fn={autoScale:!0,mode:0,invertScale:!1,alignLabels:!0,borderVisible:!0,borderColor:"#2B2B43",entireTextOnly:!1,visible:!1,ticksVisible:!1,scaleMargins:{bottom:.1,top:.2},minimumWidth:0,ensureEdgeTickMarksVisible:!1},En={rightOffset:0,barSpacing:6,minBarSpacing:.5,maxBarSpacing:0,fixLeftEdge:!1,fixRightEdge:!1,lockVisibleTimeRangeOnResize:!1,rightBarStaysOnScroll:!1,borderVisible:!0,borderColor:"#2B2B43",visible:!0,timeVisible:!1,secondsVisible:!0,shiftVisibleRangeOnNewBar:!0,allowShiftVisibleRangeOnWhitespaceReplacement:!1,ticksVisible:!1,uniformDistribution:!1,minimumHeight:0,allowBoldLabels:!0,ignoreWhitespaceIndices:!1};function Ln(){return{addDefaultPane:!0,width:0,height:0,autoSize:!1,layout:Vn,crosshair:In,grid:Rn,overlayPriceScales:{...Fn},leftPriceScale:{...Fn,visible:!1},rightPriceScale:{...Fn,visible:!0},timeScale:En,localization:{locale:_s?navigator.language:"",dateFormat:"dd MMM 'yy"},handleScroll:{mouseWheel:!0,pressedMouseMove:!0,horzTouchDrag:!0,vertTouchDrag:!0},handleScale:{axisPressedMouseMove:{time:!0,price:!0},axisDoubleClickReset:{time:!0,price:!0},mouseWheel:!0,pinch:!0},kineticScroll:{mouse:!1,touch:!0},trackingMode:{exitMode:1}}}class An{constructor(t,i,s){this.Hp=t,this.gg=i,this.bg=s??0}applyOptions(t){this.Hp.ti()._c(this.gg,t,this.bg)}options(){return this.Yi().O()}width(){return j(this.gg)?this.Hp._w(this.gg):0}setVisibleRange(t){this.setAutoScale(!1),this.Yi().No(new dt(t.from,t.to))}getVisibleRange(){let t,i,s=this.Yi().th();if(null===s)return null;if(this.Yi().Ql()){const n=this.Yi().va(),e=Bi(n);s=oi(s,this.Yi().so()),t=Number((Math.round(s.qe()/n)*n).toFixed(e)),i=Number((Math.round(s.je()/n)*n).toFixed(e))}else t=s.qe(),i=s.je();return{from:t,to:i}}setAutoScale(t){this.applyOptions({autoScale:t})}Yi(){return l(this.Hp.ti().uc(this.gg,this.bg)).$t}}class Bn{constructor(t,i,s,n){this.Hp=t,this.Ct=s,this.Mg=i,this.yg=n}getHeight(){return this.Ct.qt()}setHeight(t){const i=this.Hp.ti(),s=i.Uc(this.Ct);i.mc(s,t)}getStretchFactor(){return this.Ct.Fa()}setStretchFactor(t){this.Ct.Ea(t),this.Hp.ti().Er()}paneIndex(){return this.Hp.ti().Uc(this.Ct)}moveTo(t){const i=this.paneIndex();i!==t&&(h(t>=0&&t<this.Hp.Up().length,"Invalid pane index"),this.Hp.ti().gc(i,t))}getSeries(){return this.Ct.Oa().map(t=>this.Mg(t))??[]}getHTMLElement(){const t=this.Hp.Up();return t&&0!==t.length&&t[this.paneIndex()]?t[this.paneIndex()].Xp():null}attachPrimitive(t){this.Ct.ul(t),t.attached&&t.attached({chart:this.yg,requestUpdate:()=>this.Ct.ti().Er()})}detachPrimitive(t){this.Ct.cl(t)}priceScale(t){if(null===this.Ct.Ra(t))throw new Error(`Cannot find price scale with id: ${t}`);return new An(this.Hp,t,this.paneIndex())}setPreserveEmptyPane(t){this.Ct.Ba(t)}preserveEmptyPane(){return this.Ct.Wa()}addCustomSeries(t,i={},s=0){return this.yg.addCustomSeries(t,i,s)}addSeries(t,i={}){return this.yg.addSeries(t,i,this.paneIndex())}}const Wn={color:"#FF0000",price:0,lineStyle:2,lineWidth:1,lineVisible:!0,axisLabelVisible:!0,title:"",axisLabelColor:"",axisLabelTextColor:""};class On{constructor(t){this.sh=t}applyOptions(t){this.sh.oh(t)}options(){return this.sh.O()}Sg(){return this.sh}}class zn{constructor(t,i,s,n,e,h){this.xg=new a,this.Qn=t,this.Pg=i,this.Cg=s,this.__=e,this.yg=n,this.Tg=h}m(){this.xg.m()}priceFormatter(){return this.Qn.hl()}priceToCoordinate(t){const i=this.Qn.Bt();return null===i?null:this.Qn.$t().zt(t,i.Ht)}coordinateToPrice(t){const i=this.Qn.Bt();return null===i?null:this.Qn.$t().Ds(t,i.Ht)}barsInLogicalRange(t){if(null===t)return null;const i=new ki(new Pi(t.from,t.to)).T_(),s=this.Qn.Xs();if(s.Gi())return null;const n=s.$h(i.Ur(),1),e=s.$h(i.yi(),-1),h=l(s.Wh()),r=l(s.Gs());if(null!==n&&null!==e&&n.Ie>e.Ie)return{barsBefore:t.from-h,barsAfter:r-t.to};const o={barsBefore:null===n||n.Ie===h?t.from-h:n.Ie-h,barsAfter:null===e||e.Ie===r?r-t.to:r-e.Ie};return null!==n&&null!==e&&(o.from=n.Tw,o.to=e.Tw),o}setData(t){this.__,this.Qn.Ih(),this.Pg.kg(this.Qn,t),this.Dg("full")}update(t,i=!1){this.Qn.Ih(),this.Pg.Ig(this.Qn,t,i),this.Dg("update")}pop(t=1){const i=this.Pg.Rg(this.Qn,t);0!==i.length&&this.Dg("update");const s=kn(this.seriesType());return i.map(t=>s(t))}dataByIndex(t,i){const s=this.Qn.Xs().$h(t,i);if(null===s)return null;return kn(this.seriesType())(s)}data(){const t=kn(this.seriesType());return this.Qn.Xs().Nh().map(i=>t(i))}subscribeDataChanged(t){this.xg.i(t)}unsubscribeDataChanged(t){this.xg._(t)}applyOptions(t){this.Qn.oh(t)}options(){return f(this.Qn.O())}priceScale(){return this.Cg.priceScale(this.Qn.$t().wl(),this.getPane().paneIndex())}createPriceLine(t){const i=_(f(Wn),t),s=this.Qn.Or(i);return new On(s)}removePriceLine(t){this.Qn.zr(t.Sg())}priceLines(){return this.Qn.$r().map(t=>new On(t))}seriesType(){return this.Qn.Ih()}lastValueData(t){const i=this.Qn.Te(t);return i.ke?{noData:!0}:{noData:!1,price:i.bt,color:i.I}}attachPrimitive(t){this.Qn.ul(t),t.attached&&t.attached({chart:this.yg,series:this,requestUpdate:()=>this.Qn.ti().Er(),horzScaleBehavior:this.__})}detachPrimitive(t){this.Qn.cl(t),t.detached&&t.detached(),this.Qn.ti().Er()}getPane(){const t=this.Qn,i=l(this.Qn.ti().Nn(t));return this.Tg(i)}moveToPane(t){this.Qn.ti().zc(this.Qn,t)}seriesOrder(){const t=this.Qn.ti().Nn(this.Qn);return null===t?-1:t.Oa().indexOf(this.Qn)}setSeriesOrder(t){const i=this.Qn.ti().Nn(this.Qn);null!==i&&i.t_(this.Qn,t)}Dg(t){this.xg.v()&&this.xg.p(t)}}class $n{constructor(t,i,s){this.Vg=new a,this.B_=new a,this.bm=new a,this.ss=t,this.cr=t.Lt(),this.Zm=i,this.cr.Vu().i(this.Fg.bind(this)),this.cr.Fu().i(this.Eg.bind(this)),this.Zm.Tm().i(this.Lg.bind(this)),this.__=s}m(){this.cr.Vu().u(this),this.cr.Fu().u(this),this.Zm.Tm().u(this),this.Vg.m(),this.B_.m(),this.bm.m()}scrollPosition(){return this.cr.bu()}scrollToPosition(t,i){i?this.cr.Du(t,1e3):this.ss.fn(t)}scrollToRealTime(){this.cr.ku()}getVisibleRange(){const t=this.cr.eu();return null===t?null:{from:t.from.originalTime,to:t.to.originalTime}}setVisibleRange(t){const i={from:this.__.convertHorzItemToInternal(t.from),to:this.__.convertHorzItemToInternal(t.to)},s=this.cr.ou(i);this.ss.Wc(s)}getVisibleLogicalRange(){const t=this.cr.nu();return null===t?null:{from:t.Ur(),to:t.yi()}}setVisibleLogicalRange(t){h(t.from<=t.to,"The from index cannot be after the to index."),this.ss.Wc(t)}resetTimeScale(){this.ss.dn()}fitContent(){this.ss.Au()}logicalToCoordinate(t){const i=this.ss.Lt();return i.Gi()?null:i.jt(t)}coordinateToLogical(t){return this.cr.Gi()?null:this.cr.du(t)}timeToIndex(t,i){const s=this.__.convertHorzItemToInternal(t);return this.cr.tu(s,i)}timeToCoordinate(t){const i=this.timeToIndex(t,!1);return null===i?null:this.cr.jt(i)}coordinateToTime(t){const i=this.ss.Lt(),s=i.du(t),n=i.ns(s);return null===n?null:n.originalTime}width(){return this.Zm.Zp().width}height(){return this.Zm.Zp().height}subscribeVisibleTimeRangeChange(t){this.Vg.i(t)}unsubscribeVisibleTimeRangeChange(t){this.Vg._(t)}subscribeVisibleLogicalRangeChange(t){this.B_.i(t)}unsubscribeVisibleLogicalRangeChange(t){this.B_._(t)}subscribeSizeChange(t){this.bm.i(t)}unsubscribeSizeChange(t){this.bm._(t)}applyOptions(t){this.cr.oh(t)}options(){return{...f(this.cr.O()),barSpacing:this.cr.wu()}}Fg(){this.Vg.v()&&this.Vg.p(this.getVisibleRange())}Eg(){this.B_.v()&&this.B_.p(this.getVisibleLogicalRange())}Lg(t){this.bm.p(t.width,t.height)}}function Hn(t){return function(t){if(p(t.handleScale)){const i=t.handleScale;t.handleScale={axisDoubleClickReset:{time:i,price:i},axisPressedMouseMove:{time:i,price:i},mouseWheel:i,pinch:i}}else if(void 0!==t.handleScale){const{axisPressedMouseMove:i,axisDoubleClickReset:s}=t.handleScale;p(i)&&(t.handleScale.axisPressedMouseMove={time:i,price:i}),p(s)&&(t.handleScale.axisDoubleClickReset={time:s,price:s})}const i=t.handleScroll;p(i)&&(t.handleScroll={horzTouchDrag:i,vertTouchDrag:i,mouseWheel:i,pressedMouseMove:i})}(t),t}class Nn{constructor(t,i,s){this.Ag=new Map,this.Bg=new Map,this.Wg=new a,this.Og=new a,this.zg=new a,this.ju=new WeakMap,this.$g=new _n(i);const n=void 0===s?f(Ln()):_(f(Ln()),Hn(s));this.Hg=i,this.Hp=new js(t,n,i),this.Hp.Xv().i(t=>{this.Wg.v()&&this.Wg.p(this.Ng(t()))},this),this.Hp.Zv().i(t=>{this.Og.v()&&this.Og.p(this.Ng(t()))},this),this.Hp.dc().i(t=>{this.zg.v()&&this.zg.p(this.Ng(t()))},this);const e=this.Hp.ti();this.Ug=new $n(e,this.Hp.sw(),this.Hg)}remove(){this.Hp.Xv().u(this),this.Hp.Zv().u(this),this.Hp.dc().u(this),this.Ug.m(),this.Hp.m(),this.Ag.clear(),this.Bg.clear(),this.Wg.m(),this.Og.m(),this.zg.m(),this.$g.m()}resize(t,i,s){this.autoSizeActive()||this.Hp.Qm(t,i,s)}addCustomSeries(t,i={},s=0){const n=(t=>({type:"Custom",isBuiltIn:!1,defaultOptions:{...gn,...t.defaultOptions()},qg:bn,jg:t}))(o(t));return this.Yg(n,i,s)}addSeries(t,i={},s=0){return this.Yg(t,i,s)}removeSeries(t){const i=r(this.Ag.get(t)),s=this.$g.Ac(i);this.Hp.ti().Ac(i),this.Kg(s),this.Ag.delete(t),this.Bg.delete(i)}kg(t,i){this.Kg(this.$g.Hw(t,i))}Ig(t,i,s){this.Kg(this.$g.Kw(t,i,s))}Rg(t,i){const[s,n]=this.$g.Zw(t,i);return 0!==s.length&&this.Kg(n),s}subscribeClick(t){this.Wg.i(t)}unsubscribeClick(t){this.Wg._(t)}subscribeCrosshairMove(t){this.zg.i(t)}unsubscribeCrosshairMove(t){this.zg._(t)}subscribeDblClick(t){this.Og.i(t)}unsubscribeDblClick(t){this.Og._(t)}priceScale(t,i=0){return new An(this.Hp,t,i)}timeScale(){return this.Ug}applyOptions(t){this.Hp.oh(Hn(t))}options(){return this.Hp.O()}takeScreenshot(t=!1,i=!1){let s,n;try{i||(s=this.Hp.ti().O().crosshair.mode,this.Hp.oh({crosshair:{mode:2}})),n=this.Hp.ow(t)}finally{i||void 0===s||this.Hp.ti().oh({crosshair:{mode:s}})}return n}addPane(t=!1){const i=this.Hp.ti().qc();return i.Ba(t),this.Gg(i)}removePane(t){this.Hp.ti().vc(t)}swapPanes(t,i){this.Hp.ti().wc(t,i)}autoSizeActive(){return this.Hp.dw()}chartElement(){return this.Hp.if()}panes(){return this.Hp.ti().qs().map(t=>this.Gg(t))}paneSize(t=0){const i=this.Hp.mw(t);return{height:i.height,width:i.width}}setCrosshairPosition(t,i,s){const n=this.Ag.get(s);if(void 0===n)return;const e=this.Hp.ti().Nn(n);null!==e&&this.Hp.ti().Ic(t,i,e)}clearCrosshairPosition(){this.Hp.ti().Rc(!0)}horzBehaviour(){return this.Hg}Yg(i,s={},n=0){h(void 0!==i.qg),function(t){if(void 0===t||"custom"===t.type)return;const i=t;void 0!==i.minMove&&void 0===i.precision&&(i.precision=Bi(i.minMove))}(s.priceFormat),"Candlestick"===i.type&&function(t){void 0!==t.borderColor&&(t.borderUpColor=t.borderColor,t.borderDownColor=t.borderColor),void 0!==t.wickColor&&(t.wickUpColor=t.wickColor,t.wickDownColor=t.wickColor)}(s);const e=_(f(t),f(i.defaultOptions),s),r=i.qg,l=new Ut(this.Hp.ti(),i.type,e,r,i.jg);this.Hp.ti().Ec(l,n);const o=new zn(l,this,this,this,this.Hg,t=>this.Gg(t));return this.Ag.set(o,l),this.Bg.set(l,o),o}Kg(t){const i=this.Hp.ti();i.Vc(t.Lt.uu,t.Lt.ig,t.Lt.sg),t.Oa.forEach((t,i)=>i.lt(t.ne,t.tg)),i.Lt().G_(),i.mu()}Xg(t){return r(this.Bg.get(t))}Ng(t){const i=new Map;t.Rw.forEach((t,s)=>{const n=s.Ih(),e=kn(n)(t);if("Custom"!==n)h(Gs(e));else{const t=s.fl();h(!t||!1===t(e))}i.set(this.Xg(s),e)});const s=void 0!==t.Iw&&this.Bg.has(t.Iw)?this.Xg(t.Iw):void 0;return{time:t.Tw,logical:t.Ie,point:t.kw,paneIndex:t.Dw,hoveredSeries:s,hoveredObjectId:t.Vw,seriesData:i,sourceEvent:t.Fw}}Gg(t){let i=this.ju.get(t);return i||(i=new Bn(this.Hp,t=>this.Xg(t),t,this),this.ju.set(t,i)),i}}function Un(t){if(d(t)){const i=document.getElementById(t);return h(null!==i,`Cannot find element in DOM with id=${t}`),i}return t}function qn(t,i,s){const n=Un(t),e=new Nn(n,i,s);return i.setOptions(e.options()),e}function jn(t,i){return qn(t,new ss,ss.ad(i))}function Yn(){return ss}function Kn(t,i){const s=t.timeScale(),n=i.dataByIndex(Number.MAX_SAFE_INTEGER,-1);if(!n||"number"!=typeof n.time)return null;const e=s.timeToCoordinate(n.time);if(null===e)return null;const h=s.coordinateToLogical(e);if(null===h)return null;const r=i.dataByIndex(h-1,-1);return!r||"number"!=typeof r.time||r.time>=n.time?null:{gt:n.time,Gl:h,Zg:n.time-r.time}}function Gn(t,i,s){const n=t.timeScale(),e=n.coordinateToTime(s);if(null!==e)return e;const h=n.coordinateToLogical(s);if(null===h)return null;const r=Kn(t,i);if(null===r)return null;const l=h-r.Gl;return Math.round(r.gt+l*r.Zg)}function Xn(t,i,s){if(null==s)return null;const n=t.timeScale(),e=n.timeToCoordinate(s);if(null!==e)return e;if("number"!=typeof s)return null;const h=Kn(t,i);if(null===h)return null;const r=h.Gl+(s-h.gt)/h.Zg,l=n.logicalToCoordinate(r);return null===l?null:l}class Zn extends fn{constructor(t,i){super(t,i,!0)}fg(t,i,s){i.cu(this.rg,m(this.lg)),t.jo(this.rg,s,m(this.lg))}Jg(t,i){return{gt:t,bt:i,ut:NaN,ct:NaN}}dg(){const t=this.Qn.Ir();this.rg=this.Qn.Xs().Nh().map(i=>{const s=i.Ht[3];return this.Qg(i.Ie,s,t)})}}function Jn(t,i,s,n,e,h,r){if(0===i.length||n.from>=i.length||n.to<=0)return;const{context:l,horizontalPixelRatio:o,verticalPixelRatio:a}=t,_=i[n.from];let u=h(t,_),c=_;if(n.to-n.from<2){const i=e/2;l.beginPath();const s={ut:_.ut-i,ct:_.ct},n={ut:_.ut+i,ct:_.ct};l.moveTo(s.ut*o,s.ct*a),l.lineTo(n.ut*o,n.ct*a),r(t,u,s,n)}else{const e=(i,s)=>{r(t,u,c,s),l.beginPath(),u=i,c=s};let d=c;l.beginPath(),l.moveTo(_.ut*o,_.ct*a);for(let r=n.from+1;r<n.to;++r){d=i[r];const n=h(t,d);switch(s){case 0:l.lineTo(d.ut*o,d.ct*a);break;case 1:l.lineTo(d.ut*o,i[r-1].ct*a),n!==u&&(e(n,d),l.lineTo(d.ut*o,i[r-1].ct*a)),l.lineTo(d.ut*o,d.ct*a);break;case 2:{const[t,s]=se(i,r-1,r);l.bezierCurveTo(t.ut*o,t.ct*a,s.ut*o,s.ct*a,d.ut*o,d.ct*a);break}}1!==s&&n!==u&&(e(n,d),l.moveTo(d.ut*o,d.ct*a))}(c!==d||c===d&&1===s)&&r(t,u,c,d)}}const Qn=6;function te(t,i){return{ut:t.ut-i.ut,ct:t.ct-i.ct}}function ie(t,i){return{ut:t.ut/i,ct:t.ct/i}}function se(t,i,s){const n=Math.max(0,i-1),e=Math.min(t.length-1,s+1);var h,r;return[(h=t[i],r=ie(te(t[s],t[n]),Qn),{ut:h.ut+r.ut,ct:h.ct+r.ct}),te(t[s],ie(te(t[e],t[i]),Qn))]}function ne(t,i){const s=t.context;s.strokeStyle=i,s.stroke()}class ee extends P{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht(t){if(null===this.rt)return;const{_t:i,ot:s,tb:e,ib:h,dt:r,Xt:l,sb:o}=this.rt;if(null===s)return;const a=t.context;a.lineCap="butt",a.lineWidth=r*t.verticalPixelRatio,n(a,l),a.lineJoin="round";const _=this.nb.bind(this);void 0!==h&&Jn(t,i,h,s,e,_,ne),o&&function(t,i,s,n,e){if(n.to-n.from<=0)return;const{horizontalPixelRatio:h,verticalPixelRatio:r,context:l}=t;let o=null;const a=Math.max(1,Math.floor(h))%2/2,_=s*r+a;for(let s=n.to-1;s>=n.from;--s){const n=i[s];if(n){const i=e(t,n);i!==o&&(l.beginPath(),null!==o&&l.fill(),l.fillStyle=i,o=i);const s=Math.round(n.ut*h)+a,u=n.ct*r;l.moveTo(s,u),l.arc(s,u,_,0,2*Math.PI)}}l.fill()}(t,i,o,s,_)}}class he extends ee{nb(t,i){return i.wt}}class re extends Zn{constructor(){super(...arguments),this._g=new he}Qg(t,i,s){return{...this.Jg(t,i),...s.Rh(t)}}vg(){const t=this.Qn.O(),i={_t:this.rg,Xt:t.lineStyle,ib:t.lineVisible?t.lineType:void 0,dt:t.lineWidth,sb:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0,ot:this.lg,tb:this.te.Lt().wu()};this._g.lt(i)}}const le={type:"Line",isBuiltIn:!0,defaultOptions:{color:"#2196f3",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qg:(t,i)=>new re(t,i)};function oe(t,i){return t.weight>i.weight?t:i}function ae(t){return t}class _e{constructor(){this.eb=new a,this.hb=function(t){let i=!1;return function(...s){i||(i=!0,queueMicrotask(()=>{t(...s),i=!1}))}}(()=>this.eb.p(this.rb)),this.rb=0}lb(){return this.eb}m(){this.eb.m()}options(){return this.Cs}setOptions(t){this.Cs=t}preprocessData(t){}updateFormatter(t){this.Cs&&(this.Cs.localization=t)}createConverterToInternalObj(t){return this.hb(),t=>(t>this.rb&&(this.rb=t),t)}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return this.ob(t)}formatTickmark(t){return this.ob(t.time)}maxTickMarkWeight(t){return t.reduce(oe,t[0]).weight}fillWeightsForPoints(t,i){const s=t=>t%120==0?10:t%60==0?9:t%36==0?8:t%12==0?7:t%6==0?6:t%3==0?5:t%1==0?4:0;for(let n=i;n<t.length;++n)t[n].timeWeight=s(ae(t[n].time));this.rb=t[t.length-1].time,this.hb()}ob(t){if(this.Cs.localization?.timeFormatter)return this.Cs.localization.timeFormatter(t);if(t<12)return`${t}M`;const i=Math.floor(t/12),s=t%12;return 0===s?`${i}Y`:`${i}Y${s}M`}}const ue={yieldCurve:{baseResolution:1,minimumTimeRange:120,startTimeRange:0},timeScale:{ignoreWhitespaceIndices:!0},leftPriceScale:{visible:!0},rightPriceScale:{visible:!1},localization:{priceFormatter:t=>t.toFixed(3)+"%"}},ce={lastValueVisible:!1,priceLineVisible:!1};class de extends Nn{constructor(t,i){const s=_(ue,i||{}),n=new _e;super(t,n,s),n.setOptions(this.options()),this._initWhitespaceSeries()}addSeries(t,i={},s=0){if(t.isBuiltIn&&!1===["Area","Line"].includes(t.type))throw new Error("Yield curve only support Area and Line series");const n={...ce,...i};return super.addSeries(t,n,s)}_initWhitespaceSeries(){const t=this.horzBehaviour(),i=this.addSeries(le);let s;function n(n){const e=function(t,i){return{ae:Math.max(0,t.startTimeRange),_e:Math.max(0,t.minimumTimeRange,i||0),ab:Math.max(1,t.baseResolution)}}(t.options().yieldCurve,n),h=(({ae:t,_e:i,ab:s})=>`${t}~${i}~${s}`)(e);h!==s&&(s=h,i.setData(function({ae:t,_e:i,ab:s}){return Array.from({length:Math.floor((i-t)/s)+1},(i,n)=>({time:t+n*s}))}(e)))}n(0),t.lb().i(n)}}function pe(t,i){const s=Un(t);return new de(s,i)}function fe(t,i){return t.weight>i.weight?t:i}class ve{options(){return this.Cs}setOptions(t){this.Cs=t}preprocessData(t){}updateFormatter(t){this.Cs&&(this.Cs.localization=t)}createConverterToInternalObj(t){return t=>t}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return t.toFixed(this.Pn())}formatTickmark(t,i){return t.time.toFixed(this.Pn())}maxTickMarkWeight(t){return t.reduce(fe,t[0]).weight}fillWeightsForPoints(t,i){const s=t=>t===100*Math.ceil(t/100)?8:t===50*Math.ceil(t/50)?7:t===25*Math.ceil(t/25)?6:t===10*Math.ceil(t/10)?5:t===5*Math.ceil(t/5)?4:t===Math.ceil(t)?3:2*t===Math.ceil(2*t)?1:0;for(let n=i;n<t.length;++n)t[n].timeWeight=s(t[n].time)}Pn(){return this.Cs.localization.precision}}function me(t,i){return qn(t,new ve,i)}function we(t,i,s,n,e){const{context:h,horizontalPixelRatio:r,verticalPixelRatio:l}=i;h.lineTo(e.ut*r,t*l),h.lineTo(n.ut*r,t*l),h.closePath(),h.fillStyle=s,h.fill()}class ge extends P{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht(t){if(null===this.rt)return;const{_t:i,ot:s,tb:e,dt:h,Xt:r,ib:l}=this.rt,o=this.rt._b??(this.rt.ub?0:t.mediaSize.height);if(null===s)return;const a=t.context;a.lineCap="butt",a.lineJoin="round",a.lineWidth=h,n(a,r),a.lineWidth=1,Jn(t,i,l,s,e,this.cb.bind(this),we.bind(null,o))}}class be{pb(t,i){const s=this.fb,{mb:n,wb:e,gb:h,bb:r,_b:l,Mb:o,yb:a}=i;if(void 0===this.Sb||void 0===s||s.mb!==n||s.wb!==e||s.gb!==h||s.bb!==r||s._b!==l||s.Mb!==o||s.yb!==a){const{verticalPixelRatio:s}=t,_=l||o>0?s:1,u=o*_,c=a===t.bitmapSize.height?a:a*_,d=(l??0)*_,p=t.context.createLinearGradient(0,u,0,c);if(p.addColorStop(0,n),null!=l){const t=Kt((d-u)/(c-u),0,1);p.addColorStop(t,e),p.addColorStop(t,h)}p.addColorStop(1,r),this.Sb=p,this.fb=i}return this.Sb}}class Me extends ge{constructor(){super(...arguments),this.xb=new be}cb(t,i){const s=this.rt;return this.xb.pb(t,{mb:i.Sh,wb:i.xh,gb:i.Ph,bb:i.Ch,_b:s._b,Mb:s.Mb??0,yb:s.yb??t.bitmapSize.height})}}class ye extends ee{constructor(){super(...arguments),this.Pb=new be}nb(t,i){const s=this.rt;return this.Pb.pb(t,{mb:i.Mh,wb:i.Mh,gb:i.yh,bb:i.yh,_b:s._b,Mb:s.Mb??0,yb:s.yb??t.bitmapSize.height})}}class Se extends Zn{constructor(t,i){super(t,i),this._g=new x,this.Cb=new Me,this.Tb=new ye,this._g.nt([this.Cb,this.Tb])}Qg(t,i,s){return{...this.Jg(t,i),...s.Rh(t)}}vg(){const t=this.Qn.Bt();if(null===t)return;const i=this.Qn.O(),s=this.Qn.$t().zt(i.baseValue.price,t.Ht),n=this.te.Lt().wu();if(null===this.lg||0===this.rg.length)return;let e,h;if(i.relativeGradient){e=this.rg[this.lg.from].ct,h=this.rg[this.lg.from].ct;for(let t=this.lg.from;t<this.lg.to;t++){const i=this.rg[t];i.ct<e&&(e=i.ct),i.ct>h&&(h=i.ct)}}this.Cb.lt({_t:this.rg,dt:i.lineWidth,Xt:i.lineStyle,ib:i.lineType,_b:s,Mb:e,yb:h,ub:!1,ot:this.lg,tb:n}),this.Tb.lt({_t:this.rg,dt:i.lineWidth,Xt:i.lineStyle,ib:i.lineVisible?i.lineType:void 0,sb:i.pointMarkersVisible?i.pointMarkersRadius||i.lineWidth/2+2:void 0,_b:s,Mb:e,yb:h,ot:this.lg,tb:n})}}const xe={type:"Baseline",isBuiltIn:!0,defaultOptions:{baseValue:{type:"price",price:0},relativeGradient:!1,topFillColor1:"rgba(38, 166, 154, 0.28)",topFillColor2:"rgba(38, 166, 154, 0.05)",topLineColor:"rgba(38, 166, 154, 1)",bottomFillColor1:"rgba(239, 83, 80, 0.05)",bottomFillColor2:"rgba(239, 83, 80, 0.28)",bottomLineColor:"rgba(239, 83, 80, 1)",lineWidth:3,lineStyle:0,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qg:(t,i)=>new Se(t,i)};class Pe extends ge{constructor(){super(...arguments),this.xb=new be}cb(t,i){return this.xb.pb(t,{mb:i.gh,wb:"",gb:"",bb:i.bh,Mb:this.rt?.Mb??0,yb:t.bitmapSize.height})}}class Ce extends Zn{constructor(t,i){super(t,i),this._g=new x,this.kb=new Pe,this.Db=new he,this._g.nt([this.kb,this.Db])}Qg(t,i,s){return{...this.Jg(t,i),...s.Rh(t)}}vg(){const t=this.Qn.O();if(null===this.lg||0===this.rg.length)return;let i;if(t.relativeGradient){i=this.rg[this.lg.from].ct;for(let t=this.lg.from;t<this.lg.to;t++){const s=this.rg[t];s.ct<i&&(i=s.ct)}}this.kb.lt({ib:t.lineType,_t:this.rg,Xt:t.lineStyle,dt:t.lineWidth,_b:null,Mb:i,ub:t.invertFilledArea,ot:this.lg,tb:this.te.Lt().wu()}),this.Db.lt({ib:t.lineVisible?t.lineType:void 0,_t:this.rg,Xt:t.lineStyle,dt:t.lineWidth,ot:this.lg,tb:this.te.Lt().wu(),sb:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0})}}const Te={type:"Area",isBuiltIn:!0,defaultOptions:{topColor:"rgba( 46, 220, 135, 0.4)",bottomColor:"rgba( 40, 221, 100, 0)",invertFilledArea:!1,relativeGradient:!1,lineColor:"#33D778",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},qg:(t,i)=>new Ce(t,i)};class ke extends P{constructor(){super(...arguments),this.Yt=null,this.Ib=0,this.Rb=0}lt(t){this.Yt=t}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.Yt||0===this.Yt.Xs.length||null===this.Yt.ot)return;if(this.Ib=this.Vb(i),this.Ib>=2){Math.max(1,Math.floor(i))%2!=this.Ib%2&&this.Ib--}this.Rb=this.Yt.Fb?Math.min(this.Ib,Math.floor(i)):this.Ib;let n=null;const e=this.Rb<=this.Ib&&this.Yt.wu>=Math.floor(1.5*i);for(let h=this.Yt.ot.from;h<this.Yt.ot.to;++h){const r=this.Yt.Xs[h];n!==r.ph&&(t.fillStyle=r.ph,n=r.ph);const l=Math.floor(.5*this.Rb),o=Math.round(r.ut*i),a=o-l,_=this.Rb,u=a+_-1,c=Math.min(r.Xo,r.Zo),d=Math.max(r.Xo,r.Zo),p=Math.round(c*s)-l,f=Math.round(d*s)+l,v=Math.max(f-p,this.Rb);t.fillRect(a,p,_,v);const m=Math.ceil(1.5*this.Ib);if(e){if(this.Yt.Eb){const i=o-m;let n=Math.max(p,Math.round(r.Go*s)-l),e=n+_-1;e>p+v-1&&(e=p+v-1,n=e-_+1),t.fillRect(i,n,a-i,e-n+1)}const i=o+m;let n=Math.max(p,Math.round(r.Jo*s)-l),e=n+_-1;e>p+v-1&&(e=p+v-1,n=e-_+1),t.fillRect(u+1,n,i-u,e-n+1)}}}Vb(t){const i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(l(this.Yt).wu,t)))}}class De extends fn{constructor(t,i){super(t,i,!1)}fg(t,i,s){i.cu(this.rg,m(this.lg)),t.Ko(this.rg,s,m(this.lg))}Lb(t,i,s){return{gt:t,jr:i.Ht[0],Yr:i.Ht[1],Kr:i.Ht[2],Gr:i.Ht[3],ut:NaN,Go:NaN,Xo:NaN,Zo:NaN,Jo:NaN}}dg(){const t=this.Qn.Ir();this.rg=this.Qn.Xs().Nh().map(i=>this.Qg(i.Ie,i,t))}}class Ie extends De{constructor(){super(...arguments),this._g=new ke}Qg(t,i,s){return{...this.Lb(t,i,s),...s.Rh(t)}}vg(){const t=this.Qn.O();this._g.lt({Xs:this.rg,wu:this.te.Lt().wu(),Eb:t.openVisible,Fb:t.thinBars,ot:this.lg})}}const Re={type:"Bar",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},qg:(t,i)=>new Ie(t,i)};class Ve extends P{constructor(){super(...arguments),this.Yt=null,this.Ib=0}lt(t){this.Yt=t}ht(t){if(null===this.Yt||0===this.Yt.Xs.length||null===this.Yt.ot)return;const{horizontalPixelRatio:i}=t;if(this.Ib=function(t,i){if(t>=2.5&&t<=4)return Math.floor(3*i);const s=1-.2*Math.atan(Math.max(4,t)-4)/(.5*Math.PI),n=Math.floor(t*s*i),e=Math.floor(t*i),h=Math.min(n,e);return Math.max(Math.floor(i),h)}(this.Yt.wu,i),this.Ib>=2){Math.floor(i)%2!=this.Ib%2&&this.Ib--}const s=this.Yt.Xs;this.Yt.Ab&&this.Bb(t,s,this.Yt.ot),this.Yt.Mi&&this.cv(t,s,this.Yt.ot);const n=this.Wb(i);(!this.Yt.Mi||this.Ib>2*n)&&this.Ob(t,s,this.Yt.ot)}Bb(t,i,s){if(null===this.Yt)return;const{context:n,horizontalPixelRatio:e,verticalPixelRatio:h}=t;let r="",l=Math.min(Math.floor(e),Math.floor(this.Yt.wu*e));l=Math.max(Math.floor(e),Math.min(l,this.Ib));const o=Math.floor(.5*l);let a=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.mh!==r&&(n.fillStyle=s.mh,r=s.mh);const _=Math.round(Math.min(s.Go,s.Jo)*h),u=Math.round(Math.max(s.Go,s.Jo)*h),c=Math.round(s.Xo*h),d=Math.round(s.Zo*h);let p=Math.round(e*s.ut)-o;const f=p+l-1;null!==a&&(p=Math.max(a+1,p),p=Math.min(p,f));const v=f-p+1;n.fillRect(p,c,v,_-c),n.fillRect(p,u+1,v,d-u),a=f}}Wb(t){let i=Math.floor(1*t);this.Ib<=2*i&&(i=Math.floor(.5*(this.Ib-1)));const s=Math.max(Math.floor(t),i);return this.Ib<=2*s?Math.max(Math.floor(t),Math.floor(1*t)):s}cv(t,i,s){if(null===this.Yt)return;const{context:n,horizontalPixelRatio:e,verticalPixelRatio:h}=t;let r="";const l=this.Wb(e);let o=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.fh!==r&&(n.fillStyle=s.fh,r=s.fh);let a=Math.round(s.ut*e)-Math.floor(.5*this.Ib);const _=a+this.Ib-1,u=Math.round(Math.min(s.Go,s.Jo)*h),c=Math.round(Math.max(s.Go,s.Jo)*h);if(null!==o&&(a=Math.max(o+1,a),a=Math.min(a,_)),this.Yt.wu*e>2*l)V(n,a,u,_-a+1,c-u+1,l);else{const t=_-a+1;n.fillRect(a,u,t,c-u+1)}o=_}}Ob(t,i,s){if(null===this.Yt)return;const{context:n,horizontalPixelRatio:e,verticalPixelRatio:h}=t;let r="";const l=this.Wb(e);for(let t=s.from;t<s.to;t++){const s=i[t];let o=Math.round(Math.min(s.Go,s.Jo)*h),a=Math.round(Math.max(s.Go,s.Jo)*h),_=Math.round(s.ut*e)-Math.floor(.5*this.Ib),u=_+this.Ib-1;if(s.ph!==r){const t=s.ph;n.fillStyle=t,r=t}this.Yt.Mi&&(_+=l,o+=l,u-=l,a-=l),o>a||n.fillRect(_,o,u-_+1,a-o+1)}}}class Fe extends De{constructor(){super(...arguments),this._g=new Ve}Qg(t,i,s){return{...this.Lb(t,i,s),...s.Rh(t)}}vg(){const t=this.Qn.O();this._g.lt({Xs:this.rg,wu:this.te.Lt().wu(),Ab:t.wickVisible,Mi:t.borderVisible,ot:this.lg})}}const Ee={type:"Candlestick",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",wickVisible:!0,borderVisible:!0,borderColor:"#378658",borderUpColor:"#26a69a",borderDownColor:"#ef5350",wickColor:"#737375",wickUpColor:"#26a69a",wickDownColor:"#ef5350"},qg:(t,i)=>new Fe(t,i)};class Le extends P{constructor(){super(...arguments),this.Yt=null,this.zb=[]}lt(t){this.Yt=t,this.zb=[]}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.Yt||0===this.Yt._t.length||null===this.Yt.ot)return;this.zb.length||this.$b(i);const n=Math.max(1,Math.floor(s)),e=Math.round(this.Yt.Hb*s)-Math.floor(n/2),h=e+n;for(let i=this.Yt.ot.from;i<this.Yt.ot.to;i++){const r=this.Yt._t[i],l=this.zb[i-this.Yt.ot.from],o=Math.round(r.ct*s);let a,_;t.fillStyle=r.ph,o<=e?(a=o,_=h):(a=e,_=o-Math.floor(n/2)+n),t.fillRect(l.Ur,a,l.yi-l.Ur+1,_-a)}}$b(t){if(null===this.Yt||0===this.Yt._t.length||null===this.Yt.ot)return void(this.zb=[]);const i=Math.ceil(this.Yt.wu*t)<=1?0:Math.max(1,Math.floor(t)),s=Math.round(this.Yt.wu*t)-i;this.zb=new Array(this.Yt.ot.to-this.Yt.ot.from);for(let i=this.Yt.ot.from;i<this.Yt.ot.to;i++){const n=this.Yt._t[i],e=Math.round(n.ut*t);let h,r;if(s%2){const t=(s-1)/2;h=e-t,r=e+t}else{const t=s/2;h=e-t,r=e+t-1}this.zb[i-this.Yt.ot.from]={Ur:h,yi:r,Nb:e,ee:n.ut*t,gt:n.gt}}for(let t=this.Yt.ot.from+1;t<this.Yt.ot.to;t++){const s=this.zb[t-this.Yt.ot.from],n=this.zb[t-this.Yt.ot.from-1];s.gt===n.gt+1&&(s.Ur-n.yi!==i+1&&(n.Nb>n.ee?n.yi=s.Ur-i-1:s.Ur=n.yi+i+1))}let n=Math.ceil(this.Yt.wu*t);for(let t=this.Yt.ot.from;t<this.Yt.ot.to;t++){const i=this.zb[t-this.Yt.ot.from];i.yi<i.Ur&&(i.yi=i.Ur);const s=i.yi-i.Ur+1;n=Math.min(s,n)}if(i>0&&n<4)for(let t=this.Yt.ot.from;t<this.Yt.ot.to;t++){const i=this.zb[t-this.Yt.ot.from];i.yi-i.Ur+1>n&&(i.Nb>i.ee?i.yi-=1:i.Ur+=1)}}}class Ae extends Zn{constructor(){super(...arguments),this._g=new Le}Qg(t,i,s){return{...this.Jg(t,i),...s.Rh(t)}}vg(){const t={_t:this.rg,wu:this.te.Lt().wu(),ot:this.lg,Hb:this.Qn.$t().zt(this.Qn.O().base,l(this.Qn.Bt()).Ht)};this._g.lt(t)}}const Be={type:"Histogram",isBuiltIn:!0,defaultOptions:{color:"#26a69a",base:0},qg:(t,i)=>new Ae(t,i)};class We{constructor(t,i){this.Ct=t,this.Ub=i,this.qb()}detach(){this.Ct.detachPrimitive(this.Ub)}getPane(){return this.Ct}applyOptions(t){this.Ub.oh?.(t)}qb(){this.Ct.attachPrimitive(this.Ub)}}const Oe={visible:!0,horzAlign:"center",vertAlign:"center",lines:[]},ze={color:"rgba(0, 0, 0, 0.5)",fontSize:48,fontFamily:w,fontStyle:"",text:""};class $e{constructor(t){this.jb=new Map,this.Yt=t}draw(t){t.useMediaCoordinateSpace(t=>{if(!this.Yt.visible)return;const{context:i,mediaSize:s}=t;let n=0;for(const t of this.Yt.lines){if(0===t.text.length)continue;i.font=t.T;const e=this.Yb(i,t.text);e>s.width?t.Pu=s.width/e:t.Pu=1,n+=t.lineHeight*t.Pu}let e=0;switch(this.Yt.vertAlign){case"top":e=0;break;case"center":e=Math.max((s.height-n)/2,0);break;case"bottom":e=Math.max(s.height-n,0)}for(const t of this.Yt.lines){i.save(),i.fillStyle=t.color;let n=0;switch(this.Yt.horzAlign){case"left":i.textAlign="left",n=t.lineHeight/2;break;case"center":i.textAlign="center",n=s.width/2;break;case"right":i.textAlign="right",n=s.width-1-t.lineHeight/2}i.translate(n,e),i.textBaseline="top",i.font=t.T,i.scale(t.Pu,t.Pu),i.fillText(t.text,0,t.Kb),i.restore(),e+=t.lineHeight*t.Pu}})}Yb(t,i){const s=this.Gb(t.font);let n=s.get(i);return void 0===n&&(n=t.measureText(i).width,s.set(i,n)),n}Gb(t){let i=this.jb.get(t);return void 0===i&&(i=new Map,this.jb.set(t,i)),i}}class He{constructor(t){this.Cs=Ue(t)}Tt(t){this.Cs=Ue(t)}renderer(){return new $e(this.Cs)}}function Ne(t){return{...t,T:g(t.fontSize,t.fontFamily,t.fontStyle),lineHeight:t.lineHeight||1.2*t.fontSize,Kb:0,Pu:0}}function Ue(t){return{...t,lines:t.lines.map(Ne)}}function qe(t){return{...ze,...t}}function je(t){return{...Oe,...t,lines:t.lines?.map(qe)??[]}}class Ye{constructor(t){this.Cs=je(t),this.Xb=[new He(this.Cs)]}updateAllViews(){this.Xb.forEach(t=>t.Tt(this.Cs))}paneViews(){return this.Xb}attached({requestUpdate:t}){this.Zb=t}detached(){this.Zb=void 0}oh(t){this.Cs=je({...this.Cs,...t}),this.Zb&&this.Zb()}}function Ke(t,i){return new We(t,new Ye(i))}const Ge={alpha:1,padding:0};class Xe{constructor(t){this.Yt=t}draw(t){t.useMediaCoordinateSpace(t=>{const i=t.context,s=this.Jb(this.Yt,t.mediaSize);s&&this.Yt.Qb&&(i.globalAlpha=this.Yt.alpha??1,i.drawImage(this.Yt.Qb,s.ut,s.ct,s.ts,s.qt))})}Jb(t,i){const{maxHeight:s,maxWidth:n,tM:e,iM:h,padding:r}=t,l=Math.round(i.width/2),o=Math.round(i.height/2),a=r??0;let _=i.width-2*a,u=i.height-2*a;s&&(u=Math.min(u,s)),n&&(_=Math.min(_,n));const c=_/h,d=u/e,p=Math.min(c,d),f=h*p,v=e*p;return{ut:l-.5*f,ct:o-.5*v,qt:v,ts:f}}}class Ze{constructor(t){this.sM=null,this.nM=0,this.eM=0,this.Cs=t,this.M=Je(this.Cs,this.sM,this.nM,this.eM)}hM(t){void 0!==t.rM&&(this.nM=t.rM),void 0!==t.lM&&(this.eM=t.lM),void 0!==t.oM&&(this.sM=t.oM),this.Tt()}aM(t){this.Cs=t,this.Tt()}zOrder(){return"bottom"}Tt(){this.M=Je(this.Cs,this.sM,this.nM,this.eM)}renderer(){return new Xe(this.M)}}function Je(t,i,s,n){return{...t,Qb:i,iM:s,tM:n}}function Qe(t){return{...Ge,...t}}class th{constructor(t,i){this._M=null,this.uM=t,this.Cs=Qe(i),this.Xb=[new Ze(this.Cs)]}updateAllViews(){this.Xb.forEach(t=>t.Tt())}paneViews(){return this.Xb}attached(t){const{requestUpdate:i}=t;this.cM=i,this._M=new Image,this._M.onload=()=>{const t=this._M?.naturalHeight??1,i=this._M?.naturalWidth??1;this.Xb.forEach(s=>s.hM({lM:t,rM:i,oM:this._M})),this.cM&&this.cM()},this._M.src=this.uM}detached(){this.cM=void 0,this._M=null}oh(t){this.Cs=Qe({...this.Cs,...t}),this.dM(),this.Zb&&this.Zb()}Zb(){this.cM&&this.cM()}dM(){this.Xb.forEach(t=>t.aM(this.Cs))}}function ih(t,i,s){return new We(t,new th(i,s))}class sh{constructor(t,i){this.Qn=t,this.ar=i,this.qb()}detach(){this.Qn.detachPrimitive(this.ar)}getSeries(){return this.Qn}applyOptions(t){this.ar&&this.ar.oh&&this.ar.oh(t)}qb(){this.Qn.attachPrimitive(this.ar)}}const nh={autoScale:!0,zOrder:"normal"};function eh(t,i){return Xt(Math.min(Math.max(t,12),30)*i)}function hh(t,i){switch(t){case"arrowDown":case"arrowUp":return eh(i,1);case"circle":return eh(i,.8);case"square":return eh(i,.7)}}function rh(t){return function(t){const i=Math.ceil(t);return i%2!=0?i-1:i}(eh(t,1))}function lh(t){return Math.max(eh(t,.1),3)}function oh(t,i,s){return i?t:s?Math.ceil(t/2):0}function ah(t,i,s,n){const e=(hh("arrowUp",n)-1)/2*s.pM,h=(Xt(n/2)-1)/2*s.pM;i.beginPath(),t?(i.moveTo(s.ut-e,s.ct),i.lineTo(s.ut,s.ct-e),i.lineTo(s.ut+e,s.ct),i.lineTo(s.ut+h,s.ct),i.lineTo(s.ut+h,s.ct+e),i.lineTo(s.ut-h,s.ct+e),i.lineTo(s.ut-h,s.ct)):(i.moveTo(s.ut-e,s.ct),i.lineTo(s.ut,s.ct+e),i.lineTo(s.ut+e,s.ct),i.lineTo(s.ut+h,s.ct),i.lineTo(s.ut+h,s.ct-e),i.lineTo(s.ut-h,s.ct-e),i.lineTo(s.ut-h,s.ct)),i.fill()}function _h(t,i,s,n,e,h){const r=(hh("arrowUp",n)-1)/2,l=(Xt(n/2)-1)/2;if(e>=i-l-2&&e<=i+l+2&&h>=(t?s:s-r)-2&&h<=(t?s+r:s)+2)return!0;return(()=>{if(e<i-r-3||e>i+r+3||h<(t?s-r-3:s)||h>(t?s:s+r+3))return!1;const n=Math.abs(e-i);return Math.abs(h-s)+3>=n/2})()}class uh{constructor(){this.Yt=null,this.On=new it,this.$=-1,this.H="",this.Hf="",this.fM="normal"}lt(t){this.Yt=t}zn(t,i,s){this.$===t&&this.H===i||(this.$=t,this.H=i,this.Hf=g(t,i),this.On.Fn()),this.fM=s}Kn(t,i){if(null===this.Yt||null===this.Yt.ot)return null;for(let s=this.Yt.ot.from;s<this.Yt.ot.to;s++){const n=this.Yt._t[s];if(n&&dh(n,t,i))return{zOrder:"normal",externalId:n.Gn??""}}return null}draw(t){"aboveSeries"!==this.fM&&t.useBitmapCoordinateSpace(t=>{this.ht(t)})}drawBackground(t){"aboveSeries"===this.fM&&t.useBitmapCoordinateSpace(t=>{this.ht(t)})}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null!==this.Yt&&null!==this.Yt.ot){t.textBaseline="middle",t.font=this.Hf;for(let n=this.Yt.ot.from;n<this.Yt.ot.to;n++){const e=this.Yt._t[n];void 0!==e.ri&&(e.ri.ts=this.On.Vi(t,e.ri.vM),e.ri.qt=this.$,e.ri.ut=e.ut-e.ri.ts/2),ch(e,t,i,s)}}}}function ch(t,i,s,n){i.fillStyle=t.I,void 0!==t.ri&&function(t,i,s,n,e,h){t.save(),t.scale(e,h),t.fillText(i,s,n),t.restore()}(i,t.ri.vM,t.ri.ut,t.ri.ct,s,n),function(t,i,s){if(0===t.Bh)return;switch(t.mM){case"arrowDown":return void ah(!1,i,s,t.Bh);case"arrowUp":return void ah(!0,i,s,t.Bh);case"circle":return void function(t,i,s){const n=(hh("circle",s)-1)/2;t.beginPath(),t.arc(i.ut,i.ct,n*i.pM,0,2*Math.PI,!1),t.fill()}(i,s,t.Bh);case"square":return void function(t,i,s){const n=hh("square",s),e=(n-1)*i.pM/2,h=i.ut-e,r=i.ct-e;t.fillRect(h,r,n*i.pM,n*i.pM)}(i,s,t.Bh)}t.mM}(t,i,function(t,i,s){const n=Math.max(1,Math.floor(i))%2/2;return{ut:Math.round(t.ut*i)+n,ct:t.ct*s,pM:i}}(t,s,n))}function dh(t,i,s){return!(void 0===t.ri||!function(t,i,s,n,e,h){const r=n/2;return e>=t&&e<=t+s&&h>=i-r&&h<=i+r}(t.ri.ut,t.ri.ct,t.ri.ts,t.ri.qt,i,s))||function(t,i,s){if(0===t.Bh)return!1;switch(t.mM){case"arrowDown":return _h(!0,t.ut,t.ct,t.Bh,i,s);case"arrowUp":return _h(!1,t.ut,t.ct,t.Bh,i,s);case"circle":return function(t,i,s,n,e){const h=2+hh("circle",s)/2,r=t-n,l=i-e;return Math.sqrt(r*r+l*l)<=h}(t.ut,t.ct,t.Bh,i,s);case"square":return function(t,i,s,n,e){const h=hh("square",s),r=(h-1)/2,l=t-r,o=i-r;return n>=l&&n<=l+h&&e>=o&&e<=o+h}(t.ut,t.ct,t.Bh,i,s)}}(t,i,s)}function ph(t){return"atPriceTop"===t||"atPriceBottom"===t||"atPriceMiddle"===t}function fh(t,i,s,n,e,h,r,o){const a=function(t,i,s){if(ph(i.position)&&void 0!==i.price)return i.price;if("value"in(n=t)&&"number"==typeof n.value)return t.value;var n;if(function(t){return"open"in t&&"high"in t&&"low"in t&&"close"in t}(t)){if("inBar"===i.position)return t.close;if("aboveBar"===i.position)return s?t.low:t.high;if("belowBar"===i.position)return s?t.high:t.low}}(s,i,r.priceScale().options().invertScale);if(void 0===a)return;const _=ph(i.position),c=o.timeScale(),d=u(i.size)?Math.max(i.size,0):1,p=rh(c.options().barSpacing)*d,f=p/2;t.Bh=p;switch(i.position){case"inBar":case"atPriceMiddle":return t.ct=l(r.priceToCoordinate(a)),void(void 0!==t.ri&&(t.ri.ct=t.ct+f+h+.6*e));case"aboveBar":case"atPriceTop":{const i=_?0:n.wM;return t.ct=l(r.priceToCoordinate(a))-f-i,void 0!==t.ri&&(t.ri.ct=t.ct-f-.6*e,n.wM+=1.2*e),void(_||(n.wM+=p+h))}case"belowBar":case"atPriceBottom":{const i=_?0:n.gM;return t.ct=l(r.priceToCoordinate(a))+f+i,void 0!==t.ri&&(t.ri.ct=t.ct+f+h+.6*e,n.gM+=1.2*e),void(_||(n.gM+=p+h))}}}class vh{constructor(t,i,s){this.bM=[],this.xt=!0,this.MM=!0,this.Jt=new uh,this.be=t,this.Vf=i,this.Yt={_t:[],ot:null},this.Cs=s}renderer(){if(!this.be.options().visible)return null;this.xt&&this.yM();const t=this.Vf.options().layout;return this.Jt.zn(t.fontSize,t.fontFamily,this.Cs.zOrder),this.Jt.lt(this.Yt),this.Jt}SM(t){this.bM=t,this.Tt("data")}Tt(t){this.xt=!0,"data"===t&&(this.MM=!0)}xM(t){this.xt=!0,this.Cs=t}zOrder(){return"aboveSeries"===this.Cs.zOrder?"top":this.Cs.zOrder}yM(){const t=this.Vf.timeScale(),i=this.bM;this.MM&&(this.Yt._t=i.map(t=>({gt:t.time,ut:0,ct:0,Bh:0,mM:t.shape,I:t.color,Gn:t.id,PM:t.PM,ri:void 0})),this.MM=!1);const s=this.Vf.options().layout;this.Yt.ot=null;const n=t.getVisibleLogicalRange();if(null===n)return;const e=new Pi(Math.floor(n.from),Math.ceil(n.to));if(null===this.be.data()[0])return;if(0===this.Yt._t.length)return;let h=NaN;const r=lh(t.options().barSpacing),o={wM:r,gM:r};this.Yt.ot=pn(this.Yt._t,e,!0);for(let n=this.Yt.ot.from;n<this.Yt.ot.to;n++){const e=i[n];e.time!==h&&(o.wM=r,o.gM=r,h=e.time);const a=this.Yt._t[n];a.ut=l(t.logicalToCoordinate(e.time)),void 0!==e.text&&e.text.length>0&&(a.ri={vM:e.text,ut:0,ct:0,ts:0,qt:0});const _=this.be.dataByIndex(e.time,0);null!==_&&fh(a,e,_,o,s.fontSize,r,this.be,this.Vf)}this.xt=!1}}function mh(t){return{...nh,...t}}class wh{constructor(t){this.nr=null,this.bM=[],this.CM=[],this.TM=null,this.be=null,this.Vf=null,this.kM=!0,this.DM=null,this.IM=null,this.RM=null,this.VM=!0,this.Cs=mh(t)}attached(t){this.FM(),this.Vf=t.chart,this.be=t.series,this.nr=new vh(this.be,l(this.Vf),this.Cs),this.cM=t.requestUpdate,this.be.subscribeDataChanged(t=>this.Dg(t)),this.VM=!0,this.Zb()}Zb(){this.cM&&this.cM()}detached(){this.be&&this.TM&&this.be.unsubscribeDataChanged(this.TM),this.Vf=null,this.be=null,this.nr=null,this.TM=null}SM(t){this.VM=!0,this.bM=t,this.FM(),this.kM=!0,this.IM=null,this.Zb()}EM(){return this.bM}paneViews(){return this.nr?[this.nr]:[]}updateAllViews(){this.LM()}hitTest(t,i){return this.nr?this.nr.renderer()?.Kn(t,i)??null:null}autoscaleInfo(t,i){if(this.Cs.autoScale&&this.nr){const t=this.AM();if(t)return{priceRange:null,margins:t}}return null}oh(t){this.Cs=mh({...this.Cs,...t}),this.Zb&&this.Zb()}AM(){const t=l(this.Vf).timeScale().options().barSpacing;if(this.kM||t!==this.RM){if(this.RM=t,this.bM.length>0){const i=lh(t),s=1.5*rh(t)+2*i,n=this.BM();this.DM={above:oh(s,n.aboveBar,n.inBar),below:oh(s,n.belowBar,n.inBar)}}else this.DM=null;this.kM=!1}return this.DM}BM(){return null===this.IM&&(this.IM=this.bM.reduce((t,i)=>(t[i.position]||(t[i.position]=!0),t),{inBar:!1,aboveBar:!1,belowBar:!1,atPriceTop:!1,atPriceBottom:!1,atPriceMiddle:!1})),this.IM}FM(){if(!this.VM||!this.Vf||!this.be)return;const t=this.Vf.timeScale(),i=this.be?.data();if(null==t.getVisibleLogicalRange()||!this.be||0===i.length)return void(this.CM=[]);const s=t.timeToIndex(l(i[0].time),!0);this.CM=this.bM.map((i,n)=>{const e=t.timeToIndex(i.time,!0),h=e<s?1:-1,r=l(this.be).dataByIndex(e,h),o={time:t.timeToIndex(l(r).time,!1),position:i.position,shape:i.shape,color:i.color,id:i.id,PM:n,text:i.text,size:i.size,price:i.price,Tw:i.time};if("atPriceTop"===i.position||"atPriceBottom"===i.position||"atPriceMiddle"===i.position){if(void 0===i.price)throw new Error(`Price is required for position ${i.position}`);return{...o,position:i.position,price:i.price}}return{...o,position:i.position,price:i.price}}),this.VM=!1}LM(t){this.nr&&(this.FM(),this.nr.SM(this.CM),this.nr.xM(this.Cs),this.nr.Tt(t))}Dg(t){this.VM=!0,this.Zb()}}class gh extends sh{constructor(t,i,s){super(t,i),s&&this.setMarkers(s)}setMarkers(t){this.ar.SM(t)}markers(){return this.ar.EM()}}function bh(t,i,s){const n=new gh(t,new wh(s??{}));return i&&n.setMarkers(i),n}class Mh{constructor(t){this.bM=new Map,this.WM=t}OM(t,i,s){if(this.zM(i),void 0!==s){const n=window.setTimeout(()=>{this.bM.delete(i),this.$M()},s),e={...t,HM:n,NM:Date.now()+s};this.bM.set(i,e)}else this.bM.set(i,{...t,HM:void 0,NM:void 0});this.$M()}zM(t){const i=this.bM.get(t);i&&void 0!==i.HM&&window.clearTimeout(i.HM),this.bM.delete(t),this.$M()}UM(){for(const[t]of this.bM)this.zM(t)}qM(){const t=Date.now(),i=[];for(const[s,n]of this.bM)!n.NM||n.NM>t?i.push({time:n.time,sign:n.sign,value:n.value}):this.zM(s);return i}jM(t){this.WM=t}$M(){this.WM&&this.WM()}}const yh={positiveColor:"#22AB94",negativeColor:"#F7525F",updateVisibilityDuration:5e3};class Sh{constructor(t,i,s,n){this.Yt=t,this.YM=i,this.KM=s,this.GM=n}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=Math.max(1,Math.floor(t.horizontalPixelRatio))%2/2,n=4*t.verticalPixelRatio+s;this.Yt.forEach(e=>{const h=Math.round(e.ut*t.horizontalPixelRatio)+s;i.beginPath();const r=this.XM(e.ZM);i.fillStyle=r,i.arc(h,e.ct*t.verticalPixelRatio,n,0,2*Math.PI,!1),i.fill(),e.ZM&&(i.strokeStyle=r,i.lineWidth=Math.floor(2*t.horizontalPixelRatio),i.beginPath(),i.moveTo((e.ut-4.7)*t.horizontalPixelRatio+s,(e.ct-7*e.ZM)*t.verticalPixelRatio),i.lineTo(e.ut*t.horizontalPixelRatio+s,(e.ct-7*e.ZM-7*e.ZM*.5)*t.verticalPixelRatio),i.lineTo((e.ut+4.7)*t.horizontalPixelRatio+s,(e.ct-7*e.ZM)*t.verticalPixelRatio),i.stroke())})})}XM(t){return 0===t?this.YM:t>0?this.GM:this.KM}}class xh{constructor(t,i,s){this.Yt=[],this.be=t,this.cr=i,this.Cs=s}Tt(t){this.Yt=t.map(t=>{const i=this.be.priceToCoordinate(t.value);if(null===i)return null;return{ut:l(this.cr.timeToCoordinate(t.time)),ct:i,ZM:t.sign}}).filter(v)}renderer(){const t=function(t,i){return function(t,i){return"Area"===i}(0,i)?t.lineColor:t.color}(this.be.options(),this.be.seriesType());return new Sh(this.Yt,t,this.Cs.negativeColor,this.Cs.positiveColor)}}function Ph(t,i){return"Line"===i||"Area"===i}class Ch{constructor(t){this.Vf=void 0,this.be=void 0,this.Xb=[],this.__=null,this.JM=new Map,this.QM=new Mh(()=>this.Zb()),this.Cs={...yh,...t}}oh(t){this.Cs={...this.Cs,...t},this.Zb()}SM(t){this.QM.UM();const i=this.__;i&&t.forEach(t=>{this.QM.OM(t,i.key(t.time))})}EM(){return this.QM.qM()}Zb(){this.cM?.()}attached(t){const{chart:i,series:s,requestUpdate:n,horzScaleBehavior:e}=t;this.Vf=i,this.be=s,this.__=e;const h=this.be.seriesType();if("Area"!==h&&"Line"!==h)throw new Error("UpDownMarkersPrimitive is only supported for Area and Line series types");this.Xb=[new xh(this.be,this.Vf.timeScale(),this.Cs)],this.cM=n,this.Zb()}detached(){this.Vf=void 0,this.be=void 0,this.cM=void 0}jf(){return r(this.Vf)}Oa(){return r(this.be)}updateAllViews(){this.Xb.forEach(t=>t.Tt(this.EM()))}paneViews(){return this.Xb}lt(t){if(!this.be)throw new Error("Primitive not attached to series");const i=this.be.seriesType();this.JM.clear();const s=this.__;s&&t.forEach(t=>{Gs(t)&&Ph(0,i)&&this.JM.set(s.key(t.time),t.value)}),r(this.be).setData(t)}Tt(t,i){if(!this.be||!this.__)throw new Error("Primitive not attached to series");const s=this.be.seriesType(),n=this.__.key(t.time);if(Ks(t)&&this.JM.delete(n),Gs(t)&&Ph(0,s)){const i=this.JM.get(n);i&&this.QM.OM({time:t.time,value:t.value,sign:Th(t.value,i)},n,this.Cs.updateVisibilityDuration)}r(this.be).update(t,i)}ty(){this.QM.UM()}}function Th(t,i){return t===i?0:t-i>0?1:-1}class kh extends sh{setData(t){return this.ar.lt(t)}update(t,i){return this.ar.Tt(t,i)}markers(){return this.ar.EM()}setMarkers(t){return this.ar.SM(t)}clearMarkers(){return this.ar.ty()}}function Dh(t,i={}){return new kh(t,new Ch(i))}class Ih{constructor(t,i){this.iy=null,this.sy=[],this.Cs={longColors:{entry:i?.longColors?.entry??"#26a69a",exit:i?.longColors?.exit??"#ef5350"},shortColors:{entry:i?.shortColors?.entry??"#ef5350",exit:i?.shortColors?.exit??"#26a69a"},defaultSize:i?.defaultSize??1,entryOffset:i?.entryOffset??0,exitOffset:i?.exitOffset??0},this.iy=bh(t)}addPosition(t){this.sy.push(t),this.ny()}addPositions(t){this.sy.push(...t),this.ny()}setPositions(t){this.sy=[...t],this.ny()}closePosition(t,i,s){const n=this.sy.find(i=>i.id===t);n&&(n.exit=i,s&&n.text?n.text.exit=s:s&&(n.text={exit:s}),this.ny())}removePosition(t){this.sy=this.sy.filter(i=>i.id!==t),this.ny()}clearPositions(){this.sy=[],this.ny()}getPositions(){return this.sy}applyOptions(t){t.longColors&&(this.Cs.longColors={...this.Cs.longColors,...t.longColors}),t.shortColors&&(this.Cs.shortColors={...this.Cs.shortColors,...t.shortColors}),void 0!==t.defaultSize&&(this.Cs.defaultSize=t.defaultSize),void 0!==t.entryOffset&&(this.Cs.entryOffset=t.entryOffset),void 0!==t.exitOffset&&(this.Cs.exitOffset=t.exitOffset),this.ny()}ey(){const t=[];for(const i of this.sy){const s="long"===i.type,n=i.size??this.Cs.defaultSize,e=i.color?.entry??(s?this.Cs.longColors.entry:this.Cs.shortColors.entry),h=i.color?.exit??(s?this.Cs.longColors.exit:this.Cs.shortColors.exit),r={time:i.entry.time,position:"atPriceMiddle",price:i.entry.price+this.Cs.entryOffset,shape:s?"arrowUp":"arrowDown",color:e,size:n};if(i.text?.entry&&(r.text=i.text.entry),i.id&&(r.id=`${i.id}-entry`),t.push(r),i.exit){const e={time:i.exit.time,position:"atPriceMiddle",price:i.exit.price+this.Cs.exitOffset,shape:s?"arrowDown":"arrowUp",color:h,size:n};i.text?.exit&&(e.text=i.text.exit),i.id&&(e.id=`${i.id}-exit`),t.push(e)}}return t}ny(){if(this.iy){const t=this.ey();this.iy.setMarkers(t)}}detach(){this.iy&&(this.iy.detach(),this.iy=null),this.sy=[]}}function Rh(t,i,s){const n=new Ih(t,s);return i&&i.length>0&&n.setPositions(i),n}const Vh=new WeakMap;function Fh(t){return"string"==typeof t?t:String(t)}function Eh(t,i){const s=new Map;for(const t of i)null!=t&&"time"in t&&"volume"in t&&s.set(Fh(t.time),t.volume);Vh.set(t,s)}function Lh(t,i){return Vh.get(t)?.get(Fh(i))}function Ah(t){const i=Vh.get(t);return void 0!==i&&i.size>0}function Bh(t,i){return()=>{const s={};s.minValue=t,s.maxValue=i;const n={};return n.priceRange=s,n}}function Wh(t,i,s){const n=t.panes();for(const t of n)if(-1!==t.getSeries().indexOf(i))return t.paneIndex();return Math.min(s,Math.max(n.length-1,0))}function Oh(t,i="close"){const s=[];for(const n of t)if(null!=n)if("close"in n)switch(i){case"open":s.push(n.open);break;case"high":s.push(n.high);break;case"low":s.push(n.low);break;case"hl2":s.push((n.high+n.low)/2);break;case"hlc3":s.push((n.high+n.low+n.close)/3);break;case"ohlc4":s.push((n.open+n.high+n.low+n.close)/4);break;default:s.push(n.close)}else s.push("value"in n?n.value:0);else s.push(0);return s}function zh(t,i){let s=[];return n=>{for(const i of s)try{t.removePriceLine(i)}catch(t){}s=n.filter(t=>null!=t).map(s=>{const n={price:s,color:i,lineWidth:1,lineStyle:2,axisLabelVisible:!1,title:""};return t.createPriceLine(n)})}}function $h(t){return null==t?void 0:t.time}function Hh(t){const{e_:i,jf:s,hy:n,ly:e,oy:h,Zl:r}=t,l=t._y??[];let o=t.O,a=[],_=new Map,u=!1;const c=(t,i)=>{if(0===i.length)return;const s=_.get(t),n=i[i.length-1];if(void 0!==s&&s.length>0){const e=i.length===s.length+1,h=i.length===s.length,r=$h(s[s.length-1])===$h(n);if(e||h&&r)return t.update(n),void _.set(t,i)}t.setData(i),_.set(t,i)},d=t=>{if(!u)try{if("full"===t||0===a.length)a=i.data();else{const t=function(t){return t.dataByIndex(Number.MAX_SAFE_INTEGER,-1)}(i);if(null===t)return;a.length>0&&$h(a[a.length-1])===$h(t)?a[a.length-1]=t:a.push(t)}if(0===a.length)return;const s=e(a,o);for(const[t,i]of s)c(t,i);s.every(([,t])=>0===t.length)&&a.length}catch(t){console.error(`Error calculating ${r}:`,t)}},p=t=>d(t);i.subscribeDataChanged(p),void 0!==h&&h(o),d("full");const f={applyOptions:t=>{if(u||null==t)return;const i=o;o={...o,...t},void 0!==h&&h(o),l.some(t=>i[t]!==o[t])&&(_=new Map,d("full"))},options:()=>({...o}),remove:()=>{if(!u){u=!0,i.unsubscribeDataChanged(p);for(const t of n)try{s.removeSeries(t)}catch(t){}_=new Map,a=[]}},recalculate:()=>d("full")};return f}function Nh(t,i,s={}){const n={paneIndex:s.paneIndex??0,period:s.period??20,color:s.color??"#2196F3",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0},e=i.addSeries(le,{color:n.color,lineWidth:n.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01}},n.paneIndex),h=(t,i,s)=>{if(!t||t.length<i)return[];const n=Oh(t,s),e=[];for(let s=i-1;s<n.length;s++){let h=0;for(let t=0;t<i;t++)h+=n[s-t];const r=h/i;t[s]&&t[s].time&&e.push({time:t[s].time,value:r})}return e},r=Hh({e_:t,jf:i,hy:[e],Zl:"SMA",O:n,_y:["period","source"],ly:(t,i)=>[[e,h(t,i.period??20,i.source??"close")]],oy:t=>{e.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle})}});return{series:e,...r}}function Uh(t,i,s={}){const n={paneIndex:s.paneIndex??0,period:s.period??12,color:s.color??"#FF9800",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0},e=i.addSeries(le,{color:n.color,lineWidth:n.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01}},n.paneIndex),h=(t,i,s)=>{if(!t||t.length<i)return[];const n=Oh(t,s),e=[],h=2/(i+1);let r=0;for(let t=0;t<i;t++)r+=n[t];r/=i,t[i-1]&&t[i-1].time&&e.push({time:t[i-1].time,value:r});for(let s=i;s<n.length;s++)r=(n[s]-r)*h+r,t[s]&&t[s].time&&e.push({time:t[s].time,value:r});return e},r=Hh({e_:t,jf:i,hy:[e],Zl:"EMA",O:n,_y:["period","source"],ly:(t,i)=>[[e,h(t,i.period??12,i.source??"close")]],oy:t=>{e.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle})}});return{series:e,...r}}function qh(t,i,s={}){const n={paneIndex:s.paneIndex??0,period:s.period??20,color:s.color??"#4CAF50",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0},e=i.addSeries(le,{color:n.color,lineWidth:n.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01}},n.paneIndex),h=(t,i,s)=>{if(!t||t.length<i)return[];const n=Oh(t,s),e=[],h=i*(i+1)/2;for(let s=i-1;s<n.length;s++){let r=0;for(let t=0;t<i;t++){const e=t+1;r+=n[s-i+1+t]*e}const l=r/h;t[s]&&t[s].time&&e.push({time:t[s].time,value:l})}return e},r=Hh({e_:t,jf:i,hy:[e],Zl:"WMA",O:n,_y:["period","source"],ly:(t,i)=>[[e,h(t,i.period??20,i.source??"close")]],oy:t=>{e.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle})}});return{series:e,...r}}function jh(t,i,s={}){const n={paneIndex:s.paneIndex??0,period:s.period??20,stdDev:s.stdDev??2,colorUpper:s.colorUpper??"#3F51B5",colorMiddle:s.colorMiddle??"#2196F3",colorLower:s.colorLower??"#3F51B5",lineWidth:s.lineWidth??1},e=n.paneIndex,h=i.addSeries(le,{color:n.colorUpper},e),r=i.addSeries(le,{color:n.colorMiddle},e),l=i.addSeries(le,{color:n.colorLower},e),o=Hh({e_:t,jf:i,hy:[h,r,l],Zl:"Bollinger Bands",O:n,_y:["period","stdDev"],ly:(t,i)=>{const s=((t,i,s)=>{if(!t||t.length<i)return{uy:[],py:[],vy:[]};const n=[];for(const i of t)"close"in i?n.push(i.close):"value"in i?n.push(i.value):n.push(0);const e=[],h=[],r=[];for(let l=i-1;l<n.length;l++){let o=0;for(let t=0;t<i;t++)o+=n[l-t];const a=o/i;let _=0;for(let t=0;t<i;t++)_+=Math.pow(n[l-t]-a,2);const u=Math.sqrt(_/i),c=a+u*s,d=a-u*s;if(t[l]&&t[l].time){const i=t[l].time;e.push({time:i,value:c}),h.push({time:i,value:a}),r.push({time:i,value:d})}}return{uy:e,py:h,vy:r}})(t,i.period??20,i.stdDev??2);return[[h,s.uy],[r,s.py],[l,s.vy]]},oy:t=>{const i=t.lineWidth??1;h.applyOptions({color:t.colorUpper,lineWidth:i}),r.applyOptions({color:t.colorMiddle,lineWidth:Math.min(i+1,4)}),l.applyOptions({color:t.colorLower,lineWidth:i})}});return{upper:h,middle:r,lower:l,...o}}function Yh(t,i,s={}){const n={paneIndex:s.paneIndex??0,period:s.period??20,atrPeriod:s.atrPeriod??10,multiplier:s.multiplier??2,source:s.source??"close",colorUpper:s.colorUpper??"#787B86",colorMiddle:s.colorMiddle??"#2962FF",colorLower:s.colorLower??"#787B86",lineWidth:s.lineWidth??1,lineStyle:s.lineStyle??0},e=n.paneIndex,h=i.addSeries(le,{color:n.colorUpper},e),r=i.addSeries(le,{color:n.colorMiddle},e),l=i.addSeries(le,{color:n.colorLower},e),o=Hh({e_:t,jf:i,hy:[h,r,l],Zl:"Keltner Channels",O:n,_y:["period","atrPeriod","multiplier","source"],ly:(t,i)=>{const s=((t,i)=>{const s=i.period??20,n=i.atrPeriod??10,e=i.multiplier??2;if(!t||t.length<Math.max(s,n+1))return{uy:[],py:[],vy:[]};const h=Oh(t,i.source??"close"),r=[],l=2/(s+1);let o=0;for(let t=0;t<s;t++)o+=h[t];r.push(o/s);for(let t=s;t<h.length;t++)r.push((h[t]-r[r.length-1])*l+r[r.length-1]);const a=[];for(let i=1;i<t.length;i++){const s=t[i],n=t[i-1];"high"in s&&"low"in s&&"close"in n?a.push(Math.max(s.high-s.low,Math.abs(s.high-n.close),Math.abs(s.low-n.close))):a.push(0)}const _=[];let u=0;for(let t=0;t<n;t++)u+=a[t];_[n-1]=u/n;for(let t=n;t<a.length;t++)_[t]=(_[t-1]*(n-1)+a[t])/n;const c=[],d=[],p=[];for(let i=0;i<r.length;i++){const n=s-1+i,h=t[n],l=_[n-1];if(!h||void 0===h.time||void 0===l)continue;const o=r[i],a=l*e;d.push({time:h.time,value:o}),c.push({time:h.time,value:o+a}),p.push({time:h.time,value:o-a})}return{uy:c,py:d,vy:p}})(t,i);return[[h,s.uy],[r,s.py],[l,s.vy]]},oy:t=>{const i=t.lineWidth??1,s=t.lineStyle;h.applyOptions({color:t.colorUpper,lineWidth:i,lineStyle:s}),r.applyOptions({color:t.colorMiddle,lineWidth:Math.min((t.lineWidth??1)+1,4),lineStyle:s}),l.applyOptions({color:t.colorLower,lineWidth:i,lineStyle:s})}});return{upper:h,middle:r,lower:l,...o}}function Kh(t,i,s={}){const n={paneIndex:s.paneIndex??0,period:s.period??20,colorUpper:s.colorUpper??"#089981",colorMiddle:s.colorMiddle??"#787B86",colorLower:s.colorLower??"#F23645",lineWidth:s.lineWidth??1,lineStyle:s.lineStyle??0,showMiddle:s.showMiddle??!0},e=n.paneIndex,h=i.addSeries(le,{color:n.colorUpper},e),r=i.addSeries(le,{color:n.colorMiddle},e),l=i.addSeries(le,{color:n.colorLower},e),o=Hh({e_:t,jf:i,hy:[h,r,l],Zl:"Donchian Channels",O:n,_y:["period"],ly:(t,i)=>{const s=((t,i)=>{if(!t||t.length<i)return{uy:[],py:[],vy:[]};const s=[],n=[],e=[];for(let h=i-1;h<t.length;h++){let r=-1/0,l=1/0;for(let s=0;s<i;s++){const i=t[h-s],n="high"in i?i.high:i.value,e="low"in i?i.low:i.value;n>r&&(r=n),e<l&&(l=e)}const o=t[h];void 0!==o.time&&r!==-1/0&&l!==1/0&&(s.push({time:o.time,value:r}),e.push({time:o.time,value:l}),n.push({time:o.time,value:(r+l)/2}))}return{uy:s,py:n,vy:e}})(t,i.period??20);return[[h,s.uy],[r,s.py],[l,s.vy]]},oy:t=>{const i=t.lineWidth??1,s=t.lineStyle;h.applyOptions({color:t.colorUpper,lineWidth:i,lineStyle:s}),r.applyOptions({color:t.colorMiddle,lineWidth:i,lineStyle:s,visible:t.showMiddle??!0}),l.applyOptions({color:t.colorLower,lineWidth:i,lineStyle:s})}});return{upper:h,middle:r,lower:l,...o}}function Gh(t,i,s={}){const n={paneIndex:s.paneIndex??0,step:s.step??.02,maxStep:s.maxStep??.2,colorUp:s.colorUp??"#089981",colorDown:s.colorDown??"#F23645",dotSize:s.dotSize??2},e=i.addSeries(le,{color:n.colorUp,lineVisible:!1,pointMarkersVisible:!0,pointMarkersRadius:n.dotSize},n.paneIndex),h=(t,i,s,n,e)=>{if(!t||t.length<3)return[];const h=t[0],r=t[1];if(!("high"in h)||!("low"in h))return[];const l=[];let o=r.close>=h.close,a=o?h.low:h.high,_=o?r.high:r.low,u=i;for(let h=1;h<t.length;h++){const r=t[h],c=t[h-1];if("high"in r&&"low"in r&&(a+=u*(_-a),o?(a=Math.min(a,c.low,t[h-2]?t[h-2].low:c.low),r.low<a?(o=!1,a=_,_=r.low,u=i):r.high>_&&(_=r.high,u=Math.min(u+i,s))):(a=Math.max(a,c.high,t[h-2]?t[h-2].high:c.high),r.high>a?(o=!0,a=_,_=r.high,u=i):r.low<_&&(_=r.low,u=Math.min(u+i,s))),void 0!==r.time)){const t={};t.time=r.time,t.value=a,t.color=o?n:e,l.push(t)}}return l},r=Hh({e_:t,jf:i,hy:[e],Zl:"Parabolic SAR",O:n,_y:["step","maxStep","colorUp","colorDown"],ly:(t,i)=>[[e,h(t,i.step??.02,i.maxStep??.2,i.colorUp??"#089981",i.colorDown??"#F23645")]],oy:t=>{e.applyOptions({pointMarkersRadius:t.dotSize})}});return{series:e,...r}}function Xh(t,i){let s;if("number"==typeof t)s=new Date(1e3*t);else if("string"==typeof t)s=new Date(`${t}T00:00:00Z`);else{if(null===t||"object"!=typeof t||!("year"in t))return null;{const i=t;s=new Date(Date.UTC(i.my,i.wy-1,i.gy))}}if(Number.isNaN(s.getTime()))return null;const n=s.getUTCFullYear();if("monthly"===i)return`${n}-${s.getUTCMonth()}`;if("weekly"===i){const t=new Date(s.getTime()),i=(t.getUTCDay()+6)%7;return t.setUTCDate(t.getUTCDate()-i),`${t.getUTCFullYear()}-${t.getUTCMonth()}-${t.getUTCDate()}`}return`${n}-${s.getUTCMonth()}-${s.getUTCDate()}`}function Zh(t,i,s={}){const n={paneIndex:s.paneIndex??0,anchorPeriod:s.anchorPeriod??"daily",color:s.color??"#2962FF",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,bandMultiplier:s.bandMultiplier??0,bandColor:s.bandColor??"#787B86"},e=n.paneIndex,h=i.addSeries(le,{color:n.color},e),r=i.addSeries(le,{color:n.bandColor},e),l=i.addSeries(le,{color:n.bandColor},e),o=Hh({e_:t,jf:i,hy:[h,r,l],Zl:"VWAP",O:n,_y:["anchorPeriod","bandMultiplier"],ly:(i,s)=>{const n=((i,s,n)=>{const e=[],h=[],r=[];if(!i||0===i.length||!Ah(t))return{by:e,uy:h,vy:r};let l=null,o=0,a=0,_=0;for(const u of i){const i=Xh(u.time,s);if(null===i||void 0===u.time)continue;i!==l&&(l=i,o=0,a=0,_=0);const c="high"in u&&"low"in u&&"close"in u?(u.high+u.low+u.close)/3:u.value,d=Lh(t,u.time)??0;if(o+=d,a+=c*d,_+=c*c*d,0===o)continue;const p=a/o;if(e.push({time:u.time,value:p}),n>0){const t=Math.max(_/o-p*p,0),i=Math.sqrt(t)*n;h.push({time:u.time,value:p+i}),r.push({time:u.time,value:p-i})}}return{by:e,uy:h,vy:r}})(i,s.anchorPeriod??"daily",s.bandMultiplier??0);return[[h,n.by],[r,n.uy],[l,n.vy]]},oy:t=>{const i=t.lineWidth??2,s=t.lineStyle,n=(t.bandMultiplier??0)>0;h.applyOptions({color:t.color,lineWidth:i,lineStyle:s}),r.applyOptions({color:t.bandColor,lineWidth:1,lineStyle:s,visible:n}),l.applyOptions({color:t.bandColor,lineWidth:1,lineStyle:s,visible:n})}});return{series:h,upper:r,lower:l,...o}}function Jh(t,i,s={}){const n={paneIndex:s.paneIndex??0,period:s.period??10,multiplier:s.multiplier??3,colorUp:s.colorUp??"#089981",colorDown:s.colorDown??"#F23645",lineWidth:s.lineWidth??2},e=i.addSeries(le,{color:n.colorUp,lineWidth:n.lineWidth},n.paneIndex),h=(t,i,s,n,e)=>{if(!t||t.length<i+1)return[];const h=[];for(let i=1;i<t.length;i++){const s=t[i],n=t[i-1];"high"in s&&"low"in s&&"close"in n?h.push(Math.max(s.high-s.low,Math.abs(s.high-n.close),Math.abs(s.low-n.close))):h.push(0)}const r=[];let l=0;for(let t=0;t<i;t++)l+=h[t];r[i-1]=l/i;for(let t=i;t<h.length;t++)r[t]=(r[t-1]*(i-1)+h[t])/i;const o=[];let a=0,_=0,u=!0,c=!1;for(let h=i;h<t.length;h++){const i=t[h],l=t[h-1],d=r[h-1];if(!("high"in i)||!("low"in i)||void 0===d)continue;const p=(i.high+i.low)/2,f=p+s*d,v=p-s*d;if(c?(a=f<a||l.close>a?f:a,_=v>_||l.close<_?v:_,u&&i.close<_?u=!1:!u&&i.close>a&&(u=!0)):(a=f,_=v,u=i.close>=p,c=!0),void 0===i.time)continue;const m={};m.time=i.time,m.value=u?_:a,m.color=u?n:e,o.push(m)}return o},r=Hh({e_:t,jf:i,hy:[e],Zl:"SuperTrend",_y:["period","multiplier","colorUp","colorDown"],O:n,ly:(t,i)=>[[e,h(t,i.period??10,i.multiplier??3,i.colorUp??"#089981",i.colorDown??"#F23645")]],oy:t=>{e.applyOptions({lineWidth:t.lineWidth})}});return{series:e,...r}}class Qh{constructor(t,i,s,n){this.Vf=t,this.be=i,this.R_=s,this.My=n}draw(t){const i=this.My();if(!i.Vt||i.yy<=0)return;const s=this.R_();s.length<2||t.useBitmapCoordinateSpace(t=>{const n=t.context,e=this.Vf.timeScale();for(let h=1;h<s.length;h++){const r=s[h-1],l=s[h],o=e.timeToCoordinate(r.gt),a=e.timeToCoordinate(l.gt);if(null===o||null===a)continue;const _=this.be.priceToCoordinate(r.Sy),u=this.be.priceToCoordinate(r.xy),c=this.be.priceToCoordinate(l.Sy),d=this.be.priceToCoordinate(l.xy);if(null===_||null===u||null===c||null===d)continue;const p=r.Sy>=r.xy;n.fillStyle=this.Py(p?i.Cy:i.Ty,i.yy),n.beginPath(),n.moveTo(o*t.horizontalPixelRatio,_*t.verticalPixelRatio),n.lineTo(a*t.horizontalPixelRatio,c*t.verticalPixelRatio),n.lineTo(a*t.horizontalPixelRatio,d*t.verticalPixelRatio),n.lineTo(o*t.horizontalPixelRatio,u*t.verticalPixelRatio),n.closePath(),n.fill()}})}Py(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class tr{constructor(t,i,s,n){this.Jt=new Qh(t,i,s,n)}renderer(){return this.Jt}zOrder(){return"bottom"}}function ir(t,i,s){if(i<s-1)return null;let n=-1/0,e=1/0;for(let h=0;h<s;h++){const s=t[i-h],r="high"in s?s.high:s.value,l="low"in s?s.low:s.value;r>n&&(n=r),l<e&&(e=l)}return n===-1/0?null:(n+e)/2}function sr(t,i,s={}){const n={paneIndex:s.paneIndex??0,conversionPeriod:s.conversionPeriod??9,basePeriod:s.basePeriod??26,spanBPeriod:s.spanBPeriod??52,displacement:s.displacement??26,colorConversion:s.colorConversion??"#2962FF",colorBase:s.colorBase??"#F23645",colorSpanA:s.colorSpanA??"#089981",colorSpanB:s.colorSpanB??"#F23645",colorLagging:s.colorLagging??"#787B86",cloudBullishColor:s.cloudBullishColor??"#089981",cloudBearishColor:s.cloudBearishColor??"#F23645",cloudOpacity:s.cloudOpacity??.15,showCloud:s.showCloud??!0,showLagging:s.showLagging??!0,lineWidth:s.lineWidth??1},e=n.paneIndex,h=t=>i.addSeries(le,{color:t},e),r=h(n.colorConversion),l=h(n.colorBase),o=h(n.colorSpanA),a=h(n.colorSpanB),_=h(n.colorLagging);let u=[],c=n;const d=new tr(i,t,()=>u,()=>({Cy:c.cloudBullishColor??"#089981",Ty:c.cloudBearishColor??"#F23645",yy:c.cloudOpacity??.15,Vt:c.showCloud??!0})),p={attached:t=>{},detached:()=>{},paneViews:()=>[d],updateAllViews:()=>{}};t.attachPrimitive(p);const f=(t,i)=>{const s=i.conversionPeriod??9,n=i.basePeriod??26,e=i.spanBPeriod??52,h=i.displacement??26,r=[],l=[],o=[],a=[],_=[],u=[];if(!t||t.length<e)return{ky:r,er:l,Sy:o,xy:a,Dy:_,Iy:u};const c=function(t){if(t.length<3)return null;const i=new Map;let s=null,n=0;for(let e=1;e<t.length;e++){const h=t[e-1].time,r=t[e].time;if("number"!=typeof h||"number"!=typeof r)return null;const l=r-h;if(l<=0)continue;const o=(i.get(l)??0)+1;i.set(l,o),o>n&&(n=o,s=l)}return s}(t),d=i=>{if(i<t.length)return t[i].time;if(null===c)return null;return t[t.length-1].time+c*(i-t.length+1)},p=new Map,f=new Map;for(let i=0;i<t.length;i++){const o=t[i];if(void 0===o.time)continue;const a=ir(t,i,s),u=ir(t,i,n);null!==a&&r.push({time:o.time,value:a}),null!==u&&l.push({time:o.time,value:u}),null!==a&&null!==u&&p.set(i+h,(a+u)/2);const c=ir(t,i,e);null!==c&&f.set(i+h,c);const d=i-h;if(d>=0&&void 0!==t[d].time){const i="close"in o?o.close:o.value;_.push({time:t[d].time,value:i})}}const v=t.length-1+h;for(let t=0;t<=v;t++){const i=d(t);if(null==i)continue;const s=p.get(t),n=f.get(t);if(void 0!==s&&o.push({time:i,value:s}),void 0!==n&&a.push({time:i,value:n}),void 0!==s&&void 0!==n){const t={gt:i,Sy:s,xy:n};u.push(t)}}return{ky:r,er:l,Sy:o,xy:a,Dy:_,Iy:u}},v=Hh({e_:t,jf:i,hy:[r,l,o,a,_],Zl:"Ichimoku",O:n,_y:["conversionPeriod","basePeriod","spanBPeriod","displacement"],ly:(t,i)=>{c=i;const s=f(t,i);return u=s.Iy,[[r,s.ky],[l,s.er],[o,s.Sy],[a,s.xy],[_,i.showLagging??1?s.Dy:[]]]},oy:t=>{c=t;const s=t.lineWidth??1;r.applyOptions({color:t.colorConversion,lineWidth:s}),l.applyOptions({color:t.colorBase,lineWidth:s}),o.applyOptions({color:t.colorSpanA,lineWidth:s}),a.applyOptions({color:t.colorSpanB,lineWidth:s}),_.applyOptions({color:t.colorLagging,lineWidth:s,visible:t.showLagging??!0}),i.timeScale().applyOptions({})}}),m=v.remove;return{conversion:r,base:l,spanA:o,spanB:a,lagging:_,...v,remove:()=>{try{t.detachPrimitive(p)}catch(t){}u=[],m()}}}function nr(t,i,s={}){const n={paneIndex:s.paneIndex??0,pivotPeriod:s.pivotPeriod??"daily",levels:s.levels??3,colorPivot:s.colorPivot??"#FF6D00",colorResistance:s.colorResistance??"#F23645",colorSupport:s.colorSupport??"#089981",lineWidth:s.lineWidth??1,lineStyle:s.lineStyle??2},e=n.paneIndex,h=t=>i.addSeries(le,{color:t},e),r=h(n.colorPivot),l=[h(n.colorResistance),h(n.colorResistance),h(n.colorResistance)],o=[h(n.colorSupport),h(n.colorSupport),h(n.colorSupport)],a=Hh({e_:t,jf:i,hy:[r,...l,...o],Zl:"Pivot Points",O:n,_y:["pivotPeriod"],ly:(t,i)=>{const s=((t,i)=>{const s=[],n=[[],[],[]],e=[[],[],[]];if(!t||0===t.length)return{Ry:s,Vy:n,Fy:e};let h=null,r=-1/0,l=1/0,o=0,a=null;for(const _ of t){const t=Xh(_.time,i);if(null===t)continue;if(null===h)h=t;else if(t!==h){const i=(r+l+o)/3,s=r-l;a={Ey:i,Ly:[2*i-l,i+s,r+2*(i-l)],Ay:[2*i-r,i-s,l-2*(r-i)]},h=t,r=-1/0,l=1/0}const u="high"in _?_.high:_.value,c="low"in _?_.low:_.value;if(u>r&&(r=u),c<l&&(l=c),o="close"in _?_.close:_.value,null!==a&&void 0!==_.time){s.push({time:_.time,value:a.Ey});for(let t=0;t<3;t++)n[t].push({time:_.time,value:a.Ly[t]}),e[t].push({time:_.time,value:a.Ay[t]})}}return{Ry:s,Vy:n,Fy:e}})(t,i.pivotPeriod??"daily"),n=Math.max(1,Math.min(i.levels??3,3)),e=[[r,s.Ry]];for(let t=0;t<3;t++)e.push([l[t],t<n?s.Vy[t]:[]]),e.push([o[t],t<n?s.Fy[t]:[]]);return e},oy:t=>{const i=t.lineWidth??1,s=t.lineStyle,n=Math.max(1,Math.min(t.levels??3,3));r.applyOptions({color:t.colorPivot,lineWidth:i,lineStyle:s});for(let e=0;e<3;e++)l[e].applyOptions({color:t.colorResistance,lineWidth:i,lineStyle:s,visible:e<n}),o[e].applyOptions({color:t.colorSupport,lineWidth:i,lineStyle:s,visible:e<n})}});return{pivot:r,resistances:l,supports:o,...a}}function er(t){return null!=t&&"number"==typeof t.close}function hr(t){const i=[];let s=null,n=null;for(const e of t){if(!er(e)){null!=e&&i.push({time:e.time,customValues:e.customValues});continue}const t=(e.open+e.high+e.low+e.close)/4,h=null===s||null===n?(e.open+e.close)/2:(s+n)/2;i.push({time:e.time,open:h,high:Math.max(e.high,h,t),low:Math.min(e.low,h,t),close:t,customValues:e.customValues}),s=h,n=t}return i}function rr(t,i,s={}){const n={paneIndex:s.paneIndex??0,upColor:s.upColor??"#26a69a",downColor:s.downColor??"#ef5350",borderVisible:s.borderVisible??!0,borderUpColor:s.borderUpColor??"#26a69a",borderDownColor:s.borderDownColor??"#ef5350",wickVisible:s.wickVisible??!0,wickUpColor:s.wickUpColor??"#26a69a",wickDownColor:s.wickDownColor??"#ef5350",hideSource:s.hideSource??!0},e=t.options(),h=i.addSeries(Ee,{upColor:n.upColor,downColor:n.downColor,borderVisible:n.borderVisible,borderUpColor:n.borderUpColor,borderDownColor:n.borderDownColor,wickVisible:n.wickVisible,wickUpColor:n.wickUpColor,wickDownColor:n.wickDownColor,priceScaleId:e.priceScaleId,priceFormat:e.priceFormat},n.paneIndex),r=e.visible;!0===n.hideSource&&t.applyOptions({visible:!1});const l=Hh({e_:t,jf:i,hy:[h],Zl:"Heikin Ashi",O:n,_y:[],ly:t=>[[h,hr(t)]],oy:i=>{h.applyOptions({upColor:i.upColor,downColor:i.downColor,borderVisible:i.borderVisible,borderUpColor:i.borderUpColor,borderDownColor:i.borderDownColor,wickVisible:i.wickVisible,wickUpColor:i.wickUpColor,wickDownColor:i.wickDownColor}),t.applyOptions({visible:!0!==i.hideSource&&r})}});return{Oa:h,options:l.options,applyOptions:l.applyOptions,recalculate:l.recalculate,remove:()=>{l.remove();try{t.applyOptions({visible:r})}catch(t){}}}}function lr(t,i,s={}){const n={paneIndex:s.paneIndex??1,period:s.period??14,color:s.color??"#9C27B0",lineWidth:s.lineWidth??2,source:s.source??"close",lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?70:s.overbought,oversold:void 0===s.oversold?30:s.oversold,levelColor:s.levelColor??"#787B86"},e=n.paneIndex,h=i.addSeries(le,{color:n.color,lineWidth:n.lineWidth,priceFormat:{type:"price",precision:2,minMove:.01},autoscaleInfoProvider:Bh(0,100)},e),r=Wh(i,h,e);i.priceScale(h.options().priceScaleId??"right",r).applyOptions({scaleMargins:{top:.1,bottom:.1},borderVisible:!1});const l=zh(h,n.levelColor),o=(t,i,s)=>{if(!t||t.length<i+1)return[];const n=Oh(t,s),e=[],h=[];for(let t=1;t<n.length;t++)h.push(n[t]-n[t-1]);let r=0,l=0;for(let t=0;t<i;t++)h[t]>0?r+=h[t]:l+=Math.abs(h[t]);r/=i,l/=i;let o=0===l?100:r/l,a=100-100/(1+o);t[i]&&t[i].time&&e.push({time:t[i].time,value:a});for(let s=i;s<h.length;s++){const n=h[s];r=(r*(i-1)+(n>0?n:0))/i,l=(l*(i-1)+(n<0?Math.abs(n):0))/i,o=0===l?100:r/l,a=100-100/(1+o),t[s+1]&&t[s+1].time&&e.push({time:t[s+1].time,value:a})}return e},a=Hh({e_:t,jf:i,hy:[h],Zl:"RSI",O:n,_y:["period","source"],ly:(t,i)=>[[h,o(t,i.period??14,i.source??"close")]],oy:t=>{h.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:h,...a}}function or(t,i,s={}){const n={paneIndex:s.paneIndex??2,fastPeriod:s.fastPeriod??12,slowPeriod:s.slowPeriod??26,signalPeriod:s.signalPeriod??9,colorMACD:s.colorMACD??"#2196F3",colorSignal:s.colorSignal??"#FF6D00",colorHistogramUp:s.colorHistogramUp??"#26a69a",colorHistogramDown:s.colorHistogramDown??"#ef5350",lineWidth:s.lineWidth??2},e=n.paneIndex,h=i.addSeries(le,{color:n.colorMACD},e),r=i.addSeries(le,{color:n.colorSignal},e),l=i.addSeries(Be,{color:n.colorHistogramUp},e),o=(t,i)=>{const s=[],n=2/(i+1);let e=0;for(let s=0;s<i;s++)e+=t[s];s.push(e/i);for(let e=i;e<t.length;e++)s.push((t[e]-s[s.length-1])*n+s[s.length-1]);return s},a=Hh({e_:t,jf:i,hy:[h,r,l],Zl:"MACD",O:n,_y:["fastPeriod","slowPeriod","signalPeriod","colorHistogramUp","colorHistogramDown"],ly:(t,i)=>{const s=((t,i)=>{const s=i.fastPeriod??12,n=i.slowPeriod??26,e=i.signalPeriod??9;if(!t||t.length<n+e)return{By:[],Wy:[],Oy:[]};const h=[];for(const i of t)"close"in i?h.push(i.close):"value"in i?h.push(i.value):h.push(0);const r=o(h,s),l=o(h,n),a=[],_=n-s;for(let t=0;t<l.length;t++)a.push(r[t+_]-l[t]);const u=o(a,e),c=[],d=[],p=[],f=n-1;for(let s=e-1;s<u.length;s++){const n=f+s;if(t[n]&&t[n].time){const e=t[n].time,h=a[s],r=u[s],l=h-r;c.push({time:e,value:h}),d.push({time:e,value:r}),p.push({time:e,value:l,color:l>=0?i.colorHistogramUp:i.colorHistogramDown})}}return{By:c,Wy:d,Oy:p}})(t,i);return[[h,s.By],[r,s.Wy],[l,s.Oy]]},oy:t=>{const i=t.lineWidth??2;h.applyOptions({color:t.colorMACD,lineWidth:i}),r.applyOptions({color:t.colorSignal,lineWidth:i})}});return{macd:h,signal:r,histogram:l,...a}}function ar(t,i,s={}){const n={paneIndex:s.paneIndex??4,kPeriod:s.kPeriod??14,dPeriod:s.dPeriod??3,colorK:s.colorK??"#2196F3",colorD:s.colorD??"#FF6D00",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?80:s.overbought,oversold:void 0===s.oversold?20:s.oversold,levelColor:s.levelColor??"#787B86"},e=n.paneIndex,h=Bh(0,100),r=i.addSeries(le,{color:n.colorK,autoscaleInfoProvider:h},e),l=i.addSeries(le,{color:n.colorD,autoscaleInfoProvider:h},e),o=Wh(i,r,e);i.priceScale(r.options().priceScaleId??"right",o).applyOptions({scaleMargins:{top:.1,bottom:.1}});const a=zh(r,n.levelColor),_=Hh({e_:t,jf:i,hy:[r,l],Zl:"Stochastic",O:n,_y:["kPeriod","dPeriod"],ly:(t,i)=>{const s=((t,i,s)=>{if(!t||t.length<i)return{zy:[],$y:[]};const n=[];for(let s=i-1;s<t.length;s++){let e=-1/0,h=1/0;for(let n=0;n<i;n++){const i=t[s-n];"high"in i&&"low"in i&&(e=Math.max(e,i.high),h=Math.min(h,i.low))}const r=t[s];if("close"in r){const t=(r.close-h)/(e-h)*100;n.push(t)}}const e=[];for(let s=0;s<n.length;s++){const h=i-1+s;t[h]&&t[h].time&&e.push({time:t[h].time,value:n[s]})}const h=[];if(n.length>=s)for(let e=s-1;e<n.length;e++){let r=0;for(let t=0;t<s;t++)r+=n[e-t];const l=r/s,o=i-1+e;t[o]&&t[o].time&&h.push({time:t[o].time,value:l})}return{zy:e,$y:h}})(t,i.kPeriod??14,i.dPeriod??3);return[[r,s.zy],[l,s.$y]]},oy:t=>{const i=t.lineWidth??2,s=t.lineStyle;r.applyOptions({color:t.colorK,lineWidth:i,lineStyle:s}),l.applyOptions({color:t.colorD,lineWidth:i,lineStyle:s}),a([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{k:r,d:l,..._}}function _r(t,i,s={}){const n={paneIndex:s.paneIndex??6,period:s.period??14,color:s.color??"#FF9800",lineWidth:s.lineWidth??2},e=i.addSeries(le,{color:n.color,lineWidth:n.lineWidth},n.paneIndex),h=(t,i)=>{if(!t||t.length<i+1)return[];const s=[];for(let i=1;i<t.length;i++){const n=t[i],e=t[i-1];if("high"in n&&"low"in n&&"close"in e){const t=n.high-n.low,i=Math.abs(n.high-e.close),h=Math.abs(n.low-e.close),r=Math.max(t,i,h);s.push(r)}}if(s.length<i)return[];const n=[];let e=0;for(let t=0;t<i;t++)e+=s[t];e/=i,t[i]&&t[i].time&&n.push({time:t[i].time,value:e});for(let h=i;h<s.length;h++)e=(e*(i-1)+s[h])/i,t[h+1]&&t[h+1].time&&n.push({time:t[h+1].time,value:e});return n},r=Hh({e_:t,jf:i,hy:[e],Zl:"ATR",O:n,_y:["period"],ly:(t,i)=>[[e,h(t,i.period??14)]],oy:t=>{e.applyOptions({color:t.color,lineWidth:t.lineWidth})}});return{series:e,...r}}function ur(t,i,s={}){const n={paneIndex:s.paneIndex??3,colorUp:s.colorUp??"#26a69a",colorDown:s.colorDown??"#ef5350"},e=n.paneIndex,h=i.addSeries(Be,{color:n.colorUp,priceFormat:{type:"volume"},priceScaleId:""},e),r=Wh(i,h,e);i.priceScale(h.options().priceScaleId??"right",r).applyOptions({scaleMargins:{top:.8,bottom:0}});const l=(i,s)=>{const n=t.data();if(!n||0===n.length||!Ah(t))return[];const e=[];for(const h of n){const n=Lh(t,h.time);n&&"close"in h&&"open"in h&&e.push({time:h.time,value:n,color:h.close>=h.open?i:s})}return e},o=Hh({e_:t,jf:i,hy:[h],Zl:"Volume",O:n,_y:["colorUp","colorDown"],ly:(t,i)=>[[h,l(i.colorUp??"#26a69a",i.colorDown??"#ef5350")]]});return{series:h,...o}}function cr(t,i,s={}){const n={paneIndex:s.paneIndex??5,color:s.color??"#2196F3",lineWidth:s.lineWidth??2,data:s.data},e=i.addSeries(le,{color:n.color,lineWidth:n.lineWidth},n.paneIndex),h=()=>{const i=t.data();if(!i||i.length<2||!Ah(t))return[];const s=[];let n=0;s.push({time:i[0].time,value:n});for(let e=1;e<i.length;e++){const h=i[e],r=i[e-1],l=Lh(t,h.time);l&&"close"in h&&"close"in r&&(h.close>r.close?n+=l:h.close<r.close&&(n-=l),s.push({time:h.time,value:n}))}return s},r=Hh({e_:t,jf:i,hy:[e],Zl:"OBV",O:n,ly:()=>[[e,h()]],oy:t=>{e.applyOptions({color:t.color,lineWidth:t.lineWidth})}});return{series:e,...r}}function dr(t,i,s={}){const n={paneIndex:s.paneIndex??7,period:s.period??14,colorADX:s.colorADX??"#F23645",colorPlusDI:s.colorPlusDI??"#089981",colorMinusDI:s.colorMinusDI??"#2962FF",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,threshold:void 0===s.threshold?25:s.threshold,levelColor:s.levelColor??"#787B86",showDI:s.showDI??!0},e=n.paneIndex,h=Bh(0,100),r=i.addSeries(le,{color:n.colorADX,autoscaleInfoProvider:h},e),l=i.addSeries(le,{color:n.colorPlusDI,autoscaleInfoProvider:h},e),o=i.addSeries(le,{color:n.colorMinusDI,autoscaleInfoProvider:h},e),a=Wh(i,r,e);i.priceScale(r.options().priceScaleId??"right",a).applyOptions({scaleMargins:{top:.1,bottom:.1}});const _=zh(r,n.levelColor),u=Hh({e_:t,jf:i,hy:[r,l,o],Zl:"ADX",O:n,_y:["period"],ly:(t,i)=>{const s=((t,i)=>{if(!t||t.length<2*i)return{Hy:[],Ny:[],Uy:[]};const s=[],n=[],e=[];for(let i=1;i<t.length;i++){const h=t[i],r=t[i-1];if(!("high"in h)||!("low"in h)||!("close"in r)){s.push(0),n.push(0),e.push(0);continue}s.push(Math.max(h.high-h.low,Math.abs(h.high-r.close),Math.abs(h.low-r.close)));const l=h.high-r.high,o=r.low-h.low;n.push(l>o&&l>0?l:0),e.push(o>l&&o>0?o:0)}let h=0,r=0,l=0;for(let t=0;t<i;t++)h+=s[t],r+=n[t],l+=e[t];const o=[],a=[],_=[],u=[];for(let c=i;c<s.length;c++){h=h-h/i+s[c],r=r-r/i+n[c],l=l-l/i+e[c];const d=0===h?0:r/h*100,p=0===h?0:l/h*100,f=d+p,v=0===f?0:Math.abs(d-p)/f*100;u.push(v);const m=t[c+1];if(m&&void 0!==m.time)if(a.push({time:m.time,value:d}),_.push({time:m.time,value:p}),u.length===i){let t=0;for(const i of u)t+=i;o.push({time:m.time,value:t/i})}else if(u.length>i){const t=o[o.length-1].value;o.push({time:m.time,value:(t*(i-1)+v)/i})}}return{Hy:o,Ny:a,Uy:_}})(t,i.period??14),n=i.showDI??!0;return[[r,s.Hy],[l,n?s.Ny:[]],[o,n?s.Uy:[]]]},oy:t=>{const i=t.lineWidth??2,s=t.lineStyle;r.applyOptions({color:t.colorADX,lineWidth:i,lineStyle:s}),l.applyOptions({color:t.colorPlusDI,lineWidth:i,lineStyle:s,visible:t.showDI??!0}),o.applyOptions({color:t.colorMinusDI,lineWidth:i,lineStyle:s,visible:t.showDI??!0}),_("number"==typeof t.threshold?[t.threshold]:[])}});return{adx:r,plusDI:l,minusDI:o,...u}}function pr(t,i,s={}){const n={paneIndex:s.paneIndex??8,period:s.period??20,color:s.color??"#2962FF",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?100:s.overbought,oversold:void 0===s.oversold?-100:s.oversold,levelColor:s.levelColor??"#787B86"},e=n.paneIndex,h=i.addSeries(le,{color:n.color,lineWidth:n.lineWidth},e),r=Wh(i,h,e);i.priceScale(h.options().priceScaleId??"right",r).applyOptions({scaleMargins:{top:.1,bottom:.1}});const l=zh(h,n.levelColor),o=(t,i)=>{if(!t||t.length<i)return[];const s=[];for(const i of t)"high"in i&&"low"in i&&"close"in i?s.push((i.high+i.low+i.close)/3):s.push("value"in i?i.value:0);const n=[];for(let e=i-1;e<s.length;e++){let h=0;for(let t=0;t<i;t++)h+=s[e-t];const r=h/i;let l=0;for(let t=0;t<i;t++)l+=Math.abs(s[e-t]-r);const o=l/i,a=0===o?0:(s[e]-r)/(.015*o);t[e]&&void 0!==t[e].time&&n.push({time:t[e].time,value:a})}return n},a=Hh({e_:t,jf:i,hy:[h],Zl:"CCI",O:n,_y:["period"],ly:(t,i)=>[[h,o(t,i.period??20)]],oy:t=>{h.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:h,...a}}function fr(t,i,s={}){const n={paneIndex:s.paneIndex??9,period:s.period??14,color:s.color??"#FF6D00",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?-20:s.overbought,oversold:void 0===s.oversold?-80:s.oversold,levelColor:s.levelColor??"#787B86"},e=n.paneIndex,h=i.addSeries(le,{color:n.color,lineWidth:n.lineWidth,autoscaleInfoProvider:Bh(-100,0)},e),r=Wh(i,h,e);i.priceScale(h.options().priceScaleId??"right",r).applyOptions({scaleMargins:{top:.1,bottom:.1}});const l=zh(h,n.levelColor),o=(t,i)=>{if(!t||t.length<i)return[];const s=[];for(let n=i-1;n<t.length;n++){let e=-1/0,h=1/0;for(let s=0;s<i;s++){const i=t[n-s];"high"in i&&"low"in i&&(e=Math.max(e,i.high),h=Math.min(h,i.low))}const r=t[n];if(!("close"in r)||void 0===r.time)continue;const l=e-h,o=0===l?0:(e-r.close)/l*-100;s.push({time:r.time,value:o})}return s},a=Hh({e_:t,jf:i,hy:[h],Zl:"Williams %R",O:n,_y:["period"],ly:(t,i)=>[[h,o(t,i.period??14)]],oy:t=>{h.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:h,...a}}function vr(t,i,s={}){const n={paneIndex:s.paneIndex??10,period:s.period??14,color:s.color??"#9C27B0",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??0,overbought:void 0===s.overbought?80:s.overbought,oversold:void 0===s.oversold?20:s.oversold,levelColor:s.levelColor??"#787B86"},e=n.paneIndex,h=i.addSeries(le,{color:n.color,lineWidth:n.lineWidth,autoscaleInfoProvider:Bh(0,100)},e),r=Wh(i,h,e);i.priceScale(h.options().priceScaleId??"right",r).applyOptions({scaleMargins:{top:.1,bottom:.1}});const l=zh(h,n.levelColor),o=(i,s)=>{if(!i||i.length<s+1||!Ah(t))return[];const n=[],e=[];for(let s=1;s<i.length;s++){const h=i[s],r=i[s-1];if(!("high"in h)||!("low"in h)||!("close"in h)){n.push(0),e.push(0);continue}const l=(h.high+h.low+h.close)/3,o=(r.high+r.low+r.close)/3,a=l*(Lh(t,h.time)??0);n.push(l>o?a:0),e.push(l<o?a:0)}const h=[];for(let t=s-1;t<n.length;t++){let r=0,l=0;for(let i=0;i<s;i++)r+=n[t-i],l+=e[t-i];const o=0===l?100:100-100/(1+r/l),a=i[t+1];a&&void 0!==a.time&&h.push({time:a.time,value:o})}return h},a=Hh({e_:t,jf:i,hy:[h],Zl:"MFI",O:n,_y:["period"],ly:(t,i)=>[[h,o(t,i.period??14)]],oy:t=>{h.applyOptions({color:t.color,lineWidth:t.lineWidth,lineStyle:t.lineStyle}),l([t.overbought,t.oversold].filter(t=>"number"==typeof t))}});return{series:h,...a}}class mr{constructor(t){this.qy=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.qy.getSessionBoxes();if(s&&0!==s.length)for(const n of s)this.jy(i,n,t.horizontalPixelRatio,t.verticalPixelRatio)})}jy(t,i,s,n){const e=i.Yy||i.startTime,h=i.Ky||i.endTime,r=i.I||i.color,l=i.yy||i.opacity;if(!i||!e||!h)return;const o=this.qy.getChart().timeScale(),a=o.timeToCoordinate(e),_=o.timeToCoordinate(h);if(null===a||null===_)return;const u=a*s,c=_*s,d=0*n,p=t.canvas.height/n*n;t.fillStyle=this.Gy(r,l),t.fillRect(u,d,c-u,p-d)}Gy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class wr{constructor(t){this.Jt=new mr(t)}renderer(){return this.Jt}zOrder(){return"bottom"}}const gr=[{name:"Tokyo",startHour:0,endHour:9,color:"#FF6B00",opacity:.1},{name:"London",startHour:8,endHour:17,color:"#2962FF",opacity:.1},{name:"New York",startHour:13,endHour:22,color:"#089981",opacity:.1}];class br{constructor(t,i,s={}){this.Xy=[],this.Ub=null,this.nr=null,this.Vf=t,this.be=i,this.Cs={sessions:s.sessions||gr,showOverlaps:s.showOverlaps??!0,overlapColor:s.overlapColor||"#9C27B0",overlapOpacity:s.overlapOpacity||.15,enabled:s.enabled??!0},this.Zy(),this.Cs.enabled&&this.Jy()}Zy(){this.nr=new wr(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.nr?[this.nr]:[],updateAllViews:()=>{this.nr}};this.Ub=t,this.be.attachPrimitive(t)}Jy(){this.Vf.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.Qy()}),this.Qy()}Qy(){this.tS();const t=this.Vf.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.be.data();if(!i||0===i.length)return;const s=i.filter((i,s)=>s>=t.from&&s<=t.to);this.iS(s),this.cM()}iS(t){if(0!==t.length){for(const i of this.Cs.sessions)this.sS(i,t);this.Cs.showOverlaps&&this.nS(t)}}sS(t,i){let s=null,n=[];for(const e of i){const i=e.time,h=this.eS(i);this.hS(h,t.startHour,t.endHour)?(s||(s=i),n.push(e)):s&&n.length>0&&(this.rS(s,n[n.length-1].time,t),s=null,n=[])}s&&n.length>0&&this.rS(s,n[n.length-1].time,t)}nS(t){const i=this.Cs.sessions;for(let s=0;s<i.length;s++)for(let n=s+1;n<i.length;n++){const e=i[s],h=i[n],r=this.lS(e,h);r&&this.oS(r,t)}}lS(t,i){const s=Math.max(t.startHour,i.startHour),n=Math.min(t.endHour,i.endHour);return s<n?{ae:s,_e:n}:null}oS(t,i){let s=null,n=[];for(const e of i){const i=e.time,h=this.eS(i);h>=t.ae&&h<t._e?(s||(s=i),n.push(e)):s&&n.length>0&&(this.aS(s,n[n.length-1].time),s=null,n=[])}s&&n.length>0&&this.aS(s,n[n.length-1].time)}rS(t,i,s){if(!t||!i)return void console.warn("Invalid session box times:",{startTime:t,endTime:i,session:s.name});const n={an:"session",Yy:t,Ky:i,I:s.color,yy:s.opacity,_S:s.name};this.Xy.push(n)}aS(t,i){const s={an:"overlap",Yy:t,Ky:i,I:this.Cs.overlapColor,yy:this.Cs.overlapOpacity,_S:"Overlap"};this.Xy.push(s)}hS(t,i,s){return i<s?t>=i&&t<s:t>=i||t<s}eS(t){if("number"==typeof t){return new Date(1e3*t).getUTCHours()}if("string"==typeof t){return new Date(t).getUTCHours()}return 0}tS(){this.Xy=[]}applyOptions(t){this.Cs={...this.Cs,...t},this.Cs.enabled?this.Qy():this.tS(),this.cM()}options(){return{...this.Cs}}enable(){this.Cs.enabled=!0,this.Qy(),this.cM()}disable(){this.Cs.enabled=!1,this.tS(),this.cM()}remove(){this.Ub&&this.be&&this.be.detachPrimitive(this.Ub),this.tS(),this.cM()}getSessionBoxes(){return this.Xy}getChart(){return this.Vf}getSeries(){return this.be}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vf.timeScale().applyOptions({})}}function Mr(t,i,s){return new br(t,i,s)}class yr{constructor(t){this.qy=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this.qy.getProfileData();if(!s||0===s.bins.length)return;const n=this.qy.options(),e=this.qy.getSeries(),h=i.canvas.width/t.horizontalPixelRatio,r=Math.min(n.width||100,.2*h),l="right"===n.position?h-r:0;let o=0;for(const t of s.bins)t.volume>o&&(o=t.volume);if(0!==o){for(const h of s.bins)this.uS(i,h,l,r,o,s,n,e,t.horizontalPixelRatio,t.verticalPixelRatio);n.showPOC&&this.cS(i,s.poc,n.pocColor||"#FF6B00",e,h,t.horizontalPixelRatio,t.verticalPixelRatio),n.showValueArea&&this.dS(i,s.valueAreaHigh,s.valueAreaLow,n.valueAreaColor||"#089981",e,h,t.horizontalPixelRatio,t.verticalPixelRatio)}})}uS(t,i,s,n,e,h,r,l,o,a){const _=i.volume/e*n,u=h.binSize/2,c=l.priceToCoordinate(i.priceLevel+u),d=l.priceToCoordinate(i.priceLevel-u);if(null===c||null===d)return;const p=Math.max(Math.abs(d-c)-1,1),f=s*o,v=Math.min(c,d)*a,m=_*o,w=p*a,g=i.priceLevel>=h.valueAreaLow&&i.priceLevel<=h.valueAreaHigh,b=Math.abs(i.priceLevel-h.poc)<1e-5;let M=r.profileColor||"#2962FF",y=r.opacity||.3;b?(M=r.pocColor||"#FF6B00",y=.6):g&&r.showValueArea&&(M=r.valueAreaColor||"#089981",y=.4),t.fillStyle=this.Gy(M,y),t.fillRect(f,v,m,w)}cS(t,i,s,n,e,h,r){const l=n.priceToCoordinate(i);if(null===l)return;const o=l*r;t.strokeStyle=s,t.lineWidth=2*Math.min(h,r),t.setLineDash([5*h,3*h]),t.beginPath(),t.moveTo(0,o),t.lineTo(e*h,o),t.stroke(),t.setLineDash([])}dS(t,i,s,n,e,h,r,l){const o=e.priceToCoordinate(i);if(null!==o){const i=o*l;t.strokeStyle=this.Gy(n,.5),t.lineWidth=1*Math.min(r,l),t.setLineDash([3*r,2*r]),t.beginPath(),t.moveTo(0,i),t.lineTo(h*r,i),t.stroke()}const a=e.priceToCoordinate(s);if(null!==a){const i=a*l;t.strokeStyle=this.Gy(n,.5),t.lineWidth=1*Math.min(r,l),t.setLineDash([3*r,2*r]),t.beginPath(),t.moveTo(0,i),t.lineTo(h*r,i),t.stroke()}t.setLineDash([])}Gy(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}}class Sr{constructor(t){this.Jt=new yr(t)}renderer(){return this.Jt}zOrder(){return"normal"}}class xr{constructor(t,i,s={}){this.pS=null,this.fS=new Map,this.Ub=null,this.nr=null,this.Vf=t,this.be=i,this.Cs={numberOfBins:s.numberOfBins||24,valueAreaPercentage:s.valueAreaPercentage||.7,showPOC:s.showPOC??!0,showValueArea:s.showValueArea??!0,profileColor:s.profileColor||"#2962FF",pocColor:s.pocColor||"#FF6B00",valueAreaColor:s.valueAreaColor||"#089981",opacity:s.opacity||.3,width:s.width||100,position:s.position||"right"},this.Zy(),this.Jy()}Zy(){this.nr=new Sr(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.nr?[this.nr]:[],updateAllViews:()=>{this.nr}};this.Ub=t,this.be.attachPrimitive(t)}Jy(){this.Vf.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.vS()}),this.vS()}setVolumeData(t){this.fS=t,this.vS()}addVolumeData(t,i){this.fS.set(t,i),this.vS()}vS(){const t=this.Vf.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.be.data();if(!i||0===i.length)return;const s=i.filter((i,s)=>s>=t.from&&s<=t.to);if(0===s.length)return;let n=1/0,e=-1/0;for(const t of s){const i=t.low||t.value||t.close,s=t.high||t.value||t.close;i<n&&(n=i),s>e&&(e=s)}const h=(e-n)/this.Cs.numberOfBins,r=[];for(let t=0;t<this.Cs.numberOfBins;t++)r.push({priceLevel:n+(t+.5)*h,volume:0,percentage:0});let l=0;for(const t of s){const i=t.close||t.value,s=this.fS.get(t.time)||1,e=Math.floor((i-n)/h);r[Math.max(0,Math.min(this.Cs.numberOfBins-1,e))].volume+=s,l+=s}for(const t of r)t.percentage=l>0?t.volume/l*100:0;let o=r[0];for(const t of r)t.volume>o.volume&&(o=t);const a=l*this.Cs.valueAreaPercentage,_=[...r].sort((t,i)=>i.volume-t.volume);let u=0;const c=[];for(const t of _){if(!(u<a))break;c.push(t),u+=t.volume}let d=-1/0,p=1/0;for(const t of c)t.priceLevel>d&&(d=t.priceLevel),t.priceLevel<p&&(p=t.priceLevel);this.pS={bins:r,binSize:h,poc:o.priceLevel,valueAreaHigh:d,valueAreaLow:p,totalVolume:l},this.cM()}getProfileData(){return this.pS}applyOptions(t){this.Cs={...this.Cs,...t},this.vS(),this.cM()}remove(){this.Ub&&this.be&&this.be.detachPrimitive(this.Ub),this.pS=null,this.fS.clear(),this.cM()}getChart(){return this.Vf}getSeries(){return this.be}options(){return this.Cs}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vf.timeScale().applyOptions({})}}function Pr(t,i,s){return new xr(t,i,s)}function Cr(t,i){const s=new Map;for(const t of i)s.set(t.time,t.volume);t.setVolumeData(s)}class Tr{constructor(t,i){this.mS=new Map,this.wS=null,this.gS=null,this.bS=null,this.MS=null,this.yS=null,this.SS=null,this.bg=void 0,this.Vf=t,this.kf=i,this.xS=t=>this.PS(t),this.CS=t=>this.TS(t),this.kS=t=>this.DS(t),this.IS=t=>this.RS(t),this.VS=()=>this.FS(),this.ES=t=>{"Escape"===t.key&&this.FS()},this.Vf.subscribeCrosshairMove(this.xS),this.kf.addEventListener("pointerdown",this.CS),this.kf.addEventListener("pointermove",this.kS),this.kf.addEventListener("pointerup",this.IS),this.kf.addEventListener("pointercancel",this.VS),document.addEventListener("keydown",this.ES)}LS(t){this.mS.set(t.id(),t)}AS(t){const i=t.id();this.wS===i&&this.BS(null),this.gS===t&&this.FS(),this.mS.delete(i)}Gi(){return 0===this.mS.size}m(){this.Vf.unsubscribeCrosshairMove(this.xS),this.kf.removeEventListener("pointerdown",this.CS),this.kf.removeEventListener("pointermove",this.kS),this.kf.removeEventListener("pointerup",this.IS),this.kf.removeEventListener("pointercancel",this.VS),document.removeEventListener("keydown",this.ES),this.mS.clear()}PS(t){if(this.SS=t.point?{ut:t.point.x,ct:t.point.y}:null,this.bg=t.paneIndex,null!==this.gS)return;const i=this.WS(t.hoveredObjectId);this.BS(i?i.id():null),this.OS()}TS(t){const i=null===this.wS?null:this.mS.get(this.wS)??null;i&&(this.MS={ut:t.clientX,ct:t.clientY},this.yS=i,i.isDraggable()&&(this.gS=i,this.bS=t.pointerId,this.kf.setPointerCapture(t.pointerId),i.beginDrag(),this.OS(),t.preventDefault(),t.stopPropagation()))}DS(t){if(null===this.gS)return;if(!this.zS(t))return void this.FS();const i=this.$S(t);null!==i&&this.gS.dragTo(i),t.preventDefault(),t.stopPropagation()}RS(t){const i=this.gS,s=this.yS,n=this.MS;this.HS(),this.yS=null,this.MS=null;const e=null!==n&&(Math.abs(t.clientX-n.ut)>4||Math.abs(t.clientY-n.ct)>4);if(null!==i)return this.gS=null,e?i.commitDrag():(i.cancelDrag(),i.isClickable()&&i.click()),void this.OS();null!==s&&!e&&s.isClickable()&&s.click()}FS(){if(null===this.gS)return;const t=this.gS;this.gS=null,this.HS(),t.cancelDrag(),this.OS()}zS(t){const i=this.kf.getBoundingClientRect();return t.clientX>=i.left&&t.clientX<=i.right&&t.clientY>=i.top&&t.clientY<=i.bottom}HS(){null!==this.bS&&(this.kf.hasPointerCapture(this.bS)&&this.kf.releasePointerCapture(this.bS),this.bS=null)}$S(t){const i=this.gS;if(null===i)return null;if(null!==this.SS&&this.bg===i.paneIndex())return i.priceAt(this.SS.ct);const s=this.Vf.panes()[i.paneIndex()],n=s?s.getHTMLElement():null;return n?i.priceAt(t.clientY-n.getBoundingClientRect().top):null}WS(t){return"string"!=typeof t?null:this.mS.get(t)??null}BS(t){this.wS!==t&&(null!==this.wS&&this.mS.get(this.wS)?.setHovered(!1),this.wS=t,null!==t&&this.mS.get(t)?.setHovered(!0))}OS(){if(null!==this.gS)return void this.Vf.chartElement().style.setProperty("cursor","ns-resize");const t=null===this.wS?null:this.mS.get(this.wS);t?this.Vf.chartElement().style.setProperty("cursor",t.isDraggable()?"ns-resize":"pointer"):this.Vf.chartElement().style.removeProperty("cursor")}}const kr=new WeakMap;let Dr=0;class Ir{constructor(t,i,s){this.sh=null,this.NS=!1,this.US="",this.qS=null,this.Vf=t,this.be=i,this.yo="pipsend-trading-line-"+Dr++,this.Cs={lineWidth:2,lineStyle:0,axisLabelVisible:!0,draggable:!0,hoverColor:"#000000",...s},this.jS(),(this.Cs.draggable||this.Cs.onClick)&&function(t){const i=t.chartElement();if(!i)return null;let s=kr.get(t);return s||(s=new Tr(t,i),kr.set(t,s)),s}(this.Vf)?.LS(this)}id(){return this.yo}paneIndex(){try{return this.be.getPane().paneIndex()}catch(t){return 0}}isDraggable(){return!0===this.Cs.draggable}isClickable(){return void 0!==this.Cs.onClick}setHovered(t){this.NS!==t&&this.sh&&(this.NS=t,this.sh.applyOptions({color:t?this.Cs.hoverColor:this.US}))}priceAt(t){const i=this.be.coordinateToPrice(t);return null===i?null:i}beginDrag(){this.qS=this.Cs.price,this.Cs.onDragStart&&this.Cs.onDragStart(this.Cs.price)}dragTo(t){this.YS(t),this.Cs.onDragMove&&this.Cs.onDragMove(t)}commitDrag(){this.qS=null,this.Cs.onDragEnd&&this.Cs.onDragEnd(this.Cs.price)}cancelDrag(){const t=this.qS;this.qS=null,null!==t&&t!==this.Cs.price&&(this.YS(t),this.Cs.onDragMove&&this.Cs.onDragMove(t))}click(){this.Cs.onClick&&this.Cs.onClick(this.Cs.price)}applyOptions(t){if(this.Cs={...this.Cs,...t},t.color&&(this.US=t.color),!this.sh)return;const i={title:this.KS()};void 0!==t.price&&(i.price=t.price),void 0===t.color||this.NS||(i.color=t.color),void 0!==t.lineWidth&&(i.lineWidth=t.lineWidth),void 0!==t.lineStyle&&(i.lineStyle=t.lineStyle),this.sh.applyOptions(i)}setTitle(t){this.Cs.title=t,this.sh&&this.sh.applyOptions({title:t})}getPrice(){return this.Cs.price}setPrice(t){this.YS(t)}remove(){!function(t,i){const s=kr.get(t);s&&(s.AS(i),s.Gi()&&(s.m(),kr.delete(t)))}(this.Vf,this),this.sh&&(this.be.removePriceLine(this.sh),this.sh=null)}getPriceLine(){return this.sh}KS(){if(this.Cs.formatTitle)try{return this.Cs.formatTitle(this.Cs.price)}catch(t){console.error("Error in formatTitle:",t)}return this.Cs.title||""}jS(){this.US=this.Cs.color,this.sh=this.be.createPriceLine({id:this.yo,price:this.Cs.price,color:this.Cs.color,lineWidth:this.Cs.lineWidth,lineStyle:this.Cs.lineStyle,axisLabelVisible:this.Cs.axisLabelVisible,title:this.KS()})}YS(t){this.Cs.price=t,this.sh&&this.sh.applyOptions({price:t,title:this.KS()})}}function Rr(t,i,s){const n={"stop-loss":{color:"#ef5350",lineStyle:2,title:"Stop Loss",draggable:!0},"take-profit":{color:"#26a69a",lineStyle:2,title:"Take Profit",draggable:!0},entry:{color:"#2196F3",lineStyle:0,title:"Entry",draggable:!0},target:{color:"#FF9800",lineStyle:2,title:"Target",draggable:!0},resistance:{color:"#f44336",lineStyle:0,title:"Resistance",draggable:!0},support:{color:"#4CAF50",lineStyle:0,title:"Support",draggable:!0},custom:{color:"#9E9E9E",lineStyle:0,title:"",draggable:!0}},e=s.type?n[s.type]:n.custom,h={price:s.price,color:s.color??e.color??"#9E9E9E",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??e.lineStyle??0,title:s.title??e.title??"",axisLabelVisible:s.axisLabelVisible??!0,draggable:s.draggable??e.draggable??!0,onDragStart:s.onDragStart,onDragMove:s.onDragMove,onDragEnd:s.onDragEnd,onClick:s.onClick,formatTitle:s.formatTitle};return new Ir(i,t,h)}class Vr{constructor(t,i){this.Rf=null,this.GS=null,this.XS=null,this.ZS={},this.Vf=t,this.be=i,this.JS()}JS(){this.Rf=this.Vf.chartElement()}QS(t){const i=this.be.getPane().getHTMLElement();if(!i)return 0;const s=t.clientY-i.getBoundingClientRect().top,n=this.be.coordinateToPrice(s);return null===n?0:n}enableClickToCreate(t,i){return this.Rf?(this.GS=t,this.ZS=i||{},new Promise(t=>{this.Rf.style.cursor="crosshair",this.XS=i=>{const s=this.QS(i),n=this.tx(s);this.disableClickToCreate(),t(n)},this.Rf.addEventListener("click",this.XS)})):Promise.resolve(null)}disableClickToCreate(){this.Rf&&this.XS&&(this.Rf.removeEventListener("click",this.XS),this.Rf.style.cursor="default"),this.GS=null,this.XS=null,this.ZS={}}tx(t){if(!this.GS)return null;let i;switch(this.GS){case"stop-loss":i={price:t,color:"#ef5350",lineWidth:2,title:"Stop Loss",draggable:!0,...this.ZS};break;case"take-profit":i={price:t,color:"#26a69a",lineWidth:2,title:"Take Profit",draggable:!0,...this.ZS};break;case"entry":i={price:t,color:"#2196F3",lineWidth:2,title:"Entry",draggable:!0,...this.ZS};break;case"target":i={price:t,color:"#FF9800",lineWidth:2,title:"Target",draggable:!0,...this.ZS};break;case"resistance":i={price:t,color:"#f44336",lineWidth:2,title:"Resistance",draggable:!0,...this.ZS};break;case"support":i={price:t,color:"#4CAF50",lineWidth:2,title:"Support",draggable:!0,...this.ZS};break;case"custom":i={price:t,color:"#9E9E9E",lineWidth:2,title:"Custom",draggable:!0,...this.ZS};break;default:return null}return new Ir(this.Vf,this.be,i)}getCreationMode(){return this.GS}isCreating(){return null!==this.GS}}function Fr(t,i){return new Vr(t,i)}const Er=new Set(["line","body","stroke","center","move"]);function Lr(t,i,s){if(null===i)return null;const n=String(i);return{externalId:`${t}#${n}`,zOrder:"normal",cursorStyle:s?Er.has(n)?"move":"grab":void 0}}function Ar(t,i,s){return t?{bt:s-t.price,gt:null===t.time?0:i-t.time}:{bt:0,gt:0}}var Br;function Wr(t){if(null==t)return null;if("number"==typeof t||"string"==typeof t)return t;const i=t,s=i.year??i.my;if(void 0!==s){const t={};return t.year=s,t.month=i.month??i.wy,t.day=i.day??i.gy,t}return t}function Or(t,i){const s={};return s.price=t,s.time=i,s}function zr(t){if(!t)return Or(0,null);return Or(t.price??t.bt??0,Wr(t.time??t.gt??null))}function $r(t,i="time"){return t?t[i]??null:null}function Hr(t,i){if(t)return t[i]??void 0}!function(t){t.Idle="idle",t.Creating="creating",t.Editing="editing",t.Dragging="dragging",t.Hovering="hovering"}(Br||(Br={}));class Nr{constructor(t,i,s={}){this._state=Br.Idle,this._visible=!0,this._locked=!1,this._ownOptions=null,this._chart=t.chart,this._series=t.series,this._type=i,this._id=this.ix(),this._options={color:"#2196F3",lineWidth:2,lineStyle:"solid",visible:!0,locked:!1,zIndex:0,...s},this._visible=this._options.visible??!0,this._locked=this._options.locked??!1}ix(){return`${this._type}_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}get id(){return this._id}get type(){return this._type}_registerOptions(t){this._ownOptions=t}options(){return{...this._ownOptions??this._options}}applyOptions(t){null!==this._ownOptions&&Object.assign(this._ownOptions,t),this._options={...this._options,...t},void 0!==t.visible&&(this._visible=t.visible),void 0!==t.locked&&(this._locked=t.locked),this._update()}show(){this._visible=!0,this._update()}hide(){this._visible=!1,this._update()}lock(){this._locked=!0}unlock(){this._locked=!1}isLocked(){return this._locked}isVisible(){return this._visible}series(){return this._series}getState(){return this._state}serialize(){const t=this._serializeShape();return t.id=this._id,t.visible=this._visible,t.locked=this._locked,t}applySerializedState(t){"string"==typeof t.id&&t.id.length>0&&(this._id=t.id),"boolean"==typeof t.visible&&(this._visible=t.visible),"boolean"==typeof t.locked&&(this._locked=t.locked),this._update()}}const Ur=new WeakMap;function qr(t,i){Ur.set(t,i)}function jr(t){const i=!0===Ur.get(t);return i&&Ur.set(t,!1),i}function Yr(t,i,s,n,e){const h=t.canvas.width/s,r=t.canvas.height/n;if(e.ct<0||e.ct>r)return;let l;try{l=i.priceFormatter().format(e.bt)}catch(t){l=String(e.bt)}t.save(),t.font=11*s+'px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';const o=t.measureText(l).width/s+10,a=h-o,_=e.ct-8.5;t.fillStyle=e.Wt,t.beginPath(),t.rect(a*s,_*n,o*s,17*n),t.fill(),t.fillStyle=e.sx??"#ffffff",t.textAlign="left",t.textBaseline="middle",t.fillText(l,(a+5)*s,e.ct*n),t.restore()}var Kr;!function(t){t.nx="idle",t.hx="waiting_first_point",t.lx="waiting_second_point",t.ox="completed"}(Kr||(Kr={}));class Gr{constructor(t,i,s={}){this.Vv=Kr.nx,this._x=null,this.XS=null,this.sp=null,this.Vf=t,this.be=i,this.ux=s}vx(){this.Vv===Kr.nx&&(this.Vv=Kr.hx,this._x=null,this.mx(),this.wx())}gx(){this.Vv=Kr.nx,this._x=null,this.bx(),this.Mx(),this.ux.yx&&this.ux.yx()}Sx(){return this.Vv}xx(){return this.Vv===Kr.hx||this.Vv===Kr.lx}mx(){this.XS=t=>{this.Px(t)},this.Vf.subscribeClick(this.XS)}wx(){this.sp=t=>{this.Cx(t)},this.Vf.subscribeCrosshairMove(this.sp)}bx(){this.XS&&(this.Vf.unsubscribeClick(this.XS),this.XS=null)}Mx(){this.sp&&(this.Vf.unsubscribeCrosshairMove(this.sp),this.sp=null)}Px(t){if(!t.point)return;if(jr(this.Vf))return;const i=this.be.coordinateToPrice(t.point.y),s=Gn(this.Vf,this.be,t.point.x);if(null===i||null===s)return;const n={gt:s,bt:i};this.Vv===Kr.hx?(this._x=n,this.Vv=Kr.lx,this.ux.Tx&&this.ux.Tx(n)):this.Vv===Kr.lx&&this._x&&(this.Vv=Kr.ox,this.ux.kx&&this.ux.kx(n),this.ux.Dx&&this.ux.Dx(this._x,n),this.bx(),this.Mx(),this.Vv=Kr.nx,this._x=null)}Cx(t){if(!t.point)return;if(this.Vv!==Kr.lx)return;const i=this.be.coordinateToPrice(t.point.y),s=Gn(this.Vf,this.be,t.point.x);if(null===i||null===s)return;const n={gt:s,bt:i};this.ux.Ix&&this.ux.Ix(n)}m(){this.gx()}}class Xr{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Zr{constructor(t){this.Rx=t,this.Jt=new Xr(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Jr extends Nr{constructor(t,i){super(t,"trend-line",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Ax=null,this.Bx=null,this.Wx=null,this.Ox=null,this.zx=!1,this.$x=null,this.Hx={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",extendLeft:!1,extendRight:!1,showPriceLabel:!0,interactive:!1,...i},this._registerOptions(this.Hx),this.Zy(),this.Hx.interactive?this.Nx():this.zx=!0}Nx(){new Gr(this._chart,this._series,{Tx:t=>{this.Hx.point1Time=t.gt,this.Hx.point1Price=t.bt,this.cM()},kx:t=>{this.Hx.point2Time=t.gt,this.Hx.point2Price=t.bt,this.zx=!0,this.cM(),this.Hx.onUpdate&&this.Hx.onUpdate()},Ix:t=>{this.Hx.point1Time&&!this.zx&&(this.$x=t,this.cM())},Dx:()=>{this.zx=!0}}).vx()}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Zr(this)}jx(){if(!this.Hx.point1Time||!this.Hx.point2Time)return null;const t=Xn(this._chart,this._series,this.Hx.point1Time)??0,i=this._series.priceToCoordinate(this.Hx.point1Price)??0,s=Xn(this._chart,this._series,this.Hx.point2Time)??0,n=this._series.priceToCoordinate(this.Hx.point2Price)??0;if(!this.Hx.extendLeft&&!this.Hx.extendRight)return{Yx:t,Kx:i,Gx:s,Xx:n};if(s===t)return{Yx:t,Kx:i,Gx:s,Xx:n};const e=this._chart.chartElement().clientWidth,h=(n-i)/(s-t);return{Yx:this.Hx.extendLeft?0:t,Kx:this.Hx.extendLeft?i-h*t:i,Gx:this.Hx.extendRight?e:s,Xx:this.Hx.extendRight?i+h*(e-t):n}}Zx(){const t=this.jx();if(null===t)return null;const i=t.Gx>=t.Yx?t.Xx:t.Kx,s=this._chart.chartElement().clientHeight;return i>=0&&i<=s?this._series.coordinateToPrice(i):this.Hx.point2Price??this.Hx.point1Price??null}drawToCanvas(t,i,s){if(!this.zx&&this.Hx.point1Time&&this.$x)return void this.Jx(t,i,s);if(!this.Hx.point1Time||!this.Hx.point2Time)return;const n=(Xn(this._chart,this._series,this.Hx.point1Time)??0)*i,e=(this._series.priceToCoordinate(this.Hx.point1Price)??0)*s,h=(Xn(this._chart,this._series,this.Hx.point2Time)??0)*i,r=(this._series.priceToCoordinate(this.Hx.point2Price)??0)*s,l=this.Hx.lineColor,o=this.Fx?this.Hx.lineWidth+1:this.Hx.lineWidth;t.strokeStyle=l,t.lineWidth=o*i,"dashed"===this.Hx.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Hx.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath();const a=this.jx();if(null===a)return;t.moveTo(a.Yx*i,a.Kx*s),t.lineTo(a.Gx*i,a.Xx*s),t.stroke(),t.setLineDash([]),!this.Fx&&!this.Ex||this.isLocked()||(this.Qx(t,n,e,i,l),this.Qx(t,h,r,i,l));const _=this.Zx();if(!1!==this.Hx.showPriceLabel&&null!==_){const n=this._series.priceToCoordinate(_);null!==n&&Yr(t,this._series,i,s,{bt:_,ct:n,Wt:l})}}Jx(t,i,s){if(!this.Hx.point1Time||!this.$x)return;const n=(Xn(this._chart,this._series,this.Hx.point1Time)??0)*i,e=(this._series.priceToCoordinate(this.Hx.point1Price)??0)*s,h=(Xn(this._chart,this._series,this.$x.gt)??0)*i,r=(this._series.priceToCoordinate(this.$x.bt)??0)*s;t.strokeStyle=this.Hx.lineColor,t.lineWidth=this.Hx.lineWidth*i,t.globalAlpha=.7,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,e),t.lineTo(h,r),t.stroke(),t.setLineDash([]),t.globalAlpha=1,this.Qx(t,n,e,i,this.Hx.lineColor),t.globalAlpha=.5,this.Qx(t,h,r,i,this.Hx.lineColor),t.globalAlpha=1}Qx(t,i,s,n,e){const h=5*n;t.fillStyle=e,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),t.stroke()}setColor(t){this.Hx.lineColor=t,this.cM()}color(){return this.Hx.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}isHovered(){return this.Ex}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){const s=this.jx();if(null===s)return!1;return this.tP(t,i,s.Yx,s.Kx,s.Gx,s.Xx)<=8}tP(t,i,s,n,e,h){const r=e-s,l=h-n,o=r*r+l*l;if(0===o)return Math.sqrt((t-s)*(t-s)+(i-n)*(i-n));let a=((t-s)*r+(i-n)*l)/o;a=Math.max(0,Math.min(1,a));const _=s+a*r,u=n+a*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.Hx.point1Time||!this.Hx.point2Time)return null;const s=Xn(this._chart,this._series,this.Hx.point1Time)??0,n=this._series.priceToCoordinate(this.Hx.point1Price)??0,e=Xn(this._chart,this._series,this.Hx.point2Time)??0,h=this._series.priceToCoordinate(this.Hx.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return"point1";if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-h,2))<=10)return"point2";return this.tP(t,i,s,n,e,h)<=10?"line":null}startDrag(t,i){this.Lx=!0,this.Ax=t,this.Bx=i,"line"===t&&(this.Wx={gt:this.Hx.point1Time,bt:this.Hx.point1Price},this.Ox={gt:this.Hx.point2Time,bt:this.Hx.point2Price})}stopDrag(){this.Lx=!1,this.Ax=null,this.Bx=null,this.Wx=null,this.Ox=null}updateDrag(t,i){if(this.Lx&&this.Ax){if("point1"===this.Ax)this.Hx.point1Time=t,this.Hx.point1Price=i;else if("point2"===this.Ax)this.Hx.point2Time=t,this.Hx.point2Price=i;else if("line"===this.Ax&&this.Wx&&this.Ox){const s=Ar(this.Bx,t,i);this.Hx.point1Time=this.Wx.gt+s.gt,this.Hx.point1Price=this.Wx.bt+s.bt,this.Hx.point2Time=this.Ox.gt+s.gt,this.Hx.point2Price=this.Ox.bt+s.bt}this.cM(),this.Hx.onUpdate&&this.Hx.onUpdate()}}isVisible(){return this._visible}_serializeShape(){return{type:"trendLine",points:[Or(this.Hx.point1Price??0,Wr(this.Hx.point1Time)),Or(this.Hx.point2Price??0,Wr(this.Hx.point2Time))],style:{lineColor:this.Hx.lineColor,lineWidth:this.Hx.lineWidth,lineStyle:this.Hx.lineStyle,extendLeft:this.Hx.extendLeft,extendRight:this.Hx.extendRight}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Hx.onRemove&&this.Hx.onRemove()}}function Qr(t,i){return new Jr(t,i)}class tl{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class il{constructor(t){this.Rx=t,this.Jt=new tl(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class sl extends Nr{constructor(t,i){super(t,"horizontal-line",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Bx=null,this.iP=0,this.sP={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",showLabel:!0,showPriceLabel:!0,labelText:"",interactive:!1,...i},this._registerOptions(this.sP),this.Zy()}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new il(this)}nP(){return void 0===this.sP.startTime?0:Xn(this._chart,this._series,this.sP.startTime)??0}drawToCanvas(t,i,s){if(void 0===this.sP.price)return;const n=(this._series.priceToCoordinate(this.sP.price)??0)*s,e=this._chart.chartElement().clientWidth*i,h=this.nP()*i,r=this.sP.lineColor,l=this.Fx?this.sP.lineWidth+1:this.sP.lineWidth;t.strokeStyle=r,t.lineWidth=l*i,"dashed"===this.sP.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.sP.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(h,n),t.lineTo(e,n),t.stroke(),t.setLineDash([]),!1!==this.sP.showPriceLabel&&Yr(t,this._series,i,s,{bt:this.sP.price,ct:n/s,Wt:r}),this.sP.showLabel&&(this.Fx||this.Ex)&&this.eP(t,n,i,s,r)}eP(t,i,s,n,e){const h=this.sP.labelText||this.sP.price.toFixed(4),r=6*s,l=12*s;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const o=t.measureText(h).width,a=l,_=10*s,u=i-a/2-r;t.fillStyle=e,t.fillRect(_,u,o+2*r,a+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(h,_+r,u+r)}setColor(t){this.sP.lineColor=t,this.cM()}color(){return this.sP.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(void 0===this.sP.price)return!1;const s=this._series.priceToCoordinate(this.sP.price)??0;return!(t<this.nP()-8)&&Math.abs(i-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.Lx=!0,this.Bx=i,this.iP=this.sP.price??0}stopDrag(){this.Lx=!1,this.Bx=null}updateDrag(t,i){this.Lx&&(this.sP.price=this.iP+Ar(this.Bx,t,i).bt,this.cM(),this.sP.onUpdate&&this.sP.onUpdate())}getPrice(){return this.sP.price}setPrice(t){this.sP.price=t,this.cM()}setLabel(t){this.sP.labelText=t,this.cM()}isVisible(){return this._visible}_serializeShape(){return{type:"horizontalLine",points:[Or(this.sP.price??0,Wr(this.sP.startTime))],style:{lineColor:this.sP.lineColor,lineWidth:this.sP.lineWidth,lineStyle:this.sP.lineStyle,showLabel:this.sP.showLabel,labelText:this.sP.labelText}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.sP.onRemove&&this.sP.onRemove()}}function nl(t,i){return new sl(t,i)}class el{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class hl{constructor(t){this.Rx=t,this.Jt=new el(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class rl extends Nr{constructor(t,i){super(t,"cross-line",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Bx=null,this.hP=0,this.iP=0,this.rP={lineColor:"#787b86",lineWidth:1,lineStyle:"dashed",showPriceLabel:!0,...i},this._registerOptions(this.rP),this.Zy()}Zy(){this.nr=new hl(this);const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Vx&&this.Vx()}_update(){this.cM()}lP(){if(void 0===this.rP.time||void 0===this.rP.price)return null;const t=Xn(this._chart,this._series,this.rP.time),i=this._series.priceToCoordinate(this.rP.price);return null===t||null===i?null:{ut:t,ct:i}}drawToCanvas(t,i,s){const n=this.lP();if(null===n)return;const e=this._chart.chartElement(),h=e.clientWidth*i,r=e.clientHeight*s,l=n.ut*i,o=n.ct*s,a=this.rP.lineColor,_=this.Fx||this.Ex&&!this.isLocked(),u=_?this.rP.lineWidth+1:this.rP.lineWidth;t.strokeStyle=a,t.lineWidth=u*i,"dashed"===this.rP.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.rP.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(0,o),t.lineTo(h,o),t.moveTo(l,0),t.lineTo(l,r),t.stroke(),t.setLineDash([]),!1!==this.rP.showPriceLabel&&void 0!==this.rP.price&&Yr(t,this._series,i,s,{bt:this.rP.price,ct:n.ct,Wt:a}),_&&!this.isLocked()&&(t.fillStyle=a,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.beginPath(),t.arc(l,o,5*i,0,2*Math.PI),t.fill(),t.stroke())}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){const s=this.lP();if(null===s)return!1;return Math.abs(i-s.ct)<=8||Math.abs(t-s.ut)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.Lx=!0,this.Bx=i,this.hP=this.rP.time,this.iP=this.rP.price??0}updateDrag(t,i){if(!this.Lx)return;const s=Ar(this.Bx,t,i);this.rP.time=this.hP+s.gt,this.rP.price=this.iP+s.bt,this.cM(),this.rP.onUpdate&&this.rP.onUpdate()}stopDrag(){this.Lx=!1,this.Bx=null}setColor(t){this.rP.lineColor=t,this.cM()}color(){return this.rP.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}remove(){if(this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Vx=null,this.rP.onRemove&&this.rP.onRemove()}_serializeShape(){return{type:"crossLine",points:[Or(this.rP.price??0,Wr(this.rP.time))],style:{lineColor:this.rP.lineColor,lineWidth:this.rP.lineWidth,lineStyle:this.rP.lineStyle}}}}function ll(t,i){return new rl(t,i)}class ol{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class al{constructor(t){this.Rx=t,this.Jt=new ol(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class _l extends Nr{constructor(t,i){super(t,"polygon",i),this.R_=[],this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Ax=null,this.Bx=null,this.oP=null,this.zx=!1,this.$x=null,this.XS=null,this.aP=null,this._P=null,this.uP={fillColor:"#2962FF",fillOpacity:.15,borderColor:"#2962FF",borderWidth:2,borderStyle:"solid",interactive:!1,...i},this._registerOptions(this.uP),this.R_=[...i.points??[]],this.Zy(),this.uP.interactive?this.cP():this.zx=this.R_.length>=3}Zy(){this.nr=new al(this);const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Vx&&this.Vx()}_update(){this.cM()}cP(){this.XS=t=>{if(!t.point||jr(this._chart))return;const i=this._series.coordinateToPrice(t.point.y),s=Gn(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.R_.length>=3&&this.dP(t.point.x,t.point.y)?this.pP():(this.R_.push({time:s,price:i}),this.cM()))},this.aP=t=>{if(!t.point||this.zx)return;const i=this._series.coordinateToPrice(t.point.y),s=Gn(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.$x={time:s,price:i},this.cM())},this._P=t=>{"Enter"===t.key&&this.R_.length>=3?this.pP():"Escape"===t.key&&(this.R_=[],this.pP())},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.aP),document.addEventListener("keydown",this._P)}dP(t,i){const s=this.R_[0],n=Xn(this._chart,this._series,s.time),e=this._series.priceToCoordinate(s.price);return null!==n&&null!==e&&(Math.abs(t-n)<=_l.fP&&Math.abs(i-e)<=_l.fP)}pP(){this.zx=!0,this.$x=null,this.vP(),this.cM(),this.uP.onComplete&&this.uP.onComplete(),this.uP.onUpdate&&this.uP.onUpdate()}vP(){this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.aP&&(this._chart.unsubscribeCrosshairMove(this.aP),this.aP=null),this._P&&(document.removeEventListener("keydown",this._P),this._P=null)}mP(){const t=[...this.R_];return this.zx||null===this.$x||t.push(this.$x),this.wP(t)}wP(t){const i=[];for(const s of t){const t=Xn(this._chart,this._series,s.time),n=this._series.priceToCoordinate(s.price);null!==t&&null!==n&&i.push({ut:t,ct:n})}return i}drawToCanvas(t,i,s){const n=this.mP();if(n.length<2)return;const e=this.uP.borderColor,h=this.Fx?this.uP.borderWidth+1:this.uP.borderWidth;t.beginPath(),t.moveTo(n[0].ut*i,n[0].ct*s);for(let e=1;e<n.length;e++)t.lineTo(n[e].ut*i,n[e].ct*s);this.zx&&(t.closePath(),this.uP.fillOpacity>0&&(t.fillStyle=this.Py(this.uP.fillColor,this.uP.fillOpacity),t.fill())),t.strokeStyle=e,t.lineWidth=h*i,this.zx?"dashed"===this.uP.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.uP.borderStyle&&t.setLineDash([2*i,3*i]):t.setLineDash([6*i,4*i]),t.stroke(),t.setLineDash([]);if((this.Fx||this.Ex||!this.zx)&&!this.isLocked())for(const n of this.gP())this.bP(t,n.ut*i,n.ct*s,i,e)}gP(){return this.wP(this.R_)}bP(t,i,s,n,e){t.fillStyle=e,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.beginPath(),t.arc(i,s,5*n,0,2*Math.PI),t.fill(),t.stroke()}Py(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}qx(t,i){if(!this.isVisible()||!this.zx)return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,`corner-${s}`,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){const s=this.gP();if(s.length<3)return!1;let n=!1;for(let e=0,h=s.length-1;e<s.length;h=e++){s[e].ct>i!=s[h].ct>i&&t<(s[h].ut-s[e].ut)*(i-s[e].ct)/(s[h].ct-s[e].ct)+s[e].ut&&(n=!n)}return n}hitTestEndpoint(t,i){const s=this.gP();for(let n=0;n<s.length;n++)if(Math.abs(t-s[n].ut)<=10&&Math.abs(i-s[n].ct)<=10)return n;return null}startDrag(t,i){this.Lx=!0,this.Ax=t,this.Bx=i,this.oP=this.R_.map(t=>({gt:t.time,bt:t.price}))}updateDrag(t,i){if(this.Lx&&null!==this.Ax&&null!==this.oP){if("shape"===this.Ax){const s=Ar(this.Bx,t,i);this.R_=this.oP.map(t=>({gt:t.time+s.gt,bt:t.price+s.bt}))}else{const s=this.Ax;this.R_[s]&&(this.R_[s]={time:t,price:i})}this.cM(),this.uP.onUpdate&&this.uP.onUpdate()}}stopDrag(){this.Lx=!1,this.Ax=null,this.Bx=null,this.oP=null}setColor(t){this.uP.borderColor=t,this.uP.fillColor=t,this.cM()}color(){return this.uP.borderColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}points(){return this.R_}remove(){if(this.vP(),this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Vx=null,this.uP.onRemove&&this.uP.onRemove()}_serializeShape(){return{type:"polygon",points:this.R_.map(t=>Or(t.price,Wr(t.time))),style:{fillColor:this.uP.fillColor,fillOpacity:this.uP.fillOpacity,borderColor:this.uP.borderColor,borderWidth:this.uP.borderWidth,borderStyle:this.uP.borderStyle}}}}function ul(t,i){return new _l(t,i)}_l.fP=12;class cl{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class dl{constructor(t){this.Rx=t,this.Jt=new cl(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class pl extends Nr{constructor(t,i){super(t,"parallel-channel",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Ax=null,this.Bx=null,this.MP=null,this.zx=!1,this._d=0,this.$x=null,this.XS=null,this.aP=null,this.yP={lineColor:"#2962FF",lineWidth:2,lineStyle:"solid",fillColor:"#2962FF",fillOpacity:.1,channelWidth:0,extendRight:!1,showPriceLabel:!0,interactive:!1,...i},this._registerOptions(this.yP),this.Zy(),this.yP.interactive?this.cP():this.zx=!0}Zy(){this.nr=new dl(this);const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Vx&&this.Vx()}_update(){this.cM()}cP(){this.XS=t=>{if(!t.point||jr(this._chart))return;const i=this._series.coordinateToPrice(t.point.y),s=Gn(this._chart,this._series,t.point.x);if(null!==i&&null!==s){if(0===this._d)this.yP.point1Time=s,this.yP.point1Price=i;else{if(1!==this._d)return this.yP.channelWidth=i-this.SP(s),void this.pP();this.yP.point2Time=s,this.yP.point2Price=i}this._d++,this.cM()}},this.aP=t=>{if(!t.point||this.zx)return;const i=this._series.coordinateToPrice(t.point.y),s=Gn(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.$x={gt:s,bt:i},2===this._d&&(this.yP.channelWidth=i-this.SP(s)),this.cM())},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.aP)}pP(){this.zx=!0,this.$x=null,this.vP(),this.cM(),this.yP.onComplete&&this.yP.onComplete(),this.yP.onUpdate&&this.yP.onUpdate()}vP(){this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.aP&&(this._chart.unsubscribeCrosshairMove(this.aP),this.aP=null)}SP(t){const i=this.yP.point1Time,s=this.yP.point2Time,n=this.yP.point1Price,e=this.yP.point2Price;if(void 0===i||void 0===n)return 0;if(void 0===s||void 0===e||s===i)return n;return n+(e-n)/(s-i)*(t-i)}mS(){const t=this.yP,i=this.zx?t.point2Time:t.point2Time??this.$x?.gt,s=this.zx?t.point2Price:t.point2Price??this.$x?.bt;if(void 0===t.point1Time||void 0===t.point1Price||void 0===i||void 0===s)return null;const n=Xn(this._chart,this._series,t.point1Time),e=Xn(this._chart,this._series,i),h=this._series.priceToCoordinate(t.point1Price),r=this._series.priceToCoordinate(s);if(null===n||null===e||null===h||null===r)return null;let l=e,o=r;if(t.extendRight&&l!==n){const t=this._chart.chartElement().clientWidth;l=t,o=h+(r-h)/(e-n)*(t-n)}const a=t.channelWidth??0,_=this._series.priceToCoordinate(t.point1Price+a),u=this._series.priceToCoordinate(this._series.coordinateToPrice(o)+a);return null===_||null===u?null:{Yx:n,Gx:l,xP:h,PP:o,CP:_,TP:u}}drawToCanvas(t,i,s){const n=this.mS();if(null===n)return;const e=this.yP,h=e.lineColor,r=this.Fx?e.lineWidth+1:e.lineWidth,l=i,o=s;e.fillOpacity>0&&0!==(e.channelWidth??0)&&(t.fillStyle=this.Py(e.fillColor,e.fillOpacity),t.beginPath(),t.moveTo(n.Yx*l,n.xP*o),t.lineTo(n.Gx*l,n.PP*o),t.lineTo(n.Gx*l,n.TP*o),t.lineTo(n.Yx*l,n.CP*o),t.closePath(),t.fill()),t.strokeStyle=h,t.lineWidth=r*l,this.zx?"dashed"===e.lineStyle?t.setLineDash([10*l,5*l]):"dotted"===e.lineStyle&&t.setLineDash([2*l,3*l]):t.setLineDash([6*l,4*l]),t.beginPath(),t.moveTo(n.Yx*l,n.xP*o),t.lineTo(n.Gx*l,n.PP*o),0!==(e.channelWidth??0)&&(t.moveTo(n.Yx*l,n.CP*o),t.lineTo(n.Gx*l,n.TP*o)),t.stroke(),t.setLineDash([]);if((this.Fx||this.Ex||!this.zx)&&!this.isLocked()&&(this.bP(t,n.Yx*l,n.xP*o,l,h),this.bP(t,n.Gx*l,n.PP*o,l,h),0!==(e.channelWidth??0))){const i=(n.Yx+n.Gx)/2,s=(n.CP+n.TP)/2;this.bP(t,i*l,s*o,l,h)}if(!1!==e.showPriceLabel&&this.zx){const i=this._series.coordinateToPrice(n.PP);null!==i&&Yr(t,this._series,l,o,{bt:i,ct:n.PP,Wt:h})}}bP(t,i,s,n,e){t.fillStyle=e,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.beginPath(),t.arc(i,s,5*n,0,2*Math.PI),t.fill(),t.stroke()}Py(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}qx(t,i){if(!this.isVisible()||!this.zx)return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}kP(t,i,s,n,e,h){const r=e-s,l=h-n,o=r*r+l*l;if(0===o)return Math.hypot(t-s,i-n);let a=((t-s)*r+(i-n)*l)/o;return a=Math.max(0,Math.min(1,a)),Math.hypot(t-(s+a*r),i-(n+a*l))}hitTest(t,i){const s=this.mS();if(null===s)return!1;return this.kP(t,i,s.Yx,s.xP,s.Gx,s.PP)<=8||this.kP(t,i,s.Yx,s.CP,s.Gx,s.TP)<=8}hitTestEndpoint(t,i){const s=this.mS();if(null===s)return null;const n=(s,n)=>Math.abs(t-s)<=10&&Math.abs(i-n)<=10;if(n(s.Yx,s.xP))return"point1";if(n(s.Gx,s.PP))return"point2";if(0!==(this.yP.channelWidth??0)){if(n((s.Yx+s.Gx)/2,(s.CP+s.TP)/2))return"width"}return null}startDrag(t,i){this.Lx=!0,this.Ax=t,this.Bx=i,this.MP={DP:{gt:this.yP.point1Time,bt:this.yP.point1Price},IP:{gt:this.yP.point2Time,bt:this.yP.point2Price},ts:this.yP.channelWidth??0}}updateDrag(t,i){if(!this.Lx||null===this.Ax||null===this.MP)return;const s=this.yP;if("point1"===this.Ax)s.point1Time=t,s.point1Price=i;else if("point2"===this.Ax)s.point2Time=t,s.point2Price=i;else if("width"===this.Ax)s.channelWidth=i-this.SP(t);else{const n=Ar(this.Bx,t,i);s.point1Time=this.MP.DP.gt+n.gt,s.point1Price=this.MP.DP.bt+n.bt,s.point2Time=this.MP.IP.gt+n.gt,s.point2Price=this.MP.IP.bt+n.bt,s.channelWidth=this.MP.ts}this.cM(),s.onUpdate&&s.onUpdate()}stopDrag(){this.Lx=!1,this.Ax=null,this.Bx=null,this.MP=null}setColor(t){this.yP.lineColor=t,this.yP.fillColor=t,this.cM()}color(){return this.yP.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}remove(){if(this.vP(),this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Vx=null,this.yP.onRemove&&this.yP.onRemove()}_serializeShape(){return{type:"parallelChannel",points:[Or(this.yP.point1Price??0,Wr(this.yP.point1Time)),Or(this.yP.point2Price??0,Wr(this.yP.point2Time))],style:{lineColor:this.yP.lineColor,lineWidth:this.yP.lineWidth,lineStyle:this.yP.lineStyle,fillColor:this.yP.fillColor,fillOpacity:this.yP.fillOpacity,extendRight:this.yP.extendRight},extra:{channelWidth:this.yP.channelWidth}}}}function fl(t,i){return new pl(t,i)}class vl{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ml{constructor(t){this.Rx=t,this.Jt=new vl(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class wl extends Nr{constructor(t,i){super(t,"pitchfork",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Ax=null,this.Bx=null,this.MP=null,this.zx=!1,this._d=0,this.$x=null,this.XS=null,this.aP=null,this.RP={lineColor:"#9C27B0",lineWidth:2,lineStyle:"solid",fillColor:"#9C27B0",fillOpacity:.08,interactive:!1,...i},this._registerOptions(this.RP),this.Zy(),this.RP.interactive?this.cP():this.zx=!0}Zy(){this.nr=new ml(this);const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}cM(){this.Vx&&this.Vx()}_update(){this.cM()}cP(){this.XS=t=>{if(!t.point||jr(this._chart))return;const i=this._series.coordinateToPrice(t.point.y),s=Gn(this._chart,this._series,t.point.x);if(null!==i&&null!==s){if(0===this._d)this.RP.pivotTime=s,this.RP.pivotPrice=i;else{if(1!==this._d)return this.RP.lowerTime=s,this.RP.lowerPrice=i,this._d++,void this.pP();this.RP.upperTime=s,this.RP.upperPrice=i}this._d++,this.cM()}},this.aP=t=>{if(!t.point||this.zx)return;const i=this._series.coordinateToPrice(t.point.y),s=Gn(this._chart,this._series,t.point.x);null!==i&&null!==s&&(this.$x={gt:s,bt:i},this.cM())},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.aP)}pP(){this.zx=!0,this.$x=null,this.vP(),this.cM(),this.RP.onComplete&&this.RP.onComplete(),this.RP.onUpdate&&this.RP.onUpdate()}vP(){this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.aP&&(this._chart.unsubscribeCrosshairMove(this.aP),this.aP=null)}VP(t,i){if(void 0===t||void 0===i)return null;const s=Xn(this._chart,this._series,t),n=this._series.priceToCoordinate(i);return null===s||null===n?null:{ut:s,ct:n}}FP(){const t=this.RP,i=this.VP(t.pivotTime,t.pivotPrice),s=this.VP(t.upperTime,t.upperPrice),n=this.zx?this.VP(t.lowerTime,t.lowerPrice):this.VP(t.lowerTime,t.lowerPrice)??(null!==this.$x&&this._d>=2?this.VP(this.$x.gt,this.$x.bt):null);if(null===i||null===s||null===n)return null;const e={ut:(s.ut+n.ut)/2,ct:(s.ct+n.ct)/2};if(e.ut===i.ut)return null;const h=this._chart.chartElement().clientWidth,r=(e.ct-i.ct)/(e.ut-i.ut),l=t=>({ut:h,ct:t.ct+r*(h-t.ut)});return{Ry:i,EP:e,uy:s,vy:n,LP:l(i),AP:l(s),BP:l(n)}}drawToCanvas(t,i,s){const n=this.FP();if(null===n)return void this.WP(t,i,s);const e=this.RP,h=e.lineColor,r=i,l=s;e.fillOpacity>0&&(t.fillStyle=this.Py(e.fillColor,e.fillOpacity),t.beginPath(),t.moveTo(n.uy.ut*r,n.uy.ct*l),t.lineTo(n.AP.ut*r,n.AP.ct*l),t.lineTo(n.BP.ut*r,n.BP.ct*l),t.lineTo(n.vy.ut*r,n.vy.ct*l),t.closePath(),t.fill()),t.strokeStyle=h,t.lineWidth=(this.Fx?e.lineWidth+1:e.lineWidth)*r,"dashed"===e.lineStyle?t.setLineDash([10*r,5*r]):"dotted"===e.lineStyle&&t.setLineDash([2*r,3*r]),t.beginPath(),t.moveTo(n.uy.ut*r,n.uy.ct*l),t.lineTo(n.vy.ut*r,n.vy.ct*l),t.moveTo(n.Ry.ut*r,n.Ry.ct*l),t.lineTo(n.LP.ut*r,n.LP.ct*l),t.moveTo(n.uy.ut*r,n.uy.ct*l),t.lineTo(n.AP.ut*r,n.AP.ct*l),t.moveTo(n.vy.ut*r,n.vy.ct*l),t.lineTo(n.BP.ut*r,n.BP.ct*l),t.stroke(),t.setLineDash([]);if((this.Fx||this.Ex||!this.zx)&&!this.isLocked())for(const i of[n.Ry,n.uy,n.vy])this.bP(t,i.ut*r,i.ct*l,r,h)}WP(t,i,s){const n=this.RP,e=this.VP(n.pivotTime,n.pivotPrice);if(null===e)return;const h=this.VP(n.upperTime,n.upperPrice)??(null!==this.$x?this.VP(this.$x.gt,this.$x.bt):null),r=n.lineColor;t.strokeStyle=r,t.lineWidth=n.lineWidth*i,t.setLineDash([6*i,4*i]),null!==h&&(t.beginPath(),t.moveTo(e.ut*i,e.ct*s),t.lineTo(h.ut*i,h.ct*s),t.stroke()),t.setLineDash([]),this.bP(t,e.ut*i,e.ct*s,i,r)}bP(t,i,s,n,e){t.fillStyle=e,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.beginPath(),t.arc(i,s,5*n,0,2*Math.PI),t.fill(),t.stroke()}Py(t,i){return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}qx(t,i){if(!this.isVisible()||!this.zx)return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}kP(t,i,s,n,e,h){const r=e-s,l=h-n,o=r*r+l*l;if(0===o)return Math.hypot(t-s,i-n);let a=((t-s)*r+(i-n)*l)/o;return a=Math.max(0,Math.min(1,a)),Math.hypot(t-(s+a*r),i-(n+a*l))}hitTest(t,i){const s=this.FP();if(null===s)return!1;return[[s.Ry,s.LP],[s.uy,s.AP],[s.vy,s.BP],[s.uy,s.vy]].some(([s,n])=>this.kP(t,i,s.ut,s.ct,n.ut,n.ct)<=8)}hitTestEndpoint(t,i){const s=this.FP();if(null===s)return null;const n=s=>Math.abs(t-s.ut)<=10&&Math.abs(i-s.ct)<=10;return n(s.Ry)?"pivot":n(s.uy)?"upper":n(s.vy)?"lower":null}startDrag(t,i){this.Lx=!0,this.Ax=t,this.Bx=i,this.MP=[{gt:this.RP.pivotTime,bt:this.RP.pivotPrice},{gt:this.RP.upperTime,bt:this.RP.upperPrice},{gt:this.RP.lowerTime,bt:this.RP.lowerPrice}]}updateDrag(t,i){if(!this.Lx||null===this.Ax||null===this.MP)return;const s=this.RP;if("pivot"===this.Ax)s.pivotTime=t,s.pivotPrice=i;else if("upper"===this.Ax)s.upperTime=t,s.upperPrice=i;else if("lower"===this.Ax)s.lowerTime=t,s.lowerPrice=i;else{const n=Ar(this.Bx,t,i),[e,h,r]=this.MP;s.pivotTime=e.gt+n.gt,s.pivotPrice=e.bt+n.bt,s.upperTime=h.gt+n.gt,s.upperPrice=h.bt+n.bt,s.lowerTime=r.gt+n.gt,s.lowerPrice=r.bt+n.bt}this.cM(),s.onUpdate&&s.onUpdate()}stopDrag(){this.Lx=!1,this.Ax=null,this.Bx=null,this.MP=null}setColor(t){this.RP.lineColor=t,this.RP.fillColor=t,this.cM()}color(){return this.RP.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}remove(){if(this.vP(),this.Ub){try{this._series.detachPrimitive(this.Ub)}catch(t){}this.Ub=null}this.Vx=null,this.RP.onRemove&&this.RP.onRemove()}_serializeShape(){return{type:"pitchfork",points:[Or(this.RP.pivotPrice??0,Wr(this.RP.pivotTime)),Or(this.RP.upperPrice??0,Wr(this.RP.upperTime)),Or(this.RP.lowerPrice??0,Wr(this.RP.lowerTime))],style:{lineColor:this.RP.lineColor,lineWidth:this.RP.lineWidth,lineStyle:this.RP.lineStyle,fillColor:this.RP.fillColor,fillOpacity:this.RP.fillOpacity}}}}function gl(t,i){return new wl(t,i)}class bl{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Ml{constructor(t){this.Rx=t,this.Jt=new bl(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class yl extends Nr{constructor(t,i){super(t,"vertical-line",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Bx=null,this.hP=0,this.OP={lineColor:"#787b86",lineWidth:1,lineStyle:"dashed",showLabel:!0,labelText:"",interactive:!1,...i},this._registerOptions(this.OP),this.Zy()}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Ml(this)}drawToCanvas(t,i,s){if(void 0===this.OP.time)return;const n=(Xn(this._chart,this._series,this.OP.time)??0)*i,e=this._chart.chartElement().clientHeight*s,h=this.OP.lineColor,r=this.Fx||this.Ex&&!this.isLocked()?this.OP.lineWidth+1:this.OP.lineWidth;t.strokeStyle=h,t.lineWidth=r*i,"dashed"===this.OP.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.OP.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(n,0),t.lineTo(n,e),t.stroke(),t.setLineDash([]),this.OP.showLabel&&(this.Fx||this.Ex)&&this.OP.labelText&&this.eP(t,n,i,s,h)}eP(t,i,s,n,e){const h=this.OP.labelText,r=6*s,l=12*s;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const o=t.measureText(h).width,a=l,_=i-o/2-r,u=10*n;t.fillStyle=e,t.fillRect(_,u,o+2*r,a+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(h,_+r,u+r)}setColor(t){this.OP.lineColor=t,this.cM()}color(){return this.OP.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(void 0===this.OP.time)return!1;const s=Xn(this._chart,this._series,this.OP.time)??0;return Math.abs(t-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.Lx=!0,this.Bx=i,this.hP=this.OP.time}stopDrag(){this.Lx=!1,this.Bx=null}updateDrag(t,i){this.Lx&&(this.OP.time=this.hP+Ar(this.Bx,t,i).gt,this.cM(),this.OP.onUpdate&&this.OP.onUpdate())}getTime(){return this.OP.time}setTime(t){this.OP.time=t,this.cM()}setLabel(t){this.OP.labelText=t,this.cM()}isVisible(){return this._visible}_serializeShape(){return{type:"verticalLine",points:[Or(0,Wr(this.OP.time))],style:{lineColor:this.OP.lineColor,lineWidth:this.OP.lineWidth,lineStyle:this.OP.lineStyle,showLabel:this.OP.showLabel,labelText:this.OP.labelText}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.OP.onRemove&&this.OP.onRemove()}}function Sl(t,i){return new yl(t,i)}const xl=[{zP:0,Zl:"0.0%"},{zP:.236,Zl:"23.6%"},{zP:.382,Zl:"38.2%"},{zP:.5,Zl:"50.0%"},{zP:.618,Zl:"61.8%"},{zP:.786,Zl:"78.6%"},{zP:1,Zl:"100.0%"}],Pl=[...xl,{zP:1.272,Zl:"127.2%"},{zP:1.414,Zl:"141.4%"},{zP:1.618,Zl:"161.8%"},{zP:2,Zl:"200.0%"},{zP:2.618,Zl:"261.8%"}];class Cl{constructor(t=!1){this.$P=t?Pl:xl}calculateLevels(t,i,s,n){const e=Math.abs(n-i),h=e/i*100,r=n>i,l=this.$P.map(({zP:t,Zl:i})=>{let s;return s=r?n-e*t:n+e*t,{zP:t,bt:s,Zl:i}});return{point1:{time:t,price:i},point2:{time:s,price:n},priceRange:e,priceRangePercent:h,levels:l,isUptrend:r}}getPriceAtRatio(t,i,s){const n=Math.abs(i-t);return i>t?i-n*s:i+n*s}formatPrice(t,i=5){return t.toFixed(i)}formatLevel(t,i=5){return`${t.label} (${this.formatPrice(t.price,i)})`}updateRatios(t){this.$P=t}getRatios(){return[...this.$P]}getRatioValues(){return this.$P.map(t=>t.zP)}useStandardRatios(){this.$P=xl}useExtendedRatios(){this.$P=Pl}}class Tl{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class kl{constructor(t){this.Rx=t,this.Jt=new Tl(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}}function Dl(t){return{zP:t,Zl:`${(100*t).toFixed(1)}%`}}class Il extends Nr{constructor(t,i){super(t,"fibonacci-tool",i),this.Ub=null,this.Vx=null,this.Yb=null,this.nr=null,this.HP=null,this.zx=!1,this.Fx=!1,this.Ex=!1,this.$x=null,this.Lx=!1,this.NP=null,this.sp=null,this.UP={lineColor:"#787b86",lineWidth:1,showLabels:!0,labelPosition:"right",useExtended:!1,levelColors:{0:"#787b86",.236:"#f23645",.382:"#ff9800",.5:"#2196f3",.618:"#4caf50",.786:"#9c27b0",1:"#787b86"},...i},this._registerOptions(this.UP),this.qP=new Cl(this.UP.useExtended),void 0!==this.UP.levels&&this.UP.levels.length>0&&this.qP.updateRatios(this.UP.levels.map(Dl)),this.Zy(),this.UP.interactive?this.Nx():(this.zx=!0,this.jP())}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new kl(this)}drawToCanvas(t,i,s){if(!this.zx&&this.UP.point1Time&&this.$x)return void this.Jx(t,i,s);if(!this.Yb||!this.UP.point1Time||!this.UP.point2Time)return;const n=(Xn(this._chart,this._series,this.UP.point1Time)??0)*i,e=(Xn(this._chart,this._series,this.UP.point2Time)??0)*i,h=Math.min(n,e),r=Math.max(n,e),l=this.Fx?2:this.UP.lineWidth;this.Yb.levels.forEach(n=>{this.YP(t,n,h,r,i,s,l)}),!this.Fx&&!this.Ex||this.isLocked()||(this.Qx(t,n,(this._series.priceToCoordinate(this.UP.point1Price)??0)*s,i),this.Qx(t,e,(this._series.priceToCoordinate(this.UP.point2Price)??0)*s,i))}YP(t,i,s,n,e,h,r=1){const l=i.ratio??i.zP,o=i.price??i.bt;if(void 0===l||void 0===o)return;const a=(this._series.priceToCoordinate(o)??0)*h;let _=this.UP.levelColors?.[l.toString()]||this.UP.lineColor;t.strokeStyle=_,t.lineWidth=r*e,t.beginPath(),t.moveTo(s,a),t.lineTo(n,a),t.stroke(),this.UP.showLabels&&this.eP(t,i,s,n,a,e,_)}eP(t,i,s,n,e,h,r){const l=i.label??i.Zl,o=i.price??i.bt,a=`${l} ${this.qP.formatPrice(o)}`;t.font=11*h+"px sans-serif";const _=t.measureText(a),u=4*h,c="right"===this.UP.labelPosition?n+u:s-_.width-u,d=e;t.fillStyle="rgba(255, 255, 255, 0.9)",t.fillRect(c-u/2,d-11*h/2-u/2,_.width+u,11*h+u),t.fillStyle=r,t.textAlign="right"===this.UP.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(a,c,d)}jP(){this.UP.point1Time&&this.UP.point1Price&&this.UP.point2Time&&this.UP.point2Price&&(this.Yb=this.qP.calculateLevels(this.UP.point1Time,this.UP.point1Price,this.UP.point2Time,this.UP.point2Price),this.UP.onUpdate&&this.Yb&&this.UP.onUpdate(this.Yb))}updatePoints(t,i,s,n){this.UP.point1Time=t,this.UP.point1Price=i,this.UP.point2Time=s,this.UP.point2Price=n,this.jP(),this.cM()}getMetrics(){return this.Yb}getLevels(){return this.Yb?.levels||[]}isVisible(){return this._visible}_serializeShape(){const t=this.qP.getRatioValues();return{type:"fibRetracement",points:[Or(this.UP.point1Price??0,Wr(this.UP.point1Time)),Or(this.UP.point2Price??0,Wr(this.UP.point2Time))],style:{lineColor:this.UP.lineColor,lineWidth:this.UP.lineWidth,showLabels:this.UP.showLabels,labelPosition:this.UP.labelPosition,levelColors:this.UP.levelColors},extra:{levels:t,useExtended:this.UP.useExtended}}}useExtendedLevels(t){this.UP.useExtended=t,t?this.qP.useExtendedRatios():this.qP.useStandardRatios(),this.jP(),this.cM()}Nx(){this.HP=new Gr(this._chart,this._series,{Tx:t=>{this.UP.point1Time=t.gt,this.UP.point1Price=t.bt,this.cM()},kx:t=>{this.UP.point2Time=t.gt,this.UP.point2Price=t.bt},Dx:(t,i)=>{this.UP.point1Time=t.gt,this.UP.point1Price=t.bt,this.UP.point2Time=i.gt,this.UP.point2Price=i.bt,this.zx=!0,this.$x=null,this.jP(),this.KP(),this.cM()},Ix:t=>{this.$x=t,this.cM()}}),this.HP.vx()}Jx(t,i,s){if(!this.UP.point1Time||!this.$x)return;const n=(Xn(this._chart,this._series,this.UP.point1Time)??0)*i,e=(this._series.priceToCoordinate(this.UP.point1Price)??0)*s,h=(Xn(this._chart,this._series,this.$x.gt)??0)*i,r=(this._series.priceToCoordinate(this.$x.bt)??0)*s,l=this.qP.calculateLevels(this.UP.point1Time,this.UP.point1Price,this.$x.gt,this.$x.bt),o=Math.min(n,h),a=Math.max(n,h);t.setLineDash([5*i,5*i]),t.globalAlpha=.7,l.levels.forEach(n=>{const e=n.ratio??n.zP,h=n.price??n.bt;if(void 0===e||void 0===h)return;const r=(this._series.priceToCoordinate(h)??0)*s,l=this.UP.levelColors?.[e.toString()]||this.UP.lineColor;if(t.strokeStyle=l,t.lineWidth=this.UP.lineWidth*i,t.beginPath(),t.moveTo(o,r),t.lineTo(a,r),t.stroke(),this.UP.showLabels){const s=`${n.label??n.Zl} ${this.qP.formatPrice(h)}`;t.font=11*i+"px sans-serif";const e=t.measureText(s),_=4*i,u="right"===this.UP.labelPosition?a+_:o-e.width-_,c=r;t.fillStyle="rgba(255, 255, 255, 0.8)",t.fillRect(u-_/2,c-11*i/2-_/2,e.width+_,11*i+_),t.fillStyle=l,t.textAlign="right"===this.UP.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(s,u,c)}}),t.setLineDash([]),t.globalAlpha=1,this.Qx(t,n,e,i),t.globalAlpha=.6,this.Qx(t,h,r,i),t.globalAlpha=1}Qx(t,i,s,n){const e=this.UP.lineColor,h=this.Fx?5*n:4*n;t.fillStyle=e,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),this.Fx&&(t.strokeStyle="#ffffff",t.lineWidth=2*n,t.stroke())}KP(){this.sp=t=>{this.GP(t)},this._chart.subscribeCrosshairMove(this.sp)}XP(){this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null)}GP(t){if(!t.point)return;const i=Gn(this._chart,this._series,t.point.x);if(null===i)return;if(!this.Fx||!this.Lx)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&("point1"===this.NP?(this.UP.point1Time=i,this.UP.point1Price=s):"point2"===this.NP&&(this.UP.point2Time=i,this.UP.point2Price=s),this.jP(),this.cM())}startDrag(t){this.Lx=!0,this.NP=t}stopDrag(){this.Lx=!1,this.NP=null}updateDrag(t,i){this.Lx&&this.NP&&("point1"===this.NP?(this.UP.point1Time=t,this.UP.point1Price=i):(this.UP.point2Time=t,this.UP.point2Price=i),this.jP(),this.cM())}hitTestEndpoint(t,i){if(!this.zx||!this.UP.point1Time||!this.UP.point2Time)return null;const s=Xn(this._chart,this._series,this.UP.point1Time)??0,n=this._series.priceToCoordinate(this.UP.point1Price)??0,e=Xn(this._chart,this._series,this.UP.point2Time)??0,h=this._series.priceToCoordinate(this.UP.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return"point1";return Math.sqrt(Math.pow(t-e,2)+Math.pow(i-h,2))<=10?"point2":null}applyOptions(t){this.UP={...this.UP,...t},void 0!==t.levels&&t.levels.length>0?this.qP.updateRatios(t.levels.map(Dl)):void 0!==t.useExtended&&(t.useExtended?this.qP.useExtendedRatios():this.qP.useStandardRatios()),super.applyOptions(t),this.jP(),this.cM()}options(){return{...this.UP,levels:this.qP.getRatioValues()}}setColor(t){this.UP.lineColor=t,this.cM()}color(){return this.UP.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}isSelected(){return this.Fx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(!this.zx||!this.UP.point1Time||!this.UP.point2Time)return!1;const s=Xn(this._chart,this._series,this.UP.point1Time)??0,n=Xn(this._chart,this._series,this.UP.point2Time)??0;if(t<Math.min(s,n)||t>Math.max(s,n))return!1;if(!this.Yb)return!1;for(const t of this.Yb.levels){const s=t.price??t.bt;if(void 0===s)continue;const n=this._series.priceToCoordinate(s)??0;if(Math.abs(i-n)<=8)return!0}return!1}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.HP&&(this.HP.m(),this.HP=null),this.XP(),this.UP.onRemove&&this.UP.onRemove()}destroy(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.UP.onRemove&&this.UP.onRemove()}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.jP(),this.cM()}}function Rl(t,i){return new Il(t,i)}class Vl{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Fl{constructor(t){this.Rx=t,this.Jt=new Vl(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}}class El extends Nr{constructor(t,i){super(t,"fibonacci-extension",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Ax=null,this.UP={levels:[{level:0,color:"#787B86",label:"0%"},{level:.618,color:"#2962FF",label:"61.8%"},{level:1,color:"#787B86",label:"100%"},{level:1.618,color:"#F23645",label:"161.8%"},{level:2.618,color:"#9C27B0",label:"261.8%"}],lineColor:"#787B86",lineWidth:1,showLabels:!0,extendLines:!0,...i},this.Zy()}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Fl(this)}getPoint1(){return this.UP.point1}getPoint2(){return this.UP.point2}getPoint3(){return this.UP.point3}getLevels(){return this.UP.levels||[]}getOptions(){return this.UP}setPoint1(t){this.UP.point1=t,this.cM()}setPoint2(t){this.UP.point2=t,this.cM()}setPoint3(t){this.UP.point3=t,this.cM()}isComplete(){return!!(this.UP.point1&&this.UP.point2&&this.UP.point3)}setColor(t){this.UP.lineColor=t,this.cM()}color(){return this.UP.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(!this.isComplete())return!1;const s=[this.UP.point1,this.UP.point2,this.UP.point3];for(const n of s){const s=Xn(this._chart,this._series,n.time)??0,e=this._series.priceToCoordinate(n.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return!0}const n=this.ZP();for(const t of n){const s=this._series.priceToCoordinate(t.bt)??0;if(Math.abs(i-s)<=10)return!0}return!1}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.UP.point1,n=this.UP.point2,e=this.UP.point3;if(!s||!n||!e)return null;if(s&&s.time&&void 0!==s.price){const n=Xn(this._chart,this._series,s.time)??0,e=this._series.priceToCoordinate(s.price)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-e,2))<=20)return"point1"}if(n&&n.time&&void 0!==n.price){const s=Xn(this._chart,this._series,n.time)??0,e=this._series.priceToCoordinate(n.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=20)return"point2"}if(e&&e.time&&void 0!==e.price){const s=Xn(this._chart,this._series,e.time)??0,n=this._series.priceToCoordinate(e.price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=20)return"point3"}return null}startDrag(t){this.Lx=!0,this.Ax=t}stopDrag(){this.Lx=!1,this.Ax=null}updateDrag(t,i){if(!this.Lx||!this.Ax)return;const s={time:t,price:i};switch(this.Ax){case"point1":this.setPoint1(s);break;case"point2":this.setPoint2(s);break;case"point3":this.setPoint3(s)}this.UP.onUpdate&&this.UP.onUpdate()}ZP(){if(!this.isComplete())return[];const t=this.UP.point1,i=this.UP.point2,s=this.UP.point3,n=i.price-t.price;return(this.UP.levels||[]).map(t=>({sn:t.level,bt:s.price+n*t.level,Zl:t.label,I:t.color}))}getExtensionLevels(){return this.ZP()}drawToCanvas(t,i,s){if(!this.isComplete())return;const n=this.UP.point1,e=this.UP.point2,h=this.UP.point3,r=this.Fx||this.Ex&&!this.isLocked(),l=(Xn(this._chart,this._series,n.time)??0)*i,o=(this._series.priceToCoordinate(n.price)??0)*s,a=(Xn(this._chart,this._series,e.time)??0)*i,_=(this._series.priceToCoordinate(e.price)??0)*s,u=(Xn(this._chart,this._series,h.time)??0)*i,c=(this._series.priceToCoordinate(h.price)??0)*s;t.strokeStyle=this.UP.lineColor||"#787B86",t.lineWidth=(this.UP.lineWidth||1)*i*(r?1.5:1),t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(l,o),t.lineTo(a,_),t.stroke(),t.beginPath(),t.moveTo(a,_),t.lineTo(u,c),t.stroke(),t.setLineDash([]);const d=this.getExtensionLevels(),p=t.canvas.width;for(const n of d){const e=n.bt??n.price,h=n.I??n.color,l=n.Zl??n.label;if(null==e)continue;const o=(this._series.priceToCoordinate(e)??0)*s;if(t.strokeStyle=h,t.lineWidth=(this.UP.lineWidth||1)*i*(r?1.5:1),t.beginPath(),this.UP.extendLines?(t.moveTo(0,o),t.lineTo(p,o)):(t.moveTo(u,o),t.lineTo(p,o)),t.stroke(),this.UP.showLabels){const s=`${l} (${e.toFixed(5)})`;t.font=12*i+"px Arial",t.fillStyle=h,t.textAlign="left",t.textBaseline="middle";const n=5*i,r=Math.max(u,10*i)+n;t.fillText(s,r,o)}}const f=(r?6:4)*i,v=[{ut:l,ct:o,Zl:"A"},{ut:a,ct:_,Zl:"B"},{ut:u,ct:c,Zl:"C"}];for(const s of v)t.fillStyle="#2962FF",t.beginPath(),t.arc(s.ut,s.ct,f,0,2*Math.PI),t.fill(),t.fillStyle="#ffffff",t.beginPath(),t.arc(s.ut,s.ct,f-2*i,0,2*Math.PI),t.fill(),r&&(t.fillStyle="#2962FF",t.font=`bold ${10*i}px Arial`,t.textAlign="center",t.textBaseline="middle",t.fillText(s.Zl,s.ut,s.ct))}isVisible(){return this._visible}_serializeShape(){return{type:"fibExtension",points:[zr(this.UP.point1),zr(this.UP.point2),zr(this.UP.point3)],style:{lineColor:this.UP.lineColor,lineWidth:this.UP.lineWidth,showLabels:this.UP.showLabels,extendLines:this.UP.extendLines},extra:{levels:(this.UP.levels||[]).map(t=>({sn:t.level,I:t.color,Zl:t.label}))}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}}}function Ll(t,i){return new El(t,i)}class Al{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Bl{constructor(t){this.Rx=t,this.Jt=new Al(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}const Wl=[{level:.382,color:"#787B86",label:"38.2%"},{level:.5,color:"#9598A1",label:"50%"},{level:.618,color:"#787B86",label:"61.8%"}];class Ol extends Nr{constructor(t,i){super(t,"fibonacci-fan",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Ax=null,this.JP=!1,this.XS=null,this.sp=null,this.$x=null,this.QP={levels:Wl,lineWidth:1,showLabels:!0,extendLines:!0,interactive:!1,...i},this.Zy(),this.QP.interactive&&!this.QP.point1Time&&this.Nx()}Nx(){this.JP=!0,this.XS=t=>{if(!t.point)return;if(jr(this._chart))return;const i=Gn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.QP.point1Time?(this.QP.point2Time=i,this.QP.point2Price=s,this.JP=!1,this.$x=null,this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.cM(),this.QP.onUpdate&&this.QP.onUpdate()):(this.QP.point1Time=i,this.QP.point1Price=s,this.cM()))},this.sp=t=>{if(this.JP&&this.QP.point1Time)if(t.point){const i=Gn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.$x={gt:i,bt:s},this.cM())}else this.$x=null,this.cM()},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sp)}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Bl(this)}drawToCanvas(t,i,s){const n=this.QP.point1Time,e=this.QP.point1Price,h=this.JP&&this.$x?this.$x.gt:this.QP.point2Time,r=this.JP&&this.$x?this.$x.bt:this.QP.point2Price;if(!n||void 0===e||!h||void 0===r)return;const l=(Xn(this._chart,this._series,n)??0)*i,o=(this._series.priceToCoordinate(e)??0)*s,a=(Xn(this._chart,this._series,h)??0)*i,_=(this._series.priceToCoordinate(r)??0)*s,u=this.Fx?this.QP.lineWidth+1:this.QP.lineWidth;if(this.tC(t,l,o,a,_,"#2962FF",u*i),this.QP.levels)for(const n of this.QP.levels)this.iC(t,l,o,a,_,n,i,s,undefined,u);!this.Fx&&!this.Ex||this.JP||this.isLocked()||(this.Qx(t,l,o,i,"#2962ff"),this.Qx(t,a,_,i,"#2962ff"))}iC(t,i,s,n,e,h,r,l,o,a){const _=n,u=s+(e-s)*h.level;let c=_,d=u;if(this.QP.extendLines){const t=this._chart.chartElement().clientWidth*r,n=_-i,e=u-s,h=Math.sqrt(n*n+e*e);if(h>0){const r=2*t;c=i+n/h*r,d=s+e/h*r}}const p=o||h.color;this.tC(t,i,s,c,d,p,a*r),this.QP.showLabels&&!this.JP&&this.eP(t,_,u,h.label,r,p)}tC(t,i,s,n,e,h,r){t.strokeStyle=h,t.lineWidth=r,t.beginPath(),t.moveTo(i,s),t.lineTo(n,e),t.stroke()}Qx(t,i,s,n,e){const h=5*n;t.fillStyle=e,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),t.strokeStyle="#ffffff",t.lineWidth=2*n,t.stroke()}eP(t,i,s,n,e,h){const r=11*e,l=4*e;t.font=`${r}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const o=t.measureText(n).width,a=r;t.fillStyle=h,t.fillRect(i+l,s-a-l,o+2*l,a+2*l),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(n,i+2*l,s-a-l+l)}setColor(t){const i=this.QP.levels??[];for(const s of i)s.color=t;this.cM()}color(){const t=this.QP.levels??[];return t.length>0?t[0].color:""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(!this.QP.point1Time||!this.QP.point2Time)return!1;const s=Xn(this._chart,this._series,this.QP.point1Time)??0,n=this._series.priceToCoordinate(this.QP.point1Price)??0,e=Xn(this._chart,this._series,this.QP.point2Time)??0,h=this._series.priceToCoordinate(this.QP.point2Price)??0;if(this.tP(t,i,s,n,e,h)<=8)return!0;if(this.QP.levels)for(const r of this.QP.levels){const l=n+(h-n)*r.level,o=e;if(this.tP(t,i,s,n,o,l)<=8)return!0}return!1}tP(t,i,s,n,e,h){const r=e-s,l=h-n,o=r*r+l*l;if(0===o)return Math.sqrt((t-s)*(t-s)+(i-n)*(i-n));let a=((t-s)*r+(i-n)*l)/o;a=Math.max(0,Math.min(1,a));const _=s+a*r,u=n+a*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.QP.point1Time||!this.QP.point2Time)return null;const s=Xn(this._chart,this._series,this.QP.point1Time)??0,n=this._series.priceToCoordinate(this.QP.point1Price)??0,e=Xn(this._chart,this._series,this.QP.point2Time)??0,h=this._series.priceToCoordinate(this.QP.point2Price)??0;return Math.abs(t-s)<=10&&Math.abs(i-n)<=10?"point1":Math.abs(t-e)<=10&&Math.abs(i-h)<=10?"point2":null}startDrag(t){this.Lx=!0,this.Ax=t}stopDrag(){this.Lx=!1,this.Ax=null}updateDrag(t,i){this.Lx&&this.Ax&&("point1"===this.Ax?(this.QP.point1Time=t,this.QP.point1Price=i):"point2"===this.Ax&&(this.QP.point2Time=t,this.QP.point2Price=i),this.cM(),this.QP.onUpdate&&this.QP.onUpdate())}isVisible(){return this._visible}_serializeShape(){return{type:"fibFan",points:[Or(this.QP.point1Price??0,Wr(this.QP.point1Time)),Or(this.QP.point2Price??0,Wr(this.QP.point2Time))],style:{lineWidth:this.QP.lineWidth,showLabels:this.QP.showLabels,extendLines:this.QP.extendLines},extra:{levels:(this.QP.levels||[]).map(t=>({sn:t.level,I:t.color,Zl:t.label}))}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.QP.onRemove&&this.QP.onRemove()}}function zl(t,i){return new Ol(t,i)}class $l{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Hl{constructor(t){this.Rx=t,this.Jt=new $l(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Nl extends Nr{constructor(t,i){super(t,"rectangle",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Ax=null,this.Bx=null,this.Wx=null,this.Ox=null,this.JP=!1,this.XS=null,this.sp=null,this.$x=null,this.sC={fillColor:"#2962ff",fillOpacity:.2,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!0,labelText:"",labelPosition:"top-left",interactive:!1,...i},this._registerOptions(this.sC),this.Zy(),!this.sC.interactive||this.sC.time1&&this.sC.time2||this.Nx()}Nx(){this.JP=!0,this.XS=t=>{if(!t.point)return;if(jr(this._chart))return;const i=Gn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.sC.time1?(this.sC.time2=i,this.sC.price2=s,this.JP=!1,this.$x=null,this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.cM(),this.sC.onUpdate&&this.sC.onUpdate()):(this.sC.time1=i,this.sC.price1=s,this.cM()))},this.sp=t=>{if(this.JP&&this.sC.time1)if(t.point){const i=Gn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.$x={gt:i,bt:s},this.cM())}else this.$x=null,this.cM()},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sp)}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Hl(this)}drawToCanvas(t,i,s){const n=this.sC.time1,e=this.sC.price1,h=this.JP&&this.$x?this.$x.gt:this.sC.time2,r=this.JP&&this.$x?this.$x.bt:this.sC.price2;if(!n||void 0===e||!h||void 0===r)return;const l=(Xn(this._chart,this._series,n)??0)*i,o=(this._series.priceToCoordinate(e)??0)*s,a=(Xn(this._chart,this._series,h)??0)*i,_=(this._series.priceToCoordinate(r)??0)*s,u=Math.min(l,a),c=Math.max(l,a),d=Math.min(o,_),p=Math.max(o,_),f=c-u,v=p-d;if(this.sC.fillOpacity>0){const i=this.Gy(this.sC.fillColor,this.JP?.1:this.sC.fillOpacity);t.fillStyle=i,t.fillRect(u,d,f,v)}const m=this.sC.borderColor,w=this.Fx?this.sC.borderWidth+1:this.sC.borderWidth;t.strokeStyle=m,t.lineWidth=w*i,"dashed"===this.sC.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.sC.borderStyle&&t.setLineDash([2*i,3*i]),t.strokeRect(u,d,f,v),t.setLineDash([]),!this.Fx&&!this.Ex||this.JP||this.isLocked()||this.nC(t,u,d,c,p,i,m),this.sC.showLabel&&this.sC.labelText&&!this.JP&&this.eP(t,u,d,c,p,i,s,m)}nC(t,i,s,n,e,h,r){const l=8*h,o=[{ut:i,ct:s},{ut:n,ct:s},{ut:i,ct:e},{ut:n,ct:e}];t.fillStyle=r,t.strokeStyle="#ffffff",t.lineWidth=2*h;for(const i of o)t.fillRect(i.ut-l/2,i.ct-l/2,l,l),t.strokeRect(i.ut-l/2,i.ct-l/2,l,l)}eP(t,i,s,n,e,h,r,l){const o=6*h,a=12*h;t.font=`${a}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const _=t.measureText(this.sC.labelText).width,u=a;let c=i+o,d=s+o;switch(this.sC.labelPosition){case"top-right":c=n-_-2*o,d=s+o;break;case"bottom-left":c=i+o,d=e-u-2*o;break;case"bottom-right":c=n-_-2*o,d=e-u-2*o;break;case"center":c=(i+n)/2-_/2-o,d=(s+e)/2-u/2-o}t.fillStyle=l,t.fillRect(c,d,_+2*o,u+2*o),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.sC.labelText,c+o,d+o)}Gy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setColor(t){this.sC.borderColor=t,this.sC.fillColor=t,this.cM()}color(){return this.sC.borderColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(!this.sC.time1||!this.sC.time2)return!1;const s=Xn(this._chart,this._series,this.sC.time1)??0,n=this._series.priceToCoordinate(this.sC.price1)??0,e=Xn(this._chart,this._series,this.sC.time2)??0,h=this._series.priceToCoordinate(this.sC.price2)??0,r=Math.min(s,e),l=Math.max(s,e),o=Math.min(n,h),a=Math.max(n,h);return t>=r&&t<=l&&i>=o&&i<=a}hitTestEndpoint(t,i){if(!this.sC.time1||!this.sC.time2)return null;const s=Xn(this._chart,this._series,this.sC.time1)??0,n=this._series.priceToCoordinate(this.sC.price1)??0,e=Xn(this._chart,this._series,this.sC.time2)??0,h=this._series.priceToCoordinate(this.sC.price2)??0,r=Math.min(s,e),l=Math.max(s,e),o=Math.min(n,h),a=Math.max(n,h),_=10;return Math.abs(t-r)<=_&&Math.abs(i-o)<=_?"corner1":Math.abs(t-l)<=_&&Math.abs(i-o)<=_?"corner2":Math.abs(t-r)<=_&&Math.abs(i-a)<=_?"corner3":Math.abs(t-l)<=_&&Math.abs(i-a)<=_?"corner4":t>=r&&t<=l&&i>=o&&i<=a?"body":null}startDrag(t,i){this.Lx=!0,this.Ax=t,this.Bx=i,"body"===t&&(this.Wx={gt:this.sC.time1,bt:this.sC.price1},this.Ox={gt:this.sC.time2,bt:this.sC.price2})}stopDrag(){this.Lx=!1,this.Ax=null,this.Bx=null,this.Wx=null,this.Ox=null}updateDrag(t,i){if(!this.Lx||!this.Ax)return;const s=Xn(this._chart,this._series,this.sC.time1)??0,n=this._series.priceToCoordinate(this.sC.price1)??0,e=s<(Xn(this._chart,this._series,this.sC.time2)??0),h=n<(this._series.priceToCoordinate(this.sC.price2)??0);if("body"===this.Ax&&this.Wx&&this.Ox){const s=Ar(this.Bx,t,i);this.sC.time1=this.Wx.gt+s.gt,this.sC.price1=this.Wx.bt+s.bt,this.sC.time2=this.Ox.gt+s.gt,this.sC.price2=this.Ox.bt+s.bt}else switch(this.Ax){case"corner1":e&&h?(this.sC.time1=t,this.sC.price1=i):!e&&h?(this.sC.time2=t,this.sC.price1=i):e&&!h?(this.sC.time1=t,this.sC.price2=i):(this.sC.time2=t,this.sC.price2=i);break;case"corner2":e&&h?(this.sC.time2=t,this.sC.price1=i):!e&&h?(this.sC.time1=t,this.sC.price1=i):e&&!h?(this.sC.time2=t,this.sC.price2=i):(this.sC.time1=t,this.sC.price2=i);break;case"corner3":e&&h?(this.sC.time1=t,this.sC.price2=i):!e&&h?(this.sC.time2=t,this.sC.price2=i):e&&!h?(this.sC.time1=t,this.sC.price1=i):(this.sC.time2=t,this.sC.price1=i);break;case"corner4":e&&h?(this.sC.time2=t,this.sC.price2=i):!e&&h?(this.sC.time1=t,this.sC.price2=i):e&&!h?(this.sC.time2=t,this.sC.price1=i):(this.sC.time1=t,this.sC.price1=i)}this.cM(),this.sC.onUpdate&&this.sC.onUpdate()}isVisible(){return this._visible}_serializeShape(){return{type:"rectangle",points:[Or(this.sC.price1??0,Wr(this.sC.time1)),Or(this.sC.price2??0,Wr(this.sC.time2))],style:{fillColor:this.sC.fillColor,fillOpacity:this.sC.fillOpacity,borderColor:this.sC.borderColor,borderWidth:this.sC.borderWidth,borderStyle:this.sC.borderStyle,showLabel:this.sC.showLabel,labelText:this.sC.labelText,labelPosition:this.sC.labelPosition}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.sC.onRemove&&this.sC.onRemove()}}function Ul(t,i){return new Nl(t,i)}class ql{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class jl{constructor(t){this.Rx=t,this.Jt=new ql(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Yl extends Nr{constructor(t,i){super(t,"circle",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Ax=null,this.Bx=null,this.MP=null,this.JP=!1,this.XS=null,this.sp=null,this.$x=null,this.eC={fillColor:"#2962ff",fillOpacity:.1,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!1,labelText:"",interactive:!1,...i},this._registerOptions(this.eC),this.Zy(),this.eC.interactive&&!this.eC.centerTime&&this.Nx()}Nx(){this.JP=!0,this.XS=t=>{if(!t.point)return;if(jr(this._chart))return;const i=Gn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);if(null!==s)if(this.eC.centerTime){const t=this._chart.timeScale().timeToCoordinate(this.eC.centerTime)??0,n=this._series.priceToCoordinate(this.eC.centerPrice)??0,e=Xn(this._chart,this._series,i)??0,h=this._series.priceToCoordinate(s)??0;this.eC.radiusTime=Math.abs(e-t),this.eC.radiusPrice=Math.abs(h-n),this.JP=!1,this.$x=null,this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.cM(),this.eC.onUpdate&&this.eC.onUpdate()}else this.eC.centerTime=i,this.eC.centerPrice=s,this.cM()},this.sp=t=>{if(this.JP&&this.eC.centerTime)if(t.point){const i=Gn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.$x={gt:i,bt:s},this.cM())}else this.$x=null,this.cM()},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sp)}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new jl(this)}drawToCanvas(t,i,s){if(!this.eC.centerTime||void 0===this.eC.centerPrice)return;const n=(Xn(this._chart,this._series,this.eC.centerTime)??0)*i,e=(this._series.priceToCoordinate(this.eC.centerPrice)??0)*s;let h,r;if(this.JP&&this.$x){const t=(Xn(this._chart,this._series,this.$x.gt)??0)*i,l=(this._series.priceToCoordinate(this.$x.bt)??0)*s;h=Math.abs(t-n),r=Math.abs(l-e)}else{if(void 0===this.eC.radiusTime||void 0===this.eC.radiusPrice)return;h=this.eC.radiusTime*i,r=this.eC.radiusPrice*s}if(this.eC.fillOpacity>0){const i=this.Gy(this.eC.fillColor,this.JP?.05:this.eC.fillOpacity);t.fillStyle=i,t.beginPath(),t.ellipse(n,e,h,r,0,0,2*Math.PI),t.fill()}const l=this.eC.borderColor,o=this.Fx?this.eC.borderWidth+1:this.eC.borderWidth;t.strokeStyle=l,t.lineWidth=o*i,"dashed"===this.eC.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.eC.borderStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.ellipse(n,e,h,r,0,0,2*Math.PI),t.stroke(),t.setLineDash([]),!this.Fx&&!this.Ex||this.JP||this.isLocked()||this.hC(t,n,e,i,l),!this.Fx&&!this.Ex||this.JP||this.isLocked()||this.rC(t,n,e,h,r,i,l),this.eC.showLabel&&this.eC.labelText&&!this.JP&&this.eP(t,n,e,i,l)}hC(t,i,s,n,e){const h=8*n;t.fillStyle=e,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.beginPath(),t.arc(i,s,h/2,0,2*Math.PI),t.fill(),t.stroke()}rC(t,i,s,n,e,h,r){const l=8*h,o=[{ut:i,ct:s-e},{ut:i+n,ct:s},{ut:i,ct:s+e},{ut:i-n,ct:s}];t.fillStyle=r,t.strokeStyle="#ffffff",t.lineWidth=2*h;for(const i of o)t.fillRect(i.ut-l/2,i.ct-l/2,l,l),t.strokeRect(i.ut-l/2,i.ct-l/2,l,l)}eP(t,i,s,n,e){const h=6*n,r=12*n;t.font=`${r}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(this.eC.labelText).width,o=r,a=i-l/2-h,_=s-o/2-h;t.fillStyle=e,t.fillRect(a,_,l+2*h,o+2*h),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.eC.labelText,a+h,_+h)}Gy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}setColor(t){this.eC.borderColor=t,this.eC.fillColor=t,this.cM()}color(){return this.eC.borderColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(!this.eC.centerTime||void 0===this.eC.radiusTime)return!1;const s=Xn(this._chart,this._series,this.eC.centerTime)??0,n=this._series.priceToCoordinate(this.eC.centerPrice)??0,e=(t-s)/this.eC.radiusTime,h=(i-n)/this.eC.radiusPrice;return e*e+h*h<=1}hitTestEndpoint(t,i){if(!this.eC.centerTime||void 0===this.eC.radiusTime)return null;const s=Xn(this._chart,this._series,this.eC.centerTime)??0,n=this._series.priceToCoordinate(this.eC.centerPrice)??0,e=this.eC.radiusTime,h=this.eC.radiusPrice;if(Math.abs(t-s)<=10&&Math.abs(i-n)<=10)return"center";const r=[{ut:s,ct:n-h},{ut:s+e,ct:n},{ut:s,ct:n+h},{ut:s-e,ct:n}];for(const s of r)if(Math.abs(t-s.ut)<=10&&Math.abs(i-s.ct)<=10)return"edge";return null}startDrag(t,i){this.Lx=!0,this.Ax=t,this.Bx=i,this.MP="center"===t?{gt:this.eC.centerTime,bt:this.eC.centerPrice}:null}stopDrag(){this.Lx=!1,this.Ax=null,this.Bx=null,this.MP=null}updateDrag(t,i){if(this.Lx&&this.Ax){if("center"===this.Ax&&this.MP){const s=Ar(this.Bx,t,i);this.eC.centerTime=this.MP.gt+s.gt,this.eC.centerPrice=this.MP.bt+s.bt}else if("edge"===this.Ax){const s=Xn(this._chart,this._series,this.eC.centerTime)??0,n=this._series.priceToCoordinate(this.eC.centerPrice)??0,e=Xn(this._chart,this._series,t)??0,h=this._series.priceToCoordinate(i)??0;this.eC.radiusTime=Math.abs(e-s),this.eC.radiusPrice=Math.abs(h-n)}this.cM(),this.eC.onUpdate&&this.eC.onUpdate()}}isVisible(){return this._visible}_serializeShape(){return{type:"circle",points:[Or(this.eC.centerPrice??0,Wr(this.eC.centerTime))],style:{fillColor:this.eC.fillColor,fillOpacity:this.eC.fillOpacity,borderColor:this.eC.borderColor,borderWidth:this.eC.borderWidth,borderStyle:this.eC.borderStyle,showLabel:this.eC.showLabel,labelText:this.eC.labelText},extra:{radiusTime:this.eC.radiusTime,radiusPrice:this.eC.radiusPrice}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.eC.onRemove&&this.eC.onRemove()}}function Kl(t,i){return new Yl(t,i)}class Gl{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Xl{constructor(t){this.Rx=t,this.Jt=new Gl(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class Zl extends Nr{constructor(t,i){super(t,"arrow",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.lC=-1,this.JP=!1,this.XS=null,this.oC=null,this.sp=null,this.$x=null,this.aC={points:[],lineColor:"#2962ff",lineWidth:2,showArrowHead:!0,showCircles:!0,circleRadius:4,interactive:!1,...i},this._registerOptions(this.aC),this.Zy(),!this.aC.interactive||this.aC.points&&0!==this.aC.points.length||this.Nx()}Nx(){this.JP=!0,this.XS=t=>{if(!t.point)return;if(jr(this._chart))return;const i=Gn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.aC.points||(this.aC.points=[]),this.aC.points.push({time:i,price:s}),this.cM(),this.aC.onUpdate&&this.aC.onUpdate())},this.sp=t=>{if(this.JP)if(t.point){const i=Gn(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.$x={gt:i,bt:s},this.cM())}else this.$x=null,this.cM()},this.oC=t=>{this.JP&&(t.preventDefault(),t.stopPropagation(),this.finishDrawing())},this._chart.subscribeClick(this.XS),this._chart.subscribeCrosshairMove(this.sp);const t=this._chart.chartElement?.();t&&t.addEventListener("contextmenu",this.oC)}finishDrawing(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.oC){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.oC),this.oC=null}this.JP=!1,this.$x=null,this.cM(),this.aC.onComplete&&this.aC.onComplete()}isDrawing(){return this.JP}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new Xl(this)}drawToCanvas(t,i,s){if(!this.aC.points||0===this.aC.points.length)return;const n=this.aC.lineColor,e=this.Fx||this.Ex&&!this.isLocked()?this.aC.lineWidth+1:this.aC.lineWidth,h=[];for(const t of this.aC.points)try{let n=Xn(this._chart,this._series,t.time);if(null===n){const i=this._chart.timeScale(),s=i.timeToIndex(t.time,!0);null!=s&&(n=i.logicalToCoordinate(s))}if(null==n)continue;const e=this._series.priceToCoordinate(t.price);if(null===e)continue;h.push({ut:n*i,ct:e*s})}catch{continue}if(0===h.length&&!this.JP)return;let r=null;if(this.JP&&this.$x&&this.aC.points.length>0){r={ut:(Xn(this._chart,this._series,this.$x.gt)??0)*i,ct:(this._series.priceToCoordinate(this.$x.bt)??0)*s}}if(h.length>1){t.strokeStyle=n,t.lineWidth=e*i,t.beginPath(),t.moveTo(h[0].ut,h[0].ct);for(let i=1;i<h.length;i++)t.lineTo(h[i].ut,h[i].ct);t.stroke()}if(r&&h.length>0){const s=h[h.length-1];t.strokeStyle=n,t.lineWidth=e*i,t.globalAlpha=.5,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(s.ut,s.ct),t.lineTo(r.ut,r.ct),t.stroke(),t.setLineDash([]),t.globalAlpha=1}if(this.aC.showArrowHead&&h.length>1&&this._C(t,h[h.length-2],h[h.length-1],i,n),this.aC.showCircles)for(let s=0;s<h.length;s++)this.uC(t,h[s].ut,h[s].ct,i,n,0===s)}_C(t,i,s,n,e){const h=12*n,r=Math.atan2(s.ct-i.ct,s.ut-i.ut),l={ut:s.ut-h*Math.cos(r-Math.PI/6),ct:s.ct-h*Math.sin(r-Math.PI/6)},o={ut:s.ut-h*Math.cos(r+Math.PI/6),ct:s.ct-h*Math.sin(r+Math.PI/6)};t.fillStyle=e,t.beginPath(),t.moveTo(s.ut,s.ct),t.lineTo(l.ut,l.ct),t.lineTo(o.ut,o.ct),t.closePath(),t.fill()}uC(t,i,s,n,e,h){const r=this.aC.circleRadius*n;t.beginPath(),t.arc(i,s,r,0,2*Math.PI),h?(t.fillStyle=e,t.fill()):(t.strokeStyle=e,t.lineWidth=2*n,t.stroke(),t.fillStyle="#ffffff",t.fill(),t.strokeStyle=e,t.stroke())}setColor(t){this.aC.lineColor=t,this.cM()}color(){return this.aC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(!this.aC.points||0===this.aC.points.length)return!1;for(let s=0;s<this.aC.points.length-1;s++)try{const n=this.aC.points[s],e=this.aC.points[s+1];let h=Xn(this._chart,this._series,n.time);if(null===h){const t=this._chart.timeScale(),i=t.timeToIndex(n.time,!0);null!=i&&(h=t.logicalToCoordinate(i))}let r=Xn(this._chart,this._series,e.time);if(null===r){const t=this._chart.timeScale(),i=t.timeToIndex(e.time,!0);null!=i&&(r=t.logicalToCoordinate(i))}const l=this._series.priceToCoordinate(n.price),o=this._series.priceToCoordinate(e.price);if(null==h||null===l||null==r||null===o)continue;if(this.tP(t,i,h,l,r,o)<=8)return!0}catch{continue}for(const s of this.aC.points)try{let n=Xn(this._chart,this._series,s.time);if(null===n){const t=this._chart.timeScale(),i=t.timeToIndex(s.time,!0);null!=i&&(n=t.logicalToCoordinate(i))}const e=this._series.priceToCoordinate(s.price);if(null==n||null===e)continue;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-e,2))<=8)return!0}catch{continue}return!1}tP(t,i,s,n,e,h){const r=e-s,l=h-n,o=r*r+l*l;if(0===o)return Math.sqrt((t-s)*(t-s)+(i-n)*(i-n));let a=((t-s)*r+(i-n)*l)/o;a=Math.max(0,Math.min(1,a));const _=s+a*r,u=n+a*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.aC.points||0===this.aC.points.length)return null;for(let s=0;s<this.aC.points.length;s++)try{const n=this.aC.points[s];let e=Xn(this._chart,this._series,n.time);if(null===e){const t=this._chart.timeScale(),i=t.timeToIndex(n.time,!0);null!=i&&(e=t.logicalToCoordinate(i))}const h=this._series.priceToCoordinate(n.price);if(null==e||null===h)continue;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-h,2))<=10)return s}catch{continue}return null}startDrag(t){this.Lx=!0,this.lC=t}stopDrag(){this.Lx=!1,this.lC=-1}updateDrag(t,i){this.Lx&&-1!==this.lC&&this.aC.points&&this.lC>=0&&this.lC<this.aC.points.length&&(this.aC.points[this.lC]={time:t,price:i},this.cM(),this.aC.onUpdate&&this.aC.onUpdate())}getPoints(){return this.aC.points||[]}addPoint(t){this.aC.points||(this.aC.points=[]),this.aC.points.push(t),this.cM()}isVisible(){return this._visible}_serializeShape(){return{type:"arrow",points:(this.aC.points||[]).map(t=>zr(t)),style:{lineColor:this.aC.lineColor,lineWidth:this.aC.lineWidth,showArrowHead:this.aC.showArrowHead,showCircles:this.aC.showCircles,circleRadius:this.aC.circleRadius}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){if(this.XS&&(this._chart.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null),this.oC){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.oC),this.oC=null}if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.aC.onRemove&&this.aC.onRemove()}}function Jl(t,i){return new Zl(t,i)}class Ql{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class to{constructor(t){this.Rx=t,this.Jt=new Ql(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class io extends Nr{constructor(t,i){super(t,"brush",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.cC=!1,this.JP=!1,this.dC=[],this.pC=!1,this.kf=null,this.bS=null,this.CS=null,this.kS=null,this.IS=null,this.fC=void 0,this.xS=null,this.Lx=!1,this.Bx=null,this.oP=null,this.vC={points:[],color:"#2962ff",lineWidth:2,smoothing:!0,sampleDistance:4,...i},this._registerOptions(this.vC),this.Zy(),0===(this.vC.points??[]).length&&this.startDrawingMode()}startDrawingMode(){if(this.cC)return;const t=this._chart.chartElement();t&&(this.kf=t,this.cC=!0,this.CS=t=>this.TS(t),this.kS=t=>this.DS(t),this.IS=()=>this.RS(),this.xS=t=>{this.fC=t.hoveredObjectId},this._chart.subscribeCrosshairMove(this.xS),t.addEventListener("pointerdown",this.CS,!0),t.addEventListener("pointermove",this.kS,!0),t.addEventListener("pointerup",this.IS,!0),t.addEventListener("pointercancel",this.IS,!0))}stopDrawingMode(){if(!this.cC)return;this.mC(),this.cC=!1;const t=this.kf;t&&(this.CS&&t.removeEventListener("pointerdown",this.CS,!0),this.kS&&t.removeEventListener("pointermove",this.kS,!0),this.IS&&(t.removeEventListener("pointerup",this.IS,!0),t.removeEventListener("pointercancel",this.IS,!0))),this.xS&&(this._chart.unsubscribeCrosshairMove(this.xS),this.xS=null),this.CS=null,this.kS=null,this.IS=null,this.kf=null}isDrawingModeActive(){return this.cC}TS(t){if(this.wC())return;const i=this.gC(t);null!==i&&(this.JP=!0,this.dC=[i],this.bS=t.pointerId,qr(this._chart,!0),this.kf?.setPointerCapture(t.pointerId),t.preventDefault(),t.stopPropagation(),this.bC())}DS(t){if(!this.JP)return;const i=this.gC(t);if(null===i)return;const s=this.dC[this.dC.length-1];Math.hypot(i.ut-s.ut,i.ct-s.ct)<(this.vC.sampleDistance??4)||(this.dC.push(i),t.preventDefault(),t.stopPropagation(),this.bC())}RS(){this.JP&&this.mC()}mC(){if(!this.JP)return;this.JP=!1,this.HS();const t=[];for(const i of this.dC){const s=Gn(this._chart,this._series,i.ut),n=this._series.coordinateToPrice(i.ct);null!==s&&null!==n&&t.push({time:s,price:n})}this.dC=[],t.length<2?this.cM():(this.vC.points=t,this.stopDrawingMode(),this.cM(),this.vC.onUpdate&&this.vC.onUpdate(),this.vC.onComplete&&this.vC.onComplete())}wC(){const t=this.fC;return"string"==typeof t&&t.split("#")[0]!==this.id}HS(){null!==this.bS&&(this.kf&&this.kf.hasPointerCapture(this.bS)&&this.kf.releasePointerCapture(this.bS),this.bS=null)}gC(t){const i=this.MC();if(null===i)return null;const s=i.getBoundingClientRect();return{ut:t.clientX-s.left,ct:t.clientY-s.top}}MC(){try{return this._series.getPane().getHTMLElement()}catch(t){return null}}bC(){this.pC||(this.pC=!0,requestAnimationFrame(()=>{this.pC=!1,this.cM()}))}drawToCanvas(t,i,s){const n=this.JP?this.dC.map(t=>({ut:t.ut*i,ct:t.ct*s})):this.yC(i,s);if(0===n.length)return;const e=this.Fx;if(t.strokeStyle=this.vC.color,t.lineWidth=(this.vC.lineWidth+(e?1:0))*i,t.lineCap="round",t.lineJoin="round",t.beginPath(),t.moveTo(n[0].ut,n[0].ct),this.vC.smoothing&&n.length>2){for(let i=1;i<n.length-1;i++){const s=(n[i].ut+n[i+1].ut)/2,e=(n[i].ct+n[i+1].ct)/2;t.quadraticCurveTo(n[i].ut,n[i].ct,s,e)}t.lineTo(n[n.length-1].ut,n[n.length-1].ct)}else for(let i=1;i<n.length;i++)t.lineTo(n[i].ut,n[i].ct);t.stroke(),!e&&!this.Ex||this.isLocked()||(this.Qx(t,n[0],i),this.Qx(t,n[n.length-1],i))}Qx(t,i,s){t.fillStyle=this.vC.color,t.strokeStyle="#ffffff",t.lineWidth=2*s,t.beginPath(),t.arc(i.ut,i.ct,5*s,0,2*Math.PI),t.fill(),t.stroke()}yC(t,i){const s=this.vC.points??[],n=[];for(const e of s){const s=Xn(this._chart,this._series,e.time),h=this._series.priceToCoordinate(e.price);null!==s&&null!==h&&n.push({ut:s*t,ct:h*i})}return n}hitTest(t,i){const s=this.yC(1,1);for(let n=1;n<s.length;n++)if(so(t,i,s[n-1],s[n])<=8)return!0;return!1}hitTestEndpoint(t,i){return this.hitTest(t,i)?"stroke":null}startDrag(t,i){this.Lx=!0,this.Bx=i,this.oP=(this.vC.points??[]).map(t=>({time:t.time,price:t.price}))}updateDrag(t,i){const s=this.oP;if(!this.Lx||null===s||!this.vC.points)return;const n=Ar(this.Bx,t,i);this.vC.points.forEach((t,i)=>{const e=s[i];e&&(t.time=e.time+n.gt,t.price=e.price+n.bt)}),this.cM(),this.vC.onUpdate&&this.vC.onUpdate()}stopDrag(){this.Lx=!1,this.Bx=null,this.oP=null}setColor(t){this.vC.color=t,this.cM()}color(){return this.vC.color??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}Zy(){this.nr=new to(this);const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):null}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){this.stopDrawingMode(),this.Ub&&(this._series.detachPrimitive(this.Ub),this.Ub=null),this.nr=null,this.vC.onRemove&&this.vC.onRemove()}_serializeShape(){return{type:"brush",points:(this.vC.points??[]).map(zr),style:{color:this.vC.color,lineWidth:this.vC.lineWidth,smoothing:this.vC.smoothing}}}getPoints(){return this.vC.points??[]}}function so(t,i,s,n){const e=n.ut-s.ut,h=n.ct-s.ct,r=e*e+h*h;if(0===r)return Math.hypot(t-s.ut,i-s.ct);let l=((t-s.ut)*e+(i-s.ct)*h)/r;return l=Math.max(0,Math.min(1,l)),Math.hypot(t-(s.ut+l*e),i-(s.ct+l*h))}function no(t,i={}){return new io(t,i)}class eo{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ho{constructor(t){this.Rx=t,this.Jt=new eo(t)}renderer(){return this.Rx.isComplete()?this.Jt:null}}class ro extends Nr{constructor(t,i){super(t,"text-tool",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Ax=null,this.Bx=null,this.MP=null,this.SC=!1,this.xC=null,this.PC={text:"Double-click to edit",fontSize:14,fontFamily:"Arial, sans-serif",textColor:"#FFFFFF",backgroundColor:"#2962FF",backgroundOpacity:.8,padding:8,borderColor:"#2962FF",borderWidth:1,textAlign:"left",maxWidth:200,...i},this._registerOptions(this.PC),this.Zy(),this.CC()}CC(){this.xC=this._chart.subscribeClick(t=>{if(!this.SC)return;const i=t.point?.x||0,s=t.point?.y||0;this.hitTest(i,s)||(this.setEditing(!1),this.PC.text&&""!==this.PC.text.trim()&&"Type here..."!==this.PC.text||this.remove())})}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new ho(this)}getTime(){return this.PC.time}getPrice(){return this.PC.price}getText(){return this.PC.text||""}getOptions(){return this.PC}setPosition(t,i){this.PC.time=t,this.PC.price=i,this._update()}setText(t){this.PC.text=t,this._update(),this.PC.onTextChange&&this.PC.onTextChange(t)}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}isComplete(){return!(!this.PC.time||void 0===this.PC.price)}setColor(t){this.PC.textColor=t,this.PC.borderColor=t,this.cM()}color(){return this.PC.textColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this._update())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this._update())}isHovered(){return this.Ex}setEditing(t){this.SC!==t&&(this.SC=t,this._update())}isEditing(){return this.SC}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(!this.isComplete())return!1;const s=this.PC.time,n=this.PC.price,e=Xn(this._chart,this._series,s)??0,h=this._series.priceToCoordinate(n)??0,r=this.PC.fontSize||14,l=this.PC.padding||8,o=this.PC.text||"",a=.6*r,_=Math.min(o.length*a,this.PC.maxWidth||200);return t>=e&&t<=e+_+2*l&&i>=h&&i<=h+(r+2*l)}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.PC.time,n=this.PC.price,e=Xn(this._chart,this._series,s)??0,h=this._series.priceToCoordinate(n)??0;return Math.sqrt(Math.pow(t-e,2)+Math.pow(i-h,2))<=10?"anchor":null}startDrag(t,i){this.Lx=!0,this.Ax=t,this.Bx=i,this.MP={gt:this.PC.time,bt:this.PC.price}}stopDrag(){this.Lx=!1,this.Ax=null,this.Bx=null,this.MP=null}updateDrag(t,i){if(this.Lx){if("body"===this.Ax&&this.MP){const s=Ar(this.Bx,t,i);this.setPosition(this.MP.gt+s.gt,this.MP.bt+s.bt)}else this.setPosition(t,i);this.PC.onUpdate&&this.PC.onUpdate()}}drawToCanvas(t,i,s){if(!this.isComplete())return;const n=this.PC.time,e=this.PC.price,h=this.PC.text||"",r=(Xn(this._chart,this._series,n)??0)*i,l=(this._series.priceToCoordinate(e)??0)*s,o=(this.PC.fontSize||14)*i,a=(this.PC.padding||8)*i,_=(this.PC.maxWidth||200)*i;t.font=`${o}px ${this.PC.fontFamily||"Arial"}`,t.textBaseline="top";const u=h.split(" "),c=[];let d="";for(const i of u){const s=d?`${d} ${i}`:i;t.measureText(s).width>_&&d?(c.push(d),d=i):d=s}d&&c.push(d);let p=0;for(const i of c){const s=t.measureText(i);p=Math.max(p,s.width)}const f=p+2*a,v=1.2*o,m=c.length*v+2*a,w=this.PC.backgroundOpacity||.8,g=this.PC.backgroundColor||"#2962FF";t.fillStyle=this.Gy(g,w),t.fillRect(r,l,f,m),(this.Fx||this.Ex)&&(t.strokeStyle=this.PC.borderColor??"#FFFFFF",t.lineWidth=(this.PC.borderWidth||1)*i*(this.Fx?2:1),t.strokeRect(r,l,f,m)),t.fillStyle=this.PC.textColor||"#FFFFFF";for(let i=0;i<c.length;i++){const s=c[i];let n=r+a;if("center"===this.PC.textAlign){n=r+(f-t.measureText(s).width)/2}else if("right"===this.PC.textAlign){n=r+f-t.measureText(s).width-a}const e=l+a+i*v;t.fillText(s,n,e)}if((this.Fx||this.Ex)&&!this.isLocked()){const s=4*i;t.fillStyle=this.PC.textColor??"#2962ff",t.beginPath(),t.arc(r,l,s,0,2*Math.PI),t.fill(),t.fillStyle="#FFFFFF",t.beginPath(),t.arc(r,l,s-2*i,0,2*Math.PI),t.fill()}}Gy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}_serializeShape(){return{type:"text",points:[Or(this.PC.price??0,Wr(this.PC.time))],style:{fontSize:this.PC.fontSize,fontFamily:this.PC.fontFamily,textColor:this.PC.textColor,backgroundColor:this.PC.backgroundColor,backgroundOpacity:this.PC.backgroundOpacity,padding:this.PC.padding,borderColor:this.PC.borderColor,borderWidth:this.PC.borderWidth,textAlign:this.PC.textAlign,maxWidth:this.PC.maxWidth},extra:{text:this.PC.text}}}remove(){if(this.xC&&(this._chart.unsubscribeClick(this.xC),this.xC=null),this.Ub&&this._series){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.PC.onRemove&&this.PC.onRemove()}}function lo(t,i){return new ro(t,i)}class oo{constructor(t){this.TC=t}calculatePips(t,i){return Math.abs(i-t)/this.TC.pipValue}calculatePercent(t,i){return(i-t)/t*100}calculateRiskReward(t,i,s){const n=Math.abs(t-i),e=Math.abs(s-t);return 0===n?0:e/n}calculateMetrics(t,i,s,n){const e={entryPrice:t,stopLoss:i,takeProfit:s,quantity:n,stopLossPips:this.calculatePips(t,i),takeProfitPips:this.calculatePips(t,s),stopLossPercent:this.calculatePercent(t,i),takeProfitPercent:this.calculatePercent(t,s),riskRewardRatio:this.calculateRiskReward(t,i,s)};if(void 0!==n){const h=Math.abs(t-i),r=Math.abs(s-t);e.stopLossAmount=h*n,e.takeProfitAmount=r*n}return e}formatPips(t,i=1){return`${t>=0?"+":""}${t.toFixed(i)} pips`}formatPercent(t,i=2){return`${t>=0?"+":""}${t.toFixed(i)}%`}formatRiskReward(t,i=2){return`1:${t.toFixed(i)}`}updatePipConfig(t){this.TC={...this.TC,...t}}getPipConfig(){return{...this.TC}}}function ao(t){const i=t.toString().split("."),s=i.length>1?i[1].length:0;let n;return n=s>=5?1e-5:4===s?1e-4:3===s?.001:2===s?.01:1===s?.1:1,{pipValue:n,decimals:s}}function _o(t,i){return"number"==typeof t?ao(t):void 0!==i?ao(i):{pipValue:.1,decimals:1}}class uo{constructor(t){this.TC=t}calculateMetrics(t,i,s,n,e){const h=n-i;return{point1:{time:t,price:i},point2:{time:s,price:n},priceDifference:h,pricePercent:h/i*100,pips:Math.abs(h)/this.TC.pipValue,timeDifference:this.kC(t,s),barCount:e}}kC(t,i){return"number"==typeof t&&"number"==typeof i?Math.abs(i-t):0}formatPriceDifference(t,i=5){return`${t>=0?"+":""}${t.toFixed(i)}`}formatPips(t,i=1){return`${t.toFixed(i)} pips`}formatPercent(t,i=2){return`${t>=0?"+":""}${t.toFixed(i)}%`}formatTimeDifference(t){if(0===t)return"N/A";const i=Math.floor(t/86400),s=Math.floor(t%86400/3600),n=Math.floor(t%3600/60);return i>0?`${i}d ${s}h`:s>0?`${s}h ${n}m`:n>0?`${n}m`:`${t}s`}formatBarCount(t){return`${t} ${1===t?"bar":"bars"}`}updatePipConfig(t){this.TC={...this.TC,...t}}getPipConfig(){return{...this.TC}}}class co{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class po{constructor(t){this.Rx=t,this.Jt=new co(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}}class fo extends Nr{constructor(t,i){super(t,"ruler-tool",i),this.Ub=null,this.Vx=null,this.Yb=null,this.nr=null,this.HP=null,this.zx=!1,this.Fx=!1,this.Ex=!1,this.$x=null,this.Lx=!1,this.NP=null,this.sp=null,this.DC={lineColor:"#2962ff",lineWidth:2,showLabel:!0,labelBackgroundColor:"#2962ff",labelTextColor:"#ffffff",selectionColor:"#2962ff",selectionLineWidth:3,symbol:"DEFAULT",...i},this._registerOptions(this.DC);const s=this.DC.pipConfig||_o(this.DC.symbol||"DEFAULT");this.qP=new uo(s),this.Zy(),this.DC.interactive?this.Nx():this.DC.point1Time&&this.DC.point2Time&&(this.zx=!0,this.jP())}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new po(this)}Nx(){this.HP=new Gr(this._chart,this._series,{Tx:t=>{this.DC.point1Time=t.gt,this.DC.point1Price=t.bt,this.cM()},kx:t=>{this.DC.point2Time=t.gt,this.DC.point2Price=t.bt},Dx:(t,i)=>{this.DC.point1Time=t.gt,this.DC.point1Price=t.bt,this.DC.point2Time=i.gt,this.DC.point2Price=i.bt,this.zx=!0,this.$x=null,this.jP(),this.KP(),this.cM()},Ix:t=>{this.$x=t,this.cM()}}),this.HP.vx()}drawToCanvas(t,i,s){if(!this.zx&&this.DC.point1Time&&this.$x)return void this.Jx(t,i,s);if(!this.zx||!this.DC.point1Time||!this.DC.point2Time)return;const n=(Xn(this._chart,this._series,this.DC.point1Time)??0)*i,e=(this._series.priceToCoordinate(this.DC.point1Price)??0)*s,h=(Xn(this._chart,this._series,this.DC.point2Time)??0)*i,r=(this._series.priceToCoordinate(this.DC.point2Price)??0)*s;(this.Fx||this.Ex&&!this.isLocked())&&(t.strokeStyle=this.DC.selectionColor,t.lineWidth=this.DC.selectionLineWidth*i,t.beginPath(),t.moveTo(n,e),t.lineTo(h,r),t.stroke()),t.strokeStyle=this.DC.lineColor,t.lineWidth=this.DC.lineWidth*i,t.beginPath(),t.moveTo(n,e),t.lineTo(h,r),t.stroke(),this.IC(t,n,e,h,r,i),this.Qx(t,n,e,i),this.Qx(t,h,r,i),this.DC.showLabel&&this.Yb&&this.eP(t,n,e,h,r,i,s)}IC(t,i,s,n,e,h){const r=this.DC.measure??"both";if("both"===r)return;const l=14*h;if(t.strokeStyle=this.DC.lineColor,t.lineWidth=this.DC.lineWidth*h,t.beginPath(),"price"===r)for(const h of[s,e])t.moveTo(Math.min(i,n)-l/2,h),t.lineTo(Math.max(i,n)+l/2,h);else for(const h of[i,n])t.moveTo(h,Math.min(s,e)-l/2),t.lineTo(h,Math.max(s,e)+l/2);t.stroke()}Qx(t,i,s,n){const e=this.Fx?this.DC.selectionColor:this.DC.lineColor,h=this.Fx?5*n:4*n;t.fillStyle=e,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),this.Fx&&(t.strokeStyle="#ffffff",t.lineWidth=2*n,t.stroke())}Jx(t,i,s){if(!this.DC.point1Time||!this.$x)return;const n=(Xn(this._chart,this._series,this.DC.point1Time)??0)*i,e=(this._series.priceToCoordinate(this.DC.point1Price)??0)*s,h=(Xn(this._chart,this._series,this.$x.gt)??0)*i,r=(this._series.priceToCoordinate(this.$x.bt)??0)*s;t.strokeStyle=this.DC.lineColor,t.lineWidth=this.DC.lineWidth*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,e),t.lineTo(h,r),t.stroke(),t.setLineDash([]),this.Qx(t,n,e,i),t.globalAlpha=.5,this.Qx(t,h,r,i),t.globalAlpha=1}eP(t,i,s,n,e,h,r){if(!this.Yb)return;const l=(i+n)/2,o=(s+e)/2,a=this.DC.measure??"both",_=[];"time"!==a&&(_.push(this.qP.formatPips(this.Yb.pips)),_.push(this.qP.formatPercent(this.Yb.pricePercent))),"price"!==a&&_.push(this.qP.formatBarCount(this.Yb.barCount));const u=_.join(" | ");t.font=12*h+"px sans-serif";const c=6*h,d=t.measureText(u).width+2*c,p=12*h+2*c;t.fillStyle=this.DC.labelBackgroundColor,t.fillRect(l-d/2,o-p/2,d,p),t.fillStyle=this.DC.labelTextColor,t.textAlign="center",t.textBaseline="middle",t.fillText(u,l,o)}jP(){if(!this.DC.point1Time||!this.DC.point2Time||void 0===this.DC.point1Price||void 0===this.DC.point2Price)return;const t=this.RC();this.Yb=this.qP.calculateMetrics(this.DC.point1Time,this.DC.point1Price,this.DC.point2Time,this.DC.point2Price,t),this.DC.onUpdate&&this.Yb&&this.DC.onUpdate(this.Yb)}RC(){if(!this.DC.point1Time||!this.DC.point2Time)return 0;const t=Xn(this._chart,this._series,this.DC.point1Time),i=Xn(this._chart,this._series,this.DC.point2Time);if(null===t||null===i)return 0;return Math.abs(Math.round((i-t)/6))}updatePoints(t,i,s,n){this.DC.point1Time=t,this.DC.point1Price=i,this.DC.point2Time=s,this.DC.point2Price=n,this.jP(),this.cM()}getMetrics(){return this.Yb}remove(){this.destroy()}destroy(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.HP&&(this.HP.m(),this.HP=null),this.XP(),this.DC.onRemove&&this.DC.onRemove()}KP(){this.sp=t=>{this.GP(t)},this._chart.subscribeCrosshairMove(this.sp)}XP(){this.sp&&(this._chart.unsubscribeCrosshairMove(this.sp),this.sp=null)}GP(t){if(!t.point)return;const i=Gn(this._chart,this._series,t.point.x);if(null===i)return;if(!this.Fx||!this.Lx)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&("point1"===this.NP?(this.DC.point1Time=i,this.DC.point1Price=s):"point2"===this.NP&&(this.DC.point2Time=i,this.DC.point2Price=s),this.jP(),this.cM())}startDrag(t){this.Lx=!0,this.NP=t}stopDrag(){this.Lx=!1,this.NP=null}updateDrag(t,i){this.Lx&&this.NP&&("point1"===this.NP?(this.DC.point1Time=t,this.DC.point1Price=i):(this.DC.point2Time=t,this.DC.point2Price=i),this.jP(),this.cM())}hitTestEndpoint(t,i){if(!this.zx||!this.DC.point1Time||!this.DC.point2Time)return null;const s=Xn(this._chart,this._series,this.DC.point1Time)??0,n=this._series.priceToCoordinate(this.DC.point1Price)??0,e=Xn(this._chart,this._series,this.DC.point2Time)??0,h=this._series.priceToCoordinate(this.DC.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return"point1";return Math.sqrt(Math.pow(t-e,2)+Math.pow(i-h,2))<=10?"point2":null}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.jP(),this.cM()}_serializeShape(){return{type:"ruler",points:[Or(this.DC.point1Price??0,Wr(this.DC.point1Time)),Or(this.DC.point2Price??0,Wr(this.DC.point2Time))],style:{lineColor:this.DC.lineColor,lineWidth:this.DC.lineWidth,showLabel:this.DC.showLabel,labelBackgroundColor:this.DC.labelBackgroundColor,labelTextColor:this.DC.labelTextColor,selectionColor:this.DC.selectionColor,selectionLineWidth:this.DC.selectionLineWidth},extra:{symbol:this.DC.symbol,pipConfig:this.DC.pipConfig,measure:this.DC.measure}}}setColor(t){this.DC.lineColor=t,this.cM()}color(){return this.DC.lineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}isSelected(){return this.Fx}isComplete(){return this.zx}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(!this.zx||!this.DC.point1Time||!this.DC.point2Time)return!1;const s=Xn(this._chart,this._series,this.DC.point1Time)??0,n=this._series.priceToCoordinate(this.DC.point1Price)??0,e=Xn(this._chart,this._series,this.DC.point2Time)??0,h=this._series.priceToCoordinate(this.DC.point2Price)??0;return this.VC(t,i,s,n,e,h)<=(this.Fx?12:8)}VC(t,i,s,n,e,h){const r=e-s,l=h-n,o=r*r+l*l;let a,_,u=-1;0!==o&&(u=((t-s)*r+(i-n)*l)/o),u<0?(a=s,_=n):u>1?(a=e,_=h):(a=s+u*r,_=n+u*l);const c=t-a,d=i-_;return Math.sqrt(c*c+d*d)}}function vo(t,i){return new fo(t,i)}class mo{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class wo{constructor(t){this.Rx=t,this.Jt=new mo(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}}class go extends Nr{constructor(t,i){super(t,"position-tool",i),this.Ub=null,this.Vx=null,this.Yb=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.Ax=null,this.Bx=null,this.MP=null,this.FC=null,this.EC=null,this.LC={profitColor:"#26a69a",lossColor:"#ef5350",entryLineColor:"#ffffff",opacity:.3,showTooltips:!0,...i},this._registerOptions(this.LC);const s=this.LC.pipConfig||_o(this.LC.entryPrice);this.qP=new oo(s),this.Zy(),this.jP()}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new wo(this)}drawToCanvas(t,i,s){if(this.FC&&this.LC.takeProfit){const n=this._chart.timeScale();this.AC(t,this.FC,i,s,n),(this.Ex||this.Fx)&&this.eP(t,this.FC,"profit",i,s,n)}if(this.EC&&this.LC.stopLoss){const n=this._chart.timeScale();if(this.AC(t,this.EC,i,s,n),this.Ex||this.Fx){const n=this._chart.timeScale();this.eP(t,this.EC,"loss",i,s,n)}}const n=this._chart.timeScale();if(this.BC(t,i,s,n),this.LC.takeProfit){const n=this._chart.timeScale();this.Qx(t,this.LC.takeProfit,this.LC.profitColor,i,s,n)}if(this.LC.stopLoss){const n=this._chart.timeScale();this.Qx(t,this.LC.stopLoss,this.LC.lossColor,i,s,n)}}AC(t,i,s,n,e){const h=(Xn(this._chart,this._series,this.LC.entryTime)??0)*s;let r;if(this.LC.endTime)r=(Xn(this._chart,this._series,this.LC.endTime)??0)*s;else{r=this._chart.chartElement().clientWidth*s}const l=(this._series.priceToCoordinate(i.WC)??0)*n,o=(this._series.priceToCoordinate(i.OC)??0)*n;t.fillStyle=this.Gy(i.I,.15),t.fillRect(h,Math.min(l,o),r-h,Math.abs(o-l)),t.strokeStyle=i.I,t.lineWidth=2*s,t.beginPath(),t.moveTo(h,o),t.lineTo(r,o),t.stroke()}BC(t,i,s,n){const e=(Xn(this._chart,this._series,this.LC.entryTime)??0)*i,h=(this._series.priceToCoordinate(this.LC.entryPrice)??0)*s;let r;if(this.LC.endTime)r=(Xn(this._chart,this._series,this.LC.endTime)??0)*i;else{r=this._chart.chartElement().clientWidth*i}const l=this.LC.entryLineColor;t.strokeStyle=l,t.lineWidth=2*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(e,h),t.lineTo(r,h),t.stroke(),t.setLineDash([]),t.strokeStyle=this.LC.entryLineColor,t.lineWidth=1*i,t.setLineDash([5*i,5*i]);const o=this._chart.chartElement().clientHeight*s;if(t.beginPath(),t.moveTo(e,0),t.lineTo(e,o),t.stroke(),t.setLineDash([]),!this.Fx&&!this.Ex||this.isLocked())t.fillStyle=this.LC.entryLineColor,t.beginPath(),t.arc(e,h,4*i,0,2*Math.PI),t.fill();else{t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.beginPath(),t.arc(e,h,5*i,0,2*Math.PI),t.fill(),t.stroke();const s=8*i;t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.fillRect(r-s/2,h-s/2,s,s),t.strokeRect(r-s/2,h-s/2,s,s)}}jP(){this.LC.stopLoss&&this.LC.takeProfit&&(this.Yb=this.qP.calculateMetrics(this.LC.entryPrice,this.LC.stopLoss,this.LC.takeProfit,this.LC.quantity),this.zC(),this.LC.onUpdate&&this.Yb&&this.LC.onUpdate(this.Yb))}zC(){const t=this.$C();this.LC.takeProfit&&(this.FC={HC:this.LC.entryTime,NC:t,WC:this.LC.entryPrice,OC:this.LC.takeProfit,I:this.LC.profitColor,yy:this.LC.opacity}),this.LC.stopLoss&&(this.EC={HC:this.LC.entryTime,NC:t,WC:this.LC.entryPrice,OC:this.LC.stopLoss,I:this.LC.lossColor,yy:this.LC.opacity})}$C(){this._chart.timeScale().getVisibleLogicalRange();return this.LC.entryTime}eP(t,i,s,n,e,h){if(!this.Yb)return;const r=(Xn(this._chart,this._series,this.LC.entryTime)??0)*n,l=(this._series.priceToCoordinate(i.OC)??0)*e,o="profit"===s,a=o?this.Yb.takeProfitPips:this.Yb.stopLossPips,_=o?this.LC.takeProfit:this.LC.stopLoss,u=this.Yb.riskRewardRatio,c=o?`Objetivo: ${_?.toFixed(5)} (${a.toFixed(1)} pips) 1:${u.toFixed(2)}`:`P/G Abertura: ${_?.toFixed(5)} (${a.toFixed(1)} pips)`;t.font=11*n+'px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';const d=6*n,p=t.measureText(c).width+2*d,f=20*n,v=r+8*n,m=l-f/2;t.fillStyle=i.I,t.fillRect(v,m,p,f),t.fillStyle="#ffffff",t.textAlign="left",t.textBaseline="middle",t.fillText(c,v+d,l)}Qx(t,i,s,n,e,h){const r=(Xn(this._chart,this._series,this.LC.entryTime)??0)*n,l=(this._series.priceToCoordinate(i)??0)*e,o=s;let a;if(t.fillStyle=o,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.beginPath(),t.arc(r,l,5*n,0,2*Math.PI),t.fill(),t.stroke(),this.LC.endTime)a=(Xn(this._chart,this._series,this.LC.endTime)??0)*n;else{a=this._chart.chartElement().clientWidth*n-10*n}const _=8*n,u=s;t.fillStyle=u,t.strokeStyle="#ffffff",t.lineWidth=2*n,t.fillRect(a-_/2,l-_/2,_,_),t.strokeRect(a-_/2,l-_/2,_,_)}Gy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${i})`}updatePosition(t){this.LC={...this.LC,...t},this.jP(),this._update()}getMetrics(){return this.Yb}setStopLoss(t){this.LC.stopLoss=t,this.jP(),this._update()}setTakeProfit(t){this.LC.takeProfit=t,this.jP(),this._update()}setEntryPrice(t){this.LC.entryPrice=t,this.jP(),this._update()}_serializeShape(){return{type:"position",points:[Or(this.LC.entryPrice,Wr(this.LC.entryTime))],style:{profitColor:this.LC.profitColor,lossColor:this.LC.lossColor,entryLineColor:this.LC.entryLineColor,opacity:this.LC.opacity,showTooltips:this.LC.showTooltips},extra:{endTime:Wr(this.LC.endTime),stopLoss:this.LC.stopLoss,takeProfit:this.LC.takeProfit,quantity:this.LC.quantity,pipConfig:this.LC.pipConfig}}}setColor(t){this.LC.entryLineColor=t,this.cM()}color(){return this.LC.entryLineColor??""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):this.hitTest(t,i)?Lr(this.id,"body",!1):null}hitTest(t,i){if(!this.LC.stopLoss&&!this.LC.takeProfit)return!1;const s=Xn(this._chart,this._series,this.LC.entryTime)??0;let n;if(this.LC.endTime)n=Xn(this._chart,this._series,this.LC.endTime)??0;else{n=this._chart.chartElement().clientWidth}if(this.LC.takeProfit&&this.LC.stopLoss){const e=this._series.priceToCoordinate(this.LC.takeProfit)??0,h=this._series.priceToCoordinate(this.LC.stopLoss)??0,r=Math.min(e,h),l=Math.max(e,h);if(t>=s&&t<=n&&i>=r&&i<=l)return!0;const o=8;if(Math.abs(t-s)<=o&&i>=r&&i<=l)return!0}return!1}hitTestEndpoint(t,i){const s=Xn(this._chart,this._series,this.LC.entryTime)??0;let n;if(this.LC.endTime)n=Xn(this._chart,this._series,this.LC.endTime)??0;else{n=this._chart.chartElement().clientWidth}if(this.LC.takeProfit){const n=this._series.priceToCoordinate(this.LC.takeProfit)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return"tp"}if(this.LC.stopLoss){const n=this._series.priceToCoordinate(this.LC.stopLoss)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-n,2))<=10)return"sl"}if(this.LC.takeProfit){const s=this._series.priceToCoordinate(this.LC.takeProfit)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-s,2))<=10)return"tp-right"}if(this.LC.stopLoss){const s=this._series.priceToCoordinate(this.LC.stopLoss)??0;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-s,2))<=10)return"sl-right"}const e=this._series.priceToCoordinate(this.LC.entryPrice)??0;if(t>=s&&t<=n&&Math.abs(i-e)<=8)return"entry";if(this.LC.takeProfit&&this.LC.stopLoss){const e=this._series.priceToCoordinate(this.LC.takeProfit)??0,h=this._series.priceToCoordinate(this.LC.stopLoss)??0,r=Math.min(e,h),l=Math.max(e,h);if(t>=s&&t<=n&&i>=r&&i<=l)return"move"}return null}startDrag(t,i){this.Lx=!0,this.Ax=t,this.Bx=i,"move"===t&&(this.MP={UC:this.LC.entryPrice,qC:this.LC.entryTime??null,Ky:this.LC.endTime??null,jC:this.LC.takeProfit??null,YC:this.LC.stopLoss??null})}stopDrag(){this.Lx=!1,this.Ax=null,this.Bx=null,this.MP=null}updateDrag(t,i){if(this.Lx&&this.Ax){if("entry"===this.Ax)this.LC.entryPrice=i;else if("move"===this.Ax){if(this.MP){const s=Ar(this.Bx,t,i),n=this.MP;this.LC.entryPrice=n.UC+s.bt,null!==n.jC&&(this.LC.takeProfit=n.jC+s.bt),null!==n.YC&&(this.LC.stopLoss=n.YC+s.bt),null!==n.qC&&(this.LC.entryTime=this.KC(n.qC,s.gt)),null!==n.Ky&&(this.LC.endTime=this.KC(n.Ky,s.gt))}}else"tp"===this.Ax||"tp-right"===this.Ax?(this.LC.takeProfit=i,"tp-right"===this.Ax?this.LC.endTime=t:this.LC.entryTime=t):"sl"!==this.Ax&&"sl-right"!==this.Ax||(this.LC.stopLoss=i,"sl-right"===this.Ax?this.LC.endTime=t:this.LC.entryTime=t);this.jP(),this.cM()}}KC(t,i){return t+i}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.LC.onRemove&&this.LC.onRemove()}}function bo(t,i){return new go(t,i)}class Mo{constructor(t){this.Rx=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.Rx.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class yo{constructor(t){this.Rx=t,this.Jt=new Mo(t)}renderer(){return this.Rx.isVisible()?this.Jt:null}Tt(){}zOrder(){return"normal"}}class So extends Nr{constructor(t,i){super(t,"gantt",i),this.Ub=null,this.Vx=null,this.nr=null,this.Fx=!1,this.Ex=!1,this.Lx=!1,this.GC=-1,this.Bx=null,this.MP=null,this.XC=-1,this.ZC={segments:[],rowHeight:40,rowSpacing:5,fillOpacity:.7,borderWidth:2,showLabels:!0,showGrid:!0,...i},this._registerOptions(this.ZC),this.Zy()}Zy(){this.nr=this.Ux();const t={attached:t=>{this.Vx=t.requestUpdate},detached:()=>{this.Vx=null},updateAllViews:()=>{},paneViews:()=>this.nr?[this.nr]:[],hitTest:(t,i)=>this.qx(t,i)};this.Ub=t,this._series.attachPrimitive(t),this.cM()}Ux(){return new yo(this)}drawToCanvas(t,i,s){if(!this.ZC.segments||0===this.ZC.segments.length)return;const n=50*s,e=this.ZC.rowHeight*s,h=this.ZC.rowSpacing*s;this.ZC.showGrid&&this.sm(t,n,e,h,i,s),this.ZC.segments.forEach((s,r)=>{const l=(Xn(this._chart,this._series,s.startTime)??0)*i,o=(Xn(this._chart,this._series,s.endTime)??0)*i,a=n+s.level*(e+h),_=r===this.XC||this.Ex&&!this.isLocked();this.JC(t,l,o,a,e,s,_,i)})}sm(t,i,s,n,e,h){if(!this.ZC.segments)return;const r=Math.max(...this.ZC.segments.map(t=>t.level),0),l=this._chart.chartElement().clientWidth*e;t.strokeStyle="rgba(200, 200, 200, 0.3)",t.lineWidth=1*e;for(let e=0;e<=r+1;e++){const h=i+e*(s+n);t.beginPath(),t.moveTo(0,h),t.lineTo(l,h),t.stroke()}}JC(t,i,s,n,e,h,r,l){const o=s-i,a=this.Gy(h.color,r?this.ZC.fillOpacity+.2:this.ZC.fillOpacity);t.fillStyle=a,t.fillRect(i,n,o,e),t.strokeStyle=h.color;const _=this.ZC.borderWidth+(this.Fx?2:0);t.lineWidth=_*l,t.strokeRect(i,n,o,e),this.ZC.showLabels&&h.label&&this.eP(t,i,n,o,e,h.label,l)}eP(t,i,s,n,e,h,r){const l=11*r,o=6*r;t.font=`${l}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`,t.fillStyle="#ffffff",t.textBaseline="middle";let a=h;const _=n-2*o;let u=t.measureText(a).width;if(u>_&&_>0){for(;u>_&&a.length>0;)a=a.slice(0,-1),u=t.measureText(a+"...").width;a+="..."}t.fillText(a,i+o,s+e/2)}Gy(t,i){if(!/^#[0-9a-f]{6}$/i.test(t))return t;return`rgba(${parseInt(t.slice(1,3),16)}, ${parseInt(t.slice(3,5),16)}, ${parseInt(t.slice(5,7),16)}, ${Math.min(1,i)})`}addSegment(t){this.ZC.segments||(this.ZC.segments=[]),this.ZC.segments.push(t),this.cM(),this.ZC.onUpdate&&this.ZC.onUpdate()}removeSegment(t){this.ZC.segments&&t>=0&&t<this.ZC.segments.length&&(this.ZC.segments.splice(t,1),this.cM(),this.ZC.onUpdate&&this.ZC.onUpdate())}getSegments(){return this.ZC.segments||[]}setColor(t){const i=this.ZC.segments??[];for(const s of i)s.color=t;this.cM()}color(){const t=this.ZC.segments??[];return t.length>0?t[0].color:""}setSelected(t){this.Fx!==t&&(this.Fx=t,this.cM())}isSelected(){return this.Fx}setHovered(t){this.Ex!==t&&(this.Ex=t,this.cM())}isHovered(){return this.Ex}qx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Lr(this.id,s,!this.isLocked()):null}hitTestEndpoint(t,i){return this.hitTest(t,i)?"move":null}startDrag(t,i){const s=this.ZC.segments?.[this.XC];s&&(this.Lx=!0,this.GC=this.XC,this.Bx=i,this.MP={Yy:s.startTime,Ky:s.endTime})}updateDrag(t,i){const s=this.ZC.segments?.[this.GC];if(!this.Lx||!this.MP||!s)return;const n=Ar(this.Bx,t,i);s.startTime=this.MP.Yy+n.gt,s.endTime=this.MP.Ky+n.gt,this.cM(),this.ZC.onUpdate&&this.ZC.onUpdate()}stopDrag(){this.Lx=!1,this.GC=-1,this.Bx=null,this.MP=null}hitTest(t,i){if(!this.ZC.segments||0===this.ZC.segments.length)return!1;const s=this.ZC.rowHeight,n=this.ZC.rowSpacing;for(let e=0;e<this.ZC.segments.length;e++){const h=this.ZC.segments[e],r=Xn(this._chart,this._series,h.startTime)??0,l=Xn(this._chart,this._series,h.endTime)??0,o=50+h.level*(s+n);if(t>=r&&t<=l&&i>=o&&i<=o+s)return this.XC=e,!0}return this.XC=-1,!1}isVisible(){return this._visible}_serializeShape(){return{type:"gantt",points:[],style:{rowHeight:this.ZC.rowHeight,rowSpacing:this.ZC.rowSpacing,fillOpacity:this.ZC.fillOpacity,borderWidth:this.ZC.borderWidth,showLabels:this.ZC.showLabels,showGrid:this.ZC.showGrid},extra:{segments:(this.ZC.segments||[]).map(t=>({Yy:Wr(t.startTime),Ky:Wr(t.endTime),sn:t.level,Zl:t.label,I:t.color,QC:t.category}))}}}cM(){this.Ub&&this.Ub.updateAllViews?.(),this.Vx?.()}_update(){this.cM()}remove(){if(this.Ub){this._series.detachPrimitive(this.Ub),this.Ub=null,this.nr=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.ZC.onRemove&&this.ZC.onRemove()}}function xo(t,i){return new So(t,i)}class Po{constructor(t,i,s={}){this.tT=[],this.iT=[],this.sT=[],this.nT=!1,this.eT=new Map,this.hT=null,this.rT=null,this.lT=null,this.XS=null,this.oT=null,this.sp=null,this.aT=null,this._T=null,this.uT=null,this.bS=null,this.cT=!1,this.dT=null,this.pT=null,this.fT=new a,this.Lx=!1,this.vT=null,this.Vf=t,this.be=i,this.Cs={enableKeyboardShortcuts:!0,selectionColor:"#2962ff",selectionLineWidth:3,...s},this.mT()}startDrawing(t){this.lT=t,this.wT()}activeDrawingType(){return this.lT}stopDrawing(){this.lT=null}addTool(t,i){const s=i??t.id;return this.eT.set(s,t),this.recordChange(),s}removeTool(t){const i=this.eT.get(t);return!!i&&(this.hT===t&&this.gT(null),i.remove(),this.eT.delete(t),this.recordChange(),!0)}selectTool(t){return!!this.eT.has(t)&&(this.gT(t),!0)}gT(t){if(this.hT===t)return;const i=null===this.hT?void 0:this.eT.get(this.hT);i&&i.setSelected(!1),this.hT=t;const s=null===t?void 0:this.eT.get(t);s&&s.setSelected(!0),this.bT()}recordChange(){this.nT||(this.tT.push(this.sT),this.iT=[],this.sT=this.serializeAll())}canUndo(){return this.tT.length>0}canRedo(){return this.iT.length>0}undo(){const t=this.tT.pop();return void 0!==t&&(this.iT.push(this.sT),this.MT(t),!0)}redo(){const t=this.iT.pop();return void 0!==t&&(this.tT.push(this.sT),this.MT(t),!0)}MT(t){this.nT=!0;try{this.restoreAll({chart:this.Vf,series:this.be},t,!0),this.sT=t}finally{this.nT=!1}}subscribeSelectionChanged(t){this.fT.i(t)}unsubscribeSelectionChanged(t){this.fT._(t)}selectionBounds(){if(null===this.hT)return null;const t=this.eT.get(this.hT);return t?this.yT(t):null}yT(t){const i=t.series(),s=t.serialize().points;let n=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,r=Number.NEGATIVE_INFINITY,l=!1;for(const t of s){const s=Xn(this.Vf,i,t.time),o=i.priceToCoordinate(t.price);null!==s&&null!==o&&(l=!0,n=Math.min(n,s),h=Math.max(h,s),e=Math.min(e,o),r=Math.max(r,o))}if(!l)return null;const o=this.ST(t);return{left:n+o.ut,right:h+o.ut,top:e+o.ct,bottom:r+o.ct}}ST(t){const i=this.Vf.chartElement(),s=this.xT(t);if(!i||!s)return{ut:0,ct:0};const n=i.getBoundingClientRect(),e=s.getBoundingClientRect();return{ut:e.left-n.left,ct:e.top-n.top}}bT(){this.fT.p({id:this.hT,bounds:this.selectionBounds()})}deselectAll(){this.wT()}deleteSelected(){if(this.hT){const t=this.eT.get(this.hT);return(!t||!t.isLocked())&&this.removeTool(this.hT)}return!1}getSelectedToolId(){return this.hT}getAllTools(){return new Map(this.eT)}getTool(t){return this.eT.get(t)}clearAll(){this.gT(null),this.eT.forEach(t=>t.remove()),this.eT.clear(),this.recordChange()}getToolCount(){return this.eT.size}isToolSelected(t){return this.hT===t}serializeAll(){const t=[];for(const i of this.eT.values())t.push(i.serialize());return t}restoreTool(t,i){const s=Po.PT(t,i);return s.applySerializedState(i),this.addTool(s,s.id),s}restoreAll(t,i,s=!0){s&&this.clearAll();for(const s of i)this.restoreTool(t,s)}static PT(t,i){const{type:s,points:n,style:e,extra:h}=i,r=t=>({CT:$r(n[t]),TT:Hr(n[t],"price")??0});switch(s){case"trendLine":return Qr(t,{point1Time:r(0).CT,point1Price:r(0).TT,point2Time:r(1).CT,point2Price:r(1).TT,...e});case"horizontalLine":return nl(t,{price:r(0).TT,startTime:r(0).CT??void 0,...e});case"parallelChannel":return fl(t,{point1Time:r(0).CT,point1Price:r(0).TT,point2Time:r(1).CT,point2Price:r(1).TT,channelWidth:h?.channelWidth,...e});case"pitchfork":return gl(t,{pivotTime:r(0).CT,pivotPrice:r(0).TT,upperTime:r(1).CT,upperPrice:r(1).TT,lowerTime:r(2).CT,lowerPrice:r(2).TT,...e});case"polygon":return ul(t,{points:n.map((t,i)=>{const s={};return s.time=r(i).CT,s.price=r(i).TT,s}),...e});case"crossLine":return ll(t,{time:r(0).CT,price:r(0).TT,...e});case"verticalLine":return Sl(t,{time:r(0).CT,...e});case"fibRetracement":return Rl(t,{point1Time:r(0).CT,point1Price:r(0).TT,point2Time:r(1).CT,point2Price:r(1).TT,useExtended:h?.useExtended,levels:h?.levels,levelColors:e?.levelColors,...e});case"fibExtension":{const i=r(0),s=r(1),n=r(2);return Ll(t,{point1:i.CT?{time:i.CT,price:i.TT}:void 0,point2:s.CT?{time:s.CT,price:s.TT}:void 0,point3:n.CT?{time:n.CT,price:n.TT}:void 0,levels:h?.levels,...e})}case"fibFan":return zl(t,{point1Time:r(0).CT,point1Price:r(0).TT,point2Time:r(1).CT,point2Price:r(1).TT,levels:h?.levels,...e});case"rectangle":return Ul(t,{time1:r(0).CT,price1:r(0).TT,time2:r(1).CT,price2:r(1).TT,...e});case"circle":return Kl(t,{centerTime:r(0).CT,centerPrice:r(0).TT,radiusTime:h?.radiusTime,radiusPrice:h?.radiusPrice,...e});case"arrow":return Jl(t,{points:n.map(t=>({gt:t.time,bt:t.price})),...e});case"brush":return no(t,{points:n.map(t=>({gt:t.time,bt:t.price})),...e});case"text":return lo(t,{time:r(0).CT,price:r(0).TT,text:h?.text,...e});case"ruler":return vo(t,{point1Time:r(0).CT,point1Price:r(0).TT,point2Time:r(1).CT,point2Price:r(1).TT,symbol:h?.symbol,pipConfig:h?.pipConfig,measure:h?.measure,...e});case"position":return bo(t,{entryPrice:r(0).TT,entryTime:r(0).CT,endTime:h?.endTime,stopLoss:h?.stopLoss,takeProfit:h?.takeProfit,quantity:h?.quantity,pipConfig:h?.pipConfig,...e});case"gantt":return xo(t,{segments:h?.segments,...e});default:throw new Error(`Unknown drawing tool type: ${s}`)}}destroy(){this.clearAll(),this.kT()}mT(){this.XS=t=>{this.Px(t)},this.Vf.subscribeClick(this.XS),this.sp=t=>{this.Cx(t)},this.Vf.subscribeCrosshairMove(this.sp);const t=this.Vf.chartElement();t&&(this.aT=t=>this.DT(t),this._T=t=>this.IT(),this.uT=t=>this.IT(),t.addEventListener("pointerdown",this.aT),t.addEventListener("pointerup",this._T),t.addEventListener("pointercancel",this.uT)),this.Cs.enableKeyboardShortcuts&&(this.oT=t=>{this.RT(t)},document.addEventListener("keydown",this.oT))}kT(){this.XS&&(this.Vf.unsubscribeClick(this.XS),this.XS=null),this.sp&&(this.Vf.unsubscribeCrosshairMove(this.sp),this.sp=null);const t=this.Vf.chartElement();t&&(this.aT&&(t.removeEventListener("pointerdown",this.aT),this.aT=null),this._T&&(t.removeEventListener("pointerup",this._T),this._T=null),this.uT&&(t.removeEventListener("pointercancel",this.uT),this.uT=null)),this.oT&&(document.removeEventListener("keydown",this.oT),this.oT=null)}Px(t){if(!t.point)return;if(this.cT)return void(this.cT=!1);if(this.Lx)return;const i=this.VT(t.hoveredObjectId);i?this.selectTool(i):this.wT()}Cx(t){if(this.dT=t.point?{ut:t.point.x,ct:t.point.y}:null,!t.point)return;if(this.Lx&&this.vT){const i=this.eT.get(this.vT);if(i){const s=i.series(),n=s.coordinateToPrice(t.point.y),e=s?Gn(this.Vf,s,t.point.x):null;null!==n&&null!==e&&i.updateDrag(e,n)}return}const i=this.VT(t.hoveredObjectId);if(this.rT&&this.rT!==i){const t=this.eT.get(this.rT);t&&t.setHovered(!1)}if(i){const t=this.eT.get(i);t&&t.setHovered(!0)}this.rT=i}VT(t){if("string"!=typeof t)return null;const i=t.split("#")[0];for(const[t,s]of this.eT)if(s.id===i)return t;return null}DT(t){qr(this.Vf,!1);const i=this.Vf.chartElement();if(!i)return;const s=null!==this.rT&&null!==this.dT?{FT:this.rT,kw:this.dT}:this.ET(t);if(null===s)return;const{FT:n,kw:e}=s,h=this.eT.get(n);if(!h||h.isLocked())return;const r=h.hitTestEndpoint(e.ut,e.ct),l=this.LT(h,e.ut,e.ct);null!==r&&null!==l&&(qr(this.Vf,!0),this.selectTool(n),this.Lx=!0,this.cT=!0,this.vT=n,this.bS=t.pointerId,i.setPointerCapture(t.pointerId),h.startDrag(r,l),this.AT())}IT(){if(!this.Lx||null===this.vT)return;const t=this.eT.get(this.vT);t&&t.stopDrag(),this.HS(),this.BT(),this.Lx=!1,this.vT=null,this.recordChange()}xT(t){try{return t.series().getPane().getHTMLElement()}catch(t){return null}}ET(t){for(const[i,s]of this.eT){if(!s.isVisible()||s.isLocked())continue;const n=this.xT(s);if(null===n)continue;const e=n.getBoundingClientRect(),h={ut:t.clientX-e.left,ct:t.clientY-e.top};if(s.hitTest(h.ut,h.ct))return{FT:i,kw:h}}return null}HS(){if(null===this.bS)return;const t=this.Vf.chartElement();t&&t.hasPointerCapture(this.bS)&&t.releasePointerCapture(this.bS),this.bS=null}AT(){const t=this.Vf.options();this.pT={WT:t.handleScroll,OT:t.handleScale},this.Vf.applyOptions({handleScroll:!1,handleScale:!1})}BT(){const t=this.pT;this.pT=null,null!==t&&this.Vf.applyOptions({handleScroll:t.WT,handleScale:t.OT})}RT(t){"Delete"!==t.key&&"Backspace"!==t.key||this.deleteSelected()&&t.preventDefault();const i=t.metaKey||t.ctrlKey;if(i&&"z"===t.key.toLowerCase()){return void((t.shiftKey?this.redo():this.undo())&&t.preventDefault())}i&&"y"===t.key.toLowerCase()?this.redo()&&t.preventDefault():"Escape"===t.key&&(this.IT(),this.wT(),this.stopDrawing(),t.preventDefault())}LT(t,i,s){const n=t.series().coordinateToPrice(s);return null==n?null:{price:n,time:Gn(this.Vf,t.series(),i)}}wT(){this.gT(null)}}const Co={...t,color:"#2196f3"};function To(){return"2.1.0"}export{Te as AreaSeries,Zl as ArrowTool,Re as BarSeries,xe as BaselineSeries,io as BrushTool,Ee as CandlestickSeries,Yl as CircleTool,Ei as ColorType,rl as CrossLineTool,U as CrosshairMode,gr as DEFAULT_SESSIONS,Ir as DraggablePriceLine,Po as DrawingToolsManager,Pl as EXTENDED_FIBONACCI_RATIOS,Cl as FibonacciCalculator,El as FibonacciExtensionTool,Ol as FibonacciFanTool,Il as FibonacciTool,So as GanttTool,Be as HistogramSeries,sl as HorizontalLineTool,Vr as InteractiveLineManager,Vi as LastPriceAnimationMode,le as LineSeries,s as LineStyle,i as LineType,xt as MismatchDirection,pl as ParallelChannelTool,wl as PitchforkTool,_l as PolygonTool,oo as PositionCalculator,Ih as PositionMarkersManager,go as PositionTool,Fi as PriceLineSource,di as PriceScaleMode,Nl as RectangleTool,uo as RulerCalculator,fo as RulerTool,xl as STANDARD_FIBONACCI_RATIOS,ro as TextTool,Li as TickMarkType,Ri as TrackingModeExitMode,br as TradingSessionsIndicator,Jr as TrendLineTool,yl as VerticalLineTool,xr as VolumeProfileIndicator,dr as applyADX,_r as applyATR,jh as applyBollingerBands,pr as applyCCI,Kh as applyDonchianChannels,Uh as applyEMA,rr as applyHeikinAshi,sr as applyIchimoku,Yh as applyKeltnerChannels,or as applyMACD,vr as applyMFI,cr as applyOBV,Gh as applyParabolicSAR,nr as applyPivotPoints,lr as applyRSI,Nh as applySMA,ar as applyStochastic,Jh as applySuperTrend,Zh as applyVWAP,ur as applyVolume,qh as applyWMA,fr as applyWilliamsR,hr as calculateHeikinAshi,ao as calculatePipConfig,Xn as coordinateFromTime,Jl as createArrowTool,no as createBrushTool,jn as createChart,qn as createChartEx,Kl as createCircleTool,ll as createCrossLineTool,Ll as createFibonacciExtensionTool,zl as createFibonacciFanTool,Rl as createFibonacciTool,xo as createGanttTool,nl as createHorizontalLineTool,ih as createImageWatermark,Fr as createInteractiveLineManager,me as createOptionsChart,fl as createParallelChannelTool,gl as createPitchforkTool,ul as createPolygonTool,Rh as createPositionMarkers,bo as createPositionTool,Ul as createRectangleTool,vo as createRulerTool,bh as createSeriesMarkers,lo as createTextTool,Ke as createTextWatermark,Rr as createTradingLine,Mr as createTradingSessionsIndicator,Qr as createTrendLineTool,Dh as createUpDownMarkers,Sl as createVerticalLineTool,Pr as createVolumeProfileIndicator,pe as createYieldCurveChart,Co as customSeriesDefaultOptions,Yn as defaultHorzScaleBehavior,_o as getPipConfig,Wi as isBusinessDay,Oi as isUTCTimestamp,Eh as setSeriesVolumes,Cr as setVolumeProfileData,Gn as timeFromCoordinate,To as version};
|