@pipsend/charts 1.3.0 → 2.0.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/dist/pipsend-charts.development.mjs +29218 -0
- package/dist/pipsend-charts.production.mjs +8 -0
- package/dist/pipsend-charts.standalone.development.js +29735 -0
- package/dist/pipsend-charts.standalone.development.mjs +29611 -0
- package/dist/pipsend-charts.standalone.production.js +8 -0
- package/dist/pipsend-charts.standalone.production.mjs +8 -0
- package/dist/typings.d.ts +7784 -0
- package/package.json +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* @license
|
|
3
|
+
* Pipsend Charts v1.3.1
|
|
4
|
+
* Copyright (c) 2026 Pipsend
|
|
5
|
+
* Licensed under MIT License
|
|
6
|
+
* Built on TradingView Lightweight Charts™ (Apache 2.0)
|
|
7
|
+
*/
|
|
8
|
+
!function(){"use strict";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 e(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 n(t,i,s,e){t.beginPath();const n=t.lineWidth%2?.5:0;t.moveTo(s,i+n),t.lineTo(e,i+n),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 e={h:t,l:i,o:!0===s};this.t.push(e)}_(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 e=[...this.t];this.t=this.t.filter(t=>!t.o),e.forEach(e=>e.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,e,n;for(e in s=Array.isArray(i)?[]:{},i)i.hasOwnProperty(e)&&(n=i[e],s[e]=n&&"object"==typeof n?p(n):n);return s}function v(t){return null!==t}function m(t){return null===t?void 0:t}const g="-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif";function w(t,i,s){return void 0===i&&(i=g),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class M{constructor(t){this.M={S:1,T:5,P:NaN,C:"",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.P===i&&t.D===s||(t.P=i,t.D=s,t.C=w(i,s),t.F=2.5/12*i,t.L=t.F,t.A=i/12*t.T,t.I=i/12*t.T,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),e=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*e})`}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[e,n,h,r]=this.K(t),[l,a,o,_]=this.K(i),u=[b(e+s*(l-e)),b(n+s*(a-n)),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),e=s.match(/^rgba?\s*\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)$/);if(!e){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 n=[parseInt(e[1],10),parseInt(e[2],10),parseInt(e[3],10),e[4]?parseFloat(e[4]):1];return this.j.set(t,n),n}}class x{constructor(){this.st=[]}et(t){this.st=t}nt(t,i,s){this.st.forEach(e=>{e.nt(t,i,s)})}}class T{nt(t,i,s){t.useBitmapCoordinateSpace(t=>this.ht(t,i,s))}}class P extends T{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 e=this.rt.ot,n=this.rt,h=Math.max(1,Math.floor(i))%2/2,r=r=>{t.beginPath();for(let l=e.to-1;l>=e.from;--l){const e=n._t[l],a=Math.round(e.ut*i)+h,o=e.ct*s,_=r*s+h;t.moveTo(a,o),t.arc(a,o,_,0,2*Math.PI)}t.fill()};n.dt>0&&(t.fillStyle=n.ft,r(n.vt+n.dt)),t.fillStyle=n.gt,r(n.vt)}}function C(){return{_t:[{ut:0,ct:0,wt:0,Mt:0}],gt:"",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.Tt=i,this.Pt=s,this.bt.et(this.yt)}Ct(t){this.kt(),this.xt=!0}Dt(){return this.xt&&(this.Rt(),this.xt=!1),this.bt}kt(){const t=this.Pt.Et();t.length!==this.yt.length&&(this.St=t.map(C),this.yt=this.St.map(t=>{const i=new P;return i.lt(t),i}),this.bt.et(this.yt))}Rt(){const t=2===this.Tt.W().mode||!this.Tt.Vt(),i=this.Pt.Lt(),s=this.Tt.At(),e=this.O.It();this.kt(),i.forEach((i,n)=>{const h=this.St[n],r=i.Ft(s),l=i.Bt();!t&&null!==r&&i.Vt()&&null!==l?(h.gt=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].wt=s,h._t[0].ut=e.jt(s),h.ot=k):h.ot=null})}}class R extends T{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,e(t,this.Yt.Gt.Xt),function(t,i,s,e){t.beginPath();const n=t.lineWidth%2?.5:0;t.moveTo(i+n,s),t.lineTo(i+n,e),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,e(t,this.Yt.Kt.Xt),n(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.Pt=i}Ct(){this.xt=!0}Dt(t){return this.xt&&(this.Rt(),this.xt=!1),this.Jt}Rt(){const t=this.Qt.Vt(),i=this.Pt.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.Pt),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.ei(),s.ct=this.Qt.ni()}}function V(t,i,s,e,n,h){t.fillRect(i+h,s,e-2*h,h),t.fillRect(i+h,s+n-h,e-2*h,h),t.fillRect(i,s,h,n),t.fillRect(i+e-h,s,h,n)}function L(t,i,s,e,n,h){t.save(),t.globalCompositeOperation="copy",t.fillStyle=h,t.fillRect(i,s,e,n),t.restore()}function A(t,i,s,e,n,h){t.beginPath(),t.roundRect?t.roundRect(i,s,e,n,h):(t.lineTo(i+e-h[1],s),0!==h[1]&&t.arcTo(i+e,s,i+e,s+h[1],h[1]),t.lineTo(i+e,s+n-h[2]),0!==h[2]&&t.arcTo(i+e,s+n,i+e-h[2],s+n,h[2]),t.lineTo(i+h[3],s+n),0!==h[3]&&t.arcTo(i,s+n,i,s+n-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,e,n,h,r=0,l=[0,0,0,0],a=""){if(t.save(),!r||!a||a===h)return A(t,i,s,e,n,l),t.fillStyle=h,t.fill(),void t.restore();const o=r/2;var _;A(t,i+o,s+o,e-r,n-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,e,n,h,r){t.save(),t.globalCompositeOperation="copy";const l=t.createLinearGradient(0,0,0,n);l.addColorStop(0,h),l.addColorStop(1,r),t.fillStyle=l,t.fillRect(i,s,e,n),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.P+t.F+t.L:0}nt(t,i,s,e){if(!this.Yt.Vt||0===this.Yt.ri.length)return;const n=this.Yt.R,h=this.hi.Z,r=t.useBitmapCoordinateSpace(t=>{const r=t.context;r.font=i.C;const l=this.li(t,i,s,e),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=n,r.fillRect(a.pi,a.gi,a.wi-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.C,t.textAlign=r.oi?"right":"left",t.textBaseline="middle",t.fillStyle=n,t.fillText(this.Yt.ri,s.Ti,(s.ui+s.Si)/2+s.Pi)})}li(t,i,s,e){const{context:n,bitmapSize:h,mediaSize:r,horizontalPixelRatio:l,verticalPixelRatio:a}=t,o=this.Yt.mi||!this.Yt.Ci?i.T: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.P,m=s.Ei(n,p),g=Math.ceil(s.Vi(n,p)),w=v+u+c,M=i.S+d+f+g+o,b=Math.max(1,Math.floor(a));let y=Math.round(w*a);y%2!=b%2&&(y+=1);const S=_>0?Math.max(1,Math.floor(_*l)):0,x=Math.round(M*l),T=Math.round(o*l),P=this.hi.Li??this.hi.Ai,C=Math.round(P*a)-Math.floor(.5*a),k=Math.floor(C+b/2-y/2),D=k+y,R="right"===e,E=R?r.width-_:_,V=R?h.width-S:S;let L,A,I;return R?(L=V-x,A=V-T,I=E-o-d-_):(L=V+x,A=V+T,I=E+o+d),{oi:R,ai:{ui:k,gi:C,Si:D,ci:x,di:y,vt:2*l,fi:S,_i:L,pi:V,wi:A,Mi:b,yi:h.width},xi:{ui:k/a,Si:D/a,Ti:I,Pi:m}}}}class z{constructor(t){this.Ii={Ai:0,Z:"#000",Ri:0,Di:0},this.Fi={ri:"",Vt:!1,mi:!0,Ci:!1,Nt:"",R:"#FFF",bi:!1,ki:!1},this.Bi={ri:"",Vt:!1,mi:!1,Ci:!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}Ct(){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 e=this.Qt.W().horzLine;if(!e.labelVisible)return;const n=this.Yi.Bt();if(!this.Qt.Vt()||this.Yi.Ki()||null===n)return;const h=this.Yi.Xi().X(e.labelBackgroundColor);s.Z=h.Z,t.R=h.J;const r=2/12*this.Yi.P();s.Di=r,s.Ri=r;const l=this.Gi(this.Yi);s.Ai=l.Ai,t.ri=this.Yi.Zi(l.Mt,n),t.Vt=!0}}const W=/[1-9]/g;class ${constructor(){this.Yt=null}lt(t){this.Yt=t}nt(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.C,Math.round(i.Ji.Vi(t,l(this.Yt).ri,W))));if(s<=0)return;const e=i.Qi,n=s+2*e,h=n/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+n>r&&(a-=Math.abs(r-(o+n)),o=Math.floor(a-h)+.5);const _=o+n,u=Math.ceil(0+i.S+i.T+i.F+i.P+i.L);t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:s,verticalPixelRatio:e})=>{const n=l(this.Yt);t.fillStyle=n.Z;const h=Math.round(o*s),r=Math.round(0*e),a=Math.round(_*s),c=Math.round(u*e),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(),n.mi){const h=Math.round(n.Ai*s),l=r,a=Math.round((l+i.T)*e);t.fillStyle=n.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),n=0+i.S+i.T+i.F+i.P/2;t.font=i.C,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.R;const h=i.Ji.Ei(t,"Apr0");t.translate(o+e,n+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.Tt=t,this.ss=i,this.Gi=s}Ct(){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.Tt.W().mode)return;const i=this.Tt.W().vertLine;if(!i.labelVisible)return;const s=this.ss.It();if(s.Ki())return;t.ts=s.ts();const e=this.Gi();if(null===e)return;t.Ai=e.Ai;const n=s.es(this.Tt.At());t.ri=s.ns(l(n)),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.Pt=null,this.fs=NaN,this.ps=0,this.vs=!1,this.gs=new Map,this.ws=!1,this.Ms=new WeakMap,this.bs=new WeakMap,this.ys=NaN,this.Ss=NaN,this.xs=NaN,this.Ts=NaN,this.ss=t,this.Ps=i;this.Cs=((t,i)=>s=>{const e=i(),n=t();if(s===l(this.Pt).ks())return{Mt:n,Ai:e};{const t=l(s.Bt());return{Mt:s.Ds(e,t),Ai:e}}})(()=>this.fs,()=>this.Ss);const s=((t,i)=>()=>{const s=this.ss.It().Rs(t()),e=i();return s&&Number.isFinite(e)?{wt:s,Ai:e}:null})(()=>this.ps,()=>this.ei());this.Es=new H(this,t,s)}W(){return this.Ps}Vs(t,i){this.xs=t,this.Ts=i}Ls(){this.xs=NaN,this.Ts=NaN}As(){return this.xs}Is(){return this.Ts}Fs(t,i,s){this.ws||(this.ws=!0),this.vs=!0,this.Bs(t,i,s)}At(){return this.ps}ei(){return this.ys}ni(){return this.Ss}Vt(){return this.vs}zs(){this.vs=!1,this.Os(),this.fs=NaN,this.ys=NaN,this.Ss=NaN,this.Pt=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.Pt&&this.Ps.horzLine.visible}si(){return this.Ps.vertLine.visible}Hs(t,i){this.vs&&this.Pt===t||this.gs.clear();const s=[];return this.Pt===t&&s.push(this.Ns(this.gs,i,this.Cs)),s}ds(){return this.vs?[this.Es]:[]}Us(){return this.Pt}Ws(){this.ss.qs().forEach(t=>{this.Ms.get(t)?.Ct(),this.bs.get(t)?.Ct()}),this.gs.forEach(t=>t.Ct()),this.Es.Ct()}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 e=this.ys,n=this.Ss,h=this.fs,r=this.ps,l=this.Pt,a=this.js(s);this.ps=t,this.ys=isNaN(t)?NaN:this.ss.It().jt(t),this.Pt=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),e!==this.ys||n!==this.Ss||r!==this.ps||h!==this.fs||l!==this.Pt}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 e=t.get(i);return void 0===e&&(e=new O(this,i,s),t.set(i,e)),e}}function j(t){return"left"===t||"right"===t}class Y{constructor(t){this.Zs=new Map,this.Js=[],this.Qs=t}te(t,i){const s=function(t,i){return void 0===t?i:{ie:Math.max(t.ie,i.ie),se:t.se||i.se}}(this.Zs.get(t),i);this.Zs.set(t,s)}ee(){return this.Qs}ne(t){const i=this.Zs.get(t);return void 0===i?{ie:this.Qs}:{ie:Math.max(this.Qs,i.ie),se:i.se}}he(){this.re(),this.Js=[{le:0}]}ae(t){this.re(),this.Js=[{le:1,Ht:t}]}oe(t){this._e(),this.Js.push({le:5,Ht:t})}re(){this._e(),this.Js.push({le:6})}ue(){this.re(),this.Js=[{le:4}]}ce(t){this.re(),this.Js.push({le:2,Ht:t})}de(t){this.re(),this.Js.push({le:3,Ht:t})}fe(){return this.Js}pe(t){for(const i of t.Js)this.ve(i);this.Qs=Math.max(this.Qs,t.Qs),t.Zs.forEach((t,i)=>{this.te(i,t)})}static me(){return new Y(2)}static ge(){return new Y(3)}ve(t){switch(t.le){case 0:this.he();break;case 1:this.ae(t.Ht);break;case 2:this.ce(t.Ht);break;case 3:this.de(t.Ht);break;case 4:this.ue();break;case 5:this.oe(t.Ht);break;case 6:this._e()}}_e(){const t=this.Js.findIndex(t=>5===t.le);-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.we=i,this.Me()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.be(t)}Me(){if(this.ye=0,this.Yi>0&&this.we>0){let t=this.Yi;for(;t>1;)t/=10,this.ye++}}be(t){const i=this.Yi/this.we;let s=Math.floor(t),e="";const n=void 0!==this.ye?this.ye:NaN;if(i>1){let h=+(Math.round(t*i)-s*i).toFixed(this.ye);h>=i&&(h-=i,s+=1),e=K+X(+h.toFixed(this.ye)*this.we,n)}else s=Math.round(s*i)/i,n>0&&(e=K+X(0,n));return s.toFixed(0)+e}}class J extends Z{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class Q extends G{constructor(t){super(),this.Se=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.xe(t):t<999995?i+this.xe(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.xe(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.xe(t/1e9)+"B")}xe(t){let i;const s=Math.pow(10,this.Se);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.Se).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,(t,i)=>i)}}const tt=/[2-9]/g;class it{constructor(t=50){this.Te=0,this.Pe=1,this.Ce=1,this.ke={},this.De=new Map,this.Re=t}Ee(){this.Te=0,this.De.clear(),this.Pe=1,this.Ce=1,this.ke={}}Vi(t,i,s){return this.Ve(t,i,s).width}Ei(t,i,s){const e=this.Ve(t,i,s);return((e.actualBoundingBoxAscent||0)-(e.actualBoundingBoxDescent||0))/2}Ve(t,i,s){const e=s||tt,n=String(i).replace(e,"0");if(this.De.has(n))return r(this.De.get(n)).Le;if(this.Te===this.Re){const t=this.ke[this.Ce];delete this.ke[this.Ce],this.De.delete(t),this.Ce++,this.Te--}t.save(),t.textBaseline="middle";const h=t.measureText(n);return t.restore(),0===h.width&&i.length||(this.De.set(n,{Le:h,Ae:this.Pe}),this.ke[this.Pe]=n,this.Te++,this.Pe++),h}}class st{constructor(t){this.Ie=null,this.M=null,this.Fe="right",this.Be=t}ze(t,i,s){this.Ie=t,this.M=i,this.Fe=s}nt(t){null!==this.M&&null!==this.Ie&&this.Ie.nt(t,this.M,this.Be,this.Fe)}}class et{constructor(t,i,s){this.Oe=t,this.Be=new it(50),this.We=i,this.O=s,this.$=-1,this.Jt=new st(this.Be)}Dt(){const t=this.O.$e(this.We);if(null===t)return null;const i=t.He(this.We)?t.Ne():this.We.$t();if(null===i)return null;const s=t.Ue(i);if("overlay"===s)return null;const e=this.O.qe();return e.P!==this.$&&(this.$=e.P,this.Be.Ee()),this.Jt.ze(this.Oe.qi(),e,s),this.Jt}}class nt extends T{constructor(){super(...arguments),this.Yt=null}lt(t){this.Yt=t}je(t,i){if(!this.Yt?.Vt)return null;const{ct:s,dt:e,Ye:n}=this.Yt;return i>=s-e-7&&i<=s+e+7?{Ge:this.Yt,Ye:n}: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),e(t,this.Yt.Xt),n(t,r,0,i.width))}}class ht{constructor(t){this.Ke={ct:0,R:"rgba(0, 0, 0, 0)",dt:1,Xt:0,Vt:!1},this.Xe=new nt,this.xt=!0,this.Ze=t,this.Je=t.ti(),this.Xe.lt(this.Ke)}Ct(){this.xt=!0}Dt(){return this.Ze.Vt()?(this.xt&&(this.Qe(),this.xt=!1),this.Xe):null}}class rt extends ht{constructor(t){super(t)}Qe(){this.Ke.Vt=!1;const t=this.Ze.$t(),i=t.tn().tn;if(2!==i&&3!==i)return;const s=this.Ze.W();if(!s.baseLineVisible||!this.Ze.Vt())return;const e=this.Ze.Bt();null!==e&&(this.Ke.Vt=!0,this.Ke.ct=t.Wt(e.Ht,e.Ht),this.Ke.R=s.baseLineColor,this.Ke.dt=s.baseLineWidth,this.Ke.Xt=s.baseLineStyle)}}class lt extends T{constructor(){super(...arguments),this.Yt=null}lt(t){this.Yt=t}sn(){return this.Yt}ht({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const e=this.Yt;if(null===e)return;const n=Math.max(1,Math.floor(i)),h=n%2/2,r=Math.round(e.en.x*i)+h,l=e.en.y*s;t.fillStyle=e.nn,t.beginPath();const a=Math.max(2,1.5*e.hn)*i;t.arc(r,l,a,0,2*Math.PI,!1),t.fill(),t.fillStyle=e.rn,t.beginPath(),t.arc(r,l,e.vt*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=n,t.strokeStyle=e.ln,t.beginPath(),t.arc(r,l,e.vt*i+n/2,0,2*Math.PI,!1),t.stroke()}}const at=[{an:0,_n:.25,un:4,cn:10,dn:.25,fn:0,pn:.4,vn:.8},{an:.25,_n:.525,un:10,cn:14,dn:0,fn:0,pn:.8,vn:0},{an:.525,_n:1,un:14,cn:14,dn:0,fn:0,pn:0,vn:0}];class ot{constructor(t){this.Jt=new lt,this.xt=!0,this.mn=!0,this.gn=performance.now(),this.wn=this.gn-1,this.Mn=t}bn(){this.wn=this.gn-1,this.Ct()}yn(){if(this.Ct(),2===this.Mn.W().lastPriceAnimation){const t=performance.now(),i=this.wn-t;if(i>0)return void(i<650&&(this.wn+=2600));this.gn=t,this.wn=t+2600}}Ct(){this.xt=!0}Sn(){this.mn=!0}Vt(){return 0!==this.Mn.W().lastPriceAnimation}xn(){switch(this.Mn.W().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.wn}}Dt(){return this.xt?(this.Rt(),this.xt=!1,this.mn=!1):this.mn&&(this.Tn(),this.mn=!1),this.Jt}Rt(){this.Jt.lt(null);const t=this.Mn.ti().It(),i=t.Pn(),s=this.Mn.Bt();if(null===i||null===s)return;const e=this.Mn.Cn(!0);if(e.kn||!i.Dn(e.Rn))return;const n={x:t.jt(e.Rn),y:this.Mn.$t().Wt(e.Mt,s.Ht)},h=e.R,r=this.Mn.W().lineWidth,l=this.En(this.Vn(),h);this.Jt.lt({nn:h,hn:r,rn:l.rn,ln:l.ln,vt:l.vt,en:n})}Tn(){const t=this.Jt.sn();if(null!==t){const i=this.En(this.Vn(),t.nn);t.rn=i.rn,t.ln=i.ln,t.vt=i.vt}}Vn(){return this.xn()?performance.now()-this.gn:2599}Ln(t,i,s,e){const n=s+(e-s)*i;return this.Mn.ti().Xi().G(t,n)}En(t,i){const s=t%2600/2600;let e;for(const t of at)if(s>=t.an&&s<=t._n){e=t;break}h(void 0!==e,"Last price animation internal logic error");const n=(s-e.an)/(e._n-e.an);return{rn:this.Ln(i,n,e.dn,e.fn),ln:this.Ln(i,n,e.pn,e.vn),vt:(r=n,l=e.un,a=e.cn,l+(a-l)*r)};var r,l,a}}class _t extends ht{constructor(t){super(t)}Qe(){const t=this.Ke;t.Vt=!1;const i=this.Ze.W();if(!i.priceLineVisible||!this.Ze.Vt())return;const s=this.Ze.Cn(0===i.priceLineSource);s.kn||(t.Vt=!0,t.ct=s.Ai,t.R=this.Ze.An(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 e=this.Qt;if(!e.Vt())return;const n=e.W(),h=n.lastValueVisible,r=""!==e.In(),l=0===n.seriesLastValueMode,a=e.Cn(!1);if(a.kn)return;h&&(t.ri=this.Fn(a,h,l),t.Vt=0!==t.ri.length),(r||l)&&(i.ri=this.Bn(a,h,r,l),i.Vt=i.ri.length>0);const o=e.An(a.R),_=this.Qt.ti().Xi().X(o);s.Z=_.Z,s.Ai=a.Ai,i.Nt=e.ti().Ut(a.Ai/e.$t().qt()),t.Nt=o,t.R=_.J,i.R=_.J}Bn(t,i,s,e){let n="";const h=this.Qt.In();return s&&0!==h.length&&(n+=`${h} `),i&&e&&(n+=this.Qt.$t().zn()?t.On:t.Wn),n.trim()}Fn(t,i,s){return i?s?this.Qt.$t().zn()?t.Wn:t.On:t.ri:""}}function ct(t,i,s,e){const n=Number.isFinite(i),h=Number.isFinite(s);return n&&h?t(i,s):n||h?n?i:s:e}class dt{constructor(t,i){this.$n=t,this.Hn=i}Nn(t){return null!==t&&(this.$n===t.$n&&this.Hn===t.Hn)}Un(){return new dt(this.$n,this.Hn)}qn(){return this.$n}jn(){return this.Hn}Yn(){return this.Hn-this.$n}Ki(){return this.Hn===this.$n||Number.isNaN(this.Hn)||Number.isNaN(this.$n)}pe(t){return null===t?this:new dt(ct(Math.min,this.qn(),t.qn(),-1/0),ct(Math.max,this.jn(),t.jn(),1/0))}Gn(t){if(!u(t))return;if(0===this.Hn-this.$n)return;const i=.5*(this.Hn+this.$n);let s=this.Hn-i,e=this.$n-i;s*=t,e*=t,this.Hn=i+s,this.$n=i+e}Kn(t){u(t)&&(this.Hn+=t,this.$n+=t)}Xn(){return{minValue:this.$n,maxValue:this.Hn}}static Zn(t){return null===t?null:new dt(t.minValue,t.maxValue)}}class ft{constructor(t,i){this.Jn=t,this.Qn=i||null}th(){return this.Jn}ih(){return this.Qn}Xn(){return{priceRange:null===this.Jn?null:this.Jn.Xn(),margins:this.Qn||void 0}}static Zn(t){return null===t?null:new ft(dt.Zn(t.priceRange),t.margins)}}class pt extends ht{constructor(t,i){super(t),this.sh=i}Qe(){const t=this.Ke;t.Vt=!1;const i=this.sh.W();if(!this.Ze.Vt()||!i.lineVisible)return;const s=this.sh.eh();null!==s&&(t.Vt=!0,t.ct=s,t.R=i.color,t.dt=i.lineWidth,t.Xt=i.lineStyle,t.Ye=this.sh.W().id)}}class vt extends z{constructor(t,i){super(),this.Mn=t,this.sh=i}ji(t,i,s){t.Vt=!1,i.Vt=!1;const e=this.sh.W(),n=e.axisLabelVisible,h=""!==e.title,r=this.Mn;if(!n||!r.Vt())return;const l=this.sh.eh();if(null===l)return;h&&(i.ri=e.title,i.Vt=!0),i.Nt=r.ti().Ut(l/r.$t().qt()),t.ri=this.nh(e.price),t.Vt=!0;const a=this.Mn.ti().Xi().X(e.axisLabelColor||e.color);s.Z=a.Z;const o=e.axisLabelTextColor||a.J;t.R=o,i.R=o,s.Ai=l}nh(t){const i=this.Mn.Bt();return null===i?"":this.Mn.$t().Zi(t,i.Ht)}}class mt{constructor(t,i){this.Mn=t,this.Ps=i,this.hh=new pt(t,this),this.Oe=new vt(t,this),this.rh=new et(this.Oe,t,t.ti())}ah(t){_(this.Ps,t),this.Ct(),this.Mn.ti().oh()}W(){return this.Ps}_h(){return this.hh}uh(){return this.rh}dh(){return this.Oe}Ct(){this.hh.Ct(),this.Oe.Ct()}eh(){const t=this.Mn,i=t.$t();if(t.ti().It().Ki()||i.Ki())return null;const s=t.Bt();return null===s?null:i.Wt(this.Ps.price,s.Ht)}}class gt extends N{constructor(t){super(),this.ss=t}ti(){return this.ss}}const wt={Bar:(t,i,s,e)=>{const n=i.upColor,h=i.downColor,r=l(t(s,e)),o=a(r.Ht[0])<=a(r.Ht[3]);return{fh:r.R??(o?n:h)}},Candlestick:(t,i,s,e)=>{const n=i.upColor,h=i.downColor,r=i.borderUpColor,o=i.borderDownColor,_=i.wickUpColor,u=i.wickDownColor,c=l(t(s,e)),d=a(c.Ht[0])<=a(c.Ht[3]);return{fh:c.R??(d?n:h),ph:c.Nt??(d?r:o),mh:c.gh??(d?_:u)}},Custom:(t,i,s,e)=>({fh:l(t(s,e)).R??i.color}),Area:(t,i,s,e)=>{const n=l(t(s,e));return{fh:n.gt??i.lineColor,gt:n.gt??i.lineColor,wh:n.wh??i.topColor,Mh:n.Mh??i.bottomColor}},Baseline:(t,i,s,e)=>{const n=l(t(s,e));return{fh:n.Ht[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,bh:n.bh??i.topLineColor,yh:n.yh??i.bottomLineColor,Sh:n.Sh??i.topFillColor1,xh:n.xh??i.topFillColor2,Th:n.Th??i.bottomFillColor1,Ph:n.Ph??i.bottomFillColor2}},Line:(t,i,s,e)=>{const n=l(t(s,e));return{fh:n.R??i.color,gt:n.R??i.color}},Histogram:(t,i,s,e)=>({fh:l(t(s,e)).R??i.color})};class Mt{constructor(t){this.Ch=(t,i)=>void 0!==i?i.Ht:this.Mn.Xs().kh(t),this.Mn=t,this.Dh=wt[t.Rh()]}Eh(t,i){return this.Dh(this.Ch,this.Mn.W(),t,i)}}function bt(t,i,s,e,n=0,h=i.length){let r=h-n;for(;0<r;){const h=r>>1,l=n+h;e(i[l],s)===t?(n=l+1,r-=h+1):r=h}return n}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 Tt=30;class Pt{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()}Dn(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),Rn:this.Oh(s)}}Nh(){return this.Vh}Uh(t,i,s){if(this.Ki())return null;let e=null;for(const n of s){e=Ct(e,this.qh(t,i,n))}return e}lt(t){this.Ah.clear(),this.Lh.clear(),this.Vh=t,this.Ih=t.map(t=>t.Rn)}jh(){return this.Ih}Oh(t){return this.Vh[t].Rn}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].Rn?null:i}Xh(t){return yt(this.Vh,t,(t,i)=>t.Rn<i)}Zh(t){return St(this.Vh,t,(t,i)=>t.Rn>i)}Jh(t,i,s){let e=null;for(let n=t;n<i;n++){const t=this.Vh[n].Ht[s];Number.isNaN(t)||(null===e?e={Qh:t,tr:t}:(t<e.Qh&&(e.Qh=t),t>e.tr&&(e.tr=t)))}return e}qh(t,i,s){if(this.Ki())return null;let e=null;const n=l(this.zh()),h=l(this.Ks()),r=Math.max(t,n),a=Math.min(i,h),o=Math.ceil(r/Tt)*Tt,_=Math.max(o,Math.floor(a/Tt)*Tt);{const t=this.Xh(r),n=this.Zh(Math.min(a,o,i));e=Ct(e,this.Jh(t,n,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+=Tt){const i=Math.floor(t/Tt);let n=u.get(i);if(void 0===n){const t=this.Xh(i*Tt),e=this.Zh((i+1)*Tt-1);n=this.Jh(t,e,s),u.set(i,n)}e=Ct(e,n)}{const t=this.Xh(_),i=this.Zh(a);e=Ct(e,this.Jh(t,i,s))}return e}}function Ct(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:e};class Dt{constructor(t){this.ir=t}nt(t,i,s){this.ir.draw(t,kt)}sr(t,i,s){this.ir.drawBackground?.(t,kt)}}class Rt{constructor(t){this.De=null,this.er=t}Dt(){const t=this.er.renderer();if(null===t)return null;if(this.De?.nr===t)return this.De.hr;const i=new Dt(t);return this.De={nr:t,hr:i},i}rr(){return this.er.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?.nr===t)return this.lr.hr;const i=t.map(t=>new Rt(t));return this.lr={nr:t,hr:i},i}je(t,i){return this.ar.hitTest?.(t,i)??null}}let Vt=class extends Et{cs(){return[]}};class Lt{constructor(t){this.ir=t}nt(t,i,s){this.ir.draw(t,kt)}sr(t,i,s){this.ir.drawBackground?.(t,kt)}}class At{constructor(t){this.De=null,this.er=t}Dt(){const t=this.er.renderer();if(null===t)return null;if(this.De?.nr===t)return this.De.hr;const i=new Lt(t);return this.De={nr:t,hr:i},i}rr(){return this.er.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 e=It(this.ur);s.Z=e.Z,t.R=e.R;const n=2/12*this.Yi.P();s.Di=n,s.Ri=n,s.Ai=e.Ai,s.Li=e.Li,t.ri=e.ri,t.Vt=e.Vt,t.mi=e.mi}}class zt extends Et{constructor(t,i){super(t),this.dr=null,this.pr=null,this.vr=null,this.mr=null,this.Mn=i}ds(){const t=this.ar.timeAxisViews?.()??[];if(this.dr?.nr===t)return this.dr.hr;const i=this.Mn.ti().It(),s=t.map(t=>new Ft(t,i));return this.dr={nr:t,hr:s},s}Hs(){const t=this.ar.priceAxisViews?.()??[];if(this.pr?.nr===t)return this.pr.hr;const i=this.Mn.$t(),s=t.map(t=>new Bt(t,i));return this.pr={nr:t,hr:s},s}gr(){const t=this.ar.priceAxisPaneViews?.()??[];if(this.vr?.nr===t)return this.vr.hr;const i=t.map(t=>new At(t));return this.vr={nr:t,hr:i},i}wr(){const t=this.ar.timeAxisPaneViews?.()??[];if(this.mr?.nr===t)return this.mr.hr;const i=t.map(t=>new At(t));return this.mr={nr:t,hr:i},i}Mr(t,i){return this.ar.autoscaleInfo?.(t,i)??null}}function Ot(t,i,s,e){t.forEach(t=>{i(t).forEach(t=>{t.rr()===s&&e.push(t)})})}function Wt(t){return t.$s()}function $t(t){return t.gr()}function Ht(t){return t.wr()}const Nt=["Area","Line","Baseline"];class Ut extends gt{constructor(t,i,s,e,n){super(t),this.Yt=new Pt,this.hh=new _t(this),this.br=[],this.yr=new rt(this),this.Sr=null,this.Tr=null,this.Pr=null,this.Cr=[],this.Ps=s,this.kr=i;const h=new ut(this);this.gs=[h],this.rh=new et(h,this,t),Nt.includes(this.kr)&&(this.Sr=new ot(this)),this.Dr(),this.er=e(this,this.ti(),n)}m(){null!==this.Pr&&clearTimeout(this.Pr)}An(t){return this.Ps.priceLineColor||t}Cn(t){const i={kn:!0},s=this.$t();if(this.ti().It().Ki()||s.Ki()||this.Yt.Ki())return i;const e=this.ti().It().Pn(),n=this.Bt();if(null===e||null===n)return i;let h,r;if(t){const t=this.Yt.Fh();if(null===t)return i;h=t,r=t.Rn}else{const t=this.Yt.$h(e.yi(),-1);if(null===t)return i;if(h=this.Yt.kh(t.Rn),null===h)return i;r=t.Rn}const l=h.Ht[3],a=this.Rr().Eh(r,{Ht:h}),o=s.Wt(l,n.Ht);return{kn:!1,Mt:l,ri:s.Zi(l,n.Ht),On:s.Er(l),Wn:s.Vr(l,n.Ht),R:a.fh,Ai:o,Rn:r}}Rr(){return null!==this.Tr||(this.Tr=new Mt(this)),this.Tr}W(){return this.Ps}ah(t){const i=t.priceScaleId;void 0!==i&&i!==this.Ps.priceScaleId&&this.ti().Lr(this,i),_(this.Ps,t),void 0!==t.priceFormat&&(this.Dr(),this.ti().Ar()),this.ti().Ir(this),this.ti().Fr(),this.er.Ct("options")}lt(t,i){this.Yt.lt(t),this.er.Ct("data"),null!==this.Sr&&(i&&i.Br?this.Sr.yn():0===t.length&&this.Sr.bn());const s=this.ti().$e(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.wt}}Hr(){const t=this.ti().It().Pn();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.Cr,Wt,"top",i);const s=this.Sr;return null!==s&&s.Vt()?(null===this.Pr&&s.xn()&&(this.Pr=setTimeout(()=>{this.Pr=null,this.ti().Zr()},0)),s.Sn(),i.unshift(s),i):i}$s(){const t=[];this.Jr()||t.push(this.yr),t.push(this.er,this.hh);const i=this.br.map(t=>t._h());return t.push(...i),Ot(this.Cr,Wt,"normal",t),t}Qr(){return this.tl(Wt,"bottom")}il(t){return this.tl($t,t)}sl(t){return this.tl(Ht,t)}el(t,i){return this.Cr.map(s=>s.je(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.gs];for(const t of this.br)s.push(t.dh());return this.Cr.forEach(t=>{s.push(...t.Hs())}),s}ds(){const t=[];return this.Cr.forEach(i=>{t.push(...i.ds())}),t}Mr(t,i){if(void 0!==this.Ps.autoscaleInfoProvider){const s=this.Ps.autoscaleInfoProvider(()=>{const s=this.nl(t,i);return null===s?null:s.Xn()});return ft.Zn(s)}return this.nl(t,i)}nr(){const t=this.Ps.priceFormat;return t.base??1/t.minMove}hl(){return this.rl}Ws(){this.er.Ct();for(const t of this.gs)t.Ct();for(const t of this.br)t.Ct();this.hh.Ct(),this.yr.Ct(),this.Sr?.Ct(),this.Cr.forEach(t=>t.Ws())}$t(){return l(super.$t())}Ft(t){if(!(("Line"===this.kr||"Area"===this.kr||"Baseline"===this.kr)&&this.Ps.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)}}In(){return this.Ps.title}Vt(){return this.Ps.visible}ul(t){this.Cr.push(new zt(t,this))}cl(t){this.Cr=this.Cr.filter(i=>i._r()!==t)}dl(){if("Custom"===this.kr)return t=>this.er.fl(t)}pl(){if("Custom"===this.kr)return t=>this.er.vl(t)}ml(){return this.Yt.jh()}Jr(){return!j(this.$t().gl())}nl(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],e=this.Yt.Uh(t,i,s);let n=null!==e?new dt(e.Qh,e.tr):null,h=null;if("Histogram"===this.Rh()){const t=this.Ps.base,i=new dt(t,t);n=null!==n?n.pe(i):i}return this.Cr.forEach(s=>{const e=s.Mr(t,i);if(e?.priceRange){const t=new dt(e.priceRange.minValue,e.priceRange.maxValue);n=null!==n?n.pe(t):t}e?.margins&&(h=e.margins)}),new ft(n,h)}ll(){switch(this.kr){case"Line":case"Area":case"Baseline":return this.Ps.crosshairMarkerRadius}return 0}al(){switch(this.kr){case"Line":case"Area":case"Baseline":{const t=this.Ps.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}ol(){switch(this.kr){case"Line":case"Area":case"Baseline":return this.Ps.crosshairMarkerBorderWidth}return 0}_l(t){switch(this.kr){case"Line":case"Area":case"Baseline":{const t=this.Ps.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Rr().Eh(t).fh}Dr(){switch(this.Ps.priceFormat.type){case"custom":{const t=this.Ps.priceFormat.formatter;this.rl={format:t,formatTickmarks:this.Ps.priceFormat.tickmarksFormatter??(i=>i.map(t))};break}case"volume":this.rl=new Q(this.Ps.priceFormat.precision);break;case"percent":this.rl=new J(this.Ps.priceFormat.precision);break;default:{const t=Math.pow(10,this.Ps.priceFormat.precision);this.rl=new Z(t,this.Ps.priceFormat.minMove*t)}}null!==this.hs&&this.hs.wl()}tl(t,i){const s=[];return Ot(this.Cr,t,i,s),s}}const qt=[3],jt=[0,1,2,3];class Yt{constructor(t){this.Ps=t}Ml(t,i,s){let e=t;if(0===this.Ps.mode)return e;const n=s.ks(),h=n.Bt();if(null===h)return e;const r=n.Wt(t,h),l=s.bl().filter(t=>t instanceof Ut).reduce((t,e)=>{if(s.He(e)||!e.Vt())return t;const n=e.$t(),h=e.Xs();if(n.Ki()||!h.Dn(i))return t;const r=h.kh(i);if(null===r)return t;const l=a(e.Bt()),o=3===this.Ps.mode?jt:qt;return t.concat(o.map(t=>n.Wt(r.Ht[t],l.Ht)))},[]);if(0===l.length)return e;l.sort((t,i)=>Math.abs(t-r)-Math.abs(i-r));const o=l[0];return e=n.Ds(o,h),e}}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 T{constructor(){super(...arguments),this.Yt=null}lt(t){this.Yt=t}ht({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:n}){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,e(t,r.xl),t.beginPath();for(const e of r.Tl){const n=Math.round(e.Pl*s);t.moveTo(n,-h),t.lineTo(n,i.height+h)}t.stroke()}if(r.Cl){t.strokeStyle=r.kl,e(t,r.Dl),t.beginPath();for(const s of r.Rl){const e=Math.round(s.Pl*n);t.moveTo(-h,e),t.lineTo(i.width+h,e)}t.stroke()}})}}class Jt{constructor(t){this.Jt=new Zt,this.xt=!0,this.Pt=t}Ct(){this.xt=!0}Dt(){if(this.xt){const t=this.Pt.ti().W().grid,i={Cl: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.Pt.ks().El(),Tl:(this.Pt.ti().It().El()||[]).map(t=>({Pl:t.coord}))};this.Jt.lt(i),this.xt=!1}return this.Jt}}class Qt{constructor(t){this.er=new Jt(t)}_h(){return this.er}}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.qn(),i),e=ii(t.jn(),i);return new dt(s,e)}function ei(t,i){const s=100*(t-i)/i+100;return i<0?-s:s}function ni(t,i){const s=ei(t.qn(),i),e=ei(t.jn(),i);return new dt(s,e)}function hi(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const e=Math.log10(s+i.Ll)+i.Vl;return t<0?-e:e}function ri(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const e=Math.pow(10,s-i.Vl)-i.Ll;return t<0?-e:e}function li(t,i){if(null===t)return null;const s=hi(t.qn(),i),e=hi(t.jn(),i);return new dt(s,e)}function ai(t,i){if(null===t)return null;const s=ri(t.qn(),i),e=ri(t.jn(),i);return new dt(s,e)}function oi(t){if(null===t)return ti;const i=Math.abs(t.jn()-t.qn());if(i>=1||i<1e-15)return ti;const s=Math.ceil(Math.abs(Math.log10(i))),e=ti.Vl+s;return{Vl:e,Ll:1/Math.pow(10,e)}}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 e=0===this.Al?0:1/this.Al;let n=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),h=0,r=this.Il[0];for(;;){const t=Kt(n,e,1e-14)&&n>e+1e-14,i=Kt(n,s*r,1e-14),l=Kt(n,1,1e-14);if(!(t&&i&&l))break;n/=r,r=this.Il[++h%this.Il.length]}if(n<=e+1e-14&&(n=e),n=Math.max(1,n),this.Fl.length>0&&(l=n,a=1,o=1e-14,Math.abs(l-a)<o))for(h=0,r=this.Fl[0];Kt(n,s*r,1e-14)&&n>e+1e-14;)n/=r,r=this.Fl[++h%this.Fl.length];var l,a,o;return n}}class ui{constructor(t,i,s,e){this.zl=[],this.Yi=t,this.Al=i,this.Ol=s,this.Wl=e}Bl(t,i){if(t<i)throw new Error("high < low");const s=this.Yi.qt(),e=(t-i)*this.$l()/s,n=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(n.Bl(t,i,e),h.Bl(t,i,e),r.Bl(t,i,e)),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(),e=this.Ol(s-1,i),n=this.Ol(0,i),h=this.Yi.W().entireTextOnly?this.Nl()/2:0,r=h,l=s-1-h,a=Math.max(e,n),o=Math.min(e,n);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.P()}$l(){return Math.ceil(2.5*this.Nl())}Ul(t,i,s,e,n,h){const r=this.zl,l=this.Yi;let a=s%i;a+=a<0?i:0;const o=s>=e?1:-1;let _=null,u=0;for(let c=s-a;c>e;c-=i){const s=this.Wl(c,t,!0);null!==_&&Math.abs(s-_)<this.$l()||(s<n||s>h||(u<r.length?(r[u].Pl=s,r[u].Zl=l.Jl(c),r[u].Kl=c):r.push({Pl:s,Zl:l.Jl(c),Kl:c}),u++,_=s,l.Ql()&&(i=this.Bl(c*o,e))))}r.length=u}Gl(t,i,s,e,n,h){const r=this.zl,l=this.ta(t,s,n,h),a=this.ta(t,e,-h,-n),o=this.Wl(0,t,!0)-this.Wl(i,t,!0);r.length>0&&r[0].Pl-l.Pl<o/2&&r.shift(),r.length>0&&a.Pl-r[r.length-1].Pl<o/2&&r.pop(),r.unshift(l),r.push(a)}ta(t,i,s,e){const n=(s+e)/2,h=this.Ol(i+s,t),r=this.Ol(i+e,t),l=Math.min(h,r),a=Math.max(h,r),o=Math.max(.1,this.Bl(a,l)),_=this.Ol(i+n,t),u=_-_%o,c=this.Wl(u,t,!0);return{Zl:this.Yi.Jl(u),Pl:c,Kl:u}}jl(t,i,s){let e=a(this.Yi.th());return this.Yi.Ql()&&(e=ai(e,this.Yi.ia())),e.qn()-i<t&&s-e.jn()<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,e,n){this.sa=0,this.ea=null,this.Jn=null,this.na=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.ga=null,this.rl=pi,this.wa=oi(null),this.Ma=t,this.Ps=i,this.ba=s,this.ya=e,this.Sa=n,this.xa=new ui(this,100,this.Ta.bind(this),this.Pa.bind(this))}gl(){return this.Ma}W(){return this.Ps}ah(t){if(_(this.Ps,t),this.wl(),void 0!==t.mode&&this.Ca({tn: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.Ps.autoScale}Ra(){return this.aa}Ql(){return 1===this.Ps.mode}zn(){return 2===this.Ps.mode}Ea(){return 3===this.Ps.mode}ia(){return this.wa}tn(){return{se:this.Ps.autoScale,Va:this.Ps.invertScale,tn:this.Ps.mode}}Ca(t){const i=this.tn();let s=null;void 0!==t.se&&(this.Ps.autoScale=t.se),void 0!==t.tn&&(this.Ps.mode=t.tn,2!==t.tn&&3!==t.tn||(this.Ps.autoScale=!0),this.ha.ra=!1),1===i.tn&&t.tn!==i.tn&&(!function(t,i){if(null===t)return!1;const s=ri(t.qn(),i),e=ri(t.jn(),i);return isFinite(s)&&isFinite(e)}(this.Jn,this.wa)?this.Ps.autoScale=!0:(s=ai(this.Jn,this.wa),null!==s&&this.La(s))),1===t.tn&&t.tn!==i.tn&&(s=li(this.Jn,this.wa),null!==s&&this.La(s));const e=i.tn!==this.Ps.mode;e&&(2===i.tn||this.zn())&&this.wl(),e&&(3===i.tn||this.Ea())&&this.wl(),void 0!==t.Va&&i.Va!==t.Va&&(this.Ps.invertScale=t.Va,this.Aa()),this.ca.p(i,this.tn())}Ia(){return this.ca}P(){return this.ba.fontSize}qt(){return this.sa}Fa(t){this.sa!==t&&(this.sa=t,this.ka(),this.va=null)}Ba(){if(this.ea)return this.ea;const t=this.qt()-this.za()-this.Oa();return this.ea=t,t}th(){return this.Wa(),this.Jn}La(t,i){const s=this.Jn;(i||null===s&&null!==t||null!==s&&!s.Nn(t))&&(this.va=null,this.Jn=t)}$a(t){this.La(t),this.Ha(null!==t)}Ki(){return this.Wa(),0===this.sa||!this.Jn||this.Jn.Ki()}Na(t){return this.Va()?t:this.qt()-1-t}Wt(t,i){return this.zn()?t=ii(t,i):this.Ea()&&(t=ei(t,i)),this.Pa(t,i)}Ua(t,i,s){this.Wa();const e=this.Oa(),n=l(this.th()),h=n.qn(),r=n.jn(),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 n=t[s],r=n.Mt;if(isNaN(r))continue;let l=r;null!==d&&(l=d(n.Mt,i));const a=e+_*(l-h),u=o?a:this.sa-1-a;n.ct=u}}ja(t,i,s){this.Wa();const e=this.Oa(),n=l(this.th()),h=n.qn(),r=n.jn(),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 n=t[s];let r=n.jr,l=n.Yr,a=n.Gr,u=n.Kr;null!==d&&(r=d(n.jr,i),l=d(n.Yr,i),a=d(n.Gr,i),u=d(n.Kr,i));let c=e+_*(r-h),f=o?c:this.sa-1-c;n.Ya=f,c=e+_*(l-h),f=o?c:this.sa-1-c,n.Ga=f,c=e+_*(a-h),f=o?c:this.sa-1-c,n.Ka=f,c=e+_*(u-h),f=o?c:this.sa-1-c,n.Xa=f}}Ds(t,i){const s=this.Ta(t,i);return this.Za(s,i)}Za(t,i){let s=t;return this.zn()?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.wl(),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.Ca({se:!0}),this.La(null)),this.wl(),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.Ps.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}eo(){return this.ua}no(t){this.zn()||this.Ea()||null===this.ma&&null===this.na&&(this.Ki()||(this.ma=this.sa-t,this.na=l(this.th()).Un()))}ho(t){if(this.zn()||this.Ea())return;if(null===this.ma)return;this.Ca({se:!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.na).Un();i=Math.max(i,.1),s.Gn(i),this.La(s)}ro(){this.zn()||this.Ea()||(this.ma=null,this.na=null)}lo(t){this.Da()||null===this.ga&&null===this.na&&(this.Ki()||(this.ga=t,this.na=l(this.th()).Un()))}ao(t){if(this.Da())return;if(null===this.ga)return;const i=l(this.th()).Yn()/(this.Ba()-1);let s=t-this.ga;this.Va()&&(s*=-1);const e=s*i,n=l(this.na).Un();n.Kn(e),this.La(n,!0),this.va=null}oo(){this.Da()||null!==this.ga&&(this.ga=null,this.na=null)}hl(){return this.rl||this.wl(),this.rl}Zi(t,i){switch(this.Ps.mode){case 2:return this._o(ii(t,i));case 3:return this.hl().format(ei(t,i));default:return this.nh(t)}}Jl(t){switch(this.Ps.mode){case 2:return this._o(t);case 3:return this.hl().format(t);default:return this.nh(t)}}Xl(t){switch(this.Ps.mode){case 2:return this.uo(t);case 3:return this.hl().formatTickmarks(t);default:return this.co(t)}}Er(t){return this.nh(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.Ps.ensureEdgeTickMarksVisible&&this.Da()}Yl(){return this.P()/2}wl(){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.nr())),this.rl=pi,this.zn()?(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.Ta.bind(this),this.Pa.bind(this)),this.xa.Hl()}Qa(){this.pa=null}po(){return null===this.fa||this.zn()||this.Ea()?1:1/this.fa.nr()}Xi(){return this.Sa}Ha(t){this.aa=t}za(){return this.Va()?this.Ps.scaleMargins.bottom*this.qt()+this._a:this.Ps.scaleMargins.top*this.qt()+this.oa}Oa(){return this.Va()?this.Ps.scaleMargins.top*this.qt()+this.oa:this.Ps.scaleMargins.bottom*this.qt()+this._a}Wa(){this.ha.ra||(this.ha.ra=!0,this.vo())}ka(){this.ea=null}Pa(t,i){if(this.Wa(),this.Ki())return 0;t=this.Ql()&&t?hi(t,this.wa):t;const s=l(this.th()),e=this.Oa()+(this.Ba()-1)*(t-s.qn())/s.Yn();return this.Na(e)}Ta(t,i){if(this.Wa(),this.Ki())return 0;const s=this.Na(t),e=l(this.th()),n=e.qn()+e.Yn()*((s-this.Oa())/(this.Ba()-1));return this.Ql()?ri(n,this.wa):n}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 e=0,n=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.Ps.mode){case 1:a=li(a,this.wa);break;case 2:a=si(a,s.Ht);break;case 3:a=ni(a,s.Ht)}if(i=null===i?a:i.pe(l(a)),null!==r){const t=r.ih();null!==t&&(e=Math.max(e,t.above),n=Math.max(n,t.below))}}}if(this.ql()&&(e=Math.max(e,this.Yl()),n=Math.max(n,this.Yl())),e===this.oa&&n===this._a||(this.oa=e,this._a=n,this.va=null,this.ka()),null!==i){if(i.qn()===i.jn()){const t=5*this.po();this.Ql()&&(i=ai(i,this.wa)),i=new dt(i.qn()-t,i.jn()+t),this.Ql()&&(i=li(i,this.wa))}if(this.Ql()){const t=ai(i,this.wa),s=oi(t);if(h=s,r=this.wa,h.Vl!==r.Vl||h.Ll!==r.Ll){const e=null!==this.na?ai(this.na,this.wa):null;this.wa=s,i=li(t,s),null!==e&&(this.na=li(e,s))}}this.La(i)}else null===this.Jn&&(this.La(new dt(-.5,.5)),this.wa=oi(null));var h,r}qa(){return this.zn()?ii:this.Ea()?ei:this.Ql()?t=>hi(t,this.wa):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)}nh(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 gi{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.Cr=[],this.cr=t,this.ss=i,this.To=new Qt(this);const s=i.W();this.Po=this.Co("left",s.leftPriceScale),this.ko=this.Co("right",s.rightPriceScale),this.Po.Ia().i(this.Do.bind(this,this.Po),this),this.ko.Ia().i(this.Do.bind(this,this.ko),this),this.Ro(s)}Ro(t){if(t.leftPriceScale&&this.Po.ah(t.leftPriceScale),t.rightPriceScale&&this.ko.ah(t.rightPriceScale),t.localization&&(this.Po.wl(),this.ko.wl()),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.wl()}}}Eo(t){switch(t){case"left":return this.Po;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.Po.Ia().u(this),this.ko.Ia().u(this),this.da.forEach(t=>{t.m&&t.m()}),this.Cr=this.Cr.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.Po.Fa(t),this.ko.Fa(t),this.da.forEach(i=>{if(this.He(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}He(t){const i=t.$t();return null===i||this.Po!==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 e=l(t.$t()).gl();if(this.Mo.has(e)){const i=r(this.Mo.get(e)),s=i.indexOf(t);-1!==s&&(i.splice(s,1),0===i.length&&this.Mo.delete(e))}const n=t.$t();n&&n.bl().indexOf(t)>=0&&(n.io(t),this.$o(n)),this.pa=null}Ue(t){return t===this.Po?"left":t===this.ko?"right":"overlay"}Ho(){return this.Po}No(){return this.ko}Uo(t,i){t.no(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.Po.bl().length?t=this.Po:0!==this.da.length&&(t=this.da[0].$t()),null===t&&(t=this.ko),t}Ne(){let t=null;return this.ss.W().rightPriceScale.visible?t=this.ko:this.ss.W().leftPriceScale.visible&&(t=this.Po),t}$o(t){null!==t&&t.Da()&&this.Xo(t)}Zo(t){const i=this.cr.Pn();t.Ca({se:!0}),null!==i&&t.fo(i),this.Fo()}Jo(){this.Xo(this.Po),this.Xo(this.ko)}Qo(){this.$o(this.Po),this.$o(this.ko),this.da.forEach(t=>{this.He(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.Po,this.ko])t.Qa(),t.wl();this.ss.oh()}Lt(){return this.Et().filter(mi)}i_(){return this.xo}s_(){return this.To}ul(t){this.Cr.push(new Vt(t))}cl(t){this.Cr=this.Cr.filter(i=>i._r()!==t),t.detached&&t.detached(),this.ss.oh()}e_(){return this.Cr}el(t,i){return this.Cr.map(s=>s.je(t,i)).filter(t=>null!==t)}Xo(t){const i=t.do();if(i&&i.length>0&&!this.cr.Ki()){const i=this.cr.Pn();null!==i&&t.fo(i)}t.Ws()}Wo(t,i,s){let e=this.Eo(i);if(null===e&&(e=this.Co(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),e.Ja(t),t.us(e),this.$o(e),this.pa=null}Do(t,i,s){i.tn!==s.tn&&this.Xo(t)}Co(t,i){const s={visible:!0,autoScale:!0,...p(i)},e=new vi(t,s,this.ss.W().layout,this.ss.W().localization,this.ss.Xi());return e.Fa(this.qt()),e}}function wi(t,i){return!i||"top"===t&&"top"!==i||"normal"===t&&"bottom"===i}function Mi(t){return{n_:t.n_,h_:{Ye:t.r_.externalId},l_:t.r_.cursorStyle}}function bi(t,i,s,e){for(const n of t){const t=n.Dt(e);if(null!==t&&t.je){const e=t.je(i,s);if(null!==e)return{a_:n,h_:e}}}return null}function yi(t){return void 0!==t.$s}function Si(t,i,s){const e=[t,...t.Et()],n=function(t,i,s){let e,n;for(const h of t){const t=h.el?.(i,s)??[];for(const i of t)wi(i.zOrder,e?.zOrder)&&(e=i,n=h)}return e&&n?{r_:e,n_:n}:null}(e,i,s);if("top"===n?.r_.zOrder)return Mi(n);for(const h of e){if(n&&n.n_===h&&"bottom"!==n.r_.zOrder&&!n.r_.isBackground)return Mi(n);if(yi(h)){const e=bi(h.$s(t),i,s,t);if(null!==e)return{n_:h,a_:e.a_,h_:e.h_}}if(n&&n.n_===h&&"bottom"!==n.r_.zOrder&&n.r_.isBackground)return Mi(n)}return n?.r_?Mi(n):null}class xi{constructor(t,i,s=50){this.Te=0,this.Pe=1,this.Ce=1,this.De=new Map,this.ke=new Map,this.o_=t,this.__=i,this.Re=s}u_(t){const i=t.time,s=this.__.cacheKey(i),e=this.De.get(s);if(void 0!==e)return e.c_;if(this.Te===this.Re){const t=this.ke.get(this.Ce);this.ke.delete(this.Ce),this.De.delete(r(t)),this.Ce++,this.Te--}const n=this.o_(t);return this.De.set(s,{c_:n,Ae:this.Pe}),this.ke.set(this.Pe,s),this.Te++,this.Pe++,n}}class Ti{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}Dn(t){return this.d_<=t&&t<=this.f_}Nn(t){return this.d_===t.Ur()&&this.f_===t.yi()}}function Pi(t,i){return null===t||null===i?t===i:t.Nn(i)}class Ci{constructor(){this.v_=new Map,this.De=null,this.m_=!1}g_(t){this.m_=t,this.De=null}w_(t,i){this.M_(i),this.De=null;for(let s=i;s<t.length;++s){const i=t[s];let e=this.v_.get(i.timeWeight);void 0===e&&(e=[],this.v_.set(i.timeWeight,e)),e.push({index:s,time:i.time,weight:i.timeWeight,originalTime:i.originalTime})}}b_(t,i,s,e,n){const h=Math.ceil(i/t);return null!==this.De&&this.De.y_===h&&n===this.De.S_&&s===this.De.x_||(this.De={S_:n,x_:s,El:this.T_(h,s,e),y_:h}),this.De.El}M_(t){if(0===t)return void this.v_.clear();const i=[];this.v_.forEach((s,e)=>{t<=s[0].index?i.push(e):s.splice(yt(s,t,i=>i.index<t),1/0)});for(const t of i)this.v_.delete(t)}T_(t,i,s){let e=[];const n=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=e;e=[];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&&n(t))){_=i;break}l++,e.push(t),u=i,_=1/0}if(_-o>=t&&o-u>=t&&n(r))e.push(r),u=o;else if(this.m_)return s}for(;l<h;l++)n(s[l])&&e.push(s[l])}return e}}class ki{constructor(t){this.P_=t}C_(){return null===this.P_?null:new Ti(Math.floor(this.P_.Ur()),Math.ceil(this.P_.yi()))}k_(){return this.P_}static D_(){return new ki(null)}}function Di(t,i){return t.weight>i.weight?t:i}class Ri{constructor(t,i,s,e){this.bo=0,this.R_=null,this.E_=[],this.ga=null,this.ma=null,this.V_=new Ci,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.Ps=i,this.ya=s,this.q_=i.rightOffset,this.j_=i.barSpacing,this.ss=t,this.Y_(i),this.__=e,this.G_(),this.V_.g_(i.uniformDistribution),this.K_()}W(){return this.Ps}X_(t){_(this.ya,t),this.Z_(),this.G_()}ah(t,i){_(this.Ps,t),this.Ps.fixLeftEdge&&this.J_(),this.Ps.fixRightEdge&&this.Q_(),void 0!==t.barSpacing&&this.ss.ce(t.barSpacing),void 0!==t.rightOffset&&this.ss.de(t.rightOffset),this.Y_(t),void 0===t.minBarSpacing&&void 0===t.maxBarSpacing||this.ss.ce(t.barSpacing??this.j_),void 0!==t.ignoreWhitespaceIndices&&t.ignoreWhitespaceIndices!==this.Ps.ignoreWhitespaceIndices&&this.K_(),this.Z_(),this.G_(),this.z_.p()}Rs(t){return this.E_[t]?.time??null}es(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}Pn(){return this.su(),this.A_.C_()}eu(){return this.su(),this.A_.k_()}nu(){const t=this.Pn();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),e=l(this.ru()),n=l(this.lu());return{from:l(this.es(Math.max(e,i))),to:l(this.es(Math.min(n,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.eu(),s=this.bo;if(this.bo=t,this.I_=!0,this.Ps.lockVisibleTimeRangeOnResize&&0!==s){const i=this.j_*t/s;this.j_=i}if(this.Ps.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(),e=void 0===i?0:i.from,n=void 0===i?t.length:i.to;for(let i=e;i<n;i++){const e=t[i].wt,n=s+this.q_-e,h=this.bo-(n+.5)*this.j_-1;t[i].ut=h}}du(t,i){const s=Math.ceil(this.fu(t));return i&&this.Ps.ignoreWhitespaceIndices&&!this.pu(s)?this.vu(s):s}de(t){this.I_=!0,this.q_=t,this._u(),this.ss.mu(),this.ss.oh()}gu(){return this.j_}ce(t){const i=this.j_;if(this.wu(t),void 0!==this.Ps.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.Ps.tickMarkMaxCharacterLength||8),s=Math.round(i/t),e=l(this.Pn()),n=Math.max(e.Ur(),e.Ur()-s),h=Math.max(e.yi(),e.yi()-s),r=this.V_.b_(t,i,this.Ps.ignoreWhitespaceIndices,this.H_,this.N_),a=this.ru()+s,o=this.lu()-s,_=this.bu(),u=this.Ps.fixLeftEdge||_,c=this.Ps.fixRightEdge||_;let d=0;for(const t of r){if(!(n<=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.ce(this.Ps.barSpacing),t=void 0!==this.Ps.rightOffsetPixels?this.Ps.rightOffsetPixels/this.gu():this.Ps.rightOffset,this.de(t)}xu(t){this.I_=!0,this.R_=t,this._u(),this.J_()}Tu(t,i){const s=this.fu(t),e=this.gu(),n=e+i*(e/10);this.ce(n),this.Ps.rightBarStaysOnScroll||this.de(this.Mu()+(s-this.fu(t)))}no(t){this.ga&&this.oo(),null===this.ma&&null===this.O_&&(this.Ki()||(this.ma=t,this.Pu()))}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.ce(this.O_.gu*i/s)}ro(){null!==this.ma&&(this.ma=null,this.Cu())}lo(t){null===this.ga&&null===this.O_&&(this.Ki()||(this.ga=t,this.Pu()))}ao(t){if(null===this.ga)return;const i=(this.ga-t)/this.gu();this.q_=l(this.O_).Mu+i,this.I_=!0,this._u()}oo(){null!==this.ga&&(this.ga=null,this.Cu())}ku(){this.Du(this.Ps.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_,e=performance.now();this.ss.oe({Ru:t=>(t-e)/i>=1,Eu:n=>{const h=(n-e)/i;return h>=1?t:s+(t-s)*h}})}Ct(t,i){this.I_=!0,this.E_=t,this.V_.w_(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_(),e=i&&this.Ps.rightOffsetPixels||0;this.wu((this.bo-e)/s),this.q_=t.yi()-this.uu(),i&&(this.q_=e?e/this.gu():this.Ps.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 Ti(t,i),!0)}Bu(t){const i=new Ti(t.from,t.to);this.Iu(i)}ns(t){return void 0!==this.ya.timeFormatter?this.ya.timeFormatter(t.originalTime):this.__.formatHorzItem(t.time)}K_(){if(!this.Ps.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}wu(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,e=new Ti(s-i+1,s);this.Wu(new ki(e))}ou(){const t=Gt(this.j_,this.$u(),this.Hu());this.j_!==t&&(this.j_=t,this.I_=!0)}Hu(){return this.Ps.maxBarSpacing>0?this.Ps.maxBarSpacing:.5*this.bo}$u(){return this.Ps.fixLeftEdge&&this.Ps.fixRightEdge&&0!==this.E_.length?this.bo/this.E_.length:this.Ps.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.Ps.fixLeftEdge?this.bo/this.j_:Math.min(2,this.E_.length))}Uu(){return this.Ps.fixRightEdge?0:this.bo/this.j_-Math.min(2,this.E_.length)}Pu(){this.O_={gu:this.gu(),Mu:this.Mu()}}Cu(){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,Pi(i.C_(),this.A_.C_())||this.F_.p(),Pi(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.Ps.fixLeftEdge)return;const t=this.ru();if(null===t)return;const i=this.Pn();if(null===i)return;const s=i.Ur()-t;if(s<0){const t=this.q_-s-1;this.de(t)}this.ou()}Q_(){this._u(),this.ou()}pu(t){return!this.Ps.ignoreWhitespaceIndices||(this.H_.get(t)||!1)}vu(t){const i=function*(t){const i=Math.round(t),s=i<t;let e=1;for(;;)s?(yield i+e,yield i-e):(yield i-e,yield i+e),e++}(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.de(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.Ps=i,this.__=s,this.Sa=new S(this.Ps.layout.colorParsers),this.Qu=new M(this),this.cr=new Ri(this,i.timeScale,this.Ps.localization,s),this.Tt=new q(this,i.crosshair),this.tc=new Yt(i.crosshair),i.addDefaultPane&&(this.sc(0),this.ju[0].Ao(2)),this.ec=this.nc(0),this.hc=this.nc(1)}Ar(){this.rc(Y.ge())}oh(){this.rc(Y.me())}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?.n_===t?.n_&&this.Gu?.h_?.Ye===t?.h_?.Ye)return;const i=this.Gu;this.Gu=t,null!==i&&this.Ir(i.n_),null!==t&&t.n_!==i?.n_&&this.Ir(t.n_)}W(){return this.Ps}ah(t){_(this.Ps,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.ec=this.nc(0),this.hc=this.nc(1),this.Ar()}_c(t,i,s=0){const e=this.ju[s];if(void 0===e)return;if("left"===t)return _(this.Ps,{leftPriceScale:i}),e.Ro({leftPriceScale:i}),this.Ku.p(),void this.Ar();if("right"===t)return _(this.Ps,{rightPriceScale:i}),e.Ro({rightPriceScale:i}),this.Ku.p(),void this.Ar();const n=this.uc(t,s);null!==n&&(n.$t.ah(i),this.Ku.p())}uc(t,i){const s=this.ju[i];if(void 0===s)return null;const e=s.Eo(t);return null!==e?{Us:s,$t:e}:null}It(){return this.cr}qs(){return this.ju}cc(){return this.Tt}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],e=this.ju.reduce((t,i)=>t+i.Lo(),0),n=this.ju.reduce((t,i)=>t+i.qt(),0),r=n-30*(this.ju.length-1);i=Math.min(r,Math.max(30,i));const l=e/n,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()}gc(t,i){h(t>=0&&t<this.ju.length&&i>=0&&i<this.ju.length,"Invalid pane index");const s=this.ju[t],e=this.ju[i];this.ju[t]=e,this.ju[i]=s,this.Ar()}wc(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.no(t)}yc(t,i){const s=this.It();if(s.Ki()||0===i)return;const e=s.ts();t=Math.max(1,Math.min(t,e)),s.Tu(t,i),this.mu()}Sc(t){this.xc(0),this.Tc(t),this.Pc()}Cc(t){this.cr.ho(t),this.mu()}kc(){this.cr.ro(),this.oh()}xc(t){this.cr.lo(t)}Tc(t){this.cr.ao(t),this.mu()}Pc(){this.cr.oo(),this.oh()}Gs(){return this.Yu}Dc(t,i,s,e,n){this.Tt.Vs(t,i);let h=NaN,r=this.cr.du(t,!0);const l=this.cr.Pn();null!==l&&(r=Math.min(Math.max(l.Ur(),r),l.yi()));const a=e.ks(),o=a.Bt();if(null!==o&&(h=a.Ds(i,o)),h=this.tc.Ml(h,r,e),this.Tt.Fs(r,h,e),this.Zr(),!n){const n=Si(e,t,i);this.oc(n&&{n_:n.n_,h_:n.h_,l_:n.l_||null}),this.Xu.p(this.Tt.At(),{x:t,y:i},s)}}Rc(t,i,s){const e=s.ks(),n=e.Bt(),h=e.Wt(t,l(n)),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.Tt.Us();if(null!==t){const i=this.Tt.As(),s=this.Tt.Is();this.Dc(i,s,null,t)}this.Tt.Ws()}Vc(t,i,s){const e=this.cr.Rs(0);void 0!==i&&void 0!==s&&this.cr.Ct(i,s);const n=this.cr.Rs(0),h=this.cr.uu(),r=this.cr.Pn();if(null!==r&&null!==e&&null!==n){const i=r.Dn(h),l=this.__.key(e)>this.__.key(n),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.de(this.cr.Mu()-i)}}this.cr.xu(t)}zr(t){null!==t&&t.Qo()}$e(t){if(function(t){return t instanceof gi}(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.Ps.localization.priceFormatter=void 0,this.Ps.localization.percentageFormatter=void 0,this.Ps.localization.timeFormatter=void 0}Lc(){return this.Qu}qe(){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.$e(t),s=this.Yu.indexOf(t);h(-1!==s,"Series not found");const e=l(i);this.Yu.splice(s,1),e.io(t),t.m&&t.m(),this.cr.K_();const n=this.ju.length;this.Bc(e),this.ju.length<n&&this.Ar()}Lr(t,i){const s=l(this.$e(t));s.io(t,!0),s.Ja(t,i,!0)}Fu(){const t=Y.me();t.he(),this.rc(t)}zc(t){const i=Y.me();i.ae(t),this.rc(i)}ue(){const t=Y.me();t.ue(),this.rc(t)}ce(t){const i=Y.me();i.ce(t),this.rc(i)}de(t){const i=Y.me();i.de(t),this.rc(i)}oe(t){const i=Y.me();i.oe(t),this.rc(i)}re(){const t=Y.me();t.re(),this.rc(t)}Oc(){return this.Ps.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.$e(t));s.io(t);const e=this.sc(i);this.Ic(t,e),0===s.bl().length&&this.Bc(s),this.Ar()}Hc(){return this.hc}q(){return this.ec}Ut(t){const i=this.hc,s=this.ec;if(i===s)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Zu||this.Zu.wh!==s||this.Zu.Mh!==i)this.Zu={wh:s,Mh:i,Nc:new Map};else{const i=this.Zu.Nc.get(t);if(void 0!==i)return i}const e=this.Sa.it(s,i,t/100);return this.Zu.Nc.set(t,e),e}Uc(t){return this.ju.indexOf(t)}Xi(){return this.Sa}qc(){return this.jc()}jc(t){const i=new gi(this.cr,this);this.ju.push(i);const s=t??this.ju.length-1,e=Y.ge();return e.te(s,{ie:0,se:!0}),this.rc(e),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 e=this.ju.indexOf(t);s.te(e,{ie:i})}return s}lc(t,i){return void 0===i&&(i=2),this.Mc(this.$e(t),i)}rc(t){this.Ju&&this.Ju(t),this.ju.forEach(t=>t.s_()._h().Ct())}Ic(t,i){const s=t.W().priceScaleId,e=void 0!==s?s:this.Oc();i.Ja(t,e),j(e)||t.ah(t.W())}nc(t){const i=this.Ps.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.ed=i.Jc}u_(t){return`${this.td.u_(t)}${this.ed}${this.sd.u_(t)}`}}function ji(t){return 60*t*60*1e3}function Yi(t){return 60*t*1e3}const Gi=[{nd:(Ki=1,1e3*Ki),hd:10},{nd:Yi(1),hd:20},{nd:Yi(5),hd:21},{nd:Yi(30),hd:22},{nd:ji(1),hd:30},{nd:ji(3),hd:31},{nd:ji(6),hd:32},{nd: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].nd)!==Math.floor(t.getTime()/Gi[s].nd))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.Ps}setOptions(t){this.Ps=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.Ps)return;const i=t.dateFormat;this.Ps.timeScale.timeVisible?this.ad=new qi({Xc:i,Zc:this.Ps.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.Ps.timeScale.timeVisible,this.Ps.timeScale.secondsVisible),e=this.Ps.timeScale;if(void 0!==e.tickMarkFormatter){const n=e.tickMarkFormatter(t.originalTime,s,i.locale);if(null!==n)return n}return function(t,i,s){const e={};switch(i){case 0:e.year="numeric";break;case 1:e.month="short";break;case 2:e.day="numeric";break;case 3:e.hour12=!1,e.hour="2-digit",e.minute="2-digit";break;case 4:e.hour12=!1,e.hour="2-digit",e.minute="2-digit",e.second="2-digit"}const n=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(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds(),n.getUTCMilliseconds()).toLocaleString(s,e)}(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,e=null!==s?new Date(1e3*s):null,n=0;for(let h=i;h<t.length;++h){const i=t[h],r=new Date(1e3*Zi(i.time).rd);null!==e&&(i.timeWeight=Xi(r,e)),n+=Zi(i.time).rd-(s||Zi(i.time).rd),s=Zi(i.time).rd,e=r}if(0===i&&t.length>1){const i=Math.ceil(n/(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 es(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 ns(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 e;this._canvasElement=null,this._bitmapSizeChangedListeners=[],this._suggestedBitmapSize=null,this._suggestedBitmapSizeChangedListeners=[],this._devicePixelRatioObservable=null,this._canvasElementResizeObserver=null,this._canvasElement=t,this._canvasElementClientSize=es({width:this._canvasElement.clientWidth,height:this._canvasElement.clientHeight}),this._transformBitmapSize=null!=i?i:function(t){return t},this._allowResizeObserver=null===(e=null==s?void 0:s.allowResizeObserver)||void 0===e||e,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 es({width:this.canvasElement.width,height:this.canvasElement.height})},enumerable:!1,configurable:!0}),t.prototype.resizeCanvasElement=function(t){this._canvasElementClientSize=es(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;ns(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(e){return e.call(s,t,i)})},t.prototype._suggestNewBitmapSize=function(t){var i=this._suggestedBitmapSize,s=es(this._transformBitmapSize(t,this._canvasElementClientSize)),e=ns(this.bitmapSize,s)?null:s;null===i&&null===e||null!==i&&null!==e&&ns(i,e)||(this._suggestedBitmapSize=e,this._emitSuggestedBitmapSizeChanged(i,e))},t.prototype._emitSuggestedBitmapSizeChanged=function(t,i){var s=this;this._suggestedBitmapSizeChangedListeners.forEach(function(e){return e.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 e=null!==(i=null===(t=this._devicePixelRatioObservable)||void 0===t?void 0:t.value)&&void 0!==i?i:s.devicePixelRatio,n=this._canvasElement.getClientRects(),h=void 0!==n[0]?function(t,i){return es({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)})}(n[0],e):es({width:this._canvasElementClientSize.width*e,height:this._canvasElementClientSize.height*e});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 e=s.devicePixelContentBoxSize[0],n=es({width:e.inlineSize,height:e.blockSize});t._suggestNewBitmapSize(n)}}),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 e=t.bitmapSize;if(0===e.width||0===e.height)return null;var n=t.canvasElement.getContext("2d",i);return null===n?null:new as(n,s,e)}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.gd=!1,this.wd=null,this.Md=null,this.bd=!1,this.yd=!1,this.Sd=!1,this.xd=null,this.Td=null,this.Pd=null,this.Cd=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(gs(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(gs(t),this.dd);s<5&&!this.yd&&this.Kd(i,this.Yd.Xd),this.Zd()}}},this.Jd=t,this.Yd=i,this.Ps=s,this.Qd()}m(){null!==this.xd&&(this.xd(),this.xd=null),null!==this.Td&&(this.Td(),this.Td=null),null!==this.Cd&&(this.Cd(),this.Cd=null),null!==this.kd&&(this.kd(),this.kd=null),null!==this.Dd&&(this.Dd(),this.Dd=null),null!==this.Pd&&(this.Pd(),this.Pd=null),this.tf(),this.Zd()}if(t){this.Cd&&this.Cd();const i=this.sf.bind(this);if(this.Cd=()=>{this.Jd.removeEventListener("mousemove",i)},this.Jd.addEventListener("mousemove",i),this.$d(t))return;const s=this.Hd(t);this.Kd(s,this.Yd.ef),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.nf),this.Bd=!0}hf(t){const i=Ms(t.changedTouches,l(this.Fd));if(null===i)return;if(this.Id=ws(t),null!==this.Rd)return;if(this.Ld)return;this.Vd=!0;const s=this.Ud(gs(i),l(this.Md)),{rf:e,lf:n,Nd:h}=s;if(this.bd||!(h<5)){if(!this.bd){const t=.5*e,i=n>=t&&!this.Ps.af(),s=t>n&&!this.Ps._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(gs(t),l(this.wd)),{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),e=Math.abs(i.ct-t.ct);return{rf:s,lf:e,Nd:s+e}}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=ws(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(gs(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.gd&&(this.gd=!1,ms(t))}Od(t){if(0!==t.button)return;const i=this.Hd(t);if(this.wd=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(gs(t),this.dd);s<5&&!this.yd&&this.Kd(i,this.Yd.Xd),this.Zd()}else this.yd||this.Kd(i,this.Yd.gf)}tf(){null!==this.md&&(clearTimeout(this.md),this.md=null)}wf(t){if(null!==this.Fd)return;const i=t.changedTouches[0];this.Fd=i.identifier,this.Id=ws(t);const s=this.Jd.ownerDocument.documentElement;this.Sd=!1,this.bd=!1,this.Ld=!1,this.Md=gs(i),this.Dd&&(this.Dd(),this.Dd=null);{const i=this.hf.bind(this),e=this.ff.bind(this);this.Dd=()=>{s.removeEventListener("touchmove",i),s.removeEventListener("touchend",e)},s.addEventListener("touchmove",i,{passive:!1}),s.addEventListener("touchend",e,{passive:!1}),this.tf(),this.md=setTimeout(this.Mf.bind(this,t),240)}const e=this.Hd(t,i);this.qd(e,this.Yd.bf),this.pd||(this.fd=0,this.pd=setTimeout(this.Gd.bind(this),500),this.vd=gs(i))}yf(t){if(0!==t.button)return;const i=this.Jd.ownerDocument.documentElement;us()&&i.addEventListener("mouseleave",this.zd),this.yd=!1,this.wd=gs(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=gs(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.Td=()=>{t.removeEventListener("touchstart",i)},this.xd=()=>{t.removeEventListener("mousedown",i)},t.addEventListener("mousedown",i),t.addEventListener("touchstart",i,{passive:!0})}cs()&&(this.Pd=()=>{this.Jd.removeEventListener("dblclick",this.Wd)},this.Jd.addEventListener("dblclick",this.Wd)),this.Jd.addEventListener("mouseleave",this.Tf.bind(this)),this.Jd.addEventListener("touchstart",this.wf.bind(this),{passive:!0}),fs(this.Jd),this.Jd.addEventListener("mousedown",this.yf.bind(this)),this.Pf(),this.Jd.addEventListener("touchmove",()=>{},{passive:!1})}Pf(){void 0===this.Yd.Cf&&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.gd?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.Cf&&this.Yd.Cf(),this.tf()}Ef(){null!==this.Rd&&(this.Rd=null,void 0!==this.Yd.Df&&this.Yd.Df())}Tf(t){if(this.Cd&&this.Cd(),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.gd=!0}$d(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:ws(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,e=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-e.left,localY:s.clientY-e.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,e=t.clientY-i.clientY;return Math.sqrt(s*s+e*e)}function ms(t){t.cancelable&&t.preventDefault()}function gs(t){return{ut:t.pageX,ct:t.pageY}}function ws(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 es({width:this.Uf.Jf().width,height:1})}Qf(){return es({width:this.Uf.Qf().width,height:1*window.devicePixelRatio})}tp(t,i,s){const e=this.Qf();t.fillStyle=this.Nf.W().layout.panes.separatorColor,t.fillRect(i,s,e.width,e.height)}Ct(){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"),e=s.style;e.position="absolute",e.zIndex="50",e.top="-4px",e.height="9px",e.width="100%",e.backgroundColor="",e.cursor="row-resize",this.Gf.appendChild(s);const n={ef:this.ep.bind(this),Lf:this.np.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,n,{af:()=>!1,_f:()=>!0}),this.Of={sp:s,ip:t}}Kf(){this.Gf.style.background=this.Nf.W().layout.panes.separatorColor}ep(t){null!==this.Of&&(this.Of.sp.style.backgroundColor=this.Nf.W().layout.panes.separatorHoverColor)}np(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),e=30*s;i<=2*e||(this.Hf={op:t.pageY,_p:this.Uf.ap().Lo(),up:i-e,cp:i,dp:s,fp:e},this.Of.ip.style.display="block")}rp(t){const i=this.Hf;if(null===i)return;const s=(t.pageY-i.op)*i.dp,e=Gt(i._p+s,i.fp,i.up);this.Uf.ap().Ao(e),this.jf.ap().Ao(i.cp-e),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 e=(t.pp-i.pp)/(t.wt-i.wt);return Math.sign(e)*Math.min(Math.abs(e),s)}class xs{constructor(t,i,s,e){this.vp=null,this.mp=null,this.gp=null,this.wp=null,this.Mp=null,this.bp=0,this.yp=0,this.Sp=t,this.xp=i,this.Tp=s,this.we=e}Pp(t,i){if(null!==this.vp){if(this.vp.wt===i)return void(this.vp.pp=t);if(Math.abs(this.vp.pp-t)<this.we)return}this.wp=this.gp,this.gp=this.mp,this.mp=this.vp,this.vp={wt:i,pp:t}}an(t,i){if(null===this.vp||null===this.mp)return;if(i-this.vp.wt>50)return;let s=0;const e=Ss(this.vp,this.mp,this.xp),n=ys(this.vp,this.mp),h=[e],r=[n];if(s+=n,null!==this.gp){const t=Ss(this.mp,this.gp,this.xp);if(Math.sign(t)===Math.sign(e)){const i=ys(this.mp,this.gp);if(h.push(t),r.push(i),s+=i,null!==this.wp){const t=Ss(this.gp,this.wp,this.xp);if(Math.sign(t)===Math.sign(e)){const i=ys(this.gp,this.wp);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,wt: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.Tp))}Eu(t){const i=l(this.Mp),s=t-i.wt;return i.pp+this.yp*(Math.pow(this.Tp,s)-1)/Math.log(this.Tp)}Ru(t){return null===this.Mp||this.Cp(t)===this.bp}Cp(t){const i=t-l(this.Mp).wt;return Math.min(i,this.bp)}}class Ts{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()}Ct(){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 Ps(t,i){const s=l(t.ownerDocument).createElement("canvas");t.appendChild(s);const e=new rs(s,(n={options:{allowResizeObserver:!0},transform:(t,i)=>({width:Math.max(t.width,i.width),height:Math.max(t.height,i.height)})}).transform,n.options);var n;return e.resizeCanvasElement(i),e}function Cs(t){t.width=1,t.height=1,t.getContext("2d")?.clearRect(0,0,1,1)}function ks(t,i,s,e){t.sr&&t.sr(i,s,e)}function Ds(t,i,s,e){t.nt(i,s,e)}function Rs(t,i,s,e){const n=t(s,e);for(const t of n){const s=t.Dt(e);null!==s&&i(s)}}function Es(t,i){return s=>{if(!function(t){return void 0!==t.$t}(s))return[];return(s.$t()?.gl()??"")!==i?[]:s.il?.(t)??[]}}function Vs(t,i,s,e){if(!t.length)return;let n=0;const h=t[0].qt(e,!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(e,!1),_=l.$i(),u=a.$i();if(1===i?_>u-o:_<u+o){const e=u-o*i;l.Hi(e);const h=e-i*o/2;if((1===i?h<0:h>s)&&r>0){const e=1===i?-1-h:h-s,l=Math.min(e,r);for(let s=n;s<t.length;s++)t[s].Hi(t[s].$i()+i*l);r-=l}}else n=h,r=1===i?u-o-_:_-(u+o)}}class Ls{constructor(t,i,s,e){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.Pt.jp().ti().oh()},this.Yp=()=>{this.Up||this.Pt.jp().ti().oh()},this.Pt=t,this.Ps=i,this.ba=i.layout,this.Qu=s,this.Gp="left"===e,this.Kp=Es("normal",e),this.Xp=Es("top",e),this.Zp=Es("bottom",e),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=Ps(this.Gf,es({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=Ps(this.Gf,es({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),ef:this.sv.bind(this),Lf:this.np.bind(this)};this.Wf=new ps(this.Qp.canvasElement,r,{af:()=>!this.Ps.handleScroll.vertTouchDrag,_f:()=>!0})}m(){this.Wf.m(),this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.Yp),Cs(this.Qp.canvasElement),this.Qp.dispose(),this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),Cs(this.Jp.canvasElement),this.Jp.dispose(),null!==this.Yi&&this.Yi.eo().u(this),this.Yi=null}Zf(){return this.Gf}P(){return this.ba.fontSize}ev(){const t=this.Qu.W();return this.Hp!==t.C&&(this.$p.Ee(),this.Hp=t.C),t}nv(){if(null===this.Yi)return 0;let t=0;const i=this.ev(),s=l(this.Jp.canvasElement.getContext("2d",{colorSpace:this.Pt.jp().W().layout.colorSpace}));s.save();const e=this.Yi.El();s.font=this.hv(),e.length>0&&(t=Math.max(this.$p.Vi(s,e[0].Zl),this.$p.Vi(s,e[e.length-1].Zl)));const n=this.rv();for(let i=n.length;i--;){const e=this.$p.Vi(s,n[i].ri());e>t&&(t=e)}const h=this.Yi.Bt();if(null!==h&&null!==this.Op&&(2!==(r=this.Ps.crosshair).mode&&r.horzLine.visible&&r.horzLine.labelVisible)){const i=this.Yi.Ds(1,h),e=this.Yi.Ds(this.Op.height-2,h);t=Math.max(t,this.$p.Vi(s,this.Yi.Zi(Math.floor(Math.min(i,e))+.11111111111111,h)),this.$p.Vi(s,this.Yi.Zi(Math.ceil(Math.max(i,e))-.11111111111111,h)))}var r;s.restore();const a=t||34;return ds(Math.ceil(i.S+i.T+i.A+i.I+5+a))}lv(t){null!==this.Op&&ns(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.eo().u(this),this.Yi=t,t.eo().i(this.ua.bind(this),this))}$t(){return this.Yi}Ee(){const t=this.Pt.ap();this.Pt.jp().ti().Zo(t,l(this.$t()))}ov(t){if(null===this.Op)return;const i={colorSpace:this.Pt.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.Pt.dv(t,this.Zp),this.fv(t),this.Pt.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.Pt.dv(s,this.Xp))}Qf(){return this.Jp.bitmapSize}tp(t,i,s,e){const n=this.Qf();if(n.width>0&&n.height>0&&(t.drawImage(this.Jp.canvasElement,i,s),e)){const e=this.Qp.canvasElement;t.drawImage(e,i,s)}}Ct(){this.Yi?.El()}hp(t){if(null===this.Yi||this.Yi.Ki()||!this.Ps.handleScale.axisPressedMouseMove.price)return;const i=this.Pt.jp().ti(),s=this.Pt.ap();this.Wp=!0,i.Uo(s,this.Yi,t.localY)}rp(t){if(null===this.Yi||!this.Ps.handleScale.axisPressedMouseMove.price)return;const i=this.Pt.jp().ti(),s=this.Pt.ap(),e=this.Yi;i.qo(s,e,t.localY)}tv(){if(null===this.Yi||!this.Ps.handleScale.axisPressedMouseMove.price)return;const t=this.Pt.jp().ti(),i=this.Pt.ap(),s=this.Yi;this.Wp&&(this.Wp=!1,t.jo(i,s))}lp(t){if(null===this.Yi||!this.Ps.handleScale.axisPressedMouseMove.price)return;const i=this.Pt.jp().ti(),s=this.Pt.ap();this.Wp=!1,i.jo(s,this.Yi)}iv(t){this.Ps.handleScale.axisDoubleClickReset.price&&this.Ee()}sv(t){if(null===this.Yi)return;!this.Pt.jp().ti().W().handleScale.axisPressedMouseMove.price||this.Yi.zn()||this.Yi.Ea()||this.mv(1)}np(t){this.mv(0)}rv(){const t=[],i=null===this.Yi?void 0:this.Yi;return(s=>{for(let e=0;e<s.length;++e){const n=s[e].Hs(this.Pt.ap(),i);for(let i=0;i<n.length;i++)t.push(n[i])}})(this.Pt.ap().Et()),t}uv({context:t,bitmapSize:i}){const{width:s,height:e}=i,n=this.Pt.ap().ti(),h=n.q(),r=n.Hc();h===r?L(t,0,0,s,e,h):F(t,0,0,s,e,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 e=Math.max(1,Math.floor(this.ev().S*s));let n;n=this.Gp?i.width-e:0,t.fillRect(n,0,e,i.height)}fv(t){if(null===this.Op||null===this.Yi)return;const i=this.Yi.El(),s=this.Yi.W(),e=this.ev(),n=this.Gp?this.Op.width-e.T: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(e.T*h);t.beginPath();for(const s of i)t.rect(Math.floor(n*h),Math.round(s.Pl*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(n-e.A):Math.round(n+e.T+e.A),r=i.map(i=>this.$p.Ei(t,i.Zl));for(let s=i.length;s--;){const e=i[s];t.fillText(e.Zl,h,e.Pl+r[s])}})}_v(){if(null===this.Op||null===this.Yi)return;let t=this.Op.height/2;const i=[],s=this.Yi.Et().slice(),e=this.Pt.ap(),n=this.ev();this.Yi===e.Ne()&&this.Pt.ap().Et().forEach(t=>{e.He(t)&&s.push(t)});const h=this.Yi.bl()[0],r=this.Yi;s.forEach(s=>{const n=s.Hs(e,r);n.forEach(t=>{t.Hi(null),t.Ni()&&i.push(t)}),h===s&&n.length>0&&(t=n[0].Ai())}),i.forEach(t=>t.Hi(t.Ai()));this.Yi.W().alignLabels&&this.gv(i,n,t)}gv(t,i,s){if(null===this.Op)return;const e=t.filter(t=>t.Ai()<=s),n=t.filter(t=>t.Ai()>s);e.sort((t,i)=>i.Ai()-t.Ai()),e.length&&n.length&&n.push(e[0]),n.sort((t,i)=>t.Ai()-i.Ai());for(const s of t){const t=Math.floor(s.qt(i)/2),e=s.Ai();e>-t&&e<t&&s.Hi(t),e>this.Op.height-t&&e<this.Op.height+t&&s.Hi(this.Op.height-t)}Vs(e,1,this.Op.height,i),Vs(n,-1,this.Op.height,i)}pv(t){if(null===this.Op)return;const i=this.rv(),s=this.ev(),e=this.Gp?"right":"left";i.forEach(i=>{if(i.Ui()){i.Dt(l(this.Yi)).nt(t,s,this.$p,e)}})}vv(t){if(null===this.Op||null===this.Yi)return;const i=this.Pt.jp().ti(),s=[],e=this.Pt.ap(),n=i.cc().Hs(e,this.Yi);n.length&&s.push(n);const h=this.ev(),r=this.Gp?"right":"left";s.forEach(i=>{i.forEach(i=>{i.Dt(l(this.Yi)).nt(t,h,this.$p,r)})})}mv(t){this.Gf.style.cursor=1===t?"ns-resize":"default"}ua(){const t=this.nv();this.Np<t&&this.Pt.jp().ti().Ar(),this.Np=t}hv(){return w(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=es({width:0,height:0}),this.wv=null,this.Mv=null,this.bv=null,this.yv=null,this.Sv=!1,this.xv=new o,this.Tv=new o,this.Pv=0,this.Cv=!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=Ps(s,es({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=Ps(s,es({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.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.wv&&this.wv.m(),null!==this.Mv&&this.Mv.m(),this.bv=null,this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.Yp),Cs(this.Qp.canvasElement),this.Qp.dispose(),this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),Cs(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 Ts(this.Av,this.Vp),this.bv.Ct()):(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.wv){const t=this.Vv.Ho();this.wv.us(l(t))}if(null!==this.Mv){const t=this.Vv.No();this.Mv.us(l(t))}}}Wv(){null!==this.wv&&this.wv.Ct(),null!==this.Mv&&this.Mv.Ct()}Lo(){return null!==this.Vv?this.Vv.Lo():0}Ao(t){this.Vv&&this.Vv.Ao(t)}ef(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)}nf(t){if(!this.Vv)return;this.$v();const i=t.localX,s=t.localY;this.Hv(i,s,t)}gf(t){null!==this.Vv&&(this.$v(),this.Uv(t))}Xd(t){null!==this.Vv&&this.qv(this.Tv,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.Cv=!1,this.Yv(t))}vf(t){null!==this.Vv&&this.Uv(t)}Af(t){if(this.Cv=!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.Tv}Cf(){this.Pv=1,this.ss().re()}kf(t,i){if(!this.Vp.W().handleScale.pinch)return;const s=5*(i-this.Pv);this.Pv=i,this.ss().yc(t.ut,s)}bf(t){this.Cv=!1,this.Dv=null!==this.kv,this.Nv();const i=this.ss().cc();null!==this.kv&&i.Vt()&&(this.Rv={x:i.ei(),y:i.ni()},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 e=l(this.Rv),n=e.x+(i-this.kv.x),h=e.y+(s-this.kv.y);return void this.Hv(n,h,t)}this.jv(t)}pf(t){0===this.jp().W().trackingMode.exitMode&&(this.Dv=!0),this.Jv(),this.Yv(t)}je(t,i){const s=this.Vv;return null===s?null:Si(s,t,i)}Qv(t,i){l("left"===i?this.wv:this.Mv).lv(es({width:t,height:this.Op.height}))}Jf(){return this.Op}lv(t){ns(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.He(i)){const s=i.$t();null!==s&&t.$o(s),i.Ws()}for(const i of t.e_())i.Ws()}Qf(){return this.Jp.bitmapSize}tp(t,i,s,e){const n=this.Qf();if(n.width>0&&n.height>0&&(t.drawImage(this.Jp.canvasElement,i,s),e)){const e=this.Qp.canvasElement;null!==t&&t.drawImage(e,i,s)}}ov(t){if(0===t)return;if(null===this.Vv)return;t>1&&this.tm(),null!==this.wv&&this.wv.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.wv}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,e=i.localY;t.v()&&t.p(this.ss().It().du(s),{x:s,y:e},i)}uv({context:t,bitmapSize:i}){const{width:s,height:e}=i,n=this.ss(),h=n.q(),r=n.Hc();h===r?L(t,0,0,s,e,r):F(t,0,0,s,e,h,r)}sm(t){const i=l(this.Vv),s=i.s_()._h().Dt(i);null!==s&&s.nt(t,!1)}nm(t){this.lm(t,Is,Ds,this.ss().cc())}im(t,i){const s=l(this.Vv),e=s.Et(),n=s.e_();for(const s of n)this.lm(t,i,ks,s);for(const s of e)this.lm(t,i,ks,s);for(const s of n)this.lm(t,i,Ds,s);for(const s of e)this.lm(t,i,Ds,s)}lm(t,i,s,e){const n=l(this.Vv),h=n.ti().ac(),r=null!==h&&h.n_===e,a=null!==h&&r&&void 0!==h.h_?h.h_.Ge:void 0;Rs(i,i=>s(i,t,r,a),e,n)}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.wv||(this.Iv.removeChild(this.wv.Zf()),this.wv.m(),this.wv=null),s||null===this.Mv||(this.Fv.removeChild(this.Mv.Zf()),this.Mv.m(),this.Mv=null);const e=t.ti().Lc();i&&null===this.wv&&(this.wv=new Ls(this,t.W(),e,"left"),this.Iv.appendChild(this.wv.Zf())),s&&null===this.Mv&&(this.Mv=new Ls(this,t.W(),e,"right"),this.Fv.appendChild(this.Mv.Zf()))}am(t){return t.If&&this.Cv||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 e=this.ss().cc();this.Rv={x:e.ei(),y:e.ni()}}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.Pc(),null!==this.Ev){const t=performance.now(),s=i.It();this.Ev.an(s.Mu(),t),this.Ev.Ru(t)||i.oe(this.Ev)}}$v(){this.kv=null}Nv(){if(!this.Vv)return;if(this.ss().re(),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 e=this.Vp.W(),n=e.handleScroll,h=e.kineticScroll;if((!n.pressedMouseMove||t.If)&&(!n.horzTouchDrag&&!n.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.gu();this.Ev=new xs(.2/t,7/t,.997,15/t),this.Ev.Pp(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.Tc(t.localX),null!==this.Ev&&this.Ev.Pp(s.Mu(),l))}}class Os{constructor(t,i,s,e,n){this.xt=!0,this.Op=es({width:0,height:0}),this.qp=()=>this.ov(3),this.Gp="left"===t,this.Qu=s.Lc,this.Ps=i,this.fm=e,this.pm=n,this.Gf=document.createElement("div"),this.Gf.style.width="25px",this.Gf.style.height="100%",this.Gf.style.overflow="hidden",this.Jp=Ps(this.Gf,es({width:16,height:16})),this.Jp.subscribeSuggestedBitmapSizeChanged(this.qp)}m(){this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),Cs(this.Jp.canvasElement),this.Jp.dispose()}Zf(){return this.Gf}Jf(){return this.Op}lv(t){ns(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.Ps.layout.colorSpace});null!==i&&i.useBitmapCoordinateSpace(t=>{this.uv(t),this.cv(t)})}Qf(){return this.Jp.bitmapSize}tp(t,i,s){const e=this.Qf();e.width>0&&e.height>0&&t.drawImage(this.Jp.canvasElement,i,s)}cv({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(!this.fm())return;t.fillStyle=this.Ps.timeScale.borderColor;const n=Math.floor(this.Qu.W().S*s),h=Math.floor(this.Qu.W().S*e),r=this.Gp?i.width-n:0;t.fillRect(r,0,n,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.gm=null,this.M=null,this.wm=!1,this.Op=es({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.Ps=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=Ps(this.Sm,es({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=Ps(this.Sm,es({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.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.gm&&this.gm.m(),this.Qp.unsubscribeSuggestedBitmapSizeChanged(this.Yp),Cs(this.Qp.canvasElement),this.Qp.dispose(),this.Jp.unsubscribeSuggestedBitmapSizeChanged(this.qp),Cs(this.Jp.canvasElement),this.Jp.dispose()}Zf(){return this.kp}Tm(){return this.vm}Pm(){return this.gm}Sf(t){if(this.wm)return;this.wm=!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.wm&&(this.wm=!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.Cc(t.localX)}uf(t){this.df(t)}mf(){this.wm=!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().ue()}jd(){this.Xd()}ef(){this.Vp.ti().W().handleScale.axisPressedMouseMove.time&&this.mv(1)}Lf(){this.mv(0)}Jf(){return this.Op}Cm(){return this.Mm}km(t,i,s){ns(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(es({width:i,height:t.height})),null!==this.gm&&this.gm.lv(es({width:s,height:t.height}))}Dm(){const t=this.Rm();return Math.ceil(t.S+t.T+t.P+t.F+t.L+t.Em)}Ct(){this.Vp.ti().It().El()}Qf(){return this.Jp.bitmapSize}tp(t,i,s,e){const n=this.Qf();if(n.width>0&&n.height>0&&(t.drawImage(this.Jp.canvasElement,i,s),e)){const e=this.Qp.canvasElement;t.drawImage(e,i,s)}}ov(t){if(0===t)return;const i={colorSpace:this.Ps.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.gm&&this.gm.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 e of s)Rs(i,i=>ks(i,t,!1,void 0),e,void 0);for(const e of s)Rs(i,i=>Ds(i,t,!1,void 0),e,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 e=Math.max(1,Math.floor(this.Rm().S*s));t.fillRect(0,0,i.width,e)}}fv(t){const i=this.Vp.ti().It(),s=i.El();if(!s||0===s.length)return;const e=this.__.maxTickMarkWeight(s),n=this.Rm(),h=i.W();h.borderVisible&&h.ticksVisible&&t.useBitmapCoordinateSpace(({context:t,horizontalPixelRatio:i,verticalPixelRatio:e})=>{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(n.T*e);for(let e=s.length;e--;){const n=Math.round(s[e].coord*i);t.rect(n-r,0,h,l)}t.fill()}),t.useMediaCoordinateSpace(({context:t})=>{const i=n.S+n.T+n.F+n.P/2;t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.N(),t.font=this.hv();for(const n of s)if(n.weight<e){const s=n.needAlignCoordinate?this.Im(t,n.coord,n.label):n.coord;t.fillText(n.label,s,i)}this.Vp.W().timeScale.allowBoldLabels&&(t.font=this.Fm());for(const n of s)if(n.weight>=e){const s=n.needAlignCoordinate?this.Im(t,n.coord,n.label):n.coord;t.fillText(n.label,s,i)}})}Im(t,i,s){const e=this.$p.Vi(t,s),n=e/2,h=Math.floor(i-n)+.5;return h<0?i+=Math.abs(0-h):h+e>this.Op.width&&(i-=Math.abs(this.Op.width-(h+e))),i}Lm(t,i){const s=this.Rm();for(const e of t)for(const t of e.ds())t.Dt().nt(i,s)}Am(){return this.Vp.W().timeScale.borderColor}N(){return this.Ps.textColor}$(){return this.Ps.fontSize}hv(){return w(this.$(),this.Ps.fontFamily)}Fm(){return w(this.$(),this.Ps.fontFamily,"bold")}Rm(){null===this.M&&(this.M={S:1,B:NaN,F:NaN,L:NaN,Qi:NaN,T:5,P:NaN,C:"",Ji:new it,Em:0});const t=this.M,i=this.hv();if(t.C!==i){const s=this.$();t.P=s,t.C=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.Ee()}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.gm||(this.ym.removeChild(this.gm.Zf()),this.gm.m(),this.gm=null);const s={Lc:this.Vp.ti().Lc()},e=()=>i.leftPriceScale.borderVisible&&t.It().W().borderVisible,n=()=>t.Hc();i.leftPriceScale.visible&&null===this.vm&&(this.vm=new Os("left",i,s,e,n),this.bm.appendChild(this.vm.Zf())),i.rightPriceScale.visible&&null===this.gm&&(this.gm=new Os("right",i,s,e,n),this.ym.appendChild(this.gm.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 e;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.Tv=new o,this.Xu=new o,this.Um=null,this.qm=null,this.Ep=t,this.Ps=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%",(e=this.kp).style.userSelect="none",e.style.webkitUserSelect="none",e.style.msUserSelect="none",e.style.MozUserSelect="none",e.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.Ps)&&this.Km(!0),this.ss=new Fi(this.Ju.bind(this),this.Ps,s),this.ti().dc().i(this.Xm.bind(this),this),this.Zm=new Us(this,this.__),this.jm.appendChild(this.Zm.Zf());const n=i.autoSize&&this.Jm();let h=this.Ps.width,r=this.Ps.height;if(n||0===h||0===r){const i=t.getBoundingClientRect();h=h||i.width,r=r||i.height}this.Qm(h,r),this.tg(),t.appendChild(this.kp),this.ig(),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.Ps}qf(){return this.Bm}sg(){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.eg(t);this.zm=[],l(this.Zm).m(),null!==this.kp.parentElement&&this.kp.parentElement.removeChild(this.kp),this.Xu.m(),this.xv.m(),this.Tv.m(),this.ng()}Qm(t,i,s=!1){if(this.sa===i&&this.bo===t)return;const e=function(t){const i=Math.floor(t.width),s=Math.floor(t.height);return es({width:i-i%2,height:s-s%2})}(es({width:t,height:i}));this.sa=e.height,this.bo=e.width;const n=this.sa+"px",h=this.bo+"px";l(this.kp).style.height=n,l(this.kp).style.width=h,this.jm.style.height=n,this.jm.style.width=h,s?this.hg(Y.ge(),performance.now()):this.ss.Ar()}ov(t){void 0===t&&(t=Y.ge());for(let i=0;i<this.Bm.length;i++)this.Bm[i].ov(t.ne(i).ie);this.Ps.timeScale.visible&&this.Zm.ov(t.ee())}ah(t){const i=Ys(this.Ps);this.ss.ah(t);const s=Ys(this.Ps);s!==i&&this.Km(s),t.layout?.panes&&this.rg(),this.ig(),this.lg(t)}Xv(){return this.xv}Zv(){return this.Tv}dc(){return this.Xu}ag(t=!1){null!==this.Hm&&(this.hg(this.Hm,performance.now()),this.Hm=null);const i=this.og(null),s=document.createElement("canvas");s.width=i.width,s.height=i.height;const e=l(s.getContext("2d"));return this.og(e,t),s}_g(t){if("left"===t&&!this.ug())return 0;if("right"===t&&!this.cg())return 0;if(0===this.Bm.length)return 0;return l("left"===t?this.Bm[0].hm():this.Bm[0].rm()).av()}dg(){return this.Ps.autoSize&&null!==this.Um}sp(){return this.kp}fg(t){this.qm=t,this.qm?this.sp().style.setProperty("cursor",t):this.sp().style.removeProperty("cursor")}pg(){return this.qm}vg(t){return r(this.Bm[t]).Jf()}rg(){this.zm.forEach(t=>{t.Ct()})}lg(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.ng(),t.autoSize||void 0===t.width&&void 0===t.height||this.Qm(t.width||this.bo,t.height||this.sa))}og(t,i){let s=0,e=0;const n=this.Bm[0],h=(s,e)=>{let n=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,e,n,i),n+=o.height,h<this.Bm.length-1){const i=this.zm[h],s=i.Qf();null!==t&&i.tp(t,e,n),n+=s.height}}};if(this.ug()){h("left",0);s+=l(n.hm()).Qf().width}for(let n=0;n<this.Bm.length;n++){const h=this.Bm[n],r=h.Qf();if(null!==t&&h.tp(t,s,e,i),e+=r.height,n<this.Bm.length-1){const i=this.zm[n],h=i.Qf();null!==t&&i.tp(t,s,e),e+=h.height}}if(s+=n.Qf().width,this.cg()){h("right",s);s+=l(n.rm()).Qf().width}const r=(i,s,e)=>{l("left"===i?this.Zm.Tm():this.Zm.Pm()).tp(l(t),s,e)};if(this.Ps.timeScale.visible){const s=this.Zm.Qf();if(null!==t){let h=0;this.ug()&&(r("left",h,e),h=l(n.hm()).Qf().width),this.Zm.tp(t,h,e,i),h+=s.width,this.cg()&&r("right",h,e)}e+=s.height}return es({width:s,height:e})}mg(){let t=0,i=0,s=0;for(const e of this.Bm)this.ug()&&(i=Math.max(i,l(e.hm()).nv(),this.Ps.leftPriceScale.minimumWidth)),this.cg()&&(s=Math.max(s,l(e.rm()).nv(),this.Ps.rightPriceScale.minimumWidth)),t+=e.Lo();i=ds(i),s=ds(s);const e=this.bo,n=this.sa,h=Math.max(e-i-s,0),r=1*this.zm.length,a=this.Ps.timeScale.visible;let o=a?Math.max(this.Zm.Dm(),this.Ps.timeScale.minimumHeight):0;var _;o=(_=o)+_%2;const u=r+o,c=n<u?0:n-u,d=c/t;let f=0;const p=window.devicePixelRatio||1;for(let t=0;t<this.Bm.length;++t){const e=this.Bm[t];e.zv(this.ss.qs()[t]);let n=0,r=0;r=t===this.Bm.length-1?Math.ceil((c-f)*p)/p:Math.round(e.Lo()*d*p)/p,n=Math.max(r,2),f+=n,e.lv(es({width:h,height:n})),this.ug()&&e.Qv(i,"left"),this.cg()&&e.Qv(s,"right"),e.ap()&&this.ss.fc(e.ap(),n)}this.Zm.km(es({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)}gg(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.Ps.handleScroll.mouseWheel||0!==t.deltaY&&this.Ps.handleScale.mouseWheel))return;const i=this.gg(t),s=i*t.deltaX/100,e=-i*t.deltaY/100;if(t.cancelable&&t.preventDefault(),0!==e&&this.Ps.handleScale.mouseWheel){const i=Math.sign(e)*Math.min(1,Math.abs(e)),s=t.clientX-this.kp.getBoundingClientRect().left;this.ti().yc(s,i)}0!==s&&this.Ps.handleScroll.mouseWheel&&this.ti().Sc(-80*s)}hg(t,i){const s=t.ee();3===s&&this.wg(),3!==s&&2!==s||(this.Mg(t),this.bg(t,i),this.Zm.Ct(),this.Bm.forEach(t=>{t.Wv()}),3===this.Hm?.ee()&&(this.Hm.pe(t),this.wg(),this.Mg(this.Hm),this.bg(this.Hm,i),t=this.Hm,this.Hm=null)),this.ov(t)}bg(t,i){for(const s of t.fe())this.ve(s,i)}Mg(t){const i=this.ss.qs();for(let s=0;s<i.length;s++)t.ne(s).se&&i[s].Jo()}ve(t,i){const s=this.ss.It();switch(t.le){case 0:s.Fu();break;case 1:s.Bu(t.Ht);break;case 2:s.ce(t.Ht);break;case 3:s.de(t.Ht);break;case 4:s.Su();break;case 5:t.Ht.Ru(i)||s.de(t.Ht.Eu(i))}}Ju(t){null!==this.Hm?this.Hm.pe(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.hg(i,t);for(const s of i.fe())if(5===s.le&&!s.Ht.Ru(t)){this.ti().oe(s.Ht);break}}}))}wg(){this.tg()}eg(t){this.jm.removeChild(t.Zf()),t.m()}tg(){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.eg(i)}for(let e=s;e<i;e++){const i=new zs(this,t[e]);if(i.Xv().i(this.yg.bind(this,i),this),i.Zv().i(this.Sg.bind(this,i),this),this.Bm.push(i),e>0){const t=new bs(this,e-1,e);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],e=this.Bm[s];e.ap()!==i?e.zv(i):e.Bv()}this.ig(),this.mg()}xg(t,i,s,e){const n=new Map;if(null!==t){this.ss.Gs().forEach(i=>{const s=i.Xs().$h(t);null!==s&&n.set(i,s)})}let h;if(null!==t){const i=this.ss.It().es(t)?.originalTime;void 0!==i&&(h=i)}const r=this.ti().ac(),l=null!==r&&r.n_ instanceof Ut?r.n_:void 0,a=null!==r&&void 0!==r.h_?r.h_.Ye:void 0,o=this.Tg(e);return{Pg:h,Rn:t??void 0,Cg:i??void 0,kg:-1!==o?o:void 0,Dg:l,Rg:n,Eg:a,Vg:s??void 0}}Tg(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}yg(t,i,s,e){this.xv.p(()=>this.xg(i,s,e,t))}Sg(t,i,s,e){this.Tv.p(()=>this.xg(i,s,e,t))}Xm(t,i,s){this.fg(this.ti().ac()?.l_??null),this.Xu.p(()=>this.xg(t,i,s))}ig(){const t=this.Ps.timeScale.visible?"":"none";this.Zm.Zf().style.display=t}ug(){return this.Bm[0].ap().Ho().W().visible}cg(){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)}ng(){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,e){const n=s.value,h={Rn:i,wt:t,Ht:[n,n,n,n],Pg:e};return void 0!==s.color&&(h.R=s.color),h}function Zs(t,i,s,e){const n=s.value,h={Rn:i,wt:t,Ht:[n,n,n,n],Pg:e};return void 0!==s.lineColor&&(h.gt=s.lineColor),void 0!==s.topColor&&(h.wh=s.topColor),void 0!==s.bottomColor&&(h.Mh=s.bottomColor),h}function Js(t,i,s,e){const n=s.value,h={Rn:i,wt:t,Ht:[n,n,n,n],Pg:e};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.Th=s.bottomFillColor1),void 0!==s.bottomFillColor2&&(h.Ph=s.bottomFillColor2),h}function Qs(t,i,s,e){const n={Rn:i,wt:t,Ht:[s.open,s.high,s.low,s.close],Pg:e};return void 0!==s.color&&(n.R=s.color),n}function te(t,i,s,e){const n={Rn:i,wt:t,Ht:[s.open,s.high,s.low,s.close],Pg:e};return void 0!==s.color&&(n.R=s.color),void 0!==s.borderColor&&(n.Nt=s.borderColor),void 0!==s.wickColor&&(n.gh=s.wickColor),n}function ie(t,i,s,e,n){const h=r(n)(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{Rn:i,wt:t,Ht:_,Pg:e,sn:d,R:c}}function se(t){return void 0!==t.Ht}function ee(t,i){return void 0!==i.customValues&&(t.Lg=i.customValues),t}function ne(t){return(i,s,e,n,h,r)=>function(t,i){return i?i(t):Gs(t)}(e,r)?ee({wt:i,Rn:s,Pg:n},e):ee(t(i,s,e,n,h),e)}function he(t){return{Candlestick:ne(te),Bar:ne(Qs),Area:ne(Zs),Baseline:ne(Js),Histogram:ne(Xs),Line:ne(Xs),Custom:ne(ie)}[t]}function re(t){return{Rn:0,Ag:new Map,Nr:t}}function le(t,i){if(void 0!==t&&0!==t.length)return{Ig:i.key(t[0].wt),Fg:i.key(t[t.length-1].wt)}}function ae(t){let i;return t.forEach(t=>{void 0===i&&(i=t.Pg)}),r(i)}class oe{constructor(t){this.Bg=new Map,this.zg=new Map,this.Og=new Map,this.Wg=[],this.__=t}m(){this.Bg.clear(),this.zg.clear(),this.Og.clear(),this.Wg=[]}$g(t,i){let s=0!==this.Bg.size,e=!1;const n=this.zg.get(t);if(void 0!==n)if(1===this.zg.size)s=!1,e=!0,this.Bg.clear();else for(const i of this.Wg)i.pointData.Ag.delete(t)&&(e=!0);let h=[];if(0!==i.length){const s=i.map(t=>t.time),n=this.__.createConverterToInternalObj(i),r=he(t.Rh()),l=t.dl(),a=t.pl();h=i.map((i,h)=>{const o=n(i.time),_=this.__.key(o);let u=this.Bg.get(_);void 0===u&&(u=re(o),this.Bg.set(_,u),e=!0);const c=r(o,u.Rn,i,s[h],l,a);return u.Ag.set(t,c),c})}s&&this.Hg(),this.Ng(t,h);let r=-1;if(e){const t=[];this.Bg.forEach(i=>{t.push({timeWeight:0,time:i.Nr,pointData:i,originalTime:ae(i.Ag)})}),t.sort((t,i)=>this.__.key(t.time)-this.__.key(i.time)),r=this.Ug(t)}return this.qg(t,r,function(t,i,s){const e=le(t,s),n=le(i,s);if(void 0!==e&&void 0!==n)return{jg:!1,Br:e.Fg>=n.Fg&&e.Ig>=n.Ig}}(this.zg.get(t),n,this.__))}Fc(t){return this.$g(t,[])}Yg(t,i,s){const e=i;!function(t){void 0===t.Pg&&(t.Pg=t.time)}(e),this.__.preprocessData(i);const n=this.__.createConverterToInternalObj([i])(i.time),h=this.Og.get(t);if(!s&&void 0!==h&&this.__.key(n)<this.__.key(h))throw new Error(`Cannot update oldest data, last time=${h}, new time=${n}`);let r=this.Bg.get(this.__.key(n));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=re(n),this.Bg.set(this.__.key(n),r));const a=he(t.Rh()),o=t.dl(),_=t.pl(),u=a(n,r.Rn,i,e.Pg,o,_);r.Ag.set(t,u),s?this.Gg(t,u,r.Rn):this.Kg(t,u);const c={Br:se(u),jg:s};if(!l)return this.qg(t,-1,c);const d={timeWeight:0,time:r.Nr,pointData:r,originalTime:ae(r.Ag)},f=yt(this.Wg,this.__.key(d.time),(t,i)=>this.__.key(t.time)<i);this.Wg.splice(f,0,d);for(let t=f;t<this.Wg.length;++t)_e(this.Wg[t].pointData,t);return this.__.fillWeightsForPoints(this.Wg,f),this.qg(t,f,c)}Xg(t,i){const s=this.zg.get(t);if(void 0===s||i<=0)return[[],this.Zg()];i=Math.min(i,s.length);const e=s.splice(-i).reverse();0===s.length?this.Og.delete(t):this.Og.set(t,s[s.length-1].wt);for(const i of e){const s=this.Bg.get(this.__.key(i.wt));if(s&&(s.Ag.delete(t),0===s.Ag.size)){this.Bg.delete(this.__.key(s.Nr)),this.Wg.splice(s.Rn,1);for(let t=s.Rn;t<this.Wg.length;++t)_e(this.Wg[t].pointData,t)}}return[e,this.qg(t,this.Wg.length-1,{jg:!1,Br:!1})]}Kg(t,i){let s=this.zg.get(t);void 0===s&&(s=[],this.zg.set(t,s));const e=0!==s.length?s[s.length-1]:null;null===e||this.__.key(i.wt)>this.__.key(e.wt)?se(i)&&s.push(i):se(i)?s[s.length-1]=i:s.splice(-1,1),this.Og.set(t,i.wt)}Gg(t,i,s){const e=this.zg.get(t);if(void 0===e)return;const n=yt(e,s,(t,i)=>t.Rn<i);se(i)?e[n]=i:e.splice(n,1)}Ng(t,i){0!==i.length?(this.zg.set(t,i.filter(se)),this.Og.set(t,i[i.length-1].wt)):(this.zg.delete(t),this.Og.delete(t))}Hg(){for(const t of this.Wg)0===t.pointData.Ag.size&&this.Bg.delete(this.__.key(t.time))}Ug(t){let i=-1;for(let s=0;s<this.Wg.length&&s<t.length;++s){const e=this.Wg[s],n=t[s];if(this.__.key(e.time)!==this.__.key(n.time)){i=s;break}n.timeWeight=e.timeWeight,_e(n.pointData,s)}if(-1===i&&this.Wg.length!==t.length&&(i=Math.min(this.Wg.length,t.length)),-1===i)return-1;for(let s=i;s<t.length;++s)_e(t[s].pointData,s);return this.__.fillWeightsForPoints(t,i),this.Wg=t,i}Jg(){if(0===this.zg.size)return null;let t=0;return this.zg.forEach(i=>{0!==i.length&&(t=Math.max(t,i[i.length-1].Rn))}),t}qg(t,i,s){const e=this.Zg();if(-1!==i)this.zg.forEach((i,n)=>{e.Oo.set(n,{sn:i,Qg:n===t?s:void 0})}),this.zg.has(t)||e.Oo.set(t,{sn:[],Qg:s}),e.It.tw=this.Wg,e.It.iw=i;else{const i=this.zg.get(t);e.Oo.set(t,{sn:i||[],Qg:s})}return e}Zg(){return{Oo:new Map,It:{uu:this.Jg()}}}}function _e(t,i){t.Rn=i,t.Ag.forEach(t=>{t.Rn=i})}function ue(t,i){return t.wt<i}function ce(t,i){return i<t.wt}function de(t,i,s){const e=i.Ur(),n=i.yi(),h=yt(t,e,ue),r=St(t,n,ce);if(!s)return{from:h,to:r};let l=h,a=r;return h>0&&h<t.length&&t[h].wt>=e&&(l=h-1),r>0&&r<t.length&&t[r-1].wt<=n&&(a=r+1),{from:l,to:a}}class fe{constructor(t,i,s){this.sw=!0,this.ew=!0,this.nw=!0,this.hw=[],this.rw=null,this.Ze=t,this.Je=i,this.lw=s}Ct(t){this.sw=!0,"data"===t&&(this.ew=!0),"options"===t&&(this.nw=!0)}Dt(){return this.Ze.Vt()?(this.aw(),null===this.rw?null:this.ow):null}_w(){this.hw=this.hw.map(t=>({...t,...this.Ze.Rr().Eh(t.wt)}))}uw(){this.rw=null}aw(){this.ew&&(this.cw(),this.ew=!1),this.nw&&(this._w(),this.nw=!1),this.sw&&(this.dw(),this.sw=!1)}dw(){const t=this.Ze.$t(),i=this.Je.It();if(this.uw(),i.Ki()||t.Ki())return;const s=i.Pn();if(null===s)return;if(0===this.Ze.Xs().Bh())return;const e=this.Ze.Bt();null!==e&&(this.rw=de(this.hw,s,this.lw),this.fw(t,i,e.Ht),this.pw())}}class pe{constructor(t,i){this.mw=t,this.Yi=i}nt(t,i,s){this.mw.draw(t,this.Yi,i,s)}}class ve extends fe{constructor(t,i,s){super(t,i,!1),this.er=s,this.ow=new pe(this.er.renderer(),i=>{const s=t.Bt();return null===s?null:t.$t().Wt(i,s.Ht)})}fl(t){return this.er.priceValueBuilder(t)}vl(t){return this.er.isWhitespace(t)}cw(){const t=this.Ze.Rr();this.hw=this.Ze.Xs().Nh().map(i=>({wt:i.Rn,ut:NaN,...t.Eh(i.Rn),gw:i.sn}))}fw(t,i){i.cu(this.hw,m(this.rw))}pw(){this.er.update({bars:this.hw.map(me),barSpacing:this.Je.It().gu(),visibleRange:this.rw},this.Ze.W())}}function me(t){return{x:t.ut,time:t.wt,originalData:t.gw,barColor:t.fh}}const ge={color:"#2196f3"},we=(t,i,s)=>{const e=a(s);return new ve(t,i,e)};function Me(t){const i={value:t.Ht[3],time:t.Pg};return void 0!==t.Lg&&(i.customValues=t.Lg),i}function be(t){const i=Me(t);return void 0!==t.R&&(i.color=t.R),i}function ye(t){const i=Me(t);return void 0!==t.gt&&(i.lineColor=t.gt),void 0!==t.wh&&(i.topColor=t.wh),void 0!==t.Mh&&(i.bottomColor=t.Mh),i}function Se(t){const i=Me(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.Th&&(i.bottomFillColor1=t.Th),void 0!==t.Ph&&(i.bottomFillColor2=t.Ph),i}function xe(t){const i={open:t.Ht[0],high:t.Ht[1],low:t.Ht[2],close:t.Ht[3],time:t.Pg};return void 0!==t.Lg&&(i.customValues=t.Lg),i}function Te(t){const i=xe(t);return void 0!==t.R&&(i.color=t.R),i}function Pe(t){const i=xe(t),{R:s,Nt:e,gh:n}=t;return void 0!==s&&(i.color=s),void 0!==e&&(i.borderColor=e),void 0!==n&&(i.wickColor=n),i}function Ce(t){return{Area:ye,Line:be,Baseline:Se,Histogram:be,Bar:Te,Candlestick:Pe,Custom:ke}[t]}function ke(t){const i=t.Pg;return{...t.sn,time:i}}const De={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},Re={vertLines:{color:"#D6DCDE",style:0,visible:!0},horzLines:{color:"#D6DCDE",style:0,visible:!0}},Ee={background:{type:"solid",color:"#FFFFFF"},textColor:"#191919",fontSize:12,fontFamily:g,panes:{enableResize:!0,separatorColor:"#E0E3EB",separatorHoverColor:"rgba(178, 181, 189, 0.2)"},attributionLogo:!0,colorSpace:"srgb",colorParsers:[]},Ve={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},Le={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 Ae(){return{addDefaultPane:!0,width:0,height:0,autoSize:!1,layout:Ee,crosshair:De,grid:Re,overlayPriceScales:{...Ve},leftPriceScale:{...Ve,visible:!1},rightPriceScale:{...Ve,visible:!0},timeScale:Le,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 Ie{constructor(t,i,s){this.Nf=t,this.ww=i,this.Mw=s??0}applyOptions(t){this.Nf.ti()._c(this.ww,t,this.Mw)}options(){return this.Yi().W()}width(){return j(this.ww)?this.Nf._g(this.ww):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 e=this.Yi().po(),n=Bi(e);s=ai(s,this.Yi().ia()),t=Number((Math.round(s.qn()/e)*e).toFixed(n)),i=Number((Math.round(s.jn()/e)*e).toFixed(n))}else t=s.qn(),i=s.jn();return{from:t,to:i}}setAutoScale(t){this.applyOptions({autoScale:t})}Yi(){return l(this.Nf.ti().uc(this.ww,this.Mw)).$t}}class Fe{constructor(t,i,s,e){this.Nf=t,this.Pt=s,this.bw=i,this.yw=e}getHeight(){return this.Pt.qt()}setHeight(t){const i=this.Nf.ti(),s=i.Uc(this.Pt);i.mc(s,t)}getStretchFactor(){return this.Pt.Lo()}setStretchFactor(t){this.Pt.Ao(t),this.Nf.ti().Ar()}paneIndex(){return this.Nf.ti().Uc(this.Pt)}moveTo(t){const i=this.paneIndex();i!==t&&(h(t>=0&&t<this.Nf.qf().length,"Invalid pane index"),this.Nf.ti().wc(i,t))}getSeries(){return this.Pt.Oo().map(t=>this.bw(t))??[]}getHTMLElement(){const t=this.Nf.qf();return t&&0!==t.length&&t[this.paneIndex()]?t[this.paneIndex()].Zf():null}attachPrimitive(t){this.Pt.ul(t),t.attached&&t.attached({chart:this.yw,requestUpdate:()=>this.Pt.ti().Ar()})}detachPrimitive(t){this.Pt.cl(t)}priceScale(t){if(null===this.Pt.Eo(t))throw new Error(`Cannot find price scale with id: ${t}`);return new Ie(this.Nf,t,this.paneIndex())}setPreserveEmptyPane(t){this.Pt.Bo(t)}preserveEmptyPane(){return this.Pt.zo()}addCustomSeries(t,i={},s=0){return this.yw.addCustomSeries(t,i,s)}addSeries(t,i={}){return this.yw.addSeries(t,i,this.paneIndex())}}const Be={color:"#FF0000",price:0,lineStyle:2,lineWidth:1,lineVisible:!0,axisLabelVisible:!0,title:"",axisLabelColor:"",axisLabelTextColor:""};class ze{constructor(t){this.sh=t}applyOptions(t){this.sh.ah(t)}options(){return this.sh.W()}Sw(){return this.sh}}class Oe{constructor(t,i,s,e,n,h){this.xw=new o,this.Ze=t,this.Tw=i,this.Pw=s,this.__=n,this.yw=e,this.Cw=h}m(){this.xw.m()}priceFormatter(){return this.Ze.hl()}priceToCoordinate(t){const i=this.Ze.Bt();return null===i?null:this.Ze.$t().Wt(t,i.Ht)}coordinateToPrice(t){const i=this.Ze.Bt();return null===i?null:this.Ze.$t().Ds(t,i.Ht)}barsInLogicalRange(t){if(null===t)return null;const i=new ki(new Ti(t.from,t.to)).C_(),s=this.Ze.Xs();if(s.Ki())return null;const e=s.$h(i.Ur(),1),n=s.$h(i.yi(),-1),h=l(s.zh()),r=l(s.Ks());if(null!==e&&null!==n&&e.Rn>n.Rn)return{barsBefore:t.from-h,barsAfter:r-t.to};const a={barsBefore:null===e||e.Rn===h?t.from-h:e.Rn-h,barsAfter:null===n||n.Rn===r?r-t.to:r-n.Rn};return null!==e&&null!==n&&(a.from=e.Pg,a.to=n.Pg),a}setData(t){this.__,this.Ze.Rh(),this.Tw.kw(this.Ze,t),this.Dw("full")}update(t,i=!1){this.Ze.Rh(),this.Tw.Rw(this.Ze,t,i),this.Dw("update")}pop(t=1){const i=this.Tw.Ew(this.Ze,t);0!==i.length&&this.Dw("update");const s=Ce(this.seriesType());return i.map(t=>s(t))}dataByIndex(t,i){const s=this.Ze.Xs().$h(t,i);if(null===s)return null;return Ce(this.seriesType())(s)}data(){const t=Ce(this.seriesType());return this.Ze.Xs().Nh().map(i=>t(i))}subscribeDataChanged(t){this.xw.i(t)}unsubscribeDataChanged(t){this.xw._(t)}applyOptions(t){this.Ze.ah(t)}options(){return p(this.Ze.W())}priceScale(){return this.Pw.priceScale(this.Ze.$t().gl(),this.getPane().paneIndex())}createPriceLine(t){const i=_(p(Be),t),s=this.Ze.Or(i);return new ze(s)}removePriceLine(t){this.Ze.Wr(t.Sw())}priceLines(){return this.Ze.$r().map(t=>new ze(t))}seriesType(){return this.Ze.Rh()}lastValueData(t){const i=this.Ze.Cn(t);return i.kn?{noData:!0}:{noData:!1,price:i.Mt,color:i.R}}attachPrimitive(t){this.Ze.ul(t),t.attached&&t.attached({chart:this.yw,series:this,requestUpdate:()=>this.Ze.ti().Ar(),horzScaleBehavior:this.__})}detachPrimitive(t){this.Ze.cl(t),t.detached&&t.detached(),this.Ze.ti().Ar()}getPane(){const t=this.Ze,i=l(this.Ze.ti().$e(t));return this.Cw(i)}moveToPane(t){this.Ze.ti().Wc(this.Ze,t)}seriesOrder(){const t=this.Ze.ti().$e(this.Ze);return null===t?-1:t.Oo().indexOf(this.Ze)}setSeriesOrder(t){const i=this.Ze.ti().$e(this.Ze);null!==i&&i.t_(this.Ze,t)}Dw(t){this.xw.v()&&this.xw.p(t)}}class We{constructor(t,i,s){this.Vw=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.Lw.bind(this)),this.cr.Lu().i(this.Aw.bind(this)),this.Zm.Cm().i(this.Iw.bind(this)),this.__=s}m(){this.cr.Vu().u(this),this.cr.Lu().u(this),this.Zm.Cm().u(this),this.Vw.m(),this.B_.m(),this.Mm.m()}scrollPosition(){return this.cr.Mu()}scrollToPosition(t,i){i?this.cr.Du(t,1e3):this.ss.de(t)}scrollToRealTime(){this.cr.ku()}getVisibleRange(){const t=this.cr.nu();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.eu();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.ue()}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),e=i.es(s);return null===e?null:e.originalTime}width(){return this.Zm.Jf().width}height(){return this.Zm.Jf().height}subscribeVisibleTimeRangeChange(t){this.Vw.i(t)}unsubscribeVisibleTimeRangeChange(t){this.Vw._(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.gu()}}Lw(){this.Vw.v()&&this.Vw.p(this.getVisibleRange())}Aw(){this.B_.v()&&this.B_.p(this.getVisibleLogicalRange())}Iw(t){this.Mm.p(t.width,t.height)}}function $e(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 He{constructor(t,i,s){this.Fw=new Map,this.Bw=new Map,this.zw=new o,this.Ow=new o,this.Ww=new o,this.ju=new WeakMap,this.$w=new oe(i);const e=void 0===s?p(Ae()):_(p(Ae()),$e(s));this.Hw=i,this.Nf=new js(t,e,i),this.Nf.Xv().i(t=>{this.zw.v()&&this.zw.p(this.Nw(t()))},this),this.Nf.Zv().i(t=>{this.Ow.v()&&this.Ow.p(this.Nw(t()))},this),this.Nf.dc().i(t=>{this.Ww.v()&&this.Ww.p(this.Nw(t()))},this);const n=this.Nf.ti();this.Uw=new We(n,this.Nf.sg(),this.Hw)}remove(){this.Nf.Xv().u(this),this.Nf.Zv().u(this),this.Nf.dc().u(this),this.Uw.m(),this.Nf.m(),this.Fw.clear(),this.Bw.clear(),this.zw.m(),this.Ow.m(),this.Ww.m(),this.$w.m()}resize(t,i,s){this.autoSizeActive()||this.Nf.Qm(t,i,s)}addCustomSeries(t,i={},s=0){const e=(t=>({type:"Custom",isBuiltIn:!1,defaultOptions:{...ge,...t.defaultOptions()},qw:we,jw:t}))(a(t));return this.Yw(e,i,s)}addSeries(t,i={},s=0){return this.Yw(t,i,s)}removeSeries(t){const i=r(this.Fw.get(t)),s=this.$w.Fc(i);this.Nf.ti().Fc(i),this.Gw(s),this.Fw.delete(t),this.Bw.delete(i)}kw(t,i){this.Gw(this.$w.$g(t,i))}Rw(t,i,s){this.Gw(this.$w.Yg(t,i,s))}Ew(t,i){const[s,e]=this.$w.Xg(t,i);return 0!==s.length&&this.Gw(e),s}subscribeClick(t){this.zw.i(t)}unsubscribeClick(t){this.zw._(t)}subscribeCrosshairMove(t){this.Ww.i(t)}unsubscribeCrosshairMove(t){this.Ww._(t)}subscribeDblClick(t){this.Ow.i(t)}unsubscribeDblClick(t){this.Ow._(t)}priceScale(t,i=0){return new Ie(this.Nf,t,i)}timeScale(){return this.Uw}applyOptions(t){this.Nf.ah($e(t))}options(){return this.Nf.W()}takeScreenshot(t=!1,i=!1){let s,e;try{i||(s=this.Nf.ti().W().crosshair.mode,this.Nf.ah({crosshair:{mode:2}})),e=this.Nf.ag(t)}finally{i||void 0===s||this.Nf.ti().ah({crosshair:{mode:s}})}return e}addPane(t=!1){const i=this.Nf.ti().qc();return i.Bo(t),this.Kw(i)}removePane(t){this.Nf.ti().vc(t)}swapPanes(t,i){this.Nf.ti().gc(t,i)}autoSizeActive(){return this.Nf.dg()}chartElement(){return this.Nf.sp()}panes(){return this.Nf.ti().qs().map(t=>this.Kw(t))}paneSize(t=0){const i=this.Nf.vg(t);return{height:i.height,width:i.width}}setCrosshairPosition(t,i,s){const e=this.Fw.get(s);if(void 0===e)return;const n=this.Nf.ti().$e(e);null!==n&&this.Nf.ti().Rc(t,i,n)}clearCrosshairPosition(){this.Nf.ti().Ec(!0)}horzBehaviour(){return this.Hw}Yw(i,s={},e=0){h(void 0!==i.qw),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 n=_(p(t),p(i.defaultOptions),s),r=i.qw,l=new Ut(this.Nf.ti(),i.type,n,r,i.jw);this.Nf.ti().Ac(l,e);const a=new Oe(l,this,this,this,this.Hw,t=>this.Kw(t));return this.Fw.set(a,l),this.Bw.set(l,a),a}Gw(t){const i=this.Nf.ti();i.Vc(t.It.uu,t.It.tw,t.It.iw),t.Oo.forEach((t,i)=>i.lt(t.sn,t.Qg)),i.It().K_(),i.mu()}Xw(t){return r(this.Bw.get(t))}Nw(t){const i=new Map;t.Rg.forEach((t,s)=>{const e=s.Rh(),n=Ce(e)(t);if("Custom"!==e)h(Ks(n));else{const t=s.pl();h(!t||!1===t(n))}i.set(this.Xw(s),n)});const s=void 0!==t.Dg&&this.Bw.has(t.Dg)?this.Xw(t.Dg):void 0;return{time:t.Pg,logical:t.Rn,point:t.Cg,paneIndex:t.kg,hoveredSeries:s,hoveredObjectId:t.Eg,seriesData:i,sourceEvent:t.Vg}}Kw(t){let i=this.ju.get(t);return i||(i=new Fe(this.Nf,t=>this.Xw(t),t,this),this.ju.set(t,i)),i}}function Ne(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 Ue(t,i,s){const e=Ne(t),n=new He(e,i,s);return i.setOptions(n.options()),n}function qe(t,i){const s=t.timeScale(),e=i.dataByIndex(Number.MAX_SAFE_INTEGER,-1);if(!e||"number"!=typeof e.time)return null;const n=s.timeToCoordinate(e.time);if(null===n)return null;const h=s.coordinateToLogical(n);if(null===h)return null;const r=i.dataByIndex(h-1,-1);return!r||"number"!=typeof r.time||r.time>=e.time?null:{wt:e.time,Kl:h,Zw:e.time-r.time}}function je(t,i,s){const e=t.timeScale(),n=e.coordinateToTime(s);if(null!==n)return n;const h=e.coordinateToLogical(s);if(null===h)return null;const r=qe(t,i);if(null===r)return null;const l=h-r.Kl;return Math.round(r.wt+l*r.Zw)}function Ye(t,i,s){if(null==s)return null;const e=t.timeScale(),n=e.timeToCoordinate(s);if(null!==n)return n;if("number"!=typeof s)return null;const h=qe(t,i);if(null===h)return null;const r=h.Kl+(s-h.wt)/h.Zw,l=e.logicalToCoordinate(r);return null===l?null:l}class Ge extends fe{constructor(t,i){super(t,i,!0)}fw(t,i,s){i.cu(this.hw,m(this.rw)),t.Ua(this.hw,s,m(this.rw))}Jw(t,i){return{wt:t,Mt:i,ut:NaN,ct:NaN}}cw(){const t=this.Ze.Rr();this.hw=this.Ze.Xs().Nh().map(i=>{const s=i.Ht[3];return this.Qw(i.Rn,s,t)})}}function Ke(t,i,s,e,n,h,r){if(0===i.length||e.from>=i.length||e.to<=0)return;const{context:l,horizontalPixelRatio:a,verticalPixelRatio:o}=t,_=i[e.from];let u=h(t,_),c=_;if(e.to-e.from<2){const i=n/2;l.beginPath();const s={ut:_.ut-i,ct:_.ct},e={ut:_.ut+i,ct:_.ct};l.moveTo(s.ut*a,s.ct*o),l.lineTo(e.ut*a,e.ct*o),r(t,u,s,e)}else{const n=(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=e.from+1;r<e.to;++r){d=i[r];const e=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),e!==u&&(n(e,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]=Qe(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&&e!==u&&(n(e,d),l.moveTo(d.ut*a,d.ct*o))}(c!==d||c===d&&1===s)&&r(t,u,c,d)}}const Xe=6;function Ze(t,i){return{ut:t.ut-i.ut,ct:t.ct-i.ct}}function Je(t,i){return{ut:t.ut/i,ct:t.ct/i}}function Qe(t,i,s){const e=Math.max(0,i-1),n=Math.min(t.length-1,s+1);var h,r;return[(h=t[i],r=Je(Ze(t[s],t[e]),Xe),{ut:h.ut+r.ut,ct:h.ct+r.ct}),Ze(t[s],Je(Ze(t[n],t[i]),Xe))]}function tn(t,i){const s=t.context;s.strokeStyle=i,s.stroke()}class sn extends T{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht(t){if(null===this.rt)return;const{_t:i,ot:s,tM:n,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,e(o,l),o.lineJoin="round";const _=this.eM.bind(this);void 0!==h&&Ke(t,i,h,s,n,_,tn),a&&function(t,i,s,e,n){if(e.to-e.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=e.to-1;s>=e.from;--s){const e=i[s];if(e){const i=n(t,e);i!==a&&(l.beginPath(),null!==a&&l.fill(),l.fillStyle=i,a=i);const s=Math.round(e.ut*h)+o,u=e.ct*r;l.moveTo(s,u),l.arc(s,u,_,0,2*Math.PI)}}l.fill()}(t,i,a,s,_)}}class en extends sn{eM(t,i){return i.gt}}class nn extends Ge{constructor(){super(...arguments),this.ow=new en}Qw(t,i,s){return{...this.Jw(t,i),...s.Eh(t)}}pw(){const t=this.Ze.W(),i={_t:this.hw,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.rw,tM:this.Je.It().gu()};this.ow.lt(i)}}const hn={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},qw:(t,i)=>new nn(t,i)};function rn(t,i){return t.weight>i.weight?t:i}function ln(t){return t}class an{constructor(){this.nM=new o,this.hM=function(t){let i=!1;return function(...s){i||(i=!0,queueMicrotask(()=>{t(...s),i=!1}))}}(()=>this.nM.p(this.rM)),this.rM=0}lM(){return this.nM}m(){this.nM.m()}options(){return this.Ps}setOptions(t){this.Ps=t}preprocessData(t){}updateFormatter(t){this.Ps&&(this.Ps.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(rn,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 e=i;e<t.length;++e)t[e].timeWeight=s(ln(t[e].time));this.rM=t[t.length-1].time,this.hM()}aM(t){if(this.Ps.localization?.timeFormatter)return this.Ps.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 on={yieldCurve:{baseResolution:1,minimumTimeRange:120,startTimeRange:0},timeScale:{ignoreWhitespaceIndices:!0},leftPriceScale:{visible:!0},rightPriceScale:{visible:!1},localization:{priceFormatter:t=>t.toFixed(3)+"%"}},_n={lastValueVisible:!1,priceLineVisible:!1};class un extends He{constructor(t,i){const s=_(on,i||{}),e=new an;super(t,e,s),e.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 e={..._n,...i};return super.addSeries(t,e,s)}_initWhitespaceSeries(){const t=this.horzBehaviour(),i=this.addSeries(hn);let s;function e(e){const n=function(t,i){return{an:Math.max(0,t.startTimeRange),_n:Math.max(0,t.minimumTimeRange,i||0),oM:Math.max(1,t.baseResolution)}}(t.options().yieldCurve,e),h=(({an:t,_n:i,oM:s})=>`${t}~${i}~${s}`)(n);h!==s&&(s=h,i.setData(function({an:t,_n:i,oM:s}){return Array.from({length:Math.floor((i-t)/s)+1},(i,e)=>({time:t+e*s}))}(n)))}e(0),t.lM().i(e)}}function cn(t,i){return t.weight>i.weight?t:i}class dn{options(){return this.Ps}setOptions(t){this.Ps=t}preprocessData(t){}updateFormatter(t){this.Ps&&(this.Ps.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.Se())}formatTickmark(t,i){return t.time.toFixed(this.Se())}maxTickMarkWeight(t){return t.reduce(cn,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 e=i;e<t.length;++e)t[e].timeWeight=s(t[e].time)}Se(){return this.Ps.localization.precision}}function fn(t,i,s,e,n){const{context:h,horizontalPixelRatio:r,verticalPixelRatio:l}=i;h.lineTo(n.ut*r,t*l),h.lineTo(e.ut*r,t*l),h.closePath(),h.fillStyle=s,h.fill()}class pn extends T{constructor(){super(...arguments),this.rt=null}lt(t){this.rt=t}ht(t){if(null===this.rt)return;const{_t:i,ot:s,tM:n,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,e(o,r),o.lineWidth=1,Ke(t,i,l,s,n,this.cM.bind(this),fn.bind(null,a))}}class vn{dM(t,i){const s=this.fM,{pM:e,vM:n,mM:h,gM:r,_M:l,wM:a,MM:o}=i;if(void 0===this.bM||void 0===s||s.pM!==e||s.vM!==n||s.mM!==h||s.gM!==r||s._M!==l||s.wM!==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,e),null!=l){const t=Gt((d-u)/(c-u),0,1);f.addColorStop(t,n),f.addColorStop(t,h)}f.addColorStop(1,r),this.bM=f,this.fM=i}return this.bM}}class mn extends pn{constructor(){super(...arguments),this.yM=new vn}cM(t,i){const s=this.rt;return this.yM.dM(t,{pM:i.Sh,vM:i.xh,mM:i.Th,gM:i.Ph,_M:s._M,wM:s.wM??0,MM:s.MM??t.bitmapSize.height})}}class gn extends sn{constructor(){super(...arguments),this.SM=new vn}eM(t,i){const s=this.rt;return this.SM.dM(t,{pM:i.bh,vM:i.bh,mM:i.yh,gM:i.yh,_M:s._M,wM:s.wM??0,MM:s.MM??t.bitmapSize.height})}}class wn extends Ge{constructor(t,i){super(t,i),this.ow=new x,this.xM=new mn,this.TM=new gn,this.ow.et([this.xM,this.TM])}Qw(t,i,s){return{...this.Jw(t,i),...s.Eh(t)}}pw(){const t=this.Ze.Bt();if(null===t)return;const i=this.Ze.W(),s=this.Ze.$t().Wt(i.baseValue.price,t.Ht),e=this.Je.It().gu();if(null===this.rw||0===this.hw.length)return;let n,h;if(i.relativeGradient){n=this.hw[this.rw.from].ct,h=this.hw[this.rw.from].ct;for(let t=this.rw.from;t<this.rw.to;t++){const i=this.hw[t];i.ct<n&&(n=i.ct),i.ct>h&&(h=i.ct)}}this.xM.lt({_t:this.hw,dt:i.lineWidth,Xt:i.lineStyle,iM:i.lineType,_M:s,wM:n,MM:h,uM:!1,ot:this.rw,tM:e}),this.TM.lt({_t:this.hw,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,wM:n,MM:h,ot:this.rw,tM:e})}}const Mn={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},qw:(t,i)=>new wn(t,i)};class bn extends pn{constructor(){super(...arguments),this.yM=new vn}cM(t,i){return this.yM.dM(t,{pM:i.wh,vM:"",mM:"",gM:i.Mh,wM:this.rt?.wM??0,MM:t.bitmapSize.height})}}class yn extends Ge{constructor(t,i){super(t,i),this.ow=new x,this.PM=new bn,this.CM=new en,this.ow.et([this.PM,this.CM])}Qw(t,i,s){return{...this.Jw(t,i),...s.Eh(t)}}pw(){const t=this.Ze.W();if(null===this.rw||0===this.hw.length)return;let i;if(t.relativeGradient){i=this.hw[this.rw.from].ct;for(let t=this.rw.from;t<this.rw.to;t++){const s=this.hw[t];s.ct<i&&(i=s.ct)}}this.PM.lt({iM:t.lineType,_t:this.hw,Xt:t.lineStyle,dt:t.lineWidth,_M:null,wM:i,uM:t.invertFilledArea,ot:this.rw,tM:this.Je.It().gu()}),this.CM.lt({iM:t.lineVisible?t.lineType:void 0,_t:this.hw,Xt:t.lineStyle,dt:t.lineWidth,ot:this.rw,tM:this.Je.It().gu(),sM:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0})}}const Sn={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},qw:(t,i)=>new yn(t,i)};class xn extends T{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 e=null;const n=this.DM<=this.kM&&this.Yt.gu>=Math.floor(1.5*i);for(let h=this.Yt.ot.from;h<this.Yt.ot.to;++h){const r=this.Yt.Xs[h];e!==r.fh&&(t.fillStyle=r.fh,e=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(n){if(this.Yt.VM){const i=a-m;let e=Math.max(f,Math.round(r.Ya*s)-l),n=e+_-1;n>f+v-1&&(n=f+v-1,e=n-_+1),t.fillRect(i,e,o-i,n-e+1)}const i=a+m;let e=Math.max(f,Math.round(r.Xa*s)-l),n=e+_-1;n>f+v-1&&(n=f+v-1,e=n-_+1),t.fillRect(u+1,e,i-u,n-e+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).gu,t)))}}class Tn extends fe{constructor(t,i){super(t,i,!1)}fw(t,i,s){i.cu(this.hw,m(this.rw)),t.ja(this.hw,s,m(this.rw))}LM(t,i,s){return{wt: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}}cw(){const t=this.Ze.Rr();this.hw=this.Ze.Xs().Nh().map(i=>this.Qw(i.Rn,i,t))}}class Pn extends Tn{constructor(){super(...arguments),this.ow=new xn}Qw(t,i,s){return{...this.LM(t,i,s),...s.Eh(t)}}pw(){const t=this.Ze.W();this.ow.lt({Xs:this.hw,gu:this.Je.It().gu(),VM:t.openVisible,EM:t.thinBars,ot:this.rw})}}const Cn={type:"Bar",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},qw:(t,i)=>new Pn(t,i)};class kn extends T{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),e=Math.floor(t*s*i),n=Math.floor(t*i),h=Math.min(e,n);return Math.max(Math.floor(i),h)}(this.Yt.gu,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 e=this.FM(i);(!this.Yt.bi||this.kM>2*e)&&this.BM(t,s,this.Yt.ot)}IM(t,i,s){if(null===this.Yt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:h}=t;let r="",l=Math.min(Math.floor(n),Math.floor(this.Yt.gu*n));l=Math.max(Math.floor(n),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&&(e.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(n*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;e.fillRect(f,c,v,_-c),e.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:e,horizontalPixelRatio:n,verticalPixelRatio:h}=t;let r="";const l=this.FM(n);let a=null;for(let t=s.from;t<s.to;t++){const s=i[t];s.ph!==r&&(e.fillStyle=s.ph,r=s.ph);let o=Math.round(s.ut*n)-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.gu*n>2*l)V(e,o,u,_-o+1,c-u+1,l);else{const t=_-o+1;e.fillRect(o,u,t,c-u+1)}a=_}}BM(t,i,s){if(null===this.Yt)return;const{context:e,horizontalPixelRatio:n,verticalPixelRatio:h}=t;let r="";const l=this.FM(n);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*n)-Math.floor(.5*this.kM),u=_+this.kM-1;if(s.fh!==r){const t=s.fh;e.fillStyle=t,r=t}this.Yt.bi&&(_+=l,a+=l,u-=l,o-=l),a>o||e.fillRect(_,a,u-_+1,o-a+1)}}}class Dn extends Tn{constructor(){super(...arguments),this.ow=new kn}Qw(t,i,s){return{...this.LM(t,i,s),...s.Eh(t)}}pw(){const t=this.Ze.W();this.ow.lt({Xs:this.hw,gu:this.Je.It().gu(),AM:t.wickVisible,bi:t.borderVisible,ot:this.rw})}}const Rn={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"},qw:(t,i)=>new Dn(t,i)};class En extends T{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 e=Math.max(1,Math.floor(s)),n=Math.round(this.Yt.WM*s)-Math.floor(e/2),h=n+e;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<=n?(o=a,_=h):(o=n,_=a-Math.floor(e/2)+e),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.gu*t)<=1?0:Math.max(1,Math.floor(t)),s=Math.round(this.Yt.gu*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 e=this.Yt._t[i],n=Math.round(e.ut*t);let h,r;if(s%2){const t=(s-1)/2;h=n-t,r=n+t}else{const t=s/2;h=n-t,r=n+t-1}this.zM[i-this.Yt.ot.from]={Ur:h,yi:r,$M:n,en:e.ut*t,wt:e.wt}}for(let t=this.Yt.ot.from+1;t<this.Yt.ot.to;t++){const s=this.zM[t-this.Yt.ot.from],e=this.zM[t-this.Yt.ot.from-1];s.wt===e.wt+1&&(s.Ur-e.yi!==i+1&&(e.$M>e.en?e.yi=s.Ur-i-1:s.Ur=e.yi+i+1))}let e=Math.ceil(this.Yt.gu*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;e=Math.min(s,e)}if(i>0&&e<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>e&&(i.$M>i.en?i.yi-=1:i.Ur+=1)}}}class Vn extends Ge{constructor(){super(...arguments),this.ow=new En}Qw(t,i,s){return{...this.Jw(t,i),...s.Eh(t)}}pw(){const t={_t:this.hw,gu:this.Je.It().gu(),ot:this.rw,WM:this.Ze.$t().Wt(this.Ze.W().base,l(this.Ze.Bt()).Ht)};this.ow.lt(t)}}const Ln={type:"Histogram",isBuiltIn:!0,defaultOptions:{color:"#26a69a",base:0},qw:(t,i)=>new Vn(t,i)};class An{constructor(t,i){this.Pt=t,this.HM=i,this.NM()}detach(){this.Pt.detachPrimitive(this.HM)}getPane(){return this.Pt}applyOptions(t){this.HM.ah?.(t)}NM(){this.Pt.attachPrimitive(this.HM)}}const In={visible:!0,horzAlign:"center",vertAlign:"center",lines:[]},Fn={color:"rgba(0, 0, 0, 0.5)",fontSize:48,fontFamily:g,fontStyle:"",text:""};class Bn{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 e=0;for(const t of this.Yt.lines){if(0===t.text.length)continue;i.font=t.C;const n=this.qM(i,t.text);n>s.width?t.Tu=s.width/n:t.Tu=1,e+=t.lineHeight*t.Tu}let n=0;switch(this.Yt.vertAlign){case"top":n=0;break;case"center":n=Math.max((s.height-e)/2,0);break;case"bottom":n=Math.max(s.height-e,0)}for(const t of this.Yt.lines){i.save(),i.fillStyle=t.color;let e=0;switch(this.Yt.horzAlign){case"left":i.textAlign="left",e=t.lineHeight/2;break;case"center":i.textAlign="center",e=s.width/2;break;case"right":i.textAlign="right",e=s.width-1-t.lineHeight/2}i.translate(e,n),i.textBaseline="top",i.font=t.C,i.scale(t.Tu,t.Tu),i.fillText(t.text,0,t.jM),i.restore(),n+=t.lineHeight*t.Tu}})}qM(t,i){const s=this.YM(t.font);let e=s.get(i);return void 0===e&&(e=t.measureText(i).width,s.set(i,e)),e}YM(t){let i=this.UM.get(t);return void 0===i&&(i=new Map,this.UM.set(t,i)),i}}class zn{constructor(t){this.Ps=Wn(t)}Ct(t){this.Ps=Wn(t)}renderer(){return new Bn(this.Ps)}}function On(t){return{...t,C:w(t.fontSize,t.fontFamily,t.fontStyle),lineHeight:t.lineHeight||1.2*t.fontSize,jM:0,Tu:0}}function Wn(t){return{...t,lines:t.lines.map(On)}}function $n(t){return{...Fn,...t}}function Hn(t){return{...In,...t,lines:t.lines?.map($n)??[]}}class Nn{constructor(t){this.Ps=Hn(t),this.GM=[new zn(this.Ps)]}updateAllViews(){this.GM.forEach(t=>t.Ct(this.Ps))}paneViews(){return this.GM}attached({requestUpdate:t}){this.KM=t}detached(){this.KM=void 0}ah(t){this.Ps=Hn({...this.Ps,...t}),this.KM&&this.KM()}}const Un={alpha:1,padding:0};class qn{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:e,JM:n,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)),e&&(_=Math.min(_,e));const c=_/h,d=u/n,f=Math.min(c,d),p=h*f,v=n*f;return{ut:l-.5*p,ct:a-.5*v,qt:v,ts:p}}}class jn{constructor(t){this.tb=null,this.ib=0,this.sb=0,this.Ps=t,this.M=Yn(this.Ps,this.tb,this.ib,this.sb)}eb(t){void 0!==t.nb&&(this.ib=t.nb),void 0!==t.hb&&(this.sb=t.hb),void 0!==t.rb&&(this.tb=t.rb),this.Ct()}lb(t){this.Ps=t,this.Ct()}zOrder(){return"bottom"}Ct(){this.M=Yn(this.Ps,this.tb,this.ib,this.sb)}renderer(){return new qn(this.M)}}function Yn(t,i,s,e){return{...t,ZM:i,QM:s,JM:e}}function Gn(t){return{...Un,...t}}class Kn{constructor(t,i){this.ab=null,this.ob=t,this.Ps=Gn(i),this.GM=[new jn(this.Ps)]}updateAllViews(){this.GM.forEach(t=>t.Ct())}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.eb({hb:t,nb:i,rb:this.ab})),this._b&&this._b()},this.ab.src=this.ob}detached(){this._b=void 0,this.ab=null}ah(t){this.Ps=Gn({...this.Ps,...t}),this.ub(),this.KM&&this.KM()}KM(){this._b&&this._b()}ub(){this.GM.forEach(t=>t.lb(this.Ps))}}class Xn{constructor(t,i){this.Ze=t,this.ar=i,this.NM()}detach(){this.Ze.detachPrimitive(this.ar)}getSeries(){return this.Ze}applyOptions(t){this.ar&&this.ar.ah&&this.ar.ah(t)}NM(){this.Ze.attachPrimitive(this.ar)}}const Zn={autoScale:!0,zOrder:"normal"};function Jn(t,i){return Xt(Math.min(Math.max(t,12),30)*i)}function Qn(t,i){switch(t){case"arrowDown":case"arrowUp":return Jn(i,1);case"circle":return Jn(i,.8);case"square":return Jn(i,.7)}}function th(t){return function(t){const i=Math.ceil(t);return i%2!=0?i-1:i}(Jn(t,1))}function ih(t){return Math.max(Jn(t,.1),3)}function sh(t,i,s){return i?t:s?Math.ceil(t/2):0}function eh(t,i,s,e){const n=(Qn("arrowUp",e)-1)/2*s.cb,h=(Xt(e/2)-1)/2*s.cb;i.beginPath(),t?(i.moveTo(s.ut-n,s.ct),i.lineTo(s.ut,s.ct-n),i.lineTo(s.ut+n,s.ct),i.lineTo(s.ut+h,s.ct),i.lineTo(s.ut+h,s.ct+n),i.lineTo(s.ut-h,s.ct+n),i.lineTo(s.ut-h,s.ct)):(i.moveTo(s.ut-n,s.ct),i.lineTo(s.ut,s.ct+n),i.lineTo(s.ut+n,s.ct),i.lineTo(s.ut+h,s.ct),i.lineTo(s.ut+h,s.ct-n),i.lineTo(s.ut-h,s.ct-n),i.lineTo(s.ut-h,s.ct)),i.fill()}function nh(t,i,s,e,n,h){const r=(Qn("arrowUp",e)-1)/2,l=(Xt(e/2)-1)/2;if(n>=i-l-2&&n<=i+l+2&&h>=(t?s:s-r)-2&&h<=(t?s+r:s)+2)return!0;return(()=>{if(n<i-r-3||n>i+r+3||h<(t?s-r-3:s)||h>(t?s:s+r+3))return!1;const e=Math.abs(n-i);return Math.abs(h-s)+3>=e/2})()}class hh{constructor(){this.Yt=null,this.Be=new it,this.$=-1,this.H="",this.Hp="",this.fb="normal"}lt(t){this.Yt=t}ze(t,i,s){this.$===t&&this.H===i||(this.$=t,this.H=i,this.Hp=w(t,i),this.Be.Ee()),this.fb=s}je(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 e=this.Yt._t[s];if(e&&lh(e,t,i))return{zOrder:"normal",externalId:e.Ye??""}}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 e=this.Yt.ot.from;e<this.Yt.ot.to;e++){const n=this.Yt._t[e];void 0!==n.ri&&(n.ri.ts=this.Be.Vi(t,n.ri.pb),n.ri.qt=this.$,n.ri.ut=n.ut-n.ri.ts/2),rh(n,t,i,s)}}}}function rh(t,i,s,e){i.fillStyle=t.R,void 0!==t.ri&&function(t,i,s,e,n,h){t.save(),t.scale(n,h),t.fillText(i,s,e),t.restore()}(i,t.ri.pb,t.ri.ut,t.ri.ct,s,e),function(t,i,s){if(0===t.Bh)return;switch(t.mb){case"arrowDown":return void eh(!1,i,s,t.Bh);case"arrowUp":return void eh(!0,i,s,t.Bh);case"circle":return void function(t,i,s){const e=(Qn("circle",s)-1)/2;t.beginPath(),t.arc(i.ut,i.ct,e*i.cb,0,2*Math.PI,!1),t.fill()}(i,s,t.Bh);case"square":return void function(t,i,s){const e=Qn("square",s),n=(e-1)*i.cb/2,h=i.ut-n,r=i.ct-n;t.fillRect(h,r,e*i.cb,e*i.cb)}(i,s,t.Bh)}t.mb}(t,i,function(t,i,s){const e=Math.max(1,Math.floor(i))%2/2;return{ut:Math.round(t.ut*i)+e,ct:t.ct*s,cb:i}}(t,s,e))}function lh(t,i,s){return!(void 0===t.ri||!function(t,i,s,e,n,h){const r=e/2;return n>=t&&n<=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 nh(!0,t.ut,t.ct,t.Bh,i,s);case"arrowUp":return nh(!1,t.ut,t.ct,t.Bh,i,s);case"circle":return function(t,i,s,e,n){const h=2+Qn("circle",s)/2,r=t-e,l=i-n;return Math.sqrt(r*r+l*l)<=h}(t.ut,t.ct,t.Bh,i,s);case"square":return function(t,i,s,e,n){const h=Qn("square",s),r=(h-1)/2,l=t-r,a=i-r;return e>=l&&e<=l+h&&n>=a&&n<=a+h}(t.ut,t.ct,t.Bh,i,s)}}(t,i,s)}function ah(t){return"atPriceTop"===t||"atPriceBottom"===t||"atPriceMiddle"===t}function oh(t,i,s,e,n,h,r,a){const o=function(t,i,s){if(ah(i.position)&&void 0!==i.price)return i.price;if("value"in(e=t)&&"number"==typeof e.value)return t.value;var e;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 _=ah(i.position),c=a.timeScale(),d=u(i.size)?Math.max(i.size,0):1,f=th(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*n));case"aboveBar":case"atPriceTop":{const i=_?0:e.gb;return t.ct=l(r.priceToCoordinate(o))-p-i,void 0!==t.ri&&(t.ri.ct=t.ct-p-.6*n,e.gb+=1.2*n),void(_||(e.gb+=f+h))}case"belowBar":case"atPriceBottom":{const i=_?0:e.wb;return t.ct=l(r.priceToCoordinate(o))+p+i,void 0!==t.ri&&(t.ri.ct=t.ct+p+h+.6*n,e.wb+=1.2*n),void(_||(e.wb+=f+h))}}}class _h{constructor(t,i,s){this.Mb=[],this.xt=!0,this.bb=!0,this.Jt=new hh,this.Mn=t,this.Vp=i,this.Yt={_t:[],ot:null},this.Ps=s}renderer(){if(!this.Mn.options().visible)return null;this.xt&&this.yb();const t=this.Vp.options().layout;return this.Jt.ze(t.fontSize,t.fontFamily,this.Ps.zOrder),this.Jt.lt(this.Yt),this.Jt}Sb(t){this.Mb=t,this.Ct("data")}Ct(t){this.xt=!0,"data"===t&&(this.bb=!0)}xb(t){this.xt=!0,this.Ps=t}zOrder(){return"aboveSeries"===this.Ps.zOrder?"top":this.Ps.zOrder}yb(){const t=this.Vp.timeScale(),i=this.Mb;this.bb&&(this.Yt._t=i.map(t=>({wt:t.time,ut:0,ct:0,Bh:0,mb:t.shape,R:t.color,Ye:t.id,Tb:t.Tb,ri:void 0})),this.bb=!1);const s=this.Vp.options().layout;this.Yt.ot=null;const e=t.getVisibleLogicalRange();if(null===e)return;const n=new Ti(Math.floor(e.from),Math.ceil(e.to));if(null===this.Mn.data()[0])return;if(0===this.Yt._t.length)return;let h=NaN;const r=ih(t.options().barSpacing),a={gb:r,wb:r};this.Yt.ot=de(this.Yt._t,n,!0);for(let e=this.Yt.ot.from;e<this.Yt.ot.to;e++){const n=i[e];n.time!==h&&(a.gb=r,a.wb=r,h=n.time);const o=this.Yt._t[e];o.ut=l(t.logicalToCoordinate(n.time)),void 0!==n.text&&n.text.length>0&&(o.ri={pb:n.text,ut:0,ct:0,ts:0,qt:0});const _=this.Mn.dataByIndex(n.time,0);null!==_&&oh(o,n,_,a,s.fontSize,r,this.Mn,this.Vp)}this.xt=!1}}function uh(t){return{...Zn,...t}}class ch{constructor(t){this.er=null,this.Mb=[],this.Pb=[],this.Cb=null,this.Mn=null,this.Vp=null,this.kb=!0,this.Db=null,this.Rb=null,this.Eb=null,this.Vb=!0,this.Ps=uh(t)}attached(t){this.Lb(),this.Vp=t.chart,this.Mn=t.series,this.er=new _h(this.Mn,l(this.Vp),this.Ps),this._b=t.requestUpdate,this.Mn.subscribeDataChanged(t=>this.Dw(t)),this.Vb=!0,this.KM()}KM(){this._b&&this._b()}detached(){this.Mn&&this.Cb&&this.Mn.unsubscribeDataChanged(this.Cb),this.Vp=null,this.Mn=null,this.er=null,this.Cb=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.er?[this.er]:[]}updateAllViews(){this.Ib()}hitTest(t,i){return this.er?this.er.renderer()?.je(t,i)??null:null}autoscaleInfo(t,i){if(this.Ps.autoScale&&this.er){const t=this.Fb();if(t)return{priceRange:null,margins:t}}return null}ah(t){this.Ps=uh({...this.Ps,...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=ih(t),s=1.5*th(t)+2*i,e=this.Bb();this.Db={above:sh(s,e.aboveBar,e.inBar),below:sh(s,e.belowBar,e.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.Mn)return;const t=this.Vp.timeScale(),i=this.Mn?.data();if(null==t.getVisibleLogicalRange()||!this.Mn||0===i.length)return void(this.Pb=[]);const s=t.timeToIndex(l(i[0].time),!0);this.Pb=this.Mb.map((i,e)=>{const n=t.timeToIndex(i.time,!0),h=n<s?1:-1,r=l(this.Mn).dataByIndex(n,h),a={time:t.timeToIndex(l(r).time,!1),position:i.position,shape:i.shape,color:i.color,id:i.id,Tb:e,text:i.text,size:i.size,price:i.price,Pg: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.er&&(this.Lb(),this.er.Sb(this.Pb),this.er.xb(this.Ps),this.er.Ct(t))}Dw(t){this.Vb=!0,this.KM()}}class dh extends Xn{constructor(t,i,s){super(t,i),s&&this.setMarkers(s)}setMarkers(t){this.ar.Sb(t)}markers(){return this.ar.Ab()}}function fh(t,i,s){const e=new dh(t,new ch(s??{}));return i&&e.setMarkers(i),e}class ph{constructor(t){this.Mb=new Map,this.zb=t}Ob(t,i,s){if(this.Wb(i),void 0!==s){const e=window.setTimeout(()=>{this.Mb.delete(i),this.$b()},s),n={...t,Hb:e,Nb:Date.now()+s};this.Mb.set(i,n)}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,e]of this.Mb)!e.Nb||e.Nb>t?i.push({time:e.time,sign:e.sign,value:e.value}):this.Wb(s);return i}jb(t){this.zb=t}$b(){this.zb&&this.zb()}}const vh={positiveColor:"#22AB94",negativeColor:"#F7525F",updateVisibilityDuration:5e3};class mh{constructor(t,i,s,e){this.Yt=t,this.Yb=i,this.Gb=s,this.Kb=e}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=Math.max(1,Math.floor(t.horizontalPixelRatio))%2/2,e=4*t.verticalPixelRatio+s;this.Yt.forEach(n=>{const h=Math.round(n.ut*t.horizontalPixelRatio)+s;i.beginPath();const r=this.Xb(n.Zb);i.fillStyle=r,i.arc(h,n.ct*t.verticalPixelRatio,e,0,2*Math.PI,!1),i.fill(),n.Zb&&(i.strokeStyle=r,i.lineWidth=Math.floor(2*t.horizontalPixelRatio),i.beginPath(),i.moveTo((n.ut-4.7)*t.horizontalPixelRatio+s,(n.ct-7*n.Zb)*t.verticalPixelRatio),i.lineTo(n.ut*t.horizontalPixelRatio+s,(n.ct-7*n.Zb-7*n.Zb*.5)*t.verticalPixelRatio),i.lineTo((n.ut+4.7)*t.horizontalPixelRatio+s,(n.ct-7*n.Zb)*t.verticalPixelRatio),i.stroke())})})}Xb(t){return 0===t?this.Yb:t>0?this.Kb:this.Gb}}class gh{constructor(t,i,s){this.Yt=[],this.Mn=t,this.cr=i,this.Ps=s}Ct(t){this.Yt=t.map(t=>{const i=this.Mn.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.Mn.options(),this.Mn.seriesType());return new mh(this.Yt,t,this.Ps.negativeColor,this.Ps.positiveColor)}}function wh(t,i){return"Line"===i||"Area"===i}class Mh{constructor(t){this.Vp=void 0,this.Mn=void 0,this.GM=[],this.__=null,this.Jb=new Map,this.Qb=new ph(()=>this.KM()),this.Ps={...vh,...t}}ah(t){this.Ps={...this.Ps,...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:e,horzScaleBehavior:n}=t;this.Vp=i,this.Mn=s,this.__=n;const h=this.Mn.seriesType();if("Area"!==h&&"Line"!==h)throw new Error("UpDownMarkersPrimitive is only supported for Area and Line series types");this.GM=[new gh(this.Mn,this.Vp.timeScale(),this.Ps)],this._b=e,this.KM()}detached(){this.Vp=void 0,this.Mn=void 0,this._b=void 0}jp(){return r(this.Vp)}Oo(){return r(this.Mn)}updateAllViews(){this.GM.forEach(t=>t.Ct(this.Ab()))}paneViews(){return this.GM}lt(t){if(!this.Mn)throw new Error("Primitive not attached to series");const i=this.Mn.seriesType();this.Jb.clear();const s=this.__;s&&t.forEach(t=>{Ks(t)&&wh(0,i)&&this.Jb.set(s.key(t.time),t.value)}),r(this.Mn).setData(t)}Ct(t,i){if(!this.Mn||!this.__)throw new Error("Primitive not attached to series");const s=this.Mn.seriesType(),e=this.__.key(t.time);if(Gs(t)&&this.Jb.delete(e),Ks(t)&&wh(0,s)){const i=this.Jb.get(e);i&&this.Qb.Ob({time:t.time,value:t.value,sign:bh(t.value,i)},e,this.Ps.updateVisibilityDuration)}r(this.Mn).update(t,i)}ty(){this.Qb.Ub()}}function bh(t,i){return t===i?0:t-i>0?1:-1}class yh extends Xn{setData(t){return this.ar.lt(t)}update(t,i){return this.ar.Ct(t,i)}markers(){return this.ar.Ab()}setMarkers(t){return this.ar.Sb(t)}clearMarkers(){return this.ar.ty()}}class Sh{constructor(t,i){this.iy=null,this.sy=[],this.Ps={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=fh(t)}addPosition(t){this.sy.push(t),this.ey()}addPositions(t){this.sy.push(...t),this.ey()}setPositions(t){this.sy=[...t],this.ey()}closePosition(t,i,s){const e=this.sy.find(i=>i.id===t);e&&(e.exit=i,s&&e.text?e.text.exit=s:s&&(e.text={exit:s}),this.ey())}removePosition(t){this.sy=this.sy.filter(i=>i.id!==t),this.ey()}clearPositions(){this.sy=[],this.ey()}getPositions(){return this.sy}applyOptions(t){t.longColors&&(this.Ps.longColors={...this.Ps.longColors,...t.longColors}),t.shortColors&&(this.Ps.shortColors={...this.Ps.shortColors,...t.shortColors}),void 0!==t.defaultSize&&(this.Ps.defaultSize=t.defaultSize),void 0!==t.entryOffset&&(this.Ps.entryOffset=t.entryOffset),void 0!==t.exitOffset&&(this.Ps.exitOffset=t.exitOffset),this.ey()}ny(){const t=[];for(const i of this.sy){const s="long"===i.type,e=i.size??this.Ps.defaultSize,n=i.color?.entry??(s?this.Ps.longColors.entry:this.Ps.shortColors.entry),h=i.color?.exit??(s?this.Ps.longColors.exit:this.Ps.shortColors.exit),r={time:i.entry.time,position:"atPriceMiddle",price:i.entry.price+this.Ps.entryOffset,shape:s?"arrowUp":"arrowDown",color:n,size:e};if(i.text?.entry&&(r.text=i.text.entry),i.id&&(r.id=`${i.id}-entry`),t.push(r),i.exit){const n={time:i.exit.time,position:"atPriceMiddle",price:i.exit.price+this.Ps.exitOffset,shape:s?"arrowDown":"arrowUp",color:h,size:e};i.text?.exit&&(n.text=i.text.exit),i.id&&(n.id=`${i.id}-exit`),t.push(n)}}return t}ey(){if(this.iy){const t=this.ny();this.iy.setMarkers(t)}}detach(){this.iy&&(this.iy.detach(),this.iy=null),this.sy=[]}}function xh(t,i){return()=>{const s={};s.minValue=t,s.maxValue=i;const e={};return e.priceRange=s,e}}function Th(t){return null==t?void 0:t.time}function Ph(t){const{n_:i,jp:s,hy:e,ly:n,Zl:h}=t;let r=[],l=new Map,a=!1;const o=(t,i)=>{if(0===i.length)return;const s=l.get(t),e=i[i.length-1];if(void 0!==s&&s.length>0){const n=i.length===s.length+1,h=i.length===s.length,r=Th(s[s.length-1])===Th(e);if(n||h&&r)return t.update(e),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&&Th(r[r.length-1])===Th(t)?r[r.length-1]=t:r.push(t)}if(0===r.length)return;const s=n(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 e)try{s.removeSeries(t)}catch(t){}l=new Map,r=[]}},Qo(){_("full")}}}const Ch=new Map;const kh=new Map;class Dh{constructor(t){this._y=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this._y.getSessionBoxes();if(s&&0!==s.length)for(const e of s)this.uy(i,e,t.horizontalPixelRatio,t.verticalPixelRatio)})}uy(t,i,s,e){const n=i.py||i.startTime,h=i.vy||i.endTime,r=i.R||i.color,l=i.my||i.opacity;if(!i||!n||!h)return;const a=this._y.getChart().timeScale(),o=a.timeToCoordinate(n),_=a.timeToCoordinate(h);if(null===o||null===_)return;const u=o*s,c=_*s,d=0*e,f=t.canvas.height/e*e;t.fillStyle=this.gy(r,l),t.fillRect(u,d,c-u,f-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 Rh{constructor(t){this.Jt=new Dh(t)}renderer(){return this.Jt}zOrder(){return"bottom"}}const Eh=[{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 Vh{constructor(t,i,s={}){this.wy=[],this.HM=null,this.er=null,this.Vp=t,this.Mn=i,this.Ps={sessions:s.sessions||Eh,showOverlaps:s.showOverlaps??!0,overlapColor:s.overlapColor||"#9C27B0",overlapOpacity:s.overlapOpacity||.15,enabled:s.enabled??!0},this.My(),this.Ps.enabled&&this.by()}My(){this.er=new Rh(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.er?[this.er]:[],updateAllViews:()=>{this.er}};this.HM=t,this.Mn.attachPrimitive(t)}by(){this.Vp.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.yy()}),this.yy()}yy(){this.Sy();const t=this.Vp.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.Mn.data();if(!i||0===i.length)return;const s=i.filter((i,s)=>s>=t.from&&s<=t.to);this.xy(s),this._b()}xy(t){if(0!==t.length){for(const i of this.Ps.sessions)this.Ty(i,t);this.Ps.showOverlaps&&this.Py(t)}}Ty(t,i){let s=null,e=[];for(const n of i){const i=n.time,h=this.Cy(i);this.ky(h,t.startHour,t.endHour)?(s||(s=i),e.push(n)):s&&e.length>0&&(this.Dy(s,e[e.length-1].time,t),s=null,e=[])}s&&e.length>0&&this.Dy(s,e[e.length-1].time,t)}Py(t){const i=this.Ps.sessions;for(let s=0;s<i.length;s++)for(let e=s+1;e<i.length;e++){const n=i[s],h=i[e],r=this.Ry(n,h);r&&this.Ey(r,t)}}Ry(t,i){const s=Math.max(t.startHour,i.startHour),e=Math.min(t.endHour,i.endHour);return s<e?{an:s,_n:e}:null}Ey(t,i){let s=null,e=[];for(const n of i){const i=n.time,h=this.Cy(i);h>=t.an&&h<t._n?(s||(s=i),e.push(n)):s&&e.length>0&&(this.Vy(s,e[e.length-1].time),s=null,e=[])}s&&e.length>0&&this.Vy(s,e[e.length-1].time)}Dy(t,i,s){if(!t||!i)return void console.warn("Invalid session box times:",{startTime:t,endTime:i,session:s.name});const e={le:"session",py:t,vy:i,R:s.color,my:s.opacity,Ly:s.name};this.wy.push(e)}Vy(t,i){const s={le:"overlap",py:t,vy:i,R:this.Ps.overlapColor,my:this.Ps.overlapOpacity,Ly:"Overlap"};this.wy.push(s)}ky(t,i,s){return i<s?t>=i&&t<s:t>=i||t<s}Cy(t){if("number"==typeof t){return new Date(1e3*t).getUTCHours()}if("string"==typeof t){return new Date(t).getUTCHours()}return 0}Sy(){this.wy=[]}updateOptions(t){this.Ps={...this.Ps,...t},this.Ps.enabled?this.yy():this.Sy()}enable(){this.Ps.enabled=!0,this.yy()}disable(){this.Ps.enabled=!1,this.Sy()}remove(){this.HM&&this.Mn&&this.Mn.detachPrimitive(this.HM),this.Sy()}getSessionBoxes(){return this.wy}getChart(){return this.Vp}getSeries(){return this.Mn}_b(){this.HM&&this.HM.updateAllViews?.(),this.Vp.timeScale().applyOptions({})}}class Lh{constructor(t){this._y=t}draw(t){t.useBitmapCoordinateSpace(t=>{const i=t.context,s=this._y.getProfileData();if(!s||0===s.bins.length)return;const e=this._y.getOptions(),n=this._y.getSeries(),h=i.canvas.width/t.horizontalPixelRatio,r=Math.min(e.width||100,.2*h),l="right"===e.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.Ay(i,h,l,r,a,s,e,n,t.horizontalPixelRatio,t.verticalPixelRatio);e.showPOC&&this.Iy(i,s.poc,e.pocColor||"#FF6B00",n,h,t.horizontalPixelRatio,t.verticalPixelRatio),e.showValueArea&&this.Fy(i,s.valueAreaHigh,s.valueAreaLow,e.valueAreaColor||"#089981",n,h,t.horizontalPixelRatio,t.verticalPixelRatio)}})}Ay(t,i,s,e,n,h,r,l,a,o){const _=i.volume/n*e,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 g=r.profileColor||"#2962FF",w=r.opacity||.3;m?(g=r.pocColor||"#FF6B00",w=.6):v&&r.showValueArea&&(g=r.valueAreaColor||"#089981",w=.4),t.fillStyle=this.gy(g,w),t.fillRect(c,d,f,p)}Iy(t,i,s,e,n,h,r){const l=e.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(n*h,a),t.stroke(),t.setLineDash([])}Fy(t,i,s,e,n,h,r,l){const a=n.priceToCoordinate(i);if(null!==a){const i=a*l;t.strokeStyle=this.gy(e,.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=n.priceToCoordinate(s);if(null!==o){const i=o*l;t.strokeStyle=this.gy(e,.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 Ah{constructor(t){this.Jt=new Lh(t)}renderer(){return this.Jt}zOrder(){return"normal"}}class Ih{constructor(t,i,s={}){this.By=null,this.zy=new Map,this.HM=null,this.er=null,this.Vp=t,this.Mn=i,this.Ps={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.My(),this.by()}My(){this.er=new Ah(this);const t={attached:t=>{},detached:()=>{},paneViews:()=>this.er?[this.er]:[],updateAllViews:()=>{this.er}};this.HM=t,this.Mn.attachPrimitive(t)}by(){this.Vp.timeScale().subscribeVisibleLogicalRangeChange(()=>{this.Oy()}),this.Oy()}setVolumeData(t){this.zy=t,this.Oy()}addVolumeData(t,i){this.zy.set(t,i),this.Oy()}Oy(){const t=this.Vp.timeScale().getVisibleLogicalRange();if(!t)return;const i=this.Mn.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 e=1/0,n=-1/0;for(const t of s){const i=t.low||t.value||t.close,s=t.high||t.value||t.close;i<e&&(e=i),s>n&&(n=s)}const h=(n-e)/this.Ps.numberOfBins,r=[];for(let t=0;t<this.Ps.numberOfBins;t++)r.push({priceLevel:e+(t+.5)*h,volume:0,percentage:0});let l=0;for(const t of s){const i=t.close||t.value,s=this.zy.get(t.time)||1,n=Math.floor((i-e)/h);r[Math.max(0,Math.min(this.Ps.numberOfBins-1,n))].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.Ps.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.By={bins:r,poc:a.priceLevel,valueAreaHigh:d,valueAreaLow:f,totalVolume:l},this._b()}getProfileData(){return this.By}updateOptions(t){this.Ps={...this.Ps,...t},this.Oy()}remove(){this.HM&&this.Mn&&this.Mn.detachPrimitive(this.HM),this.By=null,this.zy.clear()}getChart(){return this.Vp}getSeries(){return this.Mn}getOptions(){return this.Ps}_b(){this.HM&&this.HM.updateAllViews?.(),this.Vp.timeScale().applyOptions({})}}class Fh{constructor(t,i){this.Wy=new Map,this.$y=null,this.Hy=null,this.Ny=null,this.Uy=null,this.qy=null,this.jy=null,this.Mw=void 0,this.Vp=t,this.kp=i,this.Yy=t=>this.Gy(t),this.Ky=t=>this.Xy(t),this.Zy=t=>this.Jy(t),this.Qy=t=>this.tS(t),this.iS=()=>this.sS(),this.eS=t=>{"Escape"===t.key&&this.sS()},this.Vp.subscribeCrosshairMove(this.Yy),this.kp.addEventListener("pointerdown",this.Ky),this.kp.addEventListener("pointermove",this.Zy),this.kp.addEventListener("pointerup",this.Qy),this.kp.addEventListener("pointercancel",this.iS),document.addEventListener("keydown",this.eS)}nS(t){this.Wy.set(t.id(),t)}hS(t){const i=t.id();this.$y===i&&this.rS(null),this.Hy===t&&this.sS(),this.Wy.delete(i)}Ki(){return 0===this.Wy.size}m(){this.Vp.unsubscribeCrosshairMove(this.Yy),this.kp.removeEventListener("pointerdown",this.Ky),this.kp.removeEventListener("pointermove",this.Zy),this.kp.removeEventListener("pointerup",this.Qy),this.kp.removeEventListener("pointercancel",this.iS),document.removeEventListener("keydown",this.eS),this.Wy.clear()}Gy(t){if(this.jy=t.point?{ut:t.point.x,ct:t.point.y}:null,this.Mw=t.paneIndex,null!==this.Hy)return;const i=this.lS(t.hoveredObjectId);this.rS(i?i.id():null),this.aS()}Xy(t){const i=null===this.$y?null:this.Wy.get(this.$y)??null;i&&(this.Uy={ut:t.clientX,ct:t.clientY},this.qy=i,i.isDraggable()&&(this.Hy=i,this.Ny=t.pointerId,this.kp.setPointerCapture(t.pointerId),i.beginDrag(),this.aS(),t.preventDefault(),t.stopPropagation()))}Jy(t){if(null===this.Hy)return;if(!this.oS(t))return void this.sS();const i=this._S(t);null!==i&&this.Hy.dragTo(i),t.preventDefault(),t.stopPropagation()}tS(t){const i=this.Hy,s=this.qy,e=this.Uy;this.uS(),this.qy=null,this.Uy=null;const n=null!==e&&(Math.abs(t.clientX-e.ut)>4||Math.abs(t.clientY-e.ct)>4);if(null!==i)return this.Hy=null,n?i.commitDrag():(i.cancelDrag(),i.isClickable()&&i.click()),void this.aS();null!==s&&!n&&s.isClickable()&&s.click()}sS(){if(null===this.Hy)return;const t=this.Hy;this.Hy=null,this.uS(),t.cancelDrag(),this.aS()}oS(t){const i=this.kp.getBoundingClientRect();return t.clientX>=i.left&&t.clientX<=i.right&&t.clientY>=i.top&&t.clientY<=i.bottom}uS(){null!==this.Ny&&(this.kp.hasPointerCapture(this.Ny)&&this.kp.releasePointerCapture(this.Ny),this.Ny=null)}_S(t){const i=this.Hy;if(null===i)return null;if(null!==this.jy&&this.Mw===i.paneIndex())return i.priceAt(this.jy.ct);const s=this.Vp.panes()[i.paneIndex()],e=s?s.getHTMLElement():null;return e?i.priceAt(t.clientY-e.getBoundingClientRect().top):null}lS(t){return"string"!=typeof t?null:this.Wy.get(t)??null}rS(t){this.$y!==t&&(null!==this.$y&&this.Wy.get(this.$y)?.setHovered(!1),this.$y=t,null!==t&&this.Wy.get(t)?.setHovered(!0))}aS(){if(null!==this.Hy)return void this.Vp.chartElement().style.setProperty("cursor","ns-resize");const t=null===this.$y?null:this.Wy.get(this.$y);t?this.Vp.chartElement().style.setProperty("cursor",t.isDraggable()?"ns-resize":"pointer"):this.Vp.chartElement().style.removeProperty("cursor")}}const Bh=new WeakMap;let zh=0;class Oh{constructor(t,i,s){this.sh=null,this.cS=!1,this.dS="",this.fS=null,this.Vp=t,this.Mn=i,this.Ma="pipsend-trading-line-"+zh++,this.Ps={lineWidth:2,lineStyle:0,axisLabelVisible:!0,draggable:!0,hoverColor:"#000000",...s},this.pS(),(this.Ps.draggable||this.Ps.onClick)&&function(t){const i=t.chartElement();if(!i)return null;let s=Bh.get(t);return s||(s=new Fh(t,i),Bh.set(t,s)),s}(this.Vp)?.nS(this)}id(){return this.Ma}paneIndex(){try{return this.Mn.getPane().paneIndex()}catch(t){return 0}}isDraggable(){return!0===this.Ps.draggable}isClickable(){return void 0!==this.Ps.onClick}setHovered(t){this.cS!==t&&this.sh&&(this.cS=t,this.sh.applyOptions({color:t?this.Ps.hoverColor:this.dS}))}priceAt(t){const i=this.Mn.coordinateToPrice(t);return null===i?null:i}beginDrag(){this.fS=this.Ps.price,this.Ps.onDragStart&&this.Ps.onDragStart(this.Ps.price)}dragTo(t){this.vS(t),this.Ps.onDragMove&&this.Ps.onDragMove(t)}commitDrag(){this.fS=null,this.Ps.onDragEnd&&this.Ps.onDragEnd(this.Ps.price)}cancelDrag(){const t=this.fS;this.fS=null,null!==t&&t!==this.Ps.price&&(this.vS(t),this.Ps.onDragMove&&this.Ps.onDragMove(t))}click(){this.Ps.onClick&&this.Ps.onClick(this.Ps.price)}applyOptions(t){if(this.Ps={...this.Ps,...t},t.color&&(this.dS=t.color),!this.sh)return;const i={title:this.mS()};void 0!==t.price&&(i.price=t.price),void 0===t.color||this.cS||(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.Ps.title=t,this.sh&&this.sh.applyOptions({title:t})}getPrice(){return this.Ps.price}setPrice(t){this.vS(t)}remove(){!function(t,i){const s=Bh.get(t);s&&(s.hS(i),s.Ki()&&(s.m(),Bh.delete(t)))}(this.Vp,this),this.sh&&(this.Mn.removePriceLine(this.sh),this.sh=null)}getPriceLine(){return this.sh}mS(){if(this.Ps.formatTitle)try{return this.Ps.formatTitle(this.Ps.price)}catch(t){console.error("Error in formatTitle:",t)}return this.Ps.title||""}pS(){this.dS=this.Ps.color,this.sh=this.Mn.createPriceLine({id:this.Ma,price:this.Ps.price,color:this.Ps.color,lineWidth:this.Ps.lineWidth,lineStyle:this.Ps.lineStyle,axisLabelVisible:this.Ps.axisLabelVisible,title:this.mS()})}vS(t){this.Ps.price=t,this.sh&&this.sh.applyOptions({price:t,title:this.mS()})}}class Wh{constructor(t,i){this.Ep=null,this.gS=null,this.wS=null,this.MS={},this.Vp=t,this.Mn=i,this.bS()}bS(){this.Ep=this.Vp.chartElement()}yS(t){const i=this.Mn.getPane().getHTMLElement();if(!i)return 0;const s=t.clientY-i.getBoundingClientRect().top,e=this.Mn.coordinateToPrice(s);return null===e?0:e}enableClickToCreate(t,i){return this.Ep?(this.gS=t,this.MS=i||{},new Promise(t=>{this.Ep.style.cursor="crosshair",this.wS=i=>{const s=this.yS(i),e=this.SS(s);this.disableClickToCreate(),t(e)},this.Ep.addEventListener("click",this.wS)})):Promise.resolve(null)}disableClickToCreate(){this.Ep&&this.wS&&(this.Ep.removeEventListener("click",this.wS),this.Ep.style.cursor="default"),this.gS=null,this.wS=null,this.MS={}}SS(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.MS};break;case"take-profit":i={price:t,color:"#26a69a",lineWidth:2,title:"Take Profit",draggable:!0,...this.MS};break;case"entry":i={price:t,color:"#2196F3",lineWidth:2,title:"Entry",draggable:!0,...this.MS};break;case"target":i={price:t,color:"#FF9800",lineWidth:2,title:"Target",draggable:!0,...this.MS};break;case"resistance":i={price:t,color:"#f44336",lineWidth:2,title:"Resistance",draggable:!0,...this.MS};break;case"support":i={price:t,color:"#4CAF50",lineWidth:2,title:"Support",draggable:!0,...this.MS};break;case"custom":i={price:t,color:"#9E9E9E",lineWidth:2,title:"Custom",draggable:!0,...this.MS};break;default:return null}return new Oh(this.Vp,this.Mn,i)}getCreationMode(){return this.gS}isCreating(){return null!==this.gS}}const $h=new Set(["line","body","stroke","center","move"]);function Hh(t,i,s){if(null===i)return null;const e=String(i);return{externalId:`${t}#${e}`,zOrder:"normal",cursorStyle:s?$h.has(e)?"move":"grab":void 0}}function Nh(t,i,s){return t?{Mt:s-t.price,wt:null===t.time?0:i-t.time}:{Mt:0,wt:0}}var Uh;function qh(t){if(null==t)return null;if("number"==typeof t||"string"==typeof t)return t;const i=t,s=i.year??i.xS;if(void 0!==s){const t={};return t.year=s,t.month=i.month??i.TS,t.day=i.day??i.PS,t}return t}function jh(t,i){const s={};return s.price=t,s.time=i,s}function Yh(t){if(!t)return jh(0,null);return jh(t.price??t.Mt??0,qh(t.time??t.wt??null))}function Gh(t,i="time"){return t?t[i]??null:null}function Kh(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"}(Uh||(Uh={}));class Xh{constructor(t,i,s={}){this._state=Uh.Idle,this._visible=!0,this._locked=!1,this._chart=t.chart,this._series=t.series,this._type=i,this._id=this.CS(),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}CS(){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 Zh=new WeakMap;function Jh(t,i){Zh.set(t,i)}function Qh(t){const i=!0===Zh.get(t);return i&&Zh.set(t,!1),i}var tr;!function(t){t.kS="idle",t.DS="waiting_first_point",t.RS="waiting_second_point",t.ES="completed"}(tr||(tr={}));class ir{constructor(t,i,s={}){this.Vv=tr.kS,this.VS=null,this.wS=null,this.sf=null,this.Vp=t,this.Mn=i,this.LS=s}AS(){this.Vv===tr.kS&&(this.Vv=tr.DS,this.VS=null,this.IS(),this.FS())}BS(){this.Vv=tr.kS,this.VS=null,this.zS(),this.OS(),this.LS.WS&&this.LS.WS()}$S(){return this.Vv}HS(){return this.Vv===tr.DS||this.Vv===tr.RS}IS(){this.wS=t=>{this.NS(t)},this.Vp.subscribeClick(this.wS)}FS(){this.sf=t=>{this.US(t)},this.Vp.subscribeCrosshairMove(this.sf)}zS(){this.wS&&(this.Vp.unsubscribeClick(this.wS),this.wS=null)}OS(){this.sf&&(this.Vp.unsubscribeCrosshairMove(this.sf),this.sf=null)}NS(t){if(!t.point)return;if(Qh(this.Vp))return;const i=this.Mn.coordinateToPrice(t.point.y),s=je(this.Vp,this.Mn,t.point.x);if(null===i||null===s)return;const e={wt:s,Mt:i};this.Vv===tr.DS?(this.VS=e,this.Vv=tr.RS,this.LS.qS&&this.LS.qS(e)):this.Vv===tr.RS&&this.VS&&(this.Vv=tr.ES,this.LS.jS&&this.LS.jS(e),this.LS.YS&&this.LS.YS(this.VS,e),this.zS(),this.OS(),this.Vv=tr.kS,this.VS=null)}US(t){if(!t.point)return;if(this.Vv!==tr.RS)return;const i=this.Mn.coordinateToPrice(t.point.y),s=je(this.Vp,this.Mn,t.point.x);if(null===i||null===s)return;const e={wt:s,Mt:i};this.LS.GS&&this.LS.GS(e)}m(){this.BS()}}class sr{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class er{constructor(t){this.KS=t,this.Jt=new sr(t)}renderer(){return this.KS.isVisible()?this.Jt:null}Ct(){}zOrder(){return"normal"}}class nr extends Xh{constructor(t,i){super(t,"trend-line",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.tx=null,this.ix=null,this.sx=null,this.nx=null,this.hx=!1,this.lx=null,this.ox={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",extendLeft:!1,extendRight:!1,interactive:!1,...i},this.My(),this.ox.interactive?this._x():this.hx=!0}_x(){new ir(this._chart,this._series,{qS:t=>{this.ox.point1Time=t.wt,this.ox.point1Price=t.Mt,this._b()},jS:t=>{this.ox.point2Time=t.wt,this.ox.point2Price=t.Mt,this.hx=!0,this._b(),this.ox.onUpdate&&this.ox.onUpdate()},GS:t=>{this.ox.point1Time&&!this.hx&&(this.lx=t,this._b())},YS:()=>{this.hx=!0}}).AS()}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new er(this)}drawToCanvas(t,i,s){if(!this.hx&&this.ox.point1Time&&this.lx)return void this.mx(t,i,s);if(!this.ox.point1Time||!this.ox.point2Time)return;const e=(Ye(this._chart,this._series,this.ox.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.ox.point1Price)??0)*s,h=(Ye(this._chart,this._series,this.ox.point2Time)??0)*i,r=(this._series.priceToCoordinate(this.ox.point2Price)??0)*s,l=this.ox.lineColor,a=this.ZS?this.ox.lineWidth+1:this.ox.lineWidth;t.strokeStyle=l,t.lineWidth=a*i,"dashed"===this.ox.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.ox.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath();const o=this._chart.chartElement().clientWidth*i;let _=e,u=n,c=h,d=r;if(this.ox.extendLeft||this.ox.extendRight){const t=(r-n)/(h-e);this.ox.extendLeft&&(_=0,u=n-t*(e-0)),this.ox.extendRight&&(c=o,d=n+t*(o-e))}t.moveTo(_,u),t.lineTo(c,d),t.stroke(),t.setLineDash([]),!this.ZS&&!this.JS||this.isLocked()||(this.gx(t,e,n,i,l),this.gx(t,h,r,i,l))}mx(t,i,s){if(!this.ox.point1Time||!this.lx)return;const e=(Ye(this._chart,this._series,this.ox.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.ox.point1Price)??0)*s,h=(Ye(this._chart,this._series,this.lx.wt)??0)*i,r=(this._series.priceToCoordinate(this.lx.Mt)??0)*s;t.strokeStyle=this.ox.lineColor,t.lineWidth=this.ox.lineWidth*i,t.globalAlpha=.7,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(e,n),t.lineTo(h,r),t.stroke(),t.setLineDash([]),t.globalAlpha=1,this.gx(t,e,n,i,this.ox.lineColor),t.globalAlpha=.5,this.gx(t,h,r,i,this.ox.lineColor),t.globalAlpha=1}gx(t,i,s,e,n){const h=5*e;t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),t.stroke()}setColor(t){this.ox.lineColor=t,this._b()}color(){return this.ox.lineColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}isHovered(){return this.JS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(!this.ox.point1Time||!this.ox.point2Time)return!1;const s=Ye(this._chart,this._series,this.ox.point1Time)??0,e=this._series.priceToCoordinate(this.ox.point1Price)??0,n=Ye(this._chart,this._series,this.ox.point2Time)??0,h=this._series.priceToCoordinate(this.ox.point2Price)??0;return this.wx(t,i,s,e,n,h)<=8}wx(t,i,s,e,n,h){const r=n-s,l=h-e,a=r*r+l*l;if(0===a)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*l)/a;o=Math.max(0,Math.min(1,o));const _=s+o*r,u=e+o*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.ox.point1Time||!this.ox.point2Time)return null;const s=Ye(this._chart,this._series,this.ox.point1Time)??0,e=this._series.priceToCoordinate(this.ox.point1Price)??0,n=Ye(this._chart,this._series,this.ox.point2Time)??0,h=this._series.priceToCoordinate(this.ox.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"point1";if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-h,2))<=10)return"point2";return this.wx(t,i,s,e,n,h)<=10?"line":null}startDrag(t,i){this.QS=!0,this.tx=t,this.ix=i,"line"===t&&(this.sx={wt:this.ox.point1Time,Mt:this.ox.point1Price},this.nx={wt:this.ox.point2Time,Mt:this.ox.point2Price})}stopDrag(){this.QS=!1,this.tx=null,this.ix=null,this.sx=null,this.nx=null}updateDrag(t,i){if(this.QS&&this.tx){if("point1"===this.tx)this.ox.point1Time=t,this.ox.point1Price=i;else if("point2"===this.tx)this.ox.point2Time=t,this.ox.point2Price=i;else if("line"===this.tx&&this.sx&&this.nx){const s=Nh(this.ix,t,i);this.ox.point1Time=this.sx.wt+s.wt,this.ox.point1Price=this.sx.Mt+s.Mt,this.ox.point2Time=this.nx.wt+s.wt,this.ox.point2Price=this.nx.Mt+s.Mt}this._b(),this.ox.onUpdate&&this.ox.onUpdate()}}isVisible(){return this._visible}_serializeShape(){return{type:"trendLine",points:[jh(this.ox.point1Price??0,qh(this.ox.point1Time)),jh(this.ox.point2Price??0,qh(this.ox.point2Time))],style:{lineColor:this.ox.lineColor,lineWidth:this.ox.lineWidth,lineStyle:this.ox.lineStyle,extendLeft:this.ox.extendLeft,extendRight:this.ox.extendRight}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.ox.onRemove&&this.ox.onRemove()}}function hr(t,i){return new nr(t,i)}class rr{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class lr{constructor(t){this.KS=t,this.Jt=new rr(t)}renderer(){return this.KS.isVisible()?this.Jt:null}Ct(){}zOrder(){return"normal"}}class ar extends Xh{constructor(t,i){super(t,"horizontal-line",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.ix=null,this.Mx=0,this.bx={lineColor:"#2962ff",lineWidth:2,lineStyle:"solid",showLabel:!0,labelText:"",interactive:!1,...i},this.My()}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new lr(this)}drawToCanvas(t,i,s){if(void 0===this.bx.price)return;const e=(this._series.priceToCoordinate(this.bx.price)??0)*s,n=this._chart.chartElement().clientWidth*i,h=this.bx.lineColor,r=this.ZS?this.bx.lineWidth+1:this.bx.lineWidth;t.strokeStyle=h,t.lineWidth=r*i,"dashed"===this.bx.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.bx.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(0,e),t.lineTo(n,e),t.stroke(),t.setLineDash([]),this.bx.showLabel&&(this.ZS||this.JS)&&this.yx(t,e,i,s,h)}yx(t,i,s,e,n){const h=this.bx.labelText||this.bx.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=n,t.fillRect(_,u,a+2*r,o+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(h,_+r,u+r)}setColor(t){this.bx.lineColor=t,this._b()}color(){return this.bx.lineColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(void 0===this.bx.price)return!1;const s=this._series.priceToCoordinate(this.bx.price)??0;return Math.abs(i-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.QS=!0,this.ix=i,this.Mx=this.bx.price??0}stopDrag(){this.QS=!1,this.ix=null}updateDrag(t,i){this.QS&&(this.bx.price=this.Mx+Nh(this.ix,t,i).Mt,this._b(),this.bx.onUpdate&&this.bx.onUpdate())}getPrice(){return this.bx.price}setPrice(t){this.bx.price=t,this._b()}setLabel(t){this.bx.labelText=t,this._b()}isVisible(){return this._visible}_serializeShape(){return{type:"horizontalLine",points:[jh(this.bx.price??0,null)],style:{lineColor:this.bx.lineColor,lineWidth:this.bx.lineWidth,lineStyle:this.bx.lineStyle,showLabel:this.bx.showLabel,labelText:this.bx.labelText}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=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 or(t,i){return new ar(t,i)}class _r{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class ur{constructor(t){this.KS=t,this.Jt=new _r(t)}renderer(){return this.KS.isVisible()?this.Jt:null}Ct(){}zOrder(){return"normal"}}class cr extends Xh{constructor(t,i){super(t,"vertical-line",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.ix=null,this.Sx=0,this.xx={lineColor:"#787b86",lineWidth:1,lineStyle:"dashed",showLabel:!0,labelText:"",interactive:!1,...i},this.My()}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new ur(this)}drawToCanvas(t,i,s){if(void 0===this.xx.time)return;const e=(Ye(this._chart,this._series,this.xx.time)??0)*i,n=this._chart.chartElement().clientHeight*s,h=this.xx.lineColor,r=this.ZS||this.JS&&!this.isLocked()?this.xx.lineWidth+1:this.xx.lineWidth;t.strokeStyle=h,t.lineWidth=r*i,"dashed"===this.xx.lineStyle?t.setLineDash([10*i,5*i]):"dotted"===this.xx.lineStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.moveTo(e,0),t.lineTo(e,n),t.stroke(),t.setLineDash([]),this.xx.showLabel&&(this.ZS||this.JS)&&this.xx.labelText&&this.yx(t,e,i,s,h)}yx(t,i,s,e,n){const h=this.xx.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*e;t.fillStyle=n,t.fillRect(_,u,a+2*r,o+2*r),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(h,_+r,u+r)}setColor(t){this.xx.lineColor=t,this._b()}color(){return this.xx.lineColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(void 0===this.xx.time)return!1;const s=Ye(this._chart,this._series,this.xx.time)??0;return Math.abs(t-s)<=8}hitTestEndpoint(t,i){return this.hitTest(t,i)?"line":null}startDrag(t,i){this.QS=!0,this.ix=i,this.Sx=this.xx.time}stopDrag(){this.QS=!1,this.ix=null}updateDrag(t,i){this.QS&&(this.xx.time=this.Sx+Nh(this.ix,t,i).wt,this._b(),this.xx.onUpdate&&this.xx.onUpdate())}getTime(){return this.xx.time}setTime(t){this.xx.time=t,this._b()}setLabel(t){this.xx.labelText=t,this._b()}isVisible(){return this._visible}_serializeShape(){return{type:"verticalLine",points:[jh(0,qh(this.xx.time))],style:{lineColor:this.xx.lineColor,lineWidth:this.xx.lineWidth,lineStyle:this.xx.lineStyle,showLabel:this.xx.showLabel,labelText:this.xx.labelText}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.xx.onRemove&&this.xx.onRemove()}}function dr(t,i){return new cr(t,i)}const fr=[{Tx:0,Zl:"0.0%"},{Tx:.236,Zl:"23.6%"},{Tx:.382,Zl:"38.2%"},{Tx:.5,Zl:"50.0%"},{Tx:.618,Zl:"61.8%"},{Tx:.786,Zl:"78.6%"},{Tx:1,Zl:"100.0%"}],pr=[...fr,{Tx:1.272,Zl:"127.2%"},{Tx:1.414,Zl:"141.4%"},{Tx:1.618,Zl:"161.8%"},{Tx:2,Zl:"200.0%"},{Tx:2.618,Zl:"261.8%"}];class vr{constructor(t=!1){this.Px=t?pr:fr}calculateLevels(t,i,s,e){const n=Math.abs(e-i),h=n/i*100,r=e>i,l=this.Px.map(({Tx:t,Zl:i})=>{let s;return s=r?e-n*t:e+n*t,{Tx:t,Mt:s,Zl:i}});return{point1:{time:t,price:i},point2:{time:s,price:e},priceRange:n,priceRangePercent:h,levels:l,isUptrend:r}}getPriceAtRatio(t,i,s){const e=Math.abs(i-t);return i>t?i-e*s:i+e*s}formatPrice(t,i=5){return t.toFixed(i)}formatLevel(t,i=5){return`${t.label} (${this.formatPrice(t.price,i)})`}updateRatios(t){this.Px=t}getRatios(){return[...this.Px]}useStandardRatios(){this.Px=fr}useExtendedRatios(){this.Px=pr}}class mr{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class gr{constructor(t){this.KS=t,this.Jt=new mr(t)}renderer(){return this.KS.isVisible()?this.Jt:null}}class wr extends Xh{constructor(t,i){super(t,"fibonacci-tool",i),this.HM=null,this.XS=null,this.qM=null,this.er=null,this.Cx=null,this.hx=!1,this.ZS=!1,this.JS=!1,this.lx=null,this.QS=!1,this.kx=null,this.sf=null,this.Dx={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.Rx=new vr(this.Dx.useExtended),this.My(),this.Dx.interactive?this._x():(this.hx=!0,this.Ex())}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new gr(this)}drawToCanvas(t,i,s){if(!this.hx&&this.Dx.point1Time&&this.lx)return void this.mx(t,i,s);if(!this.qM||!this.Dx.point1Time||!this.Dx.point2Time)return;const e=(Ye(this._chart,this._series,this.Dx.point1Time)??0)*i,n=(Ye(this._chart,this._series,this.Dx.point2Time)??0)*i,h=Math.min(e,n),r=Math.max(e,n),l=this.ZS?2:this.Dx.lineWidth;this.qM.levels.forEach(e=>{this.Vx(t,e,h,r,i,s,l)}),!this.ZS&&!this.JS||this.isLocked()||(this.gx(t,e,(this._series.priceToCoordinate(this.Dx.point1Price)??0)*s,i),this.gx(t,n,(this._series.priceToCoordinate(this.Dx.point2Price)??0)*s,i))}Vx(t,i,s,e,n,h,r=1){const l=i.ratio??i.Tx,a=i.price??i.Mt;if(void 0===l||void 0===a)return;const o=(this._series.priceToCoordinate(a)??0)*h;let _=this.Dx.levelColors?.[l.toString()]||this.Dx.lineColor;t.strokeStyle=_,t.lineWidth=r*n,t.beginPath(),t.moveTo(s,o),t.lineTo(e,o),t.stroke(),this.Dx.showLabels&&this.yx(t,i,s,e,o,n,_)}yx(t,i,s,e,n,h,r){const l=i.label??i.Zl,a=i.price??i.Mt,o=`${l} ${this.Rx.formatPrice(a)}`;t.font=11*h+"px sans-serif";const _=t.measureText(o),u=4*h,c="right"===this.Dx.labelPosition?e+u:s-_.width-u,d=n;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.Dx.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(o,c,d)}Ex(){this.Dx.point1Time&&this.Dx.point1Price&&this.Dx.point2Time&&this.Dx.point2Price&&(this.qM=this.Rx.calculateLevels(this.Dx.point1Time,this.Dx.point1Price,this.Dx.point2Time,this.Dx.point2Price),this.Dx.onUpdate&&this.qM&&this.Dx.onUpdate(this.qM))}updatePoints(t,i,s,e){this.Dx.point1Time=t,this.Dx.point1Price=i,this.Dx.point2Time=s,this.Dx.point2Price=e,this.Ex(),this._b()}getMetrics(){return this.qM}getLevels(){return this.qM?.levels||[]}isVisible(){return this._visible}_serializeShape(){const t=this.Rx.getRatios().map(t=>t.ratio);return{type:"fibRetracement",points:[jh(this.Dx.point1Price??0,qh(this.Dx.point1Time)),jh(this.Dx.point2Price??0,qh(this.Dx.point2Time))],style:{lineColor:this.Dx.lineColor,lineWidth:this.Dx.lineWidth,showLabels:this.Dx.showLabels,labelPosition:this.Dx.labelPosition,levelColors:this.Dx.levelColors},extra:{levels:t,useExtended:this.Dx.useExtended}}}useExtendedLevels(t){this.Dx.useExtended=t,t?this.Rx.useExtendedRatios():this.Rx.useStandardRatios(),this.Ex(),this._b()}_x(){this.Cx=new ir(this._chart,this._series,{qS:t=>{this.Dx.point1Time=t.wt,this.Dx.point1Price=t.Mt,this._b()},jS:t=>{this.Dx.point2Time=t.wt,this.Dx.point2Price=t.Mt},YS:(t,i)=>{this.Dx.point1Time=t.wt,this.Dx.point1Price=t.Mt,this.Dx.point2Time=i.wt,this.Dx.point2Price=i.Mt,this.hx=!0,this.lx=null,this.Ex(),this.Lx(),this._b()},GS:t=>{this.lx=t,this._b()}}),this.Cx.AS()}mx(t,i,s){if(!this.Dx.point1Time||!this.lx)return;const e=(Ye(this._chart,this._series,this.Dx.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.Dx.point1Price)??0)*s,h=(Ye(this._chart,this._series,this.lx.wt)??0)*i,r=(this._series.priceToCoordinate(this.lx.Mt)??0)*s,l=this.Rx.calculateLevels(this.Dx.point1Time,this.Dx.point1Price,this.lx.wt,this.lx.Mt),a=Math.min(e,h),o=Math.max(e,h);t.setLineDash([5*i,5*i]),t.globalAlpha=.7,l.levels.forEach(e=>{const n=e.ratio??e.Tx,h=e.price??e.Mt;if(void 0===n||void 0===h)return;const r=(this._series.priceToCoordinate(h)??0)*s,l=this.Dx.levelColors?.[n.toString()]||this.Dx.lineColor;if(t.strokeStyle=l,t.lineWidth=this.Dx.lineWidth*i,t.beginPath(),t.moveTo(a,r),t.lineTo(o,r),t.stroke(),this.Dx.showLabels){const s=`${e.label??e.Zl} ${this.Rx.formatPrice(h)}`;t.font=11*i+"px sans-serif";const n=t.measureText(s),_=4*i,u="right"===this.Dx.labelPosition?o+_:a-n.width-_,c=r;t.fillStyle="rgba(255, 255, 255, 0.8)",t.fillRect(u-_/2,c-11*i/2-_/2,n.width+_,11*i+_),t.fillStyle=l,t.textAlign="right"===this.Dx.labelPosition?"left":"right",t.textBaseline="middle",t.fillText(s,u,c)}}),t.setLineDash([]),t.globalAlpha=1,this.gx(t,e,n,i),t.globalAlpha=.6,this.gx(t,h,r,i),t.globalAlpha=1}gx(t,i,s,e){const n=this.Dx.lineColor,h=this.ZS?5*e:4*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),this.ZS&&(t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke())}Lx(){this.sf=t=>{this.Ax(t)},this._chart.subscribeCrosshairMove(this.sf)}Ix(){this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null)}Ax(t){if(!t.point)return;const i=je(this._chart,this._series,t.point.x);if(null===i)return;if(!this.ZS||!this.QS)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&("point1"===this.kx?(this.Dx.point1Time=i,this.Dx.point1Price=s):"point2"===this.kx&&(this.Dx.point2Time=i,this.Dx.point2Price=s),this.Ex(),this._b())}startDrag(t){this.QS=!0,this.kx=t}stopDrag(){this.QS=!1,this.kx=null}updateDrag(t,i){this.QS&&this.kx&&("point1"===this.kx?(this.Dx.point1Time=t,this.Dx.point1Price=i):(this.Dx.point2Time=t,this.Dx.point2Price=i),this.Ex(),this._b())}hitTestEndpoint(t,i){if(!this.hx||!this.Dx.point1Time||!this.Dx.point2Time)return null;const s=Ye(this._chart,this._series,this.Dx.point1Time)??0,e=this._series.priceToCoordinate(this.Dx.point1Price)??0,n=Ye(this._chart,this._series,this.Dx.point2Time)??0,h=this._series.priceToCoordinate(this.Dx.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"point1";return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-h,2))<=10?"point2":null}setColor(t){this.Dx.lineColor=t,this._b()}color(){return this.Dx.lineColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}isSelected(){return this.ZS}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(!this.hx||!this.Dx.point1Time||!this.Dx.point2Time)return!1;const s=Ye(this._chart,this._series,this.Dx.point1Time)??0,e=Ye(this._chart,this._series,this.Dx.point2Time)??0;if(t<Math.min(s,e)||t>Math.max(s,e))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 e=this._series.priceToCoordinate(s)??0;if(Math.abs(i-e)<=8)return!0}return!1}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Cx&&(this.Cx.m(),this.Cx=null),this.Ix(),this.Dx.onRemove&&this.Dx.onRemove()}destroy(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=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()}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this.Ex(),this._b()}}function Mr(t,i){return new wr(t,i)}class br{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class yr{constructor(t){this.KS=t,this.Jt=new br(t)}renderer(){return this.KS.isVisible()?this.Jt:null}}class Sr extends Xh{constructor(t,i){super(t,"fibonacci-extension",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.tx=null,this.Dx={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.My()}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new yr(this)}getPoint1(){return this.Dx.point1}getPoint2(){return this.Dx.point2}getPoint3(){return this.Dx.point3}getLevels(){return this.Dx.levels||[]}getOptions(){return this.Dx}setPoint1(t){this.Dx.point1=t,this._b()}setPoint2(t){this.Dx.point2=t,this._b()}setPoint3(t){this.Dx.point3=t,this._b()}isComplete(){return!!(this.Dx.point1&&this.Dx.point2&&this.Dx.point3)}setColor(t){this.Dx.lineColor=t,this._b()}color(){return this.Dx.lineColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(!this.isComplete())return!1;const s=[this.Dx.point1,this.Dx.point2,this.Dx.point3];for(const e of s){const s=Ye(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))<=10)return!0}const e=this.Fx();for(const t of e){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.Dx.point1,e=this.Dx.point2,n=this.Dx.point3;if(!s||!e||!n)return null;if(s&&s.time&&void 0!==s.price){const e=Ye(this._chart,this._series,s.time)??0,n=this._series.priceToCoordinate(s.price)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=20)return"point1"}if(e&&e.time&&void 0!==e.price){const s=Ye(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"point2"}if(n&&n.time&&void 0!==n.price){const s=Ye(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"point3"}return null}startDrag(t){this.QS=!0,this.tx=t}stopDrag(){this.QS=!1,this.tx=null}updateDrag(t,i){if(!this.QS||!this.tx)return;const s={time:t,price:i};switch(this.tx){case"point1":this.setPoint1(s);break;case"point2":this.setPoint2(s);break;case"point3":this.setPoint3(s)}this.Dx.onUpdate&&this.Dx.onUpdate()}Fx(){if(!this.isComplete())return[];const t=this.Dx.point1,i=this.Dx.point2,s=this.Dx.point3,e=i.price-t.price;return(this.Dx.levels||[]).map(t=>({ie:t.level,Mt:s.price+e*t.level,Zl:t.label,R:t.color}))}getExtensionLevels(){return this.Fx()}drawToCanvas(t,i,s){if(!this.isComplete())return;const e=this.Dx.point1,n=this.Dx.point2,h=this.Dx.point3,r=this.ZS||this.JS&&!this.isLocked(),l=(Ye(this._chart,this._series,e.time)??0)*i,a=(this._series.priceToCoordinate(e.price)??0)*s,o=(Ye(this._chart,this._series,n.time)??0)*i,_=(this._series.priceToCoordinate(n.price)??0)*s,u=(Ye(this._chart,this._series,h.time)??0)*i,c=(this._series.priceToCoordinate(h.price)??0)*s;t.strokeStyle=this.Dx.lineColor||"#787B86",t.lineWidth=(this.Dx.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 e of d){const n=e.Mt??e.price,h=e.R??e.color,l=e.Zl??e.label;if(null==n)continue;const a=(this._series.priceToCoordinate(n)??0)*s;if(t.strokeStyle=h,t.lineWidth=(this.Dx.lineWidth||1)*i*(r?1.5:1),t.beginPath(),this.Dx.extendLines?(t.moveTo(0,a),t.lineTo(f,a)):(t.moveTo(u,a),t.lineTo(f,a)),t.stroke(),this.Dx.showLabels){const s=`${l} (${n.toFixed(5)})`;t.font=12*i+"px Arial",t.fillStyle=h,t.textAlign="left",t.textBaseline="middle";const e=5*i,r=Math.max(u,10*i)+e;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:[Yh(this.Dx.point1),Yh(this.Dx.point2),Yh(this.Dx.point3)],style:{lineColor:this.Dx.lineColor,lineWidth:this.Dx.lineWidth,showLabels:this.Dx.showLabels,extendLines:this.Dx.extendLines},extra:{levels:(this.Dx.levels||[]).map(t=>({ie:t.level,R:t.color,Zl:t.label}))}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}}}function xr(t,i){return new Sr(t,i)}class Tr{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Pr{constructor(t){this.KS=t,this.Jt=new Tr(t)}renderer(){return this.KS.isVisible()?this.Jt:null}Ct(){}zOrder(){return"normal"}}const Cr=[{level:.382,color:"#787B86",label:"38.2%"},{level:.5,color:"#9598A1",label:"50%"},{level:.618,color:"#787B86",label:"61.8%"}];class kr extends Xh{constructor(t,i){super(t,"fibonacci-fan",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.tx=null,this.Bx=!1,this.wS=null,this.sf=null,this.lx=null,this.zx={levels:Cr,lineWidth:1,showLabels:!0,extendLines:!0,interactive:!1,...i},this.My(),this.zx.interactive&&!this.zx.point1Time&&this._x()}_x(){this.Bx=!0,this.wS=t=>{if(!t.point)return;if(Qh(this._chart))return;const i=je(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.zx.point1Time?(this.zx.point2Time=i,this.zx.point2Price=s,this.Bx=!1,this.lx=null,this.wS&&(this._chart.unsubscribeClick(this.wS),this.wS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this._b(),this.zx.onUpdate&&this.zx.onUpdate()):(this.zx.point1Time=i,this.zx.point1Price=s,this._b()))},this.sf=t=>{if(this.Bx&&this.zx.point1Time)if(t.point){const i=je(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.lx={wt:i,Mt:s},this._b())}else this.lx=null,this._b()},this._chart.subscribeClick(this.wS),this._chart.subscribeCrosshairMove(this.sf)}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new Pr(this)}drawToCanvas(t,i,s){const e=this.zx.point1Time,n=this.zx.point1Price,h=this.Bx&&this.lx?this.lx.wt:this.zx.point2Time,r=this.Bx&&this.lx?this.lx.Mt:this.zx.point2Price;if(!e||void 0===n||!h||void 0===r)return;const l=(Ye(this._chart,this._series,e)??0)*i,a=(this._series.priceToCoordinate(n)??0)*s,o=(Ye(this._chart,this._series,h)??0)*i,_=(this._series.priceToCoordinate(r)??0)*s,u=this.ZS?this.zx.lineWidth+1:this.zx.lineWidth;if(this.Ox(t,l,a,o,_,"#2962FF",u*i),this.zx.levels)for(const e of this.zx.levels)this.Wx(t,l,a,o,_,e,i,s,undefined,u);!this.ZS&&!this.JS||this.Bx||this.isLocked()||(this.gx(t,l,a,i,"#2962ff"),this.gx(t,o,_,i,"#2962ff"))}Wx(t,i,s,e,n,h,r,l,a,o){const _=e,u=s+(n-s)*h.level;let c=_,d=u;if(this.zx.extendLines){const t=this._chart.chartElement().clientWidth*r,e=_-i,n=u-s,h=Math.sqrt(e*e+n*n);if(h>0){const r=2*t;c=i+e/h*r,d=s+n/h*r}}const f=a||h.color;this.Ox(t,i,s,c,d,f,o*r),this.zx.showLabels&&!this.Bx&&this.yx(t,_,u,h.label,r,f)}Ox(t,i,s,e,n,h,r){t.strokeStyle=h,t.lineWidth=r,t.beginPath(),t.moveTo(i,s),t.lineTo(e,n),t.stroke()}gx(t,i,s,e,n){const h=5*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke()}yx(t,i,s,e,n,h){const r=11*n,l=4*n;t.font=`${r}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const a=t.measureText(e).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(e,i+2*l,s-o-l+l)}setColor(t){const i=this.zx.levels??[];for(const s of i)s.color=t;this._b()}color(){const t=this.zx.levels??[];return t.length>0?t[0].color:""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(!this.zx.point1Time||!this.zx.point2Time)return!1;const s=Ye(this._chart,this._series,this.zx.point1Time)??0,e=this._series.priceToCoordinate(this.zx.point1Price)??0,n=Ye(this._chart,this._series,this.zx.point2Time)??0,h=this._series.priceToCoordinate(this.zx.point2Price)??0;if(this.wx(t,i,s,e,n,h)<=8)return!0;if(this.zx.levels)for(const r of this.zx.levels){const l=e+(h-e)*r.level,a=n;if(this.wx(t,i,s,e,a,l)<=8)return!0}return!1}wx(t,i,s,e,n,h){const r=n-s,l=h-e,a=r*r+l*l;if(0===a)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*l)/a;o=Math.max(0,Math.min(1,o));const _=s+o*r,u=e+o*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.zx.point1Time||!this.zx.point2Time)return null;const s=Ye(this._chart,this._series,this.zx.point1Time)??0,e=this._series.priceToCoordinate(this.zx.point1Price)??0,n=Ye(this._chart,this._series,this.zx.point2Time)??0,h=this._series.priceToCoordinate(this.zx.point2Price)??0;return Math.abs(t-s)<=10&&Math.abs(i-e)<=10?"point1":Math.abs(t-n)<=10&&Math.abs(i-h)<=10?"point2":null}startDrag(t){this.QS=!0,this.tx=t}stopDrag(){this.QS=!1,this.tx=null}updateDrag(t,i){this.QS&&this.tx&&("point1"===this.tx?(this.zx.point1Time=t,this.zx.point1Price=i):"point2"===this.tx&&(this.zx.point2Time=t,this.zx.point2Price=i),this._b(),this.zx.onUpdate&&this.zx.onUpdate())}isVisible(){return this._visible}_serializeShape(){return{type:"fibFan",points:[jh(this.zx.point1Price??0,qh(this.zx.point1Time)),jh(this.zx.point2Price??0,qh(this.zx.point2Time))],style:{lineWidth:this.zx.lineWidth,showLabels:this.zx.showLabels,extendLines:this.zx.extendLines},extra:{levels:(this.zx.levels||[]).map(t=>({ie:t.level,R:t.color,Zl:t.label}))}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){if(this.wS&&(this._chart.unsubscribeClick(this.wS),this.wS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.zx.onRemove&&this.zx.onRemove()}}function Dr(t,i){return new kr(t,i)}class Rr{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Er{constructor(t){this.KS=t,this.Jt=new Rr(t)}renderer(){return this.KS.isVisible()?this.Jt:null}Ct(){}zOrder(){return"normal"}}class Vr extends Xh{constructor(t,i){super(t,"rectangle",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.tx=null,this.ix=null,this.sx=null,this.nx=null,this.Bx=!1,this.wS=null,this.sf=null,this.lx=null,this.$x={fillColor:"#2962ff",fillOpacity:.2,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!0,labelText:"",labelPosition:"top-left",interactive:!1,...i},this.My(),!this.$x.interactive||this.$x.time1&&this.$x.time2||this._x()}_x(){this.Bx=!0,this.wS=t=>{if(!t.point)return;if(Qh(this._chart))return;const i=je(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.$x.time1?(this.$x.time2=i,this.$x.price2=s,this.Bx=!1,this.lx=null,this.wS&&(this._chart.unsubscribeClick(this.wS),this.wS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this._b(),this.$x.onUpdate&&this.$x.onUpdate()):(this.$x.time1=i,this.$x.price1=s,this._b()))},this.sf=t=>{if(this.Bx&&this.$x.time1)if(t.point){const i=je(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.lx={wt:i,Mt:s},this._b())}else this.lx=null,this._b()},this._chart.subscribeClick(this.wS),this._chart.subscribeCrosshairMove(this.sf)}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new Er(this)}drawToCanvas(t,i,s){const e=this.$x.time1,n=this.$x.price1,h=this.Bx&&this.lx?this.lx.wt:this.$x.time2,r=this.Bx&&this.lx?this.lx.Mt:this.$x.price2;if(!e||void 0===n||!h||void 0===r)return;const l=(Ye(this._chart,this._series,e)??0)*i,a=(this._series.priceToCoordinate(n)??0)*s,o=(Ye(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.$x.fillOpacity>0){const i=this.gy(this.$x.fillColor,this.Bx?.1:this.$x.fillOpacity);t.fillStyle=i,t.fillRect(u,d,p,v)}const m=this.$x.borderColor,g=this.ZS?this.$x.borderWidth+1:this.$x.borderWidth;t.strokeStyle=m,t.lineWidth=g*i,"dashed"===this.$x.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.$x.borderStyle&&t.setLineDash([2*i,3*i]),t.strokeRect(u,d,p,v),t.setLineDash([]),!this.ZS&&!this.JS||this.Bx||this.isLocked()||this.Hx(t,u,d,c,f,i,m),this.$x.showLabel&&this.$x.labelText&&!this.Bx&&this.yx(t,u,d,c,f,i,s,m)}Hx(t,i,s,e,n,h,r){const l=8*h,a=[{ut:i,ct:s},{ut:e,ct:s},{ut:i,ct:n},{ut:e,ct:n}];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)}yx(t,i,s,e,n,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.$x.labelText).width,u=o;let c=i+a,d=s+a;switch(this.$x.labelPosition){case"top-right":c=e-_-2*a,d=s+a;break;case"bottom-left":c=i+a,d=n-u-2*a;break;case"bottom-right":c=e-_-2*a,d=n-u-2*a;break;case"center":c=(i+e)/2-_/2-a,d=(s+n)/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.$x.labelText,c+a,d+a)}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.$x.borderColor=t,this.$x.fillColor=t,this._b()}color(){return this.$x.borderColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(!this.$x.time1||!this.$x.time2)return!1;const s=Ye(this._chart,this._series,this.$x.time1)??0,e=this._series.priceToCoordinate(this.$x.price1)??0,n=Ye(this._chart,this._series,this.$x.time2)??0,h=this._series.priceToCoordinate(this.$x.price2)??0,r=Math.min(s,n),l=Math.max(s,n),a=Math.min(e,h),o=Math.max(e,h);return t>=r&&t<=l&&i>=a&&i<=o}hitTestEndpoint(t,i){if(!this.$x.time1||!this.$x.time2)return null;const s=Ye(this._chart,this._series,this.$x.time1)??0,e=this._series.priceToCoordinate(this.$x.price1)??0,n=Ye(this._chart,this._series,this.$x.time2)??0,h=this._series.priceToCoordinate(this.$x.price2)??0,r=Math.min(s,n),l=Math.max(s,n),a=Math.min(e,h),o=Math.max(e,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.QS=!0,this.tx=t,this.ix=i,"body"===t&&(this.sx={wt:this.$x.time1,Mt:this.$x.price1},this.nx={wt:this.$x.time2,Mt:this.$x.price2})}stopDrag(){this.QS=!1,this.tx=null,this.ix=null,this.sx=null,this.nx=null}updateDrag(t,i){if(!this.QS||!this.tx)return;const s=Ye(this._chart,this._series,this.$x.time1)??0,e=this._series.priceToCoordinate(this.$x.price1)??0,n=s<(Ye(this._chart,this._series,this.$x.time2)??0),h=e<(this._series.priceToCoordinate(this.$x.price2)??0);if("body"===this.tx&&this.sx&&this.nx){const s=Nh(this.ix,t,i);this.$x.time1=this.sx.wt+s.wt,this.$x.price1=this.sx.Mt+s.Mt,this.$x.time2=this.nx.wt+s.wt,this.$x.price2=this.nx.Mt+s.Mt}else switch(this.tx){case"corner1":n&&h?(this.$x.time1=t,this.$x.price1=i):!n&&h?(this.$x.time2=t,this.$x.price1=i):n&&!h?(this.$x.time1=t,this.$x.price2=i):(this.$x.time2=t,this.$x.price2=i);break;case"corner2":n&&h?(this.$x.time2=t,this.$x.price1=i):!n&&h?(this.$x.time1=t,this.$x.price1=i):n&&!h?(this.$x.time2=t,this.$x.price2=i):(this.$x.time1=t,this.$x.price2=i);break;case"corner3":n&&h?(this.$x.time1=t,this.$x.price2=i):!n&&h?(this.$x.time2=t,this.$x.price2=i):n&&!h?(this.$x.time1=t,this.$x.price1=i):(this.$x.time2=t,this.$x.price1=i);break;case"corner4":n&&h?(this.$x.time2=t,this.$x.price2=i):!n&&h?(this.$x.time1=t,this.$x.price2=i):n&&!h?(this.$x.time2=t,this.$x.price1=i):(this.$x.time1=t,this.$x.price1=i)}this._b(),this.$x.onUpdate&&this.$x.onUpdate()}isVisible(){return this._visible}_serializeShape(){return{type:"rectangle",points:[jh(this.$x.price1??0,qh(this.$x.time1)),jh(this.$x.price2??0,qh(this.$x.time2))],style:{fillColor:this.$x.fillColor,fillOpacity:this.$x.fillOpacity,borderColor:this.$x.borderColor,borderWidth:this.$x.borderWidth,borderStyle:this.$x.borderStyle,showLabel:this.$x.showLabel,labelText:this.$x.labelText,labelPosition:this.$x.labelPosition}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){if(this.wS&&(this._chart.unsubscribeClick(this.wS),this.wS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.$x.onRemove&&this.$x.onRemove()}}function Lr(t,i){return new Vr(t,i)}class Ar{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Ir{constructor(t){this.KS=t,this.Jt=new Ar(t)}renderer(){return this.KS.isVisible()?this.Jt:null}Ct(){}zOrder(){return"normal"}}class Fr extends Xh{constructor(t,i){super(t,"circle",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.tx=null,this.ix=null,this.Nx=null,this.Bx=!1,this.wS=null,this.sf=null,this.lx=null,this.Ux={fillColor:"#2962ff",fillOpacity:.1,borderColor:"#2962ff",borderWidth:2,borderStyle:"solid",showLabel:!1,labelText:"",interactive:!1,...i},this.My(),this.Ux.interactive&&!this.Ux.centerTime&&this._x()}_x(){this.Bx=!0,this.wS=t=>{if(!t.point)return;if(Qh(this._chart))return;const i=je(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);if(null!==s)if(this.Ux.centerTime){const t=this._chart.timeScale().timeToCoordinate(this.Ux.centerTime)??0,e=this._series.priceToCoordinate(this.Ux.centerPrice)??0,n=Ye(this._chart,this._series,i)??0,h=this._series.priceToCoordinate(s)??0;this.Ux.radiusTime=Math.abs(n-t),this.Ux.radiusPrice=Math.abs(h-e),this.Bx=!1,this.lx=null,this.wS&&(this._chart.unsubscribeClick(this.wS),this.wS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this._b(),this.Ux.onUpdate&&this.Ux.onUpdate()}else this.Ux.centerTime=i,this.Ux.centerPrice=s,this._b()},this.sf=t=>{if(this.Bx&&this.Ux.centerTime)if(t.point){const i=je(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.lx={wt:i,Mt:s},this._b())}else this.lx=null,this._b()},this._chart.subscribeClick(this.wS),this._chart.subscribeCrosshairMove(this.sf)}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new Ir(this)}drawToCanvas(t,i,s){if(!this.Ux.centerTime||void 0===this.Ux.centerPrice)return;const e=(Ye(this._chart,this._series,this.Ux.centerTime)??0)*i,n=(this._series.priceToCoordinate(this.Ux.centerPrice)??0)*s;let h,r;if(this.Bx&&this.lx){const t=(Ye(this._chart,this._series,this.lx.wt)??0)*i,l=(this._series.priceToCoordinate(this.lx.Mt)??0)*s;h=Math.abs(t-e),r=Math.abs(l-n)}else{if(void 0===this.Ux.radiusTime||void 0===this.Ux.radiusPrice)return;h=this.Ux.radiusTime*i,r=this.Ux.radiusPrice*s}if(this.Ux.fillOpacity>0){const i=this.gy(this.Ux.fillColor,this.Bx?.05:this.Ux.fillOpacity);t.fillStyle=i,t.beginPath(),t.ellipse(e,n,h,r,0,0,2*Math.PI),t.fill()}const l=this.Ux.borderColor,a=this.ZS?this.Ux.borderWidth+1:this.Ux.borderWidth;t.strokeStyle=l,t.lineWidth=a*i,"dashed"===this.Ux.borderStyle?t.setLineDash([10*i,5*i]):"dotted"===this.Ux.borderStyle&&t.setLineDash([2*i,3*i]),t.beginPath(),t.ellipse(e,n,h,r,0,0,2*Math.PI),t.stroke(),t.setLineDash([]),!this.ZS&&!this.JS||this.Bx||this.isLocked()||this.qx(t,e,n,i,l),!this.ZS&&!this.JS||this.Bx||this.isLocked()||this.jx(t,e,n,h,r,i,l),this.Ux.showLabel&&this.Ux.labelText&&!this.Bx&&this.yx(t,e,n,i,l)}qx(t,i,s,e,n){const h=8*e;t.fillStyle=n,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(i,s,h/2,0,2*Math.PI),t.fill(),t.stroke()}jx(t,i,s,e,n,h,r){const l=8*h,a=[{ut:i,ct:s-n},{ut:i+e,ct:s},{ut:i,ct:s+n},{ut:i-e,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)}yx(t,i,s,e,n){const h=6*e,r=12*e;t.font=`${r}px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif`;const l=t.measureText(this.Ux.labelText).width,a=r,o=i-l/2-h,_=s-a/2-h;t.fillStyle=n,t.fillRect(o,_,l+2*h,a+2*h),t.fillStyle="#ffffff",t.textBaseline="top",t.fillText(this.Ux.labelText,o+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.Ux.borderColor=t,this.Ux.fillColor=t,this._b()}color(){return this.Ux.borderColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(!this.Ux.centerTime||void 0===this.Ux.radiusTime)return!1;const s=Ye(this._chart,this._series,this.Ux.centerTime)??0,e=this._series.priceToCoordinate(this.Ux.centerPrice)??0,n=(t-s)/this.Ux.radiusTime,h=(i-e)/this.Ux.radiusPrice;return n*n+h*h<=1}hitTestEndpoint(t,i){if(!this.Ux.centerTime||void 0===this.Ux.radiusTime)return null;const s=Ye(this._chart,this._series,this.Ux.centerTime)??0,e=this._series.priceToCoordinate(this.Ux.centerPrice)??0,n=this.Ux.radiusTime,h=this.Ux.radiusPrice;if(Math.abs(t-s)<=10&&Math.abs(i-e)<=10)return"center";const r=[{ut:s,ct:e-h},{ut:s+n,ct:e},{ut:s,ct:e+h},{ut:s-n,ct:e}];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.QS=!0,this.tx=t,this.ix=i,this.Nx="center"===t?{wt:this.Ux.centerTime,Mt:this.Ux.centerPrice}:null}stopDrag(){this.QS=!1,this.tx=null,this.ix=null,this.Nx=null}updateDrag(t,i){if(this.QS&&this.tx){if("center"===this.tx&&this.Nx){const s=Nh(this.ix,t,i);this.Ux.centerTime=this.Nx.wt+s.wt,this.Ux.centerPrice=this.Nx.Mt+s.Mt}else if("edge"===this.tx){const s=Ye(this._chart,this._series,this.Ux.centerTime)??0,e=this._series.priceToCoordinate(this.Ux.centerPrice)??0,n=Ye(this._chart,this._series,t)??0,h=this._series.priceToCoordinate(i)??0;this.Ux.radiusTime=Math.abs(n-s),this.Ux.radiusPrice=Math.abs(h-e)}this._b(),this.Ux.onUpdate&&this.Ux.onUpdate()}}isVisible(){return this._visible}_serializeShape(){return{type:"circle",points:[jh(this.Ux.centerPrice??0,qh(this.Ux.centerTime))],style:{fillColor:this.Ux.fillColor,fillOpacity:this.Ux.fillOpacity,borderColor:this.Ux.borderColor,borderWidth:this.Ux.borderWidth,borderStyle:this.Ux.borderStyle,showLabel:this.Ux.showLabel,labelText:this.Ux.labelText},extra:{radiusTime:this.Ux.radiusTime,radiusPrice:this.Ux.radiusPrice}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){if(this.wS&&(this._chart.unsubscribeClick(this.wS),this.wS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Ux.onRemove&&this.Ux.onRemove()}}function Br(t,i){return new Fr(t,i)}class zr{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Or{constructor(t){this.KS=t,this.Jt=new zr(t)}renderer(){return this.KS.isVisible()?this.Jt:null}Ct(){}zOrder(){return"normal"}}class Wr extends Xh{constructor(t,i){super(t,"arrow",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.Yx=-1,this.Bx=!1,this.wS=null,this.Gx=null,this.sf=null,this.lx=null,this.Kx={points:[],lineColor:"#2962ff",lineWidth:2,showArrowHead:!0,showCircles:!0,circleRadius:4,interactive:!1,...i},this.My(),!this.Kx.interactive||this.Kx.points&&0!==this.Kx.points.length||this._x()}_x(){this.Bx=!0,this.wS=t=>{if(!t.point)return;if(Qh(this._chart))return;const i=je(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.Kx.points||(this.Kx.points=[]),this.Kx.points.push({time:i,price:s}),this._b(),this.Kx.onUpdate&&this.Kx.onUpdate())},this.sf=t=>{if(this.Bx)if(t.point){const i=je(this._chart,this._series,t.point.x);if(null===i)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&(this.lx={wt:i,Mt:s},this._b())}else this.lx=null,this._b()},this.Gx=t=>{this.Bx&&(t.preventDefault(),t.stopPropagation(),this.finishDrawing())},this._chart.subscribeClick(this.wS),this._chart.subscribeCrosshairMove(this.sf);const t=this._chart.chartElement?.();t&&t.addEventListener("contextmenu",this.Gx)}finishDrawing(){if(this.wS&&(this._chart.unsubscribeClick(this.wS),this.wS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.Gx){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.Gx),this.Gx=null}this.Bx=!1,this.lx=null,this._b(),this.Kx.onComplete&&this.Kx.onComplete()}isDrawing(){return this.Bx}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new Or(this)}drawToCanvas(t,i,s){if(!this.Kx.points||0===this.Kx.points.length)return;const e=this.Kx.lineColor,n=this.ZS||this.JS&&!this.isLocked()?this.Kx.lineWidth+1:this.Kx.lineWidth,h=[];for(const t of this.Kx.points)try{let e=Ye(this._chart,this._series,t.time);if(null===e){const i=this._chart.timeScale(),s=i.timeToIndex(t.time,!0);null!=s&&(e=i.logicalToCoordinate(s))}if(null==e)continue;const n=this._series.priceToCoordinate(t.price);if(null===n)continue;h.push({ut:e*i,ct:n*s})}catch{continue}if(0===h.length&&!this.Bx)return;let r=null;if(this.Bx&&this.lx&&this.Kx.points.length>0){r={ut:(Ye(this._chart,this._series,this.lx.wt)??0)*i,ct:(this._series.priceToCoordinate(this.lx.Mt)??0)*s}}if(h.length>1){t.strokeStyle=e,t.lineWidth=n*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=e,t.lineWidth=n*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.Kx.showArrowHead&&h.length>1&&this.Xx(t,h[h.length-2],h[h.length-1],i,e),this.Kx.showCircles)for(let s=0;s<h.length;s++)this.Zx(t,h[s].ut,h[s].ct,i,e,0===s)}Xx(t,i,s,e,n){const h=12*e,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=n,t.beginPath(),t.moveTo(s.ut,s.ct),t.lineTo(l.ut,l.ct),t.lineTo(a.ut,a.ct),t.closePath(),t.fill()}Zx(t,i,s,e,n,h){const r=this.Kx.circleRadius*e;t.beginPath(),t.arc(i,s,r,0,2*Math.PI),h?(t.fillStyle=n,t.fill()):(t.strokeStyle=n,t.lineWidth=2*e,t.stroke(),t.fillStyle="#ffffff",t.fill(),t.strokeStyle=n,t.stroke())}setColor(t){this.Kx.lineColor=t,this._b()}color(){return this.Kx.lineColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(!this.Kx.points||0===this.Kx.points.length)return!1;for(let s=0;s<this.Kx.points.length-1;s++)try{const e=this.Kx.points[s],n=this.Kx.points[s+1];let h=Ye(this._chart,this._series,e.time);if(null===h){const t=this._chart.timeScale(),i=t.timeToIndex(e.time,!0);null!=i&&(h=t.logicalToCoordinate(i))}let r=Ye(this._chart,this._series,n.time);if(null===r){const t=this._chart.timeScale(),i=t.timeToIndex(n.time,!0);null!=i&&(r=t.logicalToCoordinate(i))}const l=this._series.priceToCoordinate(e.price),a=this._series.priceToCoordinate(n.price);if(null==h||null===l||null==r||null===a)continue;if(this.wx(t,i,h,l,r,a)<=8)return!0}catch{continue}for(const s of this.Kx.points)try{let e=Ye(this._chart,this._series,s.time);if(null===e){const t=this._chart.timeScale(),i=t.timeToIndex(s.time,!0);null!=i&&(e=t.logicalToCoordinate(i))}const n=this._series.priceToCoordinate(s.price);if(null==e||null===n)continue;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-n,2))<=8)return!0}catch{continue}return!1}wx(t,i,s,e,n,h){const r=n-s,l=h-e,a=r*r+l*l;if(0===a)return Math.sqrt((t-s)*(t-s)+(i-e)*(i-e));let o=((t-s)*r+(i-e)*l)/a;o=Math.max(0,Math.min(1,o));const _=s+o*r,u=e+o*l;return Math.sqrt((t-_)*(t-_)+(i-u)*(i-u))}hitTestEndpoint(t,i){if(!this.Kx.points||0===this.Kx.points.length)return null;for(let s=0;s<this.Kx.points.length;s++)try{const e=this.Kx.points[s];let n=Ye(this._chart,this._series,e.time);if(null===n){const t=this._chart.timeScale(),i=t.timeToIndex(e.time,!0);null!=i&&(n=t.logicalToCoordinate(i))}const h=this._series.priceToCoordinate(e.price);if(null==n||null===h)continue;if(Math.sqrt(Math.pow(t-n,2)+Math.pow(i-h,2))<=10)return s}catch{continue}return null}startDrag(t){this.QS=!0,this.Yx=t}stopDrag(){this.QS=!1,this.Yx=-1}updateDrag(t,i){this.QS&&-1!==this.Yx&&this.Kx.points&&this.Yx>=0&&this.Yx<this.Kx.points.length&&(this.Kx.points[this.Yx]={time:t,price:i},this._b(),this.Kx.onUpdate&&this.Kx.onUpdate())}getPoints(){return this.Kx.points||[]}addPoint(t){this.Kx.points||(this.Kx.points=[]),this.Kx.points.push(t),this._b()}isVisible(){return this._visible}_serializeShape(){return{type:"arrow",points:(this.Kx.points||[]).map(t=>Yh(t)),style:{lineColor:this.Kx.lineColor,lineWidth:this.Kx.lineWidth,showArrowHead:this.Kx.showArrowHead,showCircles:this.Kx.showCircles,circleRadius:this.Kx.circleRadius}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){if(this.wS&&(this._chart.unsubscribeClick(this.wS),this.wS=null),this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null),this.Gx){const t=this._chart.chartElement?.();t&&t.removeEventListener("contextmenu",this.Gx),this.Gx=null}if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=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 $r(t,i){return new Wr(t,i)}class Hr{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Nr{constructor(t){this.KS=t,this.Jt=new Hr(t)}renderer(){return this.KS.isVisible()?this.Jt:null}Ct(){}zOrder(){return"normal"}}class Ur extends Xh{constructor(t,i){super(t,"brush",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.Jx=!1,this.Bx=!1,this.Qx=[],this.tT=!1,this.kp=null,this.Ny=null,this.Ky=null,this.Zy=null,this.Qy=null,this.iT=void 0,this.Yy=null,this.QS=!1,this.ix=null,this.sT=null,this.eT={points:[],color:"#2962ff",lineWidth:2,smoothing:!0,sampleDistance:4,...i},this.My(),0===(this.eT.points??[]).length&&this.startDrawingMode()}startDrawingMode(){if(this.Jx)return;const t=this._chart.chartElement();t&&(this.kp=t,this.Jx=!0,this.Ky=t=>this.Xy(t),this.Zy=t=>this.Jy(t),this.Qy=()=>this.tS(),this.Yy=t=>{this.iT=t.hoveredObjectId},this._chart.subscribeCrosshairMove(this.Yy),t.addEventListener("pointerdown",this.Ky,!0),t.addEventListener("pointermove",this.Zy,!0),t.addEventListener("pointerup",this.Qy,!0),t.addEventListener("pointercancel",this.Qy,!0))}stopDrawingMode(){if(!this.Jx)return;this.nT(),this.Jx=!1;const t=this.kp;t&&(this.Ky&&t.removeEventListener("pointerdown",this.Ky,!0),this.Zy&&t.removeEventListener("pointermove",this.Zy,!0),this.Qy&&(t.removeEventListener("pointerup",this.Qy,!0),t.removeEventListener("pointercancel",this.Qy,!0))),this.Yy&&(this._chart.unsubscribeCrosshairMove(this.Yy),this.Yy=null),this.Ky=null,this.Zy=null,this.Qy=null,this.kp=null}isDrawingModeActive(){return this.Jx}Xy(t){if(this.hT())return;const i=this.rT(t);null!==i&&(this.Bx=!0,this.Qx=[i],this.Ny=t.pointerId,Jh(this._chart,!0),this.kp?.setPointerCapture(t.pointerId),t.preventDefault(),t.stopPropagation(),this.lT())}Jy(t){if(!this.Bx)return;const i=this.rT(t);if(null===i)return;const s=this.Qx[this.Qx.length-1];Math.hypot(i.ut-s.ut,i.ct-s.ct)<(this.eT.sampleDistance??4)||(this.Qx.push(i),t.preventDefault(),t.stopPropagation(),this.lT())}tS(){this.Bx&&this.nT()}nT(){if(!this.Bx)return;this.Bx=!1,this.uS();const t=[];for(const i of this.Qx){const s=je(this._chart,this._series,i.ut),e=this._series.coordinateToPrice(i.ct);null!==s&&null!==e&&t.push({time:s,price:e})}this.Qx=[],t.length<2?this._b():(this.eT.points=t,this.stopDrawingMode(),this._b(),this.eT.onUpdate&&this.eT.onUpdate(),this.eT.onComplete&&this.eT.onComplete())}hT(){const t=this.iT;return"string"==typeof t&&t.split("#")[0]!==this.id}uS(){null!==this.Ny&&(this.kp&&this.kp.hasPointerCapture(this.Ny)&&this.kp.releasePointerCapture(this.Ny),this.Ny=null)}rT(t){const i=this.aT();if(null===i)return null;const s=i.getBoundingClientRect();return{ut:t.clientX-s.left,ct:t.clientY-s.top}}aT(){try{return this._series.getPane().getHTMLElement()}catch(t){return null}}lT(){this.tT||(this.tT=!0,requestAnimationFrame(()=>{this.tT=!1,this._b()}))}drawToCanvas(t,i,s){const e=this.Bx?this.Qx.map(t=>({ut:t.ut*i,ct:t.ct*s})):this.oT(i,s);if(0===e.length)return;const n=this.ZS;if(t.strokeStyle=this.eT.color,t.lineWidth=(this.eT.lineWidth+(n?1:0))*i,t.lineCap="round",t.lineJoin="round",t.beginPath(),t.moveTo(e[0].ut,e[0].ct),this.eT.smoothing&&e.length>2){for(let i=1;i<e.length-1;i++){const s=(e[i].ut+e[i+1].ut)/2,n=(e[i].ct+e[i+1].ct)/2;t.quadraticCurveTo(e[i].ut,e[i].ct,s,n)}t.lineTo(e[e.length-1].ut,e[e.length-1].ct)}else for(let i=1;i<e.length;i++)t.lineTo(e[i].ut,e[i].ct);t.stroke(),!n&&!this.JS||this.isLocked()||(this.gx(t,e[0],i),this.gx(t,e[e.length-1],i))}gx(t,i,s){t.fillStyle=this.eT.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()}oT(t,i){const s=this.eT.points??[],e=[];for(const n of s){const s=Ye(this._chart,this._series,n.time),h=this._series.priceToCoordinate(n.price);null!==s&&null!==h&&e.push({ut:s*t,ct:h*i})}return e}hitTest(t,i){const s=this.oT(1,1);for(let e=1;e<s.length;e++)if(qr(t,i,s[e-1],s[e])<=8)return!0;return!1}hitTestEndpoint(t,i){return this.hitTest(t,i)?"stroke":null}startDrag(t,i){this.QS=!0,this.ix=i,this.sT=(this.eT.points??[]).map(t=>({time:t.time,price:t.price}))}updateDrag(t,i){const s=this.sT;if(!this.QS||null===s||!this.eT.points)return;const e=Nh(this.ix,t,i);this.eT.points.forEach((t,i)=>{const n=s[i];n&&(t.time=n.time+e.wt,t.price=n.price+e.Mt)}),this._b(),this.eT.onUpdate&&this.eT.onUpdate()}stopDrag(){this.QS=!1,this.ix=null,this.sT=null}setColor(t){this.eT.color=t,this._b()}color(){return this.eT.color??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}My(){this.er=new Nr(this);const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):null}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){this.stopDrawingMode(),this.HM&&(this._series.detachPrimitive(this.HM),this.HM=null),this.er=null,this.eT.onRemove&&this.eT.onRemove()}_serializeShape(){return{type:"brush",points:(this.eT.points??[]).map(Yh),style:{color:this.eT.color,lineWidth:this.eT.lineWidth,smoothing:this.eT.smoothing}}}getPoints(){return this.eT.points??[]}}function qr(t,i,s,e){const n=e.ut-s.ut,h=e.ct-s.ct,r=n*n+h*h;if(0===r)return Math.hypot(t-s.ut,i-s.ct);let l=((t-s.ut)*n+(i-s.ct)*h)/r;return l=Math.max(0,Math.min(1,l)),Math.hypot(t-(s.ut+l*n),i-(s.ct+l*h))}function jr(t,i={}){return new Ur(t,i)}class Yr{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class Gr{constructor(t){this.KS=t,this.Jt=new Yr(t)}renderer(){return this.KS.isComplete()?this.Jt:null}}class Kr extends Xh{constructor(t,i){super(t,"text-tool",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.tx=null,this.ix=null,this.Nx=null,this._T=!1,this.uT=null,this.cT={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.My(),this.dT()}dT(){this.uT=this._chart.subscribeClick(t=>{if(!this._T)return;const i=t.point?.x||0,s=t.point?.y||0;this.hitTest(i,s)||(this.setEditing(!1),this.cT.text&&""!==this.cT.text.trim()&&"Type here..."!==this.cT.text||this.remove())})}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new Gr(this)}getTime(){return this.cT.time}getPrice(){return this.cT.price}getText(){return this.cT.text||""}getOptions(){return this.cT}setPosition(t,i){this.cT.time=t,this.cT.price=i,this._update()}setText(t){this.cT.text=t,this._update(),this.cT.onTextChange&&this.cT.onTextChange(t)}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}isComplete(){return!(!this.cT.time||void 0===this.cT.price)}setColor(t){this.cT.textColor=t,this.cT.borderColor=t,this._b()}color(){return this.cT.textColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._update())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._update())}isHovered(){return this.JS}setEditing(t){this._T!==t&&(this._T=t,this._update())}isEditing(){return this._T}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(!this.isComplete())return!1;const s=this.cT.time,e=this.cT.price,n=Ye(this._chart,this._series,s)??0,h=this._series.priceToCoordinate(e)??0,r=this.cT.fontSize||14,l=this.cT.padding||8,a=this.cT.text||"",o=.6*r,_=Math.min(a.length*o,this.cT.maxWidth||200);return t>=n&&t<=n+_+2*l&&i>=h&&i<=h+(r+2*l)}hitTestEndpoint(t,i){if(!this.isComplete())return null;const s=this.cT.time,e=this.cT.price,n=Ye(this._chart,this._series,s)??0,h=this._series.priceToCoordinate(e)??0;return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-h,2))<=10?"anchor":null}startDrag(t,i){this.QS=!0,this.tx=t,this.ix=i,this.Nx={wt:this.cT.time,Mt:this.cT.price}}stopDrag(){this.QS=!1,this.tx=null,this.ix=null,this.Nx=null}updateDrag(t,i){if(this.QS){if("body"===this.tx&&this.Nx){const s=Nh(this.ix,t,i);this.setPosition(this.Nx.wt+s.wt,this.Nx.Mt+s.Mt)}else this.setPosition(t,i);this.cT.onUpdate&&this.cT.onUpdate()}}drawToCanvas(t,i,s){if(!this.isComplete())return;const e=this.cT.time,n=this.cT.price,h=this.cT.text||"",r=(Ye(this._chart,this._series,e)??0)*i,l=(this._series.priceToCoordinate(n)??0)*s,a=(this.cT.fontSize||14)*i,o=(this.cT.padding||8)*i,_=(this.cT.maxWidth||200)*i;t.font=`${a}px ${this.cT.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,g=this.cT.backgroundOpacity||.8,w=this.cT.backgroundColor||"#2962FF";t.fillStyle=this.gy(w,g),t.fillRect(r,l,p,m),(this.ZS||this.JS)&&(t.strokeStyle=this.cT.borderColor??"#FFFFFF",t.lineWidth=(this.cT.borderWidth||1)*i*(this.ZS?2:1),t.strokeRect(r,l,p,m)),t.fillStyle=this.cT.textColor||"#FFFFFF";for(let i=0;i<c.length;i++){const s=c[i];let e=r+o;if("center"===this.cT.textAlign){e=r+(p-t.measureText(s).width)/2}else if("right"===this.cT.textAlign){e=r+p-t.measureText(s).width-o}const n=l+o+i*v;t.fillText(s,e,n)}if((this.ZS||this.JS)&&!this.isLocked()){const s=4*i;t.fillStyle=this.cT.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:[jh(this.cT.price??0,qh(this.cT.time))],style:{fontSize:this.cT.fontSize,fontFamily:this.cT.fontFamily,textColor:this.cT.textColor,backgroundColor:this.cT.backgroundColor,backgroundOpacity:this.cT.backgroundOpacity,padding:this.cT.padding,borderColor:this.cT.borderColor,borderWidth:this.cT.borderWidth,textAlign:this.cT.textAlign,maxWidth:this.cT.maxWidth},extra:{text:this.cT.text}}}remove(){if(this.uT&&(this._chart.unsubscribeClick(this.uT),this.uT=null),this.HM&&this._series){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.cT.onRemove&&this.cT.onRemove()}}function Xr(t,i){return new Kr(t,i)}class Zr{constructor(t){this.fT=t}calculatePips(t,i){return Math.abs(i-t)/this.fT.pipValue}calculatePercent(t,i){return(i-t)/t*100}calculateRiskReward(t,i,s){const e=Math.abs(t-i),n=Math.abs(s-t);return 0===e?0:n/e}calculateMetrics(t,i,s,e){const n={entryPrice:t,stopLoss:i,takeProfit:s,quantity:e,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!==e){const h=Math.abs(t-i),r=Math.abs(s-t);n.stopLossAmount=h*e,n.takeProfitAmount=r*e}return n}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.fT={...this.fT,...t}}getPipConfig(){return{...this.fT}}}function Jr(t){const i=t.toString().split("."),s=i.length>1?i[1].length:0;let e;return e=s>=5?1e-5:4===s?1e-4:3===s?.001:2===s?.01:1===s?.1:1,{pipValue:e,decimals:s}}function Qr(t,i){return"number"==typeof t?Jr(t):void 0!==i?Jr(i):{pipValue:.1,decimals:1}}class tl{constructor(t){this.fT=t}calculateMetrics(t,i,s,e,n){const h=e-i;return{point1:{time:t,price:i},point2:{time:s,price:e},priceDifference:h,pricePercent:h/i*100,pips:Math.abs(h)/this.fT.pipValue,timeDifference:this.pT(t,s),barCount:n}}pT(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),e=Math.floor(t%3600/60);return i>0?`${i}d ${s}h`:s>0?`${s}h ${e}m`:e>0?`${e}m`:`${t}s`}formatBarCount(t){return`${t} ${1===t?"bar":"bars"}`}updatePipConfig(t){this.fT={...this.fT,...t}}getPipConfig(){return{...this.fT}}}class il{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class sl{constructor(t){this.KS=t,this.Jt=new il(t)}renderer(){return this.KS.isVisible()?this.Jt:null}}class el extends Xh{constructor(t,i){super(t,"ruler-tool",i),this.HM=null,this.XS=null,this.qM=null,this.er=null,this.Cx=null,this.hx=!1,this.ZS=!1,this.JS=!1,this.lx=null,this.QS=!1,this.kx=null,this.sf=null,this.vT={lineColor:"#2962ff",lineWidth:2,showLabel:!0,labelBackgroundColor:"#2962ff",labelTextColor:"#ffffff",selectionColor:"#2962ff",selectionLineWidth:3,symbol:"DEFAULT",...i};const s=this.vT.pipConfig||Qr(this.vT.symbol||"DEFAULT");this.Rx=new tl(s),this.My(),this.vT.interactive?this._x():this.vT.point1Time&&this.vT.point2Time&&(this.hx=!0,this.Ex())}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new sl(this)}_x(){this.Cx=new ir(this._chart,this._series,{qS:t=>{this.vT.point1Time=t.wt,this.vT.point1Price=t.Mt,this._b()},jS:t=>{this.vT.point2Time=t.wt,this.vT.point2Price=t.Mt},YS:(t,i)=>{this.vT.point1Time=t.wt,this.vT.point1Price=t.Mt,this.vT.point2Time=i.wt,this.vT.point2Price=i.Mt,this.hx=!0,this.lx=null,this.Ex(),this.Lx(),this._b()},GS:t=>{this.lx=t,this._b()}}),this.Cx.AS()}drawToCanvas(t,i,s){if(!this.hx&&this.vT.point1Time&&this.lx)return void this.mx(t,i,s);if(!this.hx||!this.vT.point1Time||!this.vT.point2Time)return;const e=(Ye(this._chart,this._series,this.vT.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.vT.point1Price)??0)*s,h=(Ye(this._chart,this._series,this.vT.point2Time)??0)*i,r=(this._series.priceToCoordinate(this.vT.point2Price)??0)*s;(this.ZS||this.JS&&!this.isLocked())&&(t.strokeStyle=this.vT.selectionColor,t.lineWidth=this.vT.selectionLineWidth*i,t.beginPath(),t.moveTo(e,n),t.lineTo(h,r),t.stroke()),t.strokeStyle=this.vT.lineColor,t.lineWidth=this.vT.lineWidth*i,t.beginPath(),t.moveTo(e,n),t.lineTo(h,r),t.stroke(),this.gx(t,e,n,i),this.gx(t,h,r,i),this.vT.showLabel&&this.qM&&this.yx(t,e,n,h,r,i,s)}gx(t,i,s,e){const n=this.ZS?this.vT.selectionColor:this.vT.lineColor,h=this.ZS?5*e:4*e;t.fillStyle=n,t.beginPath(),t.arc(i,s,h,0,2*Math.PI),t.fill(),this.ZS&&(t.strokeStyle="#ffffff",t.lineWidth=2*e,t.stroke())}mx(t,i,s){if(!this.vT.point1Time||!this.lx)return;const e=(Ye(this._chart,this._series,this.vT.point1Time)??0)*i,n=(this._series.priceToCoordinate(this.vT.point1Price)??0)*s,h=(Ye(this._chart,this._series,this.lx.wt)??0)*i,r=(this._series.priceToCoordinate(this.lx.Mt)??0)*s;t.strokeStyle=this.vT.lineColor,t.lineWidth=this.vT.lineWidth*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(e,n),t.lineTo(h,r),t.stroke(),t.setLineDash([]),this.gx(t,e,n,i),t.globalAlpha=.5,this.gx(t,h,r,i),t.globalAlpha=1}yx(t,i,s,e,n,h,r){if(!this.qM)return;const l=(i+e)/2,a=(s+n)/2,o=`${this.Rx.formatPips(this.qM.pips)} | ${this.Rx.formatPercent(this.qM.pricePercent)} | ${this.Rx.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.vT.labelBackgroundColor,t.fillRect(l-u/2,a-c/2,u,c),t.fillStyle=this.vT.labelTextColor,t.textAlign="center",t.textBaseline="middle",t.fillText(o,l,a)}Ex(){if(!this.vT.point1Time||!this.vT.point2Time||void 0===this.vT.point1Price||void 0===this.vT.point2Price)return;const t=this.mT();this.qM=this.Rx.calculateMetrics(this.vT.point1Time,this.vT.point1Price,this.vT.point2Time,this.vT.point2Price,t),this.vT.onUpdate&&this.qM&&this.vT.onUpdate(this.qM)}mT(){if(!this.vT.point1Time||!this.vT.point2Time)return 0;const t=Ye(this._chart,this._series,this.vT.point1Time),i=Ye(this._chart,this._series,this.vT.point2Time);if(null===t||null===i)return 0;return Math.abs(Math.round((i-t)/6))}updatePoints(t,i,s,e){this.vT.point1Time=t,this.vT.point1Price=i,this.vT.point2Time=s,this.vT.point2Price=e,this.Ex(),this._b()}getMetrics(){return this.qM}remove(){this.destroy()}destroy(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.Cx&&(this.Cx.m(),this.Cx=null),this.Ix(),this.vT.onRemove&&this.vT.onRemove()}Lx(){this.sf=t=>{this.Ax(t)},this._chart.subscribeCrosshairMove(this.sf)}Ix(){this.sf&&(this._chart.unsubscribeCrosshairMove(this.sf),this.sf=null)}Ax(t){if(!t.point)return;const i=je(this._chart,this._series,t.point.x);if(null===i)return;if(!this.ZS||!this.QS)return;const s=this._series.coordinateToPrice(t.point.y);null!==s&&("point1"===this.kx?(this.vT.point1Time=i,this.vT.point1Price=s):"point2"===this.kx&&(this.vT.point2Time=i,this.vT.point2Price=s),this.Ex(),this._b())}startDrag(t){this.QS=!0,this.kx=t}stopDrag(){this.QS=!1,this.kx=null}updateDrag(t,i){this.QS&&this.kx&&("point1"===this.kx?(this.vT.point1Time=t,this.vT.point1Price=i):(this.vT.point2Time=t,this.vT.point2Price=i),this.Ex(),this._b())}hitTestEndpoint(t,i){if(!this.hx||!this.vT.point1Time||!this.vT.point2Time)return null;const s=Ye(this._chart,this._series,this.vT.point1Time)??0,e=this._series.priceToCoordinate(this.vT.point1Price)??0,n=Ye(this._chart,this._series,this.vT.point2Time)??0,h=this._series.priceToCoordinate(this.vT.point2Price)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"point1";return Math.sqrt(Math.pow(t-n,2)+Math.pow(i-h,2))<=10?"point2":null}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this.Ex(),this._b()}_serializeShape(){return{type:"ruler",points:[jh(this.vT.point1Price??0,qh(this.vT.point1Time)),jh(this.vT.point2Price??0,qh(this.vT.point2Time))],style:{lineColor:this.vT.lineColor,lineWidth:this.vT.lineWidth,showLabel:this.vT.showLabel,labelBackgroundColor:this.vT.labelBackgroundColor,labelTextColor:this.vT.labelTextColor,selectionColor:this.vT.selectionColor,selectionLineWidth:this.vT.selectionLineWidth},extra:{symbol:this.vT.symbol,pipConfig:this.vT.pipConfig}}}setColor(t){this.vT.lineColor=t,this._b()}color(){return this.vT.lineColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}isSelected(){return this.ZS}isComplete(){return this.hx}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(!this.hx||!this.vT.point1Time||!this.vT.point2Time)return!1;const s=Ye(this._chart,this._series,this.vT.point1Time)??0,e=this._series.priceToCoordinate(this.vT.point1Price)??0,n=Ye(this._chart,this._series,this.vT.point2Time)??0,h=this._series.priceToCoordinate(this.vT.point2Price)??0;return this.gT(t,i,s,e,n,h)<=(this.ZS?12:8)}gT(t,i,s,e,n,h){const r=n-s,l=h-e,a=r*r+l*l;let o,_,u=-1;0!==a&&(u=((t-s)*r+(i-e)*l)/a),u<0?(o=s,_=e):u>1?(o=n,_=h):(o=s+u*r,_=e+u*l);const c=t-o,d=i-_;return Math.sqrt(c*c+d*d)}}function nl(t,i){return new el(t,i)}class hl{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class rl{constructor(t){this.KS=t,this.Jt=new hl(t)}renderer(){return this.KS.isVisible()?this.Jt:null}}class ll extends Xh{constructor(t,i){super(t,"position-tool",i),this.HM=null,this.XS=null,this.qM=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.tx=null,this.ix=null,this.Nx=null,this.wT=null,this.MT=null,this.bT={profitColor:"#26a69a",lossColor:"#ef5350",entryLineColor:"#ffffff",opacity:.3,showTooltips:!0,...i};const s=this.bT.pipConfig||Qr(this.bT.entryPrice);this.Rx=new Zr(s),this.My(),this.Ex()}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new rl(this)}drawToCanvas(t,i,s){if(this.wT&&this.bT.takeProfit){const e=this._chart.timeScale();this.yT(t,this.wT,i,s,e),(this.JS||this.ZS)&&this.yx(t,this.wT,"profit",i,s,e)}if(this.MT&&this.bT.stopLoss){const e=this._chart.timeScale();if(this.yT(t,this.MT,i,s,e),this.JS||this.ZS){const e=this._chart.timeScale();this.yx(t,this.MT,"loss",i,s,e)}}const e=this._chart.timeScale();if(this.ST(t,i,s,e),this.bT.takeProfit){const e=this._chart.timeScale();this.gx(t,this.bT.takeProfit,this.bT.profitColor,i,s,e)}if(this.bT.stopLoss){const e=this._chart.timeScale();this.gx(t,this.bT.stopLoss,this.bT.lossColor,i,s,e)}}yT(t,i,s,e,n){const h=(Ye(this._chart,this._series,this.bT.entryTime)??0)*s;let r;if(this.bT.endTime)r=(Ye(this._chart,this._series,this.bT.endTime)??0)*s;else{r=this._chart.chartElement().clientWidth*s}const l=(this._series.priceToCoordinate(i.xT)??0)*e,a=(this._series.priceToCoordinate(i.TT)??0)*e;t.fillStyle=this.gy(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()}ST(t,i,s,e){const n=(Ye(this._chart,this._series,this.bT.entryTime)??0)*i,h=(this._series.priceToCoordinate(this.bT.entryPrice)??0)*s;let r;if(this.bT.endTime)r=(Ye(this._chart,this._series,this.bT.endTime)??0)*i;else{r=this._chart.chartElement().clientWidth*i}const l=this.bT.entryLineColor;t.strokeStyle=l,t.lineWidth=2*i,t.setLineDash([5*i,5*i]),t.beginPath(),t.moveTo(n,h),t.lineTo(r,h),t.stroke(),t.setLineDash([]),t.strokeStyle=this.bT.entryLineColor,t.lineWidth=1*i,t.setLineDash([5*i,5*i]);const a=this._chart.chartElement().clientHeight*s;if(t.beginPath(),t.moveTo(n,0),t.lineTo(n,a),t.stroke(),t.setLineDash([]),!this.ZS&&!this.JS||this.isLocked())t.fillStyle=this.bT.entryLineColor,t.beginPath(),t.arc(n,h,4*i,0,2*Math.PI),t.fill();else{t.fillStyle=l,t.strokeStyle="#ffffff",t.lineWidth=2*i,t.beginPath(),t.arc(n,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)}}Ex(){this.bT.stopLoss&&this.bT.takeProfit&&(this.qM=this.Rx.calculateMetrics(this.bT.entryPrice,this.bT.stopLoss,this.bT.takeProfit,this.bT.quantity),this.PT(),this.bT.onUpdate&&this.qM&&this.bT.onUpdate(this.qM))}PT(){const t=this.CT();this.bT.takeProfit&&(this.wT={kT:this.bT.entryTime,DT:t,xT:this.bT.entryPrice,TT:this.bT.takeProfit,R:this.bT.profitColor,my:this.bT.opacity}),this.bT.stopLoss&&(this.MT={kT:this.bT.entryTime,DT:t,xT:this.bT.entryPrice,TT:this.bT.stopLoss,R:this.bT.lossColor,my:this.bT.opacity})}CT(){this._chart.timeScale().getVisibleLogicalRange();return this.bT.entryTime}yx(t,i,s,e,n,h){if(!this.qM)return;const r=(Ye(this._chart,this._series,this.bT.entryTime)??0)*e,l=(this._series.priceToCoordinate(i.TT)??0)*n,a="profit"===s,o=a?this.qM.takeProfitPips:this.qM.stopLossPips,_=a?this.bT.takeProfit:this.bT.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*e+'px -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';const d=6*e,f=t.measureText(c).width+2*d,p=20*e,v=r+8*e,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)}gx(t,i,s,e,n,h){const r=(Ye(this._chart,this._series,this.bT.entryTime)??0)*e,l=(this._series.priceToCoordinate(i)??0)*n,a=s;let o;if(t.fillStyle=a,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.beginPath(),t.arc(r,l,5*e,0,2*Math.PI),t.fill(),t.stroke(),this.bT.endTime)o=(Ye(this._chart,this._series,this.bT.endTime)??0)*e;else{o=this._chart.chartElement().clientWidth*e-10*e}const _=8*e,u=s;t.fillStyle=u,t.strokeStyle="#ffffff",t.lineWidth=2*e,t.fillRect(o-_/2,l-_/2,_,_),t.strokeRect(o-_/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.bT={...this.bT,...t},this.Ex(),this._update()}getMetrics(){return this.qM}setStopLoss(t){this.bT.stopLoss=t,this.Ex(),this._update()}setTakeProfit(t){this.bT.takeProfit=t,this.Ex(),this._update()}setEntryPrice(t){this.bT.entryPrice=t,this.Ex(),this._update()}_serializeShape(){return{type:"position",points:[jh(this.bT.entryPrice,qh(this.bT.entryTime))],style:{profitColor:this.bT.profitColor,lossColor:this.bT.lossColor,entryLineColor:this.bT.entryLineColor,opacity:this.bT.opacity,showTooltips:this.bT.showTooltips},extra:{endTime:qh(this.bT.endTime),stopLoss:this.bT.stopLoss,takeProfit:this.bT.takeProfit,quantity:this.bT.quantity,pipConfig:this.bT.pipConfig}}}setColor(t){this.bT.entryLineColor=t,this._b()}color(){return this.bT.entryLineColor??""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):this.hitTest(t,i)?Hh(this.id,"body",!1):null}hitTest(t,i){if(!this.bT.stopLoss&&!this.bT.takeProfit)return!1;const s=Ye(this._chart,this._series,this.bT.entryTime)??0;let e;if(this.bT.endTime)e=Ye(this._chart,this._series,this.bT.endTime)??0;else{e=this._chart.chartElement().clientWidth}if(this.bT.takeProfit&&this.bT.stopLoss){const n=this._series.priceToCoordinate(this.bT.takeProfit)??0,h=this._series.priceToCoordinate(this.bT.stopLoss)??0,r=Math.min(n,h),l=Math.max(n,h);if(t>=s&&t<=e&&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=Ye(this._chart,this._series,this.bT.entryTime)??0;let e;if(this.bT.endTime)e=Ye(this._chart,this._series,this.bT.endTime)??0;else{e=this._chart.chartElement().clientWidth}if(this.bT.takeProfit){const e=this._series.priceToCoordinate(this.bT.takeProfit)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"tp"}if(this.bT.stopLoss){const e=this._series.priceToCoordinate(this.bT.stopLoss)??0;if(Math.sqrt(Math.pow(t-s,2)+Math.pow(i-e,2))<=10)return"sl"}if(this.bT.takeProfit){const s=this._series.priceToCoordinate(this.bT.takeProfit)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-s,2))<=10)return"tp-right"}if(this.bT.stopLoss){const s=this._series.priceToCoordinate(this.bT.stopLoss)??0;if(Math.sqrt(Math.pow(t-e,2)+Math.pow(i-s,2))<=10)return"sl-right"}const n=this._series.priceToCoordinate(this.bT.entryPrice)??0;if(t>=s&&t<=e&&Math.abs(i-n)<=8)return"entry";if(this.bT.takeProfit&&this.bT.stopLoss){const n=this._series.priceToCoordinate(this.bT.takeProfit)??0,h=this._series.priceToCoordinate(this.bT.stopLoss)??0,r=Math.min(n,h),l=Math.max(n,h);if(t>=s&&t<=e&&i>=r&&i<=l)return"move"}return null}startDrag(t,i){this.QS=!0,this.tx=t,this.ix=i,"move"===t&&(this.Nx={RT:this.bT.entryPrice,ET:this.bT.entryTime??null,vy:this.bT.endTime??null,VT:this.bT.takeProfit??null,LT:this.bT.stopLoss??null})}stopDrag(){this.QS=!1,this.tx=null,this.ix=null,this.Nx=null}updateDrag(t,i){if(this.QS&&this.tx){if("entry"===this.tx)this.bT.entryPrice=i;else if("move"===this.tx){if(this.Nx){const s=Nh(this.ix,t,i),e=this.Nx;this.bT.entryPrice=e.RT+s.Mt,null!==e.VT&&(this.bT.takeProfit=e.VT+s.Mt),null!==e.LT&&(this.bT.stopLoss=e.LT+s.Mt),null!==e.ET&&(this.bT.entryTime=this.AT(e.ET,s.wt)),null!==e.vy&&(this.bT.endTime=this.AT(e.vy,s.wt))}}else"tp"===this.tx||"tp-right"===this.tx?(this.bT.takeProfit=i,"tp-right"===this.tx?this.bT.endTime=t:this.bT.entryTime=t):"sl"!==this.tx&&"sl-right"!==this.tx||(this.bT.stopLoss=i,"sl-right"===this.tx?this.bT.endTime=t:this.bT.entryTime=t);this.Ex(),this._b()}}AT(t,i){return t+i}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.bT.onRemove&&this.bT.onRemove()}}function al(t,i){return new ll(t,i)}class ol{constructor(t){this.KS=t}draw(t){t.useBitmapCoordinateSpace(t=>{this.KS.drawToCanvas(t.context,t.horizontalPixelRatio,t.verticalPixelRatio)})}}class _l{constructor(t){this.KS=t,this.Jt=new ol(t)}renderer(){return this.KS.isVisible()?this.Jt:null}Ct(){}zOrder(){return"normal"}}class ul extends Xh{constructor(t,i){super(t,"gantt",i),this.HM=null,this.XS=null,this.er=null,this.ZS=!1,this.JS=!1,this.QS=!1,this.IT=-1,this.ix=null,this.Nx=null,this.FT=-1,this.BT={segments:[],rowHeight:40,rowSpacing:5,fillOpacity:.7,borderWidth:2,showLabels:!0,showGrid:!0,...i},this.My()}My(){this.er=this.ux();const t={attached:t=>{this.XS=t.requestUpdate},detached:()=>{this.XS=null},updateAllViews:()=>{},paneViews:()=>this.er?[this.er]:[],hitTest:(t,i)=>this.vx(t,i)};this.HM=t,this._series.attachPrimitive(t),this._b()}ux(){return new _l(this)}drawToCanvas(t,i,s){if(!this.BT.segments||0===this.BT.segments.length)return;const e=50*s,n=this.BT.rowHeight*s,h=this.BT.rowSpacing*s;this.BT.showGrid&&this.sm(t,e,n,h,i,s),this.BT.segments.forEach((s,r)=>{const l=(Ye(this._chart,this._series,s.startTime)??0)*i,a=(Ye(this._chart,this._series,s.endTime)??0)*i,o=e+s.level*(n+h),_=r===this.FT||this.JS&&!this.isLocked();this.zT(t,l,a,o,n,s,_,i)})}sm(t,i,s,e,n,h){if(!this.BT.segments)return;const r=Math.max(...this.BT.segments.map(t=>t.level),0),l=this._chart.chartElement().clientWidth*n;t.strokeStyle="rgba(200, 200, 200, 0.3)",t.lineWidth=1*n;for(let n=0;n<=r+1;n++){const h=i+n*(s+e);t.beginPath(),t.moveTo(0,h),t.lineTo(l,h),t.stroke()}}zT(t,i,s,e,n,h,r,l){const a=s-i,o=this.gy(h.color,r?this.BT.fillOpacity+.2:this.BT.fillOpacity);t.fillStyle=o,t.fillRect(i,e,a,n),t.strokeStyle=h.color;const _=this.BT.borderWidth+(this.ZS?2:0);t.lineWidth=_*l,t.strokeRect(i,e,a,n),this.BT.showLabels&&h.label&&this.yx(t,i,e,a,n,h.label,l)}yx(t,i,s,e,n,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 _=e-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+n/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.BT.segments||(this.BT.segments=[]),this.BT.segments.push(t),this._b(),this.BT.onUpdate&&this.BT.onUpdate()}removeSegment(t){this.BT.segments&&t>=0&&t<this.BT.segments.length&&(this.BT.segments.splice(t,1),this._b(),this.BT.onUpdate&&this.BT.onUpdate())}getSegments(){return this.BT.segments||[]}setColor(t){const i=this.BT.segments??[];for(const s of i)s.color=t;this._b()}color(){const t=this.BT.segments??[];return t.length>0?t[0].color:""}setSelected(t){this.ZS!==t&&(this.ZS=t,this._b())}isSelected(){return this.ZS}setHovered(t){this.JS!==t&&(this.JS=t,this._b())}isHovered(){return this.JS}vx(t,i){if(!this.isVisible())return null;const s=this.hitTestEndpoint(t,i);return null!==s?Hh(this.id,s,!this.isLocked()):null}hitTestEndpoint(t,i){return this.hitTest(t,i)?"move":null}startDrag(t,i){const s=this.BT.segments?.[this.FT];s&&(this.QS=!0,this.IT=this.FT,this.ix=i,this.Nx={py:s.startTime,vy:s.endTime})}updateDrag(t,i){const s=this.BT.segments?.[this.IT];if(!this.QS||!this.Nx||!s)return;const e=Nh(this.ix,t,i);s.startTime=this.Nx.py+e.wt,s.endTime=this.Nx.vy+e.wt,this._b(),this.BT.onUpdate&&this.BT.onUpdate()}stopDrag(){this.QS=!1,this.IT=-1,this.ix=null,this.Nx=null}hitTest(t,i){if(!this.BT.segments||0===this.BT.segments.length)return!1;const s=this.BT.rowHeight,e=this.BT.rowSpacing;for(let n=0;n<this.BT.segments.length;n++){const h=this.BT.segments[n],r=Ye(this._chart,this._series,h.startTime)??0,l=Ye(this._chart,this._series,h.endTime)??0,a=50+h.level*(s+e);if(t>=r&&t<=l&&i>=a&&i<=a+s)return this.FT=n,!0}return this.FT=-1,!1}isVisible(){return this._visible}_serializeShape(){return{type:"gantt",points:[],style:{rowHeight:this.BT.rowHeight,rowSpacing:this.BT.rowSpacing,fillOpacity:this.BT.fillOpacity,borderWidth:this.BT.borderWidth,showLabels:this.BT.showLabels,showGrid:this.BT.showGrid},extra:{segments:(this.BT.segments||[]).map(t=>({py:qh(t.startTime),vy:qh(t.endTime),ie:t.level,Zl:t.label,R:t.color,OT:t.category}))}}}_b(){this.HM&&this.HM.updateAllViews?.(),this.XS?.()}_update(){this._b()}remove(){if(this.HM){this._series.detachPrimitive(this.HM),this.HM=null,this.er=null;const t=this._chart.chartElement?.();if(t){const i=t.clientWidth,s=t.clientHeight;this._chart.resize(i,s)}}this.BT.onRemove&&this.BT.onRemove()}}function cl(t,i){return new ul(t,i)}class dl{constructor(t,i,s={}){this.WT=[],this.$T=[],this.HT=[],this.NT=!1,this.UT=new Map,this.qT=null,this.jT=null,this.YT=null,this.wS=null,this.GT=null,this.sf=null,this.KT=null,this.XT=null,this.ZT=null,this.Ny=null,this.JT=!1,this.QT=null,this.tP=null,this.iP=new o,this.QS=!1,this.sP=null,this.Vp=t,this.Mn=i,this.Ps={enableKeyboardShortcuts:!0,selectionColor:"#2962ff",selectionLineWidth:3,...s},this.eP()}startDrawing(t){this.YT=t,this.nP()}activeDrawingType(){return this.YT}stopDrawing(){this.YT=null}addTool(t,i){const s=i??t.id;return this.UT.set(s,t),this.recordChange(),s}removeTool(t){const i=this.UT.get(t);return!!i&&(this.qT===t&&this.hP(null),i.remove(),this.UT.delete(t),this.recordChange(),!0)}selectTool(t){return!!this.UT.has(t)&&(this.hP(t),!0)}hP(t){if(this.qT===t)return;const i=null===this.qT?void 0:this.UT.get(this.qT);i&&i.setSelected(!1),this.qT=t;const s=null===t?void 0:this.UT.get(t);s&&s.setSelected(!0),this.rP()}recordChange(){this.NT||(this.WT.push(this.HT),this.$T=[],this.HT=this.serializeAll())}canUndo(){return this.WT.length>0}canRedo(){return this.$T.length>0}undo(){const t=this.WT.pop();return void 0!==t&&(this.$T.push(this.HT),this.lP(t),!0)}redo(){const t=this.$T.pop();return void 0!==t&&(this.WT.push(this.HT),this.lP(t),!0)}lP(t){this.NT=!0;try{this.restoreAll({chart:this.Vp,series:this.Mn},t,!0),this.HT=t}finally{this.NT=!1}}subscribeSelectionChanged(t){this.iP.i(t)}unsubscribeSelectionChanged(t){this.iP._(t)}selectionBounds(){if(null===this.qT)return null;const t=this.UT.get(this.qT);return t?this.aP(t):null}aP(t){const i=t.series(),s=t.serialize().points;let e=Number.POSITIVE_INFINITY,n=Number.POSITIVE_INFINITY,h=Number.NEGATIVE_INFINITY,r=Number.NEGATIVE_INFINITY,l=!1;for(const t of s){const s=Ye(this.Vp,i,t.time),a=i.priceToCoordinate(t.price);null!==s&&null!==a&&(l=!0,e=Math.min(e,s),h=Math.max(h,s),n=Math.min(n,a),r=Math.max(r,a))}if(!l)return null;const a=this.oP(t);return{left:e+a.ut,right:h+a.ut,top:n+a.ct,bottom:r+a.ct}}oP(t){const i=this.Vp.chartElement(),s=this._P(t);if(!i||!s)return{ut:0,ct:0};const e=i.getBoundingClientRect(),n=s.getBoundingClientRect();return{ut:n.left-e.left,ct:n.top-e.top}}rP(){this.iP.p({id:this.qT,bounds:this.selectionBounds()})}deselectAll(){this.nP()}deleteSelected(){if(this.qT){const t=this.UT.get(this.qT);return(!t||!t.isLocked())&&this.removeTool(this.qT)}return!1}getSelectedToolId(){return this.qT}getAllTools(){return new Map(this.UT)}getTool(t){return this.UT.get(t)}clearAll(){this.hP(null),this.UT.forEach(t=>t.remove()),this.UT.clear(),this.recordChange()}getToolCount(){return this.UT.size}isToolSelected(t){return this.qT===t}serializeAll(){const t=[];for(const i of this.UT.values())t.push(i.serialize());return t}restoreTool(t,i){const s=dl.uP(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 uP(t,i){const{type:s,points:e,style:n,extra:h}=i,r=t=>({cP:Gh(e[t]),dP:Kh(e[t],"price")??0});switch(s){case"trendLine":return hr(t,{point1Time:r(0).cP,point1Price:r(0).dP,point2Time:r(1).cP,point2Price:r(1).dP,...n});case"horizontalLine":return or(t,{price:r(0).dP,...n});case"verticalLine":return dr(t,{time:r(0).cP,...n});case"fibRetracement":return Mr(t,{point1Time:r(0).cP,point1Price:r(0).dP,point2Time:r(1).cP,point2Price:r(1).dP,useExtended:h?.useExtended,levelColors:n?.levelColors,...n});case"fibExtension":{const i=r(0),s=r(1),e=r(2);return xr(t,{point1:i.cP?{time:i.cP,price:i.dP}:void 0,point2:s.cP?{time:s.cP,price:s.dP}:void 0,point3:e.cP?{time:e.cP,price:e.dP}:void 0,levels:h?.levels,...n})}case"fibFan":return Dr(t,{point1Time:r(0).cP,point1Price:r(0).dP,point2Time:r(1).cP,point2Price:r(1).dP,levels:h?.levels,...n});case"rectangle":return Lr(t,{time1:r(0).cP,price1:r(0).dP,time2:r(1).cP,price2:r(1).dP,...n});case"circle":return Br(t,{centerTime:r(0).cP,centerPrice:r(0).dP,radiusTime:h?.radiusTime,radiusPrice:h?.radiusPrice,...n});case"arrow":return $r(t,{points:e.map(t=>({wt:t.time,Mt:t.price})),...n});case"brush":return jr(t,{points:e.map(t=>({wt:t.time,Mt:t.price})),...n});case"text":return Xr(t,{time:r(0).cP,price:r(0).dP,text:h?.text,...n});case"ruler":return nl(t,{point1Time:r(0).cP,point1Price:r(0).dP,point2Time:r(1).cP,point2Price:r(1).dP,symbol:h?.symbol,pipConfig:h?.pipConfig,...n});case"position":return al(t,{entryPrice:r(0).dP,entryTime:r(0).cP,endTime:h?.endTime,stopLoss:h?.stopLoss,takeProfit:h?.takeProfit,quantity:h?.quantity,pipConfig:h?.pipConfig,...n});case"gantt":return cl(t,{segments:h?.segments,...n});default:throw new Error(`Unknown drawing tool type: ${s}`)}}destroy(){this.clearAll(),this.fP()}eP(){this.wS=t=>{this.NS(t)},this.Vp.subscribeClick(this.wS),this.sf=t=>{this.US(t)},this.Vp.subscribeCrosshairMove(this.sf);const t=this.Vp.chartElement();t&&(this.KT=t=>this.pP(t),this.XT=t=>this.vP(),this.ZT=t=>this.vP(),t.addEventListener("pointerdown",this.KT),t.addEventListener("pointerup",this.XT),t.addEventListener("pointercancel",this.ZT)),this.Ps.enableKeyboardShortcuts&&(this.GT=t=>{this.mP(t)},document.addEventListener("keydown",this.GT))}fP(){this.wS&&(this.Vp.unsubscribeClick(this.wS),this.wS=null),this.sf&&(this.Vp.unsubscribeCrosshairMove(this.sf),this.sf=null);const t=this.Vp.chartElement();t&&(this.KT&&(t.removeEventListener("pointerdown",this.KT),this.KT=null),this.XT&&(t.removeEventListener("pointerup",this.XT),this.XT=null),this.ZT&&(t.removeEventListener("pointercancel",this.ZT),this.ZT=null)),this.GT&&(document.removeEventListener("keydown",this.GT),this.GT=null)}NS(t){if(!t.point)return;if(this.JT)return void(this.JT=!1);if(this.QS)return;const i=this.gP(t.hoveredObjectId);i?this.selectTool(i):this.nP()}US(t){if(this.QT=t.point?{ut:t.point.x,ct:t.point.y}:null,!t.point)return;if(this.QS&&this.sP){const i=this.UT.get(this.sP);if(i){const s=i.series(),e=s.coordinateToPrice(t.point.y),n=s?je(this.Vp,s,t.point.x):null;null!==e&&null!==n&&i.updateDrag(n,e)}return}const i=this.gP(t.hoveredObjectId);if(this.jT&&this.jT!==i){const t=this.UT.get(this.jT);t&&t.setHovered(!1)}if(i){const t=this.UT.get(i);t&&t.setHovered(!0)}this.jT=i}gP(t){if("string"!=typeof t)return null;const i=t.split("#")[0];for(const[t,s]of this.UT)if(s.id===i)return t;return null}pP(t){Jh(this.Vp,!1);const i=this.Vp.chartElement();if(!i)return;const s=null!==this.jT&&null!==this.QT?{wP:this.jT,Cg:this.QT}:this.MP(t);if(null===s)return;const{wP:e,Cg:n}=s,h=this.UT.get(e);if(!h||h.isLocked())return;const r=h.hitTestEndpoint(n.ut,n.ct),l=this.bP(h,n.ut,n.ct);null!==r&&null!==l&&(Jh(this.Vp,!0),this.selectTool(e),this.QS=!0,this.JT=!0,this.sP=e,this.Ny=t.pointerId,i.setPointerCapture(t.pointerId),h.startDrag(r,l),this.yP())}vP(){if(!this.QS||null===this.sP)return;const t=this.UT.get(this.sP);t&&t.stopDrag(),this.uS(),this.SP(),this.QS=!1,this.sP=null,this.recordChange()}_P(t){try{return t.series().getPane().getHTMLElement()}catch(t){return null}}MP(t){for(const[i,s]of this.UT){if(!s.isVisible()||s.isLocked())continue;const e=this._P(s);if(null===e)continue;const n=e.getBoundingClientRect(),h={ut:t.clientX-n.left,ct:t.clientY-n.top};if(s.hitTest(h.ut,h.ct))return{wP:i,Cg:h}}return null}uS(){if(null===this.Ny)return;const t=this.Vp.chartElement();t&&t.hasPointerCapture(this.Ny)&&t.releasePointerCapture(this.Ny),this.Ny=null}yP(){const t=this.Vp.options();this.tP={xP:t.handleScroll,TP:t.handleScale},this.Vp.applyOptions({handleScroll:!1,handleScale:!1})}SP(){const t=this.tP;this.tP=null,null!==t&&this.Vp.applyOptions({handleScroll:t.xP,handleScale:t.TP})}mP(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.vP(),this.nP(),this.stopDrawing(),t.preventDefault())}bP(t,i,s){const e=t.series().coordinateToPrice(s);return null==e?null:{price:e,time:je(this.Vp,t.series(),i)}}nP(){this.hP(null)}}const fl={...t,color:"#2196f3"};var pl=Object.freeze({__proto__:null,AreaSeries:Sn,ArrowTool:Wr,BarSeries:Cn,BaselineSeries:Mn,BrushTool:Ur,CandlestickSeries:Rn,CircleTool:Fr,get ColorType(){return Ai},get CrosshairMode(){return U},DEFAULT_SESSIONS:Eh,DraggablePriceLine:Oh,DrawingToolsManager:dl,EXTENDED_FIBONACCI_RATIOS:pr,FibonacciCalculator:vr,FibonacciExtensionTool:Sr,FibonacciFanTool:kr,FibonacciTool:wr,GanttTool:ul,HistogramSeries:Ln,HorizontalLineTool:ar,InteractiveLineManager:Wh,get LastPriceAnimationMode(){return Vi},LineSeries:hn,get LineStyle(){return s},get LineType(){return i},get MismatchDirection(){return xt},PositionCalculator:Zr,PositionMarkersManager:Sh,PositionTool:ll,get PriceLineSource(){return Li},get PriceScaleMode(){return di},RectangleTool:Vr,RulerCalculator:tl,RulerTool:el,STANDARD_FIBONACCI_RATIOS:fr,TextTool:Kr,get TickMarkType(){return Ii},get TrackingModeExitMode(){return Ei},TradingSessionsIndicator:Vh,TrendLineTool:nr,VerticalLineTool:cr,VolumeProfileIndicator:Ih,applyATR:function(t,i,s={}){const e=s.period??14,n=s.paneIndex??6,h=s.color??"#FF9800",r=i.addSeries(hn,{color:h,lineWidth:2},n),l=t=>{if(!t||t.length<e+1)return[];const i=[];for(let s=1;s<t.length;s++){const e=t[s],n=t[s-1];if("high"in e&&"low"in e&&"close"in n){const t=e.high-e.low,s=Math.abs(e.high-n.close),h=Math.abs(e.low-n.close),r=Math.max(t,s,h);i.push(r)}}if(i.length<e)return[];const s=[];let n=0;for(let t=0;t<e;t++)n+=i[t];n/=e,t[e]&&t[e].time&&s.push({time:t[e].time,value:n});for(let h=e;h<i.length;h++)n=(n*(e-1)+i[h])/e,t[h+1]&&t[h+1].time&&s.push({time:t[h+1].time,value:n});return s},a=Ph({n_:t,jp:i,hy:[r],Zl:"ATR",ly:t=>[[r,l(t)]]});return{series:r,remove:a.oy}},applyBollingerBands:function(t,i,s={}){const e=s.period??20,n=s.paneIndex??0,h=s.stdDev??2,r=i.addSeries(hn,{color:s.colorUpper??"#3F51B5",lineWidth:1},n),l=i.addSeries(hn,{color:s.colorMiddle??"#2196F3",lineWidth:2},n),a=i.addSeries(hn,{color:s.colorLower??"#3F51B5",lineWidth:1},n),o=Ph({n_:t,jp:i,hy:[r,l,a],Zl:"Bollinger Bands",ly:t=>{const i=(t=>{if(!t||t.length<e)return{PP:[],CP:[],kP:[]};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=[],n=[],r=[];for(let l=e-1;l<i.length;l++){let a=0;for(let t=0;t<e;t++)a+=i[l-t];const o=a/e;let _=0;for(let t=0;t<e;t++)_+=Math.pow(i[l-t]-o,2);const u=Math.sqrt(_/e),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}),n.push({time:i,value:o}),r.push({time:i,value:d})}}return{PP:s,CP:n,kP:r}})(t);return[[r,i.PP],[l,i.CP],[a,i.kP]]}});return{upper:r,middle:l,lower:a,remove:o.oy}},applyEMA:function(t,i,s={}){const e=s.period??12,n=s.paneIndex??0,h=s.color??"#FF9800",r=i.addSeries(hn,{color:h,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},n),l=t=>{if(!t||t.length<e)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=[],n=2/(e+1);let h=0;for(let t=0;t<e;t++)h+=i[t];h/=e,t[e-1]&&t[e-1].time&&s.push({time:t[e-1].time,value:h});for(let r=e;r<i.length;r++)h=(i[r]-h)*n+h,t[r]&&t[r].time&&s.push({time:t[r].time,value:h});return s},a=Ph({n_:t,jp:i,hy:[r],Zl:"EMA",ly:t=>[[r,l(t)]]});return{series:r,remove:a.oy}},applyMACD:function(t,i,s={}){const e=s.fastPeriod??12,n=s.paneIndex??2,h=s.slowPeriod??26,r=s.signalPeriod??9,l=i.addSeries(hn,{color:s.colorMACD??"#2196F3",lineWidth:2},n),a=i.addSeries(hn,{color:s.colorSignal??"#FF6D00",lineWidth:2},n),o=i.addSeries(Ln,{color:s.colorHistogram??"#26a69a"},n),_=(t,i)=>{const s=[],e=2/(i+1);let n=0;for(let s=0;s<i;s++)n+=t[s];s.push(n/i);for(let n=i;n<t.length;n++)s.push((t[n]-s[s.length-1])*e+s[s.length-1]);return s},u=Ph({n_:t,jp:i,hy:[l,a,o],Zl:"MACD",ly:t=>{const i=(t=>{if(!t||t.length<h+r)return{DP:[],RP:[],EP:[]};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,e),n=_(i,h),l=[],a=h-e;for(let t=0;t<n.length;t++)l.push(s[t+a]-n[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 e=t[s].time,n=l[i],h=o[i],r=n-h;u.push({time:e,value:n}),c.push({time:e,value:h}),d.push({time:e,value:r,color:r>=0?"#26a69a":"#ef5350"})}}return{DP:u,RP:c,EP:d}})(t);return[[l,i.DP],[a,i.RP],[o,i.EP]]}});return{macd:l,signal:a,histogram:o,remove:u.oy}},applyOBV:function(t,i,s={}){const e=s.color??"#2196F3",n=s.paneIndex??5;kh.has(t)||kh.set(t,new Map);const h=i.addSeries(hn,{color:e,lineWidth:2},n),r=()=>{const i=t.data(),s=kh.get(t);if(!i||i.length<2)return[];if(!s||0===s.size)return[];const e=[];let n=0;e.push({time:i[0].time,value:n});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?n+=a:h.close<r.close&&(n-=a),e.push({time:h.time,value:n}))}return e},l=Ph({n_:t,jp:i,hy:[h],Zl:"OBV",ly:t=>[[h,r()]]});return{series:h,remove:l.oy}},applyRSI:function(t,i,s={}){const e=s.period??14,n=s.paneIndex??1,h=s.color??"#9C27B0",r=i.addSeries(hn,{color:h,priceFormat:{type:"price",precision:2,minMove:.01},autoscaleInfoProvider:xh(0,100)},n);i.priceScale(r.options().priceScaleId??"right",n).applyOptions({scaleMargins:{top:.1,bottom:.1},borderVisible:!1});const l=t=>{if(!t||t.length<e+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=[],n=[];for(let t=1;t<i.length;t++)n.push(i[t]-i[t-1]);let h=0,r=0;for(let t=0;t<e;t++)n[t]>0?h+=n[t]:r+=Math.abs(n[t]);h/=e,r/=e;let l=0===r?100:h/r,a=100-100/(1+l);t[e]&&t[e].time&&s.push({time:t[e].time,value:a});for(let i=e;i<n.length;i++){const o=n[i],_=o>0?o:0,u=o<0?Math.abs(o):0;h=(h*(e-1)+_)/e,r=(r*(e-1)+u)/e,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=Ph({n_:t,jp:i,hy:[r],Zl:"RSI",ly:t=>[[r,l(t)]]});return{series:r,remove:a.oy}},applySMA:function(t,i,s={}){const e=s.period??20,n=s.paneIndex??0,h=s.color??"#2196F3",r=i.addSeries(hn,{color:h,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},n),l=t=>{if(!t||t.length<e)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 n=e-1;n<i.length;n++){let h=0;for(let t=0;t<e;t++)h+=i[n-t];const r=h/e;t[n]&&t[n].time&&s.push({time:t[n].time,value:r})}return s},a=Ph({n_:t,jp:i,hy:[r],Zl:"SMA",ly:t=>[[r,l(t)]]});return{series:r,remove:a.oy}},applyStochastic:function(t,i,s={}){const e=s.kPeriod??14,n=s.paneIndex??4,h=s.dPeriod??3,r=xh(0,100),l=i.addSeries(hn,{color:s.colorK??"#2196F3",lineWidth:2,autoscaleInfoProvider:r},n),a=i.addSeries(hn,{color:s.colorD??"#FF6D00",lineWidth:2,autoscaleInfoProvider:r},n);i.priceScale(l.options().priceScaleId??"right",n).applyOptions({scaleMargins:{top:.1,bottom:.1}});const o=Ph({n_:t,jp:i,hy:[l,a],Zl:"Stochastic",ly:t=>{const i=(t=>{if(!t||t.length<e)return{VP:[],LP:[]};const i=[];for(let s=e-1;s<t.length;s++){let n=-1/0,h=1/0;for(let i=0;i<e;i++){const e=t[s-i];"high"in e&&"low"in e&&(n=Math.max(n,e.high),h=Math.min(h,e.low))}const r=t[s];if("close"in r){const t=(r.close-h)/(n-h)*100;i.push(t)}}const s=[];for(let n=0;n<i.length;n++){const h=e-1+n;t[h]&&t[h].time&&s.push({time:t[h].time,value:i[n]})}const n=[];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=e-1+s;t[a]&&t[a].time&&n.push({time:t[a].time,value:l})}return{VP:s,LP:n}})(t);return[[l,i.VP],[a,i.LP]]}});return{k:l,d:a,remove:o.oy}},applyVolume:function(t,i,s={}){const e=s.colorUp??"#26a69a",n=s.paneIndex??3,h=s.colorDown??"#ef5350";Ch.has(t)||Ch.set(t,new Map);const r=i.addSeries(Ln,{color:e,priceFormat:{type:"volume"},priceScaleId:""},n);i.priceScale(r.options().priceScaleId??"right",n).applyOptions({scaleMargins:{top:.8,bottom:0}});const l=()=>{const i=t.data(),s=Ch.get(t);if(!i||0===i.length)return[];if(!s||0===s.size)return[];const n=[];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&&n.push({time:t.time,value:r,color:t.close>=t.open?e:h})}return n},a=Ph({n_:t,jp:i,hy:[r],Zl:"Volume",ly:t=>[[r,l()]]});return{series:r,remove:a.oy}},applyWMA:function(t,i,s={}){const e=s.period??20,n=s.paneIndex??0,h=s.color??"#4CAF50",r=i.addSeries(hn,{color:h,lineWidth:2,priceFormat:{type:"price",precision:2,minMove:.01}},n),l=t=>{if(!t||t.length<e)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=[],n=e*(e+1)/2;for(let h=e-1;h<i.length;h++){let r=0;for(let t=0;t<e;t++){const s=t+1;r+=i[h-e+1+t]*s}const l=r/n;t[h]&&t[h].time&&s.push({time:t[h].time,value:l})}return s},a=Ph({n_:t,jp:i,hy:[r],Zl:"WMA",ly:t=>[[r,l(t)]]});return{series:r,remove:a.oy}},calculatePipConfig:Jr,coordinateFromTime:Ye,createArrowTool:$r,createBrushTool:jr,createChart:function(t,i){return Ue(t,new ss,ss.od(i))},createChartEx:Ue,createCircleTool:Br,createFibonacciExtensionTool:xr,createFibonacciFanTool:Dr,createFibonacciTool:Mr,createGanttTool:cl,createHorizontalLineTool:or,createImageWatermark:function(t,i,s){return new An(t,new Kn(i,s))},createInteractiveLineManager:function(t,i){return new Wh(t,i)},createOptionsChart:function(t,i){return Ue(t,new dn,i)},createPositionMarkers:function(t,i,s){const e=new Sh(t,s);return i&&i.length>0&&e.setPositions(i),e},createPositionTool:al,createRectangleTool:Lr,createRulerTool:nl,createSeriesMarkers:fh,createTextTool:Xr,createTextWatermark:function(t,i){return new An(t,new Nn(i))},createTradingLine:function(t,i,s){const e={"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}},n=s.type?e[s.type]:e.custom,h={price:s.price,color:s.color??n.color??"#9E9E9E",lineWidth:s.lineWidth??2,lineStyle:s.lineStyle??n.lineStyle??0,title:s.title??n.title??"",axisLabelVisible:s.axisLabelVisible??!0,draggable:s.draggable??n.draggable??!0,onDragStart:s.onDragStart,onDragMove:s.onDragMove,onDragEnd:s.onDragEnd,onClick:s.onClick,formatTitle:s.formatTitle};return new Oh(i,t,h)},createTradingSessionsIndicator:function(t,i,s){return new Vh(t,i,s)},createTrendLineTool:hr,createUpDownMarkers:function(t,i={}){return new yh(t,new Mh(i))},createVerticalLineTool:dr,createVolumeProfileIndicator:function(t,i,s){return new Ih(t,i,s)},createYieldCurveChart:function(t,i){const s=Ne(t);return new un(s,i)},customSeriesDefaultOptions:fl,defaultHorzScaleBehavior:function(){return ss},getPipConfig:Qr,isBusinessDay:zi,isUTCTimestamp:Oi,setOBVVolumeData:function(t,i){kh.has(t)||kh.set(t,new Map);const s=kh.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)}},setVolumeData:function(t,i){Ch.has(t)||Ch.set(t,new Map);const s=Ch.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)}},setVolumeProfileData:function(t,i){const s=new Map;for(const t of i)s.set(t.time,t.volume);t.setVolumeData(s)},timeFromCoordinate:je,version:function(){return"1.3.1"}});window.PipsendCharts=pl,window.LightweightCharts=pl}();
|