@iccandle/reactjs-widget 0.2.12 → 0.2.14

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.
@@ -12,7 +12,7 @@ Valid keys: `+JSON.stringify(Object.keys(C),null," "));var Z=de(I,ie,R,j,E+"."+
12
12
  `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const i=new this(t);return n.forEach(r=>i.set(r)),i}static accessor(t){const i=(this[Ya]=this[Ya]={accessors:{}}).accessors,r=this.prototype;function a(o){const s=Dn(o);i[s]||(sh(r,o),i[s]=!0)}return U.isArray(t)?t.forEach(a):a(t),this}};et.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);U.reduceDescriptors(et.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(i){this[n]=i}}});U.freezeMethods(et);function tr(e,t){const n=this||qn,i=t||n,r=et.from(i.headers);let a=i.data;return U.forEach(e,function(s){a=s.call(n,a,r.normalize(),t?t.status:void 0)}),r.normalize(),a}function Ns(e){return!!(e&&e.__CANCEL__)}let Wn=class extends ue{constructor(t,n,i){super(t??"canceled",ue.ERR_CANCELED,n,i),this.name="CanceledError",this.__CANCEL__=!0}};function Ds(e,t,n){const i=n.config.validateStatus;!n.status||!i||i(n.status)?e(n):t(new ue("Request failed with status code "+n.status,[ue.ERR_BAD_REQUEST,ue.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function lh(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function ch(e,t){e=e||10;const n=new Array(e),i=new Array(e);let r=0,a=0,o;return t=t!==void 0?t:1e3,function(u){const c=Date.now(),d=i[a];o||(o=c),n[r]=u,i[r]=c;let l=a,g=0;for(;l!==r;)g+=n[l++],l=l%e;if(r=(r+1)%e,r===a&&(a=(a+1)%e),c-o<t)return;const f=d&&c-d;return f?Math.round(g*1e3/f):void 0}}function uh(e,t){let n=0,i=1e3/t,r,a;const o=(c,d=Date.now())=>{n=d,r=null,a&&(clearTimeout(a),a=null),e(...c)};return[(...c)=>{const d=Date.now(),l=d-n;l>=i?o(c,d):(r=c,a||(a=setTimeout(()=>{a=null,o(r)},i-l)))},()=>r&&o(r)]}const hi=(e,t,n=3)=>{let i=0;const r=ch(50,250);return uh(a=>{const o=a.loaded,s=a.lengthComputable?a.total:void 0,u=o-i,c=r(u),d=o<=s;i=o;const l={loaded:o,total:s,progress:s?o/s:void 0,bytes:u,rate:c||void 0,estimated:c&&s&&d?(s-o)/c:void 0,event:a,lengthComputable:s!=null,[t?"download":"upload"]:!0};e(l)},n)},qa=(e,t)=>{const n=e!=null;return[i=>t[0]({lengthComputable:n,total:e,loaded:i}),t[1]]},Wa=e=>(...t)=>U.asap(()=>e(...t)),dh=We.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,We.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(We.origin),We.navigator&&/(msie|trident)/i.test(We.navigator.userAgent)):()=>!0,hh=We.hasStandardBrowserEnv?{write(e,t,n,i,r,a,o){if(typeof document>"u")return;const s=[`${e}=${encodeURIComponent(t)}`];U.isNumber(n)&&s.push(`expires=${new Date(n).toUTCString()}`),U.isString(i)&&s.push(`path=${i}`),U.isString(r)&&s.push(`domain=${r}`),a===!0&&s.push("secure"),U.isString(o)&&s.push(`SameSite=${o}`),document.cookie=s.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function ph(e){return typeof e!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function mh(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function Rs(e,t,n){let i=!ph(t);return e&&(i||n==!1)?mh(e,t):t}const _a=e=>e instanceof et?{...e}:e;function on(e,t){t=t||{};const n={};function i(c,d,l,g){return U.isPlainObject(c)&&U.isPlainObject(d)?U.merge.call({caseless:g},c,d):U.isPlainObject(d)?U.merge({},d):U.isArray(d)?d.slice():d}function r(c,d,l,g){if(U.isUndefined(d)){if(!U.isUndefined(c))return i(void 0,c,l,g)}else return i(c,d,l,g)}function a(c,d){if(!U.isUndefined(d))return i(void 0,d)}function o(c,d){if(U.isUndefined(d)){if(!U.isUndefined(c))return i(void 0,c)}else return i(void 0,d)}function s(c,d,l){if(l in t)return i(c,d);if(l in e)return i(void 0,c)}const u={url:a,method:a,data:a,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:s,headers:(c,d,l)=>r(_a(c),_a(d),l,!0)};return U.forEach(Object.keys({...e,...t}),function(d){if(d==="__proto__"||d==="constructor"||d==="prototype")return;const l=U.hasOwnProp(u,d)?u[d]:r,g=l(e[d],t[d],d);U.isUndefined(g)&&l!==s||(n[d]=g)}),n}const Es=e=>{const t=on({},e);let{data:n,withXSRFToken:i,xsrfHeaderName:r,xsrfCookieName:a,headers:o,auth:s}=t;if(t.headers=o=et.from(o),t.url=Cs(Rs(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),s&&o.set("Authorization","Basic "+btoa((s.username||"")+":"+(s.password?unescape(encodeURIComponent(s.password)):""))),U.isFormData(n)){if(We.hasStandardBrowserEnv||We.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if(U.isFunction(n.getHeaders)){const u=n.getHeaders(),c=["content-type","content-length"];Object.entries(u).forEach(([d,l])=>{c.includes(d.toLowerCase())&&o.set(d,l)})}}if(We.hasStandardBrowserEnv&&(i&&U.isFunction(i)&&(i=i(t)),i||i!==!1&&dh(t.url))){const u=r&&a&&hh.read(a);u&&o.set(r,u)}return t},fh=typeof XMLHttpRequest<"u",gh=fh&&function(e){return new Promise(function(n,i){const r=Es(e);let a=r.data;const o=et.from(r.headers).normalize();let{responseType:s,onUploadProgress:u,onDownloadProgress:c}=r,d,l,g,f,m;function y(){f&&f(),m&&m(),r.cancelToken&&r.cancelToken.unsubscribe(d),r.signal&&r.signal.removeEventListener("abort",d)}let b=new XMLHttpRequest;b.open(r.method.toUpperCase(),r.url,!0),b.timeout=r.timeout;function x(){if(!b)return;const A=et.from("getAllResponseHeaders"in b&&b.getAllResponseHeaders()),v={data:!s||s==="text"||s==="json"?b.responseText:b.response,status:b.status,statusText:b.statusText,headers:A,config:e,request:b};Ds(function(w){n(w),y()},function(w){i(w),y()},v),b=null}"onloadend"in b?b.onloadend=x:b.onreadystatechange=function(){!b||b.readyState!==4||b.status===0&&!(b.responseURL&&b.responseURL.indexOf("file:")===0)||setTimeout(x)},b.onabort=function(){b&&(i(new ue("Request aborted",ue.ECONNABORTED,e,b)),b=null)},b.onerror=function(S){const v=S&&S.message?S.message:"Network Error",D=new ue(v,ue.ERR_NETWORK,e,b);D.event=S||null,i(D),b=null},b.ontimeout=function(){let S=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded";const v=r.transitional||Ur;r.timeoutErrorMessage&&(S=r.timeoutErrorMessage),i(new ue(S,v.clarifyTimeoutError?ue.ETIMEDOUT:ue.ECONNABORTED,e,b)),b=null},a===void 0&&o.setContentType(null),"setRequestHeader"in b&&U.forEach(o.toJSON(),function(S,v){b.setRequestHeader(v,S)}),U.isUndefined(r.withCredentials)||(b.withCredentials=!!r.withCredentials),s&&s!=="json"&&(b.responseType=r.responseType),c&&([g,m]=hi(c,!0),b.addEventListener("progress",g)),u&&b.upload&&([l,f]=hi(u),b.upload.addEventListener("progress",l),b.upload.addEventListener("loadend",f)),(r.cancelToken||r.signal)&&(d=A=>{b&&(i(!A||A.type?new Wn(null,e,b):A),b.abort(),b=null)},r.cancelToken&&r.cancelToken.subscribe(d),r.signal&&(r.signal.aborted?d():r.signal.addEventListener("abort",d)));const T=lh(r.url);if(T&&We.protocols.indexOf(T)===-1){i(new ue("Unsupported protocol "+T+":",ue.ERR_BAD_REQUEST,e));return}b.send(a||null)})},yh=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let i=new AbortController,r;const a=function(c){if(!r){r=!0,s();const d=c instanceof Error?c:this.reason;i.abort(d instanceof ue?d:new Wn(d instanceof Error?d.message:d))}};let o=t&&setTimeout(()=>{o=null,a(new ue(`timeout of ${t}ms exceeded`,ue.ETIMEDOUT))},t);const s=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(c=>{c.unsubscribe?c.unsubscribe(a):c.removeEventListener("abort",a)}),e=null)};e.forEach(c=>c.addEventListener("abort",a));const{signal:u}=i;return u.unsubscribe=()=>U.asap(s),u}},bh=function*(e,t){let n=e.byteLength;if(n<t){yield e;return}let i=0,r;for(;i<n;)r=i+t,yield e.slice(i,r),i=r},vh=async function*(e,t){for await(const n of wh(e))yield*bh(n,t)},wh=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:n,value:i}=await t.read();if(n)break;yield i}}finally{await t.cancel()}},Va=(e,t,n,i)=>{const r=vh(e,t);let a=0,o,s=u=>{o||(o=!0,i&&i(u))};return new ReadableStream({async pull(u){try{const{done:c,value:d}=await r.next();if(c){s(),u.close();return}let l=d.byteLength;if(n){let g=a+=l;n(g)}u.enqueue(new Uint8Array(d))}catch(c){throw s(c),c}},cancel(u){return s(u),r.return()}},{highWaterMark:2})},Ka=64*1024,{isFunction:ni}=U,xh=(({Request:e,Response:t})=>({Request:e,Response:t}))(U.global),{ReadableStream:Ja,TextEncoder:Xa}=U.global,Za=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Ph=e=>{e=U.merge.call({skipUndefined:!0},xh,e);const{fetch:t,Request:n,Response:i}=e,r=t?ni(t):typeof fetch=="function",a=ni(n),o=ni(i);if(!r)return!1;const s=r&&ni(Ja),u=r&&(typeof Xa=="function"?(m=>y=>m.encode(y))(new Xa):async m=>new Uint8Array(await new n(m).arrayBuffer())),c=a&&s&&Za(()=>{let m=!1;const y=new n(We.origin,{body:new Ja,method:"POST",get duplex(){return m=!0,"half"}}).headers.has("Content-Type");return m&&!y}),d=o&&s&&Za(()=>U.isReadableStream(new i("").body)),l={stream:d&&(m=>m.body)};r&&["text","arrayBuffer","blob","formData","stream"].forEach(m=>{!l[m]&&(l[m]=(y,b)=>{let x=y&&y[m];if(x)return x.call(y);throw new ue(`Response type '${m}' is not supported`,ue.ERR_NOT_SUPPORT,b)})});const g=async m=>{if(m==null)return 0;if(U.isBlob(m))return m.size;if(U.isSpecCompliantForm(m))return(await new n(We.origin,{method:"POST",body:m}).arrayBuffer()).byteLength;if(U.isArrayBufferView(m)||U.isArrayBuffer(m))return m.byteLength;if(U.isURLSearchParams(m)&&(m=m+""),U.isString(m))return(await u(m)).byteLength},f=async(m,y)=>{const b=U.toFiniteNumber(m.getContentLength());return b??g(y)};return async m=>{let{url:y,method:b,data:x,signal:T,cancelToken:A,timeout:S,onDownloadProgress:v,onUploadProgress:D,responseType:w,headers:P,withCredentials:M="same-origin",fetchOptions:G}=Es(m),W=t||fetch;w=w?(w+"").toLowerCase():"text";let B=yh([T,A&&A.toAbortSignal()],S),_=null;const V=B&&B.unsubscribe&&(()=>{B.unsubscribe()});let K;try{if(D&&c&&b!=="get"&&b!=="head"&&(K=await f(P,x))!==0){let k=new n(y,{method:"POST",body:x,duplex:"half"}),Y;if(U.isFormData(x)&&(Y=k.headers.get("content-type"))&&P.setContentType(Y),k.body){const[L,R]=qa(K,hi(Wa(D)));x=Va(k.body,Ka,L,R)}}U.isString(M)||(M=M?"include":"omit");const z=a&&"credentials"in n.prototype,J={...G,signal:B,method:b.toUpperCase(),headers:P.normalize().toJSON(),body:x,duplex:"half",credentials:z?M:void 0};_=a&&new n(y,J);let X=await(a?W(_,G):W(y,J));const re=d&&(w==="stream"||w==="response");if(d&&(v||re&&V)){const k={};["status","statusText","headers"].forEach(j=>{k[j]=X[j]});const Y=U.toFiniteNumber(X.headers.get("content-length")),[L,R]=v&&qa(Y,hi(Wa(v),!0))||[];X=new i(Va(X.body,Ka,L,()=>{R&&R(),V&&V()}),k)}w=w||"text";let C=await l[U.findKey(l,w)||"text"](X,m);return!re&&V&&V(),await new Promise((k,Y)=>{Ds(k,Y,{data:C,headers:et.from(X.headers),status:X.status,statusText:X.statusText,config:m,request:_})})}catch(z){throw V&&V(),z&&z.name==="TypeError"&&/Load failed|fetch/i.test(z.message)?Object.assign(new ue("Network Error",ue.ERR_NETWORK,m,_,z&&z.response),{cause:z.cause||z}):ue.from(z,z&&z.code,m,_,z&&z.response)}}},Sh=new Map,Ms=e=>{let t=e&&e.env||{};const{fetch:n,Request:i,Response:r}=t,a=[i,r,n];let o=a.length,s=o,u,c,d=Sh;for(;s--;)u=a[s],c=d.get(u),c===void 0&&d.set(u,c=s?new Map:Ph(t)),d=c;return c};Ms();const Hr={http:Ud,xhr:gh,fetch:{get:Ms}};U.forEach(Hr,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Qa=e=>`- ${e}`,Th=e=>U.isFunction(e)||e===null||e===!1;function kh(e,t){e=U.isArray(e)?e:[e];const{length:n}=e;let i,r;const a={};for(let o=0;o<n;o++){i=e[o];let s;if(r=i,!Th(i)&&(r=Hr[(s=String(i)).toLowerCase()],r===void 0))throw new ue(`Unknown adapter '${s}'`);if(r&&(U.isFunction(r)||(r=r.get(t))))break;a[s||"#"+o]=r}if(!r){const o=Object.entries(a).map(([u,c])=>`adapter ${u} `+(c===!1?"is not supported by the environment":"is not available in the build"));let s=n?o.length>1?`since :
13
13
  `+o.map(Qa).join(`
14
14
  `):" "+Qa(o[0]):"as no adapter specified";throw new ue("There is no suitable adapter to dispatch the request "+s,"ERR_NOT_SUPPORT")}return r}const Os={getAdapter:kh,adapters:Hr};function nr(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new Wn(null,e)}function $a(e){return nr(e),e.headers=et.from(e.headers),e.data=tr.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),Os.getAdapter(e.adapter||qn.adapter,e)(e).then(function(i){return nr(e),i.data=tr.call(e,e.transformResponse,i),i.headers=et.from(i.headers),i},function(i){return Ns(i)||(nr(e),i&&i.response&&(i.response.data=tr.call(e,e.transformResponse,i.response),i.response.headers=et.from(i.response.headers))),Promise.reject(i)})}const Is="1.13.5",Mi={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Mi[e]=function(i){return typeof i===e||"a"+(t<1?"n ":" ")+e}});const eo={};Mi.transitional=function(t,n,i){function r(a,o){return"[Axios v"+Is+"] Transitional option '"+a+"'"+o+(i?". "+i:"")}return(a,o,s)=>{if(t===!1)throw new ue(r(o," has been removed"+(n?" in "+n:"")),ue.ERR_DEPRECATED);return n&&!eo[o]&&(eo[o]=!0,console.warn(r(o," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(a,o,s):!0}};Mi.spelling=function(t){return(n,i)=>(console.warn(`${i} is likely a misspelling of ${t}`),!0)};function Ch(e,t,n){if(typeof e!="object")throw new ue("options must be an object",ue.ERR_BAD_OPTION_VALUE);const i=Object.keys(e);let r=i.length;for(;r-- >0;){const a=i[r],o=t[a];if(o){const s=e[a],u=s===void 0||o(s,a,e);if(u!==!0)throw new ue("option "+a+" must be "+u,ue.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new ue("Unknown option "+a,ue.ERR_BAD_OPTION)}}const ci={assertOptions:Ch,validators:Mi},ut=ci.validators;let nn=class{constructor(t){this.defaults=t||{},this.interceptors={request:new Ha,response:new Ha}}async request(t,n){try{return await this._request(t,n)}catch(i){if(i instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;const a=r.stack?r.stack.replace(/^.+\n/,""):"";try{i.stack?a&&!String(i.stack).endsWith(a.replace(/^.+\n.+\n/,""))&&(i.stack+=`
15
- `+a):i.stack=a}catch{}}throw i}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=on(this.defaults,n);const{transitional:i,paramsSerializer:r,headers:a}=n;i!==void 0&&ci.assertOptions(i,{silentJSONParsing:ut.transitional(ut.boolean),forcedJSONParsing:ut.transitional(ut.boolean),clarifyTimeoutError:ut.transitional(ut.boolean),legacyInterceptorReqResOrdering:ut.transitional(ut.boolean)},!1),r!=null&&(U.isFunction(r)?n.paramsSerializer={serialize:r}:ci.assertOptions(r,{encode:ut.function,serialize:ut.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),ci.assertOptions(n,{baseUrl:ut.spelling("baseURL"),withXsrfToken:ut.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=a&&U.merge(a.common,a[n.method]);a&&U.forEach(["delete","get","head","post","put","patch","common"],m=>{delete a[m]}),n.headers=et.concat(o,a);const s=[];let u=!0;this.interceptors.request.forEach(function(y){if(typeof y.runWhen=="function"&&y.runWhen(n)===!1)return;u=u&&y.synchronous;const b=n.transitional||Ur;b&&b.legacyInterceptorReqResOrdering?s.unshift(y.fulfilled,y.rejected):s.push(y.fulfilled,y.rejected)});const c=[];this.interceptors.response.forEach(function(y){c.push(y.fulfilled,y.rejected)});let d,l=0,g;if(!u){const m=[$a.bind(this),void 0];for(m.unshift(...s),m.push(...c),g=m.length,d=Promise.resolve(n);l<g;)d=d.then(m[l++],m[l++]);return d}g=s.length;let f=n;for(;l<g;){const m=s[l++],y=s[l++];try{f=m(f)}catch(b){y.call(this,b);break}}try{d=$a.call(this,f)}catch(m){return Promise.reject(m)}for(l=0,g=c.length;l<g;)d=d.then(c[l++],c[l++]);return d}getUri(t){t=on(this.defaults,t);const n=Rs(t.baseURL,t.url,t.allowAbsoluteUrls);return Cs(n,t.params,t.paramsSerializer)}};U.forEach(["delete","get","head","options"],function(t){nn.prototype[t]=function(n,i){return this.request(on(i||{},{method:t,url:n,data:(i||{}).data}))}});U.forEach(["post","put","patch"],function(t){function n(i){return function(a,o,s){return this.request(on(s||{},{method:t,headers:i?{"Content-Type":"multipart/form-data"}:{},url:a,data:o}))}}nn.prototype[t]=n(),nn.prototype[t+"Form"]=n(!0)});let Ah=class Ls{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(a){n=a});const i=this;this.promise.then(r=>{if(!i._listeners)return;let a=i._listeners.length;for(;a-- >0;)i._listeners[a](r);i._listeners=null}),this.promise.then=r=>{let a;const o=new Promise(s=>{i.subscribe(s),a=s}).then(r);return o.cancel=function(){i.unsubscribe(a)},o},t(function(a,o,s){i.reason||(i.reason=new Wn(a,o,s),n(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=i=>{t.abort(i)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new Ls(function(r){t=r}),cancel:t}}};function Nh(e){return function(n){return e.apply(null,n)}}function Dh(e){return U.isObject(e)&&e.isAxiosError===!0}const fr={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(fr).forEach(([e,t])=>{fr[t]=e});function Fs(e){const t=new nn(e),n=fs(nn.prototype.request,t);return U.extend(n,nn.prototype,t,{allOwnKeys:!0}),U.extend(n,t,null,{allOwnKeys:!0}),n.create=function(r){return Fs(on(e,r))},n}const Me=Fs(qn);Me.Axios=nn;Me.CanceledError=Wn;Me.CancelToken=Ah;Me.isCancel=Ns;Me.VERSION=Is;Me.toFormData=Ei;Me.AxiosError=ue;Me.Cancel=Me.CanceledError;Me.all=function(t){return Promise.all(t)};Me.spread=Nh;Me.isAxiosError=Dh;Me.mergeConfig=on;Me.AxiosHeaders=et;Me.formToJSON=e=>As(U.isHTMLForm(e)?new FormData(e):e);Me.getAdapter=Os.getAdapter;Me.HttpStatusCode=fr;Me.default=Me;const{Axios:$x,AxiosError:eP,CanceledError:tP,isCancel:nP,CancelToken:iP,VERSION:rP,all:aP,Cancel:oP,isAxiosError:Rh,spread:sP,toFormData:lP,AxiosHeaders:cP,HttpStatusCode:uP,formToJSON:dP,getAdapter:hP,mergeConfig:pP}=Me,Eh="https://api.iccandle.ai",to="An unknown error occurred",rn="http://localhost:3000",Bn="tv:clicked-news-event",pi="tv:selected-news-events",Wt=100,Mh=100,Gs=e=>e==="1"?120:e==="5"?480:e==="1D"?20*3600:parseInt(e,10)*60,gt=e=>e==="1"?60:e==="5"?300:e==="1D"?1440*3600:parseInt(e,10)*60,Oh=["en","zh","vi","th","ko","ja","mn","ru"],mi="en";function Bs(e){return e&&Oh.includes(e)?e:mi}const Ih={or:"OR",error:"Error",warning:"Warning",cancel:"Cancel",continuing:"Continuing...",email:"Email",password:"Password",termsOfService:"Terms of Service",privacyPolicy:"Privacy Policy",continueWithGoogle:"Continue with Google",continuingWithGoogle:"Continuing with Google...",signIn:"Sign in",signUp:"Sign up",agreeAndContinue:"Agree & continue",changePlan:"Change Plan",upgradePlan:"Upgrade Plan +",manageBilling:"Manage Billing",getInTouch:"Get in touch",copyright:"© {year} IC Candle, Inc. All rights reserved.",session:"Session",sessions:"Sessions",activeWorkspaces:"Active workspaces",date:"Date",product:"Product",plan:"Plan",planNames:{free:"Free Plan",standard:"Standard Plan",pro:"Pro Plan",expert:"Expert Plan"},status:"Status",amount:"Amount",detail:"Detail",total:"Total",prioritySupport:"Priority support",all:"All",minutely:"Minutely",hourly:"Hourly",daily:"Daily",chatAssistant:"Chat assistant",timeframes:"Timeframes",symbols:"Symbols",timeSettings:"Time Settings",step:"Step {number}:",learnMore:"Learn more",success:"Success",validationError:"Validation Error",previous:"Previous",next:"Next",saving:"Saving...",save:"Save",saveChanges:"Save Changes",nextStep:"Next Step",columnTimeframe:"TIMEFRAME",columnSymbol:"SYMBOL",columnDescription:"DESCRIPTION",symbol:"Symbol",timeframe:"Timeframe",candles:"Candles",up:"Up",down:"Down",play:"Play",close:"Close",simulate:"Simulate",actual:"Actual",forecast:"Forecast",interestRate:"Interest Rate",soon:"Soon",back:"Back",similarity:"Similarity",nextCandles:"Next {count}",nextCandlesFull:"Next {count} candles",probabilityOutcome:"Probability Outcome:",estimatedProbability:"estimated probability:",riskDisclaimer:"Financial markets involve a high level of risk and may result in the loss of capital. iC Candle provides information for educational purposes only and does not offer financial advice. Past performance does not guarantee future results.",rangeTooFarToRender:"Range too far to render.",marketSessions:"Market sessions",askTradingQuestion:"Ask a trading question",mrCandleThinking:"Mr. Candle is thinking...",simulateBullishPriceAction:"Simulate Bullish Price Action",simulateBearishPriceAction:"Simulate Bearish Price Action",dismiss:"Dismiss",loadingMore:"Loading more",savedPatternDeleted:"Saved Pattern Deleted"},Lh={confirm:"Confirm",deletePatternTitle:"Delete Pattern",deletePatternDescription:"Are you sure you want to delete this pattern?",deleteAllNotificationsTitle:"Delete all notifications",deleteAllNotificationsDescription:"Are you sure you want to delete all notifications?",disableSignalsTitle:"Disable Signals",disableSignalsDescription:"Are you sure you want to disable signals?",disableSignalsForDescription:"Are you sure you want to disable signals for {patternTitle}?",togglePatternModeTitle:"Toggle Pattern Mode",togglePatternModeDisableDescription:"Are you sure you want to disable this pattern?",togglePatternModeEnableDescription:"Are you sure you want to enable this pattern?",closeFeatureDescription:"Are you sure you want to close this feature?"},Fh={today:"Today",yesterday:"Yesterday",day:"{count, plural, one {# day} other {# days}}",hour:"{count, plural, one {# hour} other {# hours}}",minute:"{count, plural, one {# minute} other {# minutes}}",zeroMinutes:"0 minutes",dayShort:"day",hourShort:"hr",minuteShort:"min",zeroMin:"0min",justNow:"Just now",minutesAgo:"{count, plural, one {# minute ago} other {# minutes ago}}",hoursAgo:"{count, plural, one {# hour ago} other {# hours ago}}",daysAgo:"{count, plural, one {# day ago} other {# days ago}}",monthsAgo:"{count, plural, one {# month ago} other {# months ago}}",yearsAgo:"{count, plural, one {# year ago} other {# years ago}}"},Gh={classicPatternTracker:"Classic Pattern Tracker",trackedPatternReminder:"Tracked Pattern Reminder",classicPattern:"Classic Pattern",trackedPattern:"Tracked Pattern",enableClassicNotifications:"Turn on real‑time notifications for classic price formations",waitingForPatternSignals:"Waiting for pattern signals",noPatternsDetected:"No patterns detected right now",signalsActiveDescription:"Your signals are active. We'll notify you as soon as matching patterns are found",noCustomPatternDetected:"No {patternName} detected right now",trackMorePatternsByScan:"Track more patterns by going to scan",seeMore:"See more"},Bh={title:"Time Settings",description:"Choose the local time window when pattern alerts can trigger.",startTime:"Start time",endTime:"End time",session:"Session",timezone:"Timezone",yourTimezone:"Your timezone",selectSession:"Select session",searchSession:"Search session...",noSessionFound:"No session found.",sessionsHeading:"Sessions",selectTimezone:"Select Timezone",selectTimezoneHint:"Search and choose the timezone for this alert.",searchTimezone:"Search timezone...",noTimezoneFound:"No timezone found.",timezonesHeading:"Timezones",allTime:"All time",customize:"Customize",newYorkSession:"New York Session",londonSession:"London Session",tokyoSession:"Tokyo Session",sydneySession:"Sydney Session"},jh={newsScan:{analyzing:"Analyzing the current news event...",searching:"Searching for historically similar news releases...",ranking:"Ranking the most relevant similar news...",preparingReplay:"Preparing similar news for replay...",ready:"Similar news events are ready for impact analysis."},newsAi:{replaying:"Replaying historical price actions...",startingSimulation:"Starting impact simulation model...",calculatingScenarios:"Calculating upward and downward scenarios...",complete:"Simulation complete."},selectorScan:{scanning:"Scanning 20+ years of market history...",finding:"Finding structurally similar patterns...",linking:"Linking market behavior with underlying drivers...",preparing:"Preparing structured historical datasets...",ready:"Patterns ready for replay and outcome analysis."},selectorAi:{replaying:"Replaying historical pattern behavior...",learning:"Learning impact patterns from past movements...",calculating:"Calculating price action dynamics...",initializing:"Initializing simulation model...",complete:"Simulation complete."}},Uh={Layout:{tagline:"Designed for Traders Who Value Insight Over Noise"},Legal:{termsAndPrivacy:"Terms & Privacy",googleTermsDescription:"By continuing with Google, you agree to our <terms></terms> and <privacy></privacy>.",legalAgreement:"I agree to the <terms></terms> and <privacy></privacy>.",pleaseAgreeToContinue:"Please agree to continue",pleaseAgreeDescription:"You must agree to the Terms of Service and Privacy Policy to continue with Google."},SignIn:{dontHaveAccount:"Don't have an account?",googleVerifyingAuthorization:"Google is verifying authorization...",invalidCredentials:"Invalid credentials",invalidEmail:"Invalid email address",emailRequired:"Email is required",passwordRequired:"Password is required",pleaseCheckInfo:"Please check your information again",emailPlaceholder:"Enter your personal or work email",change:"Change",forgotPassword:"Forgot password",continueWithEmail:"Continue with email"},SignUp:{repeatPassword:"Repeat password",termsAgreement:"By continuing, you agree to our <terms></terms> and <privacy></privacy>",continueWithEmail:"Continue with email",alreadyHaveAccount:"Already have an account?",signUpError:"An error occurred during sign-up."},PasswordRecovery:{title:"Password recovery",emailRequired:"Email is required!",emailPlaceholder:"your@example.com",sendConfirmationCode:"Send confirmation code",somethingWrong:"Something wrong",pleaseWaitAndRetry:"Please wait and try again",confirmationCodeSent:"Confirmation code sent",checkYourEmail:"Please check your email"},ResetPassword:{title:"Reset password",confirmationCode:"Confirmation code",confirmationCodeRequired:"Confirmation code is required.",newPassword:"New password",repeatNewPassword:"Repeat new password",passwordMinLength:"Password must be at least 8 characters.",repeatPasswordMinLength:"Repeat password must be at least 8 characters.",passwordsMustMatch:"Passwords must match.",pleaseStartAgain:"Please start again",resetSuccess:"Reset success",useNewPassword:"Please use your new password",passwordNotConfirmed:"Password not confirmed!"},Confirm:{title:"Confirm your account",codeSentTo:"Confirmation code is sent to:",otpDescription:"Please enter the one-time password sent to your email.",otpLength:"OTP must be 6 characters.",turnstileError:"Some error occurred in turnstile",confirmError:"An error occurred during confirm: {message}",confirm:"Confirm"}},zh={features:{title:"Features",patternSelector:{title:"Pattern Selector",subtitle:"Analyzes your idea against historical market data to find similar price patterns and outcomes."},patternTracker:{title:"Pattern Tracker",subtitle:"Continuously scans the market in the background and alerts you when a matching pattern appears."},newsImpact:{title:"News Impact",subtitle:"Shows how past news releases impacted price movement so you can see how markets reacted before."}},resources:{title:"Resources",learnAndUse:{title:"Learn & Use",subtitle:"Learn analytics concepts and how to use the platform effectively."},updatesAndInsights:{title:"Updates & Insights",subtitle:"News and updates on what we're building and exploring."},whoWeAre:{title:"Who We Are",subtitle:"Who we are, what we believe, and why we build."},helpCenter:{title:"Help Center",subtitle:"Find help, guidance, and answers when you need them."}},pricing:{title:"Pricing"}},Hh={badge:"Features",title:"AI-Powered Market Analytics, Built for Smarter Decisions",description:"Leverage advanced analytics and historical intelligence to discover patterns, analyze market reactions, and understand probability before making decisions.",creditUsage:"Credit usage",resetAfter:"Reset after",resetAfterColon:"Reset after:",useThisFeature:"Use this feature",automateNow:"Automate Now",analyzeNow:"Analyze now",inSession:"You are in session",sessionActive:"Session is currently active",continueSession:"Continue session",pageHeader:{account:{title:"Profile",infoTitle:"Your Account",infoDescription:"Manage your settings, preferences, and connections"},subscription:{title:"Subscription",infoTitle:"Your Plan",infoDescription:"Manage your plan, billing, and payments"},support:{title:"Support",infoTitle:"Get Help",infoDescription:"Find answers to your questions and connect with our support team"},referral:{title:"Community",infoTitle:"Community Growth Program",infoDescription:"Refer friends, earn rebates, grow together"}}},Yh={chooseYour:"Choose your",plan:"Plan",annualPromo:`Get more than 2 months for free
15
+ `+a):i.stack=a}catch{}}throw i}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=on(this.defaults,n);const{transitional:i,paramsSerializer:r,headers:a}=n;i!==void 0&&ci.assertOptions(i,{silentJSONParsing:ut.transitional(ut.boolean),forcedJSONParsing:ut.transitional(ut.boolean),clarifyTimeoutError:ut.transitional(ut.boolean),legacyInterceptorReqResOrdering:ut.transitional(ut.boolean)},!1),r!=null&&(U.isFunction(r)?n.paramsSerializer={serialize:r}:ci.assertOptions(r,{encode:ut.function,serialize:ut.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),ci.assertOptions(n,{baseUrl:ut.spelling("baseURL"),withXsrfToken:ut.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=a&&U.merge(a.common,a[n.method]);a&&U.forEach(["delete","get","head","post","put","patch","common"],m=>{delete a[m]}),n.headers=et.concat(o,a);const s=[];let u=!0;this.interceptors.request.forEach(function(y){if(typeof y.runWhen=="function"&&y.runWhen(n)===!1)return;u=u&&y.synchronous;const b=n.transitional||Ur;b&&b.legacyInterceptorReqResOrdering?s.unshift(y.fulfilled,y.rejected):s.push(y.fulfilled,y.rejected)});const c=[];this.interceptors.response.forEach(function(y){c.push(y.fulfilled,y.rejected)});let d,l=0,g;if(!u){const m=[$a.bind(this),void 0];for(m.unshift(...s),m.push(...c),g=m.length,d=Promise.resolve(n);l<g;)d=d.then(m[l++],m[l++]);return d}g=s.length;let f=n;for(;l<g;){const m=s[l++],y=s[l++];try{f=m(f)}catch(b){y.call(this,b);break}}try{d=$a.call(this,f)}catch(m){return Promise.reject(m)}for(l=0,g=c.length;l<g;)d=d.then(c[l++],c[l++]);return d}getUri(t){t=on(this.defaults,t);const n=Rs(t.baseURL,t.url,t.allowAbsoluteUrls);return Cs(n,t.params,t.paramsSerializer)}};U.forEach(["delete","get","head","options"],function(t){nn.prototype[t]=function(n,i){return this.request(on(i||{},{method:t,url:n,data:(i||{}).data}))}});U.forEach(["post","put","patch"],function(t){function n(i){return function(a,o,s){return this.request(on(s||{},{method:t,headers:i?{"Content-Type":"multipart/form-data"}:{},url:a,data:o}))}}nn.prototype[t]=n(),nn.prototype[t+"Form"]=n(!0)});let Ah=class Ls{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(a){n=a});const i=this;this.promise.then(r=>{if(!i._listeners)return;let a=i._listeners.length;for(;a-- >0;)i._listeners[a](r);i._listeners=null}),this.promise.then=r=>{let a;const o=new Promise(s=>{i.subscribe(s),a=s}).then(r);return o.cancel=function(){i.unsubscribe(a)},o},t(function(a,o,s){i.reason||(i.reason=new Wn(a,o,s),n(i.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=i=>{t.abort(i)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new Ls(function(r){t=r}),cancel:t}}};function Nh(e){return function(n){return e.apply(null,n)}}function Dh(e){return U.isObject(e)&&e.isAxiosError===!0}const fr={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(fr).forEach(([e,t])=>{fr[t]=e});function Fs(e){const t=new nn(e),n=fs(nn.prototype.request,t);return U.extend(n,nn.prototype,t,{allOwnKeys:!0}),U.extend(n,t,null,{allOwnKeys:!0}),n.create=function(r){return Fs(on(e,r))},n}const Me=Fs(qn);Me.Axios=nn;Me.CanceledError=Wn;Me.CancelToken=Ah;Me.isCancel=Ns;Me.VERSION=Is;Me.toFormData=Ei;Me.AxiosError=ue;Me.Cancel=Me.CanceledError;Me.all=function(t){return Promise.all(t)};Me.spread=Nh;Me.isAxiosError=Dh;Me.mergeConfig=on;Me.AxiosHeaders=et;Me.formToJSON=e=>As(U.isHTMLForm(e)?new FormData(e):e);Me.getAdapter=Os.getAdapter;Me.HttpStatusCode=fr;Me.default=Me;const{Axios:$x,AxiosError:eP,CanceledError:tP,isCancel:nP,CancelToken:iP,VERSION:rP,all:aP,Cancel:oP,isAxiosError:Rh,spread:sP,toFormData:lP,AxiosHeaders:cP,HttpStatusCode:uP,formToJSON:dP,getAdapter:hP,mergeConfig:pP}=Me,Eh="https://api.iccandle.ai",to="An unknown error occurred",rn="https://embed-iccandle-app.iccandle.ai",Bn="tv:clicked-news-event",pi="tv:selected-news-events",Wt=100,Mh=100,Gs=e=>e==="1"?120:e==="5"?480:e==="1D"?20*3600:parseInt(e,10)*60,gt=e=>e==="1"?60:e==="5"?300:e==="1D"?1440*3600:parseInt(e,10)*60,Oh=["en","zh","vi","th","ko","ja","mn","ru"],mi="en";function Bs(e){return e&&Oh.includes(e)?e:mi}const Ih={or:"OR",error:"Error",warning:"Warning",cancel:"Cancel",continuing:"Continuing...",email:"Email",password:"Password",termsOfService:"Terms of Service",privacyPolicy:"Privacy Policy",continueWithGoogle:"Continue with Google",continuingWithGoogle:"Continuing with Google...",signIn:"Sign in",signUp:"Sign up",agreeAndContinue:"Agree & continue",changePlan:"Change Plan",upgradePlan:"Upgrade Plan +",manageBilling:"Manage Billing",getInTouch:"Get in touch",copyright:"© {year} IC Candle, Inc. All rights reserved.",session:"Session",sessions:"Sessions",activeWorkspaces:"Active workspaces",date:"Date",product:"Product",plan:"Plan",planNames:{free:"Free Plan",standard:"Standard Plan",pro:"Pro Plan",expert:"Expert Plan"},status:"Status",amount:"Amount",detail:"Detail",total:"Total",prioritySupport:"Priority support",all:"All",minutely:"Minutely",hourly:"Hourly",daily:"Daily",chatAssistant:"Chat assistant",timeframes:"Timeframes",symbols:"Symbols",timeSettings:"Time Settings",step:"Step {number}:",learnMore:"Learn more",success:"Success",validationError:"Validation Error",previous:"Previous",next:"Next",saving:"Saving...",save:"Save",saveChanges:"Save Changes",nextStep:"Next Step",columnTimeframe:"TIMEFRAME",columnSymbol:"SYMBOL",columnDescription:"DESCRIPTION",symbol:"Symbol",timeframe:"Timeframe",candles:"Candles",up:"Up",down:"Down",play:"Play",close:"Close",simulate:"Simulate",actual:"Actual",forecast:"Forecast",interestRate:"Interest Rate",soon:"Soon",back:"Back",similarity:"Similarity",nextCandles:"Next {count}",nextCandlesFull:"Next {count} candles",probabilityOutcome:"Probability Outcome:",estimatedProbability:"estimated probability:",riskDisclaimer:"Financial markets involve a high level of risk and may result in the loss of capital. iC Candle provides information for educational purposes only and does not offer financial advice. Past performance does not guarantee future results.",rangeTooFarToRender:"Range too far to render.",marketSessions:"Market sessions",askTradingQuestion:"Ask a trading question",mrCandleThinking:"Mr. Candle is thinking...",simulateBullishPriceAction:"Simulate Bullish Price Action",simulateBearishPriceAction:"Simulate Bearish Price Action",dismiss:"Dismiss",loadingMore:"Loading more",savedPatternDeleted:"Saved Pattern Deleted"},Lh={confirm:"Confirm",deletePatternTitle:"Delete Pattern",deletePatternDescription:"Are you sure you want to delete this pattern?",deleteAllNotificationsTitle:"Delete all notifications",deleteAllNotificationsDescription:"Are you sure you want to delete all notifications?",disableSignalsTitle:"Disable Signals",disableSignalsDescription:"Are you sure you want to disable signals?",disableSignalsForDescription:"Are you sure you want to disable signals for {patternTitle}?",togglePatternModeTitle:"Toggle Pattern Mode",togglePatternModeDisableDescription:"Are you sure you want to disable this pattern?",togglePatternModeEnableDescription:"Are you sure you want to enable this pattern?",closeFeatureDescription:"Are you sure you want to close this feature?"},Fh={today:"Today",yesterday:"Yesterday",day:"{count, plural, one {# day} other {# days}}",hour:"{count, plural, one {# hour} other {# hours}}",minute:"{count, plural, one {# minute} other {# minutes}}",zeroMinutes:"0 minutes",dayShort:"day",hourShort:"hr",minuteShort:"min",zeroMin:"0min",justNow:"Just now",minutesAgo:"{count, plural, one {# minute ago} other {# minutes ago}}",hoursAgo:"{count, plural, one {# hour ago} other {# hours ago}}",daysAgo:"{count, plural, one {# day ago} other {# days ago}}",monthsAgo:"{count, plural, one {# month ago} other {# months ago}}",yearsAgo:"{count, plural, one {# year ago} other {# years ago}}"},Gh={classicPatternTracker:"Classic Pattern Tracker",trackedPatternReminder:"Tracked Pattern Reminder",classicPattern:"Classic Pattern",trackedPattern:"Tracked Pattern",enableClassicNotifications:"Turn on real‑time notifications for classic price formations",waitingForPatternSignals:"Waiting for pattern signals",noPatternsDetected:"No patterns detected right now",signalsActiveDescription:"Your signals are active. We'll notify you as soon as matching patterns are found",noCustomPatternDetected:"No {patternName} detected right now",trackMorePatternsByScan:"Track more patterns by going to scan",seeMore:"See more"},Bh={title:"Time Settings",description:"Choose the local time window when pattern alerts can trigger.",startTime:"Start time",endTime:"End time",session:"Session",timezone:"Timezone",yourTimezone:"Your timezone",selectSession:"Select session",searchSession:"Search session...",noSessionFound:"No session found.",sessionsHeading:"Sessions",selectTimezone:"Select Timezone",selectTimezoneHint:"Search and choose the timezone for this alert.",searchTimezone:"Search timezone...",noTimezoneFound:"No timezone found.",timezonesHeading:"Timezones",allTime:"All time",customize:"Customize",newYorkSession:"New York Session",londonSession:"London Session",tokyoSession:"Tokyo Session",sydneySession:"Sydney Session"},jh={newsScan:{analyzing:"Analyzing the current news event...",searching:"Searching for historically similar news releases...",ranking:"Ranking the most relevant similar news...",preparingReplay:"Preparing similar news for replay...",ready:"Similar news events are ready for impact analysis."},newsAi:{replaying:"Replaying historical price actions...",startingSimulation:"Starting impact simulation model...",calculatingScenarios:"Calculating upward and downward scenarios...",complete:"Simulation complete."},selectorScan:{scanning:"Scanning 20+ years of market history...",finding:"Finding structurally similar patterns...",linking:"Linking market behavior with underlying drivers...",preparing:"Preparing structured historical datasets...",ready:"Patterns ready for replay and outcome analysis."},selectorAi:{replaying:"Replaying historical pattern behavior...",learning:"Learning impact patterns from past movements...",calculating:"Calculating price action dynamics...",initializing:"Initializing simulation model...",complete:"Simulation complete."}},Uh={Layout:{tagline:"Designed for Traders Who Value Insight Over Noise"},Legal:{termsAndPrivacy:"Terms & Privacy",googleTermsDescription:"By continuing with Google, you agree to our <terms></terms> and <privacy></privacy>.",legalAgreement:"I agree to the <terms></terms> and <privacy></privacy>.",pleaseAgreeToContinue:"Please agree to continue",pleaseAgreeDescription:"You must agree to the Terms of Service and Privacy Policy to continue with Google."},SignIn:{dontHaveAccount:"Don't have an account?",googleVerifyingAuthorization:"Google is verifying authorization...",invalidCredentials:"Invalid credentials",invalidEmail:"Invalid email address",emailRequired:"Email is required",passwordRequired:"Password is required",pleaseCheckInfo:"Please check your information again",emailPlaceholder:"Enter your personal or work email",change:"Change",forgotPassword:"Forgot password",continueWithEmail:"Continue with email"},SignUp:{repeatPassword:"Repeat password",termsAgreement:"By continuing, you agree to our <terms></terms> and <privacy></privacy>",continueWithEmail:"Continue with email",alreadyHaveAccount:"Already have an account?",signUpError:"An error occurred during sign-up."},PasswordRecovery:{title:"Password recovery",emailRequired:"Email is required!",emailPlaceholder:"your@example.com",sendConfirmationCode:"Send confirmation code",somethingWrong:"Something wrong",pleaseWaitAndRetry:"Please wait and try again",confirmationCodeSent:"Confirmation code sent",checkYourEmail:"Please check your email"},ResetPassword:{title:"Reset password",confirmationCode:"Confirmation code",confirmationCodeRequired:"Confirmation code is required.",newPassword:"New password",repeatNewPassword:"Repeat new password",passwordMinLength:"Password must be at least 8 characters.",repeatPasswordMinLength:"Repeat password must be at least 8 characters.",passwordsMustMatch:"Passwords must match.",pleaseStartAgain:"Please start again",resetSuccess:"Reset success",useNewPassword:"Please use your new password",passwordNotConfirmed:"Password not confirmed!"},Confirm:{title:"Confirm your account",codeSentTo:"Confirmation code is sent to:",otpDescription:"Please enter the one-time password sent to your email.",otpLength:"OTP must be 6 characters.",turnstileError:"Some error occurred in turnstile",confirmError:"An error occurred during confirm: {message}",confirm:"Confirm"}},zh={features:{title:"Features",patternSelector:{title:"Pattern Selector",subtitle:"Analyzes your idea against historical market data to find similar price patterns and outcomes."},patternTracker:{title:"Pattern Tracker",subtitle:"Continuously scans the market in the background and alerts you when a matching pattern appears."},newsImpact:{title:"News Impact",subtitle:"Shows how past news releases impacted price movement so you can see how markets reacted before."}},resources:{title:"Resources",learnAndUse:{title:"Learn & Use",subtitle:"Learn analytics concepts and how to use the platform effectively."},updatesAndInsights:{title:"Updates & Insights",subtitle:"News and updates on what we're building and exploring."},whoWeAre:{title:"Who We Are",subtitle:"Who we are, what we believe, and why we build."},helpCenter:{title:"Help Center",subtitle:"Find help, guidance, and answers when you need them."}},pricing:{title:"Pricing"}},Hh={badge:"Features",title:"AI-Powered Market Analytics, Built for Smarter Decisions",description:"Leverage advanced analytics and historical intelligence to discover patterns, analyze market reactions, and understand probability before making decisions.",creditUsage:"Credit usage",resetAfter:"Reset after",resetAfterColon:"Reset after:",useThisFeature:"Use this feature",automateNow:"Automate Now",analyzeNow:"Analyze now",inSession:"You are in session",sessionActive:"Session is currently active",continueSession:"Continue session",pageHeader:{account:{title:"Profile",infoTitle:"Your Account",infoDescription:"Manage your settings, preferences, and connections"},subscription:{title:"Subscription",infoTitle:"Your Plan",infoDescription:"Manage your plan, billing, and payments"},support:{title:"Support",infoTitle:"Get Help",infoDescription:"Find answers to your questions and connect with our support team"},referral:{title:"Community",infoTitle:"Community Growth Program",infoDescription:"Refer friends, earn rebates, grow together"}}},Yh={chooseYour:"Choose your",plan:"Plan",annualPromo:`Get more than 2 months for free
16
16
  by subscribing annually`,monthly:"Monthly",yearly:"Yearly",yearlyBadge:"-20%",comparePlans:"Compare Plans",compareSubtitle:"A full breakdown of what's included in each tier.",usage:"USAGE",usageSection:"Usage",features:"FEATURES",featuresSection:"Features",freePricePerMonth:"$0 / month",pricePerMonth:"{price} / month",patternSelector:"Pattern Selector",patternTracker:"Pattern Tracker",newsImpact:"News Impact",scanResultLimit:"Scan result limit",historicalData:"Historical data",webhook:"Webhook",patternExport:"Pattern export",scansPerDay:"{count} scans / day",scansPerDayDefault:"2 scans / day",patternsCount:"{count} patterns",perDay:"{count} / day",perDayDefault:"1 / day",tabsCount:"{count} tabs",tabsCountDefault:"1 tab",limited:"Limited",historicalYears:"20+ years",included:"✓",notIncluded:"—",planChangedSuccess:"Plan changed to {planTitle} successfully!",subscriptionSuccess:"Subscription to {planTitle} successful!",paymentSuccessful:"Payment Successful!",planUpdated:"Your plan has been updated.",planUpdatedDescription:"Your plan has been updated. You can start using your new features right away.",subscriptionActive:"Your subscription is now active.",subscriptionActiveDescription:"Your subscription to {planTitle} is now active. Thank you for your purchase!",manageBillingInfo:"Manage your billing information",continueToApp:"Continue to App",loadingPaymentDetails:"Loading payment details...",paymentError:"Payment Error",noSessionId:"No session ID provided",goToApp:"Go to App",alreadySubscribedPlan:"You are already subscribed to this plan.",activeSubscriptionManage:"You already have an active subscription. Please manage your billing to change plans.",planChangeScheduled:"Plan change scheduled",planChangeScheduledDesc:"Your plan will switch to {planTitle} on your next billing date.",alreadyOnPlan:"You are already on this plan",changePlanFailed:"Failed to change plan. Please use Manage Billing.",alreadyActiveSubscription:"You already have an active subscription",noChangesMade:"No changes made",alreadyOnPlanDesc:"You're already on the {planTitle} plan.",badgeFree:"Free",badgePopular:"Popular",badgeBestDeal:"Best Deal",badgeMaximumAccess:"Maximum Access",freeForEveryone:"Free for everyone",usdPerMonth:"USD/month",yearlyAmount:"{amount} USD / year",monthlyAmount:"{amount} USD / month",currentPlan:"Current Plan",startForFree:"Start for free",getPlan:"Get {planTitle}",switchToPlan:"Switch to {planTitle}",changePlanConfirmTitle:"Change Plan Confirmation",changePlanConfirmDesc:"You are currently on the {currentPlan} plan. Choose when you want the new price to take effect.",changeNextBilling:"Change next billing",changeNow:"Change now",confirmNextBillingTitle:"Confirm next billing change",confirmNextBillingDesc:"Are you sure you want to schedule this plan change for your next billing date? Your current {currentPlan} plan will remain active until then. On your next billing date, your plan will switch to {planTitle} ({amount}).",yesChangeNextBilling:"Yes, change next billing",continueToCheckout:"Continue to checkout",freeCheckoutDesc:"You are currently on the free plan. Continue to checkout to subscribe to {planTitle}.",continue:"Continue",agreeRefundPolicy:"I agree to the <link>Refund and Cancellation Policy</link>.",everythingInPlan:"Everything in <plan></plan> plan",plans:{free:{title:"Free",subtitle:"Explore and try",heading3:"Best for individual traders"},standard:{title:"Standard",subtitle:"Analyze with confidence",heading3:"Best for individual traders"},pro:{title:"Pro",subtitle:"Analyze in depth",heading3:"Team & Professional Tier"},expert:{title:"Expert",subtitle:"Analyze without limits",heading3:"For professional traders"}},planFeatures:{categories:{candleScanner:"Candle Scanner",candleSignal:"Candle Signal"},labels:{patternSelector:"Pattern Selector",patternTracker:"Pattern Tracker",newsImpact:"News Impact",scanResultLimit:"Scan result limit",activeTabs:"Active Tabs",timeframes:"Timeframes",webhook:"Webhook"},values:{scansPerDay:"{count} scans per day",patterns:"{count}",perDay:"{count}",tabsWorkspace:"{count} (workspace)",enabled:"Enabled",disabled:"Disabled"}}},qh={Connections:{connectedAccount:"Connected account",creditUsage:"Credit Usage",totalCreditsUsed:"Total credits used",resetsIn:"Resets in {duration}",understandingCredits:"Understanding credits and usage",nearLimit:"Near Limit"},Subscription:{myPlan:"My plan",thanksForSubscribing:"Thanks for subscribing!",billingHistory:"Billing History",nextBillingDate:"Next billing date",whichPlan:"Which plan is right for you?",patternSelectorCreditsPerDay:"{count} Pattern Selector credits / day",patternTrackerCreditsPerDay:"{count} Pattern Tracker credits / day",newsImpactCreditsPerDay:"{count} News Impact credits / day",chatAssistantCreditsPerDay:"{count} Chat Assistant credits / day",prioritySupport:"Priority support"},Billing:{noInvoices:"No invoices found.",loadError:"Failed to load invoices. Please try again later.",viewInvoice:"View invoice"}},Wh={referralRebate:"Referral Rebate",referredUsers:"Referred Users",totalRebateEarned:"Total rebate earned",referredUsersCount:"Referred users",activeReferrals:"Active referrals",referralLink:"Referral Link",shareDescription:"Share your referral link with friends. When they subscribe, you'll earn a rebate on their plan.",joinedDate:"Joined Date",loading:"Loading...",noReferralCodeAvailable:"No referral code available",updateReferralCodeTitle:"Update Referral Code",createReferralCodeTitle:"Create Referral Code",updateReferralCodeDescription:"Update your referral code below.",createReferralCodeDescription:"Enter a referral code to start sharing your referral link.",enterReferralCodePlaceholder:"Enter referral code",enterReferralCode:"Please enter a referral code",codeCreatedSuccess:"Referral code created successfully",codeUpdatedSuccess:"Referral code updated successfully",codeMinChars:"Minimum 5 characters",codeMaxChars:"Maximum 15 characters",create:"Create",update:"Update",pageNumber:"Page {page}",noReferredUsersYet:"No referred users yet",shareReferralEmptyDescription:"Share your referral link to start growing your network and earning rebates."},_h={mainMenu:{coreFeatures:"Core Features",account:"Account",subscription:"Subscription",communityGrowthProgram:"Community Growth Program",support:"Support"},patternMenu:{trackedPatterns:{label:"My tracked patterns",tooltipTitle:"High-probability pattern setups detected by AI",tooltipDescription:"iC Candle tracks global markets 24/7 to detect your tracked patterns, providing confidence levels and breakout direction. Use filters to find your best setups, then click any pattern for full details."},classicPatterns:{label:"Classic patterns",tooltipTitle:"Classic Patterns",tooltipDescription:"Choose the patterns you care about—double tops, head & shoulders, flags, rectangles, and more—then activate signals. We'll watch every tick across your selected markets and notify you the instant a formation completes. Customize delivery by telegram, email, or in‑app notification so you never miss a setup."}},helperBar:{watchList:"Watch List",savedPatterns:"Saved Patterns",newsMovingMarket:"What is moving MARKET?",favoritesCount:"Favorites ({count})",groupWithCount:"{label} ({count})",noItemsInWatchList:"No items in Watch List",watchListLast:"Last",watchListChg:"Chg",watchListChgPercent:"Chg%",removeFromFavorites:"Remove from favorites",addToFavorites:"Add to favorites",removeSymbolFromFavorites:"Remove {symbol} from favorites",addSymbolToFavorites:"Add {symbol} to favorites",groupCommodity:"Commodity",groupForex:"Forex",groupCrypto:"Crypto",groupIndices:"Indices",groupStock:"Stock"},profileMenu:{darkTheme:"Dark theme",chatWithUs:"Chat with us",termsAndConditions:"Terms & Conditions",logOut:"Log out"},tabAdded:"Tab added",tabMemoryWarning:"Adding more tabs may increase memory usage on your device.",tabLimitReached:"Tab Limit Reached",tabLimitReachedMax:"You've reached the maximum number of tabs allowed on your current plan.",tabLimitReachedUpgrade:"You've reached the maximum number of tabs allowed on your current plan. Please upgrade to access more.",notifications:"Notifications",noNotifications:"No notifications",notificationsOfflineReconnect:"(Offline) Please reconnect notifications",headerNav:{selectorTitle:"Pattern Selector",selectorShortTitle:"Selector",patternTitle:"Pattern Tracker",patternShortTitle:"Track",newsTitle:"News Impact",newsShortTitle:"News"},guideFeatures:{selector:{title:"Pattern Selector",description:"Analyzes your idea against historical market data to find similar price patterns and outcomes."},pattern:{title:"Pattern Tracker",description:"Continuously scans the market in the background and alerts you when a matching pattern appears."},news:{title:"News Impact",description:"Shows how past news releases impacted price movement so you can see how markets reacted before."}}},Vh={mostSimilarNews:"Most Similar News:",selectEvent:"Select Event",economicCalendarAnalysis:"Economic Calendar Analysis",economicCalendar:"Economic Calendar",predictAvailable:"Predict Available",predictUnavailable:"Predict Unavailable",actualReleased:"Actual Released",analyzeImpact:"Analyze impact",candleDataTooFar:"Candle data too far from event.",tryAnotherTimeframe:"Please try another timeframe.",aiIntelligence:"AI Intelligence",matchPercent:"{percent}% match",whatHappenedOnNews:"What happened on this news:",newsBeforeEvent:"News Before This {eventName}",time15MinLater:"15 min later",time30MinLater:"30 min later",time1HourLater:"1 hour later",time2HoursLater:"2 hours later",time4HoursLater:"4 hours later",noDataHere:"No data here",pleaseWaitAndRetry:"Please wait and try again",current:"Current",previousMonth:"Previous month",nextMonth:"Next month",holiday:"Holiday",seeAll:"See all",selectedSymbols:"Selected symbols",marketNews:"Market News",patternType:"Pattern type",unknownPublishDate:"Unknown publish date",noMatchingArticleDetails:"No matching article details",model:"Model",temperature:"Temperature",temperatureLow:"Low",temperatureMedium:"Medium",temperatureHigh:"High",previousActual:"Previous Actual",currentForecast:"Current Forecast",previousForecast:"Previous Forecast",goToEventDetail:"Go to event detail",eventInfoNotFound:"Event information not found",ppi:"Producer Price Index measures changes in prices of goods and services sold by manufacturers and producers.",cpi:"Consumer Price Index measures changes in prices of goods and services bought by consumers.",coreCpi:"Core CPI measures changes in consumer prices excluding food and energy; a key inflation gauge used by central banks.",jolts:"Job Openings and Labor Turnover Survey measures unfilled job vacancies in the U.S.",nfp:"Nonfarm Payrolls measures changes in the number of U.S. jobs, excluding farm and certain sectors.",ijc:"Initial Jobless Claims measures the number of individuals filing for unemployment insurance for the first time in the U.S., indicating labor market conditions.",fomc:"Federal Open Market Committee is the U.S. central bank that sets interest rates and conducts monetary policy.",fedRate:"Federal Reserve interest rate decision announcement that sets the target federal funds rate, influencing monetary policy and financial markets.",gdpAdvance:"Gross Domestic Product measures the total value of goods and services produced in an economy. Advance GDP is the first estimate release.",gdpMonthly:"Gross Domestic Product measures the total value of goods and services produced in an economy. Monthly releases track short-term growth (e.g. UK GDP m/m).",unemploymentRate:"Unemployment Rate measures the percentage of the labor force that is unemployed.",ahe:"Average Hourly Earnings measures the month-over-month change in wages paid to workers, excluding farm workers.",corePce:"Core PCE Price Index measures the month-over-month change in personal consumption expenditures excluding food and energy, the Fed's preferred inflation gauge.",retailSales:"Retail Sales measures the month-over-month change in the total value of sales at the retail level.",ismManufacturingPmi:"ISM Manufacturing PMI measures the health of the U.S. manufacturing sector based on survey data; values above 50 indicate expansion.",ismServicesPmi:"ISM Services PMI measures the health of the U.S. services sector based on survey data; values above 50 indicate expansion.",gdpPrelim:"Prelim GDP is the second estimate of quarterly GDP growth; measures the total value of goods and services produced in an economy.",adpNfp:"ADP Non-Farm Employment Change measures the change in private-sector payroll employment from ADP/Moody's survey; a leading indicator for official Nonfarm Payrolls.",eci:"Employment Cost Index measures the quarterly change in the cost of labor including wages and benefits, a key inflation indicator watched by the Fed.",flashManufacturingPmi:"Flash Manufacturing PMI is a preliminary estimate of manufacturing sector activity based on survey data; values above 50 indicate expansion.",flashServicesPmi:"Flash Services PMI is a preliminary estimate of services sector activity based on survey data; values above 50 indicate expansion.",claimantCount:"UK Claimant Count Change measures the monthly change in people claiming unemployment-related benefits; a key gauge of the UK labor market.",boeRate:"Bank of England Official Bank Rate is the interest rate set by the Monetary Policy Committee; it guides UK monetary policy and sterling markets.",ecbMainRefinancingRate:"ECB Main Refinancing Rate is the European Central Bank's key policy rate for liquidity-providing operations; it guides euro-area monetary policy and EUR markets.",snbPolicyRate:"Swiss National Bank Policy Rate is the SNB's key policy interest rate (SARON-based framework); it guides Swiss monetary policy and CHF markets.",cadEmploymentChange:"Canadian Employment Change measures the monthly change in employed people from Statistics Canada's Labour Force Survey; a key gauge of the Canadian labor market and CAD."},Kh={matchPercent:"Match {percent}%",matchLabel:"Match",mismatch:"Mismatch",noResultsFound:"No results found",result:"Result",filter:"Filter",filterBy:"Filter by",clearFilter:"Clear filter",selectFilterType:"Select filter type",matchPercentLabel:"Match %",selectSymbol:"Select Symbol",selectMatchPercent:"Select Match %",selectDateRange:"Select Date Range",dateLast1Month:"Last 1 month",dateLast6Months:"Last 6 months",dateLastYear:"Last year",dateLast3Years:"Last 3 years",dateAllTime:"All time",noDataFound:"No data found",runScanToSeePatternResults:"Run a scan to see pattern results here",scanAgainToPlay:"Scan again to play the chart",scan:"Scan",activateSelector:"Activate Selector",resetAfterDuration:"Reset after: {duration}",markets:"Markets",scannerOptions:"Scanner Options",saveOptions:"Save options",searchSymbol:"Search symbol",probabilityCalculation:"Probability calculation",probabilityCalculationTooltip:"Defines the number of upcoming candles used for probability calculation.",period:"Period",periodTooltip:"Searches from the selected period.",timeframeTooltip:"Defines the candle timeframe for scan results.",topResultsTooltip:"Defines the number of scan results.",auto:"Auto",settings:"Settings",collapseToolbar:"Collapse toolbar",expandToolbar:"Expand toolbar",availableBars:"Available sizes: 10-50, 60, 70, 80, 90, 100",clearReplayFirst:"Please clear the replay chart first",pleaseLoginFirst:"Please login first",trackPattern:"Track Pattern",selectAll:"Select all",searchTimeframe:"Search timeframe",selectAllTimeframes:"Select all timeframes",selectTimeframeAria:"Select timeframe {label}",selectSymbolAria:"Select symbol {symbol}",timeframeTypeMinutes:"Minutes",searchFilterSaved:"Search filter saved successfully.",periodAll:"All",periodLastYear:"Last year",periodLast3Years:"Last 3 years",periodLast5Years:"Last 5 years",periodLast15Years:"Last 15 years",topResults:"Top Results",tabSymbols:"Symbols",tabAdvancedOptions:"Advanced options",tabBasic:"Basic",tabAdvancedFilter:"Advanced Filter",priceMovementData:"Price Movement Data:",askAssistantExplanation:"Ask the assistant for explanation",selectCandleCount:"Select candle count",priceChanges:"Price Changes",candlesCount:"{count} candles",basedOnDirectionPatterns:'Based on "{direction}" following this patterns',noAiMovementData:"No AI movement data for {direction}ward direction",scannerOptionsDescription:"Configure symbols and scan parameters.",alwaysShow:"Always show",aiModel:"AI Intelligence model",aiTemperature:"AI temperature",aiModelTooltipLight:"Trained on the last 2 years of data.",aiModelTooltipPro:"Trained on all historical data.",aiTemperatureTooltip:"Defines the consistency level of AI predictions."},Jh={scannedAt:"Scanned At:",trackerActivated:"Tracker Activated",match:"Match: {percent}%",result:"Result",windowSize:"Window Size: {size}",patternSelectorHistory:"Pattern Selector History",noFilter:"No filter",favorite:"Favorite",windowSizeFilter:"Window size",windowSizePlaceholder:"Window size (10-50)",submit:"Submit"},Xh={trackYourCustomPatterns:"Track your custom patterns",selectedSymbol:"Selected Symbol",selectedSymbols:"Selected Symbols",timezone:"Timezone",selectedTimeframes:"Selected Timeframes",moreItems:"{count, plural, one {# more item} other {# more items}}",selectedBars:"Selected Bars",barsCount:"{count} bars",timeFrame:"Time Frame",patternType:"Pattern Type",created:"Created",editPattern:"Edit pattern",createNewTracker:"Create new tracker",firstYouHaveToScan:"First you have to scan",goToScan:"Go to scan",addToPatternTracker:"Add to Pattern Tracker",goToPatternTracker:"Go To Pattern Tracker",addToPatternTrackerDescription:"You'll receive real-time updates when this pattern appears. Enter a name to help you recognize this alert.",patternName:"Pattern Name",patternNamePlaceholder:"Enter a name for this pattern",patternNameMinChars:"Minimum 5 characters required.",patternNameMaxChars:"20 character limit reached.",patternNameErrorTitle:"Pattern Name Error",patternNameErrorDescription:"Please enter a name for the pattern signal",customPatternSignalTooltip:"You will be notified once pattern is formed on MARKET as Custom Pattern Signal",noPatternDataFound:"No pattern data found",limitReached:"Limit Reached",limitReachedTrackerDescription:"You've reached the maximum number of pattern tracker.",trackerUpgradeToastDescription:"You've reached the maximum number of signals allowed on your current plan. Please upgrade to access more.",patternConfigUpdated:"Pattern Config Updated",patternConfigUpdatedDesc:'Pattern config "{name}" has been updated',patternConfigError:"Pattern Config Error",patternConfigErrorDesc:"Failed to update pattern config",patternSaved:"Pattern Saved",patternSavedDesc:'Pattern name "{name}" has been saved',patternSignalError:"Pattern Signal Error",patternSignalErrorDesc:"Failed to save the pattern",trackerTutorialPlanLimitExpert:"Your plan has {limit} pattern to tracker limit.",trackerTutorialPlanNoTracking:"Your plan doesn't include pattern tracking. Our upgraded plans let you add patterns to the tracker.",trackerTutorialPlanTrackingLimit:"Your plan allows tracking up to {limit} patterns. Our upgraded plans let you track more patterns.",currentPlan:"Current plan",planFree:"Free",configurePatternTracker:"Configure Pattern Tracker",selectTimeframesAndSymbols:"Select the timeframes and symbols you want to monitor for this pattern.",selectTimeframes:"Select Timeframes",chooseTimeframes:"Choose the timeframes you want to monitor for this pattern.",searchTimeframes:"Search timeframes",timeframeSelected:"{count} timeframe selected",timeframesSelected:"{count} timeframes selected",symbolSelected:"{count} symbol selected",symbolsSelected:"{count} symbols selected",patternSelected:"{count} pattern",patternsSelected:"{count} patterns",patternTypes:"Pattern Types",patternSubscribed:"Pattern Subscribed",patternSubscribedDesc:'Pattern "{name}" is now being tracked',patternSubscriptionError:"Pattern Subscription Error",subscriptionModalAria:"Pattern tracker subscription",noPatternCandles:"No pattern candles found",chartSymbolRequired:"Chart symbol is required",userIdRequired:"User ID is required",subscribe:"Subscribe",subscribing:"Subscribing...",tabTimeShort:"Time",signalDialog:{title:"Signal Settings - {patternTitle}",successDescription:"Signal settings updated successfully",selectOneTimeframe:"Please select at least one timeframe",selectOneSymbol:"Please select at least one symbol",selectOneTimeframeAndSymbol:"Please select at least one timeframe and one symbol",selectCurrencyPairs:"Select Currency Pairs",chooseCurrencyPairs:"Choose the currency pairs you want to monitor for patterns",searchCurrencyPairs:"Search currency pairs"},noMatchesFound:"No matches found",filterCategoryPattern:"Pattern",filterCategorySymbol:"Symbol",filterCategoryTimeframe:"Timeframe",selectCategory:"Select category",searchCategory:"Search {category}...",timeframeOptions:{M15:{displayName:"15 Minutes",description:"15-minute timeframe"},M30:{displayName:"30 Minutes",description:"30-minute timeframe"},H1:{displayName:"1 Hour",description:"1-hour timeframe"},H2:{displayName:"2 Hours",description:"2-hour timeframe"},H4:{displayName:"4 Hours",description:"4-hour timeframe"},D:{displayName:"1 Day",description:"Daily timeframe"}}},Zh={priceActionPattern:"Price action pattern",labels:{flagbear:"Bearish Flag",flagbull:"Bullish Flag",dd_top:"Double Top",dd_bot:"Double Bottom",aad_up:"AAD Up",aad_down:"AAD Down",has_bull:"Head and Shoulders Bullish",has_bear:"Head and Shoulders Bearish",rectangle:"Rectangle"},timeframes:{M1:"1 minute",M5:"5 minutes",M15:"15 minutes",M30:"30 minutes",H1:"1 hour",H2:"2 hours",H4:"4 hours",D1:"Daily"},patterns:{doubleBottom:{desc:'<div><p>These patterns form when price tests the same level twice and fails to break through.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>It shows that the market is losing momentum in one direction.</li><li>A breakout outside the range usually signals a reversal is coming.</li></ul></div>'},doubleTop:{desc:'<div><p>These patterns form when price tests the same level twice and fails to break through.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>It shows that the market is losing momentum in one direction.</li><li>A breakout outside the range usually signals a reversal is coming.</li></ul></div>'},bullishFlag:{desc:'<div><p>A brief pause or consolidation after a strong move (either up or down).</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Price moves in a small, sloped channel against the trend.</li><li>Once it breaks out of the flag, the trend often continues in the same direction.</li></ul></div>'},bearishFlag:{desc:'<div><p>A brief pause or consolidation after a strong move (either up or down).</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Price moves in a small, sloped channel against the trend.</li><li>Once it breaks out of the flag, the trend often continues in the same direction.</li></ul></div>'},bullishHeadShoulders:{desc:'<div><p>This pattern shows a shift in market strength and signals a possible trend reversal.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>It has three parts: one larger move (the "head") and two smaller ones (the "shoulders").</li><li>When the pattern completes, price often breaks away and moves in the opposite direction of the trend before it.</li></ul></div>'},bearishHeadShoulders:{desc:'<div><p>This pattern shows a shift in market strength and signals a possible trend reversal.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>It has three parts: one larger move (the "head") and two smaller ones (the "shoulders").</li><li>When the pattern completes, price often breaks away and moves in the opposite direction of the trend before it.</li></ul></div>'}}},Qh={chartPatterns:"What is in a chart patterns?",flagPattern:"How do I trade a flag pattern effectively?",rectanglePattern:"What are the key features of a rectangle pattern to watch for?"},$h={pip:"What is a pip?",majorCurrencyPairs:"What are the major currency pairs to trade?",lotSize:"What is a lot size?",leverage:"What is a leverage?",margin:"What is a margin?",bullishFlagTrack:"Track bullish flag pattern for all symbols and timeframes"},ep={cpi:"What is CPI, and how does it affect the market?",nfp:"What is NFP, and how does it affect the market?",eurImpactfulNews:"What is the most impactful news in the market for USD?"},tp="lang",np="Profile",ip={statistics:{heading:"Thousands of traders have already changed the way they see the market.",tradersReport:"7 out of 10 traders report improved consistency in their trading decisions.",satisfactionRate:'96% satisfaction rate from beta testers who said, "It feels like trading with a brain beside me."',usersChanged:"More than 80% of users say iC Candle changed how they analyze the market.",lessTimeWatching:"Average user spends 40% less time watching charts, thanks to pattern reminders."},feedback:{backtestingTitle:"Feels like backtesting on a next level.",backtestingDesc:"Backtesting on iC Candle is honestly a game changer. It's crazy how fast and clear everything is now. I'm low-key obsessed. Hard to imagine any active trader working without this at this point.",confirmsTitle:"Confirms My Setups",confirmsDesc:"Omg, finally a tool that actually proves whether my own analysis is legit. Since I started using iCCandle, my hesitation in trading has dropped like 80%. I'm way more confident now.",marketHistoryTitle:"Market History Leads My Trades",marketHistoryDesc:"Using historical reactions for my trades has kinda become my whole new vibe. The value I'm getting vs. what I'm paying for the subscription? Not even comparable.",chatGPTTitle:"The Trader's ChatGPT",chatGPTDesc:"I use ChatGPT for literally everything in my daily life, everyone knows how much it makes things easier. And honestly… I think I just found the trader's version of ChatGPT."},tags:{all:"All",blog:"Blog",crypto:"Crypto",event:"Event",pairs:"Pairs"}},rp={title:"Page Not Found",description:"The page you're looking for doesn't exist or has been moved.",backToHomepage:"Back to Homepage",imageAlt:"Not Found"},ap=JSON.parse(`{"Page":{"title":{"terms":"Terms of Service","privacy":"Privacy Policy","refund":"Refund and Cancellation Policy","cookie":"Cookie Policy"},"tabs":{"terms":"Terms","privacy":"Privacy","refund":"Refund","cookie":"Cookies"},"nav":{"terms":"Terms of Service","privacy":"Privacy Policy","refund":"Refund and Cancellation Policy","cookie":"Cookie Policy"}},"Terms":{"title":"Terms of Service, TOS, Terms, Conditions, Disclaimers, Contract, Agreement","intro":{"p1":"This agreement is made between Pixel Nexus Global, a Singaporean Limited Liability company operating as www.iccandle.ai (“Pixel Nexus Global,” “we,” “us,” or “our”), and the individual or entity purchasing or utilizing services offered through the Platform (“Customer,” “you,” or “your”). If you are acquiring the Services on behalf of a third party, you confirm that you have the legal authority to bind that party to these Terms of Service and will be liable for their use of the Services.","p2":"By accessing the Platform and Services outlined in this document and promoted on www.iccandle.ai, or by subscribing to services via the iccandle.ai website, you acknowledge that you have read, understood, and agreed to these Terms, Conditions, and Disclaimers. You further agree that your relationship with us is governed by the provisions set forth in this TOS.","p2Emphasis":"If you do not accept these terms, you must discontinue all use of iccandle.ai and any associated services or Platforms immediately."},"sections":[{"title":"1. The Services","paragraphs":["Pixel Nexus Global will provide active customers in good standing with access to its AI-powered analytical tool (the “Platform”). As used in this Agreement, the term “Services” refers to Pixel Nexus Global’s provision of your access to the Platform. The Services will be provided to you under one or more subscriptions, account activations, sign-ups, or orders placed by you on the iccandle.ai website and accepted by Pixel Nexus Global (an “Order”).","In case of any conflict between these TOS and an Order, the terms of these TOS shall take precedence. By accepting the Services, you acknowledge and agree that any different or additional terms proposed by you in an Order or otherwise are expressly rejected by Pixel Nexus Global, unless we have agreed to such terms in a written document signed by an authorized representative."]},{"title":"2. Your Obligations","subsections":[{"title":"Customer Information and Account Responsibilities","paragraphs":["You agree to provide Pixel Nexus Global with accurate information when creating your account, throughout our business relationship, and in all correspondence with us. We may occasionally need to contact you via email or telephone regarding the Services. You agree to maintain a valid email address that you check daily and to promptly notify us of any changes to your contact information.","Pixel Nexus Global shall not be responsible for any service interruptions, damages, or consequences resulting from misdirected communications due to your failure to provide current contact details. You also agree to complete all data entitlement surveys within the platform completely and truthfully to maintain compliance with exchange regulations."]},{"title":"Permitted Use of Platform","paragraphs":["Your use of the Platform must comply with these TOS and any accompanying documentation we provide. If you permit third parties to access the Platform, you agree to: (i) restrict their use in accordance with these terms; (ii) ensure their compliance with these TOS and our Privacy Policy; and (iii) remain fully liable for any violations of these TOS or the Privacy Policy by such third parties."]},{"title":"Intellectual Property and Legal Compliance","paragraphs":["You agree not to alter, obscure, or remove any trademark or proprietary notices. You may only use the Platform in accordance with: (i) the laws governing these TOS; and (ii) all applicable laws in your jurisdiction.","Unauthorized use is strictly prohibited."]}]},{"title":"3. Term","subsections":[{"title":"Effective Date and Term Duration","paragraphs":["These Terms of Service (TOS) become effective (\\"Effective Date\\") on the earlier of: (i) the date you click \\"I accept\\" as recorded by our servers; or (ii) the date you first access or use the Platform.","These TOS remain in effect for the duration of any active Order."]},{"title":"Subscription Terms and Renewals","paragraphs":["The Services will automatically renew for successive periods (monthly, quarterly, or annually) as specified in your Order. If unspecified, the default initial subscription period (\\"Initial Term\\") is one month. Subsequent renewal periods (\\"Renewal Terms\\") will match the Initial Term’s duration."]},{"title":"Trial Period Terms","paragraphs":["Pixel Nexus Global may offer trial periods (paid or free) as indicated on the iccandle.ai trial signup page. During any trial period:"],"listOrdered":["All terms and conditions of this agreement apply as if you were a paid subscriber","You may cancel at any time during the trial to prevent automatic renewal","Trial terms and conditions are subject to change without notice"]},{"title":"Subscription Management Responsibility","paragraphs":["You are solely responsible for managing your subscription, including:"],"listDisc":["Monitoring renewal dates","Updating payment information","Initiating cancellations","Maintaining current contact information"],"paragraphsAfter":["Pixel Nexus Global is not responsible for any charges due to failure to manage your subscription."]}]},{"title":"4. Termination","subsections":[{"title":"Cancellation and Termination Policy","paragraphs":["Details about cancellation and refund policies are available on our Refund and Cancellation Policy page at iccandle.ai. Terminating your account disables automatic renewals but does not cancel past invoices or make prior payments refundable unless stated otherwise in our Refund and Cancellation Policy.","Any currently due invoices must be paid in full to settle your account. Your access to Pixel Nexus Global services will continue until the expiration of your prepaid period or trial term."]},{"title":"Termination for Convenience","paragraphs":["Either party may terminate any Order by providing written notice at least one (1) day before the expiration of the Initial Term or any Renewal Term. For purposes of this provision, “written notice” includes communication through email, live chat, telephone, or via the Online Portal, indicating a desire not to continue service with Pixel Nexus Global in the future."]},{"title":"Termination for Policy Violations","paragraphs":["Pixel Nexus Global reserve the right to immediately suspend Services and/or terminate any Order in cases of violation of these TOS, breach of our Privacy Policy, or use of Services in a manner contrary to law or generally accepted internet standards. Such termination may occur without prior notice, dispute resolution process, or refund of any fees."]},{"title":"Effect of Termination","paragraphs":["The expiration or termination of any Order does not affect any rights or obligations that either (i) came into effect upon or after such expiration/termination, or (ii) survive the termination and were incurred by the parties prior to termination. Upon termination, you must promptly settle any outstanding balance. Pixel Nexus Global is not obligated to return any paid fees for terminations occurring prior to completion of a full term, except as may be expressly provided in our Refund and Cancellation Policy.","All termination matters are governed by the complete terms set forth in this agreement, and Pixel Nexus Global maintains full discretion in enforcing these provisions."]}]},{"title":"5. License Grant and Restrictions","paragraphs":["Pixel Nexus Global grants you a limited, revocable, non-exclusive, non-transferable, worldwide license to utilize our proprietary technology (\\"Pixel Nexus Technology\\") solely for accessing and employing our analytical engines as part of the Services, including any generated reports (\\"Reports\\"). This license is restricted to your account's registered users and automatically terminates upon expiration or termination of these TOS.","No rights beyond this limited license are conferred. All ownership rights in the Pixel Nexus Technology remain exclusively with Pixel Nexus Global or its licensors. You are expressly prohibited from: transferring, leasing, lending, sublicensing, reselling, or distributing the technology; using it for timesharing or service bureau purposes; or permitting unauthorized third-party access. You may not circumvent any protective measures safeguarding our proprietary interests, nor modify, reproduce, decompile, reverse engineer, or create derivative works from the Pixel Nexus Technology or Platform components. Upon termination, you must immediately cease using and permanently delete all Pixel Nexus Technology in your possession, ensuring any third parties with access do likewise."],"subsections":[{"title":"Ownership Rights","paragraphs":["Pixel Nexus Global retains all rights, title, and interest in the Pixel Nexus Technology and Platform, including but not limited to all derivative works, improvements, enhancements, and associated intellectual property rights such as trademarks and copyrights."]},{"title":"Feedback Provisions","paragraphs":["You may voluntarily provide, or we may solicit, input regarding the Platform or Services (\\"Feedback\\"), including suggestions for modifications or improvements. You acknowledge such Feedback constitutes Pixel Nexus Global's confidential proprietary information and irrevocably assign all related rights and interests to us. Pixel Nexus Global may utilize Feedback for any purpose without limitation or compensation obligation. This assignment applies globally and survives termination of these TOS.","All rights not expressly granted herein are reserved by Pixel Nexus Global. Any unauthorized use constitutes breach of these TOS and may result in immediate termination of your access rights."]}]},{"title":"6. Data Usage and Intellectual Property Rights","paragraphs":["Pixel Nexus Global may utilize information you provide or data collected from your use of the Platform and Services (\\"Operational Information\\") to deliver technical support and facilitate the implementation, operation, and administration of the Services. By using our Services, you grant us a perpetual, irrevocable license to process and analyze this Operational Information. We may combine this data with aggregate information from our general business operations to enhance existing Services or develop new products and offerings.","Pixel Nexus Global shall retain exclusive ownership of all intellectual property derived from such analysis and improvements. You hereby irrevocably waive any potential rights to this intellectual property and assign all rights, title, and interest therein to Pixel Nexus Global. You further agree to provide reasonable cooperation in securing and protecting these rights. We reserve the right to commercialize this Operational Information through sale, monetization, or incorporation into other products and services, without obligation to compensate you or grant you any ownership interest.","This license shall terminate upon expiration or cancellation of these Terms of Service, except with respect to historical data that has been aggregated and anonymized such that it cannot be identified as originating from your organization. Pixel Nexus Global may retain and continue to use such anonymized, aggregated data indefinitely for any lawful business purpose.","All intellectual property rights not expressly granted herein remain the exclusive property of Pixel Nexus Global. Your continued use of the Services constitutes acceptance of these terms regarding data usage and intellectual property rights."]},{"title":"7. Accuracy of Information Disclaimer","paragraphs":["Pixel Nexus Global relies on third-party data feeds to power its platform and therefore cannot guarantee the absolute accuracy of the information displayed. Different features within our system (such as scanners, automated analysis tools, charting functions, and back testing capabilities) may utilize separate data providers, which can result in variances between datasets across different platform features. Users should always verify analysis results and scanner conditions to ensure data consistency.","The platform's analytical outputs are inherently dependent on the quality of underlying third-party data, and Pixel Nexus Global makes no representations or warranties regarding the accuracy of these analyses. The iccandle.ai website, Services, and Platform are designed solely for informational and research purposes - they should never serve as the sole basis for investment decisions. Pixel Nexus Global disclaims all liability for any financial losses resulting from reliance on potentially inaccurate data or analysis within the Platform.","The Pixel Nexus Global system is provided strictly on an \\"as-is\\" basis without guarantees or warranties of any kind, as its functionality depends on unverified third- party data sources. The platform is intended exclusively for educational, entertainment, and general informational use - not as professional financial advice or a substitute for independent investment research. Users assume all risk associated with interpreting and acting upon any information displayed within the system.","By accessing and using the Platform, you acknowledge these inherent limitations and agree that Pixel Nexus Global shall not be held responsible for any consequences arising from data inaccuracies, analysis errors, or investment decisions made based on platform content."]},{"title":"8. Disclaimer of Investment Advice and Platform Limitations","paragraphs":["The analytical tools and outputs provided by Pixel Nexus Global's iccandle.ai platform are strictly for informational and research purposes only and should not be construed as investment advice. The platform relies on third-party data sources that may contain inaccuracies, and different features may produce varying results due to separate data providers. All analysis, including results from our Pattern Selector, Pattern Tracker, and News Impact Intelligence, is provided \\"AS-IS\\" without any guarantees of accuracy. These tools demonstrate historical patterns, probabilities, and market behavior under past conditions and cannot predict future results, as actual market outcomes may differ due to liquidity, execution, and other variables. You must never rely solely on platform analysis when making investment decisions."]},{"title":"9. Risk Acknowledgement and User Responsibility","paragraphs":["By using Pixel Nexus Global's platform (iccandle.ai), you expressly acknowledge and accept full responsibility for all risks associated with any investment decisions made based on information or analysis obtained from our Platform. You understand that our services rely on third-party data sources that may contain inaccuracies, and that our analytical models employ mathematical formulas and sequences that have not been independently verified for predictive accuracy. Pixel Nexus Global cannot and does not guarantee the reliability of any market data, technical indicators, or analytical outputs generated by the Platform.","Prior to executing any trades, you agree to either: (i) consult with a qualified, licensed financial professional; or (ii) conduct comprehensive independent research using multiple verified information sources.","Pixel Nexus Global expressly disclaims all liability for any trading losses, missed opportunities, or other financial consequences resulting from your reliance on Platform content. By continuing to use iccandle.ai, you confirm your understanding that our tools are designed for informational purposes only and that you alone bear complete responsibility for all investment choices and outcomes. This warning constitutes an essential term of our agreement, and your use of the Platform signifies your unconditional acceptance of these risk disclosures."]},{"title":"10. Disclaimer of Warranties and Service Limitations","paragraphs":["The Pixel Nexus Global platform (iccandle.ai), including all Services, scripts, reports, analytical engines, and related technology, is provided strictly on an \\"AS-IS\\" and \\"AS- AVAILABLE\\" basis. Pixel Nexus Global makes no representations or warranties of any kind, whether express or implied. This includes, but is not limited to, all implied warranties of non-infringement, merchantability, fitness for a particular purpose, accuracy, quality, or achievement of specific results. No warranties arise from any course of dealing, performance, or trade usage.","Pixel Nexus Global does not guarantee that the Service will meet your requirements, operate without interruption, remain error-free, or be secure from viruses or other harmful components. Compatibility with all websites or browsers is not assured, and Pixel Nexus Global disclaims all liability for issues arising from browser incompatibility or third-party services, even if such services appear integrated with our Platform. Any data transmitted via our Services remains your sole responsibility, and Pixel Nexus Global expressly disclaims liability for such content. No warranties provided by third- party vendors to Pixel Nexus Global extend to you, and you are not a third-party beneficiary of such agreements."],"subsections":[{"title":"Alert Features and Beta Functionality","paragraphs":["The Platform includes alert features (e.g., \\"Dynamic Price Alerts\\" and \\"Multi-Factor Alerts\\"), which are provided without warranty or guarantee of reliability. Technical delays or failures may occur due to cellular networks, email services, system errors, or other factors. You acknowledge that alerts may not function as intended and agree that Pixel Nexus Global bears no liability for trading losses resulting from reliance on these features, regardless of whether they were used correctly.","Certain features labeled as 'Beta' are under active development and may exhibit unstable or unreliable performance, including inconsistent data or incorrect information due to software bugs or programming errors. These Beta features carry additional risks and should be used with extreme caution."]},{"title":"General Provisions","paragraphs":["This warranty disclaimer applies to all oral or written information provided by Pixel Nexus Global, its employees, affiliates, or third-party vendors. You may not rely on any such statements or representations.","Some jurisdictions may not permit the exclusion of certain warranties. If applicable to you, any warranty claim must be filed within ninety (90) days of the Service provision that gave rise to the claim. Failure to submit a claim within this period constitutes an irrevocable waiver of your right to pursue such claims thereafter.","Third-party websites linked through the Pixel Nexus Global platform are not under our control, and we assume no responsibility for their content or functionality. Accessing these external sites is entirely at your own risk. Such links are provided for convenience only and do not constitute an endorsement or recommendation by Pixel Nexus Global.","By using the Platform, you acknowledge and accept these limitations and disclaimers in full."]}]},{"title":"11. Limitation of Liability","paragraphs":["Pixel Nexus Global's total liability under this Agreement shall not exceed the aggregate fees actually paid by you to Pixel Nexus Global during the one (1) month period immediately preceding the event giving rise to such liability. For purposes of this limitation, \\"Pixel Nexus Global\\" includes its employees, agents, owners, directors, officers, affiliates, and any third-party service providers facilitating the Services.","To the maximum extent permitted by law, you agree that under no circumstances - including negligence - shall Pixel Nexus Global or its licensors, agents, employees, officers, or third-party vendors be liable for any indirect, incidental, special, consequential, or punitive damages. This exclusion applies to, but is not limited to, damages for:"],"listOrdered":["Lost profits or revenue","Business interruption","Data loss or corruption","Lost savings","Any other financial losses incurred by you, end users, or third parties"],"paragraphsAfter":["These limitations apply regardless of whether the action arises in contract, tort (including negligence), or any other legal theory, and shall remain in effect even if Pixel Nexus Global has been advised of the possibility of such damages. While some jurisdictions may not allow limitations on certain liabilities, you agree that, where such restrictions apply, Pixel Nexus Global's liability shall be limited to the maximum extent permitted by applicable law.","This limitation of liability constitutes an essential basis of the bargain between you and Pixel Nexus Global and shall survive termination of this Agreement. By using the Services, you acknowledge that these limitations are reasonable and reflect the risk allocation between both parties."]},{"title":"12. Notices","paragraphs":["All official notices will be sent to your account’s listed contact information. You are responsible for maintaining current and accurate contact details in our records at all times.","For most inquiries, including technical support and billing matters, please visit our website at www.iccandle.ai for contact information and support options.","However, any legal notices regarding these Terms of Service or other Pixel Nexus Global policies must be sent exclusively via postal mail to our designated address:"],"address":{"company":"Pixel Nexus Global PTE. LTD.","lines":["160 Robinson Road, #14-04","Singapore Business Federation Center","Singapore 068914"]}},{"title":"13. Force Majeure","paragraphs":["Neither party shall be liable for any failure or delay in performance (except for payment obligations) due to events beyond their reasonable control, including, but not limited to, acts of God, natural disasters, war, civil unrest, epidemics, labor disputes, utility failures, telecommunication outages, supply chain disruptions, government actions, or other unforeseeable catastrophic events; provided that: (i) the affected party notifies the other in writing within ten (10) days of the event’s commencement; (ii) all payment obligations remain unaffected; (iii) the time for performance shall be extended day-for-day to match the duration of the disruption; and (iv) both parties use commercially reasonable efforts to mitigate the impact.","It is understood that this clause does not permit termination of the Agreement solely due to force majeure conditions, nor does it extend the Agreement term beyond its original expiration date without mutual written agreement."]},{"title":"14. No Waiver","paragraphs":["No failure or delay by Pixel Nexus Global in exercising any right under these Terms shall operate as a waiver of that right, nor shall any single or partial exercise of any right preclude the further or full exercise of that right or any other right under these Terms."]},{"title":"15. Assignment","paragraphs":["Pixel Nexus Global may assign these Terms, or any rights hereunder, without your consent. You may not assign these Terms without our prior written approval. These Terms shall be binding upon, and inure to the benefit of, the parties' respective successors and permitted assigns."]},{"title":"16. Severability","paragraphs":["If any provision of these Terms is held to be invalid or unenforceable by a court of competent jurisdiction, that provision shall be modified to the minimum extent necessary to make it valid and enforceable while preserving its original intent. All other provisions shall remain in full force and effect."]},{"title":"17. No Agency","paragraphs":["Nothing in these Terms creates an agency, partnership, joint venture or employment relationship between the parties. Neither party has authority to bind the other or incur obligations on the other's behalf."]},{"title":"18. Privacy & Conflicts","paragraphs":["Our Privacy Policy is incorporated herein by reference. In the event of a conflict between agreements: (i) these Terms prevail over the Privacy Policy; (ii) any separate service agreement shall prevail over conflicting provisions of these Terms, but only with respect to those specific provisions; and (iii) in all other cases, these Terms shall govern."]},{"title":"19. Jurisdiction and Disclaimer","paragraphs":["The services and information provided on iccandle.ai are not intended for use in jurisdictions where such services would be contrary to local laws or regulations. Access to and use of this website are strictly prohibited for citizens of the following jurisdictions: United States of America, Canada, Russian Federation, Iran, North Korea, Myanmar, Syria, Cuba, Crimea, Donetsk, and Luhansk regions of Ukraine, Afghanistan, Belarus, and Venezuela. This list may be updated at any time without prior notice. Users are solely responsible for ensuring that their access to and use of this website comply with all applicable laws and regulations in their country. iccandle.ai accepts no responsibility or liability for any non-compliance by users with their local regulatory requirements and reserves the right to restrict, block, or terminate access at its sole discretion."]}],"content":"Terms of Service, TOS, Terms, Conditions, Disclaimers, Contract, Agreement\\nThis agreement is made between Pixel Nexus Global, a Singaporean Limited Liability company operating as www.iccandle.ai (“Pixel Nexus Global,” “we,” “us,” or “our”), and the individual or entity purchasing or utilizing services offered through the Platform (“Customer,” “you,” or “your”). If you are acquiring the Services on behalf of a third party, you confirm that you have the legal authority to bind that party to these Terms of Service and will be liable for their use of the Services.\\n\\nBy accessing the Platform and Services outlined in this document and promoted on www.iccandle.ai, or by subscribing to services via the iccandle.ai website, you acknowledge that you have read, understood, and agreed to these Terms, Conditions, and Disclaimers. You further agree that your relationship with us is governed by the provisions set forth in this TOS. If you do not accept these terms, you must discontinue all use of iccandle.ai and any associated services or Platforms immediately.\\n\\n1. The Services\\nPixel Nexus Global will provide active customers in good standing with access to its AI-powered analytical tool (the “Platform”). As used in this Agreement, the term “Services” refers to Pixel Nexus Global’s provision of your access to the Platform. The Services will be provided to you under one or more subscriptions, account activations, sign-ups, or orders placed by you on the iccandle.ai website and accepted by Pixel Nexus Global (an “Order”).\\n\\nIn case of any conflict between these TOS and an Order, the terms of these TOS shall take precedence. By accepting the Services, you acknowledge and agree that any different or additional terms proposed by you in an Order or otherwise are expressly rejected by Pixel Nexus Global, unless we have agreed to such terms in a written document signed by an authorized representative.\\n\\n2. Your Obligations\\nCustomer Information and Account Responsibilities\\nYou agree to provide Pixel Nexus Global with accurate information when creating your account, throughout our business relationship, and in all correspondence with us. We may occasionally need to contact you via email or telephone regarding the Services. You agree to maintain a valid email address that you check daily and to promptly notify us of any changes to your contact information.\\n\\nPixel Nexus Global shall not be responsible for any service interruptions, damages, or consequences resulting from misdirected communications due to your failure to provide current contact details. You also agree to complete all data entitlement surveys within the platform completely and truthfully to maintain compliance with exchange regulations.\\n\\nPermitted Use of Platform\\nYour use of the Platform must comply with these TOS and any accompanying documentation we provide. If you permit third parties to access the Platform, you agree to: (i) restrict their use in accordance with these terms; (ii) ensure their compliance with these TOS and our Privacy Policy; and (iii) remain fully liable for any violations of these TOS or the Privacy Policy by such third parties.\\n\\nIntellectual Property and Legal Compliance\\nYou agree not to alter, obscure, or remove any trademark or proprietary notices. You may only use the Platform in accordance with: (i) the laws governing these TOS; and (ii) all applicable laws in your jurisdiction.\\n\\nUnauthorized use is strictly prohibited.\\n\\n3. Term\\nEffective Date and Term Duration\\nThese Terms of Service (TOS) become effective (\\"Effective Date\\") on the earlier of: (i) the date you click \\"I accept\\" as recorded by our servers; or (ii) the date you first access or use the Platform.\\n\\nThese TOS remain in effect for the duration of any active Order.\\n\\nSubscription Terms and Renewals\\nThe Services will automatically renew for successive periods (monthly, quarterly, or annually) as specified in your Order. If unspecified, the default initial subscription period (\\"Initial Term\\") is one month. Subsequent renewal periods (\\"Renewal Terms\\") will match the Initial Term’s duration.\\n\\nTrial Period Terms\\nPixel Nexus Global may offer trial periods (paid or free) as indicated on the iccandle.ai trial signup page. During any trial period:\\n\\nAll terms and conditions of this agreement apply as if you were a paid subscriber\\nYou may cancel at any time during the trial to prevent automatic renewal\\nTrial terms and conditions are subject to change without notice\\nSubscription Management Responsibility\\nYou are solely responsible for managing your subscription, including:\\n\\nMonitoring renewal dates\\nUpdating payment information\\nInitiating cancellations\\nMaintaining current contact information\\nPixel Nexus Global is not responsible for any charges due to failure to manage your subscription.\\n\\n4. Termination\\nCancellation and Termination Policy\\nDetails about cancellation and refund policies are available on our Refund and Cancellation Policy page at iccandle.ai. Terminating your account disables automatic renewals but does not cancel past invoices or make prior payments refundable unless stated otherwise in our Refund and Cancellation Policy.\\n\\nAny currently due invoices must be paid in full to settle your account. Your access to Pixel Nexus Global services will continue until the expiration of your prepaid period or trial term.\\n\\nTermination for Convenience\\nEither party may terminate any Order by providing written notice at least one (1) day before the expiration of the Initial Term or any Renewal Term. For purposes of this provision, “written notice” includes communication through email, live chat, telephone, or via the Online Portal, indicating a desire not to continue service with Pixel Nexus Global in the future.\\n\\nTermination for Policy Violations\\nPixel Nexus Global reserve the right to immediately suspend Services and/or terminate any Order in cases of violation of these TOS, breach of our Privacy Policy, or use of Services in a manner contrary to law or generally accepted internet standards. Such termination may occur without prior notice, dispute resolution process, or refund of any fees.\\n\\nEffect of Termination\\nThe expiration or termination of any Order does not affect any rights or obligations that either (i) came into effect upon or after such expiration/termination, or (ii) survive the termination and were incurred by the parties prior to termination. Upon termination, you must promptly settle any outstanding balance. Pixel Nexus Global is not obligated to return any paid fees for terminations occurring prior to completion of a full term, except as may be expressly provided in our Refund and Cancellation Policy.\\n\\nAll termination matters are governed by the complete terms set forth in this agreement, and Pixel Nexus Global maintains full discretion in enforcing these provisions.\\n\\n5. License Grant and Restrictions\\nPixel Nexus Global grants you a limited, revocable, non-exclusive, non-transferable, worldwide license to utilize our proprietary technology (\\"Pixel Nexus Technology\\") solely for accessing and employing our analytical engines as part of the Services, including any generated reports (\\"Reports\\"). This license is restricted to your account's registered users and automatically terminates upon expiration or termination of these TOS.\\n\\nNo rights beyond this limited license are conferred. All ownership rights in the Pixel Nexus Technology remain exclusively with Pixel Nexus Global or its licensors. You are expressly prohibited from: transferring, leasing, lending, sublicensing, reselling, or distributing the technology; using it for timesharing or service bureau purposes; or permitting unauthorized third-party access. You may not circumvent any protective measures safeguarding our proprietary interests, nor modify, reproduce, decompile, reverse engineer, or create derivative works from the Pixel Nexus Technology or Platform components. Upon termination, you must immediately cease using and permanently delete all Pixel Nexus Technology in your possession, ensuring any third parties with access do likewise.\\n\\nOwnership Rights\\nPixel Nexus Global retains all rights, title, and interest in the Pixel Nexus Technology and Platform, including but not limited to all derivative works, improvements, enhancements, and associated intellectual property rights such as trademarks and copyrights.\\n\\nFeedback Provisions\\nYou may voluntarily provide, or we may solicit, input regarding the Platform or Services (\\"Feedback\\"), including suggestions for modifications or improvements. You acknowledge such Feedback constitutes Pixel Nexus Global's confidential proprietary information and irrevocably assign all related rights and interests to us. Pixel Nexus Global may utilize Feedback for any purpose without limitation or compensation obligation. This assignment applies globally and survives termination of these TOS.\\n\\nAll rights not expressly granted herein are reserved by Pixel Nexus Global. Any unauthorized use constitutes breach of these TOS and may result in immediate termination of your access rights.\\n\\n6. Data Usage and Intellectual Property Rights\\nPixel Nexus Global may utilize information you provide or data collected from your use of the Platform and Services (\\"Operational Information\\") to deliver technical support and facilitate the implementation, operation, and administration of the Services. By using our Services, you grant us a perpetual, irrevocable license to process and analyze this Operational Information. We may combine this data with aggregate information from our general business operations to enhance existing Services or develop new products and offerings.\\n\\nPixel Nexus Global shall retain exclusive ownership of all intellectual property derived from such analysis and improvements. You hereby irrevocably waive any potential rights to this intellectual property and assign all rights, title, and interest therein to Pixel Nexus Global. You further agree to provide reasonable cooperation in securing and protecting these rights. We reserve the right to commercialize this Operational Information through sale, monetization, or incorporation into other products and services, without obligation to compensate you or grant you any ownership interest.\\n\\nThis license shall terminate upon expiration or cancellation of these Terms of Service, except with respect to historical data that has been aggregated and anonymized such that it cannot be identified as originating from your organization. Pixel Nexus Global may retain and continue to use such anonymized, aggregated data indefinitely for any lawful business purpose.\\n\\nAll intellectual property rights not expressly granted herein remain the exclusive property of Pixel Nexus Global. Your continued use of the Services constitutes acceptance of these terms regarding data usage and intellectual property rights.\\n\\n7. Accuracy of Information Disclaimer\\nPixel Nexus Global relies on third-party data feeds to power its platform and therefore cannot guarantee the absolute accuracy of the information displayed. Different features within our system (such as scanners, automated analysis tools, charting functions, and back testing capabilities) may utilize separate data providers, which can result in variances between datasets across different platform features. Users should always verify analysis results and scanner conditions to ensure data consistency.\\n\\nThe platform's analytical outputs are inherently dependent on the quality of underlying third-party data, and Pixel Nexus Global makes no representations or warranties regarding the accuracy of these analyses. The iccandle.ai website, Services, and Platform are designed solely for informational and research purposes - they should never serve as the sole basis for investment decisions. Pixel Nexus Global disclaims all liability for any financial losses resulting from reliance on potentially inaccurate data or analysis within the Platform.\\n\\nThe Pixel Nexus Global system is provided strictly on an \\"as-is\\" basis without guarantees or warranties of any kind, as its functionality depends on unverified third- party data sources. The platform is intended exclusively for educational, entertainment, and general informational use - not as professional financial advice or a substitute for independent investment research. Users assume all risk associated with interpreting and acting upon any information displayed within the system.\\n\\nBy accessing and using the Platform, you acknowledge these inherent limitations and agree that Pixel Nexus Global shall not be held responsible for any consequences arising from data inaccuracies, analysis errors, or investment decisions made based on platform content.\\n\\n8. Disclaimer of Investment Advice and Platform Limitations\\nThe analytical tools and outputs provided by Pixel Nexus Global's iccandle.ai platform are strictly for informational and research purposes only and should not be construed as investment advice. The platform relies on third-party data sources that may contain inaccuracies, and different features may produce varying results due to separate data providers. All analysis, including results from our Pattern Selector, Pattern Tracker, and News Impact Intelligence, is provided \\"AS-IS\\" without any guarantees of accuracy. These tools demonstrate historical patterns, probabilities, and market behavior under past conditions and cannot predict future results, as actual market outcomes may differ due to liquidity, execution, and other variables. You must never rely solely on platform analysis when making investment decisions.\\n\\n9. Risk Acknowledgement and User Responsibility\\nBy using Pixel Nexus Global's platform (iccandle.ai), you expressly acknowledge and accept full responsibility for all risks associated with any investment decisions made based on information or analysis obtained from our Platform. You understand that our services rely on third-party data sources that may contain inaccuracies, and that our analytical models employ mathematical formulas and sequences that have not been independently verified for predictive accuracy. Pixel Nexus Global cannot and does not guarantee the reliability of any market data, technical indicators, or analytical outputs generated by the Platform.\\n\\nPrior to executing any trades, you agree to either: (i) consult with a qualified, licensed financial professional; or (ii) conduct comprehensive independent research using multiple verified information sources.\\n\\nPixel Nexus Global expressly disclaims all liability for any trading losses, missed opportunities, or other financial consequences resulting from your reliance on Platform content. By continuing to use iccandle.ai, you confirm your understanding that our tools are designed for informational purposes only and that you alone bear complete responsibility for all investment choices and outcomes. This warning constitutes an essential term of our agreement, and your use of the Platform signifies your unconditional acceptance of these risk disclosures.\\n\\n10. Disclaimer of Warranties and Service Limitations\\nThe Pixel Nexus Global platform (iccandle.ai), including all Services, scripts, reports, analytical engines, and related technology, is provided strictly on an \\"AS-IS\\" and \\"AS- AVAILABLE\\" basis. Pixel Nexus Global makes no representations or warranties of any kind, whether express or implied. This includes, but is not limited to, all implied warranties of non-infringement, merchantability, fitness for a particular purpose, accuracy, quality, or achievement of specific results. No warranties arise from any course of dealing, performance, or trade usage.\\n\\nPixel Nexus Global does not guarantee that the Service will meet your requirements, operate without interruption, remain error-free, or be secure from viruses or other harmful components. Compatibility with all websites or browsers is not assured, and Pixel Nexus Global disclaims all liability for issues arising from browser incompatibility or third-party services, even if such services appear integrated with our Platform. Any data transmitted via our Services remains your sole responsibility, and Pixel Nexus Global expressly disclaims liability for such content. No warranties provided by third- party vendors to Pixel Nexus Global extend to you, and you are not a third-party beneficiary of such agreements.\\n\\nAlert Features and Beta Functionality\\nThe Platform includes alert features (e.g., \\"Dynamic Price Alerts\\" and \\"Multi-Factor Alerts\\"), which are provided without warranty or guarantee of reliability. Technical delays or failures may occur due to cellular networks, email services, system errors, or other factors. You acknowledge that alerts may not function as intended and agree that Pixel Nexus Global bears no liability for trading losses resulting from reliance on these features, regardless of whether they were used correctly.\\n\\nCertain features labeled as 'Beta' are under active development and may exhibit unstable or unreliable performance, including inconsistent data or incorrect information due to software bugs or programming errors. These Beta features carry additional risks and should be used with extreme caution.\\n\\nGeneral Provisions\\nThis warranty disclaimer applies to all oral or written information provided by Pixel Nexus Global, its employees, affiliates, or third-party vendors. You may not rely on any such statements or representations.\\n\\nSome jurisdictions may not permit the exclusion of certain warranties. If applicable to you, any warranty claim must be filed within ninety (90) days of the Service provision that gave rise to the claim. Failure to submit a claim within this period constitutes an irrevocable waiver of your right to pursue such claims thereafter.\\n\\nThird-party websites linked through the Pixel Nexus Global platform are not under our control, and we assume no responsibility for their content or functionality. Accessing these external sites is entirely at your own risk. Such links are provided for convenience only and do not constitute an endorsement or recommendation by Pixel Nexus Global.\\n\\nBy using the Platform, you acknowledge and accept these limitations and disclaimers in full.\\n\\n11. Limitation of Liability\\nPixel Nexus Global's total liability under this Agreement shall not exceed the aggregate fees actually paid by you to Pixel Nexus Global during the one (1) month period immediately preceding the event giving rise to such liability. For purposes of this limitation, \\"Pixel Nexus Global\\" includes its employees, agents, owners, directors, officers, affiliates, and any third-party service providers facilitating the Services.\\n\\nTo the maximum extent permitted by law, you agree that under no circumstances - including negligence - shall Pixel Nexus Global or its licensors, agents, employees, officers, or third-party vendors be liable for any indirect, incidental, special, consequential, or punitive damages. This exclusion applies to, but is not limited to, damages for:\\n\\nLost profits or revenue\\nBusiness interruption\\nData loss or corruption\\nLost savings\\nAny other financial losses incurred by you, end users, or third parties\\nThese limitations apply regardless of whether the action arises in contract, tort (including negligence), or any other legal theory, and shall remain in effect even if Pixel Nexus Global has been advised of the possibility of such damages. While some jurisdictions may not allow limitations on certain liabilities, you agree that, where such restrictions apply, Pixel Nexus Global's liability shall be limited to the maximum extent permitted by applicable law.\\n\\nThis limitation of liability constitutes an essential basis of the bargain between you and Pixel Nexus Global and shall survive termination of this Agreement. By using the Services, you acknowledge that these limitations are reasonable and reflect the risk allocation between both parties.\\n\\n12. Notices\\nAll official notices will be sent to your account’s listed contact information. You are responsible for maintaining current and accurate contact details in our records at all times.\\n\\nFor most inquiries, including technical support and billing matters, please visit our website at www.iccandle.ai for contact information and support options.\\n\\nHowever, any legal notices regarding these Terms of Service or other Pixel Nexus Global policies must be sent exclusively via postal mail to our designated address:\\n\\nPixel Nexus Global PTE. LTD.\\n160 Robinson Road, #14-04\\n\\nSingapore Business Federation Center\\n\\nSingapore 068914\\n\\n13. Force Majeure\\nNeither party shall be liable for any failure or delay in performance (except for payment obligations) due to events beyond their reasonable control, including, but not limited to, acts of God, natural disasters, war, civil unrest, epidemics, labor disputes, utility failures, telecommunication outages, supply chain disruptions, government actions, or other unforeseeable catastrophic events; provided that: (i) the affected party notifies the other in writing within ten (10) days of the event’s commencement; (ii) all payment obligations remain unaffected; (iii) the time for performance shall be extended day-for-day to match the duration of the disruption; and (iv) both parties use commercially reasonable efforts to mitigate the impact.\\n\\nIt is understood that this clause does not permit termination of the Agreement solely due to force majeure conditions, nor does it extend the Agreement term beyond its original expiration date without mutual written agreement.\\n\\n14. No Waiver\\nNo failure or delay by Pixel Nexus Global in exercising any right under these Terms shall operate as a waiver of that right, nor shall any single or partial exercise of any right preclude the further or full exercise of that right or any other right under these Terms.\\n\\n15. Assignment\\nPixel Nexus Global may assign these Terms, or any rights hereunder, without your consent. You may not assign these Terms without our prior written approval. These Terms shall be binding upon, and inure to the benefit of, the parties' respective successors and permitted assigns.\\n\\n16. Severability\\nIf any provision of these Terms is held to be invalid or unenforceable by a court of competent jurisdiction, that provision shall be modified to the minimum extent necessary to make it valid and enforceable while preserving its original intent. All other provisions shall remain in full force and effect.\\n\\n17. No Agency\\nNothing in these Terms creates an agency, partnership, joint venture or employment relationship between the parties. Neither party has authority to bind the other or incur obligations on the other's behalf.\\n\\n18. Privacy & Conflicts\\nOur Privacy Policy is incorporated herein by reference. In the event of a conflict between agreements: (i) these Terms prevail over the Privacy Policy; (ii) any separate service agreement shall prevail over conflicting provisions of these Terms, but only with respect to those specific provisions; and (iii) in all other cases, these Terms shall govern.\\n\\n19. Jurisdiction and Disclaimer\\nThe services and information provided on iccandle.ai are not intended for use in jurisdictions where such services would be contrary to local laws or regulations. Access to and use of this website are strictly prohibited for citizens of the following jurisdictions: United States of America, Canada, Russian Federation, Iran, North Korea, Myanmar, Syria, Cuba, Crimea, Donetsk, and Luhansk regions of Ukraine, Afghanistan, Belarus, and Venezuela. This list may be updated at any time without prior notice. Users are solely responsible for ensuring that their access to and use of this website comply with all applicable laws and regulations in their country. iccandle.ai accepts no responsibility or liability for any non-compliance by users with their local regulatory requirements and reserves the right to restrict, block, or terminate access at its sole discretion."},"Refund":{"title":"Refund and Cancellation Policy","intro":"This Refund and Cancellation Policy (\\"Policy\\") governs refund and cancellation terms for services provided by Pixel Nexus Global Pte. Ltd. (\\"we,\\" \\"us,\\" \\"our\\") through the iccandle.ai platform (\\"Services\\"). This Policy is incorporated by reference into our Terms of Service and should be read in conjunction with those Terms.","sections":[{"title":"1. Definitions","definitions":[{"term":"Subscription","text":"A recurring paid access to the Services for a specified period (e.g., monthly or annually)."},{"term":"Billing Period","text":"The recurring time interval for which a Subscription fee is charged."},{"term":"Subscription Change","text":"Any upgrade or downgrade to a different Subscription plan."}]},{"title":"2. Cancellation Terms","subsections":[{"title":"Subscription Cancellation","listDisc":["You may cancel your Subscription at any time through your account dashboard or by contacting support.","Cancellation will take effect at the end of the current billing period; you will retain access to the Services through the end of that period.","Cancelling your Subscription does not automatically entitle you to a refund of fees already paid."]}]},{"title":"3. Refund Terms","subsections":[{"title":"3.1 General Rule","paragraphs":["Except as expressly provided in this Policy or required by applicable law, all fees paid for Subscriptions are non‑refundable once charged."]},{"title":"3.2 Refund Eligibility","paragraphs":["We may issue a refund at our sole discretion only in limited circumstances, including but not limited to:"],"listDisc":["Duplicate payments (verified duplicate charges will be refunded).","Technical errors that demonstrably prevented access to Services, where the error was not caused by user actions and is verified by us.","Applicable statutory rights under consumer protection law where these rights apply and cannot be waived."],"paragraphsAfter":["Refunds, if approved, will be processed to the original payment method within a commercially reasonable timeframe determined by payment processors and banking partners."]},{"title":"3.3 No Refund for Partial Use","paragraphs":["Refunds will not be issued for:"],"listDisc":["Partial use of the Services during a billing period.","Downgrades of Subscription plans.","Change of mind or business decisions after payment.","Subscription cancellations submitted after a billing cycle has renewed."]}]},{"title":"4. Subscription Changes (Upgrade or Downgrade)","paragraphs":["We provide two options when changing your Subscription plan:"],"subsections":[{"title":"4.1 Change Now","paragraphs":["If you select \\"Change Now,\\" your new plan will take effect immediately, and the associated charge will be applied.","Please note that no refunds, credits, or prorated adjustments will be provided for any unused portion of your current plan."]},{"title":"4.2 Change on Next Billing","paragraphs":["If you choose \\"Change on Next Billing,\\" your current plan will remain active until the end of the current Billing Period.","The new plan will take effect at the start of the next Billing Period.","No refunds or credits apply to the current Billing Period."]}]},{"title":"5. Cancellation After renewal","paragraphs":["If an automatic renewal has already occurred before you submit a cancellation request: The renewal fee is non-refundable. The cancellation will apply to the next Billing Period."]},{"title":"6. Chargebacks and Disputes","paragraphs":["We maintain a strict no-tolerance policy toward unjustified chargebacks.","Initiating a chargeback or payment dispute without first contacting us to seek resolution is considered a breach of this Refund and Cancellation Policy and our Terms of Service. Such actions may result in immediate suspension or permanent termination of your account, without notice, and forfeiture of access to the Services.","We reserve the right to challenge and dispute any chargeback that we deem unauthorized, abusive, or inconsistent with this Policy. This includes providing payment processors, banks, and financial institutions with all relevant evidence, including but not limited to:"],"listDisc":["Proof of service delivery and access logs","Account activity records","Acceptance of our Terms of Service and policies","Communication history with the customer"],"paragraphsAfter":["Customers are strongly encouraged to contact our support team first to resolve any billing concerns. We are committed to addressing legitimate issues in good faith; however, chargebacks used as a substitute for cancellation or refund requests will not be tolerated."]},{"title":"7. Modification of Policy","paragraphs":["We may update this Policy from time to time. Material changes will be posted on our website or communicated via email prior to taking effect. Continued use of the Services after such updates constitutes acceptance of the revised Policy."]},{"title":"8. Contact Information","paragraphs":["For all cancellation and refund requests, please contact our support team via our help center."]}],"content":"Refund and Cancellation Policy\\nThis Refund and Cancellation Policy (“Policy”) governs refund and cancellation terms for services provided by Pixel Nexus Global Pte. Ltd. (“we,” “us,” “our”) through the iccandle.ai platform (“Services”). This Policy is incorporated by reference into our Terms of Service and should be read in conjunction with those Terms.\\n\\n1. Definitions\\nSubscription: A recurring paid access to the Services for a specified period (e.g., monthly or annually).\\n\\nBilling Period: The recurring time interval for which a Subscription fee is charged.\\n\\nSubscription Change: Any upgrade or downgrade to a different Subscription plan.\\n\\n2. Cancellation Terms\\nSubscription Cancellation\\nYou may cancel your Subscription at any time through your account dashboard or by contacting support.\\nCancellation will take effect at the end of the current billing period; you will retain access to the Services through the end of that period.\\nCancelling your Subscription does not automatically entitle you to a refund of fees already paid.\\n3. Refund Terms\\n3.1 General Rule\\nExcept as expressly provided in this Policy or required by applicable law, all fees paid for Subscriptions are non‑refundable once charged.\\n\\n3.2 Refund Eligibility\\nWe may issue a refund at our sole discretion only in limited circumstances, including but not limited to:\\n\\nDuplicate payments (verified duplicate charges will be refunded).\\nTechnical errors that demonstrably prevented access to Services, where the error was not caused by user actions and is verified by us.\\nApplicable statutory rights under consumer protection law where these rights apply and cannot be waived.\\nRefunds, if approved, will be processed to the original payment method within a commercially reasonable timeframe determined by payment processors and banking partners.\\n\\n3.3 No Refund for Partial Use\\nRefunds will not be issued for:\\n\\nPartial use of the Services during a billing period.\\nDowngrades of Subscription plans.\\nChange of mind or business decisions after payment.\\nSubscription cancellations submitted after a billing cycle has renewed.\\n4. Subscription Changes (Upgrade or Downgrade)\\nWe provide two options when changing your Subscription plan:\\n\\n4.1 Change Now\\nIf you select “Change Now,” your new plan will take effect immediately, and the associated charge will be applied.\\n\\nPlease note that no refunds, credits, or prorated adjustments will be provided for any unused portion of your current plan.\\n\\n4.2 Change on Next Billing\\nIf you choose “Change on Next Billing,” your current plan will remain active until the end of the current Billing Period.\\n\\nThe new plan will take effect at the start of the next Billing Period.\\n\\nNo refunds or credits apply to the current Billing Period.\\n\\n5. Cancellation After renewal\\nIf an automatic renewal has already occurred before you submit a cancellation request: The renewal fee is non-refundable. The cancellation will apply to the next Billing Period.\\n\\n6. Chargebacks and Disputes\\nWe maintain a strict no-tolerance policy toward unjustified chargebacks.\\n\\nInitiating a chargeback or payment dispute without first contacting us to seek resolution is considered a breach of this Refund and Cancellation Policy and our Terms of Service. Such actions may result in immediate suspension or permanent termination of your account, without notice, and forfeiture of access to the Services.\\n\\nWe reserve the right to challenge and dispute any chargeback that we deem unauthorized, abusive, or inconsistent with this Policy. This includes providing payment processors, banks, and financial institutions with all relevant evidence, including but not limited to:\\n\\nProof of service delivery and access logs\\nAccount activity records\\nAcceptance of our Terms of Service and policies\\nCommunication history with the customer\\nCustomers are strongly encouraged to contact our support team first to resolve any billing concerns. We are committed to addressing legitimate issues in good faith; however, chargebacks used as a substitute for cancellation or refund requests will not be tolerated.\\n\\n7. Modification of Policy\\nWe may update this Policy from time to time. Material changes will be posted on our website or communicated via email prior to taking effect. Continued use of the Services after such updates constitutes acceptance of the revised Policy.\\n\\n8. Contact Information\\nFor all cancellation and refund requests, please contact our support team via our help center."},"Privacy":{"title":"Privacy Policy","intro":"This Privacy Policy explains how Pixel Nexus Global Pte. Ltd. (\\"we\\", \\"us\\", or \\"our\\") collects, uses, discloses, and protects personal information when you use our website, applications, and services (collectively, the \\"Services\\").","sections":[{"title":"1. Information We Collect","paragraphs":["We collect the following information:"],"listDisc":["Email address provided when you sign up for our Services","Service usage information, including interactions with features, pages viewed, session activity, and general usage patterns, collected to improve the functionality, performance, and user experience of our Services"],"paragraphsAfter":["We do not collect, store, or process payment card details or other sensitive payment information."]},{"title":"2. Payments and Stripe","paragraphs":["All payment transactions are processed by our third-party payment service provider, Stripe.","When you make a payment, Stripe collects and processes payment-related information (such as card details, billing information, and transaction data) directly. This information is handled in accordance with Stripe’s Privacy Policy and security standards, including PCI-DSS compliance.","We only receive limited information from Stripe necessary to operate our Services, including:"],"listDisc":["Payment confirmation","Subscription status","Transaction identifiers"],"paragraphsAfter":["We do not have access to your full payment details.","You can review Stripe’s Privacy Policy here:"],"stripePrivacyUrl":"https://stripe.com/privacy"},{"title":"3. How We Use Your Information","paragraphs":["We use the email addresses we collect to:"],"listDisc":["Provide, operate, and maintain our Services","Analyze service usage and improve product functionality, performance, and user experience","Communicate with you regarding technical notices, updates, and support","Inform you about products, services, features, and events"]},{"title":"4. Information Sharing","paragraphs":["We do not sell your personal information.","We may share your information only with:"],"listDisc":["Service providers who support our operations (including hosting, analytics, and payment processing via Stripe)","Professional advisors, such as legal, accounting, or compliance consultants","Law enforcement or regulatory authorities, when required by law or to protect our legal rights"],"paragraphsAfter":["All third-party service providers are required to process personal data in accordance with applicable data protection laws."]},{"title":"5. Your Rights","paragraphs":["Depending on your location, you may have the right to:"],"listDisc":["Access your personal information","Correct or update your email address","Request deletion of your email address","Object to or restrict certain processing activities"],"paragraphsAfter":["Requests related to payment data should be directed to Stripe, as they act as the data controller for payment information."]},{"title":"6. Third-Party Policies","paragraphs":["Our Services rely on third-party providers such as Stripe. Their handling of personal data is governed by their own privacy policies, and we encourage you to review them."]},{"title":"7. Contact Us","paragraphs":["If you have any questions about this Privacy Policy or our data practices, please contact us at:","support@iccandle.ai"]}],"content":"Privacy Policy\\nThis Privacy Policy explains how Pixel Nexus Global Pte. Ltd. (“we”, “us”, or “our”) collects, uses, discloses, and protects personal information when you use our website, applications, and services (collectively, the “Services”).\\n\\n1. Information We Collect\\nWe collect the following information:\\n\\nEmail address provided when you sign up for our Services\\nService usage information, including interactions with features, pages viewed, session activity, and general usage patterns, collected to improve the functionality, performance, and user experience of our Services\\nWe do not collect, store, or process payment card details or other sensitive payment information.\\n\\n2. Payments and Stripe\\nAll payment transactions are processed by our third-party payment service provider, Stripe.\\n\\nWhen you make a payment, Stripe collects and processes payment-related information (such as card details, billing information, and transaction data) directly. This information is handled in accordance with Stripe’s Privacy Policy and security standards, including PCI-DSS compliance.\\n\\nWe only receive limited information from Stripe necessary to operate our Services, including:\\n\\nPayment confirmation\\nSubscription status\\nTransaction identifiers\\nWe do not have access to your full payment details.\\n\\nYou can review Stripe’s Privacy Policy here: https://stripe.com/privacy\\n\\n3. How We Use Your Information\\nWe use the email addresses we collect to:\\n\\nProvide, operate, and maintain our Services\\nAnalyze service usage and improve product functionality, performance, and user experience\\nCommunicate with you regarding technical notices, updates, and support\\nInform you about products, services, features, and events\\n4. Information Sharing\\nWe do not sell your personal information.\\n\\nWe may share your information only with:\\n\\nService providers who support our operations (including hosting, analytics, and payment processing via Stripe)\\nProfessional advisors, such as legal, accounting, or compliance consultants\\nLaw enforcement or regulatory authorities, when required by law or to protect our legal rights\\nAll third-party service providers are required to process personal data in accordance with applicable data protection laws.\\n\\n5. Your Rights\\nDepending on your location, you may have the right to:\\n\\nAccess your personal information\\nCorrect or update your email address\\nRequest deletion of your email address\\nObject to or restrict certain processing activities\\nRequests related to payment data should be directed to Stripe, as they act as the data controller for payment information.\\n\\n6. Third-Party Policies\\nOur Services rely on third-party providers such as Stripe. Their handling of personal data is governed by their own privacy policies, and we encourage you to review them.\\n\\n7. Contact Us\\nIf you have any questions about this Privacy Policy or our data practices, please contact us at: support@iccandle.ai"},"Cookie":{"title":"Cookie Policy","intro":["This Cookie Policy explains how Pixel Nexus Global Pte. Ltd. (\\"we\\", \\"us\\", or \\"our\\") uses cookies and similar technologies when you visit or use iccandle.ai and related services (collectively, the \\"Services\\").","This Policy should be read together with our Privacy Policy."],"sections":[{"title":"1. What Are Cookies?","paragraphs":["Cookies are small text files placed on your device when you visit a website. They are widely used to make websites work efficiently, enhance user experience, and provide information to website operators.","Cookies may be:"],"listDisc":["Session cookies (deleted when you close your browser), or","Persistent cookies (stored for a set period or until deleted)."]},{"title":"2. Types of Cookies We Use","subsections":[{"title":"2.1 Strictly Necessary Cookies","paragraphs":["These cookies are essential for the operation of our Services and cannot be switched off. They are required to:"],"listDisc":["Enable secure login and authentication","Maintain user sessions","Protect against fraud and abuse"],"paragraphsAfter":["Without these cookies, the Services cannot function properly."]},{"title":"2.2 Functional Cookies","paragraphs":["These cookies allow us to remember your preferences and settings, such as:"],"listDisc":["Language or regional preferences","Account-related selections"],"paragraphsAfter":["They improve usability but are not strictly necessary."]},{"title":"2.3 Analytics and Performance Cookies","paragraphs":["We use analytics cookies to understand how users interact with our Services. These cookies collect information such as:"],"listDisc":["Pages visited and features used","Session duration and interaction patterns","Error and performance data"],"paragraphsAfter":["This information is used solely to improve our product, functionality, and user experience. Analytics data is aggregated and does not directly identify individual users."]},{"title":"2.4 Third-Party Cookies","paragraphs":["Some cookies are placed by third-party service providers that support our Services, including:"],"listDisc":["Payment processing services (e.g., Stripe)","Analytics and infrastructure providers"],"paragraphsAfter":["These third parties may use cookies in accordance with their own privacy and cookie policies."]}]},{"title":"3. What We Do NOT Use Cookies For","listDisc":["We do not use cookies for advertising or behavioral targeting","We do not sell cookie data","We do not use cookies to collect sensitive personal information"]},{"title":"4. Managing Cookies","paragraphs":["You can manage or disable cookies through your browser settings. Most browsers allow you to:"],"listDisc":["View cookies stored on your device","Delete existing cookies","Block cookies entirely or from specific websites"],"paragraphsAfter":["Please note that disabling certain cookies may affect the functionality and performance of the Services."]},{"title":"5. Changes to This Cookie Policy","paragraphs":["We may update this Cookie Policy from time to time to reflect changes in technology, law, or our practices. Material changes will be posted on our website. Continued use of the Services after changes take effect constitutes acceptance of the updated Policy."]},{"title":"6. Contact Us","paragraphs":["If you have any questions about this Cookie Policy or our use of cookies, please contact us at:","support@iccandle.ai"]}],"content":"Cookie Policy\\nThis Cookie Policy explains how Pixel Nexus Global Pte. Ltd. (“we”, “us”, or “our”) uses cookies and similar technologies when you visit or use iccandle.ai and related services (collectively, the “Services”).\\n\\nThis Policy should be read together with our Privacy Policy.\\n\\n1. What Are Cookies?\\nCookies are small text files placed on your device when you visit a website. They are widely used to make websites work efficiently, enhance user experience, and provide information to website operators.\\n\\nCookies may be:\\n\\nSession cookies (deleted when you close your browser), or\\nPersistent cookies (stored for a set period or until deleted).\\n2. Types of Cookies We Use\\n2.1 Strictly Necessary Cookies\\nThese cookies are essential for the operation of our Services and cannot be switched off. They are required to:\\n\\nEnable secure login and authentication\\nMaintain user sessions\\nProtect against fraud and abuse\\nWithout these cookies, the Services cannot function properly.\\n\\n2.2 Functional Cookies\\nThese cookies allow us to remember your preferences and settings, such as:\\n\\nLanguage or regional preferences\\nAccount-related selections\\nThey improve usability but are not strictly necessary.\\n\\n2.3 Analytics and Performance Cookies\\nWe use analytics cookies to understand how users interact with our Services. These cookies collect information such as:\\n\\nPages visited and features used\\nSession duration and interaction patterns\\nError and performance data\\nThis information is used solely to improve our product, functionality, and user experience. Analytics data is aggregated and does not directly identify individual users.\\n\\n2.4 Third-Party Cookies\\nSome cookies are placed by third-party service providers that support our Services, including:\\n\\nPayment processing services (e.g., Stripe)\\nAnalytics and infrastructure providers\\nThese third parties may use cookies in accordance with their own privacy and cookie policies.\\n\\n3. What We Do NOT Use Cookies For\\nWe do not use cookies for advertising or behavioral targeting\\nWe do not sell cookie data\\nWe do not use cookies to collect sensitive personal information\\n4. Managing Cookies\\nYou can manage or disable cookies through your browser settings. Most browsers allow you to:\\n\\nView cookies stored on your device\\nDelete existing cookies\\nBlock cookies entirely or from specific websites\\nPlease note that disabling certain cookies may affect the functionality and performance of the Services.\\n\\n5. Changes to This Cookie Policy\\nWe may update this Cookie Policy from time to time to reflect changes in technology, law, or our practices. Material changes will be posted on our website. Continued use of the Services after changes take effect constitutes acceptance of the updated Policy.\\n\\n6. Contact Us\\nIf you have any questions about this Cookie Policy or our use of cookies, please contact us at:\\n\\nsupport@iccandle.ai"}}`),op={Common:Ih,Confirmation:Lh,DateFormat:Fh,Alert:Gh,TimeConfig:Bh,Loading:jh,Auth:Uh,Navbar:zh,Guide:Hh,Pricing:Yh,Settings:qh,Referral:Wh,Layout:_h,News:Vh,Selector:Kh,UserActivity:Jh,Pattern:Xh,PatternCatalog:Zh,sQuestion_pattern:Qh,sQuestion_general:$h,sQuestion_news:ep,justLanguage:tp,profile:np,Landing:ip,NotFound:rp,Legal:ap},sp={or:"OR",error:"错误",warning:"警告",cancel:"取消",continuing:"继续中...",email:"邮箱",password:"密码",termsOfService:"服务条款",privacyPolicy:"隐私政策",continueWithGoogle:"使用 Google 继续",continuingWithGoogle:"正在使用 Google 登录...",signIn:"登录",signUp:"注册",agreeAndContinue:"同意并继续",changePlan:"更改方案",upgradePlan:"升级方案 +",manageBilling:"管理账单",getInTouch:"联系我们",copyright:"© {year} IC Candle, Inc. 版权所有。",session:"交易时段",sessions:"交易时段",activeWorkspaces:"活跃工作区",date:"日期",product:"产品",plan:"方案",planNames:{free:"免费方案",standard:"标准方案",pro:"专业方案",expert:"专家方案"},status:"状态",amount:"金额",detail:"详情",total:"总计",prioritySupport:"优先支持",all:"全部",minutely:"日内",hourly:"小时",daily:"日线",chatAssistant:"聊天助手",timeframes:"时间周期",symbols:"交易品种",timeSettings:"时间设置",step:"步骤 {number}:",learnMore:"了解更多",success:"成功",validationError:"验证错误",previous:"上一页",next:"下一步",saving:"保存中...",save:"保存",saveChanges:"保存更改",nextStep:"下一步",columnTimeframe:"时间周期",columnSymbol:"交易品种",columnDescription:"描述",symbol:"交易品种",timeframe:"时间周期",candles:"K线",up:"上涨",down:"下跌",play:"播放",close:"关闭",simulate:"模拟",actual:"实际",forecast:"预测",interestRate:"利率",soon:"即将推出",back:"返回",similarity:"相似度",nextCandles:"下一个 {count}",nextCandlesFull:"接下来 {count} 根K线",probabilityOutcome:"概率结果:",estimatedProbability:"预计概率:",riskDisclaimer:"金融市场具有高风险,可能导致资金损失。iC Candle 提供的信息仅用于教育目的,不构成任何金融建议。过往表现不保证未来结果。",rangeTooFarToRender:"范围过大,无法渲染。",marketSessions:"市场交易时段",askTradingQuestion:"提出交易问题",mrCandleThinking:"Mr. Candle 正在思考...",simulateBullishPriceAction:"模拟看涨价格走势",simulateBearishPriceAction:"模拟看跌价格走势",dismiss:"关闭",loadingMore:"加载更多...",savedPatternDeleted:"已删除保存的形态"},lp={confirm:"确认",deletePatternTitle:"删除形态",deletePatternDescription:"您确定要删除该形态吗?",deleteAllNotificationsTitle:"删除所有通知",deleteAllNotificationsDescription:"您确定要删除所有通知吗?",disableSignalsTitle:"禁用信号",disableSignalsDescription:"您确定要禁用信号吗?",disableSignalsForDescription:"您确定要禁用 {patternTitle} 的信号吗?",togglePatternModeTitle:"切换形态模式",togglePatternModeDisableDescription:"您确定要禁用该形态吗?",togglePatternModeEnableDescription:"您确定要启用该形态吗?",closeFeatureDescription:"您确定要关闭此功能吗?"},cp={today:"今天",yesterday:"昨天",day:"{count, plural, other {#天}}",hour:"{count, plural, other {#小时}}",minute:"{count, plural, other {#分钟}}",zeroMinutes:"0分钟",dayShort:"天",hourShort:"小时",minuteShort:"分钟",zeroMin:"0分钟",justNow:"刚刚",minutesAgo:"{count, plural, other {# 分钟前}}",hoursAgo:"{count, plural, other {# 小时前}}",daysAgo:"{count, plural, other {# 天前}}",monthsAgo:"{count, plural, other {# 个月前}}",yearsAgo:"{count, plural, other {# 年前}}"},up={classicPatternTracker:"经典形态追踪器",trackedPatternReminder:"已追踪形态提醒",classicPattern:"经典形态",trackedPattern:"已追踪形态",enableClassicNotifications:"开启经典价格形态的实时通知",waitingForPatternSignals:"正在等待形态信号",noPatternsDetected:"当前未检测到任何形态",signalsActiveDescription:"您的信号已启用。一旦发现匹配形态,我们将立即通知您",noCustomPatternDetected:"当前未检测到 {patternName}",trackMorePatternsByScan:"前往扫描以追踪更多形态",seeMore:"查看更多"},dp={title:"时间设置",description:"选择允许触发形态提醒的本地时间窗口。",startTime:"开始时间",endTime:"结束时间",session:"交易时段",timezone:"时区",yourTimezone:"您的时区",selectSession:"选择交易时段",searchSession:"搜索交易时段...",noSessionFound:"未找到交易时段。",sessionsHeading:"交易时段",selectTimezone:"选择时区",selectTimezoneHint:"搜索并选择此提醒的时区。",searchTimezone:"搜索时区...",noTimezoneFound:"未找到时区。",timezonesHeading:"时区",allTime:"全天",customize:"自定义",newYorkSession:"纽约时段",londonSession:"伦敦时段",tokyoSession:"东京时段",sydneySession:"悉尼时段"},hp={newsScan:{analyzing:"正在分析当前新闻事件...",searching:"正在搜索历史上相似的新闻发布...",ranking:"正在筛选最相关的相似新闻...",preparingReplay:"正在准备相似新闻回放...",ready:"相似新闻事件已准备好进行影响分析。"},newsAi:{replaying:"正在回放历史价格走势...",startingSimulation:"正在启动影响模拟模型...",calculatingScenarios:"正在计算上涨和下跌情景...",complete:"模拟完成。"},selectorScan:{scanning:"正在扫描超过20年的市场历史数据...",finding:"正在寻找结构相似的交易形态...",linking:"正在关联市场行为与其背后的驱动因素...",preparing:"正在准备结构化历史数据集...",ready:"形态已准备完成,可进行回放和结果分析。"},selectorAi:{replaying:"正在回放历史形态行为...",learning:"正在学习历史走势中的影响模式...",calculating:"正在计算价格行为动态...",initializing:"正在初始化模拟模型...",complete:"模拟完成。"}},pp={Layout:{tagline:"为重视洞察而非噪音的交易者而设计"},Legal:{termsAndPrivacy:"条款与隐私",googleTermsDescription:"继续使用 Google 即表示您同意我们的<terms></terms>和<privacy></privacy>。",legalAgreement:"我同意<terms></terms>和<privacy></privacy>。",pleaseAgreeToContinue:"请同意后继续",pleaseAgreeDescription:"您必须同意《服务条款》和《隐私政策》才能继续使用 Google。",legalTitle:"法律信息"},SignIn:{dontHaveAccount:"还没有账户?",googleVerifyingAuthorization:"Google 正在验证授权...",invalidCredentials:"无效的凭证",invalidEmail:"无效的邮箱地址",emailRequired:"请输入邮箱",passwordRequired:"请输入密码",pleaseCheckInfo:"请再次检查您的信息",emailPlaceholder:"请输入个人或工作邮箱",change:"更改",forgotPassword:"忘记密码",continueWithEmail:"使用邮箱继续"},SignUp:{repeatPassword:"重复密码",termsAgreement:"继续即表示您同意我们的<terms></terms>和<privacy></privacy>",continueWithEmail:"使用邮箱继续",alreadyHaveAccount:"已有账户?",signUpError:"注册过程中发生错误。"},PasswordRecovery:{title:"密码找回",emailRequired:"请输入邮箱!",emailPlaceholder:"your@example.com",sendConfirmationCode:"发送验证码",somethingWrong:"出了点问题",pleaseWaitAndRetry:"请稍后再试",confirmationCodeSent:"验证码已发送",checkYourEmail:"请查看您的邮箱"},ResetPassword:{title:"重置密码",confirmationCode:"验证码",confirmationCodeRequired:"请输入验证码。",newPassword:"新密码",repeatNewPassword:"确认新密码",passwordMinLength:"密码至少需要8个字符。",repeatPasswordMinLength:"确认密码至少需要8个字符。",passwordsMustMatch:"两次输入的密码不一致。",pleaseStartAgain:"请重新开始",resetSuccess:"重置成功",useNewPassword:"请使用您的新密码",passwordNotConfirmed:"密码未确认!"},Confirm:{title:"确认您的账户",codeSentTo:"确认码已发送至:",otpDescription:"请输入发送到您邮箱的一次性密码。",otpLength:"验证码必须为6位字符。",turnstileError:"Turnstile 出现错误",confirmError:"确认时发生错误:{message}",confirm:"确认"}},mp={features:{title:"功能",patternSelector:{title:"形态选择器",subtitle:"根据历史市场数据分析您的交易想法,寻找相似的价格形态和结果。"},patternTracker:{title:"形态追踪器",subtitle:"持续在后台扫描市场,并在出现匹配形态时向您发出提醒。"},newsImpact:{title:"新闻影响",subtitle:"展示过去新闻发布对价格走势的影响,让您了解市场此前的反应。"}},resources:{title:"资源",learnAndUse:{title:"学习与使用",subtitle:"学习分析概念,并了解如何有效使用平台。"},updatesAndInsights:{title:"更新与洞察",subtitle:"关于我们正在构建和探索内容的新闻与更新。"},whoWeAre:{title:"关于我们",subtitle:"我们是谁、我们的信念以及我们为何构建这一切。"},helpCenter:{title:"帮助中心",subtitle:"在您需要时获取帮助、指导和解答。"}},pricing:{title:"价格方案"}},fp={badge:"功能",title:"人工智能驱动的市场分析,助您做出更明智的决策",description:"利用先进分析和历史智能,发现市场模式、分析市场反应,并在做出决策前了解各种可能性。",creditUsage:"积分使用",resetAfter:"重置后",resetAfterColon:"重置后:",useThisFeature:"使用此功能",automateNow:"立即自动化",analyzeNow:"立即分析",inSession:"您正在交易时段中",sessionActive:"当前交易时段已激活",continueSession:"继续交易时段",pageHeader:{account:{title:"个人资料",infoTitle:"您的账户",infoDescription:"管理您的设置、偏好和连接"},subscription:{title:"订阅",infoTitle:"您的方案",infoDescription:"管理您的方案、账单和付款"},support:{title:"支持",infoTitle:"获取帮助",infoDescription:"查找问题答案并联系我们的支持团队"},referral:{title:"社区",infoTitle:"社区成长计划",infoDescription:"邀请好友,赚取返佣,共同成长"}}},gp={chooseYour:"选择您的",plan:"方案",annualPromo:"选择年度订阅,免费获得超过2个月的服务",monthly:"月付",yearly:"年付",yearlyBadge:"-20%",comparePlans:"比较方案",compareSubtitle:"全面了解每个套餐所包含的功能。",usage:"使用量",usageSection:"使用情况",features:"功能",featuresSection:"功能",freePricePerMonth:"$0 / 月",pricePerMonth:"{price} / 月",patternSelector:"形态选择器",patternTracker:"形态追踪器",newsImpact:"新闻影响",scanResultLimit:"扫描结果限制",historicalData:"历史数据",webhook:"Webhook",patternExport:"形态导出",scansPerDay:"每日 {count} 次扫描",scansPerDayDefault:"每日 2 次扫描",patternsCount:"{count} 个形态",perDay:"每日 {count} 次",perDayDefault:"每日 1 次",tabsCount:"{count} 个标签页",tabsCountDefault:"1 个标签页",limited:"有限",historicalYears:"20年以上",included:"✓",notIncluded:"—",planChangedSuccess:"已成功切换至 {planTitle} 方案!",subscriptionSuccess:"已成功订阅 {planTitle}!",paymentSuccessful:"付款成功!",planUpdated:"您的方案已更新。",planUpdatedDescription:"您的方案已更新。您可以立即开始使用新功能。",subscriptionActive:"您的订阅现已生效。",subscriptionActiveDescription:"您对 {planTitle} 的订阅现已生效。感谢您的购买!",manageBillingInfo:"管理账单信息",continueToApp:"继续使用应用",loadingPaymentDetails:"正在加载付款详情...",paymentError:"付款错误",noSessionId:"未提供会话 ID",goToApp:"前往应用",alreadySubscribedPlan:"您已订阅此方案。",activeSubscriptionManage:"您已有有效订阅。请通过账单管理更改方案。",planChangeScheduled:"方案变更已安排",planChangeScheduledDesc:"您的方案将在下次账单日切换为 {planTitle}。",alreadyOnPlan:"您已在使用此方案",changePlanFailed:"方案更改失败,请使用账单管理。",alreadyActiveSubscription:"您已有有效订阅",noChangesMade:"未做任何更改",alreadyOnPlanDesc:"您当前使用的是 {planTitle} 方案。",badgeFree:"免费",badgePopular:"热门",badgeBestDeal:"最佳优惠",badgeMaximumAccess:"最高权限",freeForEveryone:"人人免费",usdPerMonth:"美元/月",yearlyAmount:"{amount} 美元 / 年",monthlyAmount:"{amount} 美元 / 月",currentPlan:"当前方案",startForFree:"免费开始",getPlan:"获取 {planTitle}",switchToPlan:"切换至 {planTitle}",changePlanConfirmTitle:"确认更改方案",changePlanConfirmDesc:"您当前使用的是 {currentPlan} 方案。请选择新价格生效时间。",changeNextBilling:"下次账单日更改",changeNow:"立即更改",confirmNextBillingTitle:"确认下次账单日更改",confirmNextBillingDesc:"确定要在下次账单日安排此方案变更吗?在此之前,您当前的 {currentPlan} 方案将保持有效。下次账单日将切换为 {planTitle}({amount})。",yesChangeNextBilling:"是,下次账单日更改",continueToCheckout:"继续结账",freeCheckoutDesc:"您当前为免费方案。继续结账以订阅 {planTitle}。",continue:"继续",agreeRefundPolicy:"我同意<link>退款与取消政策</link>。",everythingInPlan:"包含 <plan></plan> 套餐中的所有内容",plans:{free:{title:"免费",subtitle:"探索与体验",heading3:"适合个人交易者"},standard:{title:"标准版",subtitle:"自信分析",heading3:"适合个人交易者"},pro:{title:"专业版",subtitle:"深度分析",heading3:"团队与专业版"},expert:{title:"专家版",subtitle:"无限制分析",heading3:"适合专业交易者"}},planFeatures:{categories:{candleScanner:"K线扫描器",candleSignal:"K线信号"},labels:{patternSelector:"形态选择器",patternTracker:"形态追踪器",newsImpact:"新闻影响",scanResultLimit:"扫描结果限制",activeTabs:"活动标签页",timeframes:"时间周期",webhook:"Webhook"},values:{scansPerDay:"每日 {count} 次扫描",patterns:"{count}",perDay:"{count}",tabsWorkspace:"{count}(工作区)",enabled:"已启用",disabled:"已禁用"}}},yp={Connections:{connectedAccount:"已连接账户",creditUsage:"积分使用情况",totalCreditsUsed:"已使用积分总数",resetsIn:"将在 {duration} 后重置",understandingCredits:"了解积分与使用情况",nearLimit:"接近限制"},Subscription:{myPlan:"我的方案",thanksForSubscribing:"感谢您的订阅!",billingHistory:"账单历史",nextBillingDate:"下次账单日期",whichPlan:"哪个方案适合您?",patternSelectorCreditsPerDay:"{count} 个形态选择器积分 / 天",patternTrackerCreditsPerDay:"{count} 个形态追踪器积分 / 天",newsImpactCreditsPerDay:"{count} 个新闻影响积分 / 天",chatAssistantCreditsPerDay:"{count} 个聊天助手积分 / 天",prioritySupport:"优先支持"},Billing:{noInvoices:"No invoices found.",loadError:"Failed to load invoices. Please try again later.",viewInvoice:"查看发票"}},bp={referralRebate:"推荐返佣",referredUsers:"推荐用户",totalRebateEarned:"累计获得返佣",referredUsersCount:"已推荐用户",activeReferrals:"有效推荐",referralLink:"推荐链接",shareDescription:"与好友分享您的推荐链接。当他们完成订阅后,您将从他们的方案中获得返佣。",joinedDate:"加入日期",loading:"加载中...",noReferralCodeAvailable:"暂无可用推荐码",updateReferralCodeTitle:"更新推荐码",createReferralCodeTitle:"创建推荐码",updateReferralCodeDescription:"请在下方更新您的推荐码。",createReferralCodeDescription:"输入推荐码以开始分享您的推荐链接。",enterReferralCodePlaceholder:"输入推荐码",enterReferralCode:"请输入推荐码",codeCreatedSuccess:"推荐码创建成功",codeUpdatedSuccess:"推荐码更新成功",codeMinChars:"至少 5 个字符",codeMaxChars:"最多 15 个字符",create:"创建",update:"更新",pageNumber:"第 {page} 页",noReferredUsersYet:"尚无推荐用户",shareReferralEmptyDescription:"分享您的推荐链接,开始扩大您的网络并赚取返佣。"},vp={mainMenu:{coreFeatures:"核心功能",account:"账户",subscription:"订阅",communityGrowthProgram:"社区成长计划",support:"支持",others:"其他"},patternMenu:{trackedPatterns:{label:"我的追踪形态",tooltipTitle:"由 AI 检测的高概率交易形态",tooltipDescription:"iC Candle 全天候24小时追踪全球市场,检测您关注的交易形态,并提供置信度等级和突破方向。使用筛选功能找到最佳交易机会,然后点击任何形态查看完整详情。"},classicPatterns:{label:"经典形态",tooltipTitle:"经典形态",tooltipDescription:"选择您关注的形态——双顶、头肩形、旗形、矩形等,然后启用信号。我们会在您选择的市场中监控每一次价格变动,并在形态完成时立即通知您。您可以通过 Telegram、电子邮件或应用内通知自定义接收方式,确保不错过任何交易机会。"}},helperBar:{watchList:"观察列表",savedPatterns:"已保存的形态",newsMovingMarket:"市场正在发生什么?",favoritesCount:"收藏 ({count})",groupWithCount:"{label} ({count})",noItemsInWatchList:"关注列表暂无项目",watchListLast:"最新价",watchListChg:"涨跌",watchListChgPercent:"涨跌%",removeFromFavorites:"从收藏中移除",addToFavorites:"添加到收藏",removeSymbolFromFavorites:"从收藏中移除 {symbol}",addSymbolToFavorites:"将 {symbol} 添加到收藏",groupCommodity:"大宗商品",groupForex:"外汇",groupCrypto:"加密货币",groupIndices:"指数",groupStock:"股票"},profileMenu:{darkTheme:"深色主题",chatWithUs:"与我们聊天",termsAndConditions:"条款与条件",logOut:"退出登录"},tabAdded:"标签页已添加",tabMemoryWarning:"添加更多标签页可能会增加设备的内存占用。",tabLimitReached:"已达到标签页上限",tabLimitReachedMax:"您已达到当前方案允许的最大标签页数量。",tabLimitReachedUpgrade:"您已达到当前方案允许的最大标签页数量。请升级方案以获得更多访问权限。",notifications:"通知",noNotifications:"暂无通知",notificationsOfflineReconnect:"(离线)请重新连接通知",headerNav:{selectorTitle:"形态选择器",selectorShortTitle:"形态选择器",patternTitle:"形态追踪器",patternShortTitle:"追踪",newsTitle:"新闻影响",newsShortTitle:"新闻"},guideFeatures:{selector:{title:"形态选择器",description:"根据历史市场数据分析您的交易想法,寻找相似的价格形态和结果。"},pattern:{title:"形态追踪器",description:"持续在后台扫描市场,并在出现匹配形态时向您发出提醒。"},news:{title:"新闻影响",description:"展示过去新闻发布对价格走势的影响,让您了解市场此前的反应。"}}},wp={mostSimilarNews:"最相似的新闻:",selectEvent:"选择事件",economicCalendarAnalysis:"经济日历分析",economicCalendar:"经济日历",predictAvailable:"预测可用",predictUnavailable:"预测不可用",actualReleased:"实际数据已公布",analyzeImpact:"分析影响",candleDataTooFar:"K线数据距离该事件时间过远。",tryAnotherTimeframe:"请尝试其他时间周期。",aiIntelligence:"AI智能",matchPercent:"{percent}% 匹配",whatHappenedOnNews:"该新闻发生了什么:",newsBeforeEvent:"此次 {eventName} 之前的相关新闻",time15MinLater:"15分钟后",time30MinLater:"30分钟后",time1HourLater:"1小时后",time2HoursLater:"2小时后",time4HoursLater:"4小时后",noDataHere:"No data here",pleaseWaitAndRetry:"Please wait and try again",current:"Current",previousMonth:"上个月",nextMonth:"下个月",holiday:"Holiday",seeAll:"查看全部",selectedSymbols:"已选交易对",marketNews:"市场新闻",patternType:"形态类型",unknownPublishDate:"发布日期未知",noMatchingArticleDetails:"无匹配的文章详情",model:"模型",temperature:"温度",temperatureLow:"低",temperatureMedium:"中",temperatureHigh:"高",previousActual:"前值",currentForecast:"当前预测值",previousForecast:"预测值",goToEventDetail:"前往活动详情",eventInfoNotFound:"未找到活动信息",ppi:"生产者价格指数衡量制造商和生产者销售的商品和服务价格变化。",cpi:"消费者价格指数衡量消费者购买的商品和服务价格变化。",coreCpi:"核心CPI衡量剔除食品和能源后的消费者价格变化,是央行关注的关键通胀指标。",jolts:"职位空缺与劳动力流动调查衡量美国未填补的职位空缺数量。",nfp:"非农就业人数衡量美国就业人数变化,不包括农业及部分行业。",ijc:"初请失业金人数衡量首次申请失业保险的个人数量,用于反映劳动力市场状况。",fomc:"联邦公开市场委员会是美国中央银行机构,负责设定利率并执行货币政策。",fedRate:"美联储利率决议公告,设定联邦基金目标利率,影响货币政策和金融市场。",gdpAdvance:"国内生产总值衡量一个经济体中商品和服务的总产出价值。Advance GDP 为首次估算发布。",gdpMonthly:"国内生产总值衡量一个经济体中商品和服务的总产出价值。月度数据用于跟踪短期增长(如英国GDP月率)。",unemploymentRate:"失业率衡量劳动力中失业人口所占比例。",ahe:"平均时薪衡量工人(不包括农场工人)工资的月度变化。",corePce:"核心个人消费支出价格指数衡量剔除食品和能源后的个人消费支出月度变化,是美联储偏好的通胀指标。",retailSales:"零售销售衡量零售层面销售总额的月度变化。",ismManufacturingPmi:"ISM制造业PMI通过调查数据衡量美国制造业健康状况;高于50表示扩张。",ismServicesPmi:"ISM服务业PMI通过调查数据衡量美国服务业健康状况;高于50表示扩张。",gdpPrelim:"预估GDP为季度GDP增长的第二次估算,衡量经济总产出。",adpNfp:"ADP非农就业变化衡量ADP/穆迪调查的私营部门就业变化,是非农就业的领先指标。",eci:"就业成本指数衡量包括工资和福利在内的劳动力成本季度变化,是美联储重点关注的通胀指标。",flashManufacturingPmi:"制造业PMI初值是基于调查数据的制造业活动初步估算;高于50表示扩张。",flashServicesPmi:"服务业PMI初值是基于调查数据的服务业活动初步估算;高于50表示扩张。",claimantCount:"英国申领人数变化衡量领取失业相关福利人数的月度变化,是英国劳动力市场的重要指标。",boeRate:"英国央行官方利率是货币政策委员会设定的利率,用于引导英国货币政策和英镑市场。",ecbMainRefinancingRate:"欧洲央行主要再融资利率是欧央行向银行提供流动性的关键政策利率,用于引导欧元区货币政策和欧元市场。",snbPolicyRate:"瑞士国家银行政策利率是瑞士央行的关键政策利率(基于SARON框架),用于引导瑞郎市场和货币政策。",cadEmploymentChange:"加拿大就业变化衡量加拿大统计局劳动力调查中的就业人数月度变化,是加拿大劳动力市场及加元的重要指标。"},xp={matchPercent:"匹配 {percent}%",matchLabel:"匹配",mismatch:"不匹配",noResultsFound:"未找到结果",result:"结果",filter:"筛选",filterBy:"筛选条件",clearFilter:"清除筛选",selectFilterType:"选择筛选类型",matchPercentLabel:"匹配 %",selectSymbol:"选择交易对",selectMatchPercent:"选择匹配 %",selectDateRange:"选择日期范围",dateLast1Month:"最近1个月",dateLast6Months:"最近6个月",dateLastYear:"最近1年",dateLast3Years:"最近3年",dateAllTime:"全部时间",noDataFound:"暂无数据",runScanToSeePatternResults:"在此运行扫描以查看形态结果",scanAgainToPlay:"重新扫描以播放图表",scan:"扫描",activateSelector:"激活选择器",resetAfterDuration:"重置后:{duration}",markets:"市场",scannerOptions:"扫描选项",saveOptions:"保存选项",searchSymbol:"搜索交易品种",probabilityCalculation:"概率计算",probabilityCalculationTooltip:"定义用于概率计算的未来K线数量。",period:"周期",periodTooltip:"从所选时间段开始搜索。",timeframeTooltip:"定义扫描结果的K线时间周期。",topResultsTooltip:"定义扫描结果的数量。",auto:"自动",settings:"设置",collapseToolbar:"收起工具栏",expandToolbar:"展开工具栏",availableBars:"可用尺寸:10-50, 60, 70, 80, 90, 100",clearReplayFirst:"请先清除回放图表",pleaseLoginFirst:"请先登录",trackPattern:"跟踪形态",selectAll:"全选",searchTimeframe:"搜索时间周期",selectAllTimeframes:"全选时间周期",selectTimeframeAria:"选择时间周期 {label}",selectSymbolAria:"选择交易品种 {symbol}",timeframeTypeMinutes:"分钟",searchFilterSaved:"搜索筛选条件保存成功。",periodAll:"全部",periodLastYear:"近 1 年",periodLast3Years:"近 3 年",periodLast5Years:"近 5 年",periodLast15Years:"近 15 年",topResults:"最佳结果",tabSymbols:"交易品种",tabAdvancedOptions:"高级选项",tabBasic:"基础",tabAdvancedFilter:"高级筛选",priceMovementData:"价格走势数据:",askAssistantExplanation:"向 AI 助手请求解释",selectCandleCount:"选择K线数量",priceChanges:"价格变化",candlesCount:"{count} 根K线",basedOnDirectionPatterns:"基于该形态之后的“{direction}”走势",noAiMovementData:"没有关于 {direction} 方向的 AI 价格走势数据",scannerOptionsDescription:"配置交易品种和扫描参数。",alwaysShow:"始终显示",aiModel:"AI Intelligence 模型",aiTemperature:"AI 温度",aiModelTooltipLight:"基于近 2 年数据训练。",aiModelTooltipPro:"基于全部历史数据训练。",aiTemperatureTooltip:"定义 AI 预测的一致性级别。"},Pp={scannedAt:"扫描时间:",trackerActivated:"追踪器已激活",match:"匹配:{percent}%",result:"结果",windowSize:"窗口大小:{size}",patternSelectorHistory:"形态选择器历史记录",noFilter:"无筛选",favorite:"收藏",windowSizeFilter:"窗口大小",windowSizePlaceholder:"窗口大小 (10-50)",submit:"提交"},Sp={trackYourCustomPatterns:"追踪您的自定义形态",selectedSymbol:"所选品种",selectedSymbols:"所选品种",timezone:"时区",selectedTimeframes:"所选时间周期",moreItems:"还有{count}项",selectedBars:"所选K线",barsCount:"{count} 根K线",timeFrame:"时间周期",patternType:"形态类型",created:"创建时间",editPattern:"编辑形态",createNewTracker:"创建新的追踪器",firstYouHaveToScan:"您需要先进行扫描",goToScan:"前往扫描",addToPatternTracker:"添加到形态追踪器",goToPatternTracker:"前往形态追踪器",addToPatternTrackerDescription:"当该形态再次出现时,您将收到实时更新。请输入一个名称以帮助您识别此提醒。",patternName:"形态名称",patternNamePlaceholder:"输入该形态的名称",patternNameMinChars:"至少需要 5 个字符。",patternNameMaxChars:"已达 20 个字符上限。",patternNameErrorTitle:"形态名称错误",patternNameErrorDescription:"请输入形态信号名称",customPatternSignalTooltip:"当该形态在 MARKET 上形成时,您将收到“自定义形态信号”的通知",noPatternDataFound:"未找到形态数据",limitReached:"已达到限制",limitReachedTrackerDescription:"您已达到可创建的形态追踪器最大数量。",trackerUpgradeToastDescription:"您已达到当前方案允许的最大信号数量。请升级方案以获得更多权限。",patternConfigUpdated:"形态配置已更新",patternConfigUpdatedDesc:"形态配置 “{name}” 已更新",patternConfigError:"形态配置错误",patternConfigErrorDesc:"更新形态配置失败",patternSaved:"形态已保存",patternSavedDesc:"形态名称 “{name}” 已保存",patternSignalError:"形态信号错误",patternSignalErrorDesc:"保存形态失败",trackerTutorialPlanLimitExpert:"您的方案最多允许追踪 {limit} 个形态。",trackerTutorialPlanNoTracking:"您的方案不包含形态追踪功能。升级方案后即可将形态添加到追踪器。",trackerTutorialPlanTrackingLimit:"您的方案最多允许追踪 {limit} 个形态。升级方案可追踪更多形态。",currentPlan:"当前方案",planFree:"免费",configurePatternTracker:"配置形态追踪器",selectTimeframesAndSymbols:"选择您希望监控该形态的时间周期和交易品种。",selectTimeframes:"选择时间周期",chooseTimeframes:"选择您希望监控该形态的时间周期。",searchTimeframes:"搜索时间周期",timeframeSelected:"已选择 {count} 个时间周期",timeframesSelected:"已选择 {count} 个时间周期",symbolSelected:"已选择 {count} 个交易品种",symbolsSelected:"已选择 {count} 个交易品种",patternSelected:"{count} 个形态",patternsSelected:"已选 {count} 个形态",patternTypes:"形态类型",patternSubscribed:"形态已订阅",patternSubscribedDesc:"形态「{name}」已开始追踪",patternSubscriptionError:"形态订阅失败",subscriptionModalAria:"形态追踪器订阅",noPatternCandles:"未找到形态K线数据",chartSymbolRequired:"图表品种为必填项",userIdRequired:"用户ID为必填项",subscribe:"订阅",subscribing:"订阅中...",tabTimeShort:"时间",signalDialog:{title:"信号设置 - {patternTitle}",successDescription:"信号设置更新成功",selectOneTimeframe:"请至少选择一个时间周期",selectOneSymbol:"请至少选择一个交易品种",selectOneTimeframeAndSymbol:"请至少选择一个时间周期和一个交易品种",selectCurrencyPairs:"选择货币对",chooseCurrencyPairs:"选择您希望监控形态的货币对",searchCurrencyPairs:"搜索货币对"},noMatchesFound:"未找到匹配结果",filterCategoryPattern:"形态",filterCategorySymbol:"交易对",filterCategoryTimeframe:"时间周期",selectCategory:"选择类别",searchCategory:"搜索{category}...",timeframeOptions:{M15:{displayName:"15分钟",description:"15分钟时间周期"},M30:{displayName:"30分钟",description:"30分钟时间周期"},H1:{displayName:"1小时",description:"1小时时间周期"},H2:{displayName:"2小时",description:"2小时时间周期"},H4:{displayName:"4小时",description:"4小时时间周期"},D:{displayName:"1天",description:"日线时间周期"}}},Tp={priceActionPattern:"价格行为形态",labels:{flagbear:"Bearish Flag",flagbull:"Bullish Flag",dd_top:"Double Top",dd_bot:"Double Bottom",aad_up:"AAD Up",aad_down:"AAD Down",has_bull:"Head and Shoulders Bullish",has_bear:"Head and Shoulders Bearish",rectangle:"Rectangle"},timeframes:{M1:"1 minute",M5:"5 minutes",M15:"15 minutes",M30:"30 minutes",H1:"1 hour",H2:"2 hours",H4:"4 hours",D1:"Daily"},patterns:{doubleBottom:{desc:'<div><p>当价格两次测试相同水平但未能突破时,会形成此类形态。</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>这表明市场在某个方向上的动能正在减弱。</li><li>价格突破该区间后,通常预示着趋势即将反转。</li></ul></div>'},doubleTop:{desc:'<div><p>当价格两次测试相同水平但未能突破时,会形成此类形态。</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>这表明市场在某个方向上的动能正在减弱。</li><li>价格突破该区间后,通常预示着趋势即将反转。</li></ul></div>'},bullishFlag:{desc:'<div><p>在强劲上涨或下跌走势后的短暂暂停或盘整阶段。</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>价格会在一个与原趋势相反的小幅倾斜通道中波动。</li><li>当价格突破旗形结构后,趋势通常会继续沿原方向发展。</li></ul></div>'},bearishFlag:{desc:'<div><p>在强劲上涨或下跌走势后的短暂暂停或盘整阶段。</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>价格会在一个与原趋势相反的小幅倾斜通道中波动。</li><li>当价格突破旗形结构后,趋势通常会继续沿原方向发展。</li></ul></div>'},bullishHeadShoulders:{desc:'<div><p>该形态显示市场力量的转变,并预示可能出现趋势反转。</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>它由三个部分组成:一个较大的波动(「头部」)和两个较小的波动(「肩部」)。</li><li>当形态完成后,价格通常会突破并朝与此前趋势相反的方向运行。</li></ul></div>'},bearishHeadShoulders:{desc:'<div><p>该形态显示市场力量的转变,并预示可能出现趋势反转。</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>它由三个部分组成:一个较大的波动(「头部」)和两个较小的波动(「肩部」)。</li><li>当形态完成后,价格通常会突破并朝与此前趋势相反的方向运行。</li></ul></div>'}}},kp={chartPatterns:"图表形态是什么?",flagPattern:"如何有效交易旗形形态?",rectanglePattern:"矩形形态需要关注哪些关键特征?"},Cp={pip:"什么是点值(pip)?",majorCurrencyPairs:"主要外汇交易货币对有哪些?",lotSize:"什么是手数?",leverage:"什么是杠杆?",margin:"什么是保证金?",bullishFlagTrack:"跟踪所有品种和时间周期的看涨旗形形态"},Ap={cpi:"什么是CPI,它如何影响市场?",nfp:"什么是非农(NFP),它如何影响市场?",eurImpactfulNews:"市场中对美元影响最大的新闻是什么?"},Np="lang",Dp="个人资料",Rp={statistics:{tradersReport:"10位交易者中有7位表示其交易决策的一致性得到了提升。",satisfactionRate:"96%的测试版用户表示满意,并评价:“感觉就像身边多了一个智慧大脑一起交易。”",usersChanged:"超过80%的用户表示,iC Candle 改变了他们分析市场的方式。",lessTimeWatching:"由于形态提醒功能,用户平均减少了40%的看盘时间。",heading:"数以千计的交易者已经改变了他们观察市场的方式。"},feedback:{marketHistory:`市场历史引导我的交易:利用历史市场反应进行交易已经成为我全新的交易方式。我获得的价值和我支付的订阅费用相比?根本无法相提并论。A. Lee
17
17
  加密货币分析师(新加坡)`,tradersChatGPT:`交易员的ChatGPT:我几乎在日常生活中的所有事情上都使用ChatGPT,大家都知道它让事情变得多么简单。而且说实话……我觉得我找到了交易员版本的ChatGPT。M. Ganbaatar
18
18
  自营交易员(iTrader)`,backtesting:`感觉像是更高层次的回测:iC Candle的回测功能真的是改变游戏规则的存在。现在一切都变得如此快速、清晰,简直令人惊叹。我已经有点上瘾了。到了这个阶段,很难想象还有活跃交易员会在没有这个工具的情况下进行交易。B. Enkhbayar
@@ -46,7 +46,7 @@ by subscribing annually`,monthly:"Monthly",yearly:"Yearly",yearlyBadge:"-20%",co
46
46
  Свинг арилжаач (Япон)`,marketHistoryTitle:"Зах зээлийн түүх миний арилжааг чиглүүлдэг",marketHistoryDesc:`Зах зээлийн түүхэн хариу үйлдлийг ашиглан арилжаа хийх нь миний цоо шинэ хэв маяг болсон. Миний авч буй үнэ цэнэ ба төлж буй захиалгын төлбөрийг харьцуулах ч боломжгүй.A. Lee
47
47
  Крипто шинжээч (Сингапур)`,chatGPTTitle:"Арилжаачдын ChatGPT",chatGPTDesc:`Би өдөр тутмын амьдралдаа ChatGPT-г бараг бүх зүйлд ашигладаг, энэ нь бүх зүйлийг хэчнээн хялбар болгодгийг бүгд мэднэ. Шударгаар хэлэхэд… би арилжаачдад зориулсан ChatGPT-ийн хувилбарыг олсон гэж бодож байна. M. Ganbaatar
48
48
  Проп арилжаач (iTrader)`},tags:{all:"Бүгд",blog:"Блог",crypto:"Крипто",event:"Үйл явдал",pairs:"Валютын хос"}},ag={title:"Хуудас олдсонгүй",description:"Таны хайж буй хуудас байхгүй эсвэл зөөгдсөн байна.",backToHomepage:"Нүүр хуудас руу буцах",imageAlt:"Хуудас олдсонгүй"},og=JSON.parse(`{"Page":{"title":{"terms":"Үйлчилгээний нөхцөл","privacy":"Нууцын бодлого","refund":"Буцаан олголт ба цуцлалтын бодлого","cookie":"Cookie бодлого"},"tabs":{"terms":"Үйлчилгээний нөхцөл","privacy":"Нууцын бодлого","refund":"Буцаан олголт ба цуцлалтын бодлого","cookie":"Cookie бодлого"},"nav":{"terms":"Үйлчилгээний нөхцөл","privacy":"Нууцын бодлого","refund":"Буцаан олголт ба цуцлалтын бодлого","cookie":"Cookie бодлого"}},"Terms":{"title":"Үйлчилгээний Нөхцөл (Terms of Service, TOS), Нөхцөлүүд, Анхааруулга, Гэрээ, Хэлэлцээр","intro":{"p1":"This agreement is made between Pixel Nexus Global, a Singaporean Limited Liability company operating as www.iccandle.ai (“Pixel Nexus Global,” “we,” “us,” or “our”), and the individual or entity purchasing or utilizing services offered through the Platform (“Customer,” “you,” or “your”). If you are acquiring the Services on behalf of a third party, you confirm that you have the legal authority to bind that party to these Terms of Service and will be liable for their use of the Services.","p2":"By accessing the Platform and Services outlined in this document and promoted on www.iccandle.ai, or by subscribing to services via the iccandle.ai website, you acknowledge that you have read, understood, and agreed to these Terms, Conditions, and Disclaimers. You further agree that your relationship with us is governed by the provisions set forth in this TOS.","p2Emphasis":"If you do not accept these terms, you must discontinue all use of iccandle.ai and any associated services or Platforms immediately."},"sections":[{"title":"1. The Services","paragraphs":["Pixel Nexus Global will provide active customers in good standing with access to its AI-powered analytical tool (the “Platform”). As used in this Agreement, the term “Services” refers to Pixel Nexus Global’s provision of your access to the Platform. The Services will be provided to you under one or more subscriptions, account activations, sign-ups, or orders placed by you on the iccandle.ai website and accepted by Pixel Nexus Global (an “Order”).","In case of any conflict between these TOS and an Order, the terms of these TOS shall take precedence. By accepting the Services, you acknowledge and agree that any different or additional terms proposed by you in an Order or otherwise are expressly rejected by Pixel Nexus Global, unless we have agreed to such terms in a written document signed by an authorized representative."]},{"title":"2. Your Obligations","subsections":[{"title":"Customer Information and Account Responsibilities","paragraphs":["You agree to provide Pixel Nexus Global with accurate information when creating your account, throughout our business relationship, and in all correspondence with us. We may occasionally need to contact you via email or telephone regarding the Services. You agree to maintain a valid email address that you check daily and to promptly notify us of any changes to your contact information.","Pixel Nexus Global shall not be responsible for any service interruptions, damages, or consequences resulting from misdirected communications due to your failure to provide current contact details. You also agree to complete all data entitlement surveys within the platform completely and truthfully to maintain compliance with exchange regulations."]},{"title":"Permitted Use of Platform","paragraphs":["Your use of the Platform must comply with these TOS and any accompanying documentation we provide. If you permit third parties to access the Platform, you agree to: (i) restrict their use in accordance with these terms; (ii) ensure their compliance with these TOS and our Privacy Policy; and (iii) remain fully liable for any violations of these TOS or the Privacy Policy by such third parties."]},{"title":"Intellectual Property and Legal Compliance","paragraphs":["You agree not to alter, obscure, or remove any trademark or proprietary notices. You may only use the Platform in accordance with: (i) the laws governing these TOS; and (ii) all applicable laws in your jurisdiction.","Unauthorized use is strictly prohibited."]}]},{"title":"3. Term","subsections":[{"title":"Effective Date and Term Duration","paragraphs":["These Terms of Service (TOS) become effective (\\"Effective Date\\") on the earlier of: (i) the date you click \\"I accept\\" as recorded by our servers; or (ii) the date you first access or use the Platform.","These TOS remain in effect for the duration of any active Order."]},{"title":"Subscription Terms and Renewals","paragraphs":["The Services will automatically renew for successive periods (monthly, quarterly, or annually) as specified in your Order. If unspecified, the default initial subscription period (\\"Initial Term\\") is one month. Subsequent renewal periods (\\"Renewal Terms\\") will match the Initial Term’s duration."]},{"title":"Trial Period Terms","paragraphs":["Pixel Nexus Global may offer trial periods (paid or free) as indicated on the iccandle.ai trial signup page. During any trial period:"],"listOrdered":["All terms and conditions of this agreement apply as if you were a paid subscriber","You may cancel at any time during the trial to prevent automatic renewal","Trial terms and conditions are subject to change without notice"]},{"title":"Subscription Management Responsibility","paragraphs":["You are solely responsible for managing your subscription, including:"],"listDisc":["Monitoring renewal dates","Updating payment information","Initiating cancellations","Maintaining current contact information"],"paragraphsAfter":["Pixel Nexus Global is not responsible for any charges due to failure to manage your subscription."]}]},{"title":"4. Termination","subsections":[{"title":"Cancellation and Termination Policy","paragraphs":["Details about cancellation and refund policies are available on our Refund and Cancellation Policy page at iccandle.ai. Terminating your account disables automatic renewals but does not cancel past invoices or make prior payments refundable unless stated otherwise in our Refund and Cancellation Policy.","Any currently due invoices must be paid in full to settle your account. Your access to Pixel Nexus Global services will continue until the expiration of your prepaid period or trial term."]},{"title":"Termination for Convenience","paragraphs":["Either party may terminate any Order by providing written notice at least one (1) day before the expiration of the Initial Term or any Renewal Term. For purposes of this provision, “written notice” includes communication through email, live chat, telephone, or via the Online Portal, indicating a desire not to continue service with Pixel Nexus Global in the future."]},{"title":"Termination for Policy Violations","paragraphs":["Pixel Nexus Global reserve the right to immediately suspend Services and/or terminate any Order in cases of violation of these TOS, breach of our Privacy Policy, or use of Services in a manner contrary to law or generally accepted internet standards. Such termination may occur without prior notice, dispute resolution process, or refund of any fees."]},{"title":"Effect of Termination","paragraphs":["The expiration or termination of any Order does not affect any rights or obligations that either (i) came into effect upon or after such expiration/termination, or (ii) survive the termination and were incurred by the parties prior to termination. Upon termination, you must promptly settle any outstanding balance. Pixel Nexus Global is not obligated to return any paid fees for terminations occurring prior to completion of a full term, except as may be expressly provided in our Refund and Cancellation Policy.","All termination matters are governed by the complete terms set forth in this agreement, and Pixel Nexus Global maintains full discretion in enforcing these provisions."]}]},{"title":"5. License Grant and Restrictions","paragraphs":["Pixel Nexus Global grants you a limited, revocable, non-exclusive, non-transferable, worldwide license to utilize our proprietary technology (\\"Pixel Nexus Technology\\") solely for accessing and employing our analytical engines as part of the Services, including any generated reports (\\"Reports\\"). This license is restricted to your account's registered users and automatically terminates upon expiration or termination of these TOS.","No rights beyond this limited license are conferred. All ownership rights in the Pixel Nexus Technology remain exclusively with Pixel Nexus Global or its licensors. You are expressly prohibited from: transferring, leasing, lending, sublicensing, reselling, or distributing the technology; using it for timesharing or service bureau purposes; or permitting unauthorized third-party access. You may not circumvent any protective measures safeguarding our proprietary interests, nor modify, reproduce, decompile, reverse engineer, or create derivative works from the Pixel Nexus Technology or Platform components. Upon termination, you must immediately cease using and permanently delete all Pixel Nexus Technology in your possession, ensuring any third parties with access do likewise."],"subsections":[{"title":"Ownership Rights","paragraphs":["Pixel Nexus Global retains all rights, title, and interest in the Pixel Nexus Technology and Platform, including but not limited to all derivative works, improvements, enhancements, and associated intellectual property rights such as trademarks and copyrights."]},{"title":"Feedback Provisions","paragraphs":["You may voluntarily provide, or we may solicit, input regarding the Platform or Services (\\"Feedback\\"), including suggestions for modifications or improvements. You acknowledge such Feedback constitutes Pixel Nexus Global's confidential proprietary information and irrevocably assign all related rights and interests to us. Pixel Nexus Global may utilize Feedback for any purpose without limitation or compensation obligation. This assignment applies globally and survives termination of these TOS.","All rights not expressly granted herein are reserved by Pixel Nexus Global. Any unauthorized use constitutes breach of these TOS and may result in immediate termination of your access rights."]}]},{"title":"6. Data Usage and Intellectual Property Rights","paragraphs":["Pixel Nexus Global may utilize information you provide or data collected from your use of the Platform and Services (\\"Operational Information\\") to deliver technical support and facilitate the implementation, operation, and administration of the Services. By using our Services, you grant us a perpetual, irrevocable license to process and analyze this Operational Information. We may combine this data with aggregate information from our general business operations to enhance existing Services or develop new products and offerings.","Pixel Nexus Global shall retain exclusive ownership of all intellectual property derived from such analysis and improvements. You hereby irrevocably waive any potential rights to this intellectual property and assign all rights, title, and interest therein to Pixel Nexus Global. You further agree to provide reasonable cooperation in securing and protecting these rights. We reserve the right to commercialize this Operational Information through sale, monetization, or incorporation into other products and services, without obligation to compensate you or grant you any ownership interest.","This license shall terminate upon expiration or cancellation of these Terms of Service, except with respect to historical data that has been aggregated and anonymized such that it cannot be identified as originating from your organization. Pixel Nexus Global may retain and continue to use such anonymized, aggregated data indefinitely for any lawful business purpose.","All intellectual property rights not expressly granted herein remain the exclusive property of Pixel Nexus Global. Your continued use of the Services constitutes acceptance of these terms regarding data usage and intellectual property rights."]},{"title":"7. Accuracy of Information Disclaimer","paragraphs":["Pixel Nexus Global relies on third-party data feeds to power its platform and therefore cannot guarantee the absolute accuracy of the information displayed. Different features within our system (such as scanners, automated analysis tools, charting functions, and back testing capabilities) may utilize separate data providers, which can result in variances between datasets across different platform features. Users should always verify analysis results and scanner conditions to ensure data consistency.","The platform's analytical outputs are inherently dependent on the quality of underlying third-party data, and Pixel Nexus Global makes no representations or warranties regarding the accuracy of these analyses. The iccandle.ai website, Services, and Platform are designed solely for informational and research purposes - they should never serve as the sole basis for investment decisions. Pixel Nexus Global disclaims all liability for any financial losses resulting from reliance on potentially inaccurate data or analysis within the Platform.","The Pixel Nexus Global system is provided strictly on an \\"as-is\\" basis without guarantees or warranties of any kind, as its functionality depends on unverified third- party data sources. The platform is intended exclusively for educational, entertainment, and general informational use - not as professional financial advice or a substitute for independent investment research. Users assume all risk associated with interpreting and acting upon any information displayed within the system.","By accessing and using the Platform, you acknowledge these inherent limitations and agree that Pixel Nexus Global shall not be held responsible for any consequences arising from data inaccuracies, analysis errors, or investment decisions made based on platform content."]},{"title":"8. Disclaimer of Investment Advice and Platform Limitations","paragraphs":["The analytical tools and outputs provided by Pixel Nexus Global's iccandle.ai platform are strictly for informational and research purposes only and should not be construed as investment advice. The platform relies on third-party data sources that may contain inaccuracies, and different features may produce varying results due to separate data providers. All analysis, including results from our Pattern Selector, Pattern Tracker, and News Impact Intelligence, is provided \\"AS-IS\\" without any guarantees of accuracy. These tools demonstrate historical patterns, probabilities, and market behavior under past conditions and cannot predict future results, as actual market outcomes may differ due to liquidity, execution, and other variables. You must never rely solely on platform analysis when making investment decisions."]},{"title":"9. Risk Acknowledgement and User Responsibility","paragraphs":["By using Pixel Nexus Global's platform (iccandle.ai), you expressly acknowledge and accept full responsibility for all risks associated with any investment decisions made based on information or analysis obtained from our Platform. You understand that our services rely on third-party data sources that may contain inaccuracies, and that our analytical models employ mathematical formulas and sequences that have not been independently verified for predictive accuracy. Pixel Nexus Global cannot and does not guarantee the reliability of any market data, technical indicators, or analytical outputs generated by the Platform.","Prior to executing any trades, you agree to either: (i) consult with a qualified, licensed financial professional; or (ii) conduct comprehensive independent research using multiple verified information sources.","Pixel Nexus Global expressly disclaims all liability for any trading losses, missed opportunities, or other financial consequences resulting from your reliance on Platform content. By continuing to use iccandle.ai, you confirm your understanding that our tools are designed for informational purposes only and that you alone bear complete responsibility for all investment choices and outcomes. This warning constitutes an essential term of our agreement, and your use of the Platform signifies your unconditional acceptance of these risk disclosures."]},{"title":"10. Disclaimer of Warranties and Service Limitations","paragraphs":["The Pixel Nexus Global platform (iccandle.ai), including all Services, scripts, reports, analytical engines, and related technology, is provided strictly on an \\"AS-IS\\" and \\"AS- AVAILABLE\\" basis. Pixel Nexus Global makes no representations or warranties of any kind, whether express or implied. This includes, but is not limited to, all implied warranties of non-infringement, merchantability, fitness for a particular purpose, accuracy, quality, or achievement of specific results. No warranties arise from any course of dealing, performance, or trade usage.","Pixel Nexus Global does not guarantee that the Service will meet your requirements, operate without interruption, remain error-free, or be secure from viruses or other harmful components. Compatibility with all websites or browsers is not assured, and Pixel Nexus Global disclaims all liability for issues arising from browser incompatibility or third-party services, even if such services appear integrated with our Platform. Any data transmitted via our Services remains your sole responsibility, and Pixel Nexus Global expressly disclaims liability for such content. No warranties provided by third- party vendors to Pixel Nexus Global extend to you, and you are not a third-party beneficiary of such agreements."],"subsections":[{"title":"Alert Features and Beta Functionality","paragraphs":["The Platform includes alert features (e.g., \\"Dynamic Price Alerts\\" and \\"Multi-Factor Alerts\\"), which are provided without warranty or guarantee of reliability. Technical delays or failures may occur due to cellular networks, email services, system errors, or other factors. You acknowledge that alerts may not function as intended and agree that Pixel Nexus Global bears no liability for trading losses resulting from reliance on these features, regardless of whether they were used correctly.","Certain features labeled as 'Beta' are under active development and may exhibit unstable or unreliable performance, including inconsistent data or incorrect information due to software bugs or programming errors. These Beta features carry additional risks and should be used with extreme caution."]},{"title":"General Provisions","paragraphs":["This warranty disclaimer applies to all oral or written information provided by Pixel Nexus Global, its employees, affiliates, or third-party vendors. You may not rely on any such statements or representations.","Some jurisdictions may not permit the exclusion of certain warranties. If applicable to you, any warranty claim must be filed within ninety (90) days of the Service provision that gave rise to the claim. Failure to submit a claim within this period constitutes an irrevocable waiver of your right to pursue such claims thereafter.","Third-party websites linked through the Pixel Nexus Global platform are not under our control, and we assume no responsibility for their content or functionality. Accessing these external sites is entirely at your own risk. Such links are provided for convenience only and do not constitute an endorsement or recommendation by Pixel Nexus Global.","By using the Platform, you acknowledge and accept these limitations and disclaimers in full."]}]},{"title":"11. Limitation of Liability","paragraphs":["Pixel Nexus Global's total liability under this Agreement shall not exceed the aggregate fees actually paid by you to Pixel Nexus Global during the one (1) month period immediately preceding the event giving rise to such liability. For purposes of this limitation, \\"Pixel Nexus Global\\" includes its employees, agents, owners, directors, officers, affiliates, and any third-party service providers facilitating the Services.","To the maximum extent permitted by law, you agree that under no circumstances - including negligence - shall Pixel Nexus Global or its licensors, agents, employees, officers, or third-party vendors be liable for any indirect, incidental, special, consequential, or punitive damages. This exclusion applies to, but is not limited to, damages for:"],"listOrdered":["Lost profits or revenue","Business interruption","Data loss or corruption","Lost savings","Any other financial losses incurred by you, end users, or third parties"],"paragraphsAfter":["These limitations apply regardless of whether the action arises in contract, tort (including negligence), or any other legal theory, and shall remain in effect even if Pixel Nexus Global has been advised of the possibility of such damages. While some jurisdictions may not allow limitations on certain liabilities, you agree that, where such restrictions apply, Pixel Nexus Global's liability shall be limited to the maximum extent permitted by applicable law.","This limitation of liability constitutes an essential basis of the bargain between you and Pixel Nexus Global and shall survive termination of this Agreement. By using the Services, you acknowledge that these limitations are reasonable and reflect the risk allocation between both parties."]},{"title":"12. Notices","paragraphs":["All official notices will be sent to your account’s listed contact information. You are responsible for maintaining current and accurate contact details in our records at all times.","For most inquiries, including technical support and billing matters, please visit our website at www.iccandle.ai for contact information and support options.","However, any legal notices regarding these Terms of Service or other Pixel Nexus Global policies must be sent exclusively via postal mail to our designated address:"],"address":{"company":"Pixel Nexus Global PTE. LTD.","lines":["160 Robinson Road, #14-04","Singapore Business Federation Center","Singapore 068914"]}},{"title":"13. Force Majeure","paragraphs":["Neither party shall be liable for any failure or delay in performance (except for payment obligations) due to events beyond their reasonable control, including, but not limited to, acts of God, natural disasters, war, civil unrest, epidemics, labor disputes, utility failures, telecommunication outages, supply chain disruptions, government actions, or other unforeseeable catastrophic events; provided that: (i) the affected party notifies the other in writing within ten (10) days of the event’s commencement; (ii) all payment obligations remain unaffected; (iii) the time for performance shall be extended day-for-day to match the duration of the disruption; and (iv) both parties use commercially reasonable efforts to mitigate the impact.","It is understood that this clause does not permit termination of the Agreement solely due to force majeure conditions, nor does it extend the Agreement term beyond its original expiration date without mutual written agreement."]},{"title":"14. No Waiver","paragraphs":["No failure or delay by Pixel Nexus Global in exercising any right under these Terms shall operate as a waiver of that right, nor shall any single or partial exercise of any right preclude the further or full exercise of that right or any other right under these Terms."]},{"title":"15. Assignment","paragraphs":["Pixel Nexus Global may assign these Terms, or any rights hereunder, without your consent. You may not assign these Terms without our prior written approval. These Terms shall be binding upon, and inure to the benefit of, the parties' respective successors and permitted assigns."]},{"title":"16. Severability","paragraphs":["If any provision of these Terms is held to be invalid or unenforceable by a court of competent jurisdiction, that provision shall be modified to the minimum extent necessary to make it valid and enforceable while preserving its original intent. All other provisions shall remain in full force and effect."]},{"title":"17. No Agency","paragraphs":["Nothing in these Terms creates an agency, partnership, joint venture or employment relationship between the parties. Neither party has authority to bind the other or incur obligations on the other's behalf."]},{"title":"18. Privacy & Conflicts","paragraphs":["Our Privacy Policy is incorporated herein by reference. In the event of a conflict between agreements: (i) these Terms prevail over the Privacy Policy; (ii) any separate service agreement shall prevail over conflicting provisions of these Terms, but only with respect to those specific provisions; and (iii) in all other cases, these Terms shall govern."]},{"title":"19. Jurisdiction and Disclaimer","paragraphs":["The services and information provided on iccandle.ai are not intended for use in jurisdictions where such services would be contrary to local laws or regulations. Access to and use of this website are strictly prohibited for citizens of the following jurisdictions: United States of America, Canada, Russian Federation, Iran, North Korea, Myanmar, Syria, Cuba, Crimea, Donetsk, and Luhansk regions of Ukraine, Afghanistan, Belarus, and Venezuela. This list may be updated at any time without prior notice. Users are solely responsible for ensuring that their access to and use of this website comply with all applicable laws and regulations in their country. iccandle.ai accepts no responsibility or liability for any non-compliance by users with their local regulatory requirements and reserves the right to restrict, block, or terminate access at its sole discretion."]}],"content":"Үйлчилгээний Нөхцөл (Terms of Service, TOS), Нөхцөлүүд, Анхааруулга, Гэрээ, Хэлэлцээр\\n\\nЭнэхүү гэрээ нь www.iccandle.ai сайтыг ажиллуулдаг Сингапурт бүртгэлтэй хязгаарлагдмал хариуцлагатай компани болох Pixel Nexus Global (“Pixel Nexus Global”, “бид”, “манай”, “бидний”) болон Платформоор дамжуулан санал болгож буй үйлчилгээг худалдан авч буй эсвэл ашиглаж буй хувь хүн, хуулийн этгээд (“Хэрэглэгч”, “та”, “таны”) хооронд байгуулагдана. Хэрэв та үйлчилгээнийг гуравдагч этгээдийн нэрийн өмнөөс авч байгаа бол тухайн этгээдийг эдгээр Үйлчилгээний Нөхцөлд хууль ёсоор үүрэг хүлээлгэх эрхтэйгээ баталгаажуулж, тэдгээрийн үйлчилгээний ашиглалтад хариуцлага хүлээнэ.\\n\\nЭнэхүү баримт бичигт дурдсан болон www.iccandle.ai сайтаар сурталчилсан Платформ болон Үйлчилгээнд нэвтрэх, эсвэл iccandle.ai сайтаар дамжуулан үйлчилгээ захиалах замаар та эдгээр Нөхцөл, Болзол болон Анхааруулгуудыг уншиж, ойлгож, зөвшөөрснөө баталгаажуулж байна. Мөн та бидэнтэй үүсэх харилцаа энэхүү TOS-д заасан нөхцлөөр зохицуулагдахыг зөвшөөрч байна. Хэрэв та эдгээр нөхцөлийг хүлээн зөвшөөрөхгүй бол iccandle.ai болон түүнтэй холбоотой бүх үйлчилгээ, платформын ашиглалтыг нэн даруй зогсоох ёстой.\\n\\n1. Үйлчилгээ\\n\\nPixel Nexus Global нь идэвхтэй бөгөөд зохих төлөвтэй хэрэглэгчдэд өөрийн хиймэл оюун ухаанд суурилсан аналитик хэрэгсэл (“Платформ”)-д нэвтрэх эрх олгоно. Энэхүү Гэрээнд “Үйлчилгээ” гэдэг нь Pixel Nexus Global-аас танд Платформд нэвтрэх боломж олгохыг хэлнэ.\\n\\nҮйлчилгээг iccandle.ai вэбсайт дээр таны захиалсан, бүртгүүлсэн, идэвхжүүлсэн эсвэл захиалгын дагуу, Pixel Nexus Global хүлээн зөвшөөрсөн нэг буюу хэд хэдэн захиалгын хүрээнд (“Захиалга”) үзүүлнэ.\\n\\nХэрэв энэхүү TOS болон Захиалгын хооронд зөрчил гарвал энэхүү TOS-ийн нөхцөл давамгайлна. Үйлчилгээг хүлээн зөвшөөрснөөр та Захиалга болон бусад хэлбэрээр санал болгосон өөр эсвэл нэмэлт нөхцлүүдийг Pixel Nexus Global албан ёсоор татгалзаж байгааг хүлээн зөвшөөрнө. Зөвхөн эрх бүхий төлөөлөгчийн гарын үсэг бүхий бичгээр тохиролцсон нөхцөл хүчин төгөлдөр байна.\\n\\n2. Таны Үүрэг\\nХэрэглэгчийн мэдээлэл болон дансны хариуцлага\\n\\nТа данс үүсгэхдээ, бидэнтэй бизнесийн харилцааны хугацаанд болон бидэнтэй харилцах бүх үед үнэн зөв мэдээлэл өгөхийг зөвшөөрч байна.\\n\\nБид зарим тохиолдолд үйлчилгээтэй холбоотой асуудлаар танд имэйл эсвэл утсаар холбогдох шаардлагатай байж болно. Та өдөр бүр шалгадаг хүчинтэй имэйл хаягтай байж, холбоо барих мэдээлэлд гарсан өөрчлөлтийг шуурхай мэдэгдэхийг зөвшөөрнө.\\n\\nPixel Nexus Global нь таны холбоо барих мэдээллийг шинэчлээгүйгээс үүдэн буруу хаягт хүргэгдсэн мэдээллээс үүсэх үйлчилгээний тасалдал, хохирол болон үр дагаварт хариуцлага хүлээхгүй.\\n\\nМөн биржийн зохицуулалтын шаардлагыг хангахын тулд платформ дээрх бүх мэдээллийн судалгааг бүрэн бөгөөд үнэн зөв бөглөхийг зөвшөөрнө.\\n\\nПлатформыг зөвшөөрөгдсөн хүрээнд ашиглах\\n\\nТа Платформыг энэхүү TOS болон биднээс өгсөн холбогдох баримт бичгийн дагуу ашиглана.\\n\\nХэрэв та гуравдагч этгээдэд Платформд нэвтрэх боломж олговол:\\n\\nТэдний ашиглалтыг эдгээр нөхцлийн хүрээнд хязгаарлах;\\nЭдгээр TOS болон манай Нууцлалын Бодлогыг мөрдүүлэх;\\nТэдгээр этгээдийн аливаа зөрчилд бүрэн хариуцлага хүлээх.\\nОюуны өмч болон хууль тогтоомжийн хэрэгжилт\\n\\nТа аливаа барааны тэмдэг, өмчийн мэдэгдлийг өөрчлөх, нуух эсвэл устгахгүй байхыг зөвшөөрч байна.\\n\\nТа Платформыг зөвхөн:\\nЭнэхүү TOS-ийг зохицуулж буй хууль тогтоомжийн дагуу;\\nТаны харьяалах улсын бүх холбогдох хууль тогтоомжийн дагуу ашиглах эрхтэй.\\nЗөвшөөрөлгүй ашиглалтыг хатуу хориглоно.\\n\\n3. Хугацаа\\nХүчин төгөлдөр болох өдөр\\nЭнэхүү Үйлчилгээний Нөхцөл (“Хүчин төгөлдөр болох өдөр”) дараах өдрүүдийн аль эрт болсон өдөр хүчин төгөлдөр болно:\\nМанай сервер дээр бүртгэгдсэн \\"Би зөвшөөрч байна\\" товчийг дарсан өдөр;\\nТа Платформд анх нэвтэрч эсвэл ашиглаж эхэлсэн өдөр.\\nЭнэхүү TOS нь аливаа идэвхтэй Захиалгын хугацаанд хүчинтэй байна.\\n\\nЗахиалгын хугацаа ба сунгалт\\nҮйлчилгээ нь таны Захиалгад заасан байдлаар (сар бүр, улирал тутам, жил бүр) автоматаар сунгагдана.\\nХэрэв хугацааг тодорхой заагаагүй бол анхны захиалгын хугацаа (“Анхны хугацаа”) нь нэг сар байна.\\nДараагийн сунгалтын хугацаа (“Сунгалтын хугацаа”) нь Анхны хугацаатай ижил байна.\\n\\nТуршилтын хугацаа\\nPixel Nexus Global нь төлбөртэй эсвэл үнэгүй туршилтын хугацааг санал болгож болно.\\n\\nТуршилтын хугацаанд:\\nЭнэхүү гэрээний бүх нөхцөл бүрэн үйлчилнэ.\\nАвтомат сунгалтаас зайлсхийхийн тулд та хүссэн үедээ цуцлах боломжтой.\\nТуршилтын нөхцөл урьдчилан мэдэгдэлгүйгээр өөрчлөгдөж болно.\\nЗахиалгыг удирдах хариуцлага\\n\\nТа дараах асуудлыг дангаараа хариуцна:\\nСунгалтын огноог хянах;\\nТөлбөрийн мэдээллээ шинэчлэх;\\nЦуцлалтыг эхлүүлэх;\\nХолбоо барих мэдээллээ шинэчлэх.\\nPixel Nexus Global нь таны захиалгыг удирдаагүйгээс үүсэх төлбөрт хариуцлага хүлээхгүй.\\n\\n4. Цуцлалт\\nЦуцлалт болон буцаан олголтын талаарх мэдээллийг iccandle.ai сайтын Буцаан олголт ба Цуцлалтын бодлогоос үзнэ үү.\\nДансаа цуцалсан нь зөвхөн автомат сунгалтыг зогсоох бөгөөд өмнөх нэхэмжлэхийг хүчингүй болгохгүй бөгөөд өмнөх төлбөрийг буцаан олгохгүй, хэрэв Буцаан олголтын бодлогод өөрөөр заагаагүй бол.\\nТөлөгдөөгүй бүх нэхэмжлэхийг бүрэн төлөх ёстой.\\nТаны үйлчилгээний эрх урьдчилан төлсөн хугацаа эсвэл туршилтын хугацаа дуусах хүртэл хүчинтэй байна.\\nСайн дурын үндсэн дээр цуцлах\\nАль ч тал анхны хугацаа эсвэл сунгалтын хугацаа дуусахаас дор хаяж нэг (1) хоногийн өмнө бичгээр мэдэгдэн цуцалж болно.\\n“Бичгээр мэдэгдэх” гэдэгт:\\nИмэйл\\nШууд чат\\nУтас\\nОнлайн портал\\nзэрэг бүх харилцааны хэлбэр орно.\\n\\nБодлого зөрчсөн тохиолдолд цуцлах\\nPixel Nexus Global дараах тохиолдолд үйлчилгээг шууд зогсоох, захиалгыг цуцлах эрхтэй:\\nЭнэхүү TOS-ийг зөрчсөн;\\nНууцлалын бодлогыг зөрчсөн;\\nХууль тогтоомж эсвэл нийтээр хүлээн зөвшөөрөгдсөн интернетийн стандартын эсрэг ашигласан.\\nИйм цуцлалт нь урьдчилсан мэдэгдэлгүй, маргаан шийдвэрлэх ажиллагаагүй, төлбөр буцаахгүйгээр хэрэгжиж болно.\\n\\n5. Лиценз олголт ба Хязгаарлалт\\nPixel Nexus Global нь танд өөрийн өмчийн технологи (“Pixel Nexus Technology”)-ийг зөвхөн аналитик хөдөлгүүрүүд болон үүсгэсэн тайлангууд (“Тайлан”) ашиглах зорилгоор ашиглах:\\nхязгаарлагдмал,\\nхүчингүй болгож болох,\\nонцгой бус,\\nшилжүүлэх боломжгүй,\\nдэлхий даяар хүчинтэй\\nлиценз олгож байна.\\nЭнэхүү лиценз нь зөвхөн таны дансанд бүртгэлтэй хэрэглэгчдэд хамаарах бөгөөд TOS дуусмагц автоматаар хүчингүй болно.\\n\\nТа дараах үйлдлийг хийхийг хориглоно:\\nШилжүүлэх;\\nТүрээслэх;\\nЗээлдүүлэх;\\nДахин худалдах;\\nТүгээх;\\nҮйлчилгээний товчооны зориулалтаар ашиглах;\\nЗөвшөөрөлгүй гуравдагч этгээдэд нэвтрэх боломж олгох;\\nХамгаалалтын механизмыг тойрон гарах;\\nӨөрчлөх;\\nХуулбарлах;\\nДекомпиляци хийх;\\nУрвуу инженерчлэл хийх;\\nҮүсмэл бүтээл гаргах.\\nГэрээ дууссаны дараа та бүх Pixel Nexus Technology-г ашиглахаа зогсоож, бүрмөсөн устгах ёстой.\\n\\n6. Өгөгдлийн ашиглалт ба Оюуны өмчийн эрх\\n\\nPixel Nexus Global нь таны өгсөн мэдээлэл болон платформын ашиглалтаас цуглуулсан мэдээллийг (“Үйл ажиллагааны мэдээлэл”) техникийн дэмжлэг, үйлчилгээний хэрэгжилт, үйл ажиллагаа, удирдлагад ашиглаж болно.\\nҮйлчилгээг ашигласнаар та бидэнд энэхүү мэдээллийг боловсруулах, шинжлэх байнгын бөгөөд хүчингүй болгож үл болох лиценз олгож байна.\\n\\nБид энэхүү мэдээллийг:\\nодоогийн үйлчилгээг сайжруулах;\\nшинэ бүтээгдэхүүн боловсруулах;\\nхудалдах;\\nмөнгөжүүлэх;\\nбусад үйлчилгээтэй нэгтгэх\\nзорилгоор ашиглаж болно.\\nЭнэхүү шинжилгээ болон сайжруулалтаас үүсэх бүх оюуны өмч Pixel Nexus Global-ийн онцгой өмч хэвээр байна.\\n\\n7. Мэдээллийн үнэн зөв байдлын тухай анхааруулга\\nPixel Nexus Global нь гуравдагч талын өгөгдлийн урсгалд тулгуурладаг тул платформ дээрх мэдээллийн үнэн зөв байдлыг бүрэн баталгаажуулах боломжгүй.\\nСканнер, автомат анализ, график, back testing зэрэг өөр өөр функцууд өөр өөр өгөгдөл нийлүүлэгч ашиглаж болох тул мэдээллийн зөрүү гарч болно.\\nХэрэглэгчид шинжилгээний үр дүнг үргэлж баталгаажуулах ёстой.\\n\\nПлатформын мэдээлэл нь зөвхөн:\\nмэдээллийн;\\nсудалгааны\\nзорилготой бөгөөд хөрөнгө оруулалтын шийдвэрийн цорын ганц үндэслэл болж болохгүй.\\n\\n8. Хөрөнгө оруулалтын зөвлөгөө биш тухай анхааруулга\\niccandle.ai платформын аналитик хэрэгсэл, үр дүн нь зөвхөн мэдээлэл, судалгааны зориулалттай бөгөөд хөрөнгө оруулалтын зөвлөгөө гэж үзэхгүй.\\nPattern Selector, Pattern Tracker, News Impact Intelligence зэрэг бүх анализ нь түүхэн өгөгдөл, магадлал, зах зээлийн өмнөх нөхцөл дээр үндэслэдэг бөгөөд ирээдүйн үр дүнг урьдчилан таамаглахгүй.\\nТа хөрөнгө оруулалтын шийдвэр гаргахдаа платформын анализд дангаар нь найдах ёсгүй.\\n\\n9. Эрсдэлийн тухай мэдэгдэл ба Хэрэглэгчийн хариуцлага\\nТа платформыг ашигласнаар:\\nхөрөнгө оруулалтын бүх шийдвэрийн эрсдэлийг бүрэн хүлээн зөвшөөрч;\\nзах зээлийн мэдээлэл, техникийн үзүүлэлт, аналитик үр дүнгийн найдвартай байдлыг Pixel Nexus Global баталгаажуулахгүйг ойлгож;\\nарилжаа хийхээс өмнө лицензтэй санхүүгийн зөвлөхтэй зөвлөлдөх эсвэл бие даасан судалгаа хийхийг зөвшөөрч байна.\\nPixel Nexus Global нь таны платформын мэдээлэлд найдан гаргасан аливаа шийдвэрээс үүдэх:\\nалдагдал;\\nболомж алдсан байдал;\\nбусад санхүүгийн үр дагаварт\\nямар ч хариуцлага хүлээхгүй.\\n\\n10. Баталгааны татгалзал ба Үйлчилгээний хязгаарлалт\\nPixel Nexus Global платформ, бүх үйлчилгээ, скрипт, тайлан, аналитик хөдөлгүүрүүд нь:\\n\\"AS-IS\\" (байгаа чигээр нь) болон\\n\\"AS-AVAILABLE\\" (боломжтой байгаа нөхцөлөөр)\\nүндсэн дээр олгогдоно.\\n\\nБид дараах баталгааг өгөхгүй:\\nтасралтгүй ажиллах;\\nалдаагүй байх;\\nвирусгүй байх;\\nбүх браузерт нийцэх;\\nтодорхой үр дүнд хүргэх.\\n11. Хариуцлагын хязгаарлалт\\nPixel Nexus Global-ийн нийт хариуцлага нь тухайн үйл явдал болохоос өмнөх нэг (1) сарын хугацаанд таны төлсөн нийт төлбөрөөс хэтрэхгүй.\\nPixel Nexus Global болон түүний ажилтан, төлөөлөгч, захирал, үйлчилгээ үзүүлэгч нь дараах хохиролд хариуцлага хүлээхгүй:\\nалдагдсан ашиг;\\nорлогын алдагдал;\\nбизнесийн тасалдал;\\nөгөгдлийн алдагдал;\\nхадгаламжийн алдагдал;\\nбусад шууд бус, тусгай, санамсаргүй эсвэл шийтгэлийн чанартай хохирол.\\n\\n12. Мэдэгдэл\\nАлбан ёсны бүх мэдэгдлийг таны дансанд бүртгэлтэй холбоо барих мэдээлэл рүү илгээнэ.\\nХууль зүйн мэдэгдлийг дараах хаягаар шуудангаар илгээнэ:\\nPixel Nexus Global PTE. LTD.\\n160 Robinson Road, #14-04\\nSingapore Business Federation Center\\nSingapore 068914\\n\\n13. Давагдашгүй хүчин зүйл (Force Majeure)\\nБайгалийн гамшиг, дайн, иргэний эмх замбараагүй байдал, халдварт өвчин, цахилгаан болон холбооны тасалдал, нийлүүлэлтийн доголдол, төрийн арга хэмжээ зэрэг талуудын хяналтаас гадуурх нөхцөлөөс үүдсэн сааталд аль ч тал хариуцлага хүлээхгүй.\\n\\n14. Эрхээс татгалзахгүй байх\\nPixel Nexus Global өөрийн эрхийг хэрэгжүүлэхгүй байх нь тухайн эрхээсээ татгалзсан гэсэн үг биш.\\n\\n15. Шилжүүлэг\\nPixel Nexus Global нь эдгээр Нөхцөлийг таны зөвшөөрөлгүйгээр шилжүүлэх эрхтэй.\\nТа манай урьдчилсан бичгээр зөвшөөрөлгүйгээр эдгээр Нөхцөлийг шилжүүлэх эрхгүй.\\n\\n16. Хэсэгчилсэн хүчин төгөлдөр байдал\\nХэрэв аль нэг заалт хүчин төгөлдөр бус гэж тогтоогдвол бусад бүх заалт бүрэн хүчин төгөлдөр хэвээр байна.\\n\\n17. Төлөөллийн харилцаа үүсгэхгүй\\nЭдгээр Нөхцөл нь талуудын хооронд:\\nагентлаг;\\nтүншлэл;\\nхамтарсан үйлдвэр;\\nхөдөлмөрийн харилцаа\\nүүсгэхгүй.\\n\\n18. Нууцлал ба Зөрчил\\nМанай Нууцлалын Бодлого энэхүү гэрээний нэг хэсэг болно.\\nХэрэв баримт бичгүүдийн хооронд зөрчил гарвал:\\nЭнэхүү Нөхцөл нь Нууцлалын Бодлогоос давамгайлна;\\nТусдаа үйлчилгээний гэрээ нь зөвхөн холбогдох заалтуудад давамгайлна;\\nБусад бүх тохиолдолд энэхүү Нөхцөл үйлчилнэ.\\n\\n19. Харьяалал ба Анхааруулга\\niccandle.ai-ийн үйлчилгээ нь тухайн улсын хууль тогтоомжийг зөрчих улс орнуудад ашиглагдах зориулалтгүй.\\nДараах улсын иргэдэд энэхүү вэбсайтад нэвтрэх, ашиглахыг хатуу хориглоно:\\nАмерикийн Нэгдсэн Улс\\nКанад\\nОХУ\\nИран\\nХойд Солонгос\\nМьянмар\\nСири\\nКуба\\nУкраины Крым, Донецк, Луганск бүсүүд\\nАфганистан\\nБеларусь\\nВенесуэл\\nЭнэхүү жагсаалтыг урьдчилан мэдэгдэлгүйгээр шинэчилж болно.\\nХэрэглэгчид өөрийн улсын хууль тогтоомжийг мөрдөх үүргийг бүрэн хүлээнэ.\\n\\niccandle.ai нь хэрэглэгчийн орон нутгийн зохицуулалтыг зөрчсөн үйлдэлд ямар нэгэн хариуцлага хүлээхгүй бөгөөд өөрийн үзэмжээр хандалтыг хязгаарлах, хориглох эсвэл цуцлах эрхтэй."},"Refund":{"title":"Буцаан олголт ба цуцлалтын бодлого","intro":"This Refund and Cancellation Policy (\\"Policy\\") governs refund and cancellation terms for services provided by Pixel Nexus Global Pte. Ltd. (\\"we,\\" \\"us,\\" \\"our\\") through the iccandle.ai platform (\\"Services\\"). This Policy is incorporated by reference into our Terms of Service and should be read in conjunction with those Terms.","sections":[{"title":"1. Definitions","definitions":[{"term":"Гишүүнчлэл","text":"A recurring paid access to the Services for a specified period (e.g., monthly or annually)."},{"term":"Billing Period","text":"The recurring time interval for which a Subscription fee is charged."},{"term":"Subscription Change","text":"Any upgrade or downgrade to a different Subscription plan."}]},{"title":"2. Cancellation Terms","subsections":[{"title":"Subscription Cancellation","listDisc":["You may cancel your Subscription at any time through your account dashboard or by contacting support.","Cancellation will take effect at the end of the current billing period; you will retain access to the Services through the end of that period.","Cancelling your Subscription does not automatically entitle you to a refund of fees already paid."]}]},{"title":"3. Refund Terms","subsections":[{"title":"3.1 General Rule","paragraphs":["Except as expressly provided in this Policy or required by applicable law, all fees paid for Subscriptions are non‑refundable once charged."]},{"title":"3.2 Refund Eligibility","paragraphs":["We may issue a refund at our sole discretion only in limited circumstances, including but not limited to:"],"listDisc":["Duplicate payments (verified duplicate charges will be refunded).","Technical errors that demonstrably prevented access to Services, where the error was not caused by user actions and is verified by us.","Applicable statutory rights under consumer protection law where these rights apply and cannot be waived."],"paragraphsAfter":["Refunds, if approved, will be processed to the original payment method within a commercially reasonable timeframe determined by payment processors and banking partners."]},{"title":"3.3 No Refund for Partial Use","paragraphs":["Refunds will not be issued for:"],"listDisc":["Partial use of the Services during a billing period.","Downgrades of Subscription plans.","Change of mind or business decisions after payment.","Subscription cancellations submitted after a billing cycle has renewed."]}]},{"title":"4. Subscription Changes (Upgrade or Downgrade)","paragraphs":["We provide two options when changing your Subscription plan:"],"subsections":[{"title":"4.1 Change Now","paragraphs":["If you select \\"Change Now,\\" your new plan will take effect immediately, and the associated charge will be applied.","Please note that no refunds, credits, or prorated adjustments will be provided for any unused portion of your current plan."]},{"title":"4.2 Change on Next Billing","paragraphs":["If you choose \\"Change on Next Billing,\\" your current plan will remain active until the end of the current Billing Period.","The new plan will take effect at the start of the next Billing Period.","No refunds or credits apply to the current Billing Period."]}]},{"title":"5. Cancellation After renewal","paragraphs":["If an automatic renewal has already occurred before you submit a cancellation request: The renewal fee is non-refundable. The cancellation will apply to the next Billing Period."]},{"title":"6. Chargebacks and Disputes","paragraphs":["We maintain a strict no-tolerance policy toward unjustified chargebacks.","Initiating a chargeback or payment dispute without first contacting us to seek resolution is considered a breach of this Refund and Cancellation Policy and our Terms of Service. Such actions may result in immediate suspension or permanent termination of your account, without notice, and forfeiture of access to the Services.","We reserve the right to challenge and dispute any chargeback that we deem unauthorized, abusive, or inconsistent with this Policy. This includes providing payment processors, banks, and financial institutions with all relevant evidence, including but not limited to:"],"listDisc":["Proof of service delivery and access logs","Account activity records","Acceptance of our Terms of Service and policies","Communication history with the customer"],"paragraphsAfter":["Customers are strongly encouraged to contact our support team first to resolve any billing concerns. We are committed to addressing legitimate issues in good faith; however, chargebacks used as a substitute for cancellation or refund requests will not be tolerated."]},{"title":"7. Modification of Policy","paragraphs":["We may update this Policy from time to time. Material changes will be posted on our website or communicated via email prior to taking effect. Continued use of the Services after such updates constitutes acceptance of the revised Policy."]},{"title":"8. Contact Information","paragraphs":["For all cancellation and refund requests, please contact our support team via our help center."]}],"content":"Буцаан олголт ба цуцлалтын бодлого\\n\\nЭнэхүү Буцаан олголт ба цуцлалтын бодлого (“Бодлого”) нь Pixel Nexus Global Pte. Ltd. (“бид,” “манай”) компанийн iccandle.ai платформ (“Үйлчилгээ”) дээр үзүүлж буй үйлчилгээний буцаан олголт болон цуцлалтын нөхцөлийг зохицуулна. Энэхүү Бодлого нь Үйлчилгээний Нөхцөлд тусгагдсан бөгөөд тэдгээртэй хамт уншина.\\n\\n1. Тодорхойлолтууд\\n\\nSubscription (Гишүүнчлэл): Тодорхой хугацаанд (жишээ нь сар бүр эсвэл жил бүр) төлбөртэйгээр үйлчилгээ авах эрх.\\n\\nBilling Period (Төлбөрийн мөчлөг): Гишүүнчлэлийн төлбөр давтагдан тооцогдох хугацааны интервал.\\n\\nSubscription Change (Гишүүнчлэлийн өөрчлөлт): Илүү өндөр эсвэл доогуур багц руу шилжих.\\n\\n2. Цуцлалтын нөхцөл\\n\\nГишүүнчлэл цуцлах\\n\\nТа өөрийн акаунтаар эсвэл дэмжлэгтэй холбогдон хүссэн үедээ цуцалж болно.\\nЦуцлалт тухайн төлбөрийн мөчлөгийн төгсгөлд хүчин төгөлдөр болно.\\nТа тухайн хугацааны төгсгөл хүртэл үйлчилгээг ашиглах эрхтэй хэвээр байна.\\nЦуцлалт нь өмнө төлсөн төлбөрийг автоматаар буцаан олгох үндэслэл болохгүй.\\n3. Буцаан олголтын нөхцөл\\n3.1 Ерөнхий дүрэм\\n\\nХуульд зааснаас бусад тохиолдолд, төлбөр хийгдсэн даруйд буцаан олголт хийхгүй.\\n\\n3.2 Буцаан олголт хийх боломжтой нөхцөл\\n\\nЗөвхөн дараах тохиолдолд бид өөрсдийн үзэмжээр буцаан олголт хийж болно:\\n\\nДавхар төлбөр (нотлогдсон давхардсан төлбөр)\\nТехникийн алдаа үйлчилгээний хүртээмжийг бодитоор хаасан бөгөөд хэрэглэгчийн үйлдлээс шалтгаалаагүй\\nХэрэглэгчийн хамгаалалтын хуульд заасан зайлшгүй эрхүүд\\n\\nБатлагдсан буцаан олголтыг төлбөрийн үйлчилгээ болон банкны хугацаанаас хамаарч боломжит хугацаанд шилжүүлнэ.\\n\\n3.3 Хэсэгчилсэн ашиглалтын буцаан олголтгүй\\n\\nДараах тохиолдолд буцаан олголт хийгдэхгүй:\\n\\nТөлбөрийн мөчлөг дотор хэсэгчлэн ашигласан\\nБагц бууруулсан\\nТөлбөр хийсний дараа бодлоо өөрчилсөн\\nШинэчлэгдсэн мөчлөгийн дараа цуцалсан\\n4. Гишүүнчлэлийн өөрчлөлт\\n4.1 Одоо өөрчлөх\\n\\nШинэ багц шууд идэвхжинэ. Ашиглагдаагүй хугацаанд буцаан олголт хийхгүй.\\n\\n4.2 Дараагийн мөчлөгөөс өөрчлөх\\n\\nОдоогийн багц хугацааны төгсгөл хүртэл үргэлжилнэ. Шинэ багц дараагийн мөчлөгөөс эхэлнэ.\\n\\n5. Шинэчлэлийн дараах цуцлалт\\n\\nАвтомат сунгалт хийгдсэний дараа цуцалбал тухайн төлбөр буцаагдахгүй бөгөөд дараагийн мөчлөгөөс цуцлагдана.\\n\\n6. Чаржбэк ба маргаан\\n\\nБид үндэслэлгүй чаржбэкийг хатуу хориглоно.\\n\\nЭхлээд бидэнтэй холбогдохгүйгээр банкны маргаан үүсгэх нь бодлого зөрчсөнд тооцогдоно. Үүний улмаас:\\n\\nАкаунт түр эсвэл бүрмөсөн хаагдах\\nҮйлчилгээний эрх цуцлагдах боломжтой\\n\\nБид шаардлагатай бүх нотлох баримтыг төлбөрийн байгууллагад гаргаж өгнө.\\n\\n7. Бодлогын өөрчлөлт\\n\\nБид энэхүү бодлогыг шинэчилж болно. Чухал өөрчлөлтүүдийг сайт эсвэл имэйлээр мэдэгдэнэ.\\n\\n8. Холбоо барих\\n\\nБуцаан олголт болон цуцлалтын хүсэлтээ дэмжлэгийн төвөөр дамжуулан илгээнэ."},"Privacy":{"title":"Нууцлалын бодлого","intro":"Энэхүү Нууцлалын бодлого нь Pixel Nexus Global Pte. Ltd. (“бид”, “манай” эсвэл “бидний”) таны манай вэбсайт, аппликейшн болон үйлчилгээ (нийтэд нь “Үйлчилгээ” гэж нэрлэнэ)-г ашиглах үед хувийн мэдээллийг хэрхэн цуглуулах, ашиглах, задруулах болон хамгаалах талаар тайлбарлана.","sections":[{"title":"1. Бидний цуглуулдаг мэдээлэл","paragraphs":["Бид дараах мэдээллийг цуглуулна:"],"listDisc":["Та манай Үйлчилгээнд бүртгүүлэх үед өгсөн имэйл хаяг","Үйлчилгээ ашиглалтын мэдээлэл, үүнд функцүүдтэй харилцсан байдал, үзсэн хуудсууд, сессийн үйл ажиллагаа болон ерөнхий ашиглалтын хэв маяг багтана. Эдгээрийг манай Үйлчилгээний ажиллагаа, гүйцэтгэл болон хэрэглэгчийн туршлагыг сайжруулах зорилгоор цуглуулна"],"paragraphsAfter":["Бид төлбөрийн картын мэдээлэл эсвэл бусад эмзэг төлбөрийн мэдээллийг цуглуулах, хадгалах эсвэл боловсруулахгүй."]},{"title":"2. Төлбөр ба Stripe","paragraphs":["Бүх төлбөрийн гүйлгээг гуравдагч этгээдийн төлбөрийн үйлчилгээ үзүүлэгч Stripe боловсруулна.","Таныг төлбөр хийх үед Stripe нь төлбөртэй холбоотой мэдээлэл (жишээ нь картын мэдээлэл, төлбөрийн хаяг, гүйлгээний мэдээлэл)-ийг шууд цуглуулж боловсруулна. Энэ мэдээлэл нь Stripe-ийн Нууцлалын бодлого болон PCI-DSS аюулгүй байдлын стандартын дагуу хамгаалагдана.","Бид Stripe-ээс зөвхөн Үйлчилгээг ажиллуулахад шаардлагатай хязгаарлагдмал мэдээллийг хүлээн авна. Үүнд:"],"listDisc":["Төлбөр баталгаажсан эсэх","Захиалгын (subscription) төлөв","Гүйлгээний таних дугаарууд"],"paragraphsAfter":["Бид таны бүрэн төлбөрийн мэдээлэлд хандах боломжгүй.","Stripe-ийн Нууцлалын бодлогыг эндээс үзнэ үү:"],"stripePrivacyUrl":"https://stripe.com/privacy"},{"title":"3. Таны мэдээллийг хэрхэн ашиглах вэ","paragraphs":["Бид цуглуулсан имэйл хаягийг дараах зорилгоор ашиглана:"],"listDisc":["Үйлчилгээг үзүүлэх, ажиллуулах, хадгалах","Ашиглалтын мэдээлэлд дүн шинжилгээ хийж бүтээгдэхүүний ажиллагаа, гүйцэтгэл болон хэрэглэгчийн туршлагыг сайжруулах","Техникийн мэдэгдэл, шинэчлэлт болон дэмжлэгийн мэдээлэл хүргэх","Бүтээгдэхүүн, үйлчилгээ, функц болон арга хэмжээний талаар мэдээлэх"]},{"title":"4. Мэдээлэл хуваалцах","paragraphs":["Бид таны хувийн мэдээллийг худалдахгүй.","Бид мэдээллийг зөвхөн дараах этгээдүүдтэй хуваалцаж болно:"],"listDisc":["Манай үйл ажиллагааг дэмждэг үйлчилгээ үзүүлэгчид (хостинг, аналитик болон Stripe зэрэг төлбөрийн боловсруулалт)","Хууль, нягтлан бодлого эсвэл нийцлийн зөвлөхүүд","Хууль эсвэл эрх зүйн шаардлагын дагуу шаардлагатай үед хууль сахиулах байгууллага болон зохицуулагчид"],"paragraphsAfter":["Бүх гуравдагч талын үйлчилгээ үзүүлэгчид хувийн мэдээллийг холбогдох хууль тогтоомжийн дагуу боловсруулах үүрэгтэй."]},{"title":"5. Таны эрх","paragraphs":["Таны байршлаас хамааран дараах эрхүүд танд байж болно:"],"listDisc":["Хувийн мэдээлэлдээ хандах","Имэйл хаягаа засах эсвэл шинэчлэх","Имэйл хаягаа устгах хүсэлт гаргах","Зарим мэдээлэл боловсруулах үйл ажиллагааг эсэргүүцэх эсвэл хязгаарлуулах"],"paragraphsAfter":["Төлбөрийн мэдээлэлтэй холбоотой хүсэлтийг Stripe руу шууд илгээх шаардлагатай, учир нь Stripe нь тухайн мэдээллийн өгөгдлийн хянагч юм."]},{"title":"6. Гуравдагч этгээдийн бодлого","paragraphs":["Манай Үйлчилгээ нь Stripe зэрэг гуравдагч үйлчилгээ үзүүлэгчдээс хамаардаг. Тэд хувийн мэдээллийг хэрхэн боловсруулах нь өөрсдийн нууцлалын бодлогоор зохицуулагддаг тул тэдгээрийг уншиж танилцахыг зөвлөж байна."]},{"title":"7. Бидэнтэй холбогдох","paragraphs":["Энэхүү Нууцлалын бодлого эсвэл манай мэдээллийн практикын талаар асуулт байвал дараах хаягаар холбогдоно уу:","support@iccandle.ai"]}],"content":"Нууцлалын бодлого\\n\\nЭнэхүү Нууцлалын бодлого нь Pixel Nexus Global Pte. Ltd. (“бид”, “манай” эсвэл “бидний”) таны манай вэбсайт, аппликейшн болон үйлчилгээ (нийтэд нь “Үйлчилгээ” гэж нэрлэнэ)-г ашиглах үед хувийн мэдээллийг хэрхэн цуглуулах, ашиглах, задруулах болон хамгаалах талаар тайлбарлана.\\n\\n1. Бидний цуглуулдаг мэдээлэл\\nБид дараах мэдээллийг цуглуулна:\\nТа манай Үйлчилгээнд бүртгүүлэх үед өгсөн имэйл хаяг\\nҮйлчилгээ ашиглалтын мэдээлэл, үүнд функцүүдтэй харилцсан байдал, үзсэн хуудсууд, сессийн үйл ажиллагаа болон ерөнхий ашиглалтын хэв маяг багтана. Эдгээрийг манай Үйлчилгээний ажиллагаа, гүйцэтгэл болон хэрэглэгчийн туршлагыг сайжруулах зорилгоор цуглуулна\\nБид төлбөрийн картын мэдээлэл эсвэл бусад эмзэг төлбөрийн мэдээллийг цуглуулах, хадгалах эсвэл боловсруулахгүй.\\n\\n2. Төлбөр ба Stripe\\nБүх төлбөрийн гүйлгээг гуравдагч этгээдийн төлбөрийн үйлчилгээ үзүүлэгч Stripe боловсруулна.\\nТаныг төлбөр хийх үед Stripe нь төлбөртэй холбоотой мэдээлэл (жишээ нь картын мэдээлэл, төлбөрийн хаяг, гүйлгээний мэдээлэл)-ийг шууд цуглуулж боловсруулна. Энэ мэдээлэл нь Stripe-ийн Нууцлалын бодлого болон PCI-DSS аюулгүй байдлын стандартын дагуу хамгаалагдана.\\nБид Stripe-ээс зөвхөн Үйлчилгээг ажиллуулахад шаардлагатай хязгаарлагдмал мэдээллийг хүлээн авна. Үүнд:\\nТөлбөр баталгаажсан эсэх\\nЗахиалгын (subscription) төлөв\\nГүйлгээний таних дугаарууд\\nБид таны бүрэн төлбөрийн мэдээлэлд хандах боломжгүй.\\nStripe-ийн Нууцлалын бодлогыг эндээс үзнэ үү: https://stripe.com/privacy\\n\\n3. Таны мэдээллийг хэрхэн ашиглах вэ\\nБид цуглуулсан имэйл хаягийг дараах зорилгоор ашиглана:\\nҮйлчилгээг үзүүлэх, ажиллуулах, хадгалах\\nАшиглалтын мэдээлэлд дүн шинжилгээ хийж бүтээгдэхүүний ажиллагаа, гүйцэтгэл болон хэрэглэгчийн туршлагыг сайжруулах\\nТехникийн мэдэгдэл, шинэчлэлт болон дэмжлэгийн мэдээлэл хүргэх\\nБүтээгдэхүүн, үйлчилгээ, функц болон арга хэмжээний талаар мэдээлэх\\n\\n4. Мэдээлэл хуваалцах\\nБид таны хувийн мэдээллийг худалдахгүй.\\nБид мэдээллийг зөвхөн дараах этгээдүүдтэй хуваалцаж болно:\\nМанай үйл ажиллагааг дэмждэг үйлчилгээ үзүүлэгчид (хостинг, аналитик болон Stripe зэрэг төлбөрийн боловсруулалт)\\nХууль, нягтлан бодлого эсвэл нийцлийн зөвлөхүүд\\nХууль эсвэл эрх зүйн шаардлагын дагуу шаардлагатай үед хууль сахиулах байгууллага болон зохицуулагчид\\nБүх гуравдагч талын үйлчилгээ үзүүлэгчид хувийн мэдээллийг холбогдох хууль тогтоомжийн дагуу боловсруулах үүрэгтэй.\\n\\n5. Таны эрх\\nТаны байршлаас хамааран дараах эрхүүд танд байж болно:\\nХувийн мэдээлэлдээ хандах\\nИмэйл хаягаа засах эсвэл шинэчлэх\\nИмэйл хаягаа устгах хүсэлт гаргах\\nЗарим мэдээлэл боловсруулах үйл ажиллагааг эсэргүүцэх эсвэл хязгаарлуулах\\nТөлбөрийн мэдээлэлтэй холбоотой хүсэлтийг Stripe руу шууд илгээх шаардлагатай, учир нь Stripe нь тухайн мэдээллийн өгөгдлийн хянагч юм.\\n\\n6. Гуравдагч этгээдийн бодлого\\nМанай Үйлчилгээ нь Stripe зэрэг гуравдагч үйлчилгээ үзүүлэгчдээс хамаардаг. Тэд хувийн мэдээллийг хэрхэн боловсруулах нь өөрсдийн нууцлалын бодлогоор зохицуулагддаг тул тэдгээрийг уншиж танилцахыг зөвлөж байна.\\n\\n7. Бидэнтэй холбогдох\\nЭнэхүү Нууцлалын бодлого эсвэл манай мэдээллийн практикын талаар асуулт байвал дараах хаягаар холбогдоно уу:\\n\\nsupport@iccandle.ai"},"Cookie":{"title":"Күүкийн бодлого","intro":["This Cookie Policy explains how Pixel Nexus Global Pte. Ltd. (\\"we\\", \\"us\\", or \\"our\\") uses cookies and similar technologies when you visit or use iccandle.ai and related services (collectively, the \\"Services\\").","This Policy should be read together with our Privacy Policy."],"sections":[{"title":"1. What Are Cookies?","paragraphs":["Cookies are small text files placed on your device when you visit a website. They are widely used to make websites work efficiently, enhance user experience, and provide information to website operators.","Cookies may be:"],"listDisc":["Session cookies (deleted when you close your browser), or","Persistent cookies (stored for a set period or until deleted)."]},{"title":"2. Types of Cookies We Use","subsections":[{"title":"2.1 Strictly Necessary Cookies","paragraphs":["These cookies are essential for the operation of our Services and cannot be switched off. They are required to:"],"listDisc":["Enable secure login and authentication","Maintain user sessions","Protect against fraud and abuse"],"paragraphsAfter":["Without these cookies, the Services cannot function properly."]},{"title":"2.2 Functional Cookies","paragraphs":["These cookies allow us to remember your preferences and settings, such as:"],"listDisc":["Language or regional preferences","Account-related selections"],"paragraphsAfter":["They improve usability but are not strictly necessary."]},{"title":"2.3 Analytics and Performance Cookies","paragraphs":["We use analytics cookies to understand how users interact with our Services. These cookies collect information such as:"],"listDisc":["Pages visited and features used","Session duration and interaction patterns","Error and performance data"],"paragraphsAfter":["This information is used solely to improve our product, functionality, and user experience. Analytics data is aggregated and does not directly identify individual users."]},{"title":"2.4 Third-Party Cookies","paragraphs":["Some cookies are placed by third-party service providers that support our Services, including:"],"listDisc":["Payment processing services (e.g., Stripe)","Analytics and infrastructure providers"],"paragraphsAfter":["These third parties may use cookies in accordance with their own privacy and cookie policies."]}]},{"title":"3. What We Do NOT Use Cookies For","listDisc":["We do not use cookies for advertising or behavioral targeting","We do not sell cookie data","We do not use cookies to collect sensitive personal information"]},{"title":"4. Managing Cookies","paragraphs":["You can manage or disable cookies through your browser settings. Most browsers allow you to:"],"listDisc":["View cookies stored on your device","Delete existing cookies","Block cookies entirely or from specific websites"],"paragraphsAfter":["Please note that disabling certain cookies may affect the functionality and performance of the Services."]},{"title":"5. Changes to This Cookie Policy","paragraphs":["We may update this Cookie Policy from time to time to reflect changes in technology, law, or our practices. Material changes will be posted on our website. Continued use of the Services after changes take effect constitutes acceptance of the updated Policy."]},{"title":"6. Contact Us","paragraphs":["If you have any questions about this Cookie Policy or our use of cookies, please contact us at:","support@iccandle.ai"]}],"content":"Күүкийн бодлого\\n\\nЭнэхүү Күүкийн бодлого нь Pixel Nexus Global Pte. Ltd. (“бид”, “манай”) компанийн iccandle.ai болон түүнтэй холбоотой үйлчилгээ (“Үйлчилгээ”) ашиглах үед күүки болон ижил төстэй технологийг хэрхэн ашигладаг талаар тайлбарлана.\\n\\nЭнэхүү бодлогыг Нууцлалын бодлоготой хамт унших ёстой.\\n\\n1. Күүки гэж юу вэ?\\n\\nКүүки нь вэбсайт руу зочлох үед таны төхөөрөмж дээр хадгалагддаг жижиг текст файл юм. Тэдгээр нь:\\n\\nВэбсайтыг үр ашигтай ажиллуулах\\nХэрэглэгчийн туршлагыг сайжруулах\\nВэбсайт эзэмшигчдэд мэдээлэл өгөх зорилготой.\\n\\nКүүки нь:\\n\\nSession cookies (хөтөч хаахад устдаг)\\nPersistent cookies (тодорхой хугацаанд хадгалагдана)\\n2. Бидний ашигладаг күүкийн төрлүүд\\n2.1 Заавал шаардлагатай күүки\\n\\nЭдгээр нь Үйлчилгээний үндсэн ажиллагаанд шаардлагатай бөгөөд унтраах боломжгүй.\\n\\nАюулгүй нэвтрэлт баталгаажуулалт\\nХэрэглэгчийн сесс хадгалах\\nЛуйвар болон зөрчлөөс хамгаалах\\n2.2 Функциональ күүки\\n\\nЭдгээр нь таны тохиргоог санахад ашиглагдана:\\n\\nХэл болон бүсийн тохиргоо\\nБүртгэлтэй холбоотой сонголтууд\\n2.3 Аналитик болон гүйцэтгэлийн күүки\\n\\nХэрэглэгчид манай Үйлчилгээг хэрхэн ашиглаж байгааг ойлгоход ашиглагдана:\\n\\nХуудас үзсэн байдал\\nСеанс хугацаа\\nАлдаа ба гүйцэтгэлийн мэдээлэл\\n\\nЭдгээр нь бүтээгдэхүүн, ажиллагаа, хэрэглэгчийн туршлагыг сайжруулах зорилготой бөгөөд хувь хүнийг шууд танихгүй.\\n\\n2.4 Гуравдагч талын күүки\\n\\nЗарим күүкиг гуравдагч үйлчилгээ үзүүлэгчид байрлуулдаг:\\n\\nТөлбөрийн үйлчилгээ (жишээ нь Stripe)\\nАналитик болон дэд бүтцийн үйлчилгээ\\n\\nЭдгээр нь өөрсдийн бодлогоор зохицуулагдана.\\n\\n3. Бид күүкиг юунд ашигладаггүй вэ\\nЗар сурталчилгаа болон зан төлөвийн зорилтот сурталчилгаанд ашиглахгүй\\nКүүки мэдээллийг худалдахгүй\\nМэдрэмтгий хувийн мэдээлэл цуглуулахгүй\\n4. Күүки удирдах\\n\\nТа браузерийн тохиргоогоор күүкиг удирдах боломжтой:\\n\\nКүүки харах\\nУстгах\\nБлоклох\\n\\nЗарим күүкиг унтраах нь үйлчилгээний ажиллагаанд нөлөөлж болзошгүй.\\n\\n5. Бодлогын өөрчлөлт\\n\\nБид энэ бодлогыг шинэчилж болно. Чухал өөрчлөлтүүдийг вэбсайтад нийтэлнэ. Үргэлжлүүлэн ашиглах нь шинэчлэлтийг хүлээн зөвшөөрсөнд тооцогдоно.\\n\\n6. Холбоо барих\\n\\nsupport@iccandle.ai"}}`),sg={Common:Lf,Confirmation:Ff,DateFormat:Gf,Alert:Bf,TimeConfig:jf,Loading:Uf,Auth:zf,Navbar:Hf,Guide:Yf,Pricing:qf,Settings:Wf,Referral:_f,Layout:Vf,News:Kf,Selector:Jf,UserActivity:Xf,Pattern:Zf,PatternCatalog:Qf,sQuestion_pattern:$f,sQuestion_general:eg,sQuestion_news:tg,justLanguage:ng,profile:ig,Landing:rg,NotFound:ag,Legal:og},lg={or:"ИЛИ",error:"Ошибка",warning:"Предупреждение",cancel:"Отмена",continuing:"Продолжение...",email:"Электронная почта",password:"Пароль",termsOfService:"Условия использования",privacyPolicy:"Политика конфиденциальности",continueWithGoogle:"Продолжить с Google",continuingWithGoogle:"Продолжаем с Google...",signIn:"Войти",signUp:"Регистрация",agreeAndContinue:"Согласиться и продолжить",changePlan:"Сменить план",upgradePlan:"Повысить план +",manageBilling:"Управление оплатой",getInTouch:"Связаться с нами",copyright:"© {year} IC Candle, Inc. Все права защищены.",session:"Сессия",sessions:"Сессии",activeWorkspaces:"Активные рабочие пространства",date:"Дата",product:"Продукт",plan:"План",planNames:{free:"Бесплатный план",standard:"Стандартный план",pro:"План Pro",expert:"План Expert"},status:"Статус",amount:"Сумма",detail:"Детали",total:"Итого",prioritySupport:"Приоритетная поддержка",all:"Все",minutely:"Ежеминутно",hourly:"Ежечасно",daily:"Ежедневно",chatAssistant:"Чат-ассистент",timeframes:"Таймфреймы",symbols:"Символы",timeSettings:"Настройки времени",step:"Шаг {number}:",learnMore:"Подробнее",success:"Успешно",validationError:"Ошибка валидации",previous:"Назад",next:"Далее",saving:"Сохранение...",save:"Сохранить",saveChanges:"Сохранить изменения",nextStep:"Следующий шаг",columnTimeframe:"ТАЙМФРЕЙМ",columnSymbol:"СИМВОЛ",columnDescription:"ОПИСАНИЕ",symbol:"Символ",timeframe:"Таймфрейм",candles:"Свечи",up:"Вверх",down:"Вниз",play:"Воспроизвести",close:"Закрыть",simulate:"Симулировать",actual:"Факт",forecast:"Прогноз",interestRate:"Процентная ставка",soon:"Скоро",back:"Назад",similarity:"Сходство",nextCandles:"Следующие {count}",nextCandlesFull:"Следующие {count} свечей",probabilityOutcome:"Вероятный исход:",estimatedProbability:"оценочная вероятность:",riskDisclaimer:"Финансовые рынки связаны с высоким уровнем риска и могут привести к потере капитала. iC Candle предоставляет информацию только в образовательных целях и не дает финансовых рекомендаций. Результаты в прошлом не гарантируют результаты в будущем.",rangeTooFarToRender:"Диапазон слишком далек для отображения.",marketSessions:"Рыночные сессии",askTradingQuestion:"Задайте вопрос о трейдинге",mrCandleThinking:"Mr. Candle думает...",simulateBullishPriceAction:"Симулировать бычье движение цены",simulateBearishPriceAction:"Симулировать медвежье движение цены",dismiss:"Скрыть",loadingMore:"Загрузка...",savedPatternDeleted:"Сохраненный паттерн удален"},cg={confirm:"Подтвердить",deletePatternTitle:"Удалить паттерн",deletePatternDescription:"Вы уверены, что хотите удалить этот паттерн?",deleteAllNotificationsTitle:"Удалить все уведомления",deleteAllNotificationsDescription:"Вы уверены, что хотите удалить все уведомления?",disableSignalsTitle:"Отключить сигналы",disableSignalsDescription:"Вы уверены, что хотите отключить сигналы?",disableSignalsForDescription:"Вы уверены, что хотите отключить сигналы для {patternTitle}?",togglePatternModeTitle:"Переключить режим паттерна",togglePatternModeDisableDescription:"Вы уверены, что хотите отключить этот паттерн?",togglePatternModeEnableDescription:"Вы уверены, что хотите включить этот паттерн?",closeFeatureDescription:"Вы уверены, что хотите закрыть эту функцию?"},ug={today:"Сегодня",yesterday:"Вчера",day:"{count, plural, one {# день} few {# дня} many {# дней} other {# дня}}",hour:"{count, plural, one {# час} few {# часа} many {# часов} other {# часа}}",minute:"{count, plural, one {# минута} few {# минуты} many {# минут} other {# минуты}}",zeroMinutes:"0 минут",dayShort:"д",hourShort:"ч",minuteShort:"мин",zeroMin:"0мин",justNow:"Только что",minutesAgo:"{count, plural, one {# минуту назад} few {# минуты назад} many {# минут назад} other {# минуты назад}}",hoursAgo:"{count, plural, one {# час назад} few {# часа назад} many {# часов назад} other {# часа назад}}",daysAgo:"{count, plural, one {# день назад} few {# дня назад} many {# дней назад} other {# дня назад}}",monthsAgo:"{count, plural, one {# месяц назад} few {# месяца назад} many {# месяцев назад} other {# месяца назад}}",yearsAgo:"{count, plural, one {# год назад} few {# года назад} many {# лет назад} other {# года назад}}"},dg={classicPatternTracker:"Трекер классических паттернов",trackedPatternReminder:"Напоминание об отслеживаемом паттерне",classicPattern:"Классический паттерн",trackedPattern:"Отслеживаемый паттерн",enableClassicNotifications:"Включите уведомления в реальном времени для классических ценовых формаций",waitingForPatternSignals:"Ожидание сигналов паттернов",noPatternsDetected:"Сейчас паттерны не обнаружены",signalsActiveDescription:"Ваши сигналы активны. Мы уведомим вас, как только будут найдены совпадающие паттерны",noCustomPatternDetected:"Сейчас {patternName} не обнаружен",trackMorePatternsByScan:"Отслеживайте больше паттернов, перейдя в сканирование",seeMore:"Смотреть больше"},hg={title:"Настройки времени",description:"Выберите локальное временное окно, в котором могут срабатывать оповещения о паттернах.",startTime:"Время начала",endTime:"Время окончания",session:"Сессия",timezone:"Часовой пояс",yourTimezone:"Ваш часовой пояс",selectSession:"Выберите сессию",searchSession:"Поиск сессии...",noSessionFound:"Сессия не найдена.",sessionsHeading:"Сессии",selectTimezone:"Выберите часовой пояс",selectTimezoneHint:"Найдите и выберите часовой пояс для этого оповещения.",searchTimezone:"Поиск часового пояса...",noTimezoneFound:"Часовой пояс не найден.",timezonesHeading:"Часовые пояса",allTime:"Все время",customize:"Настроить",newYorkSession:"Нью-Йоркская сессия",londonSession:"Лондонская сессия",tokyoSession:"Токийская сессия",sydneySession:"Сиднейская сессия"},pg={newsScan:{analyzing:"Анализ текущего новостного события...",searching:"Поиск исторически похожих новостных публикаций...",ranking:"Ранжирование наиболее релевантных похожих новостей...",preparingReplay:"Подготовка похожих новостей для воспроизведения...",ready:"Похожие новостные события готовы к анализу влияния."},newsAi:{replaying:"Воспроизведение исторических ценовых движений...",startingSimulation:"Запуск модели симуляции влияния...",calculatingScenarios:"Расчет сценариев роста и падения...",complete:"Симуляция завершена."},selectorScan:{scanning:"Сканирование 20+ лет рыночной истории...",finding:"Поиск структурно похожих паттернов...",linking:"Связывание поведения рынка с базовыми драйверами...",preparing:"Подготовка структурированных исторических датасетов...",ready:"Паттерны готовы к воспроизведению и анализу исходов."},selectorAi:{replaying:"Воспроизведение исторического поведения паттернов...",learning:"Изучение паттернов влияния на основе прошлых движений...",calculating:"Расчет динамики ценового движения...",initializing:"Инициализация модели симуляции...",complete:"Симуляция завершена."}},mg={Layout:{tagline:"Создано для трейдеров, которые ценят понимание, а не шум"},Legal:{termsAndPrivacy:"Условия и конфиденциальность",googleTermsDescription:"Продолжая через Google, вы соглашаетесь с нашими <terms></terms> и <privacy></privacy>.",legalAgreement:"Я согласен(-на) с <terms></terms> и <privacy></privacy>.",pleaseAgreeToContinue:"Пожалуйста, согласитесь, чтобы продолжить",pleaseAgreeDescription:"Чтобы продолжить через Google, вы должны согласиться с Условиями использования и Политикой конфиденциальности."},SignIn:{dontHaveAccount:"Нет аккаунта?",googleVerifyingAuthorization:"Google проверяет авторизацию...",invalidCredentials:"Неверные учетные данные",invalidEmail:"Неверный адрес электронной почты",emailRequired:"Email обязателен",passwordRequired:"Пароль обязателен",pleaseCheckInfo:"Пожалуйста, проверьте данные еще раз",emailPlaceholder:"Введите личный или рабочий email",change:"Изменить",forgotPassword:"Забыли пароль",continueWithEmail:"Продолжить с email"},SignUp:{repeatPassword:"Повторите пароль",termsAgreement:"Продолжая, вы соглашаетесь с нашими <terms></terms> и <privacy></privacy>",continueWithEmail:"Продолжить с email",alreadyHaveAccount:"Уже есть аккаунт?",signUpError:"Произошла ошибка при регистрации."},PasswordRecovery:{title:"Восстановление пароля",emailRequired:"Email обязателен!",emailPlaceholder:"your@example.com",sendConfirmationCode:"Отправить код подтверждения",somethingWrong:"Что-то пошло не так",pleaseWaitAndRetry:"Пожалуйста, подождите и попробуйте снова",confirmationCodeSent:"Код подтверждения отправлен",checkYourEmail:"Пожалуйста, проверьте вашу почту"},ResetPassword:{title:"Сброс пароля",confirmationCode:"Код подтверждения",confirmationCodeRequired:"Код подтверждения обязателен.",newPassword:"Новый пароль",repeatNewPassword:"Повторите новый пароль",passwordMinLength:"Пароль должен содержать не менее 8 символов.",repeatPasswordMinLength:"Повторный пароль должен содержать не менее 8 символов.",passwordsMustMatch:"Пароли должны совпадать.",pleaseStartAgain:"Пожалуйста, начните заново",resetSuccess:"Сброс выполнен",useNewPassword:"Пожалуйста, используйте новый пароль",passwordNotConfirmed:"Пароль не подтвержден!"},Confirm:{title:"Подтвердите аккаунт",codeSentTo:"Код подтверждения отправлен на:",otpDescription:"Введите одноразовый пароль, отправленный на вашу почту.",otpLength:"OTP должен содержать 6 символов.",turnstileError:"Произошла ошибка в Turnstile",confirmError:"Ошибка при подтверждении: {message}",confirm:"Подтвердить"}},fg={features:{title:"Функции",patternSelector:{title:"Селектор паттернов",subtitle:"Анализирует вашу идею на основе исторических рыночных данных, чтобы найти похожие ценовые паттерны и результаты."},patternTracker:{title:"Трекер паттернов",subtitle:"Непрерывно сканирует рынок в фоновом режиме и уведомляет вас, когда появляется соответствующий паттерн."},newsImpact:{title:"Влияние новостей",subtitle:"Показывает, как прошлые новостные публикации повлияли на движение цены, чтобы вы могли увидеть, как рынок реагировал ранее."}},resources:{title:"Ресурсы",learnAndUse:{title:"Изучайте и применяйте",subtitle:"Изучайте аналитические концепции и эффективное использование платформы."},updatesAndInsights:{title:"Обновления и инсайты",subtitle:"Новости и обновления о том, что мы создаем и исследуем."},whoWeAre:{title:"Кто мы",subtitle:"Кто мы, во что верим и почему создаем этот продукт."},helpCenter:{title:"Центр помощи",subtitle:"Найдите помощь, инструкции и ответы, когда это нужно."}},pricing:{title:"Тарифы"}},gg={badge:"Функции",title:"Аналитика рынка на базе ИИ для более разумных решений",description:"Используйте передовую аналитику и исторические данные для поиска паттернов, анализа реакции рынка и понимания вероятностей перед принятием решений.",creditUsage:"Использование кредитов",resetAfter:"Сброс через",resetAfterColon:"Сброс через:",useThisFeature:"Использовать эту функцию",automateNow:"Автоматизировать сейчас",analyzeNow:"Анализировать сейчас",inSession:"Вы в сессии",sessionActive:"Сессия сейчас активна",continueSession:"Продолжить сессию",pageHeader:{account:{title:"Профиль",infoTitle:"Ваш аккаунт",infoDescription:"Управляйте настройками, предпочтениями и подключениями"},subscription:{title:"Подписка",infoTitle:"Ваш план",infoDescription:"Управляйте планом, биллингом и платежами"},support:{title:"Поддержка",infoTitle:"Получить помощь",infoDescription:"Найдите ответы на вопросы и свяжитесь с нашей службой поддержки"},referral:{title:"Сообщество",infoTitle:"Программа роста сообщества",infoDescription:"Приглашайте друзей, получайте возвраты, растите вместе"}}},yg={chooseYour:"Выберите свой",plan:"план",annualPromo:`Получите более 2 месяцев бесплатно
49
- при годовой подписке`,monthly:"Ежемесячно",yearly:"Ежегодно",yearlyBadge:"-20%",comparePlans:"Сравнить планы",compareSubtitle:"Полная детализация того, что включено в каждый уровень.",usage:"ИСПОЛЬЗОВАНИЕ",usageSection:"Использование",features:"ФУНКЦИИ",featuresSection:"Функции",freePricePerMonth:"$0 / месяц",pricePerMonth:"{price} / месяц",patternSelector:"Селектор паттернов",patternTracker:"Трекер паттернов",newsImpact:"Влияние новостей",scanResultLimit:"Лимит результатов сканирования",historicalData:"Исторические данные",webhook:"Webhook",patternExport:"Экспорт паттернов",scansPerDay:"{count} сканов / день",scansPerDayDefault:"2 скана / день",patternsCount:"{count} паттернов",perDay:"{count} / день",perDayDefault:"1 / день",tabsCount:"{count} вкладок",tabsCountDefault:"1 вкладка",limited:"Ограничено",historicalYears:"20+ лет",included:"✓",notIncluded:"—",planChangedSuccess:"План успешно изменен на {planTitle}!",subscriptionSuccess:"Подписка на {planTitle} успешно оформлена!",paymentSuccessful:"Оплата прошла успешно!",planUpdated:"Ваш план обновлен.",planUpdatedDescription:"Ваш план обновлен. Вы можете сразу начать пользоваться новыми функциями.",subscriptionActive:"Ваша подписка теперь активна.",subscriptionActiveDescription:"Ваша подписка на {planTitle} теперь активна. Спасибо за покупку!",manageBillingInfo:"Управляйте вашей платежной информацией",continueToApp:"Перейти в приложение",loadingPaymentDetails:"Загрузка данных об оплате...",paymentError:"Ошибка оплаты",noSessionId:"ID сессии не указан",goToApp:"Перейти в приложение",alreadySubscribedPlan:"Вы уже подписаны на этот план.",activeSubscriptionManage:"У вас уже есть активная подписка. Пожалуйста, управляйте биллингом для смены плана.",planChangeScheduled:"Смена плана запланирована",planChangeScheduledDesc:"Ваш план будет переключен на {planTitle} в следующую дату списания.",alreadyOnPlan:"Вы уже на этом плане",changePlanFailed:"Не удалось сменить план. Пожалуйста, используйте Управление оплатой.",alreadyActiveSubscription:"У вас уже есть активная подписка",noChangesMade:"Изменения не внесены",alreadyOnPlanDesc:"Вы уже на плане {planTitle}.",badgeFree:"Бесплатно",badgePopular:"Популярный",badgeBestDeal:"Лучшее предложение",badgeMaximumAccess:"Максимальный доступ",freeForEveryone:"Бесплатно для всех",usdPerMonth:"USD/месяц",yearlyAmount:"{amount} USD / год",monthlyAmount:"{amount} USD / месяц",currentPlan:"Текущий план",startForFree:"Начать бесплатно",getPlan:"Выбрать {planTitle}",switchToPlan:"Перейти на {planTitle}",changePlanConfirmTitle:"Подтверждение смены плана",changePlanConfirmDesc:"Сейчас у вас план {currentPlan}. Выберите, когда должна вступить в силу новая цена.",changeNextBilling:"Сменить в следующее списание",changeNow:"Сменить сейчас",confirmNextBillingTitle:"Подтвердите смену в следующее списание",confirmNextBillingDesc:"Вы уверены, что хотите запланировать смену плана на следующую дату списания? Ваш текущий план {currentPlan} останется активным до этого момента. В следующую дату списания ваш план будет переключен на {planTitle} ({amount}).",yesChangeNextBilling:"Да, сменить в следующее списание",continueToCheckout:"Перейти к оплате",freeCheckoutDesc:"Сейчас у вас бесплатный план. Перейдите к оплате, чтобы подписаться на {planTitle}.",continue:"Продолжить",agreeRefundPolicy:"Я согласен(-на) с <link>Политикой возврата и отмены</link>.",everythingInPlan:"Все в плане <plan></plan>",plans:{free:{title:"Бесплатно",subtitle:"Изучайте и пробуйте",heading3:"Лучше всего для индивидуальных трейдеров"},standard:{title:"Стандарт",subtitle:"Анализируйте уверенно",heading3:"Лучше всего для индивидуальных трейдеров"},pro:{title:"Про",subtitle:"Анализируйте глубже",heading3:"Командный и профессиональный уровень"},expert:{title:"Эксперт",subtitle:"Анализируйте без ограничений",heading3:"Для профессиональных трейдеров"}},planFeatures:{categories:{candleScanner:"Сканер свечей",candleSignal:"Свечной сигнал"},labels:{patternSelector:"Селектор паттернов",patternTracker:"Трекер паттернов",newsImpact:"Влияние новостей",scanResultLimit:"Лимит результатов сканирования",activeTabs:"Активные вкладки",timeframes:"Таймфреймы",webhook:"Webhook"},values:{scansPerDay:"{count} сканов в день",patterns:"{count}",perDay:"{count}",tabsWorkspace:"{count} (рабочее пространство)",enabled:"Включено",disabled:"Выключено"}}},bg={Connections:{connectedAccount:"Подключенный аккаунт",creditUsage:"Использование кредитов",totalCreditsUsed:"Всего использовано кредитов",resetsIn:"Сброс через {duration}",understandingCredits:"Как работают кредиты и использование",nearLimit:"Почти достигнут лимит"},Subscription:{myPlan:"Мой план",thanksForSubscribing:"Спасибо за подписку!",billingHistory:"История платежей",nextBillingDate:"Следующая дата списания",whichPlan:"Какой план вам подходит?",patternSelectorCreditsPerDay:"{count} кредитов Селектора паттернов / день",patternTrackerCreditsPerDay:"{count} кредитов Трекера паттернов / день",newsImpactCreditsPerDay:"{count} кредитов Влияния новостей / день",chatAssistantCreditsPerDay:"{count} кредитов Чат-ассистента / день",prioritySupport:"Приоритетная поддержка"},Billing:{noInvoices:"Счета не найдены.",loadError:"Не удалось загрузить счета. Пожалуйста, попробуйте позже.",viewInvoice:"Посмотреть счет"}},vg={referralRebate:"Реферальный возврат",referredUsers:"Приглашенные пользователи",totalRebateEarned:"Всего заработано возвратов",referredUsersCount:"Приглашенные пользователи",activeReferrals:"Активные рефералы",referralLink:"Реферальная ссылка",shareDescription:"Поделитесь своей реферальной ссылкой с друзьями. Когда они оформят подписку, вы получите возврат с их плана.",joinedDate:"Дата присоединения",loading:"Загрузка...",noReferralCodeAvailable:"Реферальный код недоступен",updateReferralCodeTitle:"Обновить реферальный код",createReferralCodeTitle:"Создать реферальный код",updateReferralCodeDescription:"Обновите ваш реферальный код ниже.",createReferralCodeDescription:"Введите реферальный код, чтобы начать делиться своей реферальной ссылкой.",enterReferralCodePlaceholder:"Введите реферальный код",enterReferralCode:"Пожалуйста, введите реферальный код",codeCreatedSuccess:"Реферальный код успешно создан",codeUpdatedSuccess:"Реферальный код успешно обновлен",codeMinChars:"Минимум 5 символов",codeMaxChars:"Максимум 15 символов",create:"Создать",update:"Обновить",pageNumber:"Страница {page}",noReferredUsersYet:"Пока нет приглашенных пользователей",shareReferralEmptyDescription:"Поделитесь своей реферальной ссылкой, чтобы начать расширять сеть и получать возвраты."},wg={mainMenu:{coreFeatures:"Функции",account:"Аккаунт",subscription:"Подписка",communityGrowthProgram:"Программа роста сообщества",support:"Поддержка",others:"Другое"},patternMenu:{trackedPatterns:{label:"Мои отслеживаемые паттерны",tooltipTitle:"Сетапы паттернов с высокой вероятностью, обнаруженные AI",tooltipDescription:"iC Candle отслеживает глобальные рынки 24/7, чтобы находить ваши отслеживаемые паттерны, показывая уровни уверенности и направление пробоя. Используйте фильтры, чтобы найти лучшие сетапы, затем нажмите на любой паттерн для подробностей."},classicPatterns:{label:"Классические паттерны",tooltipTitle:"Классические паттерны",tooltipDescription:"Выберите паттерны, которые вам важны — двойные вершины, head & shoulders, флаги, прямоугольники и другие — затем активируйте сигналы. Мы будем отслеживать каждый тик на выбранных рынках и уведомим вас в момент завершения формации. Настройте доставку через telegram, email или in‑app уведомления, чтобы не пропустить сетап."}},helperBar:{watchList:"Список наблюдения",savedPatterns:"Сохраненные паттерны",newsMovingMarket:"Что двигает MARKET?",favoritesCount:"Избранное ({count})",groupWithCount:"{label} ({count})",noItemsInWatchList:"Список наблюдения пуст",watchListLast:"Посл.",watchListChg:"Изм.",watchListChgPercent:"Изм.%",removeFromFavorites:"Удалить из избранного",addToFavorites:"Добавить в избранное",removeSymbolFromFavorites:"Удалить {symbol} из избранного",addSymbolToFavorites:"Добавить {symbol} в избранное",groupCommodity:"Товары",groupForex:"Форекс",groupCrypto:"Крипто",groupIndices:"Индексы",groupStock:"Акции"},profileMenu:{darkTheme:"Темная тема",chatWithUs:"Написать нам",termsAndConditions:"Условия и положения",logOut:"Выйти"},tabAdded:"Вкладка добавлена",tabMemoryWarning:"Добавление большего количества вкладок может увеличить использование памяти на вашем устройстве.",tabLimitReached:"Достигнут лимит вкладок",tabLimitReachedMax:"Вы достигли максимального количества вкладок, доступного в вашем текущем плане.",tabLimitReachedUpgrade:"Вы достигли максимального количества вкладок, доступного в вашем текущем плане. Пожалуйста, обновите план, чтобы получить больше.",notifications:"Уведомления",noNotifications:"Нет уведомлений",notificationsOfflineReconnect:"(Офлайн) Пожалуйста, переподключите уведомления",headerNav:{selectorTitle:"Селектор паттернов",selectorShortTitle:"Селектор",patternTitle:"Трекер паттернов",patternShortTitle:"Трекер",newsTitle:"Влияние новостей",newsShortTitle:"Новости"},guideFeatures:{selector:{title:"Селектор паттернов",description:"Анализирует вашу идею на основе исторических рыночных данных, чтобы найти похожие ценовые паттерны и результаты."},pattern:{title:"Трекер паттернов",description:"Непрерывно сканирует рынок в фоновом режиме и уведомляет вас, когда появляется соответствующий паттерн."},news:{title:"Влияние новостей",description:"Показывает, как прошлые новостные публикации повлияли на движение цены, чтобы вы могли увидеть, как рынок реагировал ранее."}}},xg={mostSimilarNews:"Наиболее похожие новости:",selectEvent:"Выберите событие",economicCalendarAnalysis:"Анализ экономического календаря",economicCalendar:"Экономический календарь",predictAvailable:"Прогноз доступен",predictUnavailable:"Прогноз недоступен",actualReleased:"Факт опубликован",analyzeImpact:"Анализировать влияние",candleDataTooFar:"Свечные данные слишком далеко от события.",tryAnotherTimeframe:"Пожалуйста, попробуйте другой таймфрейм.",aiIntelligence:"Искусственный интеллект",matchPercent:"{percent}% совпадение",whatHappenedOnNews:"Что произошло на этой новости:",newsBeforeEvent:"Новости до события {eventName}",time15MinLater:"Через 15 мин",time30MinLater:"Через 30 мин",time1HourLater:"Через 1 час",time2HoursLater:"Через 2 часа",time4HoursLater:"Через 4 часа",noDataHere:"Здесь нет данных",pleaseWaitAndRetry:"Пожалуйста, подождите и попробуйте снова",current:"Текущий",previousMonth:"Предыдущий месяц",nextMonth:"Следующий месяц",holiday:"Выходной",seeAll:"Смотреть все",selectedSymbols:"Выбранные символы",marketNews:"Рыночные новости",patternType:"Тип паттерна",unknownPublishDate:"Неизвестная дата публикации",noMatchingArticleDetails:"Нет деталей совпадающей статьи",model:"Модель",temperature:"Температура",temperatureLow:"Низкая",temperatureMedium:"Средняя",temperatureHigh:"Высокая",previousActual:"Предыдущее фактическое значение:",currentForecast:"Текущий прогноз",previousForecast:"Предыдущий прогноз:",goToEventDetail:"Перейти к деталям события",eventInfoNotFound:"Информация о событии не найдена",ppi:"Индекс цен производителей измеряет изменения цен на товары и услуги, продаваемые производителями и заводами.",cpi:"Индекс потребительских цен измеряет изменения цен на товары и услуги, приобретаемые потребителями.",coreCpi:"Базовый индекс CPI измеряет изменения потребительских цен без учёта продуктов питания и энергии; ключевой инфляционный индикатор центральных банков.",jolts:"Обследование вакансий и текучести рабочей силы (JOLTS) измеряет количество незаполненных вакансий в США.",nfp:"Число занятых в несельскохозяйственном секторе (Nonfarm Payrolls) измеряет изменение числа рабочих мест в США, исключая сельское хозяйство и некоторые сектора.",ijc:"Первичные заявки на пособие по безработице измеряют количество людей, впервые подавших заявление на пособие по безработице в США, что отражает состояние рынка труда.",fomc:"Федеральный комитет по открытым рынкам (FOMC) — центральный банк США, который устанавливает процентные ставки и проводит денежно-кредитную политику.",fedRate:"Объявление о решении по процентной ставке Федеральной резервной системы (ФРС), которое устанавливает целевую ставку федеральных фондов и влияет на денежно-кредитную политику и финансовые рынки.",gdpAdvance:"Валовой внутренний продукт (ВВП) измеряет общую стоимость товаров и услуг, произведённых в экономике. Предварительный ВВП — это первая оценка.",gdpMonthly:"Валовой внутренний продукт (ВВП) измеряет общую стоимость товаров и услуг, произведённых в экономике. Ежемесячные отчёты отслеживают краткосрочный рост (например, ВВП Великобритании м/м).",unemploymentRate:"Уровень безработицы измеряет процент безработных в рабочей силе.",ahe:"Средняя почасовая заработная плата измеряет месячное изменение заработной платы работников, исключая сельскохозяйственных работников.",corePce:"Базовый индекс PCE измеряет месячное изменение личных потребительских расходов без учёта продуктов питания и энергии; ключевой инфляционный показатель ФРС.",retailSales:"Розничные продажи измеряют месячное изменение общего объёма продаж в розничной торговле.",ismManufacturingPmi:"ISM индекс деловой активности в производстве измеряет состояние производственного сектора США на основе опросов; значения выше 50 означают рост.",ismServicesPmi:"ISM индекс деловой активности в сфере услуг измеряет состояние сектора услуг США на основе опросов; значения выше 50 означают рост.",gdpPrelim:"Предварительный ВВП — это вторая оценка квартального роста ВВП; измеряет общую стоимость товаров и услуг в экономике.",adpNfp:"Изменение занятости в частном секторе ADP измеряет изменение занятости на основе опроса ADP/Moody's; опережающий индикатор официального Nonfarm Payrolls.",eci:"Индекс стоимости труда (ECI) измеряет квартальное изменение стоимости труда, включая зарплаты и льготы; ключевой инфляционный показатель ФРС.",flashManufacturingPmi:"Предварительный индекс PMI в производстве — оценка производственной активности на основе опросов; значения выше 50 означают рост.",flashServicesPmi:"Предварительный индекс PMI в сфере услуг — оценка активности сектора услуг на основе опросов; значения выше 50 означают рост.",claimantCount:"Изменение числа заявок на пособие по безработице в Великобритании измеряет месячное изменение числа получателей пособий по безработице; ключевой показатель рынка труда Великобритании.",boeRate:"Базовая ставка Банка Англии устанавливается Комитетом по денежно-кредитной политике; она определяет политику Великобритании и рынок фунта.",ecbMainRefinancingRate:"Основная ставка рефинансирования ЕЦБ — ключевая ставка Европейского центрального банка для операций ликвидности; определяет политику еврозоны и рынок евро.",snbPolicyRate:"Политическая ставка Швейцарского национального банка (SNB) — ключевая процентная ставка (на базе SARON); определяет денежно-кредитную политику Швейцарии и рынок CHF.",cadEmploymentChange:"Изменение занятости в Канаде измеряет месячное изменение числа занятых по данным Статистического управления Канады; ключевой индикатор рынка труда и CAD."},Pg={matchPercent:"Совпадение {percent}%",matchLabel:"Совпадение",mismatch:"Несовпадение",noResultsFound:"Результаты не найдены",result:"Результат",filter:"Фильтр",filterBy:"Фильтровать по",clearFilter:"Сбросить фильтр",selectFilterType:"Выберите тип фильтра",matchPercentLabel:"Совпадение %",selectSymbol:"Выберите символ",selectMatchPercent:"Выберите % совпадения",selectDateRange:"Выберите диапазон дат",dateLast1Month:"Последний 1 месяц",dateLast6Months:"Последние 6 месяцев",dateLastYear:"Последний год",dateLast3Years:"Последние 3 года",dateAllTime:"За все время",noDataFound:"Данные не найдены",runScanToSeePatternResults:"Запустите сканирование, чтобы увидеть результаты паттернов здесь",scanAgainToPlay:"Сканируйте снова, чтобы воспроизвести график",scan:"Сканировать",activateSelector:"Активировать селектор",resetAfterDuration:"Сброс через: {duration}",markets:"Рынки",scannerOptions:"Параметры сканера",saveOptions:"Сохранить параметры",searchSymbol:"Поиск символа",probabilityCalculation:"Расчет вероятности",probabilityCalculationTooltip:"Определяет количество следующих свечей, используемых для расчета вероятности.",period:"Период",periodTooltip:"Ищет с выбранного периода.",timeframeTooltip:"Определяет свечной таймфрейм для результатов сканирования.",topResultsTooltip:"Определяет количество результатов сканирования.",auto:"Авто",settings:"Настройки",collapseToolbar:"Свернуть панель",expandToolbar:"Развернуть панель",availableBars:"Доступные размеры: 10-50, 60, 70, 80, 90, 100",clearReplayFirst:"Сначала очистите график воспроизведения",pleaseLoginFirst:"Пожалуйста, сначала войдите в систему",trackPattern:"Отслеживать паттерн",selectAll:"Выбрать все",searchTimeframe:"Поиск таймфрейма",selectAllTimeframes:"Выбрать все таймфреймы",selectTimeframeAria:"Выбрать таймфрейм {label}",selectSymbolAria:"Выбрать символ {symbol}",timeframeTypeMinutes:"Минуты",searchFilterSaved:"Поисковый фильтр успешно сохранен.",periodAll:"Все",periodLastYear:"Последний год",periodLast3Years:"Последние 3 года",periodLast5Years:"Последние 5 лет",periodLast15Years:"Последние 15 лет",topResults:"Лучшие результаты",tabSymbols:"Символы",tabAdvancedOptions:"Расширенные параметры",tabBasic:"Базовые",tabAdvancedFilter:"Расширенный фильтр",priceMovementData:"Данные движения цены:",askAssistantExplanation:"Попросить ассистента объяснить",selectCandleCount:"Выберите количество свечей",priceChanges:"Изменения цены",candlesCount:"{count} свечей",basedOnDirectionPatterns:'На основе паттернов после движения "{direction}"',noAiMovementData:"Нет AI-данных о движении в направлении {direction}",scannerOptionsDescription:"Настройте символы и параметры сканирования.",alwaysShow:"Всегда показывать",aiModel:"Модель AI Intelligence",aiTemperature:"Температура AI",aiModelTooltipLight:"Обучена на данных за последние 2 года.",aiModelTooltipPro:"Обучена на всех исторических данных.",aiTemperatureTooltip:"Определяет уровень согласованности AI-прогнозов."},Sg={scannedAt:"Сканировано:",trackerActivated:"Tracker активирован",match:"Совпадение: {percent}%",result:"Результат",windowSize:"Размер окна: {size}",patternSelectorHistory:"История Селектора паттернов",noFilter:"Без фильтра",favorite:"Избранное",windowSizeFilter:"Размер окна",windowSizePlaceholder:"Размер окна (10-50)",submit:"Отправить"},Tg={trackYourCustomPatterns:"Отслеживайте свои кастомные паттерны",selectedSymbol:"Выбранный символ",selectedSymbols:"Выбранные символы",timezone:"Часовой пояс",selectedTimeframes:"Выбранные таймфреймы",moreItems:"{count, plural, one {еще # элемент} few {еще # элемента} many {еще # элементов} other {еще # элемента}}",selectedBars:"Выбранные бары",barsCount:"{count} баров",timeFrame:"Таймфрейм",patternType:"Тип паттерна",created:"Создан",editPattern:"Редактировать паттерн",createNewTracker:"Создать новый трекер",firstYouHaveToScan:"Сначала нужно выполнить сканирование",goToScan:"Перейти к сканированию",addToPatternTracker:"Добавить в Трекер паттернов",goToPatternTracker:"Перейти в Трекер паттернов",addToPatternTrackerDescription:"Вы будете получать обновления в реальном времени, когда появится этот паттерн. Введите имя, чтобы легче распознавать это оповещение.",patternName:"Название паттерна",patternNamePlaceholder:"Введите название для этого паттерна",patternNameMinChars:"Требуется минимум 5 символов.",patternNameMaxChars:"Достигнут лимит 20 символов.",patternNameErrorTitle:"Ошибка названия паттерна",patternNameErrorDescription:"Пожалуйста, введите имя для сигнала паттерна",customPatternSignalTooltip:"Вы получите уведомление, как только паттерн сформируется на рынке как сигнал пользовательского паттерна",noPatternDataFound:"Данные паттерна не найдены",limitReached:"Лимит достигнут",limitReachedTrackerDescription:"Вы достигли максимального количества трекеров паттернов.",trackerUpgradeToastDescription:"Вы достигли максимального количества сигналов, разрешенных в вашем текущем плане. Пожалуйста, обновите план, чтобы получить больше.",patternConfigUpdated:"Конфигурация паттерна обновлена",patternConfigUpdatedDesc:'Конфигурация паттерна "{name}" была обновлена',patternConfigError:"Ошибка конфигурации паттерна",patternConfigErrorDesc:"Не удалось обновить конфигурацию паттерна",patternSaved:"Паттерн сохранен",patternSavedDesc:'Название паттерна "{name}" сохранено',patternSignalError:"Ошибка сигнала паттерна",patternSignalErrorDesc:"Не удалось сохранить паттерн",trackerTutorialPlanLimitExpert:"Ваш план имеет лимит отслеживания паттернов: {limit}.",trackerTutorialPlanNoTracking:"Ваш план не включает отслеживание паттернов. Наши более высокие планы позволяют добавлять паттерны в трекер.",trackerTutorialPlanTrackingLimit:"Ваш план позволяет отслеживать до {limit} паттернов. Наши более высокие планы позволяют отслеживать больше паттернов.",currentPlan:"Текущий план",planFree:"Бесплатный",configurePatternTracker:"Настроить Трекер паттернов",selectTimeframesAndSymbols:"Выберите таймфреймы и символы, которые вы хотите отслеживать для этого паттерна.",selectTimeframes:"Выберите таймфреймы",chooseTimeframes:"Выберите таймфреймы, которые вы хотите отслеживать для этого паттерна.",searchTimeframes:"Поиск таймфреймов",timeframeSelected:"Выбран {count} таймфрейм",timeframesSelected:"Выбрано {count} таймфреймов",symbolSelected:"Выбран {count} символ",symbolsSelected:"Выбрано {count} символов",patternSelected:"Выбран {count} паттерн",patternsSelected:"Выбрано {count} паттернов",patternTypes:"Типы паттернов",patternSubscribed:"Паттерн подписан",patternSubscribedDesc:"Паттерн «{name}» теперь отслеживается",patternSubscriptionError:"Ошибка подписки на паттерн",subscriptionModalAria:"Подписка на трекер паттернов",noPatternCandles:"Свечи паттерна не найдены",chartSymbolRequired:"Символ графика обязателен",userIdRequired:"ID пользователя обязателен",subscribe:"Подписаться",subscribing:"Подписка...",tabTimeShort:"Время",signalDialog:{title:"Настройки сигнала - {patternTitle}",successDescription:"Настройки сигнала успешно обновлены",selectOneTimeframe:"Пожалуйста, выберите хотя бы один таймфрейм",selectOneSymbol:"Пожалуйста, выберите хотя бы один символ",selectOneTimeframeAndSymbol:"Пожалуйста, выберите хотя бы один таймфрейм и один символ",selectCurrencyPairs:"Выберите валютные пары",chooseCurrencyPairs:"Выберите валютные пары, которые хотите отслеживать по паттернам",searchCurrencyPairs:"Поиск валютных пар"},noMatchesFound:"Совпадения не найдены",filterCategoryPattern:"Паттерн",filterCategorySymbol:"Символ",filterCategoryTimeframe:"Таймфрейм",selectCategory:"Выберите категорию",searchCategory:"Поиск {category}...",timeframeOptions:{M15:{displayName:"15 минут",description:"Таймфрейм 15 минут"},M30:{displayName:"30 минут",description:"Таймфрейм 30 минут"},H1:{displayName:"1 час",description:"Таймфрейм 1 час"},H2:{displayName:"2 часа",description:"Таймфрейм 2 часа"},H4:{displayName:"4 часа",description:"Таймфрейм 4 часа"},D:{displayName:"1 день",description:"Дневной таймфрейм"}}},kg={priceActionPattern:"Паттерн ценового движения",labels:{flagbear:"Bearish Flag",flagbull:"Bullish Flag",dd_top:"Double Top",dd_bot:"Double Bottom",aad_up:"AAD Up",aad_down:"AAD Down",has_bull:"Head and Shoulders Bullish",has_bear:"Head and Shoulders Bearish",rectangle:"Rectangle"},timeframes:{M1:"1 минута",M5:"5 минут",M15:"15 минут",M30:"30 минут",H1:"1 час",H2:"2 часа",H4:"4 часа",D1:"Дневной"},patterns:{doubleBottom:{desc:'<div><p>Эти паттерны формируются, когда цена дважды тестирует один и тот же уровень и не может его пробить.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Это показывает, что рынок теряет импульс в одном направлении.</li><li>Пробой за пределы диапазона обычно сигнализирует о приближении разворота.</li></ul></div>'},doubleTop:{desc:'<div><p>Эти паттерны формируются, когда цена дважды тестирует один и тот же уровень и не может его пробить.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Это показывает, что рынок теряет импульс в одном направлении.</li><li>Пробой за пределы диапазона обычно сигнализирует о приближении разворота.</li></ul></div>'},bullishFlag:{desc:'<div><p>Короткая пауза или консолидация после сильного движения (вверх или вниз).</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Цена движется в небольшом наклонном канале против тренда.</li><li>После выхода из флага тренд часто продолжается в том же направлении.</li></ul></div>'},bearishFlag:{desc:'<div><p>Короткая пауза или консолидация после сильного движения (вверх или вниз).</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Цена движется в небольшом наклонном канале против тренда.</li><li>После выхода из флага тренд часто продолжается в том же направлении.</li></ul></div>'},bullishHeadShoulders:{desc:'<div><p>Этот паттерн показывает изменение силы рынка и сигнализирует о возможном развороте тренда.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Он состоит из трех частей: одного более крупного движения ("голова") и двух меньших ("плечи").</li><li>Когда паттерн завершен, цена часто пробивается и идет в направлении, противоположном предыдущему тренду.</li></ul></div>'},bearishHeadShoulders:{desc:'<div><p>Этот паттерн показывает изменение силы рынка и сигнализирует о возможном развороте тренда.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Он состоит из трех частей: одного более крупного движения ("голова") и двух меньших ("плечи").</li><li>Когда паттерн завершен, цена часто пробивается и идет в направлении, противоположном предыдущему тренду.</li></ul></div>'}}},Cg={chartPatterns:"Какие бывают паттерны на графике?",flagPattern:"Как эффективно торговать паттерн флаг?",rectanglePattern:"Какие ключевые особенности паттерна прямоугольник?"},Ag={pip:"Что такое пункт (pip)?",majorCurrencyPairs:"Какие основные валютные пары для торговли?",lotSize:"Что такое размер лота?",leverage:"Что такое кредитное плечо?",margin:"Что такое маржа?",bullishFlagTrack:"Отслеживать бычий флаг на всех символах и таймфреймах"},Ng={cpi:"Что такое CPI и как он влияет на рынок?",nfp:"Что такое NFP и как он влияет на рынок?",eurImpactfulNews:"Какие новости наиболее влияют на рынок USD?"},Dg="lang",Rg="Профиль",Eg={statistics:{heading:"Тысячи трейдеров уже изменили то, как они видят рынок.",tradersReport:"7 из 10 трейдеров сообщают об улучшении стабильности своих торговых решений.",satisfactionRate:'96% бета-тестеров отметили удовлетворенность и сказали: "Ощущение, будто торгуешь с мозгом рядом."',usersChanged:"Более 80% пользователей говорят, что iC Candle изменил их подход к анализу рынка.",lessTimeWatching:"В среднем пользователь тратит на 40% меньше времени на наблюдение за графиками благодаря напоминаниям о паттернах."},feedback:{backtestingTitle:"Похоже на бэктестинг нового уровня.",backtestingDesc:"Бэктестинг в iC Candle — это реально переломный момент. Невероятно, насколько все стало быстрее и понятнее. Я реально в восторге. Трудно представить активного трейдера, который мог бы работать без этого.",confirmsTitle:"Подтверждает мои сетапы",confirmsDesc:"Омг, наконец-то инструмент, который реально доказывает, что мой собственный анализ валиден. С тех пор как я начал использовать iCCandle, моя нерешительность в трейдинге упала примерно на 80%. Сейчас я намного увереннее.",marketHistoryTitle:"История рынка ведет мои сделки",marketHistoryDesc:"Использование исторических реакций в моих сделках стало моим новым стилем. Ценность, которую я получаю, по сравнению с тем, сколько плачу за подписку? Вообще несравнимо.",chatGPTTitle:"ChatGPT трейдера",chatGPTDesc:"Я использую ChatGPT буквально для всего в повседневной жизни, все знают, насколько это упрощает дела. И честно... кажется, я только что нашел трейдерскую версию ChatGPT."},tags:{all:"Все",blog:"Блог",crypto:"Крипто",event:"Событие",pairs:"Пары"}},Mg={title:"Страница не найдена",description:"Страница, которую вы ищете, не существует или была перемещена",backToHomepage:"Вернуться на главную",imageAlt:"Не найдено"},Og=JSON.parse(`{"Page":{"title":{"terms":"Условия обслуживания","privacy":"Политика конфиденциальности","refund":"Политика возврата средств и отмены","cookie":"Политика использования файлов куки"},"tabs":{"terms":"Условия обслуживания","privacy":"Политика конфиденциальности","refund":"Политика возврата средств и отмены","cookie":"Политика использования файлов куки"},"nav":{"terms":"Условия обслуживания","privacy":"Политика конфиденциальности","refund":"Политика возврата средств и отмены","cookie":"Политика использования файлов куки"}},"Terms":{"title":"Условия обслуживания, TOS, условия, положения, отказ от ответственности, договор, соглашение","intro":{"p1":"Настоящее соглашение заключается между Pixel Nexus Global, сингапурской компанией с ограниченной ответственностью, осуществляющей деятельность через сайт www.iccandle.ai («Pixel Nexus Global», «мы», «нас» или «наш»), и физическим или юридическим лицом, приобретающим или использующим услуги, предлагаемые через Платформу («Клиент», «вы» или «ваш»). Если вы приобретаете Услуги от имени третьей стороны, вы подтверждаете, что обладаете законными полномочиями обязать такую сторону соблюдать настоящие Условия обслуживания и несёте ответственность за их использование Услуг.","p2":"Получая доступ к Платформе и Услугам, описанным в настоящем документе и размещённым на www.iccandle.ai, либо оформляя подписку через сайт iccandle.ai, вы подтверждаете, что прочитали, поняли и согласились с настоящими Условиями, Положениями и отказами от ответственности. Вы также соглашаетесь, что ваши отношения с нами регулируются положениями настоящих Условий обслуживания.","p2Emphasis":"Если вы не принимаете данные условия, вы обязаны немедленно прекратить использование iccandle.ai и любых связанных услуг или платформ."},"sections":[{"title":"1. Услуги","paragraphs":["Pixel Nexus Global will provide active customers in good standing with access to its AI-powered analytical tool (the “Platform”). As used in this Agreement, the term “Services” refers to Pixel Nexus Global’s provision of your access to the Platform. The Services will be provided to you under one or more subscriptions, account activations, sign-ups, or orders placed by you on the iccandle.ai website and accepted by Pixel Nexus Global (an “Order”).","In case of any conflict between these TOS and an Order, the terms of these TOS shall take precedence. By accepting the Services, you acknowledge and agree that any different or additional terms proposed by you in an Order or otherwise are expressly rejected by Pixel Nexus Global, unless we have agreed to such terms in a written document signed by an authorized representative."]},{"title":"2. Ваши обязательства","subsections":[{"title":"Информация о клиенте и ответственность за аккаунт","paragraphs":["You agree to provide Pixel Nexus Global with accurate information when creating your account, throughout our business relationship, and in all correspondence with us. We may occasionally need to contact you via email or telephone regarding the Services. You agree to maintain a valid email address that you check daily and to promptly notify us of any changes to your contact information.","Pixel Nexus Global shall not be responsible for any service interruptions, damages, or consequences resulting from misdirected communications due to your failure to provide current contact details. You also agree to complete all data entitlement surveys within the platform completely and truthfully to maintain compliance with exchange regulations."]},{"title":"Разрешённое использование платформы","paragraphs":["Your use of the Platform must comply with these TOS and any accompanying documentation we provide. If you permit third parties to access the Platform, you agree to: (i) restrict their use in accordance with these terms; (ii) ensure their compliance with these TOS and our Privacy Policy; and (iii) remain fully liable for any violations of these TOS or the Privacy Policy by such third parties."]},{"title":"Интеллектуальная собственность и соблюдение закона","paragraphs":["You agree not to alter, obscure, or remove any trademark or proprietary notices. You may only use the Platform in accordance with: (i) the laws governing these TOS; and (ii) all applicable laws in your jurisdiction.","Несанкционированное использование строго запрещено."]}]},{"title":"3. Срок действия","subsections":[{"title":"Дата вступления в силу","paragraphs":["These Terms of Service (TOS) become effective (\\"Effective Date\\") on the earlier of: (i) the date you click \\"I accept\\" as recorded by our servers; or (ii) the date you first access or use the Platform.","These TOS remain in effect for the duration of any active Order."]},{"title":"Подписка и продление","paragraphs":["The Services will automatically renew for successive periods (monthly, quarterly, or annually) as specified in your Order. If unspecified, the default initial subscription period (\\"Initial Term\\") is one month. Subsequent renewal periods (\\"Renewal Terms\\") will match the Initial Term’s duration."]},{"title":"Пробный период","paragraphs":["Pixel Nexus Global may offer trial periods (paid or free) as indicated on the iccandle.ai trial signup page. During any trial period:"],"listOrdered":["применяются все условия как для платной подписки","вы можете отменить подписку до автоматического продления","условия могут изменяться без уведомления"]},{"title":"Управление подпиской","paragraphs":["You are solely responsible for managing your subscription, including:"],"listDisc":["контроль дат продления","обновление платёжных данных","отмена подписки","актуальность контактных данных"],"paragraphsAfter":["Pixel Nexus Global is not responsible for any charges due to failure to manage your subscription."]}]},{"title":"4. Прекращение","subsections":[{"title":"Отмена и возвраты","paragraphs":["Details about cancellation and refund policies are available on our Refund and Cancellation Policy page at iccandle.ai. Terminating your account disables automatic renewals but does not cancel past invoices or make prior payments refundable unless stated otherwise in our Refund and Cancellation Policy.","Any currently due invoices must be paid in full to settle your account. Your access to Pixel Nexus Global services will continue until the expiration of your prepaid period or trial term."]},{"title":"Расторжение по инициативе сторон","paragraphs":["Either party may terminate any Order by providing written notice at least one (1) day before the expiration of the Initial Term or any Renewal Term. For purposes of this provision, “written notice” includes communication through email, live chat, telephone, or via the Online Portal, indicating a desire not to continue service with Pixel Nexus Global in the future."]},{"title":"Нарушения","paragraphs":["Pixel Nexus Global reserve the right to immediately suspend Services and/or terminate any Order in cases of violation of these TOS, breach of our Privacy Policy, or use of Services in a manner contrary to law or generally accepted internet standards. Such termination may occur without prior notice, dispute resolution process, or refund of any fees."]},{"title":"Последствия","paragraphs":["The expiration or termination of any Order does not affect any rights or obligations that either (i) came into effect upon or after such expiration/termination, or (ii) survive the termination and were incurred by the parties prior to termination. Upon termination, you must promptly settle any outstanding balance. Pixel Nexus Global is not obligated to return any paid fees for terminations occurring prior to completion of a full term, except as may be expressly provided in our Refund and Cancellation Policy.","All termination matters are governed by the complete terms set forth in this agreement, and Pixel Nexus Global maintains full discretion in enforcing these provisions."]}]},{"title":"5. Лицензия и ограничения","paragraphs":["Pixel Nexus Global grants you a limited, revocable, non-exclusive, non-transferable, worldwide license to utilize our proprietary technology (\\"Pixel Nexus Technology\\") solely for accessing and employing our analytical engines as part of the Services, including any generated reports (\\"Reports\\"). This license is restricted to your account's registered users and automatically terminates upon expiration or termination of these TOS.","No rights beyond this limited license are conferred. All ownership rights in the Pixel Nexus Technology remain exclusively with Pixel Nexus Global or its licensors. You are expressly prohibited from: transferring, leasing, lending, sublicensing, reselling, or distributing the technology; using it for timesharing or service bureau purposes; or permitting unauthorized third-party access. You may not circumvent any protective measures safeguarding our proprietary interests, nor modify, reproduce, decompile, reverse engineer, or create derivative works from the Pixel Nexus Technology or Platform components. Upon termination, you must immediately cease using and permanently delete all Pixel Nexus Technology in your possession, ensuring any third parties with access do likewise."],"subsections":[{"title":"Права собственности","paragraphs":["Pixel Nexus Global retains all rights, title, and interest in the Pixel Nexus Technology and Platform, including but not limited to all derivative works, improvements, enhancements, and associated intellectual property rights such as trademarks and copyrights."]},{"title":"Положения об обратной связи","paragraphs":["You may voluntarily provide, or we may solicit, input regarding the Platform or Services (\\"Feedback\\"), including suggestions for modifications or improvements. You acknowledge such Feedback constitutes Pixel Nexus Global's confidential proprietary information and irrevocably assign all related rights and interests to us. Pixel Nexus Global may utilize Feedback for any purpose without limitation or compensation obligation. This assignment applies globally and survives termination of these TOS.","All rights not expressly granted herein are reserved by Pixel Nexus Global. Any unauthorized use constitutes breach of these TOS and may result in immediate termination of your access rights."]}]},{"title":"6. Использование данных и ИС","paragraphs":["Pixel Nexus Global may utilize information you provide or data collected from your use of the Platform and Services (\\"Operational Information\\") to deliver technical support and facilitate the implementation, operation, and administration of the Services. By using our Services, you grant us a perpetual, irrevocable license to process and analyze this Operational Information. We may combine this data with aggregate information from our general business operations to enhance existing Services or develop new products and offerings.","Pixel Nexus Global shall retain exclusive ownership of all intellectual property derived from such analysis and improvements. You hereby irrevocably waive any potential rights to this intellectual property and assign all rights, title, and interest therein to Pixel Nexus Global. You further agree to provide reasonable cooperation in securing and protecting these rights. We reserve the right to commercialize this Operational Information through sale, monetization, or incorporation into other products and services, without obligation to compensate you or grant you any ownership interest.","This license shall terminate upon expiration or cancellation of these Terms of Service, except with respect to historical data that has been aggregated and anonymized such that it cannot be identified as originating from your organization. Pixel Nexus Global may retain and continue to use such anonymized, aggregated data indefinitely for any lawful business purpose.","All intellectual property rights not expressly granted herein remain the exclusive property of Pixel Nexus Global. Your continued use of the Services constitutes acceptance of these terms regarding data usage and intellectual property rights."]},{"title":"7. Отказ от ответственности за точность информации","paragraphs":["Pixel Nexus Global relies on third-party data feeds to power its platform and therefore cannot guarantee the absolute accuracy of the information displayed. Different features within our system (such as scanners, automated analysis tools, charting functions, and back testing capabilities) may utilize separate data providers, which can result in variances between datasets across different platform features. Users should always verify analysis results and scanner conditions to ensure data consistency.","The platform's analytical outputs are inherently dependent on the quality of underlying third-party data, and Pixel Nexus Global makes no representations or warranties regarding the accuracy of these analyses. The iccandle.ai website, Services, and Platform are designed solely for informational and research purposes - they should never serve as the sole basis for investment decisions. Pixel Nexus Global disclaims all liability for any financial losses resulting from reliance on potentially inaccurate data or analysis within the Platform.","The Pixel Nexus Global system is provided strictly on an \\"as-is\\" basis without guarantees or warranties of any kind, as its functionality depends on unverified third- party data sources. The platform is intended exclusively for educational, entertainment, and general informational use - not as professional financial advice or a substitute for independent investment research. Users assume all risk associated with interpreting and acting upon any information displayed within the system.","By accessing and using the Platform, you acknowledge these inherent limitations and agree that Pixel Nexus Global shall not be held responsible for any consequences arising from data inaccuracies, analysis errors, or investment decisions made based on platform content."]},{"title":"8. Отказ от инвестиционных рекомендаций и ограничения платформы","paragraphs":["The analytical tools and outputs provided by Pixel Nexus Global's iccandle.ai platform are strictly for informational and research purposes only and should not be construed as investment advice. The platform relies on third-party data sources that may contain inaccuracies, and different features may produce varying results due to separate data providers. All analysis, including results from our Pattern Selector, Pattern Tracker, and News Impact Intelligence, is provided \\"AS-IS\\" without any guarantees of accuracy. These tools demonstrate historical patterns, probabilities, and market behavior under past conditions and cannot predict future results, as actual market outcomes may differ due to liquidity, execution, and other variables. You must never rely solely on platform analysis when making investment decisions."]},{"title":"9. Признание рисков и ответственность пользователя","paragraphs":["By using Pixel Nexus Global's platform (iccandle.ai), you expressly acknowledge and accept full responsibility for all risks associated with any investment decisions made based on information or analysis obtained from our Platform. You understand that our services rely on third-party data sources that may contain inaccuracies, and that our analytical models employ mathematical formulas and sequences that have not been independently verified for predictive accuracy. Pixel Nexus Global cannot and does not guarantee the reliability of any market data, technical indicators, or analytical outputs generated by the Platform.","Prior to executing any trades, you agree to either: (i) consult with a qualified, licensed financial professional; or (ii) conduct comprehensive independent research using multiple verified information sources.","Pixel Nexus Global expressly disclaims all liability for any trading losses, missed opportunities, or other financial consequences resulting from your reliance on Platform content. By continuing to use iccandle.ai, you confirm your understanding that our tools are designed for informational purposes only and that you alone bear complete responsibility for all investment choices and outcomes. This warning constitutes an essential term of our agreement, and your use of the Platform signifies your unconditional acceptance of these risk disclosures."]},{"title":"10. Отказ от гарантий и ограничения сервиса","paragraphs":["The Pixel Nexus Global platform (iccandle.ai), including all Services, scripts, reports, analytical engines, and related technology, is provided strictly on an \\"AS-IS\\" and \\"AS- AVAILABLE\\" basis. Pixel Nexus Global makes no representations or warranties of any kind, whether express or implied. This includes, but is not limited to, all implied warranties of non-infringement, merchantability, fitness for a particular purpose, accuracy, quality, or achievement of specific results. No warranties arise from any course of dealing, performance, or trade usage.","Pixel Nexus Global does not guarantee that the Service will meet your requirements, operate without interruption, remain error-free, or be secure from viruses or other harmful components. Compatibility with all websites or browsers is not assured, and Pixel Nexus Global disclaims all liability for issues arising from browser incompatibility or third-party services, even if such services appear integrated with our Platform. Any data transmitted via our Services remains your sole responsibility, and Pixel Nexus Global expressly disclaims liability for such content. No warranties provided by third- party vendors to Pixel Nexus Global extend to you, and you are not a third-party beneficiary of such agreements."],"subsections":[{"title":"Функции оповещений и бета-функции","paragraphs":["The Platform includes alert features (e.g., \\"Dynamic Price Alerts\\" and \\"Multi-Factor Alerts\\"), which are provided without warranty or guarantee of reliability. Technical delays or failures may occur due to cellular networks, email services, system errors, or other factors. You acknowledge that alerts may not function as intended and agree that Pixel Nexus Global bears no liability for trading losses resulting from reliance on these features, regardless of whether they were used correctly.","Certain features labeled as 'Beta' are under active development and may exhibit unstable or unreliable performance, including inconsistent data or incorrect information due to software bugs or programming errors. These Beta features carry additional risks and should be used with extreme caution."]},{"title":"Общие положения","paragraphs":["This warranty disclaimer applies to all oral or written information provided by Pixel Nexus Global, its employees, affiliates, or third-party vendors. You may not rely on any such statements or representations.","Some jurisdictions may not permit the exclusion of certain warranties. If applicable to you, any warranty claim must be filed within ninety (90) days of the Service provision that gave rise to the claim. Failure to submit a claim within this period constitutes an irrevocable waiver of your right to pursue such claims thereafter.","Third-party websites linked through the Pixel Nexus Global platform are not under our control, and we assume no responsibility for their content or functionality. Accessing these external sites is entirely at your own risk. Such links are provided for convenience only and do not constitute an endorsement or recommendation by Pixel Nexus Global.","By using the Platform, you acknowledge and accept these limitations and disclaimers in full."]}]},{"title":"11. Ограничение ответственности","paragraphs":["Pixel Nexus Global's total liability under this Agreement shall not exceed the aggregate fees actually paid by you to Pixel Nexus Global during the one (1) month period immediately preceding the event giving rise to such liability. For purposes of this limitation, \\"Pixel Nexus Global\\" includes its employees, agents, owners, directors, officers, affiliates, and any third-party service providers facilitating the Services.","To the maximum extent permitted by law, you agree that under no circumstances - including negligence - shall Pixel Nexus Global or its licensors, agents, employees, officers, or third-party vendors be liable for any indirect, incidental, special, consequential, or punitive damages. This exclusion applies to, but is not limited to, damages for:"],"listOrdered":["Упущенная прибыль или доход","Прерывание бизнеса","Потеря или повреждение данных","Потеря сбережений","Любые другие финансовые потери, понесённые вами, конечными пользователями или третьими лицами"],"paragraphsAfter":["These limitations apply regardless of whether the action arises in contract, tort (including negligence), or any other legal theory, and shall remain in effect even if Pixel Nexus Global has been advised of the possibility of such damages. While some jurisdictions may not allow limitations on certain liabilities, you agree that, where such restrictions apply, Pixel Nexus Global's liability shall be limited to the maximum extent permitted by applicable law.","This limitation of liability constitutes an essential basis of the bargain between you and Pixel Nexus Global and shall survive termination of this Agreement. By using the Services, you acknowledge that these limitations are reasonable and reflect the risk allocation between both parties."]},{"title":"12. Уведомления","paragraphs":["All official notices will be sent to your account’s listed contact information. You are responsible for maintaining current and accurate contact details in our records at all times.","For most inquiries, including technical support and billing matters, please visit our website at www.iccandle.ai for contact information and support options.","However, any legal notices regarding these Terms of Service or other Pixel Nexus Global policies must be sent exclusively via postal mail to our designated address:"],"address":{"company":"Pixel Nexus Global PTE. LTD.","lines":["160 Robinson Road, #14-04","Singapore Business Federation Center","Singapore 068914"]}},{"title":"13. Форс-мажор","paragraphs":["Neither party shall be liable for any failure or delay in performance (except for payment obligations) due to events beyond their reasonable control, including, but not limited to, acts of God, natural disasters, war, civil unrest, epidemics, labor disputes, utility failures, telecommunication outages, supply chain disruptions, government actions, or other unforeseeable catastrophic events; provided that: (i) the affected party notifies the other in writing within ten (10) days of the event’s commencement; (ii) all payment obligations remain unaffected; (iii) the time for performance shall be extended day-for-day to match the duration of the disruption; and (iv) both parties use commercially reasonable efforts to mitigate the impact.","It is understood that this clause does not permit termination of the Agreement solely due to force majeure conditions, nor does it extend the Agreement term beyond its original expiration date without mutual written agreement."]},{"title":"14. Отказ от прав","paragraphs":["No failure or delay by Pixel Nexus Global in exercising any right under these Terms shall operate as a waiver of that right, nor shall any single or partial exercise of any right preclude the further or full exercise of that right or any other right under these Terms."]},{"title":"15. Уступка","paragraphs":["Pixel Nexus Global may assign these Terms, or any rights hereunder, without your consent. You may not assign these Terms without our prior written approval. These Terms shall be binding upon, and inure to the benefit of, the parties' respective successors and permitted assigns."]},{"title":"16. Разделимость","paragraphs":["If any provision of these Terms is held to be invalid or unenforceable by a court of competent jurisdiction, that provision shall be modified to the minimum extent necessary to make it valid and enforceable while preserving its original intent. All other provisions shall remain in full force and effect."]},{"title":"17. Отсутствие агентских отношений","paragraphs":["Nothing in these Terms creates an agency, partnership, joint venture or employment relationship between the parties. Neither party has authority to bind the other or incur obligations on the other's behalf."]},{"title":"18. Конфиденциальность и конфликты","paragraphs":["Our Privacy Policy is incorporated herein by reference. In the event of a conflict between agreements: (i) these Terms prevail over the Privacy Policy; (ii) any separate service agreement shall prevail over conflicting provisions of these Terms, but only with respect to those specific provisions; and (iii) in all other cases, these Terms shall govern."]},{"title":"19. Юрисдикция и ограничения","paragraphs":["The services and information provided on iccandle.ai are not intended for use in jurisdictions where such services would be contrary to local laws or regulations. Access to and use of this website are strictly prohibited for citizens of the following jurisdictions: United States of America, Canada, Russian Federation, Iran, North Korea, Myanmar, Syria, Cuba, Crimea, Donetsk, and Luhansk regions of Ukraine, Afghanistan, Belarus, and Venezuela. This list may be updated at any time without prior notice. Users are solely responsible for ensuring that their access to and use of this website comply with all applicable laws and regulations in their country. iccandle.ai accepts no responsibility or liability for any non-compliance by users with their local regulatory requirements and reserves the right to restrict, block, or terminate access at its sole discretion."]}],"content":"Условия обслуживания, TOS, условия, положения, отказ от ответственности, договор, соглашение\\nНастоящее соглашение заключается между Pixel Nexus Global, сингапурской компанией с ограниченной ответственностью, осуществляющей деятельность через сайт www.iccandle.ai («Pixel Nexus Global», «мы», «нас» или «наш»), и физическим или юридическим лицом, приобретающим или использующим услуги, предлагаемые через Платформу («Клиент», «вы» или «ваш»). Если вы приобретаете Услуги от имени третьей стороны, вы подтверждаете, что обладаете законными полномочиями обязать такую сторону соблюдать настоящие Условия обслуживания и несёте ответственность за их использование Услуг.\\n\\nУсловия обслуживания, TOS, условия, положения, отказ от ответственности, договор, соглашение Настоящее соглашение заключается между Pixel Nexus Global, сингапурской компанией с ограниченной ответственностью, осуществляющей деятельность через сайт www.iccandle.ai («Pixel Nexus Global», «мы», «нас» или «наш»), и физическим или юридическим лицом, приобретающим или использующим услуги, предлагаемые через Платформу («Клиент», «вы» или «ваш»). Если вы приобретаете Услуги от имени третьей стороны, вы подтверждаете, что обладаете законными полномочиями обязать такую сторону соблюдать настоящие Условия обслуживания и несёте ответственность за их использование Услуг.\\n\\nПолучая доступ к Платформе и Услугам, описанным в настоящем документе и размещённым на www.iccandle.ai, либо оформляя подписку через сайт iccandle.ai, вы подтверждаете, что прочитали, поняли и согласились с настоящими Условиями, Положениями и отказами от ответственности. Вы также соглашаетесь, что ваши отношения с нами регулируются положениями настоящих TOS.\\nЕсли вы не принимаете данные условия, вы обязаны немедленно прекратить использование iccandle.ai и любых связанных услуг или платформ.\\n\\n1. Услуги\\n\\nPixel Nexus Global предоставляет действующим клиентам, находящимся в надлежащем статусе, доступ к своему аналитическому инструменту на базе искусственного интеллекта («Платформа»).\\nВ рамках настоящего соглашения термин «Услуги» означает предоставление Pixel Nexus Global доступа к Платформе.\\nУслуги предоставляются в рамках одной или нескольких подписок, активаций аккаунта, регистраций или заказов, оформленных вами на сайте iccandle.ai и принятых Pixel Nexus Global («Заказ»).\\n\\nPixel Nexus Global предоставляет действующим клиентам, находящимся в надлежащем статусе, доступ к своему аналитическому инструменту на базе искусственного интеллекта («Платформа»). В рамках настоящего соглашения термин «Услуги» означает предоставление Pixel Nexus Global доступа к Платформе. Услуги предоставляются в рамках одной или нескольких подписок, активаций аккаунта, регистраций или заказов, оформленных вами на сайте iccandle.ai и принятых Pixel Nexus Global («Заказ»).\\n\\nВ случае противоречий между настоящими TOS и Заказом, приоритет имеют положения настоящих TOS.\\nПринимая Услуги, вы соглашаетесь, что любые иные или дополнительные условия, предложенные вами в Заказе или иным образом, прямо отклоняются Pixel Nexus Global, если только мы не согласовали их в письменной форме, подписанной уполномоченным представителем.\\n\\n2. Ваши обязательства\\nИнформация о клиенте и ответственность за аккаунт\\n\\nВы соглашаетесь предоставлять Pixel Nexus Global точную информацию при создании аккаунта, в течение всего периода взаимодействия и во всей переписке. Мы можем периодически связываться с вами по электронной почте или телефону. Вы обязуетесь поддерживать действующий e-mail, проверяемый ежедневно, и своевременно сообщать об изменениях контактных данных.\\n\\nВы соглашаетесь предоставлять Pixel Nexus Global точную информацию при создании аккаунта, в течение всего периода взаимодействия и во всей переписке.\\nМы можем периодически связываться с вами по электронной почте или телефону.\\nВы обязуетесь поддерживать действующий e-mail, проверяемый ежедневно, и своевременно сообщать об изменениях контактных данных.\\n\\nPixel Nexus Global не несёт ответственности за перебои в обслуживании, ущерб или последствия, вызванные некорректной доставкой сообщений из-за устаревших контактных данных. Вы также соглашаетесь полностью и добросовестно заполнять все анкеты на платформе для соблюдения требований регуляторов бирж.\\n\\nРазрешённое использование платформы\\nРазрешённое использование платформы\\n\\nИспользование Платформы должно соответствовать настоящим TOS и сопутствующей документации.\\nЕсли вы предоставляете доступ третьим лицам, вы обязуетесь: (i) ограничивать их использование в соответствии с условиями; (ii) обеспечивать соблюдение ими TOS и Политики конфиденциальности; (iii) нести полную ответственность за любые их нарушения.\\n\\nИспользование Платформы должно соответствовать настоящим TOS и сопутствующей документации.\\nЕсли вы предоставляете доступ третьим лицам,\\nвы обязуетесь: (i) ограничивать их использование в соответствии с условиями;\\n(ii) обеспечивать соблюдение ими TOS и Политики конфиденциальности;\\n(iii) нести полную ответственность за любые их нарушения.\\n\\nИнтеллектуальная собственность и соблюдение закона\\nИнтеллектуальная собственность и соблюдение закона\\nИнтеллектуальная собственность и соблюдение закона\\nИнтеллектуальная собственность и соблюдение закона\\nИнтеллектуальная собственность и соблюдение закона\\n\\nВы не имеете права изменять или удалять уведомления о товарных знаках и собственности. Использование Платформы допускается только в рамках:\\n(i) законодательства, регулирующего настоящие TOS;\\n(ii) всех применимых законов вашей юрисдикции.\\n\\nНесанкционированное использование строго запрещено.\\n\\nНесанкционированное испол\\nьзование строго запрещено.\\n\\n3. Срок действия\\nДата вступления в силу\\n\\nНастоящие Условия вступают в силу («Дата вступления в силу») с момента: (i) нажатия «Я принимаю» (фиксируется сервером),\\nили (ii) первого доступа или использования Платформы.\\n\\nУсловия действуют на протяжении любого активного Заказа.\\n\\nУсловия действуют на протяже\\nнии любого активного Заказа.\\n\\nПодписка и продление\\n\\nУслуги автоматически продлеваются (ежемесячно, ежеквартально или ежегодно) согласно Заказу.\\nПо умолчанию срок подписки — 1 месяц.\\n\\nПробный период\\nПробный период\\n\\nПробный период\\n\\nPixel Nexus Global может предоставлять пробные периоды (платные или бесплатные).\\nВ течение пробного периода:\\n\\nприменяются все условия как для платной подписки; вы можете отменить подписку до автоматического продления; условия могут изменяться без уведомления. Управление подпиской\\n\\nВы самостоятельно отвечаете за:\\n\\nВы самостоятельно отвечаете за:\\n\\nконтроль дат продления; обновление платёжных данных;\\nотмену подписки; актуальность контактных данных.\\n\\nPixel Nexus Global не несёт ответственности за списания из-за вашего несоблюдения этих обязанностей.\\n\\n4. Прекращение Отмена и возвраты\\n\\n4. Прекращение Отмена и возвраты\\n\\nИнформация о возвратах размещена на странице Refund and Cancellation Policy на iccandle.ai.\\nОтмена аккаунта отключает автопродление, но не аннулирует уже выставленные счета.\\n\\nРасторжение по инициативе сторон\\nРасторжение по инициативе сторон\\n\\nЛюбая сторона может расторгнуть Заказ, уведомив другую сторону минимум за 1 день до окончания срока.\\n\\nЛюбая сторона может расторгнуть Заказ, уведомив другую сторону минимум за 1 день до окончания срока.\\n\\nНарушения\\nНарушения\\n\\nPixel Nexus Global может немедленно приостановить или прекратить доступ без уведомления и возврата средств при нарушении условий или законодательства.\\n\\nПоследствия\\nПоследствия\\n\\nПоследствия\\n\\nОбязательства, возникшие до прекращения, сохраняются. Все задолженности должны быть оплачены.\\nВозврат средств не гарантируется.\\n\\n5. Лицензия и ограничения\\n\\nPixel Nexus Global предоставляет ограниченную, отзывную, неисключительную и непередаваемую лицензию на использование технологии («Pixel Nexus Technology») исключительно для доступа к аналитическим инструментам.\\n\\nPixel Nexus Global предоставляет ограниченную, отзывную, неисключительную и непередаваемую лицензию на использование технологии («Pixel Nexus Technology») исключительно для доступа к аналитическим инструментам.\\n\\nЗапрещено:\\nЗапрещено:\\n\\nпередача, продажа, аренда, сублицензирование; обратная разработка, декомпиляция; обход защитных механизмов; предоставление доступа третьим лицам.\\n\\nВсе права принадлежат Pixel Nexus Global.\\nВсе права принадлежат Pixel Nexus Global.\\nВсе права принадлежат Pixel Nexus Global.\\nВсе права принадлежат Pixel Nexus Global.\\nВсе права принадлежат Pixel Nexus Global.\\nВсе права принадлежат Pixel Nexus Global.\\n\\nВсе права принадлежат Pixel Nexus Global.\\n\\n6.\\nИспользование данных и ИС\\n\\nКомпания может использовать данные пользователя («Operational Information») для поддержки и улучшения услуг. Вы предоставляете бессрочную лицензию на обработку данных.\\n\\nPixel Nexus Global сохраняет исключительные права на результаты анализа и может коммерциализировать их без компенсации пользователю.\\n\\nPixel Nexus Global сохраняет исключительные права на результаты ан\\nализа и может коммерциализировать их без компенсации пользователю.\\n\\n7–9. Отказ от ответственности и риски\\n\\nПлатформа использует сторонние данные и предоставляется «как есть». Информация может быть неточной и не является инвестиционной рекомендацией. Пользователь полностью принимает риски финансовых потерь и обязан проводить самостоятельный анализ.\\n\\n10.\\nОтсутствие гарантий\\n\\n10. Отсутствие гарантий\\n\\nНет гарантий работоспособности, точности, отсутствия ошибок или бесперебойности.\\nБета-функции могут быть нестабильными.\\n\\n11.\\nОграничение ответственности\\n\\nМаксимальная ответственность ограничивается суммой, уплаченной за последний месяц.\\nКомпания не несёт ответственности за косвенные или случайные убытки.\\n\\nМаксимальная ответственность ограничивается суммой, уплаченной за последний месяц.\\nКомпания не несёт ответственности за косвенные или случайные убытки.\\n\\n12–19.\\nПрочие условия\\n\\nВключают уведомления, форс-мажор, отказ от прав, уступку прав,\\nразделимость положений, отсутствие агентских отношений, приоритет документов, юрисдикционные ограничения и запреты на использование в определённых странах."},"Refund":{"title":"Политика возврата и отмены","intro":"Настоящая Политика возврата и отмены («Политика») регулирует условия возврата и отмены услуг, предоставляемых компанией Pixel Nexus Global Pte. Ltd. («мы», «нас») через платформу iccandle.ai («Сервис»). Данная Политика является частью Условий обслуживания и должна рассматриваться совместно с ними.","sections":[{"title":"1. Определения","definitions":[{"term":"Подписка","text":"A recurring paid access to the Services for a specified period (e.g., monthly or annually)."},{"term":"Биллинг-период","text":"The recurring time interval for which a Subscription fee is charged."},{"term":"Изменение подписки","text":"Any upgrade or downgrade to a different Subscription plan."}]},{"title":"2. Условия отмены","subsections":[{"title":"Отмена подписки","listDisc":["You may cancel your Subscription at any time through your account dashboard or by contacting support.","Cancellation will take effect at the end of the current billing period; you will retain access to the Services through the end of that period.","Cancelling your Subscription does not automatically entitle you to a refund of fees already paid."]}]},{"title":"3. Условия возврата","subsections":[{"title":"3.1 Общие положения","paragraphs":["Except as expressly provided in this Policy or required by applicable law, all fees paid for Subscriptions are non‑refundable once charged."]},{"title":"3.2 Случаи возможного возврата","paragraphs":["We may issue a refund at our sole discretion only in limited circumstances, including but not limited to:"],"listDisc":["Duplicate payments (verified duplicate charges will be refunded).","Technical errors that demonstrably prevented access to Services, where the error was not caused by user actions and is verified by us.","Applicable statutory rights under consumer protection law where these rights apply and cannot be waived."],"paragraphsAfter":["Refunds, if approved, will be processed to the original payment method within a commercially reasonable timeframe determined by payment processors and banking partners."]},{"title":"3.3 Отсутствие возврата за частичное использование","paragraphs":["Refunds will not be issued for:"],"listDisc":["Partial use of the Services during a billing period.","Downgrades of Subscription plans.","Change of mind or business decisions after payment.","Subscription cancellations submitted after a billing cycle has renewed."]}]},{"title":"4. Изменение подписки","paragraphs":["We provide two options when changing your Subscription plan:"],"subsections":[{"title":"4.1 Немедленное изменение","paragraphs":["If you select \\"Change Now,\\" your new plan will take effect immediately, and the associated charge will be applied.","Please note that no refunds, credits, or prorated adjustments will be provided for any unused portion of your current plan."]},{"title":"4.2 Изменение со следующего периода","paragraphs":["If you choose \\"Change on Next Billing,\\" your current plan will remain active until the end of the current Billing Period.","The new plan will take effect at the start of the next Billing Period.","No refunds or credits apply to the current Billing Period."]}]},{"title":"5. Отмена после продления","paragraphs":["If an automatic renewal has already occurred before you submit a cancellation request: The renewal fee is non-refundable. The cancellation will apply to the next Billing Period."]},{"title":"6. Чарджбэки и споры","paragraphs":["We maintain a strict no-tolerance policy toward unjustified chargebacks.","Initiating a chargeback or payment dispute without first contacting us to seek resolution is considered a breach of this Refund and Cancellation Policy and our Terms of Service. Such actions may result in immediate suspension or permanent termination of your account, without notice, and forfeiture of access to the Services.","We reserve the right to challenge and dispute any chargeback that we deem unauthorized, abusive, or inconsistent with this Policy. This includes providing payment processors, banks, and financial institutions with all relevant evidence, including but not limited to:"],"listDisc":["Подтверждение оказания услуг и журналы доступа","Записи активности аккаунта","Принятие наших Условий обслуживания и политик","История переписки с клиентом"],"paragraphsAfter":["Customers are strongly encouraged to contact our support team first to resolve any billing concerns. We are committed to addressing legitimate issues in good faith; however, chargebacks used as a substitute for cancellation or refund requests will not be tolerated."]},{"title":"7. Изменение Политики","paragraphs":["We may update this Policy from time to time. Material changes will be posted on our website or communicated via email prior to taking effect. Continued use of the Services after such updates constitutes acceptance of the revised Policy."]},{"title":"8. Контакты","paragraphs":["For all cancellation and refund requests, please contact our support team via our help center."]}],"content":"Политика возврата и отмены\\n\\nНастоящая Политика возврата и отмены («Политика») регулирует условия возврата и отмены услуг, предоставляемых компанией Pixel Nexus Global Pte. Ltd. («мы», «нас») через платформу iccandle.ai («Сервис»). Данная Политика является частью Условий обслуживания и должна рассматриваться совместно с ними.\\n\\n1. Определения\\n\\nПодписка (Subscription): платный доступ к Сервису на определённый период (ежемесячно или ежегодно).\\n\\nБиллинг-период (Billing Period): повторяющийся интервал списания оплаты.\\n\\nИзменение подписки (Subscription Change): переход на другой тариф (повышение или понижение).\\n\\n2. Условия отмены\\nОтмена подписки\\nПодписку можно отменить в любое время через личный кабинет или поддержку\\nОтмена вступает в силу в конце текущего биллингового периода\\nДоступ к сервису сохраняется до конца оплаченного периода\\nУже оплаченные средства не подлежат автоматическому возврату\\n3. Условия возврата\\n3.1 Общие положения\\n\\nЕсли иное не предусмотрено настоящей Политикой или законом, все оплаченные суммы не подлежат возврату после списания.\\n\\n3.2 Случаи возможного возврата\\n\\nВозврат может быть произведён по нашему усмотрению в ограниченных случаях:\\n\\nДвойное списание (подтверждённое)\\nТехническая ошибка, полностью препятствующая доступу к сервису (не по вине пользователя)\\nПрава, предусмотренные законодательством о защите прав потребителей\\n\\nОдобренные возвраты обрабатываются через исходный платёжный метод в разумные сроки.\\n\\n3.3 Отсутствие возврата за частичное использование\\n\\nВозврат не предоставляется за:\\n\\nЧастичное использование периода\\nПонижение тарифа\\nИзменение решения после оплаты\\nОтмену после автоматического продления\\n4. Изменение подписки\\n4.1 Немедленное изменение\\n\\nНовый тариф вступает в силу сразу, соответствующая сумма списывается немедленно. Возвраты за неиспользованный период не предоставляются.\\n\\n4.2 Изменение со следующего периода\\n\\nТекущий тариф действует до конца периода, новый тариф вступает в силу со следующего биллинга.\\n\\n5. Отмена после продления\\n\\nЕсли подписка уже была автоматически продлена, возврат за текущий период не предоставляется, отмена применяется со следующего периода.\\n\\n6. Чарджбэки и споры\\n\\nМы не допускаем необоснованные чарджбэки.\\n\\nИнициирование спора без предварительного обращения в поддержку считается нарушением Политики и может привести к блокировке или удалению аккаунта.\\n\\n7. Изменение Политики\\n\\nМы можем периодически обновлять Политику. Существенные изменения будут заранее опубликованы или отправлены по электронной почте.\\n\\n8. Контакты\\n\\nВсе запросы на возврат и отмену направляйте через службу поддержки."},"Privacy":{"title":"Политика конфиденциальности","intro":"Настоящая Политика конфиденциальности объясняет, как Pixel Nexus Global Pte. Ltd. («мы», «нас») собирает, использует, раскрывает и защищает персональные данные при использовании веб-сайта, приложений и сервисов (далее — «Сервисы»).","sections":[{"title":"1. Собираемая информация","paragraphs":["We collect the following information:"],"listDisc":["Адрес электронной почты, предоставленный при регистрации","Service usage information, including interactions with features, pages viewed, session activity, and general usage patterns, collected to improve the functionality, performance, and user experience of our Services"],"paragraphsAfter":["Мы не собираем, не храним и не обрабатываем данные банковских карт или другую чувствительную платёжную информацию."]},{"title":"2. Платежи и Stripe","paragraphs":["All payment transactions are processed by our third-party payment service provider, Stripe.","When you make a payment, Stripe collects and processes payment-related information (such as card details, billing information, and transaction data) directly. This information is handled in accordance with Stripe’s Privacy Policy and security standards, including PCI-DSS compliance.","We only receive limited information from Stripe necessary to operate our Services, including:"],"listDisc":["подтверждение платежа","статус подписки","идентификаторы транзакций"],"paragraphsAfter":["Мы не имеем доступа к полным платёжным данным.","You can review Stripe’s Privacy Policy here:"],"stripePrivacyUrl":"https://stripe.com/privacy"},{"title":"3. Использование информации","paragraphs":["We use the email addresses we collect to:"],"listDisc":["Provide, operate, and maintain our Services","Analyze service usage and improve product functionality, performance, and user experience","Communicate with you regarding technical notices, updates, and support","Inform you about products, services, features, and events"]},{"title":"4. Передача данных","paragraphs":["We do not sell your personal information.","We may share your information only with:"],"listDisc":["Service providers who support our operations (including hosting, analytics, and payment processing via Stripe)","Professional advisors, such as legal, accounting, or compliance consultants","Law enforcement or regulatory authorities, when required by law or to protect our legal rights"],"paragraphsAfter":["All third-party service providers are required to process personal data in accordance with applicable data protection laws."]},{"title":"5. Ваши права","paragraphs":["Depending on your location, you may have the right to:"],"listDisc":["получить доступ к данным","исправить email","удалить данные","ограничить или возразить против обработки"],"paragraphsAfter":["Requests related to payment data should be directed to Stripe, as they act as the data controller for payment information."]},{"title":"6. Сторонние сервисы","paragraphs":["Our Services rely on third-party providers such as Stripe. Their handling of personal data is governed by their own privacy policies, and we encourage you to review them."]},{"title":"7. Контакты","paragraphs":["If you have any questions about this Privacy Policy or our data practices, please contact us at:","support@iccandle.ai"]}],"content":"Политика конфиденциальности\\n\\nНастоящая Политика конфиденциальности объясняет, как Pixel Nexus Global Pte. Ltd. («мы», «нас») собирает, использует, раскрывает и защищает персональные данные при использовании веб-сайта, приложений и сервисов (далее — «Сервисы»).\\n\\n1. Собираемая информация\\n\\nМы собираем следующие данные:\\n\\nАдрес электронной почты, предоставленный при регистрации\\nДанные об использовании сервиса (взаимодействие с функциями, просмотренные страницы, сессии и модели использования)\\n\\nЭти данные используются для улучшения функциональности, производительности и пользовательского опыта.\\n\\nМы не собираем, не храним и не обрабатываем данные банковских карт или другую чувствительную платёжную информацию.\\n\\n2. Платежи и Stripe\\n\\nВсе платежи обрабатываются сторонним провайдером Stripe.\\n\\nПри оплате Stripe напрямую собирает и обрабатывает платёжные данные (данные карты, биллинг-информация и транзакции) в соответствии со своей политикой конфиденциальности и стандартом PCI-DSS.\\n\\nМы получаем от Stripe только ограниченную информацию:\\n\\nподтверждение платежа\\nстатус подписки\\nидентификаторы транзакций\\n\\nМы не имеем доступа к полным платёжным данным.\\n\\nПолитика конфиденциальности Stripe: https://stripe.com/privacy\\n\\n3. Использование информации\\n\\nМы используем email для:\\n\\nпредоставления и поддержки сервиса\\nанализа и улучшения продукта\\nтехнических уведомлений и поддержки\\nинформирования о функциях и обновлениях\\n4. Передача данных\\n\\nМы не продаём персональные данные.\\n\\nМы можем передавать данные только:\\n\\nпоставщикам услуг (хостинг, аналитика, Stripe)\\nюридическим, бухгалтерским и комплаенс-консультантам\\nгосударственным органам при необходимости по закону\\n\\nВсе третьи стороны обязаны соблюдать законы о защите данных.\\n\\n5. Ваши права\\n\\nВ зависимости от юрисдикции вы можете иметь право:\\n\\nполучить доступ к данным\\nисправить email\\nудалить данные\\nограничить или возразить против обработки\\n\\nЗапросы по платёжным данным следует направлять напрямую в Stripe.\\n\\n6. Сторонние сервисы\\n\\nНаши сервисы используют сторонние платформы (например, Stripe), которые обрабатывают данные по своим политикам.\\n\\n7. Контакты\\n\\nsupport@iccandle.ai"},"Cookie":{"title":"Политика использования файлов куки","intro":["This Cookie Policy explains how Pixel Nexus Global Pte. Ltd. (\\"we\\", \\"us\\", or \\"our\\") uses cookies and similar technologies when you visit or use iccandle.ai and related services (collectively, the \\"Services\\").","Эта Политика должна рассматриваться совместно с Политикой конфиденциальности."],"sections":[{"title":"1. Что такое куки","paragraphs":["Cookies — это небольшие текстовые файлы, которые сохраняются на вашем устройстве при посещении веб-сайта. Они используются для:","обеспечения работы сайта"],"listDisc":["Сессионные куки (удаляются при закрытии браузера)","Постоянные куки (хранятся определённый срок или до удаления)."]},{"title":"2. Типы используемых куки","subsections":[{"title":"2.1 Строго необходимые куки","paragraphs":["Постоянные cookies (хранятся определённый срок или до удаления)"],"listDisc":["безопасный вход и аутентификация","поддержание пользовательских сессий","защита от мошенничества и злоупотреблений"],"paragraphsAfter":["Без этих куки сервис не может работать должным образом."]},{"title":"2.2 Функциональные куки","paragraphs":["защита от мошенничества и злоупотреблений"],"listDisc":["язык и регион","настройки аккаунта"],"paragraphsAfter":["Они улучшают удобство, но не являются строго необходимыми."]},{"title":"2.3 Аналитические и производительные куки","paragraphs":["2.3 Аналитические и производительные cookies"],"listDisc":["посещённые страницы","продолжительность сессий","данные об ошибках и производительности"],"paragraphsAfter":["данные об ошибках и производительности"]},{"title":"2.4 Сторонние куки","paragraphs":["2.4 Сторонние cookies"],"listDisc":["Некоторые cookies устанавливаются сторонними поставщиками:","платёжные системы (например, Stripe)"],"paragraphsAfter":["аналитические и инфраструктурные провайдеры"]}]},{"title":"3. Для чего мы НЕ используем куки","listDisc":["реклама и поведенческий таргетинг","продажа cookie-данных","сбор чувствительной персональной информации"]},{"title":"4. Управление куки","paragraphs":["4. Управление cookies"],"listDisc":["просмотр куки","удаление куки","блокировка куки"],"paragraphsAfter":["Отключение некоторых куки может повлиять на работу сервиса."]},{"title":"5. Изменения политики","paragraphs":["5. Изменения политики"]},{"title":"6. Контакты","paragraphs":["6. Контакты","support@iccandle.ai"]}],"content":"Политика использования файлов cookie\\n\\nНастоящая Политика использования файлов cookie объясняет, как Pixel Nexus Global Pte. Ltd. («мы», «нас») использует файлы cookie и аналогичные технологии при посещении или использовании iccandle.ai и связанных сервисов (далее — «Сервисы»).\\n\\nЭта Политика должна рассматриваться совместно с Политикой конфиденциальности.\\n\\n1. Что такое cookies\\n\\nCookies — это небольшие текстовые файлы, которые сохраняются на вашем устройстве при посещении веб-сайта. Они используются для:\\n\\nобеспечения работы сайта\\nулучшения пользовательского опыта\\nпредоставления информации владельцам сайта\\n\\nCookies бывают:\\n\\nСессионные cookies (удаляются при закрытии браузера)\\nПостоянные cookies (хранятся определённый срок или до удаления)\\n2. Типы используемых cookies\\n2.1 Строго необходимые cookies\\n\\nЭти cookies необходимы для работы сервиса и не могут быть отключены.\\n\\nбезопасный вход и аутентификация\\nподдержание пользовательских сессий\\nзащита от мошенничества и злоупотреблений\\n2.2 Функциональные cookies\\n\\nИспользуются для запоминания ваших настроек:\\n\\nязык и регион\\nнастройки аккаунта\\n2.3 Аналитические и производительные cookies\\n\\nИспользуются для анализа того, как пользователи взаимодействуют с сервисом:\\n\\nпосещённые страницы\\nпродолжительность сессий\\nданные об ошибках и производительности\\n\\nЭти данные используются только для улучшения сервиса и не идентифицируют пользователей напрямую.\\n\\n2.4 Сторонние cookies\\n\\nНекоторые cookies устанавливаются сторонними поставщиками:\\n\\nплатёжные системы (например, Stripe)\\nаналитические и инфраструктурные провайдеры\\n\\nЭти третьи стороны используют cookies в соответствии со своими политиками.\\n\\n3. Для чего мы НЕ используем cookies\\nреклама и поведенческий таргетинг\\nпродажа cookie-данных\\nсбор чувствительной персональной информации\\n4. Управление cookies\\n\\nВы можете управлять cookies через настройки браузера:\\n\\nпросмотр cookies\\nудаление cookies\\nблокировка cookies\\n\\nОтключение некоторых cookies может повлиять на работу сервиса.\\n\\n5. Изменения политики\\n\\nМы можем обновлять эту Политику. Существенные изменения будут опубликованы на сайте. Продолжение использования сервиса означает согласие с обновлениями.\\n\\n6. Контакты\\n\\nsupport@iccandle.ai"}}`),Ig={Common:lg,Confirmation:cg,DateFormat:ug,Alert:dg,TimeConfig:hg,Loading:pg,Auth:mg,Navbar:fg,Guide:gg,Pricing:yg,Settings:bg,Referral:vg,Layout:wg,News:xg,Selector:Pg,UserActivity:Sg,Pattern:Tg,PatternCatalog:kg,sQuestion_pattern:Cg,sQuestion_general:Ag,sQuestion_news:Ng,justLanguage:Dg,profile:Rg,Landing:Eg,NotFound:Mg,Legal:Og},no={en:op,zh:Op,vi:om,th:Om,ko:sf,ja:If,mn:sg,ru:Ig};function io(e,t){const n=t.split(".");let i=e;for(const r of n){if(!i||typeof i!="object"||!(r in i))return;i=i[r]}return typeof i=="string"?i:void 0}function Lg(e,t){return t?e.replace(/\{(\w+)\}/g,(n,i)=>t[i]!=null?String(t[i]):`{${i}}`):e}function Yr(e,t,n){const i=io(no[e],t)??io(no.en,t)??t;return Lg(i,n)}let js=mi;function Fg(e){js=e}function Gg(){return js}const Us=p.createContext({language:mi,t:(e,t)=>Yr(mi,e,t)}),Bg={info:{icon:Ou},warning:{icon:Qu},success:{icon:Uu},error:{icon:Bu}},yn=({title:e,description:t,action:n,dismiss:i,variant:r="info"})=>{const o=Bg[r].icon,s=i===!1?!1:{label:i?.label??Yr(Gg(),"Common.dismiss"),onClick:i?.onClick};return _i.custom(u=>h.jsxs("div",{className:"custom-toast",role:"alert",children:[h.jsx("div",{className:"custom-toast__icon-wrap",children:h.jsx(o,{className:"custom-toast__icon"})}),h.jsxs("div",{className:"custom-toast__content",children:[h.jsx("div",{className:"custom-toast__header",children:h.jsx("p",{className:"custom-toast__title",children:e})}),t&&h.jsx("p",{className:"custom-toast__description",children:t}),(n||s)&&h.jsxs("div",{className:"custom-toast__actions",children:[n&&h.jsx("button",{onClick:()=>{n.onClick(),_i.dismiss(u)},className:"custom-toast__button custom-toast__button--action",children:n.label}),s&&h.jsx("button",{onClick:()=>{s.onClick?.(),_i.dismiss(u)},className:"custom-toast__button custom-toast__button--dismiss",children:s.label})]})]})]}),{duration:5e3,position:"top-right"})},jg=({size:e=24,color:t="currentColor",className:n})=>h.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:n,children:[h.jsx("path",{d:"M10.268 21a2 2 0 0 0 3.464 0",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),h.jsx("path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),zs=({size:e=24,color:t="currentColor",className:n})=>h.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:n,children:[h.jsx("path",{d:"M18 6 6 18",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),h.jsx("path",{d:"m6 6 12 12",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),qr=({size:e=24,color:t="currentColor",stroke:n="currentColor",className:i})=>h.jsxs("svg",{width:e,height:e,viewBox:"0 0 21.38 21.11",fill:n,xmlns:"http://www.w3.org/2000/svg",className:i,children:[h.jsxs("g",{children:[h.jsx("path",{className:"pattern-tracker-icon-2",d:"M4.97,15.12c-.4,0-.73-.33-.73-.73v-6.02c0-.4.33-.73.73-.73s.73.33.73.73v6.02c0,.4-.33.73-.73.73Z",fill:t}),h.jsx("path",{className:"pattern-tracker-icon-2",d:"M7.79,16.95c-.4,0-.73-.33-.73-.73V5.22c0-.4.33-.73.73-.73s.73.33.73.73v11c0,.4-.33.73-.73.73Z",fill:t}),h.jsx("path",{className:"pattern-tracker-icon-2",d:"M10.62,13.88c-.4,0-.73-.33-.73-.73v-5.23c0-.4.33-.73.73-.73s.73.33.73.73v5.23c0,.4-.33.73-.73.73Z",fill:t}),h.jsx("path",{className:"pattern-tracker-icon-2",d:"M13.44,17.22c-.4,0-.73-.33-.73-.73v-7.54c0-.4.33-.73.73-.73s.73.33.73.73v7.54c0,.4-.33.73-.73.73Z",fill:t}),h.jsx("path",{className:"pattern-tracker-icon-2",d:"M16.26,15.12c-.4,0-.73-.33-.73-.73V6.25c0-.4.33-.73.73-.73s.73.33.73.73v8.14c0,.4-.33.73-.73.73Z",fill:t}),h.jsx("path",{className:"pattern-tracker-icon-1",d:"M20.65,11.66h-2.48c-.4,0-.73-.33-.73-.73s.33-.73.73-.73h2.48c.4,0,.73.33.73.73s-.33.73-.73.73Z"}),h.jsx("path",{className:"pattern-tracker-icon-1",d:"M3.21,11.66H.73c-.4,0-.73-.33-.73-.73s.33-.73.73-.73h2.48c.4,0,.73.33.73.73s-.33.73-.73.73Z"}),h.jsx("path",{className:"pattern-tracker-icon-1",d:"M10.69,21.11c-.4,0-.73-.33-.73-.73v-2.48c0-.4.33-.73.73-.73s.73.33.73.73v2.48c0,.4-.33.73-.73.73Z"}),h.jsx("path",{className:"pattern-tracker-icon-1",d:"M10.69,3.93c-.4,0-.73-.33-.73-.73V.73c0-.4.33-.73.73-.73s.73.33.73.73v2.48c0,.4-.33.73-.73.73Z"})]}),h.jsx("path",{className:"pattern-tracker-icon-1",d:"M15.15,20.03H6.08c-2.65,0-4.8-2.15-4.8-4.8V6.16C1.27,3.51,3.43,1.35,6.08,1.35h9.07c2.65,0,4.8,2.15,4.8,4.8v9.07c0,2.65-2.16,4.8-4.8,4.8ZM6.08,2.74c-1.88,0-3.42,1.53-3.42,3.42v9.07c0,1.88,1.53,3.42,3.42,3.42h9.07c1.88,0,3.42-1.53,3.42-3.42V6.16c0-1.88-1.53-3.42-3.42-3.42H6.08Z"})]});function nt(){return p.useContext(Us)}const Hs="search-filter",Ys="search-filter-session",qs="scanner-always-show";function Ws(){return typeof window>"u"?!1:localStorage.getItem(qs)==="true"}function ro(e){typeof window>"u"||localStorage.setItem(qs,String(e))}function _s(e){if(!e)return{};try{return JSON.parse(e)}catch{return{}}}function Oi(){return typeof window>"u"?{}:_s(localStorage.getItem(Hs))}function Ug(){const e=Oi();return Array.isArray(e.symbols)&&e.symbols.length>0}function zg(e,t){if(typeof window>"u")return;const n=JSON.stringify(e);localStorage.setItem(Hs,n),sessionStorage.removeItem(Ys)}function Hg(){if(typeof window>"u")return{};const e=_s(sessionStorage.getItem(Ys));return Object.keys(e).length>0?e:Oi()}const ao=150;function Yg({handleTrackPatternClick:e,submitCallback:t,currentSymbol:n,window_size:i,handleShowDialog:r,resolution:a,timeframe:o,chartWidget:s,candles:u,handleStartDrag:c,handleStopDrag:d,triggerScanner:l,hasActiveShape:g=!1,theme:f,language:m,clearScannerNewsMarks:y,selectedCandles:b,iframeLoaded:x=!0,isLoading:T=!1,onOpenScanConfig:A,pendingScanAfterConfig:S,onPendingScanHandled:v,onApplySavedTimeframe:D,hide:w=!1,hideScanButton:P=!1,hideTrackerButton:M=!1}){const[G,W]=p.useState(!0),{t:B}=nt(),_=p.useRef(null),V=p.useCallback(async()=>{if(b?.length){yn({title:B("Common.error"),description:B("Selector.clearReplayFirst"),variant:"error"});return}if(!u.length)return;const re=u[0].timestamp,C=u[u.length-1].timestamp;if(s){const I=s.activeChart(),q=Gs(a),$=C-(ao*q+q*i+q*100),ie=C+ao/3*q;try{await I.setVisibleRange({from:$,to:ie})}catch(de){console.error("Error setting visible range:",de)}}let k;try{const{data:I}=await Me.post("https://scan-service.iccandle.ai/cacheCandle",{candles:u},{headers:{Authorization:`Bearer ${localStorage.getItem("iccandle_token")}`}});k=I}catch(I){console.error("Error caching candles:",I);return}const Y=Hg(),R=Y.timeframe||o,j={reference_resolution:a,resolution:R,symbol:n,end_timestamp:C,start_timestamp:re,top_k:Y.top_k||25,analyze_window:Y.probability||0,candle_id:k?.id||""};if(!Y.isAllSelected&&(Y.symbolTypes?.length??0)>0&&(Y.symbols?.length??0)>0&&(j.filter={symbols:Y.symbols.join(","),types:Y.symbolTypes||[]}),Y.period&&Y.period>0){const I=Y.period*365.25*24*60*60,q=C-I;j.filter||(j.filter={}),j.filter.period=q}const E=`${rn}/${m}?symbol=${j.symbol}&ref_res=${j.reference_resolution}&tk=${j.top_k}&res=${j.resolution}&cid=${j.candle_id}&from=${j.start_timestamp*1e3}&to=${j.end_timestamp*1e3}`+(j.filter?.symbols?.length?`&fs=${j.filter.symbols}`:"")+(j.filter?.period!=null?`&period=${j.filter.period}`:"")+(Y.model?`&model=${Y.model}`:"")+(Y.temperature!=null?`&temp=${Y.temperature}`:"")+(f==="dark"?"&theme=dark":"&theme=light");y(),t(E)},[b,u,s,a,o,n,i,f,m,y,t,B]),K=p.useCallback(()=>localStorage.getItem("iccandle_token")?!0:(yn({title:B("Common.warning"),description:B("Selector.pleaseLoginFirst"),variant:"info"}),!1),[B]),z=p.useCallback(()=>{if(K()){if(b?.length){yn({title:B("Common.error"),description:B("Selector.clearReplayFirst"),variant:"error"});return}if(Ug()&&!Ws()){const C=Oi().timeframe;C&&D?.(C),V();return}A?.()}},[V,D,A,K,b,B]),J=p.useCallback(()=>{K()&&e()},[e,K]);p.useEffect(()=>{S&&(v?.(),!w&&V())},[V,w,v,S]);const X=p.useCallback(()=>{W(re=>!re)},[]);return w?null:h.jsx(Cu,{nodeRef:_,bounds:"parent",onStop:d,onStart:c,handle:".iccandle-handle",children:h.jsx("div",{ref:_,className:"iccandle-scanner-popup",children:h.jsxs("div",{className:"iccandle-scanner-popup__inner",children:[h.jsx(Hu,{strokeWidth:1,size:20,color:"#b2b5be",className:"iccandle-handle iccandle-scanner-popup__grip"}),h.jsx("div",{className:"iccandle-scanner-popup__divider"}),g?h.jsxs(h.Fragment,{children:[h.jsx(hn,{text:B("Selector.availableBars",{count:i}),children:h.jsx("div",{className:"iccandle-handle iccandle-scanner-popup__bars",children:B("Pattern.barsCount",{count:i})})}),!P&&h.jsx(hn,{text:B("Selector.scan"),children:h.jsxs("button",{type:"button",onClick:z,disabled:!x||T,className:"iccandle-scanner-popup__action-btn",children:[h.jsx(ms,{size:20,color:!x||T?"#9ca3af":"#ffb84d"}),G&&h.jsx("div",{className:!x||T?"text-theme-color":"iccandle-scanner-popup__label",children:B("Selector.scan")})]})}),!M&&h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"iccandle-scanner-popup__divider"}),h.jsx(hn,{text:B("Layout.headerNav.patternShortTitle"),children:h.jsxs("button",{type:"button",onClick:J,disabled:!x||T,className:"iccandle-scanner-popup__action-btn",children:[h.jsx(qr,{size:20,color:!x||T?"#9ca3af":"#ffb84d",stroke:!x||T?"#9ca3af":"#ffb84d"}),G&&h.jsx("div",{className:!x||T?"text-theme-color":"iccandle-scanner-popup__label",children:B("Layout.headerNav.patternShortTitle")})]})})]})]}):h.jsx("div",{className:"iccandle-scanner-popup__action-row",children:h.jsx(hn,{text:B("Selector.activateSelector"),children:h.jsxs("button",{type:"button",onClick:()=>{l?.()},className:"iccandle-scanner-popup__action-btn iccandle-scanner-popup__action-btn--with-gap",children:[h.jsx("img",{src:ed,width:24,height:24,alt:"scanner",sizes:"100vw",className:"iccandle-scanner-popup__logo"}),G&&h.jsx("div",{className:"iccandle-scanner-popup__label",children:B("Selector.activateSelector")})]})})}),h.jsx("div",{className:"iccandle-scanner-popup__divider"}),h.jsx(hn,{text:B("Selector.settings"),children:h.jsx("button",{type:"button",className:"iccandle-scanner-popup__settings",onClick:r,children:h.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 28 28",width:"28",height:"28",fill:"currentColor",children:[h.jsx("path",{fillRule:"evenodd",d:"M18 14a4 4 0 1 1-8 0 4 4 0 0 1 8 0Zm-1 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"}),h.jsx("path",{fillRule:"evenodd",d:"M8.5 5h11l5 9-5 9h-11l-5-9 5-9Zm-3.86 9L9.1 6h9.82l4.45 8-4.45 8H9.1l-4.45-8Z"})]})})}),h.jsx(hn,{text:B(G?"Selector.collapseToolbar":"Selector.expandToolbar"),children:h.jsx("button",{type:"button",className:"iccandle-scanner-popup__toggle",onClick:X,children:G?h.jsx(Ku,{size:20,color:"#b2b5be"}):h.jsx(_u,{size:20,color:"#b2b5be"})})})]})})})}const ir=25,qg="#00dfb9";function gr(e){const t=e||qg;return{shape:"date_range",overrides:{extendTop:!0,extendBottom:!0,linecolor:t,linewidth:1,linestyle:0,backgroundColor:t,backgroundTransparency:80,textcolor:"rgba(0, 0, 0, 0)",labelBackgroundColor:"rgba(0, 0, 0, 0)",title:"Scanner range"}}}const oo=`
49
+ при годовой подписке`,monthly:"Ежемесячно",yearly:"Ежегодно",yearlyBadge:"-20%",comparePlans:"Сравнить планы",compareSubtitle:"Полная детализация того, что включено в каждый уровень.",usage:"ИСПОЛЬЗОВАНИЕ",usageSection:"Использование",features:"ФУНКЦИИ",featuresSection:"Функции",freePricePerMonth:"$0 / месяц",pricePerMonth:"{price} / месяц",patternSelector:"Селектор паттернов",patternTracker:"Трекер паттернов",newsImpact:"Влияние новостей",scanResultLimit:"Лимит результатов сканирования",historicalData:"Исторические данные",webhook:"Webhook",patternExport:"Экспорт паттернов",scansPerDay:"{count} сканов / день",scansPerDayDefault:"2 скана / день",patternsCount:"{count} паттернов",perDay:"{count} / день",perDayDefault:"1 / день",tabsCount:"{count} вкладок",tabsCountDefault:"1 вкладка",limited:"Ограничено",historicalYears:"20+ лет",included:"✓",notIncluded:"—",planChangedSuccess:"План успешно изменен на {planTitle}!",subscriptionSuccess:"Подписка на {planTitle} успешно оформлена!",paymentSuccessful:"Оплата прошла успешно!",planUpdated:"Ваш план обновлен.",planUpdatedDescription:"Ваш план обновлен. Вы можете сразу начать пользоваться новыми функциями.",subscriptionActive:"Ваша подписка теперь активна.",subscriptionActiveDescription:"Ваша подписка на {planTitle} теперь активна. Спасибо за покупку!",manageBillingInfo:"Управляйте вашей платежной информацией",continueToApp:"Перейти в приложение",loadingPaymentDetails:"Загрузка данных об оплате...",paymentError:"Ошибка оплаты",noSessionId:"ID сессии не указан",goToApp:"Перейти в приложение",alreadySubscribedPlan:"Вы уже подписаны на этот план.",activeSubscriptionManage:"У вас уже есть активная подписка. Пожалуйста, управляйте биллингом для смены плана.",planChangeScheduled:"Смена плана запланирована",planChangeScheduledDesc:"Ваш план будет переключен на {planTitle} в следующую дату списания.",alreadyOnPlan:"Вы уже на этом плане",changePlanFailed:"Не удалось сменить план. Пожалуйста, используйте Управление оплатой.",alreadyActiveSubscription:"У вас уже есть активная подписка",noChangesMade:"Изменения не внесены",alreadyOnPlanDesc:"Вы уже на плане {planTitle}.",badgeFree:"Бесплатно",badgePopular:"Популярный",badgeBestDeal:"Лучшее предложение",badgeMaximumAccess:"Максимальный доступ",freeForEveryone:"Бесплатно для всех",usdPerMonth:"USD/месяц",yearlyAmount:"{amount} USD / год",monthlyAmount:"{amount} USD / месяц",currentPlan:"Текущий план",startForFree:"Начать бесплатно",getPlan:"Выбрать {planTitle}",switchToPlan:"Перейти на {planTitle}",changePlanConfirmTitle:"Подтверждение смены плана",changePlanConfirmDesc:"Сейчас у вас план {currentPlan}. Выберите, когда должна вступить в силу новая цена.",changeNextBilling:"Сменить в следующее списание",changeNow:"Сменить сейчас",confirmNextBillingTitle:"Подтвердите смену в следующее списание",confirmNextBillingDesc:"Вы уверены, что хотите запланировать смену плана на следующую дату списания? Ваш текущий план {currentPlan} останется активным до этого момента. В следующую дату списания ваш план будет переключен на {planTitle} ({amount}).",yesChangeNextBilling:"Да, сменить в следующее списание",continueToCheckout:"Перейти к оплате",freeCheckoutDesc:"Сейчас у вас бесплатный план. Перейдите к оплате, чтобы подписаться на {planTitle}.",continue:"Продолжить",agreeRefundPolicy:"Я согласен(-на) с <link>Политикой возврата и отмены</link>.",everythingInPlan:"Все в плане <plan></plan>",plans:{free:{title:"Бесплатно",subtitle:"Изучайте и пробуйте",heading3:"Лучше всего для индивидуальных трейдеров"},standard:{title:"Стандарт",subtitle:"Анализируйте уверенно",heading3:"Лучше всего для индивидуальных трейдеров"},pro:{title:"Про",subtitle:"Анализируйте глубже",heading3:"Командный и профессиональный уровень"},expert:{title:"Эксперт",subtitle:"Анализируйте без ограничений",heading3:"Для профессиональных трейдеров"}},planFeatures:{categories:{candleScanner:"Сканер свечей",candleSignal:"Свечной сигнал"},labels:{patternSelector:"Селектор паттернов",patternTracker:"Трекер паттернов",newsImpact:"Влияние новостей",scanResultLimit:"Лимит результатов сканирования",activeTabs:"Активные вкладки",timeframes:"Таймфреймы",webhook:"Webhook"},values:{scansPerDay:"{count} сканов в день",patterns:"{count}",perDay:"{count}",tabsWorkspace:"{count} (рабочее пространство)",enabled:"Включено",disabled:"Выключено"}}},bg={Connections:{connectedAccount:"Подключенный аккаунт",creditUsage:"Использование кредитов",totalCreditsUsed:"Всего использовано кредитов",resetsIn:"Сброс через {duration}",understandingCredits:"Как работают кредиты и использование",nearLimit:"Почти достигнут лимит"},Subscription:{myPlan:"Мой план",thanksForSubscribing:"Спасибо за подписку!",billingHistory:"История платежей",nextBillingDate:"Следующая дата списания",whichPlan:"Какой план вам подходит?",patternSelectorCreditsPerDay:"{count} кредитов Селектора паттернов / день",patternTrackerCreditsPerDay:"{count} кредитов Трекера паттернов / день",newsImpactCreditsPerDay:"{count} кредитов Влияния новостей / день",chatAssistantCreditsPerDay:"{count} кредитов Чат-ассистента / день",prioritySupport:"Приоритетная поддержка"},Billing:{noInvoices:"Счета не найдены.",loadError:"Не удалось загрузить счета. Пожалуйста, попробуйте позже.",viewInvoice:"Посмотреть счет"}},vg={referralRebate:"Реферальный возврат",referredUsers:"Приглашенные пользователи",totalRebateEarned:"Всего заработано возвратов",referredUsersCount:"Приглашенные пользователи",activeReferrals:"Активные рефералы",referralLink:"Реферальная ссылка",shareDescription:"Поделитесь своей реферальной ссылкой с друзьями. Когда они оформят подписку, вы получите возврат с их плана.",joinedDate:"Дата присоединения",loading:"Загрузка...",noReferralCodeAvailable:"Реферальный код недоступен",updateReferralCodeTitle:"Обновить реферальный код",createReferralCodeTitle:"Создать реферальный код",updateReferralCodeDescription:"Обновите ваш реферальный код ниже.",createReferralCodeDescription:"Введите реферальный код, чтобы начать делиться своей реферальной ссылкой.",enterReferralCodePlaceholder:"Введите реферальный код",enterReferralCode:"Пожалуйста, введите реферальный код",codeCreatedSuccess:"Реферальный код успешно создан",codeUpdatedSuccess:"Реферальный код успешно обновлен",codeMinChars:"Минимум 5 символов",codeMaxChars:"Максимум 15 символов",create:"Создать",update:"Обновить",pageNumber:"Страница {page}",noReferredUsersYet:"Пока нет приглашенных пользователей",shareReferralEmptyDescription:"Поделитесь своей реферальной ссылкой, чтобы начать расширять сеть и получать возвраты."},wg={mainMenu:{coreFeatures:"Функции",account:"Аккаунт",subscription:"Подписка",communityGrowthProgram:"Программа роста сообщества",support:"Поддержка",others:"Другое"},patternMenu:{trackedPatterns:{label:"Мои отслеживаемые паттерны",tooltipTitle:"Сетапы паттернов с высокой вероятностью, обнаруженные AI",tooltipDescription:"iC Candle отслеживает глобальные рынки 24/7, чтобы находить ваши отслеживаемые паттерны, показывая уровни уверенности и направление пробоя. Используйте фильтры, чтобы найти лучшие сетапы, затем нажмите на любой паттерн для подробностей."},classicPatterns:{label:"Классические паттерны",tooltipTitle:"Классические паттерны",tooltipDescription:"Выберите паттерны, которые вам важны — двойные вершины, head & shoulders, флаги, прямоугольники и другие — затем активируйте сигналы. Мы будем отслеживать каждый тик на выбранных рынках и уведомим вас в момент завершения формации. Настройте доставку через telegram, email или in‑app уведомления, чтобы не пропустить сетап."}},helperBar:{watchList:"Список наблюдения",savedPatterns:"Сохраненные паттерны",newsMovingMarket:"Что двигает MARKET?",favoritesCount:"Избранное ({count})",groupWithCount:"{label} ({count})",noItemsInWatchList:"Список наблюдения пуст",watchListLast:"Посл.",watchListChg:"Изм.",watchListChgPercent:"Изм.%",removeFromFavorites:"Удалить из избранного",addToFavorites:"Добавить в избранное",removeSymbolFromFavorites:"Удалить {symbol} из избранного",addSymbolToFavorites:"Добавить {symbol} в избранное",groupCommodity:"Товары",groupForex:"Форекс",groupCrypto:"Крипто",groupIndices:"Индексы",groupStock:"Акции"},profileMenu:{darkTheme:"Темная тема",chatWithUs:"Написать нам",termsAndConditions:"Условия и положения",logOut:"Выйти"},tabAdded:"Вкладка добавлена",tabMemoryWarning:"Добавление большего количества вкладок может увеличить использование памяти на вашем устройстве.",tabLimitReached:"Достигнут лимит вкладок",tabLimitReachedMax:"Вы достигли максимального количества вкладок, доступного в вашем текущем плане.",tabLimitReachedUpgrade:"Вы достигли максимального количества вкладок, доступного в вашем текущем плане. Пожалуйста, обновите план, чтобы получить больше.",notifications:"Уведомления",noNotifications:"Нет уведомлений",notificationsOfflineReconnect:"(Офлайн) Пожалуйста, переподключите уведомления",headerNav:{selectorTitle:"Селектор паттернов",selectorShortTitle:"Селектор",patternTitle:"Трекер паттернов",patternShortTitle:"Трекер",newsTitle:"Влияние новостей",newsShortTitle:"Новости"},guideFeatures:{selector:{title:"Селектор паттернов",description:"Анализирует вашу идею на основе исторических рыночных данных, чтобы найти похожие ценовые паттерны и результаты."},pattern:{title:"Трекер паттернов",description:"Непрерывно сканирует рынок в фоновом режиме и уведомляет вас, когда появляется соответствующий паттерн."},news:{title:"Влияние новостей",description:"Показывает, как прошлые новостные публикации повлияли на движение цены, чтобы вы могли увидеть, как рынок реагировал ранее."}}},xg={mostSimilarNews:"Наиболее похожие новости:",selectEvent:"Выберите событие",economicCalendarAnalysis:"Анализ экономического календаря",economicCalendar:"Экономический календарь",predictAvailable:"Прогноз доступен",predictUnavailable:"Прогноз недоступен",actualReleased:"Факт опубликован",analyzeImpact:"Анализировать влияние",candleDataTooFar:"Свечные данные слишком далеко от события.",tryAnotherTimeframe:"Пожалуйста, попробуйте другой таймфрейм.",aiIntelligence:"Искусственный интеллект",matchPercent:"{percent}% совпадение",whatHappenedOnNews:"Что произошло на этой новости:",newsBeforeEvent:"Новости до события {eventName}",time15MinLater:"Через 15 мин",time30MinLater:"Через 30 мин",time1HourLater:"Через 1 час",time2HoursLater:"Через 2 часа",time4HoursLater:"Через 4 часа",noDataHere:"Здесь нет данных",pleaseWaitAndRetry:"Пожалуйста, подождите и попробуйте снова",current:"Текущий",previousMonth:"Предыдущий месяц",nextMonth:"Следующий месяц",holiday:"Выходной",seeAll:"Смотреть все",selectedSymbols:"Выбранные символы",marketNews:"Рыночные новости",patternType:"Тип паттерна",unknownPublishDate:"Неизвестная дата публикации",noMatchingArticleDetails:"Нет деталей совпадающей статьи",model:"Модель",temperature:"Температура",temperatureLow:"Низкая",temperatureMedium:"Средняя",temperatureHigh:"Высокая",previousActual:"Предыдущее фактическое значение:",currentForecast:"Текущий прогноз",previousForecast:"Предыдущий прогноз:",goToEventDetail:"Перейти к деталям события",eventInfoNotFound:"Информация о событии не найдена",ppi:"Индекс цен производителей измеряет изменения цен на товары и услуги, продаваемые производителями и заводами.",cpi:"Индекс потребительских цен измеряет изменения цен на товары и услуги, приобретаемые потребителями.",coreCpi:"Базовый индекс CPI измеряет изменения потребительских цен без учёта продуктов питания и энергии; ключевой инфляционный индикатор центральных банков.",jolts:"Обследование вакансий и текучести рабочей силы (JOLTS) измеряет количество незаполненных вакансий в США.",nfp:"Число занятых в несельскохозяйственном секторе (Nonfarm Payrolls) измеряет изменение числа рабочих мест в США, исключая сельское хозяйство и некоторые сектора.",ijc:"Первичные заявки на пособие по безработице измеряют количество людей, впервые подавших заявление на пособие по безработице в США, что отражает состояние рынка труда.",fomc:"Федеральный комитет по открытым рынкам (FOMC) — центральный банк США, который устанавливает процентные ставки и проводит денежно-кредитную политику.",fedRate:"Объявление о решении по процентной ставке Федеральной резервной системы (ФРС), которое устанавливает целевую ставку федеральных фондов и влияет на денежно-кредитную политику и финансовые рынки.",gdpAdvance:"Валовой внутренний продукт (ВВП) измеряет общую стоимость товаров и услуг, произведённых в экономике. Предварительный ВВП — это первая оценка.",gdpMonthly:"Валовой внутренний продукт (ВВП) измеряет общую стоимость товаров и услуг, произведённых в экономике. Ежемесячные отчёты отслеживают краткосрочный рост (например, ВВП Великобритании м/м).",unemploymentRate:"Уровень безработицы измеряет процент безработных в рабочей силе.",ahe:"Средняя почасовая заработная плата измеряет месячное изменение заработной платы работников, исключая сельскохозяйственных работников.",corePce:"Базовый индекс PCE измеряет месячное изменение личных потребительских расходов без учёта продуктов питания и энергии; ключевой инфляционный показатель ФРС.",retailSales:"Розничные продажи измеряют месячное изменение общего объёма продаж в розничной торговле.",ismManufacturingPmi:"ISM индекс деловой активности в производстве измеряет состояние производственного сектора США на основе опросов; значения выше 50 означают рост.",ismServicesPmi:"ISM индекс деловой активности в сфере услуг измеряет состояние сектора услуг США на основе опросов; значения выше 50 означают рост.",gdpPrelim:"Предварительный ВВП — это вторая оценка квартального роста ВВП; измеряет общую стоимость товаров и услуг в экономике.",adpNfp:"Изменение занятости в частном секторе ADP измеряет изменение занятости на основе опроса ADP/Moody's; опережающий индикатор официального Nonfarm Payrolls.",eci:"Индекс стоимости труда (ECI) измеряет квартальное изменение стоимости труда, включая зарплаты и льготы; ключевой инфляционный показатель ФРС.",flashManufacturingPmi:"Предварительный индекс PMI в производстве — оценка производственной активности на основе опросов; значения выше 50 означают рост.",flashServicesPmi:"Предварительный индекс PMI в сфере услуг — оценка активности сектора услуг на основе опросов; значения выше 50 означают рост.",claimantCount:"Изменение числа заявок на пособие по безработице в Великобритании измеряет месячное изменение числа получателей пособий по безработице; ключевой показатель рынка труда Великобритании.",boeRate:"Базовая ставка Банка Англии устанавливается Комитетом по денежно-кредитной политике; она определяет политику Великобритании и рынок фунта.",ecbMainRefinancingRate:"Основная ставка рефинансирования ЕЦБ — ключевая ставка Европейского центрального банка для операций ликвидности; определяет политику еврозоны и рынок евро.",snbPolicyRate:"Политическая ставка Швейцарского национального банка (SNB) — ключевая процентная ставка (на базе SARON); определяет денежно-кредитную политику Швейцарии и рынок CHF.",cadEmploymentChange:"Изменение занятости в Канаде измеряет месячное изменение числа занятых по данным Статистического управления Канады; ключевой индикатор рынка труда и CAD."},Pg={matchPercent:"Совпадение {percent}%",matchLabel:"Совпадение",mismatch:"Несовпадение",noResultsFound:"Результаты не найдены",result:"Результат",filter:"Фильтр",filterBy:"Фильтровать по",clearFilter:"Сбросить фильтр",selectFilterType:"Выберите тип фильтра",matchPercentLabel:"Совпадение %",selectSymbol:"Выберите символ",selectMatchPercent:"Выберите % совпадения",selectDateRange:"Выберите диапазон дат",dateLast1Month:"Последний 1 месяц",dateLast6Months:"Последние 6 месяцев",dateLastYear:"Последний год",dateLast3Years:"Последние 3 года",dateAllTime:"За все время",noDataFound:"Данные не найдены",runScanToSeePatternResults:"Запустите сканирование, чтобы увидеть результаты паттернов здесь",scanAgainToPlay:"Сканируйте снова, чтобы воспроизвести график",scan:"Сканировать",activateSelector:"Активировать селектор",resetAfterDuration:"Сброс через: {duration}",markets:"Рынки",scannerOptions:"Параметры сканера",saveOptions:"Сохранить параметры",searchSymbol:"Поиск символа",probabilityCalculation:"Расчет вероятности",probabilityCalculationTooltip:"Определяет количество следующих свечей, используемых для расчета вероятности.",period:"Период",periodTooltip:"Ищет с выбранного периода.",timeframeTooltip:"Определяет свечной таймфрейм для результатов сканирования.",topResultsTooltip:"Определяет количество результатов сканирования.",auto:"Авто",settings:"Настройки",collapseToolbar:"Свернуть панель",expandToolbar:"Развернуть панель",availableBars:"Доступные размеры: 10-50, 60, 70, 80, 90, 100",clearReplayFirst:"Сначала очистите график воспроизведения",pleaseLoginFirst:"Пожалуйста, сначала войдите в систему",trackPattern:"Отслеживать паттерн",selectAll:"Выбрать все",searchTimeframe:"Поиск таймфрейма",selectAllTimeframes:"Выбрать все таймфреймы",selectTimeframeAria:"Выбрать таймфрейм {label}",selectSymbolAria:"Выбрать символ {symbol}",timeframeTypeMinutes:"Минуты",searchFilterSaved:"Поисковый фильтр успешно сохранен.",periodAll:"Все",periodLastYear:"Последний год",periodLast3Years:"Последние 3 года",periodLast5Years:"Последние 5 лет",periodLast15Years:"Последние 15 лет",topResults:"Лучшие результаты",tabSymbols:"Символы",tabAdvancedOptions:"Расширенные параметры",tabBasic:"Базовые",tabAdvancedFilter:"Расширенный фильтр",priceMovementData:"Данные движения цены:",askAssistantExplanation:"Попросить ассистента объяснить",selectCandleCount:"Выберите количество свечей",priceChanges:"Изменения цены",candlesCount:"{count} свечей",basedOnDirectionPatterns:'На основе паттернов после движения "{direction}"',noAiMovementData:"Нет AI-данных о движении в направлении {direction}",scannerOptionsDescription:"Настройте символы и параметры сканирования.",alwaysShow:"Всегда показывать",aiModel:"Модель AI Intelligence",aiTemperature:"Температура AI",aiModelTooltipLight:"Обучена на данных за последние 2 года.",aiModelTooltipPro:"Обучена на всех исторических данных.",aiTemperatureTooltip:"Определяет уровень согласованности AI-прогнозов."},Sg={scannedAt:"Сканировано:",trackerActivated:"Tracker активирован",match:"Совпадение: {percent}%",result:"Результат",windowSize:"Размер окна: {size}",patternSelectorHistory:"История Селектора паттернов",noFilter:"Без фильтра",favorite:"Избранное",windowSizeFilter:"Размер окна",windowSizePlaceholder:"Размер окна (10-50)",submit:"Отправить"},Tg={trackYourCustomPatterns:"Отслеживайте свои кастомные паттерны",selectedSymbol:"Выбранный символ",selectedSymbols:"Выбранные символы",timezone:"Часовой пояс",selectedTimeframes:"Выбранные таймфреймы",moreItems:"{count, plural, one {еще # элемент} few {еще # элемента} many {еще # элементов} other {еще # элемента}}",selectedBars:"Выбранные бары",barsCount:"{count} баров",timeFrame:"Таймфрейм",patternType:"Тип паттерна",created:"Создан",editPattern:"Редактировать паттерн",createNewTracker:"Создать новый трекер",firstYouHaveToScan:"Сначала нужно выполнить сканирование",goToScan:"Перейти к сканированию",addToPatternTracker:"Добавить в Трекер паттернов",goToPatternTracker:"Перейти в Трекер паттернов",addToPatternTrackerDescription:"Вы будете получать обновления в реальном времени, когда появится этот паттерн. Введите имя, чтобы легче распознавать это оповещение.",patternName:"Название паттерна",patternNamePlaceholder:"Введите название для этого паттерна",patternNameMinChars:"Требуется минимум 5 символов.",patternNameMaxChars:"Достигнут лимит 20 символов.",patternNameErrorTitle:"Ошибка названия паттерна",patternNameErrorDescription:"Пожалуйста, введите имя для сигнала паттерна",customPatternSignalTooltip:"Вы получите уведомление, как только паттерн сформируется на рынке как сигнал пользовательского паттерна",noPatternDataFound:"Данные паттерна не найдены",limitReached:"Лимит достигнут",limitReachedTrackerDescription:"Вы достигли максимального количества трекеров паттернов.",trackerUpgradeToastDescription:"Вы достигли максимального количества сигналов, разрешенных в вашем текущем плане. Пожалуйста, обновите план, чтобы получить больше.",patternConfigUpdated:"Конфигурация паттерна обновлена",patternConfigUpdatedDesc:'Конфигурация паттерна "{name}" была обновлена',patternConfigError:"Ошибка конфигурации паттерна",patternConfigErrorDesc:"Не удалось обновить конфигурацию паттерна",patternSaved:"Паттерн сохранен",patternSavedDesc:'Название паттерна "{name}" сохранено',patternSignalError:"Ошибка сигнала паттерна",patternSignalErrorDesc:"Не удалось сохранить паттерн",trackerTutorialPlanLimitExpert:"Ваш план имеет лимит отслеживания паттернов: {limit}.",trackerTutorialPlanNoTracking:"Ваш план не включает отслеживание паттернов. Наши более высокие планы позволяют добавлять паттерны в трекер.",trackerTutorialPlanTrackingLimit:"Ваш план позволяет отслеживать до {limit} паттернов. Наши более высокие планы позволяют отслеживать больше паттернов.",currentPlan:"Текущий план",planFree:"Бесплатный",configurePatternTracker:"Настроить Трекер паттернов",selectTimeframesAndSymbols:"Выберите таймфреймы и символы, которые вы хотите отслеживать для этого паттерна.",selectTimeframes:"Выберите таймфреймы",chooseTimeframes:"Выберите таймфреймы, которые вы хотите отслеживать для этого паттерна.",searchTimeframes:"Поиск таймфреймов",timeframeSelected:"Выбран {count} таймфрейм",timeframesSelected:"Выбрано {count} таймфреймов",symbolSelected:"Выбран {count} символ",symbolsSelected:"Выбрано {count} символов",patternSelected:"Выбран {count} паттерн",patternsSelected:"Выбрано {count} паттернов",patternTypes:"Типы паттернов",patternSubscribed:"Паттерн подписан",patternSubscribedDesc:"Паттерн «{name}» теперь отслеживается",patternSubscriptionError:"Ошибка подписки на паттерн",subscriptionModalAria:"Подписка на трекер паттернов",noPatternCandles:"Свечи паттерна не найдены",chartSymbolRequired:"Символ графика обязателен",userIdRequired:"ID пользователя обязателен",subscribe:"Подписаться",subscribing:"Подписка...",tabTimeShort:"Время",signalDialog:{title:"Настройки сигнала - {patternTitle}",successDescription:"Настройки сигнала успешно обновлены",selectOneTimeframe:"Пожалуйста, выберите хотя бы один таймфрейм",selectOneSymbol:"Пожалуйста, выберите хотя бы один символ",selectOneTimeframeAndSymbol:"Пожалуйста, выберите хотя бы один таймфрейм и один символ",selectCurrencyPairs:"Выберите валютные пары",chooseCurrencyPairs:"Выберите валютные пары, которые хотите отслеживать по паттернам",searchCurrencyPairs:"Поиск валютных пар"},noMatchesFound:"Совпадения не найдены",filterCategoryPattern:"Паттерн",filterCategorySymbol:"Символ",filterCategoryTimeframe:"Таймфрейм",selectCategory:"Выберите категорию",searchCategory:"Поиск {category}...",timeframeOptions:{M15:{displayName:"15 минут",description:"Таймфрейм 15 минут"},M30:{displayName:"30 минут",description:"Таймфрейм 30 минут"},H1:{displayName:"1 час",description:"Таймфрейм 1 час"},H2:{displayName:"2 часа",description:"Таймфрейм 2 часа"},H4:{displayName:"4 часа",description:"Таймфрейм 4 часа"},D:{displayName:"1 день",description:"Дневной таймфрейм"}}},kg={priceActionPattern:"Паттерн ценового движения",labels:{flagbear:"Bearish Flag",flagbull:"Bullish Flag",dd_top:"Double Top",dd_bot:"Double Bottom",aad_up:"AAD Up",aad_down:"AAD Down",has_bull:"Head and Shoulders Bullish",has_bear:"Head and Shoulders Bearish",rectangle:"Rectangle"},timeframes:{M1:"1 минута",M5:"5 минут",M15:"15 минут",M30:"30 минут",H1:"1 час",H2:"2 часа",H4:"4 часа",D1:"Дневной"},patterns:{doubleBottom:{desc:'<div><p>Эти паттерны формируются, когда цена дважды тестирует один и тот же уровень и не может его пробить.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Это показывает, что рынок теряет импульс в одном направлении.</li><li>Пробой за пределы диапазона обычно сигнализирует о приближении разворота.</li></ul></div>'},doubleTop:{desc:'<div><p>Эти паттерны формируются, когда цена дважды тестирует один и тот же уровень и не может его пробить.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Это показывает, что рынок теряет импульс в одном направлении.</li><li>Пробой за пределы диапазона обычно сигнализирует о приближении разворота.</li></ul></div>'},bullishFlag:{desc:'<div><p>Короткая пауза или консолидация после сильного движения (вверх или вниз).</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Цена движется в небольшом наклонном канале против тренда.</li><li>После выхода из флага тренд часто продолжается в том же направлении.</li></ul></div>'},bearishFlag:{desc:'<div><p>Короткая пауза или консолидация после сильного движения (вверх или вниз).</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Цена движется в небольшом наклонном канале против тренда.</li><li>После выхода из флага тренд часто продолжается в том же направлении.</li></ul></div>'},bullishHeadShoulders:{desc:'<div><p>Этот паттерн показывает изменение силы рынка и сигнализирует о возможном развороте тренда.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Он состоит из трех частей: одного более крупного движения ("голова") и двух меньших ("плечи").</li><li>Когда паттерн завершен, цена часто пробивается и идет в направлении, противоположном предыдущему тренду.</li></ul></div>'},bearishHeadShoulders:{desc:'<div><p>Этот паттерн показывает изменение силы рынка и сигнализирует о возможном развороте тренда.</p><ul style="list-style-type: disc; margin-left: 20px; margin-top: 10px;"><li>Он состоит из трех частей: одного более крупного движения ("голова") и двух меньших ("плечи").</li><li>Когда паттерн завершен, цена часто пробивается и идет в направлении, противоположном предыдущему тренду.</li></ul></div>'}}},Cg={chartPatterns:"Какие бывают паттерны на графике?",flagPattern:"Как эффективно торговать паттерн флаг?",rectanglePattern:"Какие ключевые особенности паттерна прямоугольник?"},Ag={pip:"Что такое пункт (pip)?",majorCurrencyPairs:"Какие основные валютные пары для торговли?",lotSize:"Что такое размер лота?",leverage:"Что такое кредитное плечо?",margin:"Что такое маржа?",bullishFlagTrack:"Отслеживать бычий флаг на всех символах и таймфреймах"},Ng={cpi:"Что такое CPI и как он влияет на рынок?",nfp:"Что такое NFP и как он влияет на рынок?",eurImpactfulNews:"Какие новости наиболее влияют на рынок USD?"},Dg="lang",Rg="Профиль",Eg={statistics:{heading:"Тысячи трейдеров уже изменили то, как они видят рынок.",tradersReport:"7 из 10 трейдеров сообщают об улучшении стабильности своих торговых решений.",satisfactionRate:'96% бета-тестеров отметили удовлетворенность и сказали: "Ощущение, будто торгуешь с мозгом рядом."',usersChanged:"Более 80% пользователей говорят, что iC Candle изменил их подход к анализу рынка.",lessTimeWatching:"В среднем пользователь тратит на 40% меньше времени на наблюдение за графиками благодаря напоминаниям о паттернах."},feedback:{backtestingTitle:"Похоже на бэктестинг нового уровня.",backtestingDesc:"Бэктестинг в iC Candle — это реально переломный момент. Невероятно, насколько все стало быстрее и понятнее. Я реально в восторге. Трудно представить активного трейдера, который мог бы работать без этого.",confirmsTitle:"Подтверждает мои сетапы",confirmsDesc:"Омг, наконец-то инструмент, который реально доказывает, что мой собственный анализ валиден. С тех пор как я начал использовать iCCandle, моя нерешительность в трейдинге упала примерно на 80%. Сейчас я намного увереннее.",marketHistoryTitle:"История рынка ведет мои сделки",marketHistoryDesc:"Использование исторических реакций в моих сделках стало моим новым стилем. Ценность, которую я получаю, по сравнению с тем, сколько плачу за подписку? Вообще несравнимо.",chatGPTTitle:"ChatGPT трейдера",chatGPTDesc:"Я использую ChatGPT буквально для всего в повседневной жизни, все знают, насколько это упрощает дела. И честно... кажется, я только что нашел трейдерскую версию ChatGPT."},tags:{all:"Все",blog:"Блог",crypto:"Крипто",event:"Событие",pairs:"Пары"}},Mg={title:"Страница не найдена",description:"Страница, которую вы ищете, не существует или была перемещена",backToHomepage:"Вернуться на главную",imageAlt:"Не найдено"},Og=JSON.parse(`{"Page":{"title":{"terms":"Условия обслуживания","privacy":"Политика конфиденциальности","refund":"Политика возврата средств и отмены","cookie":"Политика использования файлов куки"},"tabs":{"terms":"Условия обслуживания","privacy":"Политика конфиденциальности","refund":"Политика возврата средств и отмены","cookie":"Политика использования файлов куки"},"nav":{"terms":"Условия обслуживания","privacy":"Политика конфиденциальности","refund":"Политика возврата средств и отмены","cookie":"Политика использования файлов куки"}},"Terms":{"title":"Условия обслуживания, TOS, условия, положения, отказ от ответственности, договор, соглашение","intro":{"p1":"Настоящее соглашение заключается между Pixel Nexus Global, сингапурской компанией с ограниченной ответственностью, осуществляющей деятельность через сайт www.iccandle.ai («Pixel Nexus Global», «мы», «нас» или «наш»), и физическим или юридическим лицом, приобретающим или использующим услуги, предлагаемые через Платформу («Клиент», «вы» или «ваш»). Если вы приобретаете Услуги от имени третьей стороны, вы подтверждаете, что обладаете законными полномочиями обязать такую сторону соблюдать настоящие Условия обслуживания и несёте ответственность за их использование Услуг.","p2":"Получая доступ к Платформе и Услугам, описанным в настоящем документе и размещённым на www.iccandle.ai, либо оформляя подписку через сайт iccandle.ai, вы подтверждаете, что прочитали, поняли и согласились с настоящими Условиями, Положениями и отказами от ответственности. Вы также соглашаетесь, что ваши отношения с нами регулируются положениями настоящих Условий обслуживания.","p2Emphasis":"Если вы не принимаете данные условия, вы обязаны немедленно прекратить использование iccandle.ai и любых связанных услуг или платформ."},"sections":[{"title":"1. Услуги","paragraphs":["Pixel Nexus Global will provide active customers in good standing with access to its AI-powered analytical tool (the “Platform”). As used in this Agreement, the term “Services” refers to Pixel Nexus Global’s provision of your access to the Platform. The Services will be provided to you under one or more subscriptions, account activations, sign-ups, or orders placed by you on the iccandle.ai website and accepted by Pixel Nexus Global (an “Order”).","In case of any conflict between these TOS and an Order, the terms of these TOS shall take precedence. By accepting the Services, you acknowledge and agree that any different or additional terms proposed by you in an Order or otherwise are expressly rejected by Pixel Nexus Global, unless we have agreed to such terms in a written document signed by an authorized representative."]},{"title":"2. Ваши обязательства","subsections":[{"title":"Информация о клиенте и ответственность за аккаунт","paragraphs":["You agree to provide Pixel Nexus Global with accurate information when creating your account, throughout our business relationship, and in all correspondence with us. We may occasionally need to contact you via email or telephone regarding the Services. You agree to maintain a valid email address that you check daily and to promptly notify us of any changes to your contact information.","Pixel Nexus Global shall not be responsible for any service interruptions, damages, or consequences resulting from misdirected communications due to your failure to provide current contact details. You also agree to complete all data entitlement surveys within the platform completely and truthfully to maintain compliance with exchange regulations."]},{"title":"Разрешённое использование платформы","paragraphs":["Your use of the Platform must comply with these TOS and any accompanying documentation we provide. If you permit third parties to access the Platform, you agree to: (i) restrict their use in accordance with these terms; (ii) ensure their compliance with these TOS and our Privacy Policy; and (iii) remain fully liable for any violations of these TOS or the Privacy Policy by such third parties."]},{"title":"Интеллектуальная собственность и соблюдение закона","paragraphs":["You agree not to alter, obscure, or remove any trademark or proprietary notices. You may only use the Platform in accordance with: (i) the laws governing these TOS; and (ii) all applicable laws in your jurisdiction.","Несанкционированное использование строго запрещено."]}]},{"title":"3. Срок действия","subsections":[{"title":"Дата вступления в силу","paragraphs":["These Terms of Service (TOS) become effective (\\"Effective Date\\") on the earlier of: (i) the date you click \\"I accept\\" as recorded by our servers; or (ii) the date you first access or use the Platform.","These TOS remain in effect for the duration of any active Order."]},{"title":"Подписка и продление","paragraphs":["The Services will automatically renew for successive periods (monthly, quarterly, or annually) as specified in your Order. If unspecified, the default initial subscription period (\\"Initial Term\\") is one month. Subsequent renewal periods (\\"Renewal Terms\\") will match the Initial Term’s duration."]},{"title":"Пробный период","paragraphs":["Pixel Nexus Global may offer trial periods (paid or free) as indicated on the iccandle.ai trial signup page. During any trial period:"],"listOrdered":["применяются все условия как для платной подписки","вы можете отменить подписку до автоматического продления","условия могут изменяться без уведомления"]},{"title":"Управление подпиской","paragraphs":["You are solely responsible for managing your subscription, including:"],"listDisc":["контроль дат продления","обновление платёжных данных","отмена подписки","актуальность контактных данных"],"paragraphsAfter":["Pixel Nexus Global is not responsible for any charges due to failure to manage your subscription."]}]},{"title":"4. Прекращение","subsections":[{"title":"Отмена и возвраты","paragraphs":["Details about cancellation and refund policies are available on our Refund and Cancellation Policy page at iccandle.ai. Terminating your account disables automatic renewals but does not cancel past invoices or make prior payments refundable unless stated otherwise in our Refund and Cancellation Policy.","Any currently due invoices must be paid in full to settle your account. Your access to Pixel Nexus Global services will continue until the expiration of your prepaid period or trial term."]},{"title":"Расторжение по инициативе сторон","paragraphs":["Either party may terminate any Order by providing written notice at least one (1) day before the expiration of the Initial Term or any Renewal Term. For purposes of this provision, “written notice” includes communication through email, live chat, telephone, or via the Online Portal, indicating a desire not to continue service with Pixel Nexus Global in the future."]},{"title":"Нарушения","paragraphs":["Pixel Nexus Global reserve the right to immediately suspend Services and/or terminate any Order in cases of violation of these TOS, breach of our Privacy Policy, or use of Services in a manner contrary to law or generally accepted internet standards. Such termination may occur without prior notice, dispute resolution process, or refund of any fees."]},{"title":"Последствия","paragraphs":["The expiration or termination of any Order does not affect any rights or obligations that either (i) came into effect upon or after such expiration/termination, or (ii) survive the termination and were incurred by the parties prior to termination. Upon termination, you must promptly settle any outstanding balance. Pixel Nexus Global is not obligated to return any paid fees for terminations occurring prior to completion of a full term, except as may be expressly provided in our Refund and Cancellation Policy.","All termination matters are governed by the complete terms set forth in this agreement, and Pixel Nexus Global maintains full discretion in enforcing these provisions."]}]},{"title":"5. Лицензия и ограничения","paragraphs":["Pixel Nexus Global grants you a limited, revocable, non-exclusive, non-transferable, worldwide license to utilize our proprietary technology (\\"Pixel Nexus Technology\\") solely for accessing and employing our analytical engines as part of the Services, including any generated reports (\\"Reports\\"). This license is restricted to your account's registered users and automatically terminates upon expiration or termination of these TOS.","No rights beyond this limited license are conferred. All ownership rights in the Pixel Nexus Technology remain exclusively with Pixel Nexus Global or its licensors. You are expressly prohibited from: transferring, leasing, lending, sublicensing, reselling, or distributing the technology; using it for timesharing or service bureau purposes; or permitting unauthorized third-party access. You may not circumvent any protective measures safeguarding our proprietary interests, nor modify, reproduce, decompile, reverse engineer, or create derivative works from the Pixel Nexus Technology or Platform components. Upon termination, you must immediately cease using and permanently delete all Pixel Nexus Technology in your possession, ensuring any third parties with access do likewise."],"subsections":[{"title":"Права собственности","paragraphs":["Pixel Nexus Global retains all rights, title, and interest in the Pixel Nexus Technology and Platform, including but not limited to all derivative works, improvements, enhancements, and associated intellectual property rights such as trademarks and copyrights."]},{"title":"Положения об обратной связи","paragraphs":["You may voluntarily provide, or we may solicit, input regarding the Platform or Services (\\"Feedback\\"), including suggestions for modifications or improvements. You acknowledge such Feedback constitutes Pixel Nexus Global's confidential proprietary information and irrevocably assign all related rights and interests to us. Pixel Nexus Global may utilize Feedback for any purpose without limitation or compensation obligation. This assignment applies globally and survives termination of these TOS.","All rights not expressly granted herein are reserved by Pixel Nexus Global. Any unauthorized use constitutes breach of these TOS and may result in immediate termination of your access rights."]}]},{"title":"6. Использование данных и ИС","paragraphs":["Pixel Nexus Global may utilize information you provide or data collected from your use of the Platform and Services (\\"Operational Information\\") to deliver technical support and facilitate the implementation, operation, and administration of the Services. By using our Services, you grant us a perpetual, irrevocable license to process and analyze this Operational Information. We may combine this data with aggregate information from our general business operations to enhance existing Services or develop new products and offerings.","Pixel Nexus Global shall retain exclusive ownership of all intellectual property derived from such analysis and improvements. You hereby irrevocably waive any potential rights to this intellectual property and assign all rights, title, and interest therein to Pixel Nexus Global. You further agree to provide reasonable cooperation in securing and protecting these rights. We reserve the right to commercialize this Operational Information through sale, monetization, or incorporation into other products and services, without obligation to compensate you or grant you any ownership interest.","This license shall terminate upon expiration or cancellation of these Terms of Service, except with respect to historical data that has been aggregated and anonymized such that it cannot be identified as originating from your organization. Pixel Nexus Global may retain and continue to use such anonymized, aggregated data indefinitely for any lawful business purpose.","All intellectual property rights not expressly granted herein remain the exclusive property of Pixel Nexus Global. Your continued use of the Services constitutes acceptance of these terms regarding data usage and intellectual property rights."]},{"title":"7. Отказ от ответственности за точность информации","paragraphs":["Pixel Nexus Global relies on third-party data feeds to power its platform and therefore cannot guarantee the absolute accuracy of the information displayed. Different features within our system (such as scanners, automated analysis tools, charting functions, and back testing capabilities) may utilize separate data providers, which can result in variances between datasets across different platform features. Users should always verify analysis results and scanner conditions to ensure data consistency.","The platform's analytical outputs are inherently dependent on the quality of underlying third-party data, and Pixel Nexus Global makes no representations or warranties regarding the accuracy of these analyses. The iccandle.ai website, Services, and Platform are designed solely for informational and research purposes - they should never serve as the sole basis for investment decisions. Pixel Nexus Global disclaims all liability for any financial losses resulting from reliance on potentially inaccurate data or analysis within the Platform.","The Pixel Nexus Global system is provided strictly on an \\"as-is\\" basis without guarantees or warranties of any kind, as its functionality depends on unverified third- party data sources. The platform is intended exclusively for educational, entertainment, and general informational use - not as professional financial advice or a substitute for independent investment research. Users assume all risk associated with interpreting and acting upon any information displayed within the system.","By accessing and using the Platform, you acknowledge these inherent limitations and agree that Pixel Nexus Global shall not be held responsible for any consequences arising from data inaccuracies, analysis errors, or investment decisions made based on platform content."]},{"title":"8. Отказ от инвестиционных рекомендаций и ограничения платформы","paragraphs":["The analytical tools and outputs provided by Pixel Nexus Global's iccandle.ai platform are strictly for informational and research purposes only and should not be construed as investment advice. The platform relies on third-party data sources that may contain inaccuracies, and different features may produce varying results due to separate data providers. All analysis, including results from our Pattern Selector, Pattern Tracker, and News Impact Intelligence, is provided \\"AS-IS\\" without any guarantees of accuracy. These tools demonstrate historical patterns, probabilities, and market behavior under past conditions and cannot predict future results, as actual market outcomes may differ due to liquidity, execution, and other variables. You must never rely solely on platform analysis when making investment decisions."]},{"title":"9. Признание рисков и ответственность пользователя","paragraphs":["By using Pixel Nexus Global's platform (iccandle.ai), you expressly acknowledge and accept full responsibility for all risks associated with any investment decisions made based on information or analysis obtained from our Platform. You understand that our services rely on third-party data sources that may contain inaccuracies, and that our analytical models employ mathematical formulas and sequences that have not been independently verified for predictive accuracy. Pixel Nexus Global cannot and does not guarantee the reliability of any market data, technical indicators, or analytical outputs generated by the Platform.","Prior to executing any trades, you agree to either: (i) consult with a qualified, licensed financial professional; or (ii) conduct comprehensive independent research using multiple verified information sources.","Pixel Nexus Global expressly disclaims all liability for any trading losses, missed opportunities, or other financial consequences resulting from your reliance on Platform content. By continuing to use iccandle.ai, you confirm your understanding that our tools are designed for informational purposes only and that you alone bear complete responsibility for all investment choices and outcomes. This warning constitutes an essential term of our agreement, and your use of the Platform signifies your unconditional acceptance of these risk disclosures."]},{"title":"10. Отказ от гарантий и ограничения сервиса","paragraphs":["The Pixel Nexus Global platform (iccandle.ai), including all Services, scripts, reports, analytical engines, and related technology, is provided strictly on an \\"AS-IS\\" and \\"AS- AVAILABLE\\" basis. Pixel Nexus Global makes no representations or warranties of any kind, whether express or implied. This includes, but is not limited to, all implied warranties of non-infringement, merchantability, fitness for a particular purpose, accuracy, quality, or achievement of specific results. No warranties arise from any course of dealing, performance, or trade usage.","Pixel Nexus Global does not guarantee that the Service will meet your requirements, operate without interruption, remain error-free, or be secure from viruses or other harmful components. Compatibility with all websites or browsers is not assured, and Pixel Nexus Global disclaims all liability for issues arising from browser incompatibility or third-party services, even if such services appear integrated with our Platform. Any data transmitted via our Services remains your sole responsibility, and Pixel Nexus Global expressly disclaims liability for such content. No warranties provided by third- party vendors to Pixel Nexus Global extend to you, and you are not a third-party beneficiary of such agreements."],"subsections":[{"title":"Функции оповещений и бета-функции","paragraphs":["The Platform includes alert features (e.g., \\"Dynamic Price Alerts\\" and \\"Multi-Factor Alerts\\"), which are provided without warranty or guarantee of reliability. Technical delays or failures may occur due to cellular networks, email services, system errors, or other factors. You acknowledge that alerts may not function as intended and agree that Pixel Nexus Global bears no liability for trading losses resulting from reliance on these features, regardless of whether they were used correctly.","Certain features labeled as 'Beta' are under active development and may exhibit unstable or unreliable performance, including inconsistent data or incorrect information due to software bugs or programming errors. These Beta features carry additional risks and should be used with extreme caution."]},{"title":"Общие положения","paragraphs":["This warranty disclaimer applies to all oral or written information provided by Pixel Nexus Global, its employees, affiliates, or third-party vendors. You may not rely on any such statements or representations.","Some jurisdictions may not permit the exclusion of certain warranties. If applicable to you, any warranty claim must be filed within ninety (90) days of the Service provision that gave rise to the claim. Failure to submit a claim within this period constitutes an irrevocable waiver of your right to pursue such claims thereafter.","Third-party websites linked through the Pixel Nexus Global platform are not under our control, and we assume no responsibility for their content or functionality. Accessing these external sites is entirely at your own risk. Such links are provided for convenience only and do not constitute an endorsement or recommendation by Pixel Nexus Global.","By using the Platform, you acknowledge and accept these limitations and disclaimers in full."]}]},{"title":"11. Ограничение ответственности","paragraphs":["Pixel Nexus Global's total liability under this Agreement shall not exceed the aggregate fees actually paid by you to Pixel Nexus Global during the one (1) month period immediately preceding the event giving rise to such liability. For purposes of this limitation, \\"Pixel Nexus Global\\" includes its employees, agents, owners, directors, officers, affiliates, and any third-party service providers facilitating the Services.","To the maximum extent permitted by law, you agree that under no circumstances - including negligence - shall Pixel Nexus Global or its licensors, agents, employees, officers, or third-party vendors be liable for any indirect, incidental, special, consequential, or punitive damages. This exclusion applies to, but is not limited to, damages for:"],"listOrdered":["Упущенная прибыль или доход","Прерывание бизнеса","Потеря или повреждение данных","Потеря сбережений","Любые другие финансовые потери, понесённые вами, конечными пользователями или третьими лицами"],"paragraphsAfter":["These limitations apply regardless of whether the action arises in contract, tort (including negligence), or any other legal theory, and shall remain in effect even if Pixel Nexus Global has been advised of the possibility of such damages. While some jurisdictions may not allow limitations on certain liabilities, you agree that, where such restrictions apply, Pixel Nexus Global's liability shall be limited to the maximum extent permitted by applicable law.","This limitation of liability constitutes an essential basis of the bargain between you and Pixel Nexus Global and shall survive termination of this Agreement. By using the Services, you acknowledge that these limitations are reasonable and reflect the risk allocation between both parties."]},{"title":"12. Уведомления","paragraphs":["All official notices will be sent to your account’s listed contact information. You are responsible for maintaining current and accurate contact details in our records at all times.","For most inquiries, including technical support and billing matters, please visit our website at www.iccandle.ai for contact information and support options.","However, any legal notices regarding these Terms of Service or other Pixel Nexus Global policies must be sent exclusively via postal mail to our designated address:"],"address":{"company":"Pixel Nexus Global PTE. LTD.","lines":["160 Robinson Road, #14-04","Singapore Business Federation Center","Singapore 068914"]}},{"title":"13. Форс-мажор","paragraphs":["Neither party shall be liable for any failure or delay in performance (except for payment obligations) due to events beyond their reasonable control, including, but not limited to, acts of God, natural disasters, war, civil unrest, epidemics, labor disputes, utility failures, telecommunication outages, supply chain disruptions, government actions, or other unforeseeable catastrophic events; provided that: (i) the affected party notifies the other in writing within ten (10) days of the event’s commencement; (ii) all payment obligations remain unaffected; (iii) the time for performance shall be extended day-for-day to match the duration of the disruption; and (iv) both parties use commercially reasonable efforts to mitigate the impact.","It is understood that this clause does not permit termination of the Agreement solely due to force majeure conditions, nor does it extend the Agreement term beyond its original expiration date without mutual written agreement."]},{"title":"14. Отказ от прав","paragraphs":["No failure or delay by Pixel Nexus Global in exercising any right under these Terms shall operate as a waiver of that right, nor shall any single or partial exercise of any right preclude the further or full exercise of that right or any other right under these Terms."]},{"title":"15. Уступка","paragraphs":["Pixel Nexus Global may assign these Terms, or any rights hereunder, without your consent. You may not assign these Terms without our prior written approval. These Terms shall be binding upon, and inure to the benefit of, the parties' respective successors and permitted assigns."]},{"title":"16. Разделимость","paragraphs":["If any provision of these Terms is held to be invalid or unenforceable by a court of competent jurisdiction, that provision shall be modified to the minimum extent necessary to make it valid and enforceable while preserving its original intent. All other provisions shall remain in full force and effect."]},{"title":"17. Отсутствие агентских отношений","paragraphs":["Nothing in these Terms creates an agency, partnership, joint venture or employment relationship between the parties. Neither party has authority to bind the other or incur obligations on the other's behalf."]},{"title":"18. Конфиденциальность и конфликты","paragraphs":["Our Privacy Policy is incorporated herein by reference. In the event of a conflict between agreements: (i) these Terms prevail over the Privacy Policy; (ii) any separate service agreement shall prevail over conflicting provisions of these Terms, but only with respect to those specific provisions; and (iii) in all other cases, these Terms shall govern."]},{"title":"19. Юрисдикция и ограничения","paragraphs":["The services and information provided on iccandle.ai are not intended for use in jurisdictions where such services would be contrary to local laws or regulations. Access to and use of this website are strictly prohibited for citizens of the following jurisdictions: United States of America, Canada, Russian Federation, Iran, North Korea, Myanmar, Syria, Cuba, Crimea, Donetsk, and Luhansk regions of Ukraine, Afghanistan, Belarus, and Venezuela. This list may be updated at any time without prior notice. Users are solely responsible for ensuring that their access to and use of this website comply with all applicable laws and regulations in their country. iccandle.ai accepts no responsibility or liability for any non-compliance by users with their local regulatory requirements and reserves the right to restrict, block, or terminate access at its sole discretion."]}],"content":"Условия обслуживания, TOS, условия, положения, отказ от ответственности, договор, соглашение\\nНастоящее соглашение заключается между Pixel Nexus Global, сингапурской компанией с ограниченной ответственностью, осуществляющей деятельность через сайт www.iccandle.ai («Pixel Nexus Global», «мы», «нас» или «наш»), и физическим или юридическим лицом, приобретающим или использующим услуги, предлагаемые через Платформу («Клиент», «вы» или «ваш»). Если вы приобретаете Услуги от имени третьей стороны, вы подтверждаете, что обладаете законными полномочиями обязать такую сторону соблюдать настоящие Условия обслуживания и несёте ответственность за их использование Услуг.\\n\\nУсловия обслуживания, TOS, условия, положения, отказ от ответственности, договор, соглашение Настоящее соглашение заключается между Pixel Nexus Global, сингапурской компанией с ограниченной ответственностью, осуществляющей деятельность через сайт www.iccandle.ai («Pixel Nexus Global», «мы», «нас» или «наш»), и физическим или юридическим лицом, приобретающим или использующим услуги, предлагаемые через Платформу («Клиент», «вы» или «ваш»). Если вы приобретаете Услуги от имени третьей стороны, вы подтверждаете, что обладаете законными полномочиями обязать такую сторону соблюдать настоящие Условия обслуживания и несёте ответственность за их использование Услуг.\\n\\nПолучая доступ к Платформе и Услугам, описанным в настоящем документе и размещённым на www.iccandle.ai, либо оформляя подписку через сайт iccandle.ai, вы подтверждаете, что прочитали, поняли и согласились с настоящими Условиями, Положениями и отказами от ответственности. Вы также соглашаетесь, что ваши отношения с нами регулируются положениями настоящих TOS.\\nЕсли вы не принимаете данные условия, вы обязаны немедленно прекратить использование iccandle.ai и любых связанных услуг или платформ.\\n\\n1. Услуги\\n\\nPixel Nexus Global предоставляет действующим клиентам, находящимся в надлежащем статусе, доступ к своему аналитическому инструменту на базе искусственного интеллекта («Платформа»).\\nВ рамках настоящего соглашения термин «Услуги» означает предоставление Pixel Nexus Global доступа к Платформе.\\nУслуги предоставляются в рамках одной или нескольких подписок, активаций аккаунта, регистраций или заказов, оформленных вами на сайте iccandle.ai и принятых Pixel Nexus Global («Заказ»).\\n\\nPixel Nexus Global предоставляет действующим клиентам, находящимся в надлежащем статусе, доступ к своему аналитическому инструменту на базе искусственного интеллекта («Платформа»). В рамках настоящего соглашения термин «Услуги» означает предоставление Pixel Nexus Global доступа к Платформе. Услуги предоставляются в рамках одной или нескольких подписок, активаций аккаунта, регистраций или заказов, оформленных вами на сайте iccandle.ai и принятых Pixel Nexus Global («Заказ»).\\n\\nВ случае противоречий между настоящими TOS и Заказом, приоритет имеют положения настоящих TOS.\\nПринимая Услуги, вы соглашаетесь, что любые иные или дополнительные условия, предложенные вами в Заказе или иным образом, прямо отклоняются Pixel Nexus Global, если только мы не согласовали их в письменной форме, подписанной уполномоченным представителем.\\n\\n2. Ваши обязательства\\nИнформация о клиенте и ответственность за аккаунт\\n\\nВы соглашаетесь предоставлять Pixel Nexus Global точную информацию при создании аккаунта, в течение всего периода взаимодействия и во всей переписке. Мы можем периодически связываться с вами по электронной почте или телефону. Вы обязуетесь поддерживать действующий e-mail, проверяемый ежедневно, и своевременно сообщать об изменениях контактных данных.\\n\\nВы соглашаетесь предоставлять Pixel Nexus Global точную информацию при создании аккаунта, в течение всего периода взаимодействия и во всей переписке.\\nМы можем периодически связываться с вами по электронной почте или телефону.\\nВы обязуетесь поддерживать действующий e-mail, проверяемый ежедневно, и своевременно сообщать об изменениях контактных данных.\\n\\nPixel Nexus Global не несёт ответственности за перебои в обслуживании, ущерб или последствия, вызванные некорректной доставкой сообщений из-за устаревших контактных данных. Вы также соглашаетесь полностью и добросовестно заполнять все анкеты на платформе для соблюдения требований регуляторов бирж.\\n\\nРазрешённое использование платформы\\nРазрешённое использование платформы\\n\\nИспользование Платформы должно соответствовать настоящим TOS и сопутствующей документации.\\nЕсли вы предоставляете доступ третьим лицам, вы обязуетесь: (i) ограничивать их использование в соответствии с условиями; (ii) обеспечивать соблюдение ими TOS и Политики конфиденциальности; (iii) нести полную ответственность за любые их нарушения.\\n\\nИспользование Платформы должно соответствовать настоящим TOS и сопутствующей документации.\\nЕсли вы предоставляете доступ третьим лицам,\\nвы обязуетесь: (i) ограничивать их использование в соответствии с условиями;\\n(ii) обеспечивать соблюдение ими TOS и Политики конфиденциальности;\\n(iii) нести полную ответственность за любые их нарушения.\\n\\nИнтеллектуальная собственность и соблюдение закона\\nИнтеллектуальная собственность и соблюдение закона\\nИнтеллектуальная собственность и соблюдение закона\\nИнтеллектуальная собственность и соблюдение закона\\nИнтеллектуальная собственность и соблюдение закона\\n\\nВы не имеете права изменять или удалять уведомления о товарных знаках и собственности. Использование Платформы допускается только в рамках:\\n(i) законодательства, регулирующего настоящие TOS;\\n(ii) всех применимых законов вашей юрисдикции.\\n\\nНесанкционированное использование строго запрещено.\\n\\nНесанкционированное испол\\nьзование строго запрещено.\\n\\n3. Срок действия\\nДата вступления в силу\\n\\nНастоящие Условия вступают в силу («Дата вступления в силу») с момента: (i) нажатия «Я принимаю» (фиксируется сервером),\\nили (ii) первого доступа или использования Платформы.\\n\\nУсловия действуют на протяжении любого активного Заказа.\\n\\nУсловия действуют на протяже\\nнии любого активного Заказа.\\n\\nПодписка и продление\\n\\nУслуги автоматически продлеваются (ежемесячно, ежеквартально или ежегодно) согласно Заказу.\\nПо умолчанию срок подписки — 1 месяц.\\n\\nПробный период\\nПробный период\\n\\nПробный период\\n\\nPixel Nexus Global может предоставлять пробные периоды (платные или бесплатные).\\nВ течение пробного периода:\\n\\nприменяются все условия как для платной подписки; вы можете отменить подписку до автоматического продления; условия могут изменяться без уведомления. Управление подпиской\\n\\nВы самостоятельно отвечаете за:\\n\\nВы самостоятельно отвечаете за:\\n\\nконтроль дат продления; обновление платёжных данных;\\nотмену подписки; актуальность контактных данных.\\n\\nPixel Nexus Global не несёт ответственности за списания из-за вашего несоблюдения этих обязанностей.\\n\\n4. Прекращение Отмена и возвраты\\n\\n4. Прекращение Отмена и возвраты\\n\\nИнформация о возвратах размещена на странице Refund and Cancellation Policy на iccandle.ai.\\nОтмена аккаунта отключает автопродление, но не аннулирует уже выставленные счета.\\n\\nРасторжение по инициативе сторон\\nРасторжение по инициативе сторон\\n\\nЛюбая сторона может расторгнуть Заказ, уведомив другую сторону минимум за 1 день до окончания срока.\\n\\nЛюбая сторона может расторгнуть Заказ, уведомив другую сторону минимум за 1 день до окончания срока.\\n\\nНарушения\\nНарушения\\n\\nPixel Nexus Global может немедленно приостановить или прекратить доступ без уведомления и возврата средств при нарушении условий или законодательства.\\n\\nПоследствия\\nПоследствия\\n\\nПоследствия\\n\\nОбязательства, возникшие до прекращения, сохраняются. Все задолженности должны быть оплачены.\\nВозврат средств не гарантируется.\\n\\n5. Лицензия и ограничения\\n\\nPixel Nexus Global предоставляет ограниченную, отзывную, неисключительную и непередаваемую лицензию на использование технологии («Pixel Nexus Technology») исключительно для доступа к аналитическим инструментам.\\n\\nPixel Nexus Global предоставляет ограниченную, отзывную, неисключительную и непередаваемую лицензию на использование технологии («Pixel Nexus Technology») исключительно для доступа к аналитическим инструментам.\\n\\nЗапрещено:\\nЗапрещено:\\n\\nпередача, продажа, аренда, сублицензирование; обратная разработка, декомпиляция; обход защитных механизмов; предоставление доступа третьим лицам.\\n\\nВсе права принадлежат Pixel Nexus Global.\\nВсе права принадлежат Pixel Nexus Global.\\nВсе права принадлежат Pixel Nexus Global.\\nВсе права принадлежат Pixel Nexus Global.\\nВсе права принадлежат Pixel Nexus Global.\\nВсе права принадлежат Pixel Nexus Global.\\n\\nВсе права принадлежат Pixel Nexus Global.\\n\\n6.\\nИспользование данных и ИС\\n\\nКомпания может использовать данные пользователя («Operational Information») для поддержки и улучшения услуг. Вы предоставляете бессрочную лицензию на обработку данных.\\n\\nPixel Nexus Global сохраняет исключительные права на результаты анализа и может коммерциализировать их без компенсации пользователю.\\n\\nPixel Nexus Global сохраняет исключительные права на результаты ан\\nализа и может коммерциализировать их без компенсации пользователю.\\n\\n7–9. Отказ от ответственности и риски\\n\\nПлатформа использует сторонние данные и предоставляется «как есть». Информация может быть неточной и не является инвестиционной рекомендацией. Пользователь полностью принимает риски финансовых потерь и обязан проводить самостоятельный анализ.\\n\\n10.\\nОтсутствие гарантий\\n\\n10. Отсутствие гарантий\\n\\nНет гарантий работоспособности, точности, отсутствия ошибок или бесперебойности.\\nБета-функции могут быть нестабильными.\\n\\n11.\\nОграничение ответственности\\n\\nМаксимальная ответственность ограничивается суммой, уплаченной за последний месяц.\\nКомпания не несёт ответственности за косвенные или случайные убытки.\\n\\nМаксимальная ответственность ограничивается суммой, уплаченной за последний месяц.\\nКомпания не несёт ответственности за косвенные или случайные убытки.\\n\\n12–19.\\nПрочие условия\\n\\nВключают уведомления, форс-мажор, отказ от прав, уступку прав,\\nразделимость положений, отсутствие агентских отношений, приоритет документов, юрисдикционные ограничения и запреты на использование в определённых странах."},"Refund":{"title":"Политика возврата и отмены","intro":"Настоящая Политика возврата и отмены («Политика») регулирует условия возврата и отмены услуг, предоставляемых компанией Pixel Nexus Global Pte. Ltd. («мы», «нас») через платформу iccandle.ai («Сервис»). Данная Политика является частью Условий обслуживания и должна рассматриваться совместно с ними.","sections":[{"title":"1. Определения","definitions":[{"term":"Подписка","text":"A recurring paid access to the Services for a specified period (e.g., monthly or annually)."},{"term":"Биллинг-период","text":"The recurring time interval for which a Subscription fee is charged."},{"term":"Изменение подписки","text":"Any upgrade or downgrade to a different Subscription plan."}]},{"title":"2. Условия отмены","subsections":[{"title":"Отмена подписки","listDisc":["You may cancel your Subscription at any time through your account dashboard or by contacting support.","Cancellation will take effect at the end of the current billing period; you will retain access to the Services through the end of that period.","Cancelling your Subscription does not automatically entitle you to a refund of fees already paid."]}]},{"title":"3. Условия возврата","subsections":[{"title":"3.1 Общие положения","paragraphs":["Except as expressly provided in this Policy or required by applicable law, all fees paid for Subscriptions are non‑refundable once charged."]},{"title":"3.2 Случаи возможного возврата","paragraphs":["We may issue a refund at our sole discretion only in limited circumstances, including but not limited to:"],"listDisc":["Duplicate payments (verified duplicate charges will be refunded).","Technical errors that demonstrably prevented access to Services, where the error was not caused by user actions and is verified by us.","Applicable statutory rights under consumer protection law where these rights apply and cannot be waived."],"paragraphsAfter":["Refunds, if approved, will be processed to the original payment method within a commercially reasonable timeframe determined by payment processors and banking partners."]},{"title":"3.3 Отсутствие возврата за частичное использование","paragraphs":["Refunds will not be issued for:"],"listDisc":["Partial use of the Services during a billing period.","Downgrades of Subscription plans.","Change of mind or business decisions after payment.","Subscription cancellations submitted after a billing cycle has renewed."]}]},{"title":"4. Изменение подписки","paragraphs":["We provide two options when changing your Subscription plan:"],"subsections":[{"title":"4.1 Немедленное изменение","paragraphs":["If you select \\"Change Now,\\" your new plan will take effect immediately, and the associated charge will be applied.","Please note that no refunds, credits, or prorated adjustments will be provided for any unused portion of your current plan."]},{"title":"4.2 Изменение со следующего периода","paragraphs":["If you choose \\"Change on Next Billing,\\" your current plan will remain active until the end of the current Billing Period.","The new plan will take effect at the start of the next Billing Period.","No refunds or credits apply to the current Billing Period."]}]},{"title":"5. Отмена после продления","paragraphs":["If an automatic renewal has already occurred before you submit a cancellation request: The renewal fee is non-refundable. The cancellation will apply to the next Billing Period."]},{"title":"6. Чарджбэки и споры","paragraphs":["We maintain a strict no-tolerance policy toward unjustified chargebacks.","Initiating a chargeback or payment dispute without first contacting us to seek resolution is considered a breach of this Refund and Cancellation Policy and our Terms of Service. Such actions may result in immediate suspension or permanent termination of your account, without notice, and forfeiture of access to the Services.","We reserve the right to challenge and dispute any chargeback that we deem unauthorized, abusive, or inconsistent with this Policy. This includes providing payment processors, banks, and financial institutions with all relevant evidence, including but not limited to:"],"listDisc":["Подтверждение оказания услуг и журналы доступа","Записи активности аккаунта","Принятие наших Условий обслуживания и политик","История переписки с клиентом"],"paragraphsAfter":["Customers are strongly encouraged to contact our support team first to resolve any billing concerns. We are committed to addressing legitimate issues in good faith; however, chargebacks used as a substitute for cancellation or refund requests will not be tolerated."]},{"title":"7. Изменение Политики","paragraphs":["We may update this Policy from time to time. Material changes will be posted on our website or communicated via email prior to taking effect. Continued use of the Services after such updates constitutes acceptance of the revised Policy."]},{"title":"8. Контакты","paragraphs":["For all cancellation and refund requests, please contact our support team via our help center."]}],"content":"Политика возврата и отмены\\n\\nНастоящая Политика возврата и отмены («Политика») регулирует условия возврата и отмены услуг, предоставляемых компанией Pixel Nexus Global Pte. Ltd. («мы», «нас») через платформу iccandle.ai («Сервис»). Данная Политика является частью Условий обслуживания и должна рассматриваться совместно с ними.\\n\\n1. Определения\\n\\nПодписка (Subscription): платный доступ к Сервису на определённый период (ежемесячно или ежегодно).\\n\\nБиллинг-период (Billing Period): повторяющийся интервал списания оплаты.\\n\\nИзменение подписки (Subscription Change): переход на другой тариф (повышение или понижение).\\n\\n2. Условия отмены\\nОтмена подписки\\nПодписку можно отменить в любое время через личный кабинет или поддержку\\nОтмена вступает в силу в конце текущего биллингового периода\\nДоступ к сервису сохраняется до конца оплаченного периода\\nУже оплаченные средства не подлежат автоматическому возврату\\n3. Условия возврата\\n3.1 Общие положения\\n\\nЕсли иное не предусмотрено настоящей Политикой или законом, все оплаченные суммы не подлежат возврату после списания.\\n\\n3.2 Случаи возможного возврата\\n\\nВозврат может быть произведён по нашему усмотрению в ограниченных случаях:\\n\\nДвойное списание (подтверждённое)\\nТехническая ошибка, полностью препятствующая доступу к сервису (не по вине пользователя)\\nПрава, предусмотренные законодательством о защите прав потребителей\\n\\nОдобренные возвраты обрабатываются через исходный платёжный метод в разумные сроки.\\n\\n3.3 Отсутствие возврата за частичное использование\\n\\nВозврат не предоставляется за:\\n\\nЧастичное использование периода\\nПонижение тарифа\\nИзменение решения после оплаты\\nОтмену после автоматического продления\\n4. Изменение подписки\\n4.1 Немедленное изменение\\n\\nНовый тариф вступает в силу сразу, соответствующая сумма списывается немедленно. Возвраты за неиспользованный период не предоставляются.\\n\\n4.2 Изменение со следующего периода\\n\\nТекущий тариф действует до конца периода, новый тариф вступает в силу со следующего биллинга.\\n\\n5. Отмена после продления\\n\\nЕсли подписка уже была автоматически продлена, возврат за текущий период не предоставляется, отмена применяется со следующего периода.\\n\\n6. Чарджбэки и споры\\n\\nМы не допускаем необоснованные чарджбэки.\\n\\nИнициирование спора без предварительного обращения в поддержку считается нарушением Политики и может привести к блокировке или удалению аккаунта.\\n\\n7. Изменение Политики\\n\\nМы можем периодически обновлять Политику. Существенные изменения будут заранее опубликованы или отправлены по электронной почте.\\n\\n8. Контакты\\n\\nВсе запросы на возврат и отмену направляйте через службу поддержки."},"Privacy":{"title":"Политика конфиденциальности","intro":"Настоящая Политика конфиденциальности объясняет, как Pixel Nexus Global Pte. Ltd. («мы», «нас») собирает, использует, раскрывает и защищает персональные данные при использовании веб-сайта, приложений и сервисов (далее — «Сервисы»).","sections":[{"title":"1. Собираемая информация","paragraphs":["We collect the following information:"],"listDisc":["Адрес электронной почты, предоставленный при регистрации","Service usage information, including interactions with features, pages viewed, session activity, and general usage patterns, collected to improve the functionality, performance, and user experience of our Services"],"paragraphsAfter":["Мы не собираем, не храним и не обрабатываем данные банковских карт или другую чувствительную платёжную информацию."]},{"title":"2. Платежи и Stripe","paragraphs":["All payment transactions are processed by our third-party payment service provider, Stripe.","When you make a payment, Stripe collects and processes payment-related information (such as card details, billing information, and transaction data) directly. This information is handled in accordance with Stripe’s Privacy Policy and security standards, including PCI-DSS compliance.","We only receive limited information from Stripe necessary to operate our Services, including:"],"listDisc":["подтверждение платежа","статус подписки","идентификаторы транзакций"],"paragraphsAfter":["Мы не имеем доступа к полным платёжным данным.","You can review Stripe’s Privacy Policy here:"],"stripePrivacyUrl":"https://stripe.com/privacy"},{"title":"3. Использование информации","paragraphs":["We use the email addresses we collect to:"],"listDisc":["Provide, operate, and maintain our Services","Analyze service usage and improve product functionality, performance, and user experience","Communicate with you regarding technical notices, updates, and support","Inform you about products, services, features, and events"]},{"title":"4. Передача данных","paragraphs":["We do not sell your personal information.","We may share your information only with:"],"listDisc":["Service providers who support our operations (including hosting, analytics, and payment processing via Stripe)","Professional advisors, such as legal, accounting, or compliance consultants","Law enforcement or regulatory authorities, when required by law or to protect our legal rights"],"paragraphsAfter":["All third-party service providers are required to process personal data in accordance with applicable data protection laws."]},{"title":"5. Ваши права","paragraphs":["Depending on your location, you may have the right to:"],"listDisc":["получить доступ к данным","исправить email","удалить данные","ограничить или возразить против обработки"],"paragraphsAfter":["Requests related to payment data should be directed to Stripe, as they act as the data controller for payment information."]},{"title":"6. Сторонние сервисы","paragraphs":["Our Services rely on third-party providers such as Stripe. Their handling of personal data is governed by their own privacy policies, and we encourage you to review them."]},{"title":"7. Контакты","paragraphs":["If you have any questions about this Privacy Policy or our data practices, please contact us at:","support@iccandle.ai"]}],"content":"Политика конфиденциальности\\n\\nНастоящая Политика конфиденциальности объясняет, как Pixel Nexus Global Pte. Ltd. («мы», «нас») собирает, использует, раскрывает и защищает персональные данные при использовании веб-сайта, приложений и сервисов (далее — «Сервисы»).\\n\\n1. Собираемая информация\\n\\nМы собираем следующие данные:\\n\\nАдрес электронной почты, предоставленный при регистрации\\nДанные об использовании сервиса (взаимодействие с функциями, просмотренные страницы, сессии и модели использования)\\n\\nЭти данные используются для улучшения функциональности, производительности и пользовательского опыта.\\n\\nМы не собираем, не храним и не обрабатываем данные банковских карт или другую чувствительную платёжную информацию.\\n\\n2. Платежи и Stripe\\n\\nВсе платежи обрабатываются сторонним провайдером Stripe.\\n\\nПри оплате Stripe напрямую собирает и обрабатывает платёжные данные (данные карты, биллинг-информация и транзакции) в соответствии со своей политикой конфиденциальности и стандартом PCI-DSS.\\n\\nМы получаем от Stripe только ограниченную информацию:\\n\\nподтверждение платежа\\nстатус подписки\\nидентификаторы транзакций\\n\\nМы не имеем доступа к полным платёжным данным.\\n\\nПолитика конфиденциальности Stripe: https://stripe.com/privacy\\n\\n3. Использование информации\\n\\nМы используем email для:\\n\\nпредоставления и поддержки сервиса\\nанализа и улучшения продукта\\nтехнических уведомлений и поддержки\\nинформирования о функциях и обновлениях\\n4. Передача данных\\n\\nМы не продаём персональные данные.\\n\\nМы можем передавать данные только:\\n\\nпоставщикам услуг (хостинг, аналитика, Stripe)\\nюридическим, бухгалтерским и комплаенс-консультантам\\nгосударственным органам при необходимости по закону\\n\\nВсе третьи стороны обязаны соблюдать законы о защите данных.\\n\\n5. Ваши права\\n\\nВ зависимости от юрисдикции вы можете иметь право:\\n\\nполучить доступ к данным\\nисправить email\\nудалить данные\\nограничить или возразить против обработки\\n\\nЗапросы по платёжным данным следует направлять напрямую в Stripe.\\n\\n6. Сторонние сервисы\\n\\nНаши сервисы используют сторонние платформы (например, Stripe), которые обрабатывают данные по своим политикам.\\n\\n7. Контакты\\n\\nsupport@iccandle.ai"},"Cookie":{"title":"Политика использования файлов куки","intro":["This Cookie Policy explains how Pixel Nexus Global Pte. Ltd. (\\"we\\", \\"us\\", or \\"our\\") uses cookies and similar technologies when you visit or use iccandle.ai and related services (collectively, the \\"Services\\").","Эта Политика должна рассматриваться совместно с Политикой конфиденциальности."],"sections":[{"title":"1. Что такое куки","paragraphs":["Cookies — это небольшие текстовые файлы, которые сохраняются на вашем устройстве при посещении веб-сайта. Они используются для:","обеспечения работы сайта"],"listDisc":["Сессионные куки (удаляются при закрытии браузера)","Постоянные куки (хранятся определённый срок или до удаления)."]},{"title":"2. Типы используемых куки","subsections":[{"title":"2.1 Строго необходимые куки","paragraphs":["Постоянные cookies (хранятся определённый срок или до удаления)"],"listDisc":["безопасный вход и аутентификация","поддержание пользовательских сессий","защита от мошенничества и злоупотреблений"],"paragraphsAfter":["Без этих куки сервис не может работать должным образом."]},{"title":"2.2 Функциональные куки","paragraphs":["защита от мошенничества и злоупотреблений"],"listDisc":["язык и регион","настройки аккаунта"],"paragraphsAfter":["Они улучшают удобство, но не являются строго необходимыми."]},{"title":"2.3 Аналитические и производительные куки","paragraphs":["2.3 Аналитические и производительные cookies"],"listDisc":["посещённые страницы","продолжительность сессий","данные об ошибках и производительности"],"paragraphsAfter":["данные об ошибках и производительности"]},{"title":"2.4 Сторонние куки","paragraphs":["2.4 Сторонние cookies"],"listDisc":["Некоторые cookies устанавливаются сторонними поставщиками:","платёжные системы (например, Stripe)"],"paragraphsAfter":["аналитические и инфраструктурные провайдеры"]}]},{"title":"3. Для чего мы НЕ используем куки","listDisc":["реклама и поведенческий таргетинг","продажа cookie-данных","сбор чувствительной персональной информации"]},{"title":"4. Управление куки","paragraphs":["4. Управление cookies"],"listDisc":["просмотр куки","удаление куки","блокировка куки"],"paragraphsAfter":["Отключение некоторых куки может повлиять на работу сервиса."]},{"title":"5. Изменения политики","paragraphs":["5. Изменения политики"]},{"title":"6. Контакты","paragraphs":["6. Контакты","support@iccandle.ai"]}],"content":"Политика использования файлов cookie\\n\\nНастоящая Политика использования файлов cookie объясняет, как Pixel Nexus Global Pte. Ltd. («мы», «нас») использует файлы cookie и аналогичные технологии при посещении или использовании iccandle.ai и связанных сервисов (далее — «Сервисы»).\\n\\nЭта Политика должна рассматриваться совместно с Политикой конфиденциальности.\\n\\n1. Что такое cookies\\n\\nCookies — это небольшие текстовые файлы, которые сохраняются на вашем устройстве при посещении веб-сайта. Они используются для:\\n\\nобеспечения работы сайта\\nулучшения пользовательского опыта\\nпредоставления информации владельцам сайта\\n\\nCookies бывают:\\n\\nСессионные cookies (удаляются при закрытии браузера)\\nПостоянные cookies (хранятся определённый срок или до удаления)\\n2. Типы используемых cookies\\n2.1 Строго необходимые cookies\\n\\nЭти cookies необходимы для работы сервиса и не могут быть отключены.\\n\\nбезопасный вход и аутентификация\\nподдержание пользовательских сессий\\nзащита от мошенничества и злоупотреблений\\n2.2 Функциональные cookies\\n\\nИспользуются для запоминания ваших настроек:\\n\\nязык и регион\\nнастройки аккаунта\\n2.3 Аналитические и производительные cookies\\n\\nИспользуются для анализа того, как пользователи взаимодействуют с сервисом:\\n\\nпосещённые страницы\\nпродолжительность сессий\\nданные об ошибках и производительности\\n\\nЭти данные используются только для улучшения сервиса и не идентифицируют пользователей напрямую.\\n\\n2.4 Сторонние cookies\\n\\nНекоторые cookies устанавливаются сторонними поставщиками:\\n\\nплатёжные системы (например, Stripe)\\nаналитические и инфраструктурные провайдеры\\n\\nЭти третьи стороны используют cookies в соответствии со своими политиками.\\n\\n3. Для чего мы НЕ используем cookies\\nреклама и поведенческий таргетинг\\nпродажа cookie-данных\\nсбор чувствительной персональной информации\\n4. Управление cookies\\n\\nВы можете управлять cookies через настройки браузера:\\n\\nпросмотр cookies\\nудаление cookies\\nблокировка cookies\\n\\nОтключение некоторых cookies может повлиять на работу сервиса.\\n\\n5. Изменения политики\\n\\nМы можем обновлять эту Политику. Существенные изменения будут опубликованы на сайте. Продолжение использования сервиса означает согласие с обновлениями.\\n\\n6. Контакты\\n\\nsupport@iccandle.ai"}}`),Ig={Common:lg,Confirmation:cg,DateFormat:ug,Alert:dg,TimeConfig:hg,Loading:pg,Auth:mg,Navbar:fg,Guide:gg,Pricing:yg,Settings:bg,Referral:vg,Layout:wg,News:xg,Selector:Pg,UserActivity:Sg,Pattern:Tg,PatternCatalog:kg,sQuestion_pattern:Cg,sQuestion_general:Ag,sQuestion_news:Ng,justLanguage:Dg,profile:Rg,Landing:Eg,NotFound:Mg,Legal:Og},no={en:op,zh:Op,vi:om,th:Om,ko:sf,ja:If,mn:sg,ru:Ig};function io(e,t){const n=t.split(".");let i=e;for(const r of n){if(!i||typeof i!="object"||!(r in i))return;i=i[r]}return typeof i=="string"?i:void 0}function Lg(e,t){return t?e.replace(/\{(\w+)\}/g,(n,i)=>t[i]!=null?String(t[i]):`{${i}}`):e}function Yr(e,t,n){const i=io(no[e],t)??io(no.en,t)??t;return Lg(i,n)}let js=mi;function Fg(e){js=e}function Gg(){return js}const Us=p.createContext({language:mi,t:(e,t)=>Yr(mi,e,t)}),Bg={info:{icon:Ou},warning:{icon:Qu},success:{icon:Uu},error:{icon:Bu}},yn=({title:e,description:t,action:n,dismiss:i,variant:r="info"})=>{const o=Bg[r].icon,s=i===!1?!1:{label:i?.label??Yr(Gg(),"Common.dismiss"),onClick:i?.onClick};return _i.custom(u=>h.jsxs("div",{className:"custom-toast",role:"alert",children:[h.jsx("div",{className:"custom-toast__icon-wrap",children:h.jsx(o,{className:"custom-toast__icon"})}),h.jsxs("div",{className:"custom-toast__content",children:[h.jsx("div",{className:"custom-toast__header",children:h.jsx("p",{className:"custom-toast__title",children:e})}),t&&h.jsx("p",{className:"custom-toast__description",children:t}),(n||s)&&h.jsxs("div",{className:"custom-toast__actions",children:[n&&h.jsx("button",{onClick:()=>{n.onClick(),_i.dismiss(u)},className:"custom-toast__button custom-toast__button--action",children:n.label}),s&&h.jsx("button",{onClick:()=>{s.onClick?.(),_i.dismiss(u)},className:"custom-toast__button custom-toast__button--dismiss",children:s.label})]})]})]}),{duration:5e3,position:"top-right"})},jg=({size:e=24,color:t="currentColor",className:n})=>h.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:n,children:[h.jsx("path",{d:"M10.268 21a2 2 0 0 0 3.464 0",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),h.jsx("path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),zs=({size:e=24,color:t="currentColor",className:n})=>h.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:n,children:[h.jsx("path",{d:"M18 6 6 18",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),h.jsx("path",{d:"m6 6 12 12",stroke:t,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})]}),qr=({size:e=24,color:t="currentColor",stroke:n="currentColor",className:i})=>h.jsxs("svg",{width:e,height:e,viewBox:"0 0 21.38 21.11",fill:n,xmlns:"http://www.w3.org/2000/svg",className:i,children:[h.jsxs("g",{children:[h.jsx("path",{className:"pattern-tracker-icon-2",d:"M4.97,15.12c-.4,0-.73-.33-.73-.73v-6.02c0-.4.33-.73.73-.73s.73.33.73.73v6.02c0,.4-.33.73-.73.73Z",fill:t}),h.jsx("path",{className:"pattern-tracker-icon-2",d:"M7.79,16.95c-.4,0-.73-.33-.73-.73V5.22c0-.4.33-.73.73-.73s.73.33.73.73v11c0,.4-.33.73-.73.73Z",fill:t}),h.jsx("path",{className:"pattern-tracker-icon-2",d:"M10.62,13.88c-.4,0-.73-.33-.73-.73v-5.23c0-.4.33-.73.73-.73s.73.33.73.73v5.23c0,.4-.33.73-.73.73Z",fill:t}),h.jsx("path",{className:"pattern-tracker-icon-2",d:"M13.44,17.22c-.4,0-.73-.33-.73-.73v-7.54c0-.4.33-.73.73-.73s.73.33.73.73v7.54c0,.4-.33.73-.73.73Z",fill:t}),h.jsx("path",{className:"pattern-tracker-icon-2",d:"M16.26,15.12c-.4,0-.73-.33-.73-.73V6.25c0-.4.33-.73.73-.73s.73.33.73.73v8.14c0,.4-.33.73-.73.73Z",fill:t}),h.jsx("path",{className:"pattern-tracker-icon-1",d:"M20.65,11.66h-2.48c-.4,0-.73-.33-.73-.73s.33-.73.73-.73h2.48c.4,0,.73.33.73.73s-.33.73-.73.73Z"}),h.jsx("path",{className:"pattern-tracker-icon-1",d:"M3.21,11.66H.73c-.4,0-.73-.33-.73-.73s.33-.73.73-.73h2.48c.4,0,.73.33.73.73s-.33.73-.73.73Z"}),h.jsx("path",{className:"pattern-tracker-icon-1",d:"M10.69,21.11c-.4,0-.73-.33-.73-.73v-2.48c0-.4.33-.73.73-.73s.73.33.73.73v2.48c0,.4-.33.73-.73.73Z"}),h.jsx("path",{className:"pattern-tracker-icon-1",d:"M10.69,3.93c-.4,0-.73-.33-.73-.73V.73c0-.4.33-.73.73-.73s.73.33.73.73v2.48c0,.4-.33.73-.73.73Z"})]}),h.jsx("path",{className:"pattern-tracker-icon-1",d:"M15.15,20.03H6.08c-2.65,0-4.8-2.15-4.8-4.8V6.16C1.27,3.51,3.43,1.35,6.08,1.35h9.07c2.65,0,4.8,2.15,4.8,4.8v9.07c0,2.65-2.16,4.8-4.8,4.8ZM6.08,2.74c-1.88,0-3.42,1.53-3.42,3.42v9.07c0,1.88,1.53,3.42,3.42,3.42h9.07c1.88,0,3.42-1.53,3.42-3.42V6.16c0-1.88-1.53-3.42-3.42-3.42H6.08Z"})]});function nt(){return p.useContext(Us)}const Hs="search-filter",Ys="search-filter-session",qs="scanner-always-show";function Ws(){if(typeof window>"u")return!0;const e=localStorage.getItem(qs);return e===null?!0:e==="true"}function ro(e){typeof window>"u"||localStorage.setItem(qs,String(e))}function _s(e){if(!e)return{};try{return JSON.parse(e)}catch{return{}}}function Oi(){return typeof window>"u"?{}:_s(localStorage.getItem(Hs))}function Ug(){const e=Oi();return Array.isArray(e.symbols)&&e.symbols.length>0}function zg(e,t){if(typeof window>"u")return;const n=JSON.stringify(e);localStorage.setItem(Hs,n),sessionStorage.removeItem(Ys)}function Hg(){if(typeof window>"u")return{};const e=_s(sessionStorage.getItem(Ys));return Object.keys(e).length>0?e:Oi()}const ao=150;function Yg({handleTrackPatternClick:e,submitCallback:t,currentSymbol:n,window_size:i,handleShowDialog:r,resolution:a,timeframe:o,chartWidget:s,candles:u,handleStartDrag:c,handleStopDrag:d,triggerScanner:l,hasActiveShape:g=!1,theme:f,language:m,clearScannerNewsMarks:y,selectedCandles:b,iframeLoaded:x=!0,isLoading:T=!1,onOpenScanConfig:A,pendingScanAfterConfig:S,onPendingScanHandled:v,onApplySavedTimeframe:D,hide:w=!1,hideScanButton:P=!1,hideTrackerButton:M=!1}){const[G,W]=p.useState(!0),{t:B}=nt(),_=p.useRef(null),V=p.useCallback(async()=>{if(b?.length){yn({title:B("Common.error"),description:B("Selector.clearReplayFirst"),variant:"error"});return}if(!u.length)return;const re=u[0].timestamp,C=u[u.length-1].timestamp;if(s){const I=s.activeChart(),q=Gs(a),$=C-(ao*q+q*i+q*100),ie=C+ao/3*q;try{await I.setVisibleRange({from:$,to:ie})}catch(de){console.error("Error setting visible range:",de)}}let k;try{const{data:I}=await Me.post("https://scan-service.iccandle.ai/cacheCandle",{candles:u},{headers:{Authorization:`Bearer ${localStorage.getItem("iccandle_token")}`}});k=I}catch(I){console.error("Error caching candles:",I);return}const Y=Hg(),R=Y.timeframe||o,j={reference_resolution:a,resolution:R,symbol:n,end_timestamp:C,start_timestamp:re,top_k:Y.top_k||25,analyze_window:Y.probability||0,candle_id:k?.id||""};if(!Y.isAllSelected&&(Y.symbolTypes?.length??0)>0&&(Y.symbols?.length??0)>0&&(j.filter={symbols:Y.symbols.join(","),types:Y.symbolTypes||[]}),Y.period&&Y.period>0){const I=Y.period*365.25*24*60*60,q=C-I;j.filter||(j.filter={}),j.filter.period=q}const E=`${rn}/${m}?symbol=${j.symbol}&ref_res=${j.reference_resolution}&tk=${j.top_k}&res=${j.resolution}&cid=${j.candle_id}&from=${j.start_timestamp*1e3}&to=${j.end_timestamp*1e3}`+(j.filter?.symbols?.length?`&fs=${j.filter.symbols}`:"")+(j.filter?.period!=null?`&period=${j.filter.period}`:"")+(Y.model?`&model=${Y.model}`:"")+(Y.temperature!=null?`&temp=${Y.temperature}`:"")+(f==="dark"?"&theme=dark":"&theme=light");y(),t(E)},[b,u,s,a,o,n,i,f,m,y,t,B]),K=p.useCallback(()=>localStorage.getItem("iccandle_token")?!0:(yn({title:B("Common.warning"),description:B("Selector.pleaseLoginFirst"),variant:"info"}),!1),[B]),z=p.useCallback(()=>{if(K()){if(b?.length){yn({title:B("Common.error"),description:B("Selector.clearReplayFirst"),variant:"error"});return}if(Ug()&&!Ws()){const C=Oi().timeframe;C&&D?.(C),V();return}A?.()}},[V,D,A,K,b,B]),J=p.useCallback(()=>{K()&&e()},[e,K]);p.useEffect(()=>{S&&(v?.(),!w&&V())},[V,w,v,S]);const X=p.useCallback(()=>{W(re=>!re)},[]);return w?null:h.jsx(Cu,{nodeRef:_,bounds:"parent",onStop:d,onStart:c,handle:".iccandle-handle",children:h.jsx("div",{ref:_,className:"iccandle-scanner-popup",children:h.jsxs("div",{className:"iccandle-scanner-popup__inner",children:[h.jsx(Hu,{strokeWidth:1,size:20,color:"#b2b5be",className:"iccandle-handle iccandle-scanner-popup__grip"}),h.jsx("div",{className:"iccandle-scanner-popup__divider"}),g?h.jsxs(h.Fragment,{children:[h.jsx(hn,{text:B("Selector.availableBars",{count:i}),children:h.jsx("div",{className:"iccandle-handle iccandle-scanner-popup__bars",children:B("Pattern.barsCount",{count:i})})}),!P&&h.jsx(hn,{text:B("Selector.scan"),children:h.jsxs("button",{type:"button",onClick:z,disabled:!x||T,className:"iccandle-scanner-popup__action-btn",children:[h.jsx(ms,{size:20,color:!x||T?"#9ca3af":"#ffb84d"}),G&&h.jsx("div",{className:!x||T?"text-theme-color":"iccandle-scanner-popup__label",children:B("Selector.scan")})]})}),!M&&h.jsxs(h.Fragment,{children:[h.jsx("div",{className:"iccandle-scanner-popup__divider"}),h.jsx(hn,{text:B("Layout.headerNav.patternShortTitle"),children:h.jsxs("button",{type:"button",onClick:J,disabled:!x||T,className:"iccandle-scanner-popup__action-btn",children:[h.jsx(qr,{size:20,color:!x||T?"#9ca3af":"#ffb84d",stroke:!x||T?"#9ca3af":"#ffb84d"}),G&&h.jsx("div",{className:!x||T?"text-theme-color":"iccandle-scanner-popup__label",children:B("Layout.headerNav.patternShortTitle")})]})})]})]}):h.jsx("div",{className:"iccandle-scanner-popup__action-row",children:h.jsx(hn,{text:B("Selector.activateSelector"),children:h.jsxs("button",{type:"button",onClick:()=>{l?.()},className:"iccandle-scanner-popup__action-btn iccandle-scanner-popup__action-btn--with-gap",children:[h.jsx("img",{src:ed,width:24,height:24,alt:"scanner",sizes:"100vw",className:"iccandle-scanner-popup__logo"}),G&&h.jsx("div",{className:"iccandle-scanner-popup__label",children:B("Selector.activateSelector")})]})})}),h.jsx("div",{className:"iccandle-scanner-popup__divider"}),h.jsx(hn,{text:B("Selector.settings"),children:h.jsx("button",{type:"button",className:"iccandle-scanner-popup__settings",onClick:r,children:h.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 28 28",width:"28",height:"28",fill:"currentColor",children:[h.jsx("path",{fillRule:"evenodd",d:"M18 14a4 4 0 1 1-8 0 4 4 0 0 1 8 0Zm-1 0a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"}),h.jsx("path",{fillRule:"evenodd",d:"M8.5 5h11l5 9-5 9h-11l-5-9 5-9Zm-3.86 9L9.1 6h9.82l4.45 8-4.45 8H9.1l-4.45-8Z"})]})})}),h.jsx(hn,{text:B(G?"Selector.collapseToolbar":"Selector.expandToolbar"),children:h.jsx("button",{type:"button",className:"iccandle-scanner-popup__toggle",onClick:X,children:G?h.jsx(Ku,{size:20,color:"#b2b5be"}):h.jsx(_u,{size:20,color:"#b2b5be"})})})]})})})}const ir=25,qg="#00dfb9";function gr(e){const t=e||qg;return{shape:"date_range",overrides:{extendTop:!0,extendBottom:!0,linecolor:t,linewidth:1,linestyle:0,backgroundColor:t,backgroundTransparency:80,textcolor:"rgba(0, 0, 0, 0)",labelBackgroundColor:"rgba(0, 0, 0, 0)",title:"Scanner range"}}}const oo=`
50
50
 
51
51
 
52
52
 
@@ -119,4 +119,4 @@ by subscribing annually`,monthly:"Monthly",yearly:"Yearly",yearlyBadge:"-20%",co
119
119
 
120
120
 
121
121
 
122
- `,Wg={interval:"60"},_g={D:"1440",H4:"240",H2:"120",H1:"60",M30:"30",M15:"15",M5:"5",M1:"1"};function Vs(e){var t,n,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(n=Vs(e[t]))&&(i&&(i+=" "),i+=n)}else for(n in e)e[n]&&(i&&(i+=" "),i+=n);return i}function Ks(){for(var e,t,n=0,i="",r=arguments.length;n<r;n++)(e=arguments[n])&&(t=Vs(e))&&(i&&(i+=" "),i+=t);return i}const Vg=(e,t)=>{const n=new Array(e.length+t.length);for(let i=0;i<e.length;i++)n[i]=e[i];for(let i=0;i<t.length;i++)n[e.length+i]=t[i];return n},Kg=(e,t)=>({classGroupId:e,validator:t}),Js=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),fi="-",so=[],Jg="arbitrary..",Xg=e=>{const t=Qg(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:i}=e;return{getClassGroupId:o=>{if(o.startsWith("[")&&o.endsWith("]"))return Zg(o);const s=o.split(fi),u=s[0]===""&&s.length>1?1:0;return Xs(s,u,t)},getConflictingClassGroupIds:(o,s)=>{if(s){const u=i[o],c=n[o];return u?c?Vg(c,u):u:c||so}return n[o]||so}}},Xs=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const r=e[t],a=n.nextPart.get(r);if(a){const c=Xs(e,t+1,a);if(c)return c}const o=n.validators;if(o===null)return;const s=t===0?e.join(fi):e.slice(t).join(fi),u=o.length;for(let c=0;c<u;c++){const d=o[c];if(d.validator(s))return d.classGroupId}},Zg=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),i=t.slice(0,n);return i?Jg+i:void 0})(),Qg=e=>{const{theme:t,classGroups:n}=e;return $g(n,t)},$g=(e,t)=>{const n=Js();for(const i in e){const r=e[i];Wr(r,n,i,t)}return n},Wr=(e,t,n,i)=>{const r=e.length;for(let a=0;a<r;a++){const o=e[a];ey(o,t,n,i)}},ey=(e,t,n,i)=>{if(typeof e=="string"){ty(e,t,n);return}if(typeof e=="function"){ny(e,t,n,i);return}iy(e,t,n,i)},ty=(e,t,n)=>{const i=e===""?t:Zs(t,e);i.classGroupId=n},ny=(e,t,n,i)=>{if(ry(e)){Wr(e(i),t,n,i);return}t.validators===null&&(t.validators=[]),t.validators.push(Kg(n,e))},iy=(e,t,n,i)=>{const r=Object.entries(e),a=r.length;for(let o=0;o<a;o++){const[s,u]=r[o];Wr(u,Zs(t,s),n,i)}},Zs=(e,t)=>{let n=e;const i=t.split(fi),r=i.length;for(let a=0;a<r;a++){const o=i[a];let s=n.nextPart.get(o);s||(s=Js(),n.nextPart.set(o,s)),n=s}return n},ry=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,ay=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),i=Object.create(null);const r=(a,o)=>{n[a]=o,t++,t>e&&(t=0,i=n,n=Object.create(null))};return{get(a){let o=n[a];if(o!==void 0)return o;if((o=i[a])!==void 0)return r(a,o),o},set(a,o){a in n?n[a]=o:r(a,o)}}},yr="!",lo=":",oy=[],co=(e,t,n,i,r)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:i,isExternal:r}),sy=e=>{const{prefix:t,experimentalParseClassName:n}=e;let i=r=>{const a=[];let o=0,s=0,u=0,c;const d=r.length;for(let y=0;y<d;y++){const b=r[y];if(o===0&&s===0){if(b===lo){a.push(r.slice(u,y)),u=y+1;continue}if(b==="/"){c=y;continue}}b==="["?o++:b==="]"?o--:b==="("?s++:b===")"&&s--}const l=a.length===0?r:r.slice(u);let g=l,f=!1;l.endsWith(yr)?(g=l.slice(0,-1),f=!0):l.startsWith(yr)&&(g=l.slice(1),f=!0);const m=c&&c>u?c-u:void 0;return co(a,f,g,m)};if(t){const r=t+lo,a=i;i=o=>o.startsWith(r)?a(o.slice(r.length)):co(oy,!1,o,void 0,!0)}if(n){const r=i;i=a=>n({className:a,parseClassName:r})}return i},ly=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,i)=>{t.set(n,1e6+i)}),n=>{const i=[];let r=[];for(let a=0;a<n.length;a++){const o=n[a],s=o[0]==="[",u=t.has(o);s||u?(r.length>0&&(r.sort(),i.push(...r),r=[]),i.push(o)):r.push(o)}return r.length>0&&(r.sort(),i.push(...r)),i}},cy=e=>({cache:ay(e.cacheSize),parseClassName:sy(e),sortModifiers:ly(e),...Xg(e)}),uy=/\s+/,dy=(e,t)=>{const{parseClassName:n,getClassGroupId:i,getConflictingClassGroupIds:r,sortModifiers:a}=t,o=[],s=e.trim().split(uy);let u="";for(let c=s.length-1;c>=0;c-=1){const d=s[c],{isExternal:l,modifiers:g,hasImportantModifier:f,baseClassName:m,maybePostfixModifierPosition:y}=n(d);if(l){u=d+(u.length>0?" "+u:u);continue}let b=!!y,x=i(b?m.substring(0,y):m);if(!x){if(!b){u=d+(u.length>0?" "+u:u);continue}if(x=i(m),!x){u=d+(u.length>0?" "+u:u);continue}b=!1}const T=g.length===0?"":g.length===1?g[0]:a(g).join(":"),A=f?T+yr:T,S=A+x;if(o.indexOf(S)>-1)continue;o.push(S);const v=r(x,b);for(let D=0;D<v.length;++D){const w=v[D];o.push(A+w)}u=d+(u.length>0?" "+u:u)}return u},hy=(...e)=>{let t=0,n,i,r="";for(;t<e.length;)(n=e[t++])&&(i=Qs(n))&&(r&&(r+=" "),r+=i);return r},Qs=e=>{if(typeof e=="string")return e;let t,n="";for(let i=0;i<e.length;i++)e[i]&&(t=Qs(e[i]))&&(n&&(n+=" "),n+=t);return n},py=(e,...t)=>{let n,i,r,a;const o=u=>{const c=t.reduce((d,l)=>l(d),e());return n=cy(c),i=n.cache.get,r=n.cache.set,a=s,s(u)},s=u=>{const c=i(u);if(c)return c;const d=dy(u,n);return r(u,d),d};return a=o,(...u)=>a(hy(...u))},my=[],Be=e=>{const t=n=>n[e]||my;return t.isThemeGetter=!0,t},$s=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,el=/^\((?:(\w[\w-]*):)?(.+)\)$/i,fy=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,gy=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,yy=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,by=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,vy=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,wy=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Yt=e=>fy.test(e),me=e=>!!e&&!Number.isNaN(Number(e)),qt=e=>!!e&&Number.isInteger(Number(e)),rr=e=>e.endsWith("%")&&me(e.slice(0,-1)),It=e=>gy.test(e),tl=()=>!0,xy=e=>yy.test(e)&&!by.test(e),_r=()=>!1,Py=e=>vy.test(e),Sy=e=>wy.test(e),Ty=e=>!oe(e)&&!se(e),ky=e=>Xt(e,rl,_r),oe=e=>$s.test(e),Qt=e=>Xt(e,al,xy),uo=e=>Xt(e,Oy,me),Cy=e=>Xt(e,sl,tl),Ay=e=>Xt(e,ol,_r),ho=e=>Xt(e,nl,_r),Ny=e=>Xt(e,il,Sy),ii=e=>Xt(e,ll,Py),se=e=>el.test(e),Rn=e=>ln(e,al),Dy=e=>ln(e,ol),po=e=>ln(e,nl),Ry=e=>ln(e,rl),Ey=e=>ln(e,il),ri=e=>ln(e,ll,!0),My=e=>ln(e,sl,!0),Xt=(e,t,n)=>{const i=$s.exec(e);return i?i[1]?t(i[1]):n(i[2]):!1},ln=(e,t,n=!1)=>{const i=el.exec(e);return i?i[1]?t(i[1]):n:!1},nl=e=>e==="position"||e==="percentage",il=e=>e==="image"||e==="url",rl=e=>e==="length"||e==="size"||e==="bg-size",al=e=>e==="length",Oy=e=>e==="number",ol=e=>e==="family-name",sl=e=>e==="number"||e==="weight",ll=e=>e==="shadow",Iy=()=>{const e=Be("color"),t=Be("font"),n=Be("text"),i=Be("font-weight"),r=Be("tracking"),a=Be("leading"),o=Be("breakpoint"),s=Be("container"),u=Be("spacing"),c=Be("radius"),d=Be("shadow"),l=Be("inset-shadow"),g=Be("text-shadow"),f=Be("drop-shadow"),m=Be("blur"),y=Be("perspective"),b=Be("aspect"),x=Be("ease"),T=Be("animate"),A=()=>["auto","avoid","all","avoid-page","page","left","right","column"],S=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],v=()=>[...S(),se,oe],D=()=>["auto","hidden","clip","visible","scroll"],w=()=>["auto","contain","none"],P=()=>[se,oe,u],M=()=>[Yt,"full","auto",...P()],G=()=>[qt,"none","subgrid",se,oe],W=()=>["auto",{span:["full",qt,se,oe]},qt,se,oe],B=()=>[qt,"auto",se,oe],_=()=>["auto","min","max","fr",se,oe],V=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],K=()=>["start","end","center","stretch","center-safe","end-safe"],z=()=>["auto",...P()],J=()=>[Yt,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...P()],X=()=>[Yt,"screen","full","dvw","lvw","svw","min","max","fit",...P()],re=()=>[Yt,"screen","full","lh","dvh","lvh","svh","min","max","fit",...P()],C=()=>[e,se,oe],k=()=>[...S(),po,ho,{position:[se,oe]}],Y=()=>["no-repeat",{repeat:["","x","y","space","round"]}],L=()=>["auto","cover","contain",Ry,ky,{size:[se,oe]}],R=()=>[rr,Rn,Qt],j=()=>["","none","full",c,se,oe],E=()=>["",me,Rn,Qt],I=()=>["solid","dashed","dotted","double"],q=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],$=()=>[me,rr,po,ho],ie=()=>["","none",m,se,oe],de=()=>["none",me,se,oe],Z=()=>["none",me,se,oe],be=()=>[me,se,oe],Ce=()=>[Yt,"full",...P()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[It],breakpoint:[It],color:[tl],container:[It],"drop-shadow":[It],ease:["in","out","in-out"],font:[Ty],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[It],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[It],shadow:[It],spacing:["px",me],text:[It],"text-shadow":[It],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Yt,oe,se,b]}],container:["container"],columns:[{columns:[me,oe,se,s]}],"break-after":[{"break-after":A()}],"break-before":[{"break-before":A()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:v()}],overflow:[{overflow:D()}],"overflow-x":[{"overflow-x":D()}],"overflow-y":[{"overflow-y":D()}],overscroll:[{overscroll:w()}],"overscroll-x":[{"overscroll-x":w()}],"overscroll-y":[{"overscroll-y":w()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:M()}],"inset-x":[{"inset-x":M()}],"inset-y":[{"inset-y":M()}],start:[{"inset-s":M(),start:M()}],end:[{"inset-e":M(),end:M()}],"inset-bs":[{"inset-bs":M()}],"inset-be":[{"inset-be":M()}],top:[{top:M()}],right:[{right:M()}],bottom:[{bottom:M()}],left:[{left:M()}],visibility:["visible","invisible","collapse"],z:[{z:[qt,"auto",se,oe]}],basis:[{basis:[Yt,"full","auto",s,...P()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[me,Yt,"auto","initial","none",oe]}],grow:[{grow:["",me,se,oe]}],shrink:[{shrink:["",me,se,oe]}],order:[{order:[qt,"first","last","none",se,oe]}],"grid-cols":[{"grid-cols":G()}],"col-start-end":[{col:W()}],"col-start":[{"col-start":B()}],"col-end":[{"col-end":B()}],"grid-rows":[{"grid-rows":G()}],"row-start-end":[{row:W()}],"row-start":[{"row-start":B()}],"row-end":[{"row-end":B()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":_()}],"auto-rows":[{"auto-rows":_()}],gap:[{gap:P()}],"gap-x":[{"gap-x":P()}],"gap-y":[{"gap-y":P()}],"justify-content":[{justify:[...V(),"normal"]}],"justify-items":[{"justify-items":[...K(),"normal"]}],"justify-self":[{"justify-self":["auto",...K()]}],"align-content":[{content:["normal",...V()]}],"align-items":[{items:[...K(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...K(),{baseline:["","last"]}]}],"place-content":[{"place-content":V()}],"place-items":[{"place-items":[...K(),"baseline"]}],"place-self":[{"place-self":["auto",...K()]}],p:[{p:P()}],px:[{px:P()}],py:[{py:P()}],ps:[{ps:P()}],pe:[{pe:P()}],pbs:[{pbs:P()}],pbe:[{pbe:P()}],pt:[{pt:P()}],pr:[{pr:P()}],pb:[{pb:P()}],pl:[{pl:P()}],m:[{m:z()}],mx:[{mx:z()}],my:[{my:z()}],ms:[{ms:z()}],me:[{me:z()}],mbs:[{mbs:z()}],mbe:[{mbe:z()}],mt:[{mt:z()}],mr:[{mr:z()}],mb:[{mb:z()}],ml:[{ml:z()}],"space-x":[{"space-x":P()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":P()}],"space-y-reverse":["space-y-reverse"],size:[{size:J()}],"inline-size":[{inline:["auto",...X()]}],"min-inline-size":[{"min-inline":["auto",...X()]}],"max-inline-size":[{"max-inline":["none",...X()]}],"block-size":[{block:["auto",...re()]}],"min-block-size":[{"min-block":["auto",...re()]}],"max-block-size":[{"max-block":["none",...re()]}],w:[{w:[s,"screen",...J()]}],"min-w":[{"min-w":[s,"screen","none",...J()]}],"max-w":[{"max-w":[s,"screen","none","prose",{screen:[o]},...J()]}],h:[{h:["screen","lh",...J()]}],"min-h":[{"min-h":["screen","lh","none",...J()]}],"max-h":[{"max-h":["screen","lh",...J()]}],"font-size":[{text:["base",n,Rn,Qt]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[i,My,Cy]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",rr,oe]}],"font-family":[{font:[Dy,Ay,t]}],"font-features":[{"font-features":[oe]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,se,oe]}],"line-clamp":[{"line-clamp":[me,"none",se,uo]}],leading:[{leading:[a,...P()]}],"list-image":[{"list-image":["none",se,oe]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",se,oe]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:C()}],"text-color":[{text:C()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...I(),"wavy"]}],"text-decoration-thickness":[{decoration:[me,"from-font","auto",se,Qt]}],"text-decoration-color":[{decoration:C()}],"underline-offset":[{"underline-offset":[me,"auto",se,oe]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:P()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",se,oe]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",se,oe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:k()}],"bg-repeat":[{bg:Y()}],"bg-size":[{bg:L()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},qt,se,oe],radial:["",se,oe],conic:[qt,se,oe]},Ey,Ny]}],"bg-color":[{bg:C()}],"gradient-from-pos":[{from:R()}],"gradient-via-pos":[{via:R()}],"gradient-to-pos":[{to:R()}],"gradient-from":[{from:C()}],"gradient-via":[{via:C()}],"gradient-to":[{to:C()}],rounded:[{rounded:j()}],"rounded-s":[{"rounded-s":j()}],"rounded-e":[{"rounded-e":j()}],"rounded-t":[{"rounded-t":j()}],"rounded-r":[{"rounded-r":j()}],"rounded-b":[{"rounded-b":j()}],"rounded-l":[{"rounded-l":j()}],"rounded-ss":[{"rounded-ss":j()}],"rounded-se":[{"rounded-se":j()}],"rounded-ee":[{"rounded-ee":j()}],"rounded-es":[{"rounded-es":j()}],"rounded-tl":[{"rounded-tl":j()}],"rounded-tr":[{"rounded-tr":j()}],"rounded-br":[{"rounded-br":j()}],"rounded-bl":[{"rounded-bl":j()}],"border-w":[{border:E()}],"border-w-x":[{"border-x":E()}],"border-w-y":[{"border-y":E()}],"border-w-s":[{"border-s":E()}],"border-w-e":[{"border-e":E()}],"border-w-bs":[{"border-bs":E()}],"border-w-be":[{"border-be":E()}],"border-w-t":[{"border-t":E()}],"border-w-r":[{"border-r":E()}],"border-w-b":[{"border-b":E()}],"border-w-l":[{"border-l":E()}],"divide-x":[{"divide-x":E()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":E()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...I(),"hidden","none"]}],"divide-style":[{divide:[...I(),"hidden","none"]}],"border-color":[{border:C()}],"border-color-x":[{"border-x":C()}],"border-color-y":[{"border-y":C()}],"border-color-s":[{"border-s":C()}],"border-color-e":[{"border-e":C()}],"border-color-bs":[{"border-bs":C()}],"border-color-be":[{"border-be":C()}],"border-color-t":[{"border-t":C()}],"border-color-r":[{"border-r":C()}],"border-color-b":[{"border-b":C()}],"border-color-l":[{"border-l":C()}],"divide-color":[{divide:C()}],"outline-style":[{outline:[...I(),"none","hidden"]}],"outline-offset":[{"outline-offset":[me,se,oe]}],"outline-w":[{outline:["",me,Rn,Qt]}],"outline-color":[{outline:C()}],shadow:[{shadow:["","none",d,ri,ii]}],"shadow-color":[{shadow:C()}],"inset-shadow":[{"inset-shadow":["none",l,ri,ii]}],"inset-shadow-color":[{"inset-shadow":C()}],"ring-w":[{ring:E()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:C()}],"ring-offset-w":[{"ring-offset":[me,Qt]}],"ring-offset-color":[{"ring-offset":C()}],"inset-ring-w":[{"inset-ring":E()}],"inset-ring-color":[{"inset-ring":C()}],"text-shadow":[{"text-shadow":["none",g,ri,ii]}],"text-shadow-color":[{"text-shadow":C()}],opacity:[{opacity:[me,se,oe]}],"mix-blend":[{"mix-blend":[...q(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":q()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[me]}],"mask-image-linear-from-pos":[{"mask-linear-from":$()}],"mask-image-linear-to-pos":[{"mask-linear-to":$()}],"mask-image-linear-from-color":[{"mask-linear-from":C()}],"mask-image-linear-to-color":[{"mask-linear-to":C()}],"mask-image-t-from-pos":[{"mask-t-from":$()}],"mask-image-t-to-pos":[{"mask-t-to":$()}],"mask-image-t-from-color":[{"mask-t-from":C()}],"mask-image-t-to-color":[{"mask-t-to":C()}],"mask-image-r-from-pos":[{"mask-r-from":$()}],"mask-image-r-to-pos":[{"mask-r-to":$()}],"mask-image-r-from-color":[{"mask-r-from":C()}],"mask-image-r-to-color":[{"mask-r-to":C()}],"mask-image-b-from-pos":[{"mask-b-from":$()}],"mask-image-b-to-pos":[{"mask-b-to":$()}],"mask-image-b-from-color":[{"mask-b-from":C()}],"mask-image-b-to-color":[{"mask-b-to":C()}],"mask-image-l-from-pos":[{"mask-l-from":$()}],"mask-image-l-to-pos":[{"mask-l-to":$()}],"mask-image-l-from-color":[{"mask-l-from":C()}],"mask-image-l-to-color":[{"mask-l-to":C()}],"mask-image-x-from-pos":[{"mask-x-from":$()}],"mask-image-x-to-pos":[{"mask-x-to":$()}],"mask-image-x-from-color":[{"mask-x-from":C()}],"mask-image-x-to-color":[{"mask-x-to":C()}],"mask-image-y-from-pos":[{"mask-y-from":$()}],"mask-image-y-to-pos":[{"mask-y-to":$()}],"mask-image-y-from-color":[{"mask-y-from":C()}],"mask-image-y-to-color":[{"mask-y-to":C()}],"mask-image-radial":[{"mask-radial":[se,oe]}],"mask-image-radial-from-pos":[{"mask-radial-from":$()}],"mask-image-radial-to-pos":[{"mask-radial-to":$()}],"mask-image-radial-from-color":[{"mask-radial-from":C()}],"mask-image-radial-to-color":[{"mask-radial-to":C()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":S()}],"mask-image-conic-pos":[{"mask-conic":[me]}],"mask-image-conic-from-pos":[{"mask-conic-from":$()}],"mask-image-conic-to-pos":[{"mask-conic-to":$()}],"mask-image-conic-from-color":[{"mask-conic-from":C()}],"mask-image-conic-to-color":[{"mask-conic-to":C()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:k()}],"mask-repeat":[{mask:Y()}],"mask-size":[{mask:L()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",se,oe]}],filter:[{filter:["","none",se,oe]}],blur:[{blur:ie()}],brightness:[{brightness:[me,se,oe]}],contrast:[{contrast:[me,se,oe]}],"drop-shadow":[{"drop-shadow":["","none",f,ri,ii]}],"drop-shadow-color":[{"drop-shadow":C()}],grayscale:[{grayscale:["",me,se,oe]}],"hue-rotate":[{"hue-rotate":[me,se,oe]}],invert:[{invert:["",me,se,oe]}],saturate:[{saturate:[me,se,oe]}],sepia:[{sepia:["",me,se,oe]}],"backdrop-filter":[{"backdrop-filter":["","none",se,oe]}],"backdrop-blur":[{"backdrop-blur":ie()}],"backdrop-brightness":[{"backdrop-brightness":[me,se,oe]}],"backdrop-contrast":[{"backdrop-contrast":[me,se,oe]}],"backdrop-grayscale":[{"backdrop-grayscale":["",me,se,oe]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[me,se,oe]}],"backdrop-invert":[{"backdrop-invert":["",me,se,oe]}],"backdrop-opacity":[{"backdrop-opacity":[me,se,oe]}],"backdrop-saturate":[{"backdrop-saturate":[me,se,oe]}],"backdrop-sepia":[{"backdrop-sepia":["",me,se,oe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":P()}],"border-spacing-x":[{"border-spacing-x":P()}],"border-spacing-y":[{"border-spacing-y":P()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",se,oe]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[me,"initial",se,oe]}],ease:[{ease:["linear","initial",x,se,oe]}],delay:[{delay:[me,se,oe]}],animate:[{animate:["none",T,se,oe]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[y,se,oe]}],"perspective-origin":[{"perspective-origin":v()}],rotate:[{rotate:de()}],"rotate-x":[{"rotate-x":de()}],"rotate-y":[{"rotate-y":de()}],"rotate-z":[{"rotate-z":de()}],scale:[{scale:Z()}],"scale-x":[{"scale-x":Z()}],"scale-y":[{"scale-y":Z()}],"scale-z":[{"scale-z":Z()}],"scale-3d":["scale-3d"],skew:[{skew:be()}],"skew-x":[{"skew-x":be()}],"skew-y":[{"skew-y":be()}],transform:[{transform:[se,oe,"","none","gpu","cpu"]}],"transform-origin":[{origin:v()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ce()}],"translate-x":[{"translate-x":Ce()}],"translate-y":[{"translate-y":Ce()}],"translate-z":[{"translate-z":Ce()}],"translate-none":["translate-none"],accent:[{accent:C()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:C()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",se,oe]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":P()}],"scroll-mx":[{"scroll-mx":P()}],"scroll-my":[{"scroll-my":P()}],"scroll-ms":[{"scroll-ms":P()}],"scroll-me":[{"scroll-me":P()}],"scroll-mbs":[{"scroll-mbs":P()}],"scroll-mbe":[{"scroll-mbe":P()}],"scroll-mt":[{"scroll-mt":P()}],"scroll-mr":[{"scroll-mr":P()}],"scroll-mb":[{"scroll-mb":P()}],"scroll-ml":[{"scroll-ml":P()}],"scroll-p":[{"scroll-p":P()}],"scroll-px":[{"scroll-px":P()}],"scroll-py":[{"scroll-py":P()}],"scroll-ps":[{"scroll-ps":P()}],"scroll-pe":[{"scroll-pe":P()}],"scroll-pbs":[{"scroll-pbs":P()}],"scroll-pbe":[{"scroll-pbe":P()}],"scroll-pt":[{"scroll-pt":P()}],"scroll-pr":[{"scroll-pr":P()}],"scroll-pb":[{"scroll-pb":P()}],"scroll-pl":[{"scroll-pl":P()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",se,oe]}],fill:[{fill:["none",...C()]}],"stroke-w":[{stroke:[me,Rn,Qt,uo]}],stroke:[{stroke:["none",...C()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Ly=py(Iy);function yt(...e){return Ly(Ks(e))}function Fy(e,t){let n;return(i,r)=>{clearTimeout(n),n=setTimeout(()=>e(i,r),t)}}const gn=(e,t)=>{if(t==="1D"||t==="D"||t==="1440"){const n=new Date(e*1e3);return n.setUTCHours(0,0,0,0),n.getTime()}return e.toString().length>11?e:e*1e3};var _n=e=>e.type==="checkbox",tn=e=>e instanceof Date,Ze=e=>e==null;const cl=e=>typeof e=="object";var Ge=e=>!Ze(e)&&!Array.isArray(e)&&cl(e)&&!tn(e),ul=e=>Ge(e)&&e.target?_n(e.target)?e.target.checked:e.target.value:e,Gy=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,dl=(e,t)=>e.has(Gy(t)),By=e=>{const t=e.constructor&&e.constructor.prototype;return Ge(t)&&t.hasOwnProperty("isPrototypeOf")},Vr=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function Le(e){if(e instanceof Date)return new Date(e);const t=typeof FileList<"u"&&e instanceof FileList;if(Vr&&(e instanceof Blob||t))return e;const n=Array.isArray(e);if(!n&&!(Ge(e)&&By(e)))return e;const i=n?[]:Object.create(Object.getPrototypeOf(e));for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i[r]=Le(e[r]));return i}var Ii=e=>/^\w*$/.test(e),Re=e=>e===void 0,Kr=e=>Array.isArray(e)?e.filter(Boolean):[],Jr=e=>Kr(e.replace(/["|']|\]/g,"").split(/\.|\[/)),ne=(e,t,n)=>{if(!t||!Ge(e))return n;const i=(Ii(t)?[t]:Jr(t)).reduce((r,a)=>Ze(r)?r:r[a],e);return Re(i)||i===e?Re(e[t])?n:e[t]:i},at=e=>typeof e=="boolean",Je=e=>typeof e=="function",ke=(e,t,n)=>{let i=-1;const r=Ii(t)?[t]:Jr(t),a=r.length,o=a-1;for(;++i<a;){const s=r[i];let u=n;if(i!==o){const c=e[s];u=Ge(c)||Array.isArray(c)?c:isNaN(+r[i+1])?{}:[]}if(s==="__proto__"||s==="constructor"||s==="prototype")return;e[s]=u,e=e[s]}};const gi={BLUR:"blur",FOCUS_OUT:"focusout",CHANGE:"change"},mt={onBlur:"onBlur",onChange:"onChange",onSubmit:"onSubmit",onTouched:"onTouched",all:"all"},Lt={max:"max",min:"min",maxLength:"maxLength",minLength:"minLength",pattern:"pattern",required:"required",validate:"validate"},Xr=p.createContext(null);Xr.displayName="HookFormControlContext";const Zr=()=>p.useContext(Xr);var hl=(e,t,n,i=!0)=>{const r={defaultValues:t._defaultValues};for(const a in e)Object.defineProperty(r,a,{get:()=>{const o=a;return t._proxyFormState[o]!==mt.all&&(t._proxyFormState[o]=!i||mt.all),n&&(n[o]=!0),e[o]}});return r};const Qr=typeof window<"u"?p.useLayoutEffect:p.useEffect;function jy(e){const t=Zr(),{control:n=t,disabled:i,name:r,exact:a}=e||{},[o,s]=p.useState(n._formState),u=p.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return Qr(()=>n._subscribe({name:r,formState:u.current,exact:a,callback:c=>{!i&&s({...n._formState,...c})}}),[r,i,a]),p.useEffect(()=>{u.current.isValid&&n._setValid(!0)},[n]),p.useMemo(()=>hl(o,n,u.current,!1),[o,n])}var st=e=>typeof e=="string",br=(e,t,n,i,r)=>st(e)?(i&&t.watch.add(e),ne(n,e,r)):Array.isArray(e)?e.map(a=>(i&&t.watch.add(a),ne(n,a))):(i&&(t.watchAll=!0),n),vr=e=>Ze(e)||!cl(e);function ft(e,t,n=new WeakSet){if(vr(e)||vr(t))return Object.is(e,t);if(tn(e)&&tn(t))return Object.is(e.getTime(),t.getTime());const i=Object.keys(e),r=Object.keys(t);if(i.length!==r.length)return!1;if(n.has(e)||n.has(t))return!0;n.add(e),n.add(t);for(const a of i){const o=e[a];if(!r.includes(a))return!1;if(a!=="ref"){const s=t[a];if(tn(o)&&tn(s)||Ge(o)&&Ge(s)||Array.isArray(o)&&Array.isArray(s)?!ft(o,s,n):!Object.is(o,s))return!1}}return!0}function Mn(e){const t=Zr(),{control:n=t,name:i,defaultValue:r,disabled:a,exact:o,compute:s}=e||{},u=p.useRef(r),c=p.useRef(s),d=p.useRef(void 0),l=p.useRef(n),g=p.useRef(i);c.current=s;const[f,m]=p.useState(()=>{const S=n._getWatch(i,u.current);return c.current?c.current(S):S}),y=p.useCallback(S=>{const v=br(i,n._names,S||n._formValues,!1,u.current);return c.current?c.current(v):v},[n._formValues,n._names,i]),b=p.useCallback(S=>{if(!a){const v=br(i,n._names,S||n._formValues,!1,u.current);if(c.current){const D=c.current(v);ft(D,d.current)||(m(D),d.current=D)}else m(v)}},[n._formValues,n._names,a,i]);Qr(()=>((l.current!==n||!ft(g.current,i))&&(l.current=n,g.current=i,b()),n._subscribe({name:i,formState:{values:!0},exact:o,callback:S=>{b(S.values)}})),[n,o,i,b]),p.useEffect(()=>n._removeUnmounted());const x=l.current!==n,T=g.current,A=p.useMemo(()=>{if(a)return null;const S=!x&&!ft(T,i);return x||S?y():null},[a,x,i,T,y]);return A!==null?A:f}function Uy(e){const t=Zr(),{name:n,disabled:i,control:r=t,shouldUnregister:a,defaultValue:o,exact:s=!0}=e,u=dl(r._names.array,n),c=p.useMemo(()=>ne(r._formValues,n,ne(r._defaultValues,n,o)),[r,n,o]),d=Mn({control:r,name:n,defaultValue:c,exact:s}),l=jy({control:r,name:n,exact:s}),g=p.useRef(e),f=p.useRef(void 0),m=p.useRef(r.register(n,{...e.rules,value:d,...at(e.disabled)?{disabled:e.disabled}:{}}));g.current=e;const y=p.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!ne(l.errors,n)},isDirty:{enumerable:!0,get:()=>!!ne(l.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!ne(l.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!ne(l.validatingFields,n)},error:{enumerable:!0,get:()=>ne(l.errors,n)}}),[l,n]),b=p.useCallback(S=>m.current.onChange({target:{value:ul(S),name:n},type:gi.CHANGE}),[n]),x=p.useCallback(()=>m.current.onBlur({target:{value:ne(r._formValues,n),name:n},type:gi.BLUR}),[n,r._formValues]),T=p.useCallback(S=>{const v=ne(r._fields,n);v&&v._f&&S&&(v._f.ref={focus:()=>Je(S.focus)&&S.focus(),select:()=>Je(S.select)&&S.select(),setCustomValidity:D=>Je(S.setCustomValidity)&&S.setCustomValidity(D),reportValidity:()=>Je(S.reportValidity)&&S.reportValidity()})},[r._fields,n]),A=p.useMemo(()=>({name:n,value:d,...at(i)||l.disabled?{disabled:l.disabled||i}:{},onChange:b,onBlur:x,ref:T}),[n,i,l.disabled,b,x,T,d]);return p.useEffect(()=>{const S=r._options.shouldUnregister||a,v=f.current;v&&v!==n&&!u&&r.unregister(v),r.register(n,{...g.current.rules,...at(g.current.disabled)?{disabled:g.current.disabled}:{}});const D=(w,P)=>{const M=ne(r._fields,w);M&&M._f&&(M._f.mount=P)};if(D(n,!0),S){const w=Le(ne(r._options.defaultValues,n,g.current.defaultValue));ke(r._defaultValues,n,w),Re(ne(r._formValues,n))&&ke(r._formValues,n,w)}return!u&&r.register(n),f.current=n,()=>{(u?S&&!r._state.action:S)?r.unregister(n):D(n,!1)}},[n,r,u,a]),p.useEffect(()=>{r._setDisabledField({disabled:i,name:n})},[i,n,r]),p.useMemo(()=>({field:A,formState:l,fieldState:y}),[A,l,y])}const wr=e=>e.render(Uy(e)),pl=p.createContext(null);pl.displayName="HookFormContext";const zy=e=>{const{children:t,watch:n,getValues:i,getFieldState:r,setError:a,clearErrors:o,setValue:s,trigger:u,formState:c,resetField:d,reset:l,handleSubmit:g,unregister:f,control:m,register:y,setFocus:b,subscribe:x}=e;return p.createElement(pl.Provider,{value:p.useMemo(()=>({watch:n,getValues:i,getFieldState:r,setError:a,clearErrors:o,setValue:s,trigger:u,formState:c,resetField:d,reset:l,handleSubmit:g,unregister:f,control:m,register:y,setFocus:b,subscribe:x}),[o,m,c,r,i,g,y,l,d,a,b,s,x,u,f,n])},p.createElement(Xr.Provider,{value:m},t))};var Hy=(e,t,n,i,r)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[i]:r||!0}}:{},On=e=>Array.isArray(e)?e:[e],mo=()=>{let e=[];return{get observers(){return e},next:r=>{for(const a of e)a.next&&a.next(r)},subscribe:r=>(e.push(r),{unsubscribe:()=>{e=e.filter(a=>a!==r)}}),unsubscribe:()=>{e=[]}}};function ml(e,t){const n={};for(const i in e)if(e.hasOwnProperty(i)){const r=e[i],a=t[i];if(r&&Ge(r)&&a){const o=ml(r,a);Ge(o)&&(n[i]=o)}else e[i]&&(n[i]=a)}return n}var Ke=e=>Ge(e)&&!Object.keys(e).length,$r=e=>e.type==="file",yi=e=>{if(!Vr)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},fl=e=>e.type==="select-multiple",ea=e=>e.type==="radio",Yy=e=>ea(e)||_n(e),ar=e=>yi(e)&&e.isConnected;function qy(e,t){const n=t.slice(0,-1).length;let i=0;for(;i<n;)e=Re(e)?i++:e[t[i++]];return e}function Wy(e){for(const t in e)if(e.hasOwnProperty(t)&&!Re(e[t]))return!1;return!0}function Fe(e,t){const n=Array.isArray(t)?t:Ii(t)?[t]:Jr(t),i=n.length===1?e:qy(e,n),r=n.length-1,a=n[r];return i&&delete i[a],r!==0&&(Ge(i)&&Ke(i)||Array.isArray(i)&&Wy(i))&&Fe(e,n.slice(0,-1)),e}var _y=e=>{for(const t in e)if(Je(e[t]))return!0;return!1};function gl(e){return Array.isArray(e)||Ge(e)&&!_y(e)}function xr(e,t={}){for(const n in e){const i=e[n];gl(i)?(t[n]=Array.isArray(i)?[]:{},xr(i,t[n])):Re(i)||(t[n]=!0)}return t}function fn(e,t,n){n||(n=xr(t));for(const i in e){const r=e[i];if(gl(r))Re(t)||vr(n[i])?n[i]=xr(r,Array.isArray(r)?[]:{}):fn(r,Ze(t)?{}:t[i],n[i]);else{const a=t[i];n[i]=!ft(r,a)}}return n}const fo={value:!1,isValid:!1},go={value:!0,isValid:!0};var yl=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(n=>n&&n.checked&&!n.disabled).map(n=>n.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!Re(e[0].attributes.value)?Re(e[0].value)||e[0].value===""?go:{value:e[0].value,isValid:!0}:go:fo}return fo},bl=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:i})=>Re(e)?e:t?e===""?NaN:e&&+e:n&&st(e)?new Date(e):i?i(e):e;const yo={isValid:!1,value:null};var vl=e=>Array.isArray(e)?e.reduce((t,n)=>n&&n.checked&&!n.disabled?{isValid:!0,value:n.value}:t,yo):yo;function bo(e){const t=e.ref;return $r(t)?t.files:ea(t)?vl(e.refs).value:fl(t)?[...t.selectedOptions].map(({value:n})=>n):_n(t)?yl(e.refs).value:bl(Re(t.value)?e.ref.value:t.value,e)}var Vy=(e,t,n,i)=>{const r={};for(const a of e){const o=ne(t,a);o&&ke(r,a,o._f)}return{criteriaMode:n,names:[...e],fields:r,shouldUseNativeValidation:i}},bi=e=>e instanceof RegExp,En=e=>Re(e)?e:bi(e)?e.source:Ge(e)?bi(e.value)?e.value.source:e.value:e,vo=e=>({isOnSubmit:!e||e===mt.onSubmit,isOnBlur:e===mt.onBlur,isOnChange:e===mt.onChange,isOnAll:e===mt.all,isOnTouch:e===mt.onTouched});const wo="AsyncFunction";var Ky=e=>!!e&&!!e.validate&&!!(Je(e.validate)&&e.validate.constructor.name===wo||Ge(e.validate)&&Object.values(e.validate).find(t=>t.constructor.name===wo)),Jy=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),xo=(e,t,n)=>!n&&(t.watchAll||t.watch.has(e)||[...t.watch].some(i=>e.startsWith(i)&&/^\.\w+/.test(e.slice(i.length))));const In=(e,t,n,i)=>{for(const r of n||Object.keys(e)){const a=ne(e,r);if(a){const{_f:o,...s}=a;if(o){if(o.refs&&o.refs[0]&&t(o.refs[0],r)&&!i)return!0;if(o.ref&&t(o.ref,o.name)&&!i)return!0;if(In(s,t))break}else if(Ge(s)&&In(s,t))break}}};function Po(e,t,n){const i=ne(e,n);if(i||Ii(n))return{error:i,name:n};const r=n.split(".");for(;r.length;){const a=r.join("."),o=ne(t,a),s=ne(e,a);if(o&&!Array.isArray(o)&&n!==a)return{name:n};if(s&&s.type)return{name:a,error:s};if(s&&s.root&&s.root.type)return{name:`${a}.root`,error:s.root};r.pop()}return{name:n}}var Xy=(e,t,n,i)=>{n(e);const{name:r,...a}=e;return Ke(a)||Object.keys(a).length>=Object.keys(t).length||Object.keys(a).find(o=>t[o]===(!i||mt.all))},Zy=(e,t,n)=>!e||!t||e===t||On(e).some(i=>i&&(n?i===t:i.startsWith(t)||t.startsWith(i))),Qy=(e,t,n,i,r)=>r.isOnAll?!1:!n&&r.isOnTouch?!(t||e):(n?i.isOnBlur:r.isOnBlur)?!e:(n?i.isOnChange:r.isOnChange)?e:!0,$y=(e,t)=>!Kr(ne(e,t)).length&&Fe(e,t),eb=(e,t,n)=>{const i=On(ne(e,n));return ke(i,"root",t[n]),ke(e,n,i),e};function So(e,t,n="validate"){if(st(e)||Array.isArray(e)&&e.every(st)||at(e)&&!e)return{type:n,message:st(e)?e:"",ref:t}}var pn=e=>Ge(e)&&!bi(e)?e:{value:e,message:""},To=async(e,t,n,i,r,a)=>{const{ref:o,refs:s,required:u,maxLength:c,minLength:d,min:l,max:g,pattern:f,validate:m,name:y,valueAsNumber:b,mount:x}=e._f,T=ne(n,y);if(!x||t.has(y))return{};const A=s?s[0]:o,S=B=>{r&&A.reportValidity&&(A.setCustomValidity(at(B)?"":B||""),A.reportValidity())},v={},D=ea(o),w=_n(o),P=D||w,M=(b||$r(o))&&Re(o.value)&&Re(T)||yi(o)&&o.value===""||T===""||Array.isArray(T)&&!T.length,G=Hy.bind(null,y,i,v),W=(B,_,V,K=Lt.maxLength,z=Lt.minLength)=>{const J=B?_:V;v[y]={type:B?K:z,message:J,ref:o,...G(B?K:z,J)}};if(a?!Array.isArray(T)||!T.length:u&&(!P&&(M||Ze(T))||at(T)&&!T||w&&!yl(s).isValid||D&&!vl(s).isValid)){const{value:B,message:_}=st(u)?{value:!!u,message:u}:pn(u);if(B&&(v[y]={type:Lt.required,message:_,ref:A,...G(Lt.required,_)},!i))return S(_),v}if(!M&&(!Ze(l)||!Ze(g))){let B,_;const V=pn(g),K=pn(l);if(!Ze(T)&&!isNaN(T)){const z=o.valueAsNumber||T&&+T;Ze(V.value)||(B=z>V.value),Ze(K.value)||(_=z<K.value)}else{const z=o.valueAsDate||new Date(T),J=C=>new Date(new Date().toDateString()+" "+C),X=o.type=="time",re=o.type=="week";st(V.value)&&T&&(B=X?J(T)>J(V.value):re?T>V.value:z>new Date(V.value)),st(K.value)&&T&&(_=X?J(T)<J(K.value):re?T<K.value:z<new Date(K.value))}if((B||_)&&(W(!!B,V.message,K.message,Lt.max,Lt.min),!i))return S(v[y].message),v}if((c||d)&&!M&&(st(T)||a&&Array.isArray(T))){const B=pn(c),_=pn(d),V=!Ze(B.value)&&T.length>+B.value,K=!Ze(_.value)&&T.length<+_.value;if((V||K)&&(W(V,B.message,_.message),!i))return S(v[y].message),v}if(f&&!M&&st(T)){const{value:B,message:_}=pn(f);if(bi(B)&&!T.match(B)&&(v[y]={type:Lt.pattern,message:_,ref:o,...G(Lt.pattern,_)},!i))return S(_),v}if(m){if(Je(m)){const B=await m(T,n),_=So(B,A);if(_&&(v[y]={..._,...G(Lt.validate,_.message)},!i))return S(_.message),v}else if(Ge(m)){let B={};for(const _ in m){if(!Ke(B)&&!i)break;const V=So(await m[_](T,n),A,_);V&&(B={...V,...G(_,V.message)},S(V.message),i&&(v[y]=B))}if(!Ke(B)&&(v[y]={ref:A,...B},!i))return v}}return S(!0),v};const tb={mode:mt.onSubmit,reValidateMode:mt.onChange,shouldFocusError:!0};function nb(e={}){let t={...tb,...e},n={submitCount:0,isDirty:!1,isReady:!1,isLoading:Je(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},i={},r=Ge(t.defaultValues)||Ge(t.values)?Le(t.defaultValues||t.values)||{}:{},a=t.shouldUnregister?{}:Le(r),o={action:!1,mount:!1,watch:!1,keepIsValid:!1},s={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},u,c=0;const d={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},l={...d};let g={...l};const f={array:mo(),state:mo()},m=t.criteriaMode===mt.all,y=N=>O=>{clearTimeout(c),c=setTimeout(N,O)},b=async N=>{if(!o.keepIsValid&&!t.disabled&&(l.isValid||g.isValid||N)){let O;t.resolver?(O=Ke((await P()).errors),x()):O=await G(i,!0),O!==n.isValid&&f.state.next({isValid:O})}},x=(N,O)=>{!t.disabled&&(l.isValidating||l.validatingFields||g.isValidating||g.validatingFields)&&((N||Array.from(s.mount)).forEach(H=>{H&&(O?ke(n.validatingFields,H,O):Fe(n.validatingFields,H))}),f.state.next({validatingFields:n.validatingFields,isValidating:!Ke(n.validatingFields)}))},T=(N,O=[],H,te,ee=!0,Q=!0)=>{if(te&&H&&!t.disabled){if(o.action=!0,Q&&Array.isArray(ne(i,N))){const le=H(ne(i,N),te.argA,te.argB);ee&&ke(i,N,le)}if(Q&&Array.isArray(ne(n.errors,N))){const le=H(ne(n.errors,N),te.argA,te.argB);ee&&ke(n.errors,N,le),$y(n.errors,N)}if((l.touchedFields||g.touchedFields)&&Q&&Array.isArray(ne(n.touchedFields,N))){const le=H(ne(n.touchedFields,N),te.argA,te.argB);ee&&ke(n.touchedFields,N,le)}(l.dirtyFields||g.dirtyFields)&&(n.dirtyFields=fn(r,a)),f.state.next({name:N,isDirty:B(N,O),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else ke(a,N,O)},A=(N,O)=>{ke(n.errors,N,O),f.state.next({errors:n.errors})},S=N=>{n.errors=N,f.state.next({errors:n.errors,isValid:!1})},v=(N,O,H,te)=>{const ee=ne(i,N);if(ee){const Q=ne(a,N,Re(H)?ne(r,N):H);Re(Q)||te&&te.defaultChecked||O?ke(a,N,O?Q:bo(ee._f)):K(N,Q),o.mount&&!o.action&&b()}},D=(N,O,H,te,ee)=>{let Q=!1,le=!1;const ye={name:N};if(!t.disabled){if(!H||te){(l.isDirty||g.isDirty)&&(le=n.isDirty,n.isDirty=ye.isDirty=B(),Q=le!==ye.isDirty);const fe=ft(ne(r,N),O);le=!!ne(n.dirtyFields,N),fe?Fe(n.dirtyFields,N):ke(n.dirtyFields,N,!0),ye.dirtyFields=n.dirtyFields,Q=Q||(l.dirtyFields||g.dirtyFields)&&le!==!fe}if(H){const fe=ne(n.touchedFields,N);fe||(ke(n.touchedFields,N,H),ye.touchedFields=n.touchedFields,Q=Q||(l.touchedFields||g.touchedFields)&&fe!==H)}Q&&ee&&f.state.next(ye)}return Q?ye:{}},w=(N,O,H,te)=>{const ee=ne(n.errors,N),Q=(l.isValid||g.isValid)&&at(O)&&n.isValid!==O;if(t.delayError&&H?(u=y(()=>A(N,H)),u(t.delayError)):(clearTimeout(c),u=null,H?ke(n.errors,N,H):Fe(n.errors,N)),(H?!ft(ee,H):ee)||!Ke(te)||Q){const le={...te,...Q&&at(O)?{isValid:O}:{},errors:n.errors,name:N};n={...n,...le},f.state.next(le)}},P=async N=>(x(N,!0),await t.resolver(a,t.context,Vy(N||s.mount,i,t.criteriaMode,t.shouldUseNativeValidation))),M=async N=>{const{errors:O}=await P(N);if(x(N),N)for(const H of N){const te=ne(O,H);te?ke(n.errors,H,te):Fe(n.errors,H)}else n.errors=O;return O},G=async(N,O,H={valid:!0})=>{for(const te in N){const ee=N[te];if(ee){const{_f:Q,...le}=ee;if(Q){const ye=s.array.has(Q.name),fe=ee._f&&Ky(ee._f);fe&&l.validatingFields&&x([Q.name],!0);const De=await To(ee,s.disabled,a,m,t.shouldUseNativeValidation&&!O,ye);if(fe&&l.validatingFields&&x([Q.name]),De[Q.name]&&(H.valid=!1,O||e.shouldUseNativeValidation))break;!O&&(ne(De,Q.name)?ye?eb(n.errors,De,Q.name):ke(n.errors,Q.name,De[Q.name]):Fe(n.errors,Q.name))}!Ke(le)&&await G(le,O,H)}}return H.valid},W=()=>{for(const N of s.unMount){const O=ne(i,N);O&&(O._f.refs?O._f.refs.every(H=>!ar(H)):!ar(O._f.ref))&&q(N)}s.unMount=new Set},B=(N,O)=>!t.disabled&&(N&&O&&ke(a,N,O),!ft(k(),r)),_=(N,O,H)=>br(N,s,{...o.mount?a:Re(O)?r:st(N)?{[N]:O}:O},H,O),V=N=>Kr(ne(o.mount?a:r,N,t.shouldUnregister?ne(r,N,[]):[])),K=(N,O,H={})=>{const te=ne(i,N);let ee=O;if(te){const Q=te._f;Q&&(!Q.disabled&&ke(a,N,bl(O,Q)),ee=yi(Q.ref)&&Ze(O)?"":O,fl(Q.ref)?[...Q.ref.options].forEach(le=>le.selected=ee.includes(le.value)):Q.refs?_n(Q.ref)?Q.refs.forEach(le=>{(!le.defaultChecked||!le.disabled)&&(Array.isArray(ee)?le.checked=!!ee.find(ye=>ye===le.value):le.checked=ee===le.value||!!ee)}):Q.refs.forEach(le=>le.checked=le.value===ee):$r(Q.ref)?Q.ref.value="":(Q.ref.value=ee,Q.ref.type||f.state.next({name:N,values:Le(a)})))}(H.shouldDirty||H.shouldTouch)&&D(N,ee,H.shouldTouch,H.shouldDirty,!0),H.shouldValidate&&C(N)},z=(N,O,H)=>{for(const te in O){if(!O.hasOwnProperty(te))return;const ee=O[te],Q=N+"."+te,le=ne(i,Q);(s.array.has(N)||Ge(ee)||le&&!le._f)&&!tn(ee)?z(Q,ee,H):K(Q,ee,H)}},J=(N,O,H={})=>{const te=ne(i,N),ee=s.array.has(N),Q=Le(O);ke(a,N,Q),ee?(f.array.next({name:N,values:Le(a)}),(l.isDirty||l.dirtyFields||g.isDirty||g.dirtyFields)&&H.shouldDirty&&f.state.next({name:N,dirtyFields:fn(r,a),isDirty:B(N,Q)})):te&&!te._f&&!Ze(Q)?z(N,Q,H):K(N,Q,H),xo(N,s)?f.state.next({...n,name:N,values:Le(a)}):f.state.next({name:o.mount?N:void 0,values:Le(a)})},X=async N=>{o.mount=!0;const O=N.target;let H=O.name,te=!0;const ee=ne(i,H),Q=fe=>{te=Number.isNaN(fe)||tn(fe)&&isNaN(fe.getTime())||ft(fe,ne(a,H,fe))},le=vo(t.mode),ye=vo(t.reValidateMode);if(ee){let fe,De;const it=O.type?bo(ee._f):ul(N),Ue=N.type===gi.BLUR||N.type===gi.FOCUS_OUT,jt=!Jy(ee._f)&&!t.resolver&&!ne(n.errors,H)&&!ee._f.deps||Qy(Ue,ne(n.touchedFields,H),n.isSubmitted,ye,le),Ot=xo(H,s,Ue);ke(a,H,it),Ue?(!O||!O.readOnly)&&(ee._f.onBlur&&ee._f.onBlur(N),u&&u(0)):ee._f.onChange&&ee._f.onChange(N);const St=D(H,it,Ue),un=!Ke(St)||Ot;if(!Ue&&f.state.next({name:H,type:N.type,values:Le(a)}),jt)return(l.isValid||g.isValid)&&(t.mode==="onBlur"?Ue&&b():Ue||b()),un&&f.state.next({name:H,...Ot?{}:St});if(!Ue&&Ot&&f.state.next({...n}),t.resolver){const{errors:dn}=await P([H]);if(x([H]),Q(it),te){const ae=Po(n.errors,i,H),ge=Po(dn,i,ae.name||H);fe=ge.error,H=ge.name,De=Ke(dn)}}else x([H],!0),fe=(await To(ee,s.disabled,a,m,t.shouldUseNativeValidation))[H],x([H]),Q(it),te&&(fe?De=!1:(l.isValid||g.isValid)&&(De=await G(i,!0)));te&&(ee._f.deps&&(!Array.isArray(ee._f.deps)||ee._f.deps.length>0)&&C(ee._f.deps),w(H,De,fe,St))}},re=(N,O)=>{if(ne(n.errors,O)&&N.focus)return N.focus(),1},C=async(N,O={})=>{let H,te;const ee=On(N);if(t.resolver){const Q=await M(Re(N)?N:ee);H=Ke(Q),te=N?!ee.some(le=>ne(Q,le)):H}else N?(te=(await Promise.all(ee.map(async Q=>{const le=ne(i,Q);return await G(le&&le._f?{[Q]:le}:le)}))).every(Boolean),!(!te&&!n.isValid)&&b()):te=H=await G(i);return f.state.next({...!st(N)||(l.isValid||g.isValid)&&H!==n.isValid?{}:{name:N},...t.resolver||!N?{isValid:H}:{},errors:n.errors}),O.shouldFocus&&!te&&In(i,re,N?ee:s.mount),te},k=(N,O)=>{let H={...o.mount?a:r};return O&&(H=ml(O.dirtyFields?n.dirtyFields:n.touchedFields,H)),Re(N)?H:st(N)?ne(H,N):N.map(te=>ne(H,te))},Y=(N,O)=>({invalid:!!ne((O||n).errors,N),isDirty:!!ne((O||n).dirtyFields,N),error:ne((O||n).errors,N),isValidating:!!ne(n.validatingFields,N),isTouched:!!ne((O||n).touchedFields,N)}),L=N=>{const O=N?On(N):void 0;O?.forEach(H=>Fe(n.errors,H)),O?O.forEach(H=>{f.state.next({name:H,errors:n.errors})}):f.state.next({errors:{}})},R=(N,O,H)=>{const te=(ne(i,N,{_f:{}})._f||{}).ref,ee=ne(n.errors,N)||{},{ref:Q,message:le,type:ye,...fe}=ee;ke(n.errors,N,{...fe,...O,ref:te}),f.state.next({name:N,errors:n.errors,isValid:!1}),H&&H.shouldFocus&&te&&te.focus&&te.focus()},j=(N,O)=>Je(N)?f.state.subscribe({next:H=>"values"in H&&N(_(void 0,O),H)}):_(N,O,!0),E=N=>f.state.subscribe({next:O=>{Zy(N.name,O.name,N.exact)&&Xy(O,N.formState||l,Mt,N.reRenderRoot)&&N.callback({values:{...a},...n,...O,defaultValues:r})}}).unsubscribe,I=N=>(o.mount=!0,g={...g,...N.formState},E({...N,formState:{...d,...N.formState}})),q=(N,O={})=>{for(const H of N?On(N):s.mount)s.mount.delete(H),s.array.delete(H),O.keepValue||(Fe(i,H),Fe(a,H)),!O.keepError&&Fe(n.errors,H),!O.keepDirty&&Fe(n.dirtyFields,H),!O.keepTouched&&Fe(n.touchedFields,H),!O.keepIsValidating&&Fe(n.validatingFields,H),!t.shouldUnregister&&!O.keepDefaultValue&&Fe(r,H);f.state.next({values:Le(a)}),f.state.next({...n,...O.keepDirty?{isDirty:B()}:{}}),!O.keepIsValid&&b()},$=({disabled:N,name:O})=>{if(at(N)&&o.mount||N||s.disabled.has(O)){const ee=s.disabled.has(O)!==!!N;N?s.disabled.add(O):s.disabled.delete(O),ee&&o.mount&&!o.action&&b()}},ie=(N,O={})=>{let H=ne(i,N);const te=at(O.disabled)||at(t.disabled);return ke(i,N,{...H||{},_f:{...H&&H._f?H._f:{ref:{name:N}},name:N,mount:!0,...O}}),s.mount.add(N),H?$({disabled:at(O.disabled)?O.disabled:t.disabled,name:N}):v(N,!0,O.value),{...te?{disabled:O.disabled||t.disabled}:{},...t.progressive?{required:!!O.required,min:En(O.min),max:En(O.max),minLength:En(O.minLength),maxLength:En(O.maxLength),pattern:En(O.pattern)}:{},name:N,onChange:X,onBlur:X,ref:ee=>{if(ee){ie(N,O),H=ne(i,N);const Q=Re(ee.value)&&ee.querySelectorAll&&ee.querySelectorAll("input,select,textarea")[0]||ee,le=Yy(Q),ye=H._f.refs||[];if(le?ye.find(fe=>fe===Q):Q===H._f.ref)return;ke(i,N,{_f:{...H._f,...le?{refs:[...ye.filter(ar),Q,...Array.isArray(ne(r,N))?[{}]:[]],ref:{type:Q.type,name:N}}:{ref:Q}}}),v(N,!1,void 0,Q)}else H=ne(i,N,{}),H._f&&(H._f.mount=!1),(t.shouldUnregister||O.shouldUnregister)&&!(dl(s.array,N)&&o.action)&&s.unMount.add(N)}}},de=()=>t.shouldFocusError&&In(i,re,s.mount),Z=N=>{at(N)&&(f.state.next({disabled:N}),In(i,(O,H)=>{const te=ne(i,H);te&&(O.disabled=te._f.disabled||N,Array.isArray(te._f.refs)&&te._f.refs.forEach(ee=>{ee.disabled=te._f.disabled||N}))},0,!1))},be=(N,O)=>async H=>{let te;H&&(H.preventDefault&&H.preventDefault(),H.persist&&H.persist());let ee=Le(a);if(f.state.next({isSubmitting:!0}),t.resolver){const{errors:Q,values:le}=await P();x(),n.errors=Q,ee=Le(le)}else await G(i);if(s.disabled.size)for(const Q of s.disabled)Fe(ee,Q);if(Fe(n.errors,"root"),Ke(n.errors)){f.state.next({errors:{}});try{await N(ee,H)}catch(Q){te=Q}}else O&&await O({...n.errors},H),de(),setTimeout(de);if(f.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Ke(n.errors)&&!te,submitCount:n.submitCount+1,errors:n.errors}),te)throw te},Ce=(N,O={})=>{ne(i,N)&&(Re(O.defaultValue)?J(N,Le(ne(r,N))):(J(N,O.defaultValue),ke(r,N,Le(O.defaultValue))),O.keepTouched||Fe(n.touchedFields,N),O.keepDirty||(Fe(n.dirtyFields,N),n.isDirty=O.defaultValue?B(N,Le(ne(r,N))):B()),O.keepError||(Fe(n.errors,N),l.isValid&&b()),f.state.next({...n}))},dt=(N,O={})=>{const H=N?Le(N):r,te=Le(H),ee=Ke(N),Q=ee?r:te;if(O.keepDefaultValues||(r=H),!O.keepValues){if(O.keepDirtyValues){const le=new Set([...s.mount,...Object.keys(fn(r,a))]);for(const ye of Array.from(le)){const fe=ne(n.dirtyFields,ye),De=ne(a,ye),it=ne(Q,ye);fe&&!Re(De)?ke(Q,ye,De):!fe&&!Re(it)&&J(ye,it)}}else{if(Vr&&Re(N))for(const le of s.mount){const ye=ne(i,le);if(ye&&ye._f){const fe=Array.isArray(ye._f.refs)?ye._f.refs[0]:ye._f.ref;if(yi(fe)){const De=fe.closest("form");if(De){De.reset();break}}}}if(O.keepFieldsRef)for(const le of s.mount)J(le,ne(Q,le));else i={}}a=t.shouldUnregister?O.keepDefaultValues?Le(r):{}:Le(Q),f.array.next({values:{...Q}}),f.state.next({values:{...Q}})}s={mount:O.keepDirtyValues?s.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},o.mount=!l.isValid||!!O.keepIsValid||!!O.keepDirtyValues||!t.shouldUnregister&&!Ke(Q),o.watch=!!t.shouldUnregister,o.keepIsValid=!!O.keepIsValid,o.action=!1,O.keepErrors||(n.errors={}),f.state.next({submitCount:O.keepSubmitCount?n.submitCount:0,isDirty:ee?!1:O.keepDirty?n.isDirty:!!(O.keepDefaultValues&&!ft(N,r)),isSubmitted:O.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:ee?{}:O.keepDirtyValues?O.keepDefaultValues&&a?fn(r,a):n.dirtyFields:O.keepDefaultValues&&N?fn(r,N):O.keepDirty?n.dirtyFields:{},touchedFields:O.keepTouched?n.touchedFields:{},errors:O.keepErrors?n.errors:{},isSubmitSuccessful:O.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:r})},Pt=(N,O)=>dt(Je(N)?N(a):N,{...t.resetOptions,...O}),He=(N,O={})=>{const H=ne(i,N),te=H&&H._f;if(te){const ee=te.refs?te.refs[0]:te.ref;ee.focus&&setTimeout(()=>{ee.focus(),O.shouldSelect&&Je(ee.select)&&ee.select()})}},Mt=N=>{n={...n,...N}},cn={control:{register:ie,unregister:q,getFieldState:Y,handleSubmit:be,setError:R,_subscribe:E,_runSchema:P,_updateIsValidating:x,_focusError:de,_getWatch:_,_getDirty:B,_setValid:b,_setFieldArray:T,_setDisabledField:$,_setErrors:S,_getFieldArray:V,_reset:dt,_resetDefaultValues:()=>Je(t.defaultValues)&&t.defaultValues().then(N=>{Pt(N,t.resetOptions),f.state.next({isLoading:!1})}),_removeUnmounted:W,_disableForm:Z,_subjects:f,_proxyFormState:l,get _fields(){return i},get _formValues(){return a},get _state(){return o},set _state(N){o=N},get _defaultValues(){return r},get _names(){return s},set _names(N){s=N},get _formState(){return n},get _options(){return t},set _options(N){t={...t,...N}}},subscribe:I,trigger:C,register:ie,handleSubmit:be,watch:j,setValue:J,getValues:k,reset:Pt,resetField:Ce,clearErrors:L,unregister:q,setError:R,setFocus:He,getFieldState:Y};return{...cn,formControl:cn}}function wl(e={}){const t=p.useRef(void 0),n=p.useRef(void 0),[i,r]=p.useState({isDirty:!1,isValidating:!1,isLoading:Je(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:Je(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:i},e.defaultValues&&!Je(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:o,...s}=nb(e);t.current={...s,formState:i}}const a=t.current.control;return a._options=e,Qr(()=>{const o=a._subscribe({formState:a._proxyFormState,callback:()=>r({...a._formState}),reRenderRoot:!0});return r(s=>({...s,isReady:!0})),a._formState.isReady=!0,o},[a]),p.useEffect(()=>a._disableForm(e.disabled),[a,e.disabled]),p.useEffect(()=>{e.mode&&(a._options.mode=e.mode),e.reValidateMode&&(a._options.reValidateMode=e.reValidateMode)},[a,e.mode,e.reValidateMode]),p.useEffect(()=>{e.errors&&(a._setErrors(e.errors),a._focusError())},[a,e.errors]),p.useEffect(()=>{e.shouldUnregister&&a._subjects.state.next({values:a._getWatch()})},[a,e.shouldUnregister]),p.useEffect(()=>{if(a._proxyFormState.isDirty){const o=a._getDirty();o!==i.isDirty&&a._subjects.state.next({isDirty:o})}},[a,i.isDirty]),p.useEffect(()=>{var o;e.values&&!ft(e.values,n.current)?(a._reset(e.values,{keepFieldsRef:!0,...a._options.resetOptions}),!((o=a._options.resetOptions)===null||o===void 0)&&o.keepIsValid||a._setValid(),n.current=e.values,r(s=>({...s}))):a._resetDefaultValues()},[a,e.values]),p.useEffect(()=>{a._state.mount||(a._setValid(),a._state.mount=!0),a._state.watch&&(a._state.watch=!1,a._subjects.state.next({...a._formState})),a._removeUnmounted()}),t.current.formState=p.useMemo(()=>hl(i,a),[a,i]),t.current}const $t={min:10,max:50,custom:[60,70,80,90,100]},Qe=[{ticker:"EUR_JPY",display_name:"EURJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/EUR.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"EUR JPY",type:"forex",session:"1700-1700"},{ticker:"GBP_JPY",display_name:"GBPJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"GBP JPY",type:"forex",session:"1700-1700"},{ticker:"AUD_JPY",display_name:"AUDJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/AUD.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"AUD JPY",type:"forex",session:"1700-1700"},{ticker:"NZD_JPY",display_name:"NZDJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/NZD.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"NZD JPY",type:"forex",session:"1700-1700"},{ticker:"CAD_JPY",display_name:"CADJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/CAD.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"CAD JPY",type:"forex",session:"1700-1700"},{ticker:"CHF_JPY",display_name:"CHFJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/CHF.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"CHF JPY",type:"forex",session:"1700-1700"},{ticker:"USD_JPY",display_name:"USDJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/USD.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"USD JPY",type:"forex",session:"1700-1700"},{ticker:"EUR_USD",display_name:"EURUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/EUR.svg","https://cdn.iccandle.ai/web-assets/USD.svg"],description:"EUR USD",type:"forex",session:"1700-1700"},{ticker:"AUD_USD",display_name:"AUDUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/AUD.svg","https://cdn.iccandle.ai/web-assets/USD.svg"],description:"AUD USD",type:"forex",session:"1700-1700"},{ticker:"NZD_USD",display_name:"NZDUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/NZD.svg","https://cdn.iccandle.ai/web-assets/USD.svg"],description:"NZD USD",type:"forex",session:"1700-1700"},{ticker:"USD_CHF",display_name:"USDCHF",logo_urls:["https://cdn.iccandle.ai/web-assets/USD.svg","https://cdn.iccandle.ai/web-assets/CHF.svg"],description:"USD CHF",type:"forex",session:"1700-1700"},{ticker:"USD_CAD",display_name:"USDCAD",logo_urls:["https://cdn.iccandle.ai/web-assets/USD.svg","https://cdn.iccandle.ai/web-assets/CAD.svg"],description:"USD CAD",type:"forex",session:"1700-1700"},{ticker:"GBP_AUD",display_name:"GBPAUD",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/AUD.svg"],description:"GBP AUD",type:"forex",session:"1700-1700"},{ticker:"GBP_CAD",display_name:"GBPCAD",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/CAD.svg"],description:"GBP CAD",type:"forex",session:"1700-1700"},{ticker:"GBP_CHF",display_name:"GBPCHF",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/CHF.svg"],description:"GBP CHF",type:"forex",session:"1700-1700"},{ticker:"GBP_NZD",display_name:"GBPNZD",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/NZD.svg"],description:"GBP NZD",type:"forex",session:"1700-1700"},{ticker:"GBP_USD",display_name:"GBPUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/USD.svg"],description:"GBP USD",type:"forex",session:"1700-1700"},{ticker:"NZD_CAD",display_name:"NZDCAD",logo_urls:["https://cdn.iccandle.ai/web-assets/NZD.svg","https://cdn.iccandle.ai/web-assets/CAD.svg"],description:"NZD CAD",type:"forex",session:"1700-1700"},{ticker:"EUR_CAD",display_name:"EURCAD",logo_urls:["https://cdn.iccandle.ai/web-assets/EUR.svg","https://cdn.iccandle.ai/web-assets/CAD.svg"],description:"EUR CAD",type:"forex",session:"1700-1700"},{ticker:"EUR_AUD",display_name:"EURAUD",logo_urls:["https://cdn.iccandle.ai/web-assets/EUR.svg","https://cdn.iccandle.ai/web-assets/AUD.svg"],description:"EUR AUD",type:"forex",session:"1700-1700"},{ticker:"XAU_USD",display_name:"XAUUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/XAU.svg"],description:"Gold",type:"commodity",session:"1700-1700"},{ticker:"BCO_USD",display_name:"BCOUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/BCO.svg"],description:"Brent Crude Oil",type:"commodity",session:"1700-1700"},{ticker:"SPX500_USD",display_name:"S&P500",logo_urls:["https://cdn.iccandle.ai/web-assets/SPX500.svg"],description:"S&P 500",type:"indices",session:"1700-1700"},{ticker:"NAS100_USD",display_name:"NASDAQ100",logo_urls:["https://cdn.iccandle.ai/web-assets/NAS100.svg"],description:"NASDAQ 100",type:"indices",session:"1700-1700"},{ticker:"US30_USD",display_name:"US30",logo_urls:["https://cdn.iccandle.ai/web-assets/US30.svg"],description:"US Wall St 30",type:"indices",session:"1700-1700"},{ticker:"BTCUSDT",display_name:"BTCUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/BTC.svg"],description:"BTCUSDT",type:"crypto",session:"24x7"},{ticker:"ETHUSDT",display_name:"ETHUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/ETH.svg"],description:"ETHUSDT",type:"crypto",session:"24x7"},{ticker:"XRPUSDT",display_name:"XRPUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/XRP.svg"],description:"XRPUSDT",type:"crypto",session:"24x7"},{ticker:"SOLUSDT",display_name:"SOLUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/SOL.svg"],description:"SOLUSDT",type:"crypto",session:"24x7"},{ticker:"ADAUSDT",display_name:"ADAUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/ADA.svg"],description:"ADAUSDT",type:"crypto",session:"24x7"},{ticker:"AVAUSDT",display_name:"AVAUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/AVA.svg"],description:"AVAUSDT",type:"crypto",session:"24x7"},{ticker:"AVAXUSDT",display_name:"AVAXUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/AVAX.svg"],description:"AVAXUSDT",type:"crypto",session:"24x7"},{ticker:"BNBUSDT",display_name:"BNBUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/BNB.svg"],description:"BNBUSDT",type:"crypto",session:"24x7"},{ticker:"DOGEUSDT",display_name:"DOGEUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/DOGE.svg"],description:"DOGEUSDT",type:"crypto",session:"24x7"},{ticker:"DOTUSDT",display_name:"DOTUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/DOT.svg"],description:"DOTUSDT",type:"crypto",session:"24x7"},{ticker:"TRXUSDT",display_name:"TRXUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/TRX.svg"],description:"TRXUSDT",type:"crypto",session:"24x7"},{ticker:"AAPL",display_name:"AAPL",logo_urls:["https://cdn.iccandle.ai/web-assets/AAPL.svg"],description:"Apple Inc.",type:"stock",session:"24x7"},{ticker:"AMZN",display_name:"AMZN",logo_urls:["https://cdn.iccandle.ai/web-assets/AMZN.svg"],description:"Amazon.Com Inc",type:"stock",session:"24x7"},{ticker:"BRK.B",display_name:"BRK.B",logo_urls:["https://cdn.iccandle.ai/web-assets/BRK.B.svg"],description:"BERKSHIRE HATHAWAY Class B",type:"stock",session:"24x7"},{ticker:"GOOGL",display_name:"GOOGL",logo_urls:["https://cdn.iccandle.ai/web-assets/GOOGL.svg"],description:"Alphabet Inc. Class A Common Stock",type:"stock",session:"24x7"},{ticker:"KO",display_name:"KO",logo_urls:["https://cdn.iccandle.ai/web-assets/KO.svg"],description:"Coca-Cola Company",type:"stock",session:"24x7"},{ticker:"META",display_name:"META",logo_urls:["https://cdn.iccandle.ai/web-assets/META.svg"],description:"Meta Platforms, Inc. Class A Common Stock",type:"stock",session:"24x7"},{ticker:"MSFT",display_name:"MSFT",logo_urls:["https://cdn.iccandle.ai/web-assets/MSFT.svg"],description:"Microsoft Corp",type:"stock",session:"24x7"},{ticker:"NFLX",display_name:"NFLX",logo_urls:["https://cdn.iccandle.ai/web-assets/NFLX.svg"],description:"NetFlix Inc",type:"stock",session:"24x7"},{ticker:"NKE",display_name:"NKE",logo_urls:["https://cdn.iccandle.ai/web-assets/NKE.svg"],description:"Nike, Inc.",type:"stock",session:"24x7"},{ticker:"NVDA",display_name:"NVDA",logo_urls:["https://cdn.iccandle.ai/web-assets/NVDA.svg"],description:"Nvidia Corp",type:"stock",session:"24x7"},{ticker:"TME",display_name:"TME",logo_urls:["https://cdn.iccandle.ai/web-assets/TME.svg"],description:"Tencent Music Entertainment Group American Depositary Shares, each representing two Class A Ordinary Shares",type:"stock",session:"24x7"},{ticker:"TSLA",display_name:"TSLA",logo_urls:["https://cdn.iccandle.ai/web-assets/TSLA.svg"],description:"Tesla, Inc. Common Stock",type:"stock",session:"24x7"},{ticker:"XAG_USD",display_name:"XAGUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/XAG.svg"],description:"Silver",type:"commodity",session:"1700-1700"},{ticker:"XCU_USD",display_name:"XCUUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/XCU.svg"],description:"Copper",type:"commodity",session:"1700-1700"}];function ko(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function xl(...e){return t=>{let n=!1;const i=e.map(r=>{const a=ko(r,t);return!n&&typeof a=="function"&&(n=!0),a});if(n)return()=>{for(let r=0;r<i.length;r++){const a=i[r];typeof a=="function"?a():ko(e[r],null)}}}}function Bt(...e){return F.useCallback(xl(...e),e)}function Pl(e){const t=rb(e),n=F.forwardRef((i,r)=>{const{children:a,...o}=i,s=F.Children.toArray(a),u=s.find(ob);if(u){const c=u.props.children,d=s.map(l=>l===u?F.Children.count(c)>1?F.Children.only(null):F.isValidElement(c)?c.props.children:null:l);return h.jsx(t,{...o,ref:r,children:F.isValidElement(c)?F.cloneElement(c,void 0,d):null})}return h.jsx(t,{...o,ref:r,children:a})});return n.displayName=`${e}.Slot`,n}var ib=Pl("Slot");function rb(e){const t=F.forwardRef((n,i)=>{const{children:r,...a}=n;if(F.isValidElement(r)){const o=lb(r),s=sb(a,r.props);return r.type!==F.Fragment&&(s.ref=i?xl(i,o):o),F.cloneElement(r,s)}return F.Children.count(r)>1?F.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Sl=Symbol("radix.slottable");function ab(e){const t=({children:n})=>h.jsx(h.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=Sl,t}function ob(e){return F.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Sl}function sb(e,t){const n={...t};for(const i in t){const r=e[i],a=t[i];/^on[A-Z]/.test(i)?r&&a?n[i]=(...s)=>{const u=a(...s);return r(...s),u}:r&&(n[i]=r):i==="style"?n[i]={...r,...a}:i==="className"&&(n[i]=[r,a].filter(Boolean).join(" "))}return{...e,...n}}function lb(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var cb=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],xt=cb.reduce((e,t)=>{const n=Pl(`Primitive.${t}`),i=F.forwardRef((r,a)=>{const{asChild:o,...s}=r,u=o?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(u,{...s,ref:a})});return i.displayName=`Primitive.${t}`,{...e,[t]:i}},{});function ub(e,t){e&&is.flushSync(()=>e.dispatchEvent(t))}var db=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),hb="VisuallyHidden",Tl=F.forwardRef((e,t)=>h.jsx(xt.span,{...e,ref:t,style:{...db,...e.style}}));Tl.displayName=hb;var pb=Tl;function ta(e,t=[]){let n=[];function i(a,o){const s=F.createContext(o),u=n.length;n=[...n,o];const c=l=>{const{scope:g,children:f,...m}=l,y=g?.[e]?.[u]||s,b=F.useMemo(()=>m,Object.values(m));return h.jsx(y.Provider,{value:b,children:f})};c.displayName=a+"Provider";function d(l,g){const f=g?.[e]?.[u]||s,m=F.useContext(f);if(m)return m;if(o!==void 0)return o;throw new Error(`\`${l}\` must be used within \`${a}\``)}return[c,d]}const r=()=>{const a=n.map(o=>F.createContext(o));return function(s){const u=s?.[e]||a;return F.useMemo(()=>({[`__scope${e}`]:{...s,[e]:u}}),[s,u])}};return r.scopeName=e,[i,mb(r,...t)]}function mb(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const i=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(a){const o=i.reduce((s,{useScope:u,scopeName:c})=>{const l=u(a)[`__scope${c}`];return{...s,...l}},{});return F.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return n.scopeName=t.scopeName,n}function pt(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}var Vt=globalThis?.document?F.useLayoutEffect:()=>{},fb=F[" useInsertionEffect ".trim().toString()]||Vt;function kl({prop:e,defaultProp:t,onChange:n=()=>{},caller:i}){const[r,a,o]=gb({defaultProp:t,onChange:n}),s=e!==void 0,u=s?e:r;{const d=F.useRef(e!==void 0);F.useEffect(()=>{const l=d.current;l!==s&&console.warn(`${i} is changing from ${l?"controlled":"uncontrolled"} to ${s?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=s},[s,i])}const c=F.useCallback(d=>{if(s){const l=yb(d)?d(e):d;l!==e&&o.current?.(l)}else a(d)},[s,e,a,o]);return[u,c]}function gb({defaultProp:e,onChange:t}){const[n,i]=F.useState(e),r=F.useRef(n),a=F.useRef(t);return fb(()=>{a.current=t},[t]),F.useEffect(()=>{r.current!==n&&(a.current?.(n),r.current=n)},[n,r]),[n,i,a]}function yb(e){return typeof e=="function"}function bb(e,t){return F.useReducer((n,i)=>t[n][i]??n,e)}var Li=e=>{const{present:t,children:n}=e,i=vb(t),r=typeof n=="function"?n({present:i.isPresent}):F.Children.only(n),a=Bt(i.ref,wb(r));return typeof n=="function"||i.isPresent?F.cloneElement(r,{ref:a}):null};Li.displayName="Presence";function vb(e){const[t,n]=F.useState(),i=F.useRef(null),r=F.useRef(e),a=F.useRef("none"),o=e?"mounted":"unmounted",[s,u]=bb(o,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return F.useEffect(()=>{const c=ai(i.current);a.current=s==="mounted"?c:"none"},[s]),Vt(()=>{const c=i.current,d=r.current;if(d!==e){const g=a.current,f=ai(c);e?u("MOUNT"):f==="none"||c?.display==="none"?u("UNMOUNT"):u(d&&g!==f?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,u]),Vt(()=>{if(t){let c;const d=t.ownerDocument.defaultView??window,l=f=>{const y=ai(i.current).includes(CSS.escape(f.animationName));if(f.target===t&&y&&(u("ANIMATION_END"),!r.current)){const b=t.style.animationFillMode;t.style.animationFillMode="forwards",c=d.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=b)})}},g=f=>{f.target===t&&(a.current=ai(i.current))};return t.addEventListener("animationstart",g),t.addEventListener("animationcancel",l),t.addEventListener("animationend",l),()=>{d.clearTimeout(c),t.removeEventListener("animationstart",g),t.removeEventListener("animationcancel",l),t.removeEventListener("animationend",l)}}else u("ANIMATION_END")},[t,u]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:F.useCallback(c=>{i.current=c?getComputedStyle(c):null,n(c)},[])}}function ai(e){return e?.animationName||"none"}function wb(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var xb=F[" useId ".trim().toString()]||(()=>{}),Pb=0;function Sb(e){const[t,n]=F.useState(xb());return Vt(()=>{n(i=>i??String(Pb++))},[e]),t?`radix-${t}`:""}function Fi(e){const t=F.useRef(e);return F.useEffect(()=>{t.current=e}),F.useMemo(()=>(...n)=>t.current?.(...n),[])}function Tb(e,t=globalThis?.document){const n=Fi(e);F.useEffect(()=>{const i=r=>{r.key==="Escape"&&n(r)};return t.addEventListener("keydown",i,{capture:!0}),()=>t.removeEventListener("keydown",i,{capture:!0})},[n,t])}var kb="DismissableLayer",Pr="dismissableLayer.update",Cb="dismissableLayer.pointerDownOutside",Ab="dismissableLayer.focusOutside",Co,Cl=F.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Al=F.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:i,onPointerDownOutside:r,onFocusOutside:a,onInteractOutside:o,onDismiss:s,...u}=e,c=F.useContext(Cl),[d,l]=F.useState(null),g=d?.ownerDocument??globalThis?.document,[,f]=F.useState({}),m=Bt(t,w=>l(w)),y=Array.from(c.layers),[b]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),x=y.indexOf(b),T=d?y.indexOf(d):-1,A=c.layersWithOutsidePointerEventsDisabled.size>0,S=T>=x,v=Rb(w=>{const P=w.target,M=[...c.branches].some(G=>G.contains(P));!S||M||(r?.(w),o?.(w),w.defaultPrevented||s?.())},g),D=Eb(w=>{const P=w.target;[...c.branches].some(G=>G.contains(P))||(a?.(w),o?.(w),w.defaultPrevented||s?.())},g);return Tb(w=>{T===c.layers.size-1&&(i?.(w),!w.defaultPrevented&&s&&(w.preventDefault(),s()))},g),F.useEffect(()=>{if(d)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(Co=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(d)),c.layers.add(d),Ao(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=Co)}},[d,g,n,c]),F.useEffect(()=>()=>{d&&(c.layers.delete(d),c.layersWithOutsidePointerEventsDisabled.delete(d),Ao())},[d,c]),F.useEffect(()=>{const w=()=>f({});return document.addEventListener(Pr,w),()=>document.removeEventListener(Pr,w)},[]),h.jsx(xt.div,{...u,ref:m,style:{pointerEvents:A?S?"auto":"none":void 0,...e.style},onFocusCapture:pt(e.onFocusCapture,D.onFocusCapture),onBlurCapture:pt(e.onBlurCapture,D.onBlurCapture),onPointerDownCapture:pt(e.onPointerDownCapture,v.onPointerDownCapture)})});Al.displayName=kb;var Nb="DismissableLayerBranch",Db=F.forwardRef((e,t)=>{const n=F.useContext(Cl),i=F.useRef(null),r=Bt(t,i);return F.useEffect(()=>{const a=i.current;if(a)return n.branches.add(a),()=>{n.branches.delete(a)}},[n.branches]),h.jsx(xt.div,{...e,ref:r})});Db.displayName=Nb;function Rb(e,t=globalThis?.document){const n=Fi(e),i=F.useRef(!1),r=F.useRef(()=>{});return F.useEffect(()=>{const a=s=>{if(s.target&&!i.current){let u=function(){Nl(Cb,n,c,{discrete:!0})};const c={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=u,t.addEventListener("click",r.current,{once:!0})):u()}else t.removeEventListener("click",r.current);i.current=!1},o=window.setTimeout(()=>{t.addEventListener("pointerdown",a)},0);return()=>{window.clearTimeout(o),t.removeEventListener("pointerdown",a),t.removeEventListener("click",r.current)}},[t,n]),{onPointerDownCapture:()=>i.current=!0}}function Eb(e,t=globalThis?.document){const n=Fi(e),i=F.useRef(!1);return F.useEffect(()=>{const r=a=>{a.target&&!i.current&&Nl(Ab,n,{originalEvent:a},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,n]),{onFocusCapture:()=>i.current=!0,onBlurCapture:()=>i.current=!1}}function Ao(){const e=new CustomEvent(Pr);document.dispatchEvent(e)}function Nl(e,t,n,{discrete:i}){const r=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),i?ub(r,a):r.dispatchEvent(a)}var Mb="Portal",Dl=F.forwardRef((e,t)=>{const{container:n,...i}=e,[r,a]=F.useState(!1);Vt(()=>a(!0),[]);const o=n||r&&globalThis?.document?.body;return o?Dt.createPortal(h.jsx(xt.div,{...i,ref:t}),o):null});Dl.displayName=Mb;function Ob(e){const t=F.useRef({value:e,previous:e});return F.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function Rl(e){const[t,n]=F.useState(void 0);return Vt(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const i=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const a=r[0];let o,s;if("borderBoxSize"in a){const u=a.borderBoxSize,c=Array.isArray(u)?u[0]:u;o=c.inlineSize,s=c.blockSize}else o=e.offsetWidth,s=e.offsetHeight;n({width:o,height:s})});return i.observe(e,{box:"border-box"}),()=>i.unobserve(e)}else n(void 0)},[e]),t}var Gi="Checkbox",[Ib]=ta(Gi),[Lb,na]=Ib(Gi);function Fb(e){const{__scopeCheckbox:t,checked:n,children:i,defaultChecked:r,disabled:a,form:o,name:s,onCheckedChange:u,required:c,value:d="on",internal_do_not_use_render:l}=e,[g,f]=kl({prop:n,defaultProp:r??!1,onChange:u,caller:Gi}),[m,y]=F.useState(null),[b,x]=F.useState(null),T=F.useRef(!1),A=m?!!o||!!m.closest("form"):!0,S={checked:g,disabled:a,setChecked:f,control:m,setControl:y,name:s,form:o,value:d,hasConsumerStoppedPropagationRef:T,required:c,defaultChecked:_t(r)?!1:r,isFormControl:A,bubbleInput:b,setBubbleInput:x};return h.jsx(Lb,{scope:t,...S,children:Gb(l)?l(S):i})}var El="CheckboxTrigger",Ml=F.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:n,...i},r)=>{const{control:a,value:o,disabled:s,checked:u,required:c,setControl:d,setChecked:l,hasConsumerStoppedPropagationRef:g,isFormControl:f,bubbleInput:m}=na(El,e),y=Bt(r,d),b=F.useRef(u);return F.useEffect(()=>{const x=a?.form;if(x){const T=()=>l(b.current);return x.addEventListener("reset",T),()=>x.removeEventListener("reset",T)}},[a,l]),h.jsx(xt.button,{type:"button",role:"checkbox","aria-checked":_t(u)?"mixed":u,"aria-required":c,"data-state":Bl(u),"data-disabled":s?"":void 0,disabled:s,value:o,...i,ref:y,onKeyDown:pt(t,x=>{x.key==="Enter"&&x.preventDefault()}),onClick:pt(n,x=>{l(T=>_t(T)?!0:!T),m&&f&&(g.current=x.isPropagationStopped(),g.current||x.stopPropagation())})})});Ml.displayName=El;var Ol=F.forwardRef((e,t)=>{const{__scopeCheckbox:n,name:i,checked:r,defaultChecked:a,required:o,disabled:s,value:u,onCheckedChange:c,form:d,...l}=e;return h.jsx(Fb,{__scopeCheckbox:n,checked:r,defaultChecked:a,disabled:s,required:o,onCheckedChange:c,name:i,form:d,value:u,internal_do_not_use_render:({isFormControl:g})=>h.jsxs(h.Fragment,{children:[h.jsx(Ml,{...l,ref:t,__scopeCheckbox:n}),g&&h.jsx(Gl,{__scopeCheckbox:n})]})})});Ol.displayName=Gi;var Il="CheckboxIndicator",Ll=F.forwardRef((e,t)=>{const{__scopeCheckbox:n,forceMount:i,...r}=e,a=na(Il,n);return h.jsx(Li,{present:i||_t(a.checked)||a.checked===!0,children:h.jsx(xt.span,{"data-state":Bl(a.checked),"data-disabled":a.disabled?"":void 0,...r,ref:t,style:{pointerEvents:"none",...e.style}})})});Ll.displayName=Il;var Fl="CheckboxBubbleInput",Gl=F.forwardRef(({__scopeCheckbox:e,...t},n)=>{const{control:i,hasConsumerStoppedPropagationRef:r,checked:a,defaultChecked:o,required:s,disabled:u,name:c,value:d,form:l,bubbleInput:g,setBubbleInput:f}=na(Fl,e),m=Bt(n,f),y=Ob(a),b=Rl(i);F.useEffect(()=>{const T=g;if(!T)return;const A=window.HTMLInputElement.prototype,v=Object.getOwnPropertyDescriptor(A,"checked").set,D=!r.current;if(y!==a&&v){const w=new Event("click",{bubbles:D});T.indeterminate=_t(a),v.call(T,_t(a)?!1:a),T.dispatchEvent(w)}},[g,y,a,r]);const x=F.useRef(_t(a)?!1:a);return h.jsx(xt.input,{type:"checkbox","aria-hidden":!0,defaultChecked:o??x.current,required:s,disabled:u,name:c,value:d,form:l,...t,tabIndex:-1,ref:m,style:{...t.style,...b,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});Gl.displayName=Fl;function Gb(e){return typeof e=="function"}function _t(e){return e==="indeterminate"}function Bl(e){return _t(e)?"indeterminate":e?"checked":"unchecked"}const Bb=["top","right","bottom","left"],Kt=Math.min,ot=Math.max,vi=Math.round,oi=Math.floor,Nt=e=>({x:e,y:e}),jb={left:"right",right:"left",bottom:"top",top:"bottom"},Ub={start:"end",end:"start"};function Sr(e,t,n){return ot(e,Kt(t,n))}function Ft(e,t){return typeof e=="function"?e(t):e}function Gt(e){return e.split("-")[0]}function Sn(e){return e.split("-")[1]}function ia(e){return e==="x"?"y":"x"}function ra(e){return e==="y"?"height":"width"}const zb=new Set(["top","bottom"]);function Ct(e){return zb.has(Gt(e))?"y":"x"}function aa(e){return ia(Ct(e))}function Hb(e,t,n){n===void 0&&(n=!1);const i=Sn(e),r=aa(e),a=ra(r);let o=r==="x"?i===(n?"end":"start")?"right":"left":i==="start"?"bottom":"top";return t.reference[a]>t.floating[a]&&(o=wi(o)),[o,wi(o)]}function Yb(e){const t=wi(e);return[Tr(e),t,Tr(t)]}function Tr(e){return e.replace(/start|end/g,t=>Ub[t])}const No=["left","right"],Do=["right","left"],qb=["top","bottom"],Wb=["bottom","top"];function _b(e,t,n){switch(e){case"top":case"bottom":return n?t?Do:No:t?No:Do;case"left":case"right":return t?qb:Wb;default:return[]}}function Vb(e,t,n,i){const r=Sn(e);let a=_b(Gt(e),n==="start",i);return r&&(a=a.map(o=>o+"-"+r),t&&(a=a.concat(a.map(Tr)))),a}function wi(e){return e.replace(/left|right|bottom|top/g,t=>jb[t])}function Kb(e){return{top:0,right:0,bottom:0,left:0,...e}}function jl(e){return typeof e!="number"?Kb(e):{top:e,right:e,bottom:e,left:e}}function xi(e){const{x:t,y:n,width:i,height:r}=e;return{width:i,height:r,top:n,left:t,right:t+i,bottom:n+r,x:t,y:n}}function Ro(e,t,n){let{reference:i,floating:r}=e;const a=Ct(t),o=aa(t),s=ra(o),u=Gt(t),c=a==="y",d=i.x+i.width/2-r.width/2,l=i.y+i.height/2-r.height/2,g=i[s]/2-r[s]/2;let f;switch(u){case"top":f={x:d,y:i.y-r.height};break;case"bottom":f={x:d,y:i.y+i.height};break;case"right":f={x:i.x+i.width,y:l};break;case"left":f={x:i.x-r.width,y:l};break;default:f={x:i.x,y:i.y}}switch(Sn(t)){case"start":f[o]-=g*(n&&c?-1:1);break;case"end":f[o]+=g*(n&&c?-1:1);break}return f}async function Jb(e,t){var n;t===void 0&&(t={});const{x:i,y:r,platform:a,rects:o,elements:s,strategy:u}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:l="floating",altBoundary:g=!1,padding:f=0}=Ft(t,e),m=jl(f),b=s[g?l==="floating"?"reference":"floating":l],x=xi(await a.getClippingRect({element:(n=await(a.isElement==null?void 0:a.isElement(b)))==null||n?b:b.contextElement||await(a.getDocumentElement==null?void 0:a.getDocumentElement(s.floating)),boundary:c,rootBoundary:d,strategy:u})),T=l==="floating"?{x:i,y:r,width:o.floating.width,height:o.floating.height}:o.reference,A=await(a.getOffsetParent==null?void 0:a.getOffsetParent(s.floating)),S=await(a.isElement==null?void 0:a.isElement(A))?await(a.getScale==null?void 0:a.getScale(A))||{x:1,y:1}:{x:1,y:1},v=xi(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:T,offsetParent:A,strategy:u}):T);return{top:(x.top-v.top+m.top)/S.y,bottom:(v.bottom-x.bottom+m.bottom)/S.y,left:(x.left-v.left+m.left)/S.x,right:(v.right-x.right+m.right)/S.x}}const Xb=async(e,t,n)=>{const{placement:i="bottom",strategy:r="absolute",middleware:a=[],platform:o}=n,s=a.filter(Boolean),u=await(o.isRTL==null?void 0:o.isRTL(t));let c=await o.getElementRects({reference:e,floating:t,strategy:r}),{x:d,y:l}=Ro(c,i,u),g=i,f={},m=0;for(let b=0;b<s.length;b++){var y;const{name:x,fn:T}=s[b],{x:A,y:S,data:v,reset:D}=await T({x:d,y:l,initialPlacement:i,placement:g,strategy:r,middlewareData:f,rects:c,platform:{...o,detectOverflow:(y=o.detectOverflow)!=null?y:Jb},elements:{reference:e,floating:t}});d=A??d,l=S??l,f={...f,[x]:{...f[x],...v}},D&&m<=50&&(m++,typeof D=="object"&&(D.placement&&(g=D.placement),D.rects&&(c=D.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:r}):D.rects),{x:d,y:l}=Ro(c,g,u)),b=-1)}return{x:d,y:l,placement:g,strategy:r,middlewareData:f}},Zb=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:i,placement:r,rects:a,platform:o,elements:s,middlewareData:u}=t,{element:c,padding:d=0}=Ft(e,t)||{};if(c==null)return{};const l=jl(d),g={x:n,y:i},f=aa(r),m=ra(f),y=await o.getDimensions(c),b=f==="y",x=b?"top":"left",T=b?"bottom":"right",A=b?"clientHeight":"clientWidth",S=a.reference[m]+a.reference[f]-g[f]-a.floating[m],v=g[f]-a.reference[f],D=await(o.getOffsetParent==null?void 0:o.getOffsetParent(c));let w=D?D[A]:0;(!w||!await(o.isElement==null?void 0:o.isElement(D)))&&(w=s.floating[A]||a.floating[m]);const P=S/2-v/2,M=w/2-y[m]/2-1,G=Kt(l[x],M),W=Kt(l[T],M),B=G,_=w-y[m]-W,V=w/2-y[m]/2+P,K=Sr(B,V,_),z=!u.arrow&&Sn(r)!=null&&V!==K&&a.reference[m]/2-(V<B?G:W)-y[m]/2<0,J=z?V<B?V-B:V-_:0;return{[f]:g[f]+J,data:{[f]:K,centerOffset:V-K-J,...z&&{alignmentOffset:J}},reset:z}}}),Qb=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,i;const{placement:r,middlewareData:a,rects:o,initialPlacement:s,platform:u,elements:c}=t,{mainAxis:d=!0,crossAxis:l=!0,fallbackPlacements:g,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:y=!0,...b}=Ft(e,t);if((n=a.arrow)!=null&&n.alignmentOffset)return{};const x=Gt(r),T=Ct(s),A=Gt(s)===s,S=await(u.isRTL==null?void 0:u.isRTL(c.floating)),v=g||(A||!y?[wi(s)]:Yb(s)),D=m!=="none";!g&&D&&v.push(...Vb(s,y,m,S));const w=[s,...v],P=await u.detectOverflow(t,b),M=[];let G=((i=a.flip)==null?void 0:i.overflows)||[];if(d&&M.push(P[x]),l){const V=Hb(r,o,S);M.push(P[V[0]],P[V[1]])}if(G=[...G,{placement:r,overflows:M}],!M.every(V=>V<=0)){var W,B;const V=(((W=a.flip)==null?void 0:W.index)||0)+1,K=w[V];if(K&&(!(l==="alignment"?T!==Ct(K):!1)||G.every(X=>Ct(X.placement)===T?X.overflows[0]>0:!0)))return{data:{index:V,overflows:G},reset:{placement:K}};let z=(B=G.filter(J=>J.overflows[0]<=0).sort((J,X)=>J.overflows[1]-X.overflows[1])[0])==null?void 0:B.placement;if(!z)switch(f){case"bestFit":{var _;const J=(_=G.filter(X=>{if(D){const re=Ct(X.placement);return re===T||re==="y"}return!0}).map(X=>[X.placement,X.overflows.filter(re=>re>0).reduce((re,C)=>re+C,0)]).sort((X,re)=>X[1]-re[1])[0])==null?void 0:_[0];J&&(z=J);break}case"initialPlacement":z=s;break}if(r!==z)return{reset:{placement:z}}}return{}}}};function Eo(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Mo(e){return Bb.some(t=>e[t]>=0)}const $b=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n,platform:i}=t,{strategy:r="referenceHidden",...a}=Ft(e,t);switch(r){case"referenceHidden":{const o=await i.detectOverflow(t,{...a,elementContext:"reference"}),s=Eo(o,n.reference);return{data:{referenceHiddenOffsets:s,referenceHidden:Mo(s)}}}case"escaped":{const o=await i.detectOverflow(t,{...a,altBoundary:!0}),s=Eo(o,n.floating);return{data:{escapedOffsets:s,escaped:Mo(s)}}}default:return{}}}}},Ul=new Set(["left","top"]);async function ev(e,t){const{placement:n,platform:i,elements:r}=e,a=await(i.isRTL==null?void 0:i.isRTL(r.floating)),o=Gt(n),s=Sn(n),u=Ct(n)==="y",c=Ul.has(o)?-1:1,d=a&&u?-1:1,l=Ft(t,e);let{mainAxis:g,crossAxis:f,alignmentAxis:m}=typeof l=="number"?{mainAxis:l,crossAxis:0,alignmentAxis:null}:{mainAxis:l.mainAxis||0,crossAxis:l.crossAxis||0,alignmentAxis:l.alignmentAxis};return s&&typeof m=="number"&&(f=s==="end"?m*-1:m),u?{x:f*d,y:g*c}:{x:g*c,y:f*d}}const tv=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,i;const{x:r,y:a,placement:o,middlewareData:s}=t,u=await ev(t,e);return o===((n=s.offset)==null?void 0:n.placement)&&(i=s.arrow)!=null&&i.alignmentOffset?{}:{x:r+u.x,y:a+u.y,data:{...u,placement:o}}}}},nv=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:i,placement:r,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:u={fn:x=>{let{x:T,y:A}=x;return{x:T,y:A}}},...c}=Ft(e,t),d={x:n,y:i},l=await a.detectOverflow(t,c),g=Ct(Gt(r)),f=ia(g);let m=d[f],y=d[g];if(o){const x=f==="y"?"top":"left",T=f==="y"?"bottom":"right",A=m+l[x],S=m-l[T];m=Sr(A,m,S)}if(s){const x=g==="y"?"top":"left",T=g==="y"?"bottom":"right",A=y+l[x],S=y-l[T];y=Sr(A,y,S)}const b=u.fn({...t,[f]:m,[g]:y});return{...b,data:{x:b.x-n,y:b.y-i,enabled:{[f]:o,[g]:s}}}}}},iv=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:i,placement:r,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:u=!0,crossAxis:c=!0}=Ft(e,t),d={x:n,y:i},l=Ct(r),g=ia(l);let f=d[g],m=d[l];const y=Ft(s,t),b=typeof y=="number"?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(u){const A=g==="y"?"height":"width",S=a.reference[g]-a.floating[A]+b.mainAxis,v=a.reference[g]+a.reference[A]-b.mainAxis;f<S?f=S:f>v&&(f=v)}if(c){var x,T;const A=g==="y"?"width":"height",S=Ul.has(Gt(r)),v=a.reference[l]-a.floating[A]+(S&&((x=o.offset)==null?void 0:x[l])||0)+(S?0:b.crossAxis),D=a.reference[l]+a.reference[A]+(S?0:((T=o.offset)==null?void 0:T[l])||0)-(S?b.crossAxis:0);m<v?m=v:m>D&&(m=D)}return{[g]:f,[l]:m}}}},rv=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,i;const{placement:r,rects:a,platform:o,elements:s}=t,{apply:u=()=>{},...c}=Ft(e,t),d=await o.detectOverflow(t,c),l=Gt(r),g=Sn(r),f=Ct(r)==="y",{width:m,height:y}=a.floating;let b,x;l==="top"||l==="bottom"?(b=l,x=g===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(x=l,b=g==="end"?"top":"bottom");const T=y-d.top-d.bottom,A=m-d.left-d.right,S=Kt(y-d[b],T),v=Kt(m-d[x],A),D=!t.middlewareData.shift;let w=S,P=v;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(P=A),(i=t.middlewareData.shift)!=null&&i.enabled.y&&(w=T),D&&!g){const G=ot(d.left,0),W=ot(d.right,0),B=ot(d.top,0),_=ot(d.bottom,0);f?P=m-2*(G!==0||W!==0?G+W:ot(d.left,d.right)):w=y-2*(B!==0||_!==0?B+_:ot(d.top,d.bottom))}await u({...t,availableWidth:P,availableHeight:w});const M=await o.getDimensions(s.floating);return m!==M.width||y!==M.height?{reset:{rects:!0}}:{}}}};function Bi(){return typeof window<"u"}function Tn(e){return zl(e)?(e.nodeName||"").toLowerCase():"#document"}function lt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Et(e){var t;return(t=(zl(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function zl(e){return Bi()?e instanceof Node||e instanceof lt(e).Node:!1}function bt(e){return Bi()?e instanceof Element||e instanceof lt(e).Element:!1}function Rt(e){return Bi()?e instanceof HTMLElement||e instanceof lt(e).HTMLElement:!1}function Oo(e){return!Bi()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof lt(e).ShadowRoot}const av=new Set(["inline","contents"]);function Vn(e){const{overflow:t,overflowX:n,overflowY:i,display:r}=vt(e);return/auto|scroll|overlay|hidden|clip/.test(t+i+n)&&!av.has(r)}const ov=new Set(["table","td","th"]);function sv(e){return ov.has(Tn(e))}const lv=[":popover-open",":modal"];function ji(e){return lv.some(t=>{try{return e.matches(t)}catch{return!1}})}const cv=["transform","translate","scale","rotate","perspective"],uv=["transform","translate","scale","rotate","perspective","filter"],dv=["paint","layout","strict","content"];function oa(e){const t=sa(),n=bt(e)?vt(e):e;return cv.some(i=>n[i]?n[i]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||uv.some(i=>(n.willChange||"").includes(i))||dv.some(i=>(n.contain||"").includes(i))}function hv(e){let t=Jt(e);for(;Rt(t)&&!wn(t);){if(oa(t))return t;if(ji(t))return null;t=Jt(t)}return null}function sa(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const pv=new Set(["html","body","#document"]);function wn(e){return pv.has(Tn(e))}function vt(e){return lt(e).getComputedStyle(e)}function Ui(e){return bt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Jt(e){if(Tn(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Oo(e)&&e.host||Et(e);return Oo(t)?t.host:t}function Hl(e){const t=Jt(e);return wn(t)?e.ownerDocument?e.ownerDocument.body:e.body:Rt(t)&&Vn(t)?t:Hl(t)}function jn(e,t,n){var i;t===void 0&&(t=[]),n===void 0&&(n=!0);const r=Hl(e),a=r===((i=e.ownerDocument)==null?void 0:i.body),o=lt(r);if(a){const s=kr(o);return t.concat(o,o.visualViewport||[],Vn(r)?r:[],s&&n?jn(s):[])}return t.concat(r,jn(r,[],n))}function kr(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Yl(e){const t=vt(e);let n=parseFloat(t.width)||0,i=parseFloat(t.height)||0;const r=Rt(e),a=r?e.offsetWidth:n,o=r?e.offsetHeight:i,s=vi(n)!==a||vi(i)!==o;return s&&(n=a,i=o),{width:n,height:i,$:s}}function la(e){return bt(e)?e:e.contextElement}function bn(e){const t=la(e);if(!Rt(t))return Nt(1);const n=t.getBoundingClientRect(),{width:i,height:r,$:a}=Yl(t);let o=(a?vi(n.width):n.width)/i,s=(a?vi(n.height):n.height)/r;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}const mv=Nt(0);function ql(e){const t=lt(e);return!sa()||!t.visualViewport?mv:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function fv(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==lt(e)?!1:t}function sn(e,t,n,i){t===void 0&&(t=!1),n===void 0&&(n=!1);const r=e.getBoundingClientRect(),a=la(e);let o=Nt(1);t&&(i?bt(i)&&(o=bn(i)):o=bn(e));const s=fv(a,n,i)?ql(a):Nt(0);let u=(r.left+s.x)/o.x,c=(r.top+s.y)/o.y,d=r.width/o.x,l=r.height/o.y;if(a){const g=lt(a),f=i&&bt(i)?lt(i):i;let m=g,y=kr(m);for(;y&&i&&f!==m;){const b=bn(y),x=y.getBoundingClientRect(),T=vt(y),A=x.left+(y.clientLeft+parseFloat(T.paddingLeft))*b.x,S=x.top+(y.clientTop+parseFloat(T.paddingTop))*b.y;u*=b.x,c*=b.y,d*=b.x,l*=b.y,u+=A,c+=S,m=lt(y),y=kr(m)}}return xi({width:d,height:l,x:u,y:c})}function zi(e,t){const n=Ui(e).scrollLeft;return t?t.left+n:sn(Et(e)).left+n}function Wl(e,t){const n=e.getBoundingClientRect(),i=n.left+t.scrollLeft-zi(e,n),r=n.top+t.scrollTop;return{x:i,y:r}}function gv(e){let{elements:t,rect:n,offsetParent:i,strategy:r}=e;const a=r==="fixed",o=Et(i),s=t?ji(t.floating):!1;if(i===o||s&&a)return n;let u={scrollLeft:0,scrollTop:0},c=Nt(1);const d=Nt(0),l=Rt(i);if((l||!l&&!a)&&((Tn(i)!=="body"||Vn(o))&&(u=Ui(i)),Rt(i))){const f=sn(i);c=bn(i),d.x=f.x+i.clientLeft,d.y=f.y+i.clientTop}const g=o&&!l&&!a?Wl(o,u):Nt(0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-u.scrollLeft*c.x+d.x+g.x,y:n.y*c.y-u.scrollTop*c.y+d.y+g.y}}function yv(e){return Array.from(e.getClientRects())}function bv(e){const t=Et(e),n=Ui(e),i=e.ownerDocument.body,r=ot(t.scrollWidth,t.clientWidth,i.scrollWidth,i.clientWidth),a=ot(t.scrollHeight,t.clientHeight,i.scrollHeight,i.clientHeight);let o=-n.scrollLeft+zi(e);const s=-n.scrollTop;return vt(i).direction==="rtl"&&(o+=ot(t.clientWidth,i.clientWidth)-r),{width:r,height:a,x:o,y:s}}const Io=25;function vv(e,t){const n=lt(e),i=Et(e),r=n.visualViewport;let a=i.clientWidth,o=i.clientHeight,s=0,u=0;if(r){a=r.width,o=r.height;const d=sa();(!d||d&&t==="fixed")&&(s=r.offsetLeft,u=r.offsetTop)}const c=zi(i);if(c<=0){const d=i.ownerDocument,l=d.body,g=getComputedStyle(l),f=d.compatMode==="CSS1Compat"&&parseFloat(g.marginLeft)+parseFloat(g.marginRight)||0,m=Math.abs(i.clientWidth-l.clientWidth-f);m<=Io&&(a-=m)}else c<=Io&&(a+=c);return{width:a,height:o,x:s,y:u}}const wv=new Set(["absolute","fixed"]);function xv(e,t){const n=sn(e,!0,t==="fixed"),i=n.top+e.clientTop,r=n.left+e.clientLeft,a=Rt(e)?bn(e):Nt(1),o=e.clientWidth*a.x,s=e.clientHeight*a.y,u=r*a.x,c=i*a.y;return{width:o,height:s,x:u,y:c}}function Lo(e,t,n){let i;if(t==="viewport")i=vv(e,n);else if(t==="document")i=bv(Et(e));else if(bt(t))i=xv(t,n);else{const r=ql(e);i={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return xi(i)}function _l(e,t){const n=Jt(e);return n===t||!bt(n)||wn(n)?!1:vt(n).position==="fixed"||_l(n,t)}function Pv(e,t){const n=t.get(e);if(n)return n;let i=jn(e,[],!1).filter(s=>bt(s)&&Tn(s)!=="body"),r=null;const a=vt(e).position==="fixed";let o=a?Jt(e):e;for(;bt(o)&&!wn(o);){const s=vt(o),u=oa(o);!u&&s.position==="fixed"&&(r=null),(a?!u&&!r:!u&&s.position==="static"&&!!r&&wv.has(r.position)||Vn(o)&&!u&&_l(e,o))?i=i.filter(d=>d!==o):r=s,o=Jt(o)}return t.set(e,i),i}function Sv(e){let{element:t,boundary:n,rootBoundary:i,strategy:r}=e;const o=[...n==="clippingAncestors"?ji(t)?[]:Pv(t,this._c):[].concat(n),i],s=o[0],u=o.reduce((c,d)=>{const l=Lo(t,d,r);return c.top=ot(l.top,c.top),c.right=Kt(l.right,c.right),c.bottom=Kt(l.bottom,c.bottom),c.left=ot(l.left,c.left),c},Lo(t,s,r));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function Tv(e){const{width:t,height:n}=Yl(e);return{width:t,height:n}}function kv(e,t,n){const i=Rt(t),r=Et(t),a=n==="fixed",o=sn(e,!0,a,t);let s={scrollLeft:0,scrollTop:0};const u=Nt(0);function c(){u.x=zi(r)}if(i||!i&&!a)if((Tn(t)!=="body"||Vn(r))&&(s=Ui(t)),i){const f=sn(t,!0,a,t);u.x=f.x+t.clientLeft,u.y=f.y+t.clientTop}else r&&c();a&&!i&&r&&c();const d=r&&!i&&!a?Wl(r,s):Nt(0),l=o.left+s.scrollLeft-u.x-d.x,g=o.top+s.scrollTop-u.y-d.y;return{x:l,y:g,width:o.width,height:o.height}}function or(e){return vt(e).position==="static"}function Fo(e,t){if(!Rt(e)||vt(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return Et(e)===n&&(n=n.ownerDocument.body),n}function Vl(e,t){const n=lt(e);if(ji(e))return n;if(!Rt(e)){let r=Jt(e);for(;r&&!wn(r);){if(bt(r)&&!or(r))return r;r=Jt(r)}return n}let i=Fo(e,t);for(;i&&sv(i)&&or(i);)i=Fo(i,t);return i&&wn(i)&&or(i)&&!oa(i)?n:i||hv(e)||n}const Cv=async function(e){const t=this.getOffsetParent||Vl,n=this.getDimensions,i=await n(e.floating);return{reference:kv(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function Av(e){return vt(e).direction==="rtl"}const Nv={convertOffsetParentRelativeRectToViewportRelativeRect:gv,getDocumentElement:Et,getClippingRect:Sv,getOffsetParent:Vl,getElementRects:Cv,getClientRects:yv,getDimensions:Tv,getScale:bn,isElement:bt,isRTL:Av};function Kl(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Dv(e,t){let n=null,i;const r=Et(e);function a(){var s;clearTimeout(i),(s=n)==null||s.disconnect(),n=null}function o(s,u){s===void 0&&(s=!1),u===void 0&&(u=1),a();const c=e.getBoundingClientRect(),{left:d,top:l,width:g,height:f}=c;if(s||t(),!g||!f)return;const m=oi(l),y=oi(r.clientWidth-(d+g)),b=oi(r.clientHeight-(l+f)),x=oi(d),A={rootMargin:-m+"px "+-y+"px "+-b+"px "+-x+"px",threshold:ot(0,Kt(1,u))||1};let S=!0;function v(D){const w=D[0].intersectionRatio;if(w!==u){if(!S)return o();w?o(!1,w):i=setTimeout(()=>{o(!1,1e-7)},1e3)}w===1&&!Kl(c,e.getBoundingClientRect())&&o(),S=!1}try{n=new IntersectionObserver(v,{...A,root:r.ownerDocument})}catch{n=new IntersectionObserver(v,A)}n.observe(e)}return o(!0),a}function Rv(e,t,n,i){i===void 0&&(i={});const{ancestorScroll:r=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:u=!1}=i,c=la(e),d=r||a?[...c?jn(c):[],...jn(t)]:[];d.forEach(x=>{r&&x.addEventListener("scroll",n,{passive:!0}),a&&x.addEventListener("resize",n)});const l=c&&s?Dv(c,n):null;let g=-1,f=null;o&&(f=new ResizeObserver(x=>{let[T]=x;T&&T.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var A;(A=f)==null||A.observe(t)})),n()}),c&&!u&&f.observe(c),f.observe(t));let m,y=u?sn(e):null;u&&b();function b(){const x=sn(e);y&&!Kl(y,x)&&n(),y=x,m=requestAnimationFrame(b)}return n(),()=>{var x;d.forEach(T=>{r&&T.removeEventListener("scroll",n),a&&T.removeEventListener("resize",n)}),l?.(),(x=f)==null||x.disconnect(),f=null,u&&cancelAnimationFrame(m)}}const Ev=tv,Mv=nv,Ov=Qb,Iv=rv,Lv=$b,Go=Zb,Fv=iv,Gv=(e,t,n)=>{const i=new Map,r={platform:Nv,...n},a={...r.platform,_c:i};return Xb(e,t,{...r,platform:a})};var Bv=typeof document<"u",jv=function(){},ui=Bv?p.useLayoutEffect:jv;function Pi(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,i,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(i=n;i--!==0;)if(!Pi(e[i],t[i]))return!1;return!0}if(r=Object.keys(e),n=r.length,n!==Object.keys(t).length)return!1;for(i=n;i--!==0;)if(!{}.hasOwnProperty.call(t,r[i]))return!1;for(i=n;i--!==0;){const a=r[i];if(!(a==="_owner"&&e.$$typeof)&&!Pi(e[a],t[a]))return!1}return!0}return e!==e&&t!==t}function Jl(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Bo(e,t){const n=Jl(e);return Math.round(t*n)/n}function sr(e){const t=F.useRef(e);return ui(()=>{t.current=e}),t}function Uv(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:i=[],platform:r,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:u,open:c}=e,[d,l]=F.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[g,f]=F.useState(i);Pi(g,i)||f(i);const[m,y]=F.useState(null),[b,x]=F.useState(null),T=F.useCallback(X=>{X!==D.current&&(D.current=X,y(X))},[]),A=F.useCallback(X=>{X!==w.current&&(w.current=X,x(X))},[]),S=a||m,v=o||b,D=F.useRef(null),w=F.useRef(null),P=F.useRef(d),M=u!=null,G=sr(u),W=sr(r),B=sr(c),_=F.useCallback(()=>{if(!D.current||!w.current)return;const X={placement:t,strategy:n,middleware:g};W.current&&(X.platform=W.current),Gv(D.current,w.current,X).then(re=>{const C={...re,isPositioned:B.current!==!1};V.current&&!Pi(P.current,C)&&(P.current=C,is.flushSync(()=>{l(C)}))})},[g,t,n,W,B]);ui(()=>{c===!1&&P.current.isPositioned&&(P.current.isPositioned=!1,l(X=>({...X,isPositioned:!1})))},[c]);const V=F.useRef(!1);ui(()=>(V.current=!0,()=>{V.current=!1}),[]),ui(()=>{if(S&&(D.current=S),v&&(w.current=v),S&&v){if(G.current)return G.current(S,v,_);_()}},[S,v,_,G,M]);const K=F.useMemo(()=>({reference:D,floating:w,setReference:T,setFloating:A}),[T,A]),z=F.useMemo(()=>({reference:S,floating:v}),[S,v]),J=F.useMemo(()=>{const X={position:n,left:0,top:0};if(!z.floating)return X;const re=Bo(z.floating,d.x),C=Bo(z.floating,d.y);return s?{...X,transform:"translate("+re+"px, "+C+"px)",...Jl(z.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:re,top:C}},[n,s,z.floating,d.x,d.y]);return F.useMemo(()=>({...d,update:_,refs:K,elements:z,floatingStyles:J}),[d,_,K,z,J])}const zv=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:i,padding:r}=typeof e=="function"?e(n):e;return i&&t(i)?i.current!=null?Go({element:i.current,padding:r}).fn(n):{}:i?Go({element:i,padding:r}).fn(n):{}}}},Hv=(e,t)=>({...Ev(e),options:[e,t]}),Yv=(e,t)=>({...Mv(e),options:[e,t]}),qv=(e,t)=>({...Fv(e),options:[e,t]}),Wv=(e,t)=>({...Ov(e),options:[e,t]}),_v=(e,t)=>({...Iv(e),options:[e,t]}),Vv=(e,t)=>({...Lv(e),options:[e,t]}),Kv=(e,t)=>({...zv(e),options:[e,t]});var Jv="Arrow",Xl=F.forwardRef((e,t)=>{const{children:n,width:i=10,height:r=5,...a}=e;return h.jsx(xt.svg,{...a,ref:t,width:i,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:h.jsx("polygon",{points:"0,0 30,0 15,10"})})});Xl.displayName=Jv;var Xv=Xl,ca="Popper",[Zl,Ql]=ta(ca),[Zv,$l]=Zl(ca),ec=e=>{const{__scopePopper:t,children:n}=e,[i,r]=F.useState(null);return h.jsx(Zv,{scope:t,anchor:i,onAnchorChange:r,children:n})};ec.displayName=ca;var tc="PopperAnchor",nc=F.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:i,...r}=e,a=$l(tc,n),o=F.useRef(null),s=Bt(t,o),u=F.useRef(null);return F.useEffect(()=>{const c=u.current;u.current=i?.current||o.current,c!==u.current&&a.onAnchorChange(u.current)}),i?null:h.jsx(xt.div,{...r,ref:s})});nc.displayName=tc;var ua="PopperContent",[Qv,$v]=Zl(ua),ic=F.forwardRef((e,t)=>{const{__scopePopper:n,side:i="bottom",sideOffset:r=0,align:a="center",alignOffset:o=0,arrowPadding:s=0,avoidCollisions:u=!0,collisionBoundary:c=[],collisionPadding:d=0,sticky:l="partial",hideWhenDetached:g=!1,updatePositionStrategy:f="optimized",onPlaced:m,...y}=e,b=$l(ua,n),[x,T]=F.useState(null),A=Bt(t,I=>T(I)),[S,v]=F.useState(null),D=Rl(S),w=D?.width??0,P=D?.height??0,M=i+(a!=="center"?"-"+a:""),G=typeof d=="number"?d:{top:0,right:0,bottom:0,left:0,...d},W=Array.isArray(c)?c:[c],B=W.length>0,_={padding:G,boundary:W.filter(tw),altBoundary:B},{refs:V,floatingStyles:K,placement:z,isPositioned:J,middlewareData:X}=Uv({strategy:"fixed",placement:M,whileElementsMounted:(...I)=>Rv(...I,{animationFrame:f==="always"}),elements:{reference:b.anchor},middleware:[Hv({mainAxis:r+P,alignmentAxis:o}),u&&Yv({mainAxis:!0,crossAxis:!1,limiter:l==="partial"?qv():void 0,..._}),u&&Wv({..._}),_v({..._,apply:({elements:I,rects:q,availableWidth:$,availableHeight:ie})=>{const{width:de,height:Z}=q.reference,be=I.floating.style;be.setProperty("--radix-popper-available-width",`${$}px`),be.setProperty("--radix-popper-available-height",`${ie}px`),be.setProperty("--radix-popper-anchor-width",`${de}px`),be.setProperty("--radix-popper-anchor-height",`${Z}px`)}}),S&&Kv({element:S,padding:s}),nw({arrowWidth:w,arrowHeight:P}),g&&Vv({strategy:"referenceHidden",..._})]}),[re,C]=oc(z),k=Fi(m);Vt(()=>{J&&k?.()},[J,k]);const Y=X.arrow?.x,L=X.arrow?.y,R=X.arrow?.centerOffset!==0,[j,E]=F.useState();return Vt(()=>{x&&E(window.getComputedStyle(x).zIndex)},[x]),h.jsx("div",{ref:V.setFloating,"data-radix-popper-content-wrapper":"",style:{...K,transform:J?K.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:j,"--radix-popper-transform-origin":[X.transformOrigin?.x,X.transformOrigin?.y].join(" "),...X.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:h.jsx(Qv,{scope:n,placedSide:re,onArrowChange:v,arrowX:Y,arrowY:L,shouldHideArrow:R,children:h.jsx(xt.div,{"data-side":re,"data-align":C,...y,ref:A,style:{...y.style,animation:J?void 0:"none"}})})})});ic.displayName=ua;var rc="PopperArrow",ew={top:"bottom",right:"left",bottom:"top",left:"right"},ac=F.forwardRef(function(t,n){const{__scopePopper:i,...r}=t,a=$v(rc,i),o=ew[a.placedSide];return h.jsx("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[o]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0},children:h.jsx(Xv,{...r,ref:n,style:{...r.style,display:"block"}})})});ac.displayName=rc;function tw(e){return e!==null}var nw=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:i,middlewareData:r}=t,o=r.arrow?.centerOffset!==0,s=o?0:e.arrowWidth,u=o?0:e.arrowHeight,[c,d]=oc(n),l={start:"0%",center:"50%",end:"100%"}[d],g=(r.arrow?.x??0)+s/2,f=(r.arrow?.y??0)+u/2;let m="",y="";return c==="bottom"?(m=o?l:`${g}px`,y=`${-u}px`):c==="top"?(m=o?l:`${g}px`,y=`${i.floating.height+u}px`):c==="right"?(m=`${-u}px`,y=o?l:`${f}px`):c==="left"&&(m=`${i.floating.width+u}px`,y=o?l:`${f}px`),{data:{x:m,y}}}});function oc(e){const[t,n="center"]=e.split("-");return[t,n]}var iw=ec,rw=nc,aw=ic,ow=ac,[Hi]=ta("Tooltip",[Ql]),Yi=Ql(),sc="TooltipProvider",sw=700,Cr="tooltip.open",[lw,da]=Hi(sc),lc=e=>{const{__scopeTooltip:t,delayDuration:n=sw,skipDelayDuration:i=300,disableHoverableContent:r=!1,children:a}=e,o=F.useRef(!0),s=F.useRef(!1),u=F.useRef(0);return F.useEffect(()=>{const c=u.current;return()=>window.clearTimeout(c)},[]),h.jsx(lw,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:F.useCallback(()=>{window.clearTimeout(u.current),o.current=!1},[]),onClose:F.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>o.current=!0,i)},[i]),isPointerInTransitRef:s,onPointerInTransitChange:F.useCallback(c=>{s.current=c},[]),disableHoverableContent:r,children:a})};lc.displayName=sc;var Un="Tooltip",[cw,Kn]=Hi(Un),cc=e=>{const{__scopeTooltip:t,children:n,open:i,defaultOpen:r,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,u=da(Un,e.__scopeTooltip),c=Yi(t),[d,l]=F.useState(null),g=Sb(),f=F.useRef(0),m=o??u.disableHoverableContent,y=s??u.delayDuration,b=F.useRef(!1),[x,T]=kl({prop:i,defaultProp:r??!1,onChange:w=>{w?(u.onOpen(),document.dispatchEvent(new CustomEvent(Cr))):u.onClose(),a?.(w)},caller:Un}),A=F.useMemo(()=>x?b.current?"delayed-open":"instant-open":"closed",[x]),S=F.useCallback(()=>{window.clearTimeout(f.current),f.current=0,b.current=!1,T(!0)},[T]),v=F.useCallback(()=>{window.clearTimeout(f.current),f.current=0,T(!1)},[T]),D=F.useCallback(()=>{window.clearTimeout(f.current),f.current=window.setTimeout(()=>{b.current=!0,T(!0),f.current=0},y)},[y,T]);return F.useEffect(()=>()=>{f.current&&(window.clearTimeout(f.current),f.current=0)},[]),h.jsx(iw,{...c,children:h.jsx(cw,{scope:t,contentId:g,open:x,stateAttribute:A,trigger:d,onTriggerChange:l,onTriggerEnter:F.useCallback(()=>{u.isOpenDelayedRef.current?D():S()},[u.isOpenDelayedRef,D,S]),onTriggerLeave:F.useCallback(()=>{m?v():(window.clearTimeout(f.current),f.current=0)},[v,m]),onOpen:S,onClose:v,disableHoverableContent:m,children:n})})};cc.displayName=Un;var Ar="TooltipTrigger",uc=F.forwardRef((e,t)=>{const{__scopeTooltip:n,...i}=e,r=Kn(Ar,n),a=da(Ar,n),o=Yi(n),s=F.useRef(null),u=Bt(t,s,r.onTriggerChange),c=F.useRef(!1),d=F.useRef(!1),l=F.useCallback(()=>c.current=!1,[]);return F.useEffect(()=>()=>document.removeEventListener("pointerup",l),[l]),h.jsx(rw,{asChild:!0,...o,children:h.jsx(xt.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...i,ref:u,onPointerMove:pt(e.onPointerMove,g=>{g.pointerType!=="touch"&&!d.current&&!a.isPointerInTransitRef.current&&(r.onTriggerEnter(),d.current=!0)}),onPointerLeave:pt(e.onPointerLeave,()=>{r.onTriggerLeave(),d.current=!1}),onPointerDown:pt(e.onPointerDown,()=>{r.open&&r.onClose(),c.current=!0,document.addEventListener("pointerup",l,{once:!0})}),onFocus:pt(e.onFocus,()=>{c.current||r.onOpen()}),onBlur:pt(e.onBlur,r.onClose),onClick:pt(e.onClick,r.onClose)})})});uc.displayName=Ar;var ha="TooltipPortal",[uw,dw]=Hi(ha,{forceMount:void 0}),dc=e=>{const{__scopeTooltip:t,forceMount:n,children:i,container:r}=e,a=Kn(ha,t);return h.jsx(uw,{scope:t,forceMount:n,children:h.jsx(Li,{present:n||a.open,children:h.jsx(Dl,{asChild:!0,container:r,children:i})})})};dc.displayName=ha;var xn="TooltipContent",hc=F.forwardRef((e,t)=>{const n=dw(xn,e.__scopeTooltip),{forceMount:i=n.forceMount,side:r="top",...a}=e,o=Kn(xn,e.__scopeTooltip);return h.jsx(Li,{present:i||o.open,children:o.disableHoverableContent?h.jsx(pc,{side:r,...a,ref:t}):h.jsx(hw,{side:r,...a,ref:t})})}),hw=F.forwardRef((e,t)=>{const n=Kn(xn,e.__scopeTooltip),i=da(xn,e.__scopeTooltip),r=F.useRef(null),a=Bt(t,r),[o,s]=F.useState(null),{trigger:u,onClose:c}=n,d=r.current,{onPointerInTransitChange:l}=i,g=F.useCallback(()=>{s(null),l(!1)},[l]),f=F.useCallback((m,y)=>{const b=m.currentTarget,x={x:m.clientX,y:m.clientY},T=yw(x,b.getBoundingClientRect()),A=bw(x,T),S=vw(y.getBoundingClientRect()),v=xw([...A,...S]);s(v),l(!0)},[l]);return F.useEffect(()=>()=>g(),[g]),F.useEffect(()=>{if(u&&d){const m=b=>f(b,d),y=b=>f(b,u);return u.addEventListener("pointerleave",m),d.addEventListener("pointerleave",y),()=>{u.removeEventListener("pointerleave",m),d.removeEventListener("pointerleave",y)}}},[u,d,f,g]),F.useEffect(()=>{if(o){const m=y=>{const b=y.target,x={x:y.clientX,y:y.clientY},T=u?.contains(b)||d?.contains(b),A=!ww(x,o);T?g():A&&(g(),c())};return document.addEventListener("pointermove",m),()=>document.removeEventListener("pointermove",m)}},[u,d,o,c,g]),h.jsx(pc,{...e,ref:a})}),[pw,mw]=Hi(Un,{isInside:!1}),fw=ab("TooltipContent"),pc=F.forwardRef((e,t)=>{const{__scopeTooltip:n,children:i,"aria-label":r,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,u=Kn(xn,n),c=Yi(n),{onClose:d}=u;return F.useEffect(()=>(document.addEventListener(Cr,d),()=>document.removeEventListener(Cr,d)),[d]),F.useEffect(()=>{if(u.trigger){const l=g=>{g.target?.contains(u.trigger)&&d()};return window.addEventListener("scroll",l,{capture:!0}),()=>window.removeEventListener("scroll",l,{capture:!0})}},[u.trigger,d]),h.jsx(Al,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:l=>l.preventDefault(),onDismiss:d,children:h.jsxs(aw,{"data-state":u.stateAttribute,...c,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[h.jsx(fw,{children:i}),h.jsx(pw,{scope:n,isInside:!0,children:h.jsx(pb,{id:u.contentId,role:"tooltip",children:r||i})})]})})});hc.displayName=xn;var mc="TooltipArrow",gw=F.forwardRef((e,t)=>{const{__scopeTooltip:n,...i}=e,r=Yi(n);return mw(mc,n).isInside?null:h.jsx(ow,{...r,...i,ref:t})});gw.displayName=mc;function yw(e,t){const n=Math.abs(t.top-e.y),i=Math.abs(t.bottom-e.y),r=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,i,r,a)){case a:return"left";case r:return"right";case n:return"top";case i:return"bottom";default:throw new Error("unreachable")}}function bw(e,t,n=5){const i=[];switch(t){case"top":i.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":i.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":i.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":i.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return i}function vw(e){const{top:t,right:n,bottom:i,left:r}=e;return[{x:r,y:t},{x:n,y:t},{x:n,y:i},{x:r,y:i}]}function ww(e,t){const{x:n,y:i}=e;let r=!1;for(let a=0,o=t.length-1;a<t.length;o=a++){const s=t[a],u=t[o],c=s.x,d=s.y,l=u.x,g=u.y;d>i!=g>i&&n<(l-c)*(i-d)/(g-d)+c&&(r=!r)}return r}function xw(e){const t=e.slice();return t.sort((n,i)=>n.x<i.x?-1:n.x>i.x?1:n.y<i.y?-1:n.y>i.y?1:0),Pw(t)}function Pw(e){if(e.length<=1)return e.slice();const t=[];for(let i=0;i<e.length;i++){const r=e[i];for(;t.length>=2;){const a=t[t.length-1],o=t[t.length-2];if((a.x-o.x)*(r.y-o.y)>=(a.y-o.y)*(r.x-o.x))t.pop();else break}t.push(r)}t.pop();const n=[];for(let i=e.length-1;i>=0;i--){const r=e[i];for(;n.length>=2;){const a=n[n.length-1],o=n[n.length-2];if((a.x-o.x)*(r.y-o.y)>=(a.y-o.y)*(r.x-o.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Sw=lc,Tw=cc,kw=uc,Cw=dc,fc=hc;function Aw({className:e,...t}){return h.jsx(Ol,{"data-slot":"checkbox",className:yt("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:h.jsx(Ll,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:h.jsx(an,{className:"size-3.5"})})})}const Nw=({delayDuration:e=0,...t})=>h.jsx(Sw,{delayDuration:e,...t}),Dw=Tw,Rw=kw,gc=F.forwardRef(({className:e,sideOffset:t=4,container:n,...i},r)=>h.jsx(Cw,{container:n??void 0,children:h.jsx(fc,{ref:r,sideOffset:t,className:yt("bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[200] overflow-visible rounded-md border px-3 py-1.5 text-sm shadow-md",e),...i})}));gc.displayName=fc.displayName;const Ln=({title:e,description:t="",lines:n,side:i="bottom",className:r,size:a=21})=>{const o=p.useRef(null),[s,u]=p.useState(!1),[c,d]=p.useState(null),l=p.useCallback(f=>{o.current=f;const m=f?.closest(".iccandle-selector-widget")??document.body;d(y=>y===m?y:m)},[]),g=()=>{u(f=>!f)};return p.useEffect(()=>{const f=m=>{o.current&&!o.current.contains(m.target)&&u(!1)};return document.addEventListener("mouseover",f),()=>{document.removeEventListener("mouseover",f)}},[]),h.jsx(Nw,{children:h.jsxs(Dw,{open:s,children:[h.jsx(Rw,{asChild:!0,children:h.jsx("div",{onMouseEnter:g,className:"cursor-pointer",ref:l,children:h.jsx(qu,{size:a,className:yt("iccandle-info-tooltip-icon",r==="text-muted-foreground"&&"iccandle-info-tooltip-icon--muted",r)})})}),h.jsx(gc,{side:i,sideOffset:5,container:c,className:"iccandle-info-tooltip-content",children:h.jsxs("div",{className:"iccandle-info-tooltip-content__inner",children:[h.jsx("h4",{className:"iccandle-info-tooltip-content__title",children:e}),n?h.jsx("div",{className:"iccandle-info-tooltip-content__body",children:n.map(f=>h.jsxs("p",{className:"iccandle-info-tooltip-content__line",children:[h.jsx("span",{className:"iccandle-info-tooltip-content__line-label",children:f.label})," ",f.text]},f.label))}):t!==""&&h.jsx("p",{className:"iccandle-info-tooltip-content__description",children:t})]})})]})})};function Fn({value:e,options:t,onChange:n,isLocked:i,getLabel:r,onUpgradeClick:a,wrapClassName:o,open:s,onOpenChange:u}){const{t:c}=nt(),d=p.useRef(null),l=p.useRef(null),g=p.useRef(null),[f,m]=p.useState(null),[y,b]=p.useState(null),x=p.useCallback(v=>{d.current=v;const D=v?.closest(".iccandle-selector-widget")??document.body;m(w=>w===D?w:D)},[]),T=p.useCallback(()=>{u(!1),b(null)},[u]),A=p.useCallback(()=>{const v=l.current;if(!v)return;const D=v.getBoundingClientRect(),w=4,P=240,M=window.innerHeight-D.bottom-w-8,G=D.top-8,W=M<Math.min(P,160)&&G>M,B=Math.max(120,Math.min(P,W?G:M));b(W?{bottom:window.innerHeight-D.top+w,left:D.left,width:D.width,maxHeight:B}:{top:D.bottom+w,left:D.left,width:D.width,maxHeight:B})},[]);p.useLayoutEffect(()=>{if(!s)return;A();const v=()=>A();return window.addEventListener("resize",v),window.addEventListener("scroll",v,!0),()=>{window.removeEventListener("resize",v),window.removeEventListener("scroll",v,!0)}},[s,A]),p.useEffect(()=>{if(!s)return;const v=w=>{const P=w.target;P&&(d.current?.contains(P)||g.current?.contains(P)||T())},D=w=>{w.key==="Escape"&&T()};return document.addEventListener("mousedown",v),document.addEventListener("keydown",D),()=>{document.removeEventListener("mousedown",v),document.removeEventListener("keydown",D)}},[T,s]);const S=s&&f&&y?Dt.createPortal(h.jsx("div",{ref:g,className:"iccandle-scanner-ai-settings__dropdown",role:"listbox",style:{...y.top!==void 0?{top:y.top}:{bottom:y.bottom},left:y.left,width:y.width,maxHeight:y.maxHeight},children:t.map(v=>{const D=i?.(v)??!1;return h.jsxs("div",{role:"option","aria-selected":v===e,className:`iccandle-scanner-ai-settings__dropdown-item${D?" iccandle-scanner-ai-settings__dropdown-item--locked":""}`,onClick:()=>{D||(n(v),T())},children:[h.jsx("span",{className:D?"is-disabled":void 0,children:r(v)}),D?h.jsx("span",{className:"iccandle-scanner-ai-settings__upgrade-btn-wrap ai-gradient-border",children:h.jsx("button",{type:"button",className:"iccandle-scanner-ai-settings__upgrade-btn",onMouseDown:w=>{w.stopPropagation(),w.preventDefault(),T(),a?.()},children:c("Common.upgradePlan")})}):null]},String(v))})}),f):null;return h.jsxs("div",{ref:x,className:`iccandle-scanner-ai-settings__select-wrap${s?" iccandle-scanner-ai-settings__select-wrap--open":""}`,children:[h.jsx("div",{className:o,children:h.jsxs("button",{ref:l,type:"button",className:"iccandle-scanner-ai-settings__select-trigger","aria-expanded":s,"aria-haspopup":"listbox",onClick:()=>{if(s){T();return}u(!0)},children:[h.jsx("span",{children:r(e)}),h.jsx(us,{className:`iccandle-scanner-ai-settings__trigger-chevron${s?" iccandle-scanner-ai-settings__trigger-chevron--open":""}`,"aria-hidden":!0})]})}),S]})}const Ew=[{label:"15M",value:"15"},{label:"30M",value:"30"},{label:"1H",value:"60"},{label:"2H",value:"120"},{label:"4H",value:"240"},{label:"1D",value:"1D"}],Mw=[{labelKey:"Selector.periodAll",value:0},{labelKey:"Selector.periodLastYear",value:1},{labelKey:"Selector.periodLast3Years",value:3},{labelKey:"Selector.periodLast5Years",value:5},{labelKey:"Selector.periodLast15Years",value:15}],Ow=[0,1,3,5,15],Iw=["15","30","60","120","240","1D"],Lw=[.5,1,1.5],Fw=({control:e,temperature:t,onTemperatureChange:n})=>{const{t:i}=nt(),[r,a]=p.useState(null),o=p.useCallback(d=>l=>{a(l?d:null)},[]),s=p.useMemo(()=>{const d=new Map;for(const l of Mw)d.set(l.value,i(l.labelKey));return d},[i]),u=p.useMemo(()=>{const d=new Map;for(const l of Ew)d.set(l.value,l.label);return d},[]),c=p.useCallback(d=>i(d===.5?"News.temperatureLow":d===1?"News.temperatureMedium":"News.temperatureHigh"),[i]);return h.jsxs("div",{className:"iccandle-scanner-advanced-options",children:[h.jsxs("div",{className:"iccandle-scanner-advanced-options__row",children:[h.jsxs("label",{className:"iccandle-scanner-advanced-options__label",children:[i("Selector.period"),h.jsx(Ln,{title:i("Selector.period"),description:i("Selector.periodTooltip"),side:"right",size:16,className:"text-muted-foreground"})]}),h.jsx(wr,{control:e,name:"period",render:({field:d})=>h.jsx(Fn,{value:d.value??0,options:Ow,onChange:l=>d.onChange(l),getLabel:l=>s.get(l)??String(l),open:r==="period",onOpenChange:o("period")})})]}),h.jsxs("div",{className:"iccandle-scanner-advanced-options__row",children:[h.jsxs("label",{className:"iccandle-scanner-advanced-options__label",children:[i("Common.timeframe"),h.jsx(Ln,{title:i("Common.timeframe"),description:i("Selector.timeframeTooltip"),side:"right",size:16,className:"text-muted-foreground"})]}),h.jsx(wr,{control:e,name:"timeframe",render:({field:d})=>h.jsx(Fn,{value:d.value,options:Iw,onChange:l=>d.onChange(l),getLabel:l=>u.get(l)??l,open:r==="timeframe",onOpenChange:o("timeframe")})})]}),h.jsxs("div",{className:"iccandle-scanner-advanced-options__row",children:[h.jsxs("label",{className:"iccandle-scanner-advanced-options__label",children:[i("Selector.aiTemperature"),h.jsx(Ln,{title:i("Selector.aiTemperature"),description:i("Selector.aiTemperatureTooltip"),side:"right",size:16,className:"text-muted-foreground"})]}),h.jsx(Fn,{value:t,options:Lw,onChange:n,getLabel:c,open:r==="temperature",onOpenChange:o("temperature")})]})]})},Nr=({name:e})=>{const t=Qe?.find(n=>n.ticker===e)?.logo_urls.map(n=>n)||[];return h.jsxs("div",{className:"iccandle-forexIcons",children:[t.length===1&&h.jsx("img",{src:t[0],alt:"forex icon",width:24,height:24,className:"iccandle-forexIcons__img iccandle-forexIcons__img--single"}),t.length===2&&h.jsxs(h.Fragment,{children:[h.jsx("img",{src:t[0],alt:"forex icon 1",width:18,height:18,className:"iccandle-forexIcons__img iccandle-forexIcons__img--left"}),h.jsx("img",{src:t[1],alt:"forex icon 2",width:18,height:18,className:"iccandle-forexIcons__img iccandle-forexIcons__img--right"})]})]})},jo=["forex","crypto","indices","commodity","stock"],Gw=3,Bw={commodity:"Layout.helperBar.groupCommodity",forex:"Layout.helperBar.groupForex",crypto:"Layout.helperBar.groupCrypto",indices:"Layout.helperBar.groupIndices",stock:"Layout.helperBar.groupStock"};function Uo({state:e}){return e==="all"?h.jsx("div",{className:"iccandle-scanner-symbol-search__check iccandle-scanner-symbol-search__check--on",children:h.jsx(an,{className:"h-3 w-3"})}):e==="some"?h.jsx("div",{className:"iccandle-scanner-symbol-search__check iccandle-scanner-symbol-search__check--on",children:h.jsx(hs,{className:"h-3 w-3"})}):h.jsx("div",{className:"iccandle-scanner-symbol-search__check"})}const yc=p.memo(function({searchTerm:t,onSearchChange:n,selectedSymbols:i,onSymbolChange:r,onGroupChange:a,filteredSymbols:o,selectedCount:s,allSymbols:u}){const{t:c}=nt(),d=p.useRef(null),l=p.useRef(null),g=p.useRef(null),f=p.useRef(null),[m,y]=p.useState(!1),[b,x]=p.useState(null),[T,A]=p.useState(null),[S,v]=p.useState({}),D=p.useCallback(E=>{d.current=E;const I=E?.closest(".iccandle-selector-widget")??document.body;x(q=>q===I?q:I)},[]),w=p.useCallback(()=>{const E=l.current;if(!E)return;const I=E.getBoundingClientRect(),q=4,$=384,ie=window.innerHeight-I.bottom-q-8,de=I.top-8,Z=ie<Math.min($,240)&&de>ie,be=Math.max(160,Math.min($,Z?de:ie)),Ce=Z?Math.max(8,I.top-q-be):I.bottom+q;A({top:Ce,left:I.left,width:I.width,maxHeight:be})},[]),P=p.useMemo(()=>(u??o??[]).filter(I=>i[I.ticker]),[u,o,i]),M=P.slice(0,Gw),G=P.length-M.length,W=p.useMemo(()=>{const E=new Set;for(const I of P)E.add(I.type);return E},[P]),B=p.useMemo(()=>{const E=new Map;for(const I of jo)E.set(I,[]);return o?.forEach(I=>{const q=I.type;E.has(q)||E.set(q,[]),E.get(q).push(I)}),jo.map(I=>({type:I,symbols:E.get(I)??[]})).filter(I=>I.symbols.length>0)},[o]),_=p.useMemo(()=>B.flatMap(E=>E.symbols),[B]),V=p.useCallback(E=>{if(E.length===0)return"none";const I=E.filter(q=>i[q.ticker]).length;return I===0?"none":I===E.length?"all":"some"},[i]),K=p.useCallback(E=>t.trim().length>0?!0:Object.prototype.hasOwnProperty.call(S,E)?S[E]===!0:W.has(E),[S,W,t]),z=p.useCallback(E=>{const I=K(E);v(q=>({...q,[E]:!I}))},[K]),J=p.useCallback(E=>{r(E,!i[E])},[r,i]),X=p.useCallback(E=>{const I=E.map($=>$.ticker),q=V(E)!=="all";a(I,q)},[V,a]),re=p.useCallback(()=>{const E=_.map(q=>q.ticker),I=V(_)!=="all";a(E,I)},[_,V,a]),C=p.useCallback((E,I)=>{I.preventDefault(),I.stopPropagation(),r(E,!1)},[r]),k=p.useCallback(()=>{y(!1),A(null),n("")},[n]),Y=p.useCallback(E=>{if(E){y(!0);return}k()},[k]);p.useLayoutEffect(()=>{if(!m)return;w();const E=()=>w();return window.addEventListener("resize",E),window.addEventListener("scroll",E,!0),()=>{window.removeEventListener("resize",E),window.removeEventListener("scroll",E,!0)}},[m,w]),p.useEffect(()=>{if(!m)return;const E=q=>{const $=q.target;$&&(d.current?.contains($)||g.current?.contains($)||k())},I=q=>{q.key==="Escape"&&k()};return document.addEventListener("mousedown",E),document.addEventListener("keydown",I),()=>{document.removeEventListener("mousedown",E),document.removeEventListener("keydown",I)}},[k,m]),p.useEffect(()=>{if(!m)return;const E=requestAnimationFrame(()=>{f.current?.focus()});return()=>cancelAnimationFrame(E)},[m]);const L=V(_),R=s<=1?c("Pattern.symbolSelected",{count:s}):c("Pattern.symbolsSelected",{count:s}),j=m&&b&&T?Dt.createPortal(h.jsxs("div",{ref:g,className:"iccandle-scanner-symbol-search__popover",role:"listbox","aria-multiselectable":!0,style:{top:T.top,left:T.left,width:T.width,maxHeight:T.maxHeight},children:[h.jsxs("div",{className:"iccandle-scanner-symbol-search__search",children:[h.jsx(ps,{className:"iccandle-scanner-symbol-search__search-icon"}),h.jsx("input",{ref:f,type:"text",className:"iccandle-scanner-symbol-search__command-input",placeholder:c("Selector.searchSymbol"),value:t,onChange:E=>n(E.target.value.toUpperCase()),"aria-label":c("Selector.searchSymbol")})]}),h.jsxs("div",{className:"iccandle-scanner-symbol-search__command-list",style:{maxHeight:Math.max(120,T.maxHeight-48)},children:[t.trim()&&_.length===0?h.jsx("div",{className:"iccandle-scanner-symbol-search__empty",children:c("Selector.noResultsFound")}):null,_.length>0?h.jsxs("div",{className:"iccandle-scanner-symbol-search__select-all",children:[h.jsx("button",{type:"button",className:"iccandle-scanner-symbol-search__group-check-btn",onClick:re,"aria-label":c("Selector.selectAll"),children:h.jsx(Uo,{state:L})}),h.jsx("button",{type:"button",className:"iccandle-scanner-symbol-search__group-label-btn",onClick:re,children:c("Selector.selectAll")})]}):null,B.map(E=>{const I=V(E.symbols),q=K(E.type),$=c(Bw[E.type]);return h.jsxs("div",{className:"iccandle-scanner-symbol-search__group",children:[h.jsxs("div",{className:"iccandle-scanner-symbol-search__group-row",children:[h.jsx("button",{type:"button",className:"iccandle-scanner-symbol-search__group-check-btn",onClick:ie=>{ie.preventDefault(),ie.stopPropagation(),X(E.symbols)},"aria-label":`${c("Selector.selectAll")} ${$}`,children:h.jsx(Uo,{state:I})}),h.jsxs("button",{type:"button",className:"iccandle-scanner-symbol-search__group-expand-btn",onClick:()=>z(E.type),"aria-expanded":q,children:[h.jsx("span",{children:$}),h.jsx(us,{className:yt("h-4 w-4 transition-transform",!q&&"-rotate-90")})]})]}),q?E.symbols.map(ie=>{const de=!!i[ie.ticker];return h.jsxs("button",{type:"button",role:"option","aria-selected":de,className:"iccandle-scanner-symbol-search__item",onClick:()=>J(ie.ticker),children:[h.jsx("div",{className:yt("iccandle-scanner-symbol-search__check",de&&"iccandle-scanner-symbol-search__check--on"),children:de?h.jsx(an,{className:"h-3 w-3"}):null}),h.jsx(Nr,{name:ie.ticker}),h.jsx("div",{className:"iccandle-scanner-symbol-search__item-label",children:ie.display_name})]},ie.ticker)}):null]},E.type)})]})]}),b):null;return h.jsxs("div",{ref:D,className:"iccandle-scanner-symbol-search iccandle-scanner-symbol-search--combobox",children:[h.jsxs("button",{ref:l,type:"button",role:"combobox","aria-expanded":m,"aria-haspopup":"listbox",className:"iccandle-scanner-symbol-search__trigger",onClick:()=>Y(!m),children:[h.jsx("div",{className:"iccandle-scanner-symbol-search__chips",children:P.length===0?h.jsx("span",{className:"iccandle-scanner-symbol-search__placeholder",children:c("Selector.searchSymbol")}):h.jsxs(h.Fragment,{children:[M.map(E=>h.jsxs("span",{className:"iccandle-scanner-symbol-search__chip",children:[h.jsx("span",{className:"iccandle-scanner-symbol-search__chip-icon",children:h.jsx(Nr,{name:E.ticker})}),h.jsx("span",{className:"iccandle-scanner-symbol-search__chip-label",children:E.display_name}),h.jsx("span",{role:"button",tabIndex:0,"aria-label":`Remove ${E.display_name}`,className:"iccandle-scanner-symbol-search__chip-remove",onClick:I=>C(E.ticker,I),onKeyDown:I=>{(I.key==="Enter"||I.key===" ")&&(I.preventDefault(),I.stopPropagation(),r(E.ticker,!1))},children:h.jsx(Ai,{className:"h-2.5 w-2.5"})})]},E.ticker)),G>0?h.jsxs("span",{className:"iccandle-scanner-symbol-search__chip-overflow",children:["+",G]}):null]})}),h.jsxs("div",{className:"iccandle-scanner-symbol-search__trigger-meta",children:[h.jsx("span",{children:R}),h.jsx(ds,{className:"h-4 w-4 opacity-60"})]})]}),j]})}),jw=[10,30,50,80,100,150,200],Uw=({control:e,userResultLimit:t,model:n,isProModelEnabled:i,onModelChange:r,onUpgradeClick:a})=>{const{t:o}=nt(),[s,u]=p.useState(null);return h.jsxs("div",{className:"iccandle-scanner-ai-settings",children:[h.jsxs("div",{className:"iccandle-scanner-ai-settings__row",children:[h.jsxs("label",{className:"iccandle-scanner-ai-settings__label",children:[o("Selector.result"),h.jsx(Ln,{title:o("Selector.result"),description:o("Selector.topResultsTooltip"),side:"right",size:16,className:"text-muted-foreground"})]}),h.jsx(wr,{control:e,name:"top_k",render:({field:c})=>h.jsx(Fn,{value:c.value??30,options:jw,onChange:d=>c.onChange(d),isLocked:d=>d>t,getLabel:d=>String(d),onUpgradeClick:a,open:s==="top_k",onOpenChange:d=>u(d?"top_k":null)})})]}),h.jsxs("div",{className:"iccandle-scanner-ai-settings__row",children:[h.jsxs("div",{className:"iccandle-scanner-ai-settings__label",children:[o("Selector.aiModel"),h.jsx(Ln,{title:o("Selector.aiModel"),lines:[{label:"CSE Light",text:o("Selector.aiModelTooltipLight")},{label:"CSE Pro",text:o("Selector.aiModelTooltipPro")}],side:"right",size:16,className:"text-muted-foreground"})]}),h.jsx(Fn,{value:n,options:["light","pro"],onChange:r,isLocked:c=>c==="pro"&&!i,getLabel:c=>c==="light"?"CSE Light":"CSE Pro",onUpgradeClick:a,wrapClassName:"ai-gradient-border",open:s==="model",onOpenChange:c=>u(c?"model":null)})]})]})},mn={free:30,standard:50,pro:100,expert:200};function zw(){const e=Oi();return Object.keys(e).length>0?e:null}function Hw(e,t){return e?.symbols?.length?e.symbols.reduce((n,i)=>(n[i]=!0,n),{}):t?{[t]:!0}:{}}function Yw(e,t){return e?.symbols?.length?e.symbols:t?[t]:[]}function qw(e,t){return e?.timeframe?e.timeframe:t==="1"||t==="5"?"60":t||"60"}const Ww=({intent:e,onCancel:t,onScanConfigSaved:n,onUpgradeClick:i,setResolution:r,timeframe:a,currentSymbol:o})=>{const{t:s}=nt(),[u,c]=p.useState(()=>localStorage.getItem("iccandle_token")?null:"free"),d=mn[u??"free"]??mn.free,l=u==="pro"||u==="expert",[g,f]=p.useState(()=>Ws()),[m]=p.useState(zw),y=m?.top_k??30,[b,x]=p.useState(""),T=p.useDeferredValue(b),[A,S]=p.useState(!1),[v,D]=p.useState(()=>{const L=m?.model??"light";return!localStorage.getItem("iccandle_token")&&L==="pro"?"light":L}),[w,P]=p.useState(m?.temperature??1),[M,G]=p.useState(()=>Hw(m,o)),W=wl({defaultValues:{probability:m?.probability??0,top_k:localStorage.getItem("iccandle_token")?y:Math.min(mn.free,y),timeframe:qw(m,a),period:m?.period??0,symbols:Yw(m,o)}}),B=Mn({control:W.control,name:"symbols"});p.useEffect(()=>{const L=localStorage.getItem("iccandle_token");L&&Me.get(`${Eh}/credits/v1/me`,{headers:{Authorization:`Bearer ${L}`}}).then(({data:R})=>{const j=R?.user_credit?.plan?.toLowerCase()||"free";c(j);const E=mn[j]??mn.free;W.setValue("top_k",Math.min(E,y)),j==="pro"||j==="expert"||D(q=>q==="pro"?"light":q)}).catch(()=>{c("free"),W.setValue("top_k",Math.min(mn.free,y)),D(R=>R==="pro"?"light":R)})},[W,y]);const _=p.useMemo(()=>{const L=new Map;return Qe.forEach(R=>{L.set(R.ticker,R.logo_urls)}),L},[]),V=p.useMemo(()=>{const L=T.toLowerCase();return Qe.filter(R=>R.display_name.toLowerCase().includes(L))},[T]),K=p.useMemo(()=>Object.values(M).filter(Boolean).length,[M]),z=p.useCallback(L=>{const R=Object.entries(L).filter(([j,E])=>E).map(([j])=>j);W.setValue("symbols",R,{shouldValidate:!1})},[W]);p.useEffect(()=>{W.clearErrors("symbols")},[e,W]),p.useEffect(()=>{(B?.length??0)>0&&W.clearErrors("symbols")},[B,W]),p.useEffect(()=>{const L=R=>{R.key==="Escape"&&t()};return window.addEventListener("keydown",L),()=>window.removeEventListener("keydown",L)},[t]);const J=p.useCallback((L,R)=>{G(j=>{const E={...j,[L]:R};return z(E),E})},[z]),X=p.useCallback((L,R)=>{G(j=>{const E={...j};for(const I of L)E[I]=R;return z(E),E})},[z]),re=W.formState.errors.symbols?.message,C=L=>{const R=L.symbols??[];if(R.length===0){W.setError("symbols",{type:"manual",message:s("Pattern.signalDialog.selectOneSymbol")}),setTimeout(()=>{W.clearErrors("symbols")},1800);return}const j=Array.from(new Set(Qe.filter(q=>R.includes(q.ticker)).map(q=>q.type))),E=Qe.every(q=>M[q.ticker])??!1,I={probability:0,top_k:L.top_k,timeframe:L.timeframe,period:L.period,symbols:R,symbolTypes:j,isAllSelected:E,model:v,temperature:w};zg(I),ro(g),r(L.timeframe),t(),e==="settings"?yn({title:s("Common.success"),description:s("Selector.searchFilterSaved"),variant:"success"}):n?.()},k=L=>{L.preventDefault(),W.handleSubmit(C)()},Y=s(e==="scan"?"Selector.scan":"Selector.saveOptions");return h.jsxs("div",{className:"iccandle-scanner-settings",children:[h.jsxs("div",{className:"iccandle-scanner-settings__header",children:[h.jsxs("div",{className:"iccandle-scanner-settings__title-wrap",children:[h.jsx("div",{className:"iccandle-scanner-settings__title",children:s("Selector.scannerOptions")}),h.jsx("div",{className:"iccandle-scanner-settings__description",children:s("Selector.scannerOptionsDescription")})]}),h.jsx("button",{type:"button",onClick:t,className:"iccandle-scanner-option__close-btn","aria-label":s("Common.close"),children:h.jsx(Ai,{size:20})})]}),h.jsx("form",{onSubmit:k,className:"iccandle-scanner-settings__form",id:"scanner-option-form",children:h.jsxs("div",{className:"iccandle-scanner-settings__body",children:[h.jsxs("section",{className:"iccandle-scanner-settings__section",children:[h.jsx("h3",{className:"iccandle-scanner-settings__section-title",children:s("Selector.tabSymbols")}),h.jsx(yc,{searchTerm:b,onSearchChange:x,selectedSymbols:M,onSymbolChange:J,onGroupChange:X,filteredSymbols:V,selectedCount:K,logoByTicker:_,allSymbols:Qe})]}),h.jsx("section",{className:"iccandle-scanner-settings__section",children:h.jsx(Uw,{control:W.control,userResultLimit:d,model:v,isProModelEnabled:l,onModelChange:D,onUpgradeClick:i})}),h.jsxs("section",{className:"iccandle-scanner-settings__section",children:[h.jsxs("button",{type:"button",className:"iccandle-scanner-settings__accordion-trigger","aria-expanded":A,onClick:()=>S(L=>!L),children:[h.jsx("span",{children:s("Selector.tabAdvancedOptions")}),h.jsx("span",{className:yt("iccandle-scanner-settings__accordion-caret",A&&"iccandle-scanner-settings__accordion-caret--open")})]}),A?h.jsx("div",{className:"iccandle-scanner-settings__accordion-content",children:h.jsx(Fw,{control:W.control,temperature:w,onTemperatureChange:P})}):null]})]})}),h.jsxs("div",{className:"iccandle-scanner-option__footer",children:[re?h.jsx("p",{className:"iccandle-scanner-option__error",children:re}):null,h.jsxs("div",{className:"iccandle-scanner-option__actions",children:[h.jsxs("div",{className:"iccandle-scanner-option__always-show",children:[h.jsx(Aw,{id:"scanner-always-show",checked:g,onCheckedChange:L=>{const R=L===!0;f(R),ro(R)}}),h.jsx("label",{htmlFor:"scanner-always-show",className:"iccandle-scanner-option__always-show-label",children:s("Selector.alwaysShow")})]}),h.jsxs("div",{className:"iccandle-scanner-option__buttons",children:[h.jsx("button",{type:"button",className:"iccandle-scanner-option__btn iccandle-scanner-option__btn--outline",onClick:t,children:s("Common.back")}),h.jsxs("button",{type:"submit",form:"scanner-option-form",className:yt("iccandle-scanner-option__btn iccandle-scanner-option__btn--primary",e==="scan"&&"iccandle-scanner-option__btn--scan"),children:[e==="scan"&&h.jsx(ms,{size:14,color:"#ffb84d"}),Y]})]})]})]})]})},_w=({intent:e,handleCloseDialog:t,timeframe:n,setResolution:i,currentSymbol:r,onScanConfigSaved:a,onUpgradeClick:o})=>h.jsx("div",{className:"iccandle-scanner-option",role:"dialog","aria-modal":"true",onPointerDown:s=>{s.target===s.currentTarget&&t()},children:h.jsx("div",{className:"iccandle-scanner-option__card",onPointerDown:s=>s.stopPropagation(),children:h.jsx(Ww,{intent:e,onCancel:t,onScanConfigSaved:a,onUpgradeClick:o,setResolution:i,timeframe:n,currentSymbol:r})})});function Vw(e,t){p.useEffect(()=>{const n=async({origin:i,data:r})=>{if(i!==rn||typeof r!="string")return;let a;try{a=JSON.parse(r)}catch{return}if(a.name!=="news.selectedEventPayloads")return;const o=a.data??[],s=JSON.parse(localStorage.getItem(pi)||"[]"),u=e?.activeChart?.();await e?.headerReady(),o.length<s.length&&await new Promise(c=>{setTimeout(()=>{u?.clearMarks(2),c(!0)},150)}),localStorage.setItem(pi,JSON.stringify(o)),u?.refreshMarks();try{if(t.current&&t.current.length>0&&(t.current.forEach(c=>{try{u?.removeEntity(c)}catch{}}),t.current=[]),o.length===0)return;for(const c of o)try{const d=await u?.createShape({time:Math.floor(c.timestamp/1e3)},{shape:"vertical_line",lock:!0,disableSelection:!0,overrides:{linestyle:2,linewidth:1}});d&&(u?.getShapeById(d)?.setSavingEnabled(!1),t.current.push(d))}catch{}}catch{}};return window.addEventListener("message",n),()=>window.removeEventListener("message",n)},[e,t])}function Kw(e,t,n=1){if(t===0||!isFinite(t))return n;const i=e/t;return isFinite(i)?i:n}function zo(e){if(e.length===0)return 0;const t=[...e].sort((i,r)=>i-r),n=Math.floor(t.length/2);return t.length%2!==0?t[n]:(t[n-1]+t[n])/2}function Jw(e,t,n=[]){if(e.length===0)return[];const i=n.map(d=>Math.abs(d.c-d.o)),r=e.map(d=>Math.abs(d.c-d.o)),a=zo(r),o=zo(i),s=Kw(o,a),u=e[0].o,c=t.c;return e.map(d=>{const l=(d.o-u)*s+c,g=(d.h-u)*s+c,f=(d.l-u)*s+c,m=(d.c-u)*s+c;return{o:l,h:Math.max(g,l,m),l:Math.min(f,l,m),c:m}})}const di=8,bc=4,Dr=6,Rr=5,vc=e=>{const t=new Date(e+di*60*60*1e3),n=t.getUTCDay(),i=t.getUTCHours();return n===0?!1:n===1?i>=Dr:n===6?i<bc:i!==Rr},wc=e=>{const t=new Date(e+di*60*60*1e3),n=t.getUTCDay(),i=t.getUTCHours();if(n===0||n===1&&i<Dr||n===6&&i>=bc){const r=(8-n)%7;return t.setUTCDate(t.getUTCDate()+r),t.setUTCHours(Dr,0,0,0),t.getTime()-di*60*60*1e3}return n>=2&&n<=5&&i===Rr?(t.setUTCHours(Rr+1,0,0,0),t.getTime()-di*60*60*1e3):e},Xw=(e,t,n)=>{const i=gt(t)*1e3,r=[];let a=e;for(let o=0;o<n;o++)a+=i,vc(a)||(a=wc(a)),r.push(a);return r},Ho=(e,t,n,i)=>{if(n<=0)return[];if(i==="24x7"){const a=gt(t)*1e3;return Array.from({length:n},(o,s)=>e+(s+1)*a)}if(i==="1700-1700")return Xw(e,t,n);const r=gt(t)*1e3;return Array.from({length:n},(a,o)=>e+(o+1)*r)},Zw=(e,t,n,i)=>{if(i==="24x7"){const a=gt(n)*1e3;return Math.max(0,Math.floor((t-e)/a))}if(i==="1700-1700"){const a=gt(n)*1e3;let o=0,s=e;for(;s<t;)s+=a,vc(s)||(s=wc(s)),s<=t&&o++;return o}const r=gt(n)*1e3;return Math.max(0,Math.floor((t-e)/r))},Yo=e=>{let t;const n=new Set,i=(c,d)=>{const l=typeof c=="function"?c(t):c;if(!Object.is(l,t)){const g=t;t=d??(typeof l!="object"||l===null)?l:Object.assign({},t,l),n.forEach(f=>f(t,g))}},r=()=>t,s={setState:i,getState:r,getInitialState:()=>u,subscribe:c=>(n.add(c),()=>n.delete(c))},u=t=e(i,r,s);return s},Qw=(e=>e?Yo(e):Yo),$w=e=>e;function ex(e,t=$w){const n=p.useSyncExternalStore(e.subscribe,p.useCallback(()=>t(e.getState()),[e,t]),p.useCallback(()=>t(e.getInitialState()),[e,t]));return p.useDebugValue(n),n}const qo=e=>{const t=Qw(e),n=i=>ex(t,i);return Object.assign(n,t),n},xc=(e=>e?qo(e):qo);xc(e=>({patterns:[],setPatterns:t=>e({patterns:t}),addPattern:t=>e(n=>({patterns:[...n.patterns,t]})),removePattern:t=>e(n=>({patterns:n.patterns.filter(i=>i.id!==t)})),clearPatterns:()=>e({patterns:[]})}));const je=xc((e,t)=>({activeTab:"patterns",setActiveTab:n=>e({activeTab:n}),selectedPattern:null,setSelectedPattern:n=>e({selectedPattern:n}),playEndTimestamp:null,setPlayEndTimestamp:n=>e(()=>({playEndTimestamp:n})),getPlayEndTimestamp:()=>t().playEndTimestamp,targetCandles:[],setTargetCandles:n=>e({targetCandles:n}),gapCount:0,setGapCount:n=>e({gapCount:n})}));let Er=null,Mr=!1,Pc=!1;function tx(e){return typeof e=="function"&&typeof e.onReady!="function"}function nx(e){if(typeof e?.onReady!="function")throw new Error("withPlayChart: expected a TradingView datafeed object with onReady(). If you use a factory, call it first: withPlayChart(yourDataFeed(...)) or pass factory args: withPlayChart(yourDataFeed, arg1, arg2).")}function ix(e){return Er=e,t=>{!Mr&&Pc||e(t)}}function Wo(e){nx(e);const t=e.subscribeBars?.bind(e);return t?Object.assign(Object.create(Object.getPrototypeOf(e)),e,{subscribeBars(n,i,r,a,o){return t(n,i,ix(r),a,o)}}):e}function rx(e,...t){if(tx(e)){if(t.length>0)return Wo(e(...t));throw new Error("withPlayChart: received a datafeed factory. Call it before passing to TradingView: withPlayChart(yourDataFeed(...)) or pass factory arguments: withPlayChart(yourDataFeed, arg1, arg2).")}return Wo(e)}function At(e){Pc=e}function _o(e){if(!Er)return!1;Mr=!0;try{Er(e)}finally{Mr=!1}return!0}let Sc=[];const lr=e=>{Sc=e},ax=()=>Sc,Si=e=>e>1e11?e:e*1e3,Tc=(e,t)=>{const n=Si(e);return t.find(i=>Si(i.time)===n)},Or="Generated Candles - By iC Candle",Ir="Generated Candles Background - By iC Candle",qi="revealed_count",kc={id:qi,name:"Revealed Count",type:"integer",defval:0,isHidden:!0,min:0},Cc=e=>{const t=Math.max(0,Number(e(0))||0);return ax().slice(0,t)},Ac=(e,t)=>!!Tc(e,t),ox=({id:e,description:t,shortDescription:n,isHiddenStudy:i,bodyColors:r,wickColors:a,borderColors:o})=>({_metainfoVersion:51,id:e,description:t,shortDescription:n,isCustomIndicator:!0,is_hidden_study:i,is_price_study:!0,linkedToSeries:!0,format:{type:"price",precision:2},inputs:[kc],palettes:{palette_bar:{colors:{0:{name:"Bullish"},1:{name:"Bearish"}},valToIndex:{0:0,1:1}},palette_wick:{colors:{0:{name:"Bullish Wick"},1:{name:"Bearish Wick"}},valToIndex:{0:0,1:1}},palette_border:{colors:{0:{name:"Bullish Border"},1:{name:"Bearish Border"}},valToIndex:{0:0,1:1}}},plots:[{id:"plot_open",type:"ohlc_open",target:"plot_candle"},{id:"plot_high",type:"ohlc_high",target:"plot_candle"},{id:"plot_low",type:"ohlc_low",target:"plot_candle"},{id:"plot_close",type:"ohlc_close",target:"plot_candle"},{id:"plot_bar_color",type:"ohlc_colorer",palette:"palette_bar",target:"plot_candle"},{id:"plot_wick_color",type:"wick_colorer",palette:"palette_wick",target:"plot_candle"},{id:"plot_border_color",type:"border_colorer",palette:"palette_border",target:"plot_candle"}],ohlcPlots:{plot_candle:{title:n,forceOverlay:!0}},styles:{},defaults:{styles:{},ohlcPlots:{plot_candle:{borderColor:o[0],color:r[0],drawBorder:!0,drawWick:!0,plottype:"ohlc_candles",visible:!0,wickColor:a[0]}},palettes:{palette_bar:{colors:{0:{color:r[0],width:1,style:0},1:{color:r[1],width:1,style:0}}},palette_wick:{colors:{0:{color:a[0],width:1,style:0},1:{color:a[1],width:1,style:0}}},palette_border:{colors:{0:{color:o[0],width:1,style:0},1:{color:o[1],width:1,style:0}}}},precision:2,inputs:{[qi]:0}}}),Vo=0,Nc=(e="light")=>e==="dark"?"#131722":"#ffffff",Lr=[Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN],sx=e=>function(){this.init=function(t){this._context=t},this.main=function(t,n){this._context=t;const i=t.symbol.time,r=Cc(n);return!Number.isFinite(i)||!r.length?[...Lr]:Ac(i,r)?e(t,r):[...Lr]}},lx=(e="light")=>{const t=Nc(e),n={name:Ir,metainfo:{_metainfoVersion:51,id:"Generated Candles Background - By iC Candle@tv-basicstudies-1",description:Ir,shortDescription:"Generated Candles Background",isCustomIndicator:!0,is_hidden_study:!0,is_price_study:!0,linkedToSeries:!0,format:{type:"inherit"},inputs:[kc],palettes:{prediction_bar_palette:{colors:{0:{name:"Predicted Bar"}},valToIndex:{[Vo]:0}},prediction_mask_palette:{colors:{0:{name:"Predicted Mask"}},valToIndex:{0:0}}},plots:[{id:"bar",type:"bar_colorer",palette:"prediction_bar_palette"},{id:"mask_open",type:"ohlc_open",target:"mask_candle"},{id:"mask_high",type:"ohlc_high",target:"mask_candle"},{id:"mask_low",type:"ohlc_low",target:"mask_candle"},{id:"mask_close",type:"ohlc_close",target:"mask_candle"},{id:"mask_bar_color",type:"ohlc_colorer",palette:"prediction_mask_palette",target:"mask_candle"},{id:"mask_wick_color",type:"wick_colorer",palette:"prediction_mask_palette",target:"mask_candle"},{id:"mask_border_color",type:"border_colorer",palette:"prediction_mask_palette",target:"mask_candle"}],ohlcPlots:{mask_candle:{title:"Predicted Mask Candle",forceOverlay:!0}},defaults:{ohlcPlots:{mask_candle:{borderColor:t,color:t,drawBorder:!0,drawWick:!0,plottype:"ohlc_candles",visible:!0,wickColor:t}},palettes:{prediction_bar_palette:{colors:{0:{color:t,width:1,style:1}}},prediction_mask_palette:{colors:{0:{color:t,width:1,style:0}}}},inputs:{[qi]:0}}},constructor:function(){this.init=function(r){this._context=r},this.main=function(r,a){this._context=r;const o=r.symbol.time,s=Cc(a);if(!Number.isFinite(o)||!Ac(o,s))return[Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN];const{open:u,high:c,low:d,close:l}=r.symbol,g=Math.max(c-d,Math.abs(l-u),Math.abs(l)*1e-4,.01);return[Vo,u,c+g,d-g,l,0,0,0]}}},i={name:Or,metainfo:ox({id:"Generated Candles - By iC Candle@tv-basicstudies-1",description:Or,shortDescription:"Generated Candles",isHiddenStudy:!1,bodyColors:["#00dfb9","#ffb84d"],wickColors:["#00dfb9","#ffb84d"],borderColors:["#00dfb9","#ffb84d"]}),constructor:sx((r,a)=>{const o=Tc(r.symbol.time,a);if(!o)return[...Lr];const u=o.close<o.open?1:0;return[o.open,o.high,o.low,o.close,u,u,u]})};return Promise.resolve([n,i])},Ko=(e,t)=>{if(t)try{e.removeEntity(t)}catch{}},cx=e=>({"predicted mask candle.color":e,"predicted mask candle.bordercolor":e,"predicted mask candle.wickcolor":e,"predicted bar.color.0":e,"predicted mask.color.0":e}),Dc=(e,t)=>{try{e.getSeries().sendToBack()}catch{}const n=t.generatedCandlesStudyIdRef.current;n&&e.bringToFront([n])},ux=e=>{try{e.getSeries().bringToFront()}catch{}},Rc=async(e,t,n="light")=>{Ko(e,t.generatedCandlesStudyIdRef.current),Ko(e,t.generatedCandlesBackgroundStudyIdRef.current),t.generatedCandlesStudyIdRef.current=null,t.generatedCandlesBackgroundStudyIdRef.current=null;const i=Nc(n),r=await e.createStudy(Ir,!0,!0,void 0,cx(i));r&&(t.generatedCandlesBackgroundStudyIdRef.current=r);const a=await e.createStudy(Or,!0,!0);a&&(t.generatedCandlesStudyIdRef.current=a),Dc(e,t)},cr=(e,t,n)=>{const i={id:qi,value:n};for(const r of[t.generatedCandlesBackgroundStudyIdRef,t.generatedCandlesStudyIdRef])if(r.current)try{e.getStudyById(r.current).setInputValues([i])}catch{}},dx=(e,t,n,i,r)=>{const a=t?.highlightBarsRef,o=je(d=>d.targetCandles),s=je(d=>d.gapCount),u=p.useRef(r),c=p.useRef(null);p.useEffect(()=>{let d=!1,l;const g=()=>{l&&(clearInterval(l),l=void 0)},f=S=>{if(!(!e||!t))try{cr(e.activeChart(),t,S)}catch{}},m=(S,v,D=[])=>{if(!(!e||!r?.length)&&!(!S.length&&!D.length))try{const w=e.activeChart(),P=Gs(n),G=gn(o[0].timestamp,n)/1e3-(Wt*P+P*100);if(v>0&&S.length>0){const K=Si(S[v-1].time)/1e3+Wt/3*P;w.setVisibleRange({from:G,to:K});return}const W=S[S.length-1]??D[D.length-1],_=(W?Si(W.time):gn(o[o.length-1].timestamp,n))/1e3+Wt/3*P;w.setVisibleRange({from:G,to:_})}catch(w){console.error("Error setting visible range:",w)}},y=(S,v,D=[])=>{requestAnimationFrame(()=>{d||m(S,v,D)})},b=(S,v,D)=>new Promise(w=>{if(!S.length){w();return}let P=0,M=0;const G=()=>{g(),w()},W=()=>{if(d){G();return}if(P>=S.length){G();return}if(_o(S[P])){P++,M=0,D?.(P),P>=S.length&&G();return}M++,M>200&&G()};W(),P<S.length&&!d&&(l=setInterval(W,Math.max(v,1)))}),x=async()=>{if(!(!e||!t?.generatedCandlesStudyIdRef||!t?.generatedCandlesBackgroundStudyIdRef))try{await new Promise(S=>{e.onChartReady(async()=>{try{await Rc(e.activeChart(),t,e.getTheme())}catch(v){console.error("Failed to recreate generated candle studies:",v)}S()})})}catch{}},T=(S,v)=>{d||(At(!1),c.current=r,a&&(a.current=S),m(S,S.length,v))},A=async(S,v=[])=>{if(!d&&(At(!0),lr(S),a&&(a.current=[]),await x(),!d)){if(m(S,0,v),v.length>0){for(const D of v){if(d)return;_o(D)}m(S,0,v)}if(await b(S,Mh,D=>{f(D),y(S,D,v),a&&(a.current=S.slice(0,D))}),!d){if(e&&t)try{Dc(e.activeChart(),t)}catch{}T(S,v)}}};return(async()=>{if(!d){if(r?.length&&o.length>0){if(c.current===r)return;const v=[...r].slice(-50-(s||0)),D=Jw(v,o[o.length-1],o),P=Qe.find(z=>z.ticker===i||z.display_name===i)?.session||"24x7",M=gn(o[o.length-1].timestamp,n),G=o[o.length-1].c,W=Ho(M,n,s||0,P),B=W.map(z=>({open:G,high:G,low:G,close:G,time:z})),_=Ho(s?W[W.length-1]:M,n,D.length,P),K=[...D.map((z,J)=>({open:z.o,high:z.h,low:z.l,close:z.c,time:gn(_[J],n)}))].sort((z,J)=>z.time-J.time);try{e?.onChartReady(()=>{A(K,B)})}catch{A(K,B)}}else{if(At(!1),lr([]),c.current=null,a&&(a.current=[]),e&&t)try{cr(e.activeChart(),t,0)}catch{}try{e?.onChartReady(()=>{ux(e.activeChart())})}catch{}}u.current=r}})(),()=>{d=!0,g(),At(!1)}},[r,o,s,a,t,n,i,e]),p.useEffect(()=>{if(r===null&&(lr([]),a&&(a.current=[]),e&&t))try{cr(e.activeChart(),t,0)}catch{}},[t,e,a,r])},hx=(e,t)=>{if(t.current){try{const n=e?.activeChart?.();if(n)try{n.removeEntity(t.current)}catch{}}catch{}t.current=null}},px=e=>{try{localStorage.removeItem(Bn)}catch{}try{const t=e?.activeChart?.();if(!t)return;t.clearMarks(2),t.refreshMarks()}catch{}},mx=(e,t)=>{try{localStorage.setItem(Bn,JSON.stringify(t))}catch{}try{e?.activeChart?.()?.refreshMarks()}catch{}},fx=async(e,t)=>{if(!(!e||!Number.isFinite(t)||t<=0))try{await e.headerReady();const n=e.activeChart(),i=Math.floor(t/1e3),r=n.getVisibleRange();let a;if(r?.from!=null&&r?.to!=null&&r.to>r.from)a=(r.to-r.from)/2;else{const o=gt(n.resolution());a=Wt*o/2}await n.setVisibleRange({from:i-a,to:i+a}),await new Promise(o=>{let s=!1;const u=()=>{s||(s=!0,o())};n.onDataLoaded().subscribe(null,u,!0),setTimeout(u,300)})}catch(n){console.error("Error centering visible range on event",n)}},Ec=async(e,t,n)=>{if(!e||!Number.isFinite(t)||t<=0)return;await e?.headerReady();const i=e?.activeChart?.();if(i)try{if(n.current){try{i.removeEntity(n.current)}catch{}n.current=null}try{const r=gt(i.resolution()),a=Math.floor(t/1e3),o=a-a%r,s=await i.createShape({time:o},{shape:"vertical_line",lock:!0,disableSelection:!0,overrides:{linestyle:2,linewidth:1}});s&&(i.getShapeById(s)?.setSavingEnabled(!1),n.current=s)}catch{}}catch{}},gx=async(e,t)=>{if(!(!e||!Number.isFinite(t)||t<=0))try{await e.headerReady();const n=e.activeChart(),i=gt(n.resolution()),{data:r}=await n.exportData();if(!r?.length)return;const a=r[r.length-1][0],o=Math.floor(t/1e3);await n.setVisibleRange({from:a-Wt*i,to:o+Wt/3*i})}catch(n){console.error("Error expanding visible range for future event",n)}},Mc=async(e,t,n)=>{if(!e||!n||!Number.isFinite(t)||t<=0)return!1;try{await e.headerReady();const i=e.activeChart(),r=i.resolution(),a=gt(r),o=Math.floor(t/1e3),s=o-o%a,{data:u}=await i.exportData();if(!u?.length)return!1;const d=u[u.length-1][0],l=i.symbol(),g=Qe.find(y=>y.ticker===l||y.display_name===l)?.session||"24x7";if(n.clearSelectedCandles(),je.getState().setPlayEndTimestamp(null),At(!1),s>d){const y=gn(d,r),b=gn(s,r),x=Zw(y,b,r,g);je.getState().setGapCount(x);const T=u.slice(-50).map(A=>({o:A[1],h:A[2],l:A[3],c:A[4],timestamp:A[0]}));return T.length===0||n.setTargetCandles(T),!0}je.getState().setGapCount(0);let f=u.findIndex(y=>y[0]===s);if(f===-1){let y=Number.POSITIVE_INFINITY;for(let b=0;b<u.length;b++){const x=Math.abs(u[b][0]-s);x<y&&(y=x,f=b)}}if(f<0)return!1;const m=u.slice(Math.max(0,f-49),f+1).map(y=>({o:y[1],h:y[2],l:y[3],c:y[4],timestamp:y[0]}));return m.length===0||n.setTargetCandles(m),!1}catch(i){return console.error("Error preparing event target candles",i),!1}},Ti=e=>{if(e)try{e.onChartReady(()=>{try{e.activeChart().resetData(),e.resetCache?.()}catch(t){console.error("Error resetting chart data",t)}})}catch(t){console.error("Error resetting chart data",t)}},ur=(e,t)=>{t([]),je.getState().setPlayEndTimestamp(null),At(!1),Ti(e)},Oc=(e,t)=>{if(e)try{const n=e.activeChart?.();if(!n)return;if(t.current){try{n.removeEntity(t.current)}catch{}t.current=null}n.getAllShapes().filter(r=>r.name==="date_range").forEach(r=>{try{n.removeEntity(r.id)}catch{}})}catch{}},yx=e=>_g[e]||e,bx=e=>{if(!e)return null;const t=Object.keys(e)[0],n=Number(t);return Number.isFinite(n)&&n>0?n:null},Jo=async(e,t,n,i,r,a)=>{if(!e)return;const{end_timestamp:o,symbol:s,timeframe:u}=t,c=bx(r),d=yx(u);if(!(!s||!u||!Number.isFinite(o)||o<=0||c==null)&&!(a&&a.length>0&&!a.includes(d)&&!a.includes(u)))try{await e.headerReady();const l=gt(d);i?.clearSelectedCandles(),je.getState().setPlayEndTimestamp(null),At(!1),i&&(i.applyingPatternRef.current=!0);try{await new Promise(w=>{e.setSymbol(s,d,()=>w())});const g=e.activeChart();Oc(e,n);const f=o-(c-1)*l;try{await g.setVisibleRange({from:f-(Wt*l+l*c+l*100),to:o+Wt/3*l})}catch(w){console.error("Error setting visible range for pattern",w)}const{data:m}=await g.exportData();let y=m.findIndex(w=>w[0]===o);y===-1&&(y=m.length-1);const b=Math.max(0,y-c+1),x=m.slice(b,y+1),T=x[0]?.[0]??o,A=x[x.length-1]?.[0]??o,S=t.pattern?.trim()||"",v=gr(),D=await g.createMultipointShape([{time:T},{time:A}],{...v,overrides:{...v.overrides,title:S||"Pattern range"}});if(D){const w=g.getShapeById(D);w&&(S&&w.setProperties({customText:{visible:!0,text:S,color:"#ffffff",fontsize:14,bold:!0}}),w.setSavingEnabled(!1)),n.current=D,i&&(i.lastEntity.current=D)}if(i&&x.length>0){const w=x.map(M=>({o:M[1],h:M[2],l:M[3],c:M[4],timestamp:M[0]})),P=w.slice(-50);i.setSymbol(s),i.setResolution(d),i.setTimeframe(d),i.setWindowSize(w.length),i.setCandles(w),i.setTargetCandles(P),i.setHasActiveShape(!0)}}finally{i&&setTimeout(()=>{i.applyingPatternRef.current=!1},600)}}catch(l){console.error("Error drawing pattern date range",l),i&&setTimeout(()=>{i.applyingPatternRef.current=!1},600)}};function vx(e,t,n,i,r,a,o,s){const u=p.useRef(n),c=p.useRef(e),d=p.useRef(t),l=p.useRef(i),g=p.useRef(r),f=p.useRef(a),m=p.useRef(o),y=p.useRef(s),b=p.useRef(null),x=p.useRef(null),T=p.useRef(null);p.useEffect(()=>{u.current=n},[n]),p.useEffect(()=>{c.current=e},[e]),p.useEffect(()=>{d.current=t},[t]),p.useEffect(()=>{l.current=i},[i]),p.useEffect(()=>{g.current=r},[r]),p.useEffect(()=>{f.current=a},[a]),p.useEffect(()=>{m.current=o},[o]),p.useEffect(()=>{y.current=s},[s]),p.useEffect(()=>{const A=({origin:S,data:v})=>{if(S!==rn)return;let D;try{D=typeof v=="string"?JSON.parse(v):v}catch{return}if(!D||typeof D!="object")return;const w=()=>{Oc(c.current,x);const G=f.current;G&&(G.lastEntity.current=null,G.setHasActiveShape(!1),G.setCandles([]),G.setTargetCandles([]))},P=D.name;if(typeof P!="string")return;const M=D.data;switch(P){case"chart.play":{const G=M;if(!G)return;if(G.isReplay){const _=(G.selectedCandles??[]).map(K=>({o:K.o,h:K.h,l:K.l,c:K.c,timestamp:K.timestamp}));if(_.length===0)return;d.current(_);const V=G.playEndTimestamp??(T.current!=null?Math.floor(T.current/1e3):u.current);V!=null&&Number.isFinite(V)&&je.getState().setPlayEndTimestamp(V);return}if(!("candles"in G))return;const W=G.candles??null;d.current(W);const B=u.current;B!=null&&Number.isFinite(B)&&je.getState().setPlayEndTimestamp(B);break}case"chart.stop":{if(M?.isReplay===!1){ur(c.current,d.current);break}d.current(null),je.getState().setPlayEndTimestamp(null),At(!1),Ti(c.current);break}case"selector.closeResult":d.current([]),je.getState().setPlayEndTimestamp(null),g.current?.();break;case"selector.loading":{const G=M;l.current(G?.isLoading??!1);break}case"auth.signIn":{const G=M;localStorage.setItem("iccandle_token",G?.idToken||"");break}case"auth.signOut":localStorage.removeItem("iccandle_token");break;case"news.eventClicked":{const W=M?.event;if(!W?.timestamp)return;T.current=W.timestamp,mx(c.current,W),(async()=>(await Mc(c.current,W.timestamp,f.current)?await gx(c.current,W.timestamp):await fx(c.current,W.timestamp),await Ec(c.current,W.timestamp,b)))();break}case"news.back":hx(c.current,b),px(c.current),ur(c.current,d.current),T.current=null,je.getState().setGapCount(0),f.current?.setTargetCandles([]);break;case"news.backToSimilarEvents":ur(c.current,d.current);break;case"pattern.classicPatternSelected":{const W=D.data?.pattern,B=W?.compared_pattern;if(!B)return;Jo(c.current,B,x,f.current,W?.results?.matches_by_window,y.current);break}case"pattern.custom_pattern_selected":{const W=M?.pattern,B=W?.compared_pattern;if(!B)return;Jo(c.current,B,x,f.current,W?.results?.matches_by_window,y.current);break}case"pattern.clear_custom_pattern_selected":case"pattern.clearClassicPatternSelected":w();break;case"nav.click":{const G=M;G?.href&&m.current?.(G.href);break}}};return window.addEventListener("message",A),()=>window.removeEventListener("message",A)},[])}const wx="open-pricing";function xx(e){return{type:wx,...e}}function Ic(e,t){e.postMessage(JSON.stringify(xx(t)),"*")}function Px(e,t){const n=e?.contentWindow;return n?(Ic(n,t),!0):!1}function Sx(e){return typeof window>"u"||window.parent===window?!1:(Ic(window.parent,e),!0)}const Tx=({patternName:e,onPatternNameChange:t,onNext:n,onCancel:i})=>{const{t:r}=nt();return h.jsxs("div",{className:"iccandle-pattern-alert-name",children:[h.jsxs("div",{className:"iccandle-pattern-alert-name__header",children:[h.jsxs("div",{className:"iccandle-pattern-alert-name__title-row",children:[h.jsxs("h2",{className:"iccandle-pattern-alert-name__title",children:[h.jsx(qr,{size:20,className:"iccandle-pattern-alert-name__title-icon"}),r("Pattern.addToPatternTracker")]}),h.jsx("button",{type:"button",className:"iccandle-pattern-alert-name__close-btn",onClick:i,"aria-label":r("Common.close"),children:h.jsx(zs,{size:20})})]}),h.jsx("p",{className:"iccandle-pattern-alert-name__description",children:r("Pattern.addToPatternTrackerDescription")})]}),h.jsxs("div",{className:"iccandle-pattern-alert-name__content",children:[h.jsx(jg,{size:64,className:"iccandle-pattern-alert-name__bell-icon"}),h.jsx("div",{className:"iccandle-pattern-alert-name__form",children:h.jsxs("div",{className:"iccandle-pattern-alert-name__field",children:[h.jsx("label",{htmlFor:"patternName",className:"iccandle-pattern-alert-name__label",children:r("Pattern.patternName")}),h.jsx("input",{id:"patternName",className:"iccandle-pattern-alert-name__input",placeholder:r("Pattern.patternNamePlaceholder"),value:e,maxLength:20,minLength:5,onChange:a=>t(a.target.value.slice(0,20))}),e.length===20&&h.jsx("p",{className:"iccandle-pattern-alert-name__error",children:r("Pattern.patternNameMaxChars")}),e.trim().length>0&&e.trim().length<5&&h.jsx("p",{className:"iccandle-pattern-alert-name__error",children:r("Pattern.patternNameMinChars")})]})})]}),h.jsxs("div",{className:"iccandle-pattern-alert-name__footer-wrap",children:[h.jsx("hr",{className:"iccandle-pattern-alert-name__divider"}),h.jsxs("div",{className:"iccandle-pattern-alert-name__footer",children:[h.jsx("button",{type:"button",className:"iccandle-pattern-alert-name__btn iccandle-pattern-alert-name__btn--outline",onClick:i,children:r("Common.cancel")}),h.jsx("button",{type:"submit",className:"iccandle-pattern-alert-name__btn iccandle-pattern-alert-name__btn--primary",onClick:n,disabled:e.trim().length<5,children:r("Common.next")})]})]})]})},kx=zy;F.createContext({});F.createContext({});const Gn=[{value:"M15",label:"M15",description:"15 Minutes",type:"minutes"},{value:"M30",label:"M30",description:"30 Minutes",type:"minutes"},{value:"H1",label:"H1",description:"1 Hour",type:"hourly"},{value:"H2",label:"H2",description:"2 Hours",type:"hourly"},{value:"H4",label:"H4",description:"4 Hours",type:"hourly"},{value:"D",label:"D",description:"Daily",type:"daily"}];function Cx({state:e}){return e==="all"?h.jsx("div",{className:"iccandle-scanner-timeframe-search__check iccandle-scanner-timeframe-search__check--on",children:h.jsx(an,{className:"h-3 w-3"})}):e==="some"?h.jsx("div",{className:"iccandle-scanner-timeframe-search__check iccandle-scanner-timeframe-search__check--on",children:h.jsx(hs,{className:"h-3 w-3"})}):h.jsx("div",{className:"iccandle-scanner-timeframe-search__check"})}const Ax=p.memo(function({searchTerm:t,onSearchChange:n,selectedTimeframes:i,onTimeframeChange:r,onGroupChange:a,filteredTimeframes:o,selectedCount:s,allTimeframes:u}){const{t:c}=nt(),d=p.useRef(null),l=p.useRef(null),g=p.useRef(null),f=p.useRef(null),[m,y]=p.useState(!1),[b,x]=p.useState(null),[T,A]=p.useState(null),S=p.useCallback(C=>{d.current=C;const k=C?.closest(".iccandle-selector-widget")??document.body;x(Y=>Y===k?Y:k)},[]),v=p.useCallback(()=>{const C=l.current;if(!C)return;const k=C.getBoundingClientRect(),Y=4,L=384,R=window.innerHeight-k.bottom-Y-8,j=k.top-8,E=R<Math.min(L,240)&&j>R,I=Math.max(160,Math.min(L,E?j:R)),q=E?Math.max(8,k.top-Y-I):k.bottom+Y;A({top:q,left:k.left,width:k.width,maxHeight:I})},[]),D=u??o??Gn,w=o??Gn,P=p.useMemo(()=>D.filter(C=>i[C.value]),[D,i]),M=p.useCallback(C=>{if(C.length===0)return"none";const k=C.filter(Y=>i[Y.value]).length;return k===0?"none":k===C.length?"all":"some"},[i]),G=p.useCallback(C=>c(`Pattern.timeframeOptions.${C}.displayName`),[c]),W=p.useCallback(C=>c(`Pattern.timeframeOptions.${C}.description`),[c]),B=p.useCallback(C=>{r(C,!i[C])},[r,i]),_=p.useCallback(()=>{const C=w.map(Y=>Y.value),k=M(w)!=="all";a(C,k)},[w,M,a]),V=p.useCallback((C,k)=>{k.preventDefault(),k.stopPropagation(),r(C,!1)},[r]),K=p.useCallback(()=>{y(!1),A(null),n("")},[n]),z=p.useCallback(C=>{if(C){y(!0);return}K()},[K]);p.useLayoutEffect(()=>{if(!m)return;v();const C=()=>v();return window.addEventListener("resize",C),window.addEventListener("scroll",C,!0),()=>{window.removeEventListener("resize",C),window.removeEventListener("scroll",C,!0)}},[m,v]),p.useEffect(()=>{if(!m)return;const C=Y=>{const L=Y.target;L&&(d.current?.contains(L)||g.current?.contains(L)||K())},k=Y=>{Y.key==="Escape"&&K()};return document.addEventListener("mousedown",C),document.addEventListener("keydown",k),()=>{document.removeEventListener("mousedown",C),document.removeEventListener("keydown",k)}},[K,m]),p.useEffect(()=>{if(!m)return;const C=requestAnimationFrame(()=>{f.current?.focus()});return()=>cancelAnimationFrame(C)},[m]);const J=M(w),X=s<=1?c("Pattern.timeframeSelected",{count:s}):c("Pattern.timeframesSelected",{count:s}),re=m&&b&&T?Dt.createPortal(h.jsxs("div",{ref:g,className:"iccandle-scanner-timeframe-search__popover",role:"listbox","aria-multiselectable":!0,style:{top:T.top,left:T.left,width:T.width,maxHeight:T.maxHeight},children:[h.jsxs("div",{className:"iccandle-scanner-timeframe-search__search",children:[h.jsx(ps,{className:"iccandle-scanner-timeframe-search__search-icon"}),h.jsx("input",{ref:f,type:"text",className:"iccandle-scanner-timeframe-search__command-input",placeholder:c("Selector.searchTimeframe"),value:t,onChange:C=>n(C.target.value.toUpperCase()),"aria-label":c("Selector.searchTimeframe")})]}),h.jsxs("div",{className:"iccandle-scanner-timeframe-search__command-list",style:{maxHeight:Math.max(120,T.maxHeight-48)},children:[t.trim()&&w.length===0?h.jsx("div",{className:"iccandle-scanner-timeframe-search__empty",children:c("Selector.noResultsFound")}):null,w.length>0?h.jsxs("div",{className:"iccandle-scanner-timeframe-search__select-all",children:[h.jsx("button",{type:"button",className:"iccandle-scanner-timeframe-search__group-check-btn",onClick:_,"aria-label":c("Selector.selectAllTimeframes"),children:h.jsx(Cx,{state:J})}),h.jsx("button",{type:"button",className:"iccandle-scanner-timeframe-search__group-label-btn",onClick:_,children:c("Selector.selectAllTimeframes")})]}):null,w.map(C=>{const k=!!i[C.value];return h.jsxs("button",{type:"button",role:"option","aria-selected":k,className:"iccandle-scanner-timeframe-search__item",onClick:()=>B(C.value),children:[h.jsx("div",{className:yt("iccandle-scanner-timeframe-search__check",k&&"iccandle-scanner-timeframe-search__check--on"),children:k?h.jsx(an,{className:"h-3 w-3"}):null}),h.jsx("span",{className:"iccandle-scanner-timeframe-search__item-label",children:G(C.value)}),h.jsx("span",{className:"iccandle-scanner-timeframe-search__item-description",children:W(C.value)})]},C.value)})]})]}),b):null;return h.jsxs("div",{ref:S,className:"iccandle-scanner-timeframe-search iccandle-scanner-timeframe-search--combobox",children:[h.jsxs("button",{ref:l,type:"button",role:"combobox","aria-expanded":m,"aria-haspopup":"listbox",className:"iccandle-scanner-timeframe-search__trigger",onClick:()=>z(!m),children:[h.jsx("div",{className:"iccandle-scanner-timeframe-search__chips",children:P.length===0?h.jsx("span",{className:"iccandle-scanner-timeframe-search__placeholder",children:c("Selector.searchTimeframe")}):h.jsx(h.Fragment,{children:P.map(C=>h.jsxs("span",{className:"iccandle-scanner-timeframe-search__chip",children:[h.jsx("span",{className:"iccandle-scanner-timeframe-search__chip-label",children:C.label}),h.jsx("span",{role:"button",tabIndex:0,"aria-label":`Remove ${C.label}`,className:"iccandle-scanner-timeframe-search__chip-remove",onClick:k=>V(C.value,k),onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),k.stopPropagation(),r(C.value,!1))},children:h.jsx(Ai,{className:"h-2.5 w-2.5"})})]},C.value))})}),h.jsxs("div",{className:"iccandle-scanner-timeframe-search__trigger-meta",children:[h.jsx("span",{children:X}),h.jsx(ds,{className:"h-4 w-4 opacity-60"})]})]}),re]})}),Nx=({form:e})=>{const{t}=nt(),[n,i]=p.useState(""),r=p.useDeferredValue(n),a=e.watch("timeframes"),o=p.useMemo(()=>a.reduce((g,f)=>(g[f]=!0,g),{}),[a]),s=p.useMemo(()=>{const g=r.toLowerCase();return Gn.filter(f=>{const m=t(`Pattern.timeframeOptions.${f.value}.displayName`).toLowerCase(),y=t(`Pattern.timeframeOptions.${f.value}.description`).toLowerCase();return f.label.toLowerCase().includes(g)||f.value.toLowerCase().includes(g)||m.includes(g)||y.includes(g)})},[r,t]),u=p.useMemo(()=>Object.values(o).filter(Boolean).length,[o]),c=p.useCallback(g=>{const f=Gn.filter(m=>g[m.value]).map(m=>m.value);e.setValue("timeframes",f,{shouldDirty:!0}),f.length>0&&e.clearErrors("timeframes")},[e]),d=p.useCallback((g,f)=>{c({...o,[g]:f})},[o,c]),l=p.useCallback((g,f)=>{const m={...o};for(const y of g)m[y]=f;c(m)},[o,c]);return h.jsxs("div",{className:"iccandle-timeframes-tab",children:[h.jsx("div",{className:"iccandle-timeframes-tab__header",children:h.jsx("h3",{className:"iccandle-timeframes-tab__title",children:t("Pattern.selectTimeframes")})}),h.jsx(Ax,{searchTerm:n,onSearchChange:i,selectedTimeframes:o,onTimeframeChange:d,onGroupChange:l,filteredTimeframes:s,selectedCount:u,allTimeframes:[...Gn]})]})},Dx=({form:e})=>{const{t}=nt(),[n,i]=p.useState(""),r=p.useDeferredValue(n),a=e.watch("symbols"),o=p.useMemo(()=>a.reduce((f,m)=>(f[m.symbol]=!0,f),{}),[a]),s=p.useMemo(()=>{const f=r.toLowerCase();return Qe.filter(m=>m.display_name.toLowerCase().includes(f)||m.description.toLowerCase().includes(f))},[r]),u=p.useMemo(()=>Object.values(o).filter(Boolean).length,[o]),c=p.useMemo(()=>{const f=new Map;return Qe.forEach(m=>{f.set(m.ticker,m.logo_urls)}),f},[]),d=p.useCallback(f=>{e.setValue("symbols",Object.entries(f).filter(([,m])=>m).map(([m])=>{const y=Qe.find(b=>b.ticker===m);return{symbol:m,type:y?.type??"forex"}}),{shouldDirty:!0}),Object.values(f).some(Boolean)&&e.clearErrors("symbols")},[e]),l=p.useCallback((f,m)=>{d({...o,[f]:m})},[o,d]),g=p.useCallback((f,m)=>{const y={...o};for(const b of f)y[b]=m;d(y)},[o,d]);return h.jsxs("div",{className:"iccandle-symbols-tab",children:[h.jsx("div",{className:"iccandle-symbols-tab__header",children:h.jsx("h3",{className:"iccandle-symbols-tab__title",children:t("Pattern.signalDialog.selectCurrencyPairs")})}),h.jsx(yc,{searchTerm:n,onSearchChange:i,selectedSymbols:o,onSymbolChange:l,onGroupChange:g,filteredSymbols:s,selectedCount:u,logoByTicker:c,allSymbols:Qe})]})},pa=[{value:"new_york",label:"New York Session",timezone:"America/New_York",start:"09:30",end:"16:00"},{value:"london",label:"London Session",timezone:"Europe/London",start:"08:00",end:"16:30"},{value:"tokyo",label:"Tokyo Session",timezone:"Asia/Tokyo",start:"09:00",end:"18:00"},{value:"sydney",label:"Sydney Session",timezone:"Australia/Sydney",start:"09:00",end:"18:00"}],Xo=[{value:"all_time",label:"All time"},...pa.map(e=>({value:e.value,label:e.label})),{value:"customize",label:"Customize"}],Rx=e=>{const t=e.match(/GMT([+-])(\d{1,2})(?::?(\d{2}))?/);if(!t)return 0;const n=t[1]==="-"?-1:1,i=Number(t[2]),r=Number(t[3]??"0");return n*(i*60+r)},Zo=(e,t)=>{const i=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"shortOffset",hour:"2-digit"}).formatToParts(e).find(r=>r.type==="timeZoneName")?.value??"GMT+0";return Rx(i)},Qo=(e,t,n)=>{const[i,r]=e.split(":").map(Number),a=new Date,o=Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),i,r,0),s=Zo(new Date(o),t);let u=o-s*6e4;const c=Zo(new Date(u),t);return u=o-c*6e4,new Intl.DateTimeFormat("en-GB",{timeZone:n,hour12:!1,hour:"2-digit",minute:"2-digit"}).format(new Date(u))},ki=(e,t)=>{const n=pa.find(i=>i.value===e);return n?{start_time:Qo(n.start,n.timezone,t),end_time:Qo(n.end,n.timezone,t),timezone:t}:null},Ex=(e,t)=>{if(!e)return"all_time";const n=e.timezone||t,i=!!(e.start_time&&e.end_time);if(e.preset_session){if(e.preset_session==="all_time")return"all_time";if(e.preset_session==="customize")return"customize";const a=ki(e.preset_session,n);if(a&&a.start_time===e.start_time&&a.end_time===e.end_time)return e.preset_session}if(!i)return"customize";const r=pa.find(a=>{const o=ki(a.value,n);return o&&o.start_time===e.start_time&&o.end_time===e.end_time});return r?r.value:"customize"},Mx=e=>{const t=Intl,n=typeof t.supportedValuesOf=="function"?t.supportedValuesOf("timeZone")??[]:[],i=e||"UTC";return(n.length?n:[i]).filter(Boolean)},Ox={all_time:"TimeConfig.allTime",new_york:"TimeConfig.newYorkSession",london:"TimeConfig.londonSession",tokyo:"TimeConfig.tokyoSession",sydney:"TimeConfig.sydneySession",customize:"TimeConfig.customize"},Ix=(e,t)=>{const n=t.trim().toLowerCase();return n?e.filter(i=>i.toLowerCase().includes(n)):e},Lx=({timeconfig:e,onTimeConfigChange:t,containerClassName:n=""})=>{const{t:i}=nt(),r=p.useRef(null),a=p.useRef(null),o=p.useRef(null),s=p.useRef(null),u=p.useRef(null),[c,d]=p.useState(null),[l,g]=p.useState(!1),[f,m]=p.useState(!1),[y,b]=p.useState(""),[x,T]=p.useState(""),[A,S]=p.useState(null),[v,D]=p.useState(null),w=p.useCallback(R=>{r.current=R;const j=R?.closest(".iccandle-selector-widget")??document.body;d(E=>E===j?E:j)},[]),P=Intl.DateTimeFormat().resolvedOptions().timeZone,M=p.useMemo(()=>Ex(e,P),[e,P]),G=R=>i(Ox[R]),W=e?.timezone?.trim()||P||"UTC",B=M==="all_time"?i("TimeConfig.yourTimezone"):W,_=p.useMemo(()=>Mx(P),[P]),V=p.useMemo(()=>{const R=y.trim().toLowerCase();return R?Xo.filter(j=>G(j.value).toLowerCase().includes(R)||j.value.toLowerCase().includes(R)):Xo},[y,i]),K=p.useMemo(()=>Ix(_,x),[_,x]),z=p.useCallback((R,j)=>{if(!R)return;const E=R.getBoundingClientRect(),I=4,q=320,$=window.innerHeight-E.bottom-I-8,ie=E.top-8,de=$<Math.min(q,180)&&ie>$,Z=Math.max(160,Math.min(q,de?ie:$)),be=de?Math.max(8,E.top-I-Z):E.bottom+I;j({top:be,left:E.left,width:E.width,maxHeight:Z})},[]),J=p.useCallback(()=>{m(!1),b(""),S(null)},[]),X=p.useCallback(()=>{g(!1),T(""),D(null)},[]),re=(R,j)=>{t({...e||{timezone:P},[R]:j,preset_session:"customize"},{shouldDirty:!0})},C=R=>{if(J(),R==="all_time"){e&&t(void 0,{shouldDirty:!0}),X();return}if(R==="customize"){e?e.preset_session!=="customize"&&t({...e,preset_session:"customize"},{shouldDirty:!0}):t({start_time:"08:00",end_time:"23:00",timezone:P,preset_session:"customize"},{shouldDirty:!0});return}const j=ki(R,e?.timezone||P);j&&t({...j,preset_session:R},{shouldDirty:!0})};p.useEffect(()=>{!e||M==="all_time"||e.timezone||t({...e,timezone:P},{shouldDirty:!1})},[e,M,t,P]),p.useLayoutEffect(()=>{if(!f&&!l)return;const R=()=>{f&&z(a.current,S),l&&z(o.current,D)};return R(),window.addEventListener("resize",R),window.addEventListener("scroll",R,!0),()=>{window.removeEventListener("resize",R),window.removeEventListener("scroll",R,!0)}},[f,l,z]),p.useEffect(()=>{if(!f&&!l)return;const R=E=>{const I=E.target;I&&(r.current?.contains(I)||s.current?.contains(I)||u.current?.contains(I)||(f&&J(),l&&X()))},j=E=>{E.key==="Escape"&&(f&&J(),l&&X())};return document.addEventListener("mousedown",R),document.addEventListener("keydown",j),()=>{document.removeEventListener("mousedown",R),document.removeEventListener("keydown",j)}},[J,X,f,l]);const k=R=>{if(M!=="customize")return;const j=R.currentTarget;try{j.showPicker?.()}catch{}},Y=f&&c&&A?Dt.createPortal(h.jsxs("div",{ref:s,className:"iccandle-time-config-section__dropdown iccandle-time-config-section__dropdown--portal",role:"listbox",style:{top:A.top,left:A.left,width:A.width,maxHeight:A.maxHeight},children:[h.jsx("div",{className:"iccandle-time-config-section__dropdown-search",children:h.jsx("input",{type:"text",className:"iccandle-time-config-section__dropdown-search-input",placeholder:i("TimeConfig.searchSession"),value:y,onChange:R=>b(R.target.value),autoFocus:!0})}),h.jsxs("ul",{className:"iccandle-time-config-section__dropdown-list",style:{maxHeight:Math.max(120,A.maxHeight-52)},children:[h.jsx("li",{className:"iccandle-time-config-section__dropdown-group-label","aria-hidden":"true",children:i("TimeConfig.sessionsHeading")}),V.length===0?h.jsx("li",{className:"iccandle-time-config-section__dropdown-empty",children:i("TimeConfig.noSessionFound")}):V.map(R=>h.jsx("li",{children:h.jsxs("button",{type:"button",role:"option","aria-selected":M===R.value,className:`iccandle-time-config-section__dropdown-item${M===R.value?" iccandle-time-config-section__dropdown-item--selected":""}`,onClick:()=>C(R.value),children:[h.jsx(an,{className:`iccandle-time-config-section__check${M===R.value?" iccandle-time-config-section__check--visible":""}`}),G(R.value)]})},R.value))]})]}),c):null,L=l&&c&&v?Dt.createPortal(h.jsxs("div",{ref:u,className:"iccandle-time-config-section__dropdown iccandle-time-config-section__dropdown--portal",role:"listbox",style:{top:v.top,left:v.left,width:v.width,maxHeight:v.maxHeight},children:[h.jsxs("div",{className:"iccandle-time-config-section__dropdown-header",children:[h.jsx("p",{className:"iccandle-time-config-section__dropdown-title",children:i("TimeConfig.selectTimezone")}),h.jsx("p",{className:"iccandle-time-config-section__dropdown-subtitle",children:i("TimeConfig.selectTimezoneHint")})]}),h.jsx("div",{className:"iccandle-time-config-section__dropdown-search",children:h.jsx("input",{type:"text",className:"iccandle-time-config-section__dropdown-search-input",placeholder:i("TimeConfig.searchTimezone"),value:x,onChange:R=>T(R.target.value),autoFocus:!0})}),h.jsxs("ul",{className:"iccandle-time-config-section__dropdown-list",style:{maxHeight:Math.max(120,v.maxHeight-96)},children:[h.jsx("li",{className:"iccandle-time-config-section__dropdown-group-label","aria-hidden":"true",children:i("TimeConfig.timezonesHeading")}),K.length===0?h.jsx("li",{className:"iccandle-time-config-section__dropdown-empty",children:i("TimeConfig.noTimezoneFound")}):K.map(R=>h.jsx("li",{children:h.jsxs("button",{type:"button",role:"option","aria-selected":W===R,className:`iccandle-time-config-section__dropdown-item${W===R?" iccandle-time-config-section__dropdown-item--selected":""}`,onClick:()=>{const j=R;if(M!=="all_time"&&M!=="customize"){const E=ki(M,j);E&&t({...E,preset_session:M},{shouldDirty:!0})}else t({...e||{},timezone:j},{shouldDirty:!0});X()},children:[h.jsx(an,{className:`iccandle-time-config-section__check${W===R?" iccandle-time-config-section__check--visible":""}`}),R]})},R))]})]}),c):null;return h.jsxs("div",{ref:w,className:`iccandle-time-config-section ${n}`.trim(),children:[h.jsx("div",{className:"iccandle-time-config-section__header",children:h.jsx("h3",{className:"iccandle-time-config-section__title",children:i("TimeConfig.title")})}),h.jsxs("div",{className:"iccandle-time-config-section__fields",children:[h.jsxs("div",{className:"iccandle-time-config-section__row",children:[h.jsxs("div",{className:"iccandle-time-config-section__field",children:[h.jsx("label",{className:"iccandle-time-config-section__label",children:i("TimeConfig.session")}),h.jsx("div",{className:`iccandle-time-config-section__select-wrap${f?" iccandle-time-config-section__select-wrap--open":""}`,children:h.jsx("button",{ref:a,type:"button",className:"iccandle-time-config-section__select-btn","aria-haspopup":"listbox","aria-expanded":f,onClick:()=>{if(f){J();return}X(),m(!0)},children:h.jsx("span",{className:"iccandle-time-config-section__select-label",children:G(M)||i("TimeConfig.selectSession")})})})]}),h.jsxs("div",{className:"iccandle-time-config-section__field",children:[h.jsx("label",{className:"iccandle-time-config-section__label",children:i("TimeConfig.timezone")}),h.jsx("div",{className:`iccandle-time-config-section__select-wrap${l?" iccandle-time-config-section__select-wrap--open":""}`,children:h.jsx("button",{ref:o,type:"button",className:"iccandle-time-config-section__select-btn","aria-haspopup":"listbox","aria-expanded":l,disabled:M==="all_time",onClick:()=>{if(l){X();return}J(),g(!0)},children:h.jsx("span",{className:"iccandle-time-config-section__select-label",children:B})})})]})]}),h.jsxs("div",{className:"iccandle-time-config-section__row",children:[h.jsxs("div",{className:"iccandle-time-config-section__field",children:[h.jsx("label",{className:"iccandle-time-config-section__label",children:i("TimeConfig.startTime")}),h.jsx("input",{type:"time",disabled:M!=="customize",value:e?.start_time??"",onChange:R=>re("start_time",R.target.value),onClick:k,className:"iccandle-time-config-section__input"})]}),h.jsxs("div",{className:"iccandle-time-config-section__field",children:[h.jsx("label",{className:"iccandle-time-config-section__label",children:i("TimeConfig.endTime")}),h.jsx("input",{type:"time",disabled:M!=="customize",value:e?.end_time??"",onChange:R=>re("end_time",R.target.value),onClick:k,className:"iccandle-time-config-section__input"})]})]})]}),Y,L]})},Fx=({form:e,onBack:t,onCancel:n,onSubscribe:i,isSubscribing:r,errorMessage:a,formRef:o})=>{const{t:s}=nt(),[u,c]=p.useState(null),d=Mn({control:e.control,name:"timeframes"}),l=Mn({control:e.control,name:"symbols"}),g=Mn({control:e.control,name:"timeconfig"}),f=s("Pattern.signalDialog.selectOneTimeframe"),m=s("Pattern.signalDialog.selectOneSymbol"),b=(u===f&&(d?.length??0)>0||u===m&&(l?.length??0)>0?null:u)||a;p.useEffect(()=>{(d?.length??0)>0&&e.clearErrors("timeframes")},[d,e]),p.useEffect(()=>{(l?.length??0)>0&&e.clearErrors("symbols")},[l,e]),p.useEffect(()=>{if(!u)return;const T=setTimeout(()=>c(null),1800);return()=>clearTimeout(T)},[u]);const x=T=>{if(T.preventDefault(),!e.getValues("timeframes")?.length){e.setError("timeframes",{type:"manual",message:s("Pattern.signalDialog.selectOneTimeframe")}),c(f);return}if(!e.getValues("symbols")?.length){e.setError("symbols",{type:"manual",message:s("Pattern.signalDialog.selectOneSymbol")}),c(m);return}e.clearErrors(["timeframes","symbols"]),c(null),i()};return h.jsxs("div",{className:"iccandle-pattern-alert-settings",children:[h.jsxs("div",{className:"iccandle-pattern-alert-settings__header-row",children:[h.jsx(qr,{size:20,className:"iccandle-pattern-alert-settings__header-icon"}),h.jsx("div",{className:"iccandle-pattern-alert-settings__header",children:h.jsxs("div",{className:"iccandle-pattern-alert-settings__title-row",children:[h.jsx("h2",{className:"iccandle-pattern-alert-settings__title",children:h.jsx("span",{className:"iccandle-pattern-alert-settings__title-text",children:s("Pattern.configurePatternTracker")})}),h.jsx("button",{type:"button",className:"iccandle-pattern-alert-settings__close-btn",onClick:n,"aria-label":s("Common.close"),children:h.jsx(zs,{size:16})})]})})]}),h.jsx(kx,{...e,children:h.jsx("form",{ref:o,onSubmit:x,className:"iccandle-pattern-alert-settings__form",id:"pattern-alert-settings-form",children:h.jsxs("div",{className:"iccandle-pattern-alert-settings__sections",children:[h.jsx("section",{className:"iccandle-pattern-alert-settings__section",children:h.jsx(Nx,{form:e})}),h.jsx("section",{className:"iccandle-pattern-alert-settings__section",children:h.jsx(Dx,{form:e})}),h.jsx("section",{className:"iccandle-pattern-alert-settings__section",children:h.jsx(Lx,{timeconfig:g,onTimeConfigChange:(T,A)=>{e.setValue("timeconfig",T,{shouldDirty:A?.shouldDirty??!0,shouldValidate:!1})},containerClassName:"iccandle-pattern-alert-settings__time-config"})})]})})}),h.jsxs("div",{className:"iccandle-pattern-alert-settings__footer",children:[b?h.jsx("p",{className:"iccandle-pattern-alert-settings__error iccandle-pattern-alert-settings__error--visible",children:b}):null,h.jsxs("div",{className:`iccandle-pattern-alert-settings__actions${b?" iccandle-pattern-alert-settings__actions--with-error":""}`,children:[h.jsx("button",{type:"button",className:"iccandle-pattern-alert-settings__btn iccandle-pattern-alert-settings__btn--outline",onClick:t,children:s("Common.back")}),h.jsx("button",{type:"submit",form:"pattern-alert-settings-form",className:"iccandle-pattern-alert-settings__btn iccandle-pattern-alert-settings__btn--primary",disabled:r,children:s(r?"Pattern.subscribing":"Pattern.subscribe")})]})]})]})};async function Gx(e){const{data:t}=await Me.post("https://api.iccandle.ai/custom-pattern/v1/searchless",e,{headers:{Authorization:`Bearer ${localStorage.getItem("iccandle_token")}`}});return t}const Lc=e=>{if(typeof e=="string")return e;if(typeof e!="object"||e===null)return to;for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){const n=Lc(e[t]);if(n)return n}return to},Bx=e=>Rh(e)?Lc(e.response?.data):e.message,jx=({open:e,onOpenChange:t,resolution:n,type:i,symbol:r,candles:a,percent:o,theme:s="light",themeStyle:u})=>{const{t:c}=nt(),[d,l]=p.useState(""),[g,f]=p.useState(!1),[m,y]=p.useState(null),[b,x]=p.useState(!1),T=p.useRef(null),A=wl({defaultValues:{timeframes:[],symbols:[]}});p.useEffect(()=>{e&&(l(""),f(!1),y(null),x(!1),A.reset({timeframes:[],symbols:[]}))},[e,A]);const S=p.useCallback(()=>{d.trim().length<5||f(!0)},[d]);p.useEffect(()=>{if(!e)return;const w=P=>{if(P.key==="Escape"){t(!1);return}P.key==="Enter"&&!P.shiftKey&&(P.preventDefault(),g?T.current?.requestSubmit():S())};return document.addEventListener("keydown",w),()=>{document.removeEventListener("keydown",w)}},[e,g,S,t]);const v=async()=>{const{symbols:w,timeframes:P,timeconfig:M}=A.getValues();if(!w.length||!P.length){y(c("Pattern.signalDialog.selectOneTimeframeAndSymbol")),setTimeout(()=>{y(null)},1500);return}if(!a.length){y(c("Pattern.noPatternCandles")),setTimeout(()=>{y(null)},1500);return}if(!r.trim()){y(c("Pattern.chartSymbolRequired")),setTimeout(()=>{y(null)},1500);return}const G=M&&(M.start_time||M.end_time||M.timezone)?{start_time:M.start_time,end_time:M.end_time,timezone:M.timezone||Intl.DateTimeFormat().resolvedOptions().timeZone}:void 0,W={resolution:n,type:i,symbol:r,candles:a,custom_name:d.trim(),filter:{symbols:w,timeframes:P,timeconfig:G},percent:o};x(!0);try{await Gx(W),yn({title:c("Pattern.patternSubscribed"),description:c("Pattern.patternSubscribedDesc",{name:d}),variant:"success"}),t(!1)}catch(B){const _=Bx(B);y(_),yn({title:c("Pattern.patternSubscriptionError"),description:_,variant:"error"}),setTimeout(()=>{y(null)},3e3)}finally{x(!1)}},D=()=>{f(!1)};return e?h.jsx("div",{className:yt("iccandle-pattern-tracker-modal","iccandle-selector-widget",s==="dark"&&"iccandle-dark"),role:"dialog","aria-modal":"true","aria-label":c("Pattern.subscriptionModalAria"),onPointerDown:w=>{const P=w.target;P.closest(".iccandle-scanner-symbol-search__popover")||P.closest(".iccandle-scanner-timeframe-search__popover")||P.closest(".iccandle-time-config-section__dropdown--portal")||w.target===w.currentTarget&&t(!1)},children:h.jsx("div",{className:yt("iccandle-pattern-tracker-modal__content",g&&"iccandle-pattern-tracker-modal__content--settings"),style:{...u,height:g?"100%":void 0},onPointerDown:w=>w.stopPropagation(),children:g?h.jsx(Fx,{form:A,onBack:D,onCancel:()=>t(!1),onSubscribe:v,isSubscribing:b,errorMessage:m,formRef:T}):h.jsx(Tx,{patternName:d,onPatternNameChange:l,onNext:S,onCancel:()=>t(!1)})})}):null},$o=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,es=Ks,Ux=(e,t)=>n=>{var i;if(t?.variants==null)return es(e,n?.class,n?.className);const{variants:r,defaultVariants:a}=t,o=Object.keys(r).map(c=>{const d=n?.[c],l=a?.[c];if(d===null)return null;const g=$o(d)||$o(l);return r[c][g]}),s=n&&Object.entries(n).reduce((c,d)=>{let[l,g]=d;return g===void 0||(c[l]=g),c},{}),u=t==null||(i=t.compoundVariants)===null||i===void 0?void 0:i.reduce((c,d)=>{let{class:l,className:g,...f}=d;return Object.entries(f).every(m=>{let[y,b]=m;return Array.isArray(b)?b.includes({...a,...s}[y]):{...a,...s}[y]===b})?[...c,l,g]:c},[]);return es(e,o,u,n?.class,n?.className)},zx=Ux("inline-flex items-center text-theme-color cursor-pointer justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-[#00dfb9]/10 border-[0.1px] border-[#00dfb9]/50",warning:"bg-amber-500/15 border-[0.1px] border-amber-500/60 text-amber-500 hover:bg-amber-500/25",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}});function ts({className:e,variant:t="default",size:n="default",asChild:i=!1,...r}){const a=i?ib:"button";return h.jsx(a,{"data-slot":"button","data-variant":t,"data-size":n,className:yt(zx({variant:t,size:n,className:e})),...r})}function Hx(e,t){try{return new Intl.DateTimeFormat(t,{year:"numeric",month:"long",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(e))}catch{return new Date(e).toLocaleString()}}function Yx({event:e,symbol:t,onClose:n,onGoToEventDetail:i,position:r}){const{t:a,language:o}=nt(),s=p.useId(),u=p.useId(),c=p.useRef(null),d=p.useRef(null);p.useEffect(()=>(d.current=document.activeElement,c.current?.focus(),()=>{d.current?.focus?.()}),[]);const l=()=>{const g=e.default_symbol||t;localStorage.setItem("currentSymbolNews",g),i?.(e),n()};return h.jsx("div",{className:"iccandle-event-info-modal",onClick:n,role:"presentation",children:h.jsxs("div",{className:"iccandle-event-info-modal__dialog",role:"dialog","aria-modal":"true","aria-labelledby":s,"aria-describedby":u,style:r?{left:`${r.x}px`,top:`${r.y}px`,transform:"translate(-50%, -100%)"}:{bottom:"100px",left:"50%",transform:"translateX(-50%)"},onClick:g=>g.stopPropagation(),onKeyDown:g=>{g.key==="Escape"&&n()},children:[h.jsxs("div",{className:"iccandle-event-info-modal__header",children:[h.jsxs("div",{className:"iccandle-event-info-modal__title-row",children:[h.jsx(Nr,{name:e.default_symbol||t||""}),h.jsx("h3",{id:s,className:"iccandle-event-info-modal__title",children:e.event_name})]}),h.jsx("button",{type:"button",onClick:n,className:"iccandle-event-info-modal__close","aria-label":a("Common.close"),ref:c,children:h.jsx(Ai,{size:20})})]}),h.jsxs("div",{id:u,children:[e.timestamp?h.jsx("p",{className:"iccandle-event-info-modal__date",children:Hx(e.timestamp,o)}):null,h.jsxs("div",{className:"iccandle-event-info-modal__rows",children:[h.jsxs("div",{className:"iccandle-event-info-modal__row",children:[h.jsxs("span",{className:"iccandle-event-info-modal__label",children:[a("Common.actual"),":"]}),h.jsx("span",{className:"iccandle-event-info-modal__value",children:e.actual||"-"})]}),h.jsxs("div",{className:"iccandle-event-info-modal__row",children:[h.jsxs("span",{className:"iccandle-event-info-modal__label",children:[a("News.previousActual"),":"]}),h.jsx("span",{className:"iccandle-event-info-modal__value",children:e.previous||"-"})]}),h.jsxs("div",{className:"iccandle-event-info-modal__row",children:[h.jsxs("span",{className:"iccandle-event-info-modal__label",children:[a("News.currentForecast"),":"]}),h.jsx("span",{className:"iccandle-event-info-modal__value",children:e.forecast||"-"})]}),h.jsxs("div",{className:"iccandle-event-info-modal__row",children:[h.jsxs("span",{className:"iccandle-event-info-modal__label",children:[a("News.previousForecast"),":"]}),h.jsx("span",{className:"iccandle-event-info-modal__value",children:"-"})]})]})]}),h.jsxs("div",{className:"iccandle-event-info-modal__actions",children:[h.jsx(ts,{variant:"outline",onClick:n,className:"iccandle-event-info-modal__btn",children:a("Common.close")}),h.jsx(ts,{onClick:l,className:"iccandle-event-info-modal__btn",children:a("News.goToEventDetail")})]})]})})}function qx({language:e,children:t}){const n=p.useMemo(()=>{const i=Bs(e);return Fg(i),{language:i,t:(r,a)=>Yr(i,r,a)}},[e]);return h.jsx(Us.Provider,{value:n,children:t})}function Wx(e){try{const t=JSON.parse(localStorage.getItem(Bn)||"null");if(t&&String(t.id)===String(e))return t}catch{}try{return JSON.parse(localStorage.getItem(pi)||"[]").find(n=>String(n.id)===String(e))??null}catch{return null}}function _x(e){return!(!e?.event_name||!e.currency||e.event_name==="Holiday"||e.status==="early")}const Vx=({chartWidget:e,children:t,theme:n,language:i,submitCallback:r,onCloseResult:a,iframeLoaded:o,resultIframeRef:s,isShowScanButton:u=!0,isShowTrackerButton:c=!0,isShowScannerPopup:d=!0,availableIntervals:l})=>{const g=p.useMemo(()=>Bs(i),[i]),f=p.useMemo(()=>({highlightBarsRef:{current:[]},generatedCandlesBackgroundStudyIdRef:{current:null},generatedCandlesStudyIdRef:{current:null}}),[]),m=typeof t=="function"?t(f):t,y=p.useRef(null),b=p.useRef(null),x=p.useRef(!1),T=p.useRef(null),A=p.useRef([]),S=p.useRef(null),v=je(ae=>ae.setTargetCandles),[D,w]=p.useState(!1),[P,M]=p.useState(!1),[G,W]=p.useState(null),[B,_]=p.useState(null),[V,K]=p.useState(null),z=p.useCallback(()=>S.current&&getComputedStyle(S.current).getPropertyValue("--iccandle-primary").trim()||void 0,[]),J=p.useRef(z);p.useEffect(()=>{J.current=z},[z]);const X=p.useMemo(()=>n==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":n,[n]),[re,C]=p.useState(!1),[k,Y]=p.useState(!1),[L,R]=p.useState(!1),[j,E]=p.useState(ir),[I,q]=p.useState([]),[$,ie]=p.useState(null),[de,Z]=p.useState(!1),[be,Ce]=p.useState("60"),[dt,Pt]=p.useState(Wg.interval),[He,Mt]=p.useState(""),_e=p.useCallback(()=>{try{const ae=e?.activeChart?.();if(ae){if(y.current){try{ae.removeEntity(y.current)}catch{}y.current=null}ae.getAllShapes().filter(ge=>ge.name==="date_range").forEach(ge=>{try{ae.removeEntity(ge.id)}catch{}})}}catch{}R(!1),q([]),v([])},[e,v]),cn=p.useCallback(ae=>{let ge=ae;try{ge=new URL(ae,`${rn}/`).pathname}catch{}ge.includes("/news")&&_e(),V?.length&&(je.getState().setPlayEndTimestamp(null),je.getState().setGapCount(0),K(null),At(!1),Ti(e))},[e,V,_e]),N=p.useCallback(()=>Y(!0),[]),O=p.useCallback(()=>Y(!1),[]),H=p.useCallback(()=>{je.getState().setPlayEndTimestamp(null),je.getState().setGapCount(0);const ae=!!V?.length;K(null),At(!1),ae&&Ti(e),T.current?.()},[e,V]),te=p.useCallback(()=>ie("settings"),[]),ee=p.useCallback(()=>ie(null),[]),Q=p.useCallback(()=>Z(!1),[]),le=p.useCallback(()=>Z(!0),[]),ye=p.useCallback(()=>{const ae={theme:X==="dark"?"dark":"light",language:g};Px(s?.current,ae)||Sx(ae)||r(`${rn}/${g}?pricing=true&theme=${X==="dark"?"dark":"light"}`)},[g,X,s,r]),fe=p.useCallback(()=>{M(!1),W(null),_(null)},[]),De=p.useCallback(ae=>{const ge=ae.default_symbol||He,ct=X==="dark"?"dark":"light";_e(),K(null),je.getState().setPlayEndTimestamp(null);const he={id:ae.id,event_name:ae.event_name,timestamp:ae.timestamp,actual:ae.actual||"",forecast:ae.forecast||"",previous:ae.previous||"",currency:ae.currency||"",metric:"",default_symbol:ae.default_symbol,status:ae.status};try{localStorage.setItem(Bn,JSON.stringify(he))}catch{}try{e?.activeChart?.()?.refreshMarks()}catch{}(async()=>(await Mc(e,ae.timestamp,{lastEntity:y,applyingPatternRef:x,setHasActiveShape:R,setCandles:q,setWindowSize:E,setSymbol:Mt,setResolution:Pt,setTimeframe:Ce,setTargetCandles:v,clearSelectedCandles:()=>K(null)}),await Ec(e,ae.timestamp,b)))(),r(`${rn}/${g}/news/similar-events/${ae.id}?symbol=${encodeURIComponent(ge)}&theme=${ct}`)},[e,_e,g,X,v,r,He]),it=p.useCallback(ae=>{if(!ae||!e)return;let ge;try{ge=e.activeChart()}catch(Ye){console.log("Error getting active chart",Ye);return}if(!ge)return;const ct=ge.getTimeScale(),he=ge.getVisibleRange();if(!he?.from||!he?.to)return;const Ut=S.current?.firstElementChild||S.current;if(!Ut)return;const Zt=Ut.getBoundingClientRect(),ce=ct.width(),Oe=Ye=>{let Ne=0,ve=ce,Ve=ce/2;const qe=.1;for(let Wi=0;Wi<30;Wi++){const ht=(Ne+ve)/2,Jn=ct.coordinateToTime(ht);if(Jn===null){const Fc=(Ye-he.from)/(he.to-he.from);Ve=Math.max(0,Math.min(ce,Fc*ce));break}const Te=Jn-Ye;if(Math.abs(Te)<qe){Ve=ht;break}Te>0?ve=ht:Ne=ht,Ve=ht}const rt=Zt.left+Ve+53,Ee=Zt.bottom-103;return{x:rt,y:Ee}},pe=Wx(ae);if(!_x(pe))return;const Ae=pe.timestamp?pe.timestamp/1e3:null,ze=he.to-he.from,Se=Ae??he.from+ze*.5,Pe=Oe(Se);Pe&&_(Pe),W(pe),M(!0)},[e]),Ue=p.useCallback(()=>{C(!0)},[]),jt=p.useCallback(()=>{x.current||(y.current=null,R(!1))},[]),Ot=p.useCallback(ae=>{Ce(ae==="1"||ae==="5"?"60":ae),Pt(ae),jt()},[jt]),St=p.useCallback(ae=>{Mt(ae.library_custom_fields?.ticker||ae.ticker||ae.name||ae.base_name+""||""),jt()},[jt]);p.useEffect(()=>{let ae,ge,ct;return e&&e.onChartReady(()=>{const he=e.activeChart();if(he){const Ut=he.resolution(),Zt=Qe?.find(pe=>pe.display_name===he.symbol());Ce(Ut),Pt(Ut),Mt(Zt?.ticker||he.symbol());const ce=async(pe,Ae)=>{if(he?.getAllShapes()?.filter(Pe=>Pe.name==="date_range")?.forEach(Pe=>{he?.removeEntity(Pe.id)}),Ae){const{data:Pe}=await he.exportData();let Ye=Pe.findIndex(Ee=>Ee[0]===Ae);Ye===-1&&(Ye=Pe.length-1);const Ne=Pe.findIndex(Ee=>Ee[0]===pe),ve=Math.floor((Ne+Ye)/2),Ve=Math.floor(ir/2),qe=Pe.slice(ve-(Ve+1),ve+Ve),rt=Pe.slice(ve+Ve-49,ve+Ve);if(E(qe.length),q(qe.map(Ee=>({o:Ee[1],h:Ee[2],l:Ee[3],c:Ee[4],timestamp:Ee[0]}))),v(rt.map(Ee=>({o:Ee[1],h:Ee[2],l:Ee[3],c:Ee[4],timestamp:Ee[0]}))),R(!0),y.current=await he.createMultipointShape([{time:qe[0][0]},{time:qe[qe.length-1][0]}],gr(J.current())),y.current){const Ee=he.getShapeById(y.current);Ee&&Ee.setSavingEnabled&&(Ee.setProperties({customText:{visible:!0,text:oo}}),Ee.setSavingEnabled(!1))}}};ae=Fy(async(pe,Ae)=>{if(!x.current&&(Ae==="remove"&&(y.current===pe&&(y.current=null),R(!1)),Ae==="points_changed"&&he.getAllShapes().filter(ze=>ze.name==="date_range").some(ze=>ze.id===pe)&&e)){const ze=he.getShapeById(pe);if(!ze)return;const Se=ze.getPoints(),Pe=Se[0].time,Ye=Se[1].time,{data:Ne}=await he.exportData();let ve=Ne.findIndex(Te=>Te[0]===Ye),Ve=Ne.findIndex(Te=>Te[0]===Pe);ve===-1&&(ve=Ne.length-2,Ve=Ne.length-1-ir);let rt=Ne.slice(Ve,ve+1).length-1;rt>$t.max?(rt=Math.round(rt/10)*10-1,rt>$t.custom[$t.custom.length-1]&&(rt=$t.custom[$t.custom.length-1]-1)):rt<=$t.min&&(rt=$t.min-1),y.current&&he.removeEntity(y.current),he.getAllShapes().filter(Te=>Te.name==="date_range").forEach(Te=>{he.removeEntity(Te.id)});const ht=Ne.slice(ve-rt,ve+1),Jn=Ne.slice(ve-49,ve+1);if(y.current=await he.createMultipointShape([{time:ht[0][0]},{time:ht[ht.length-1][0]}],gr(J.current())),E(ht.length),q(ht.map(Te=>({o:Te[1],h:Te[2],l:Te[3],c:Te[4],timestamp:Te[0]}))),v(Jn.map(Te=>({o:Te[1],h:Te[2],l:Te[3],c:Te[4],timestamp:Te[0]}))),R(!0),y.current){const Te=he.getShapeById(y.current);Te&&Te.setSavingEnabled&&(Te.setProperties({customText:{visible:!0,text:oo}}),Te.setSavingEnabled(!1))}}},500),T.current=()=>{R(!0);const pe=he.getVisibleRange();pe?.from&&pe?.to&&ce(pe.from,pe.to)};const Oe=pe=>{if(!y.current||!pe)return!1;try{const Ae=he?.getShapeById(y.current);if(!Ae)return!1;const ze=Ae.getPoints();if(ze.length===0)return!1;const Se=ze.map(ve=>ve.time).filter(ve=>typeof ve=="number");if(Se.length===0)return!1;const Pe=Math.min(...Se);return Math.max(...Se)<pe.from||Pe>pe.to}catch{return!1}};ct=pe=>{ge&&clearTimeout(ge),ge=setTimeout(()=>{Oe(pe)?R(!1):y.current&&R(!0)},150)},he.onIntervalChanged().subscribe(null,Ot),he.onSymbolChanged().subscribe(null,St),he.onVisibleRangeChanged().subscribe(null,ct),e.subscribe?.("drawing_event",ae)}}),()=>{y.current=null,T.current=null;try{if(ge&&clearTimeout(ge),e){const he=e.activeChart();he&&(ct&&he.onVisibleRangeChanged().unsubscribe(null,ct),he.onIntervalChanged().unsubscribe(null,Ot),he.onSymbolChanged().unsubscribe(null,St)),ae&&e.unsubscribe("drawing_event",ae)}}catch{}}},[e,Ot,St,v]),p.useEffect(()=>{if(!e)return;const ae=it;return e.onChartReady(()=>{e.subscribe("onTimescaleMarkClick",ae)}),()=>{try{e.unsubscribe("onTimescaleMarkClick",ae)}catch{}}},[e,it]),Vw(e,A);const un=p.useMemo(()=>({lastEntity:y,applyingPatternRef:x,setHasActiveShape:R,setCandles:q,setWindowSize:E,setSymbol:Mt,setResolution:Pt,setTimeframe:Ce,setTargetCandles:v,clearSelectedCandles:()=>K(null)}),[v]);vx(e,K,I[I.length-1]?.timestamp??null,w,a,un,cn,l),p.useEffect(()=>{if(!e)return;let ae=!1;return e.onChartReady(async()=>{if(!ae)try{await Rc(e.activeChart(),f,e.getTheme())}catch(ge){console.error("Failed to create generated candle studies:",ge)}}),()=>{ae=!0}},[e,f]),dx(e,f,dt,He,V);const dn=p.useCallback(()=>{try{localStorage.removeItem(pi),localStorage.removeItem(Bn)}catch{}const ae=e?.activeChart?.();if(ae){A.current&&A.current.length>0&&(A.current.forEach(ge=>{try{ae.removeEntity(ge)}catch{}}),A.current=[]);try{ae.clearMarks(2)}catch{}}},[e]);return h.jsx(qx,{language:g,children:h.jsxs("div",{ref:S,lang:g,className:`iccandle-selector-widget ${X==="dark"?"iccandle-dark":""}`,children:[m,h.jsx(Yg,{hide:!d,hideScanButton:!u,hideTrackerButton:!c,submitCallback:r,handleShowDialog:te,onOpenScanConfig:()=>ie("scan"),onApplySavedTimeframe:Ce,pendingScanAfterConfig:de,onPendingScanHandled:Q,triggerScanner:H,window_size:j,currentSymbol:He,resolution:dt,timeframe:be,chartWidget:e,candles:I,handleStartDrag:N,handleStopDrag:O,hasActiveShape:L,theme:X,language:g,clearScannerNewsMarks:dn,selectedCandles:V,iframeLoaded:o,isLoading:D,handleTrackPatternClick:Ue}),re&&h.jsx(jx,{open:re,onOpenChange:C,resolution:dt,type:Qe.find(ae=>ae.ticker===He)?.type??"forex",symbol:He,candles:I,percent:90,theme:X}),$&&h.jsx(_w,{intent:$,setResolution:Ce,timeframe:be,handleCloseDialog:ee,onScanConfigSaved:le,onUpgradeClick:ye,currentSymbol:He}),P&&G&&h.jsx(Yx,{event:G,symbol:He||localStorage.getItem("tv:latest-symbol")||"XAU_USD",onClose:fe,onGoToEventDetail:De,position:B}),k&&h.jsx("div",{className:"iccandle-selector-widget__overlay"}),h.jsx(pu,{theme:X,position:"top-right",className:"iccandle-toaster",richColors:!1})]})})},Kx=e=>{const t=e?.contentWindow;if(!t||!e?.src)return;const n=new URL(e.src).origin,i=()=>t.postMessage(JSON.stringify({type:"parent-origin",origin:window.location.origin}),n);if([0,300,1e3,2500].forEach(a=>window.setTimeout(i,a)),new URLSearchParams(window.location.search).get("payment")==="success"){const a=()=>t.postMessage(JSON.stringify({type:"payment-success"}),n);[0,600,1500].forEach(s=>window.setTimeout(a,s));const o=new URL(window.location.href);["payment","session_id","lookup_key"].forEach(s=>o.searchParams.delete(s)),window.history.replaceState({},"",o)}};exports.WIDGET_RESULT_URL=rn;exports.WidgetIccandle=Vx;exports.getCustomIndicators=lx;exports.handleResultIframeLoad=Kx;exports.withPlayChart=rx;
122
+ `,Wg={interval:"60"},_g={D:"1440",H4:"240",H2:"120",H1:"60",M30:"30",M15:"15",M5:"5",M1:"1"};function Vs(e){var t,n,i="";if(typeof e=="string"||typeof e=="number")i+=e;else if(typeof e=="object")if(Array.isArray(e)){var r=e.length;for(t=0;t<r;t++)e[t]&&(n=Vs(e[t]))&&(i&&(i+=" "),i+=n)}else for(n in e)e[n]&&(i&&(i+=" "),i+=n);return i}function Ks(){for(var e,t,n=0,i="",r=arguments.length;n<r;n++)(e=arguments[n])&&(t=Vs(e))&&(i&&(i+=" "),i+=t);return i}const Vg=(e,t)=>{const n=new Array(e.length+t.length);for(let i=0;i<e.length;i++)n[i]=e[i];for(let i=0;i<t.length;i++)n[e.length+i]=t[i];return n},Kg=(e,t)=>({classGroupId:e,validator:t}),Js=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),fi="-",so=[],Jg="arbitrary..",Xg=e=>{const t=Qg(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:i}=e;return{getClassGroupId:o=>{if(o.startsWith("[")&&o.endsWith("]"))return Zg(o);const s=o.split(fi),u=s[0]===""&&s.length>1?1:0;return Xs(s,u,t)},getConflictingClassGroupIds:(o,s)=>{if(s){const u=i[o],c=n[o];return u?c?Vg(c,u):u:c||so}return n[o]||so}}},Xs=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;const r=e[t],a=n.nextPart.get(r);if(a){const c=Xs(e,t+1,a);if(c)return c}const o=n.validators;if(o===null)return;const s=t===0?e.join(fi):e.slice(t).join(fi),u=o.length;for(let c=0;c<u;c++){const d=o[c];if(d.validator(s))return d.classGroupId}},Zg=e=>e.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const t=e.slice(1,-1),n=t.indexOf(":"),i=t.slice(0,n);return i?Jg+i:void 0})(),Qg=e=>{const{theme:t,classGroups:n}=e;return $g(n,t)},$g=(e,t)=>{const n=Js();for(const i in e){const r=e[i];Wr(r,n,i,t)}return n},Wr=(e,t,n,i)=>{const r=e.length;for(let a=0;a<r;a++){const o=e[a];ey(o,t,n,i)}},ey=(e,t,n,i)=>{if(typeof e=="string"){ty(e,t,n);return}if(typeof e=="function"){ny(e,t,n,i);return}iy(e,t,n,i)},ty=(e,t,n)=>{const i=e===""?t:Zs(t,e);i.classGroupId=n},ny=(e,t,n,i)=>{if(ry(e)){Wr(e(i),t,n,i);return}t.validators===null&&(t.validators=[]),t.validators.push(Kg(n,e))},iy=(e,t,n,i)=>{const r=Object.entries(e),a=r.length;for(let o=0;o<a;o++){const[s,u]=r[o];Wr(u,Zs(t,s),n,i)}},Zs=(e,t)=>{let n=e;const i=t.split(fi),r=i.length;for(let a=0;a<r;a++){const o=i[a];let s=n.nextPart.get(o);s||(s=Js(),n.nextPart.set(o,s)),n=s}return n},ry=e=>"isThemeGetter"in e&&e.isThemeGetter===!0,ay=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,n=Object.create(null),i=Object.create(null);const r=(a,o)=>{n[a]=o,t++,t>e&&(t=0,i=n,n=Object.create(null))};return{get(a){let o=n[a];if(o!==void 0)return o;if((o=i[a])!==void 0)return r(a,o),o},set(a,o){a in n?n[a]=o:r(a,o)}}},yr="!",lo=":",oy=[],co=(e,t,n,i,r)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:i,isExternal:r}),sy=e=>{const{prefix:t,experimentalParseClassName:n}=e;let i=r=>{const a=[];let o=0,s=0,u=0,c;const d=r.length;for(let y=0;y<d;y++){const b=r[y];if(o===0&&s===0){if(b===lo){a.push(r.slice(u,y)),u=y+1;continue}if(b==="/"){c=y;continue}}b==="["?o++:b==="]"?o--:b==="("?s++:b===")"&&s--}const l=a.length===0?r:r.slice(u);let g=l,f=!1;l.endsWith(yr)?(g=l.slice(0,-1),f=!0):l.startsWith(yr)&&(g=l.slice(1),f=!0);const m=c&&c>u?c-u:void 0;return co(a,f,g,m)};if(t){const r=t+lo,a=i;i=o=>o.startsWith(r)?a(o.slice(r.length)):co(oy,!1,o,void 0,!0)}if(n){const r=i;i=a=>n({className:a,parseClassName:r})}return i},ly=e=>{const t=new Map;return e.orderSensitiveModifiers.forEach((n,i)=>{t.set(n,1e6+i)}),n=>{const i=[];let r=[];for(let a=0;a<n.length;a++){const o=n[a],s=o[0]==="[",u=t.has(o);s||u?(r.length>0&&(r.sort(),i.push(...r),r=[]),i.push(o)):r.push(o)}return r.length>0&&(r.sort(),i.push(...r)),i}},cy=e=>({cache:ay(e.cacheSize),parseClassName:sy(e),sortModifiers:ly(e),...Xg(e)}),uy=/\s+/,dy=(e,t)=>{const{parseClassName:n,getClassGroupId:i,getConflictingClassGroupIds:r,sortModifiers:a}=t,o=[],s=e.trim().split(uy);let u="";for(let c=s.length-1;c>=0;c-=1){const d=s[c],{isExternal:l,modifiers:g,hasImportantModifier:f,baseClassName:m,maybePostfixModifierPosition:y}=n(d);if(l){u=d+(u.length>0?" "+u:u);continue}let b=!!y,x=i(b?m.substring(0,y):m);if(!x){if(!b){u=d+(u.length>0?" "+u:u);continue}if(x=i(m),!x){u=d+(u.length>0?" "+u:u);continue}b=!1}const T=g.length===0?"":g.length===1?g[0]:a(g).join(":"),A=f?T+yr:T,S=A+x;if(o.indexOf(S)>-1)continue;o.push(S);const v=r(x,b);for(let D=0;D<v.length;++D){const w=v[D];o.push(A+w)}u=d+(u.length>0?" "+u:u)}return u},hy=(...e)=>{let t=0,n,i,r="";for(;t<e.length;)(n=e[t++])&&(i=Qs(n))&&(r&&(r+=" "),r+=i);return r},Qs=e=>{if(typeof e=="string")return e;let t,n="";for(let i=0;i<e.length;i++)e[i]&&(t=Qs(e[i]))&&(n&&(n+=" "),n+=t);return n},py=(e,...t)=>{let n,i,r,a;const o=u=>{const c=t.reduce((d,l)=>l(d),e());return n=cy(c),i=n.cache.get,r=n.cache.set,a=s,s(u)},s=u=>{const c=i(u);if(c)return c;const d=dy(u,n);return r(u,d),d};return a=o,(...u)=>a(hy(...u))},my=[],Be=e=>{const t=n=>n[e]||my;return t.isThemeGetter=!0,t},$s=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,el=/^\((?:(\w[\w-]*):)?(.+)\)$/i,fy=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,gy=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,yy=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,by=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,vy=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,wy=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Yt=e=>fy.test(e),me=e=>!!e&&!Number.isNaN(Number(e)),qt=e=>!!e&&Number.isInteger(Number(e)),rr=e=>e.endsWith("%")&&me(e.slice(0,-1)),It=e=>gy.test(e),tl=()=>!0,xy=e=>yy.test(e)&&!by.test(e),_r=()=>!1,Py=e=>vy.test(e),Sy=e=>wy.test(e),Ty=e=>!oe(e)&&!se(e),ky=e=>Xt(e,rl,_r),oe=e=>$s.test(e),Qt=e=>Xt(e,al,xy),uo=e=>Xt(e,Oy,me),Cy=e=>Xt(e,sl,tl),Ay=e=>Xt(e,ol,_r),ho=e=>Xt(e,nl,_r),Ny=e=>Xt(e,il,Sy),ii=e=>Xt(e,ll,Py),se=e=>el.test(e),Rn=e=>ln(e,al),Dy=e=>ln(e,ol),po=e=>ln(e,nl),Ry=e=>ln(e,rl),Ey=e=>ln(e,il),ri=e=>ln(e,ll,!0),My=e=>ln(e,sl,!0),Xt=(e,t,n)=>{const i=$s.exec(e);return i?i[1]?t(i[1]):n(i[2]):!1},ln=(e,t,n=!1)=>{const i=el.exec(e);return i?i[1]?t(i[1]):n:!1},nl=e=>e==="position"||e==="percentage",il=e=>e==="image"||e==="url",rl=e=>e==="length"||e==="size"||e==="bg-size",al=e=>e==="length",Oy=e=>e==="number",ol=e=>e==="family-name",sl=e=>e==="number"||e==="weight",ll=e=>e==="shadow",Iy=()=>{const e=Be("color"),t=Be("font"),n=Be("text"),i=Be("font-weight"),r=Be("tracking"),a=Be("leading"),o=Be("breakpoint"),s=Be("container"),u=Be("spacing"),c=Be("radius"),d=Be("shadow"),l=Be("inset-shadow"),g=Be("text-shadow"),f=Be("drop-shadow"),m=Be("blur"),y=Be("perspective"),b=Be("aspect"),x=Be("ease"),T=Be("animate"),A=()=>["auto","avoid","all","avoid-page","page","left","right","column"],S=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],v=()=>[...S(),se,oe],D=()=>["auto","hidden","clip","visible","scroll"],w=()=>["auto","contain","none"],P=()=>[se,oe,u],M=()=>[Yt,"full","auto",...P()],G=()=>[qt,"none","subgrid",se,oe],W=()=>["auto",{span:["full",qt,se,oe]},qt,se,oe],B=()=>[qt,"auto",se,oe],_=()=>["auto","min","max","fr",se,oe],V=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],K=()=>["start","end","center","stretch","center-safe","end-safe"],z=()=>["auto",...P()],J=()=>[Yt,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...P()],X=()=>[Yt,"screen","full","dvw","lvw","svw","min","max","fit",...P()],re=()=>[Yt,"screen","full","lh","dvh","lvh","svh","min","max","fit",...P()],C=()=>[e,se,oe],k=()=>[...S(),po,ho,{position:[se,oe]}],Y=()=>["no-repeat",{repeat:["","x","y","space","round"]}],L=()=>["auto","cover","contain",Ry,ky,{size:[se,oe]}],R=()=>[rr,Rn,Qt],j=()=>["","none","full",c,se,oe],E=()=>["",me,Rn,Qt],I=()=>["solid","dashed","dotted","double"],q=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],$=()=>[me,rr,po,ho],ie=()=>["","none",m,se,oe],de=()=>["none",me,se,oe],Z=()=>["none",me,se,oe],be=()=>[me,se,oe],Ce=()=>[Yt,"full",...P()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[It],breakpoint:[It],color:[tl],container:[It],"drop-shadow":[It],ease:["in","out","in-out"],font:[Ty],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[It],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[It],shadow:[It],spacing:["px",me],text:[It],"text-shadow":[It],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Yt,oe,se,b]}],container:["container"],columns:[{columns:[me,oe,se,s]}],"break-after":[{"break-after":A()}],"break-before":[{"break-before":A()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:v()}],overflow:[{overflow:D()}],"overflow-x":[{"overflow-x":D()}],"overflow-y":[{"overflow-y":D()}],overscroll:[{overscroll:w()}],"overscroll-x":[{"overscroll-x":w()}],"overscroll-y":[{"overscroll-y":w()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:M()}],"inset-x":[{"inset-x":M()}],"inset-y":[{"inset-y":M()}],start:[{"inset-s":M(),start:M()}],end:[{"inset-e":M(),end:M()}],"inset-bs":[{"inset-bs":M()}],"inset-be":[{"inset-be":M()}],top:[{top:M()}],right:[{right:M()}],bottom:[{bottom:M()}],left:[{left:M()}],visibility:["visible","invisible","collapse"],z:[{z:[qt,"auto",se,oe]}],basis:[{basis:[Yt,"full","auto",s,...P()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[me,Yt,"auto","initial","none",oe]}],grow:[{grow:["",me,se,oe]}],shrink:[{shrink:["",me,se,oe]}],order:[{order:[qt,"first","last","none",se,oe]}],"grid-cols":[{"grid-cols":G()}],"col-start-end":[{col:W()}],"col-start":[{"col-start":B()}],"col-end":[{"col-end":B()}],"grid-rows":[{"grid-rows":G()}],"row-start-end":[{row:W()}],"row-start":[{"row-start":B()}],"row-end":[{"row-end":B()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":_()}],"auto-rows":[{"auto-rows":_()}],gap:[{gap:P()}],"gap-x":[{"gap-x":P()}],"gap-y":[{"gap-y":P()}],"justify-content":[{justify:[...V(),"normal"]}],"justify-items":[{"justify-items":[...K(),"normal"]}],"justify-self":[{"justify-self":["auto",...K()]}],"align-content":[{content:["normal",...V()]}],"align-items":[{items:[...K(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...K(),{baseline:["","last"]}]}],"place-content":[{"place-content":V()}],"place-items":[{"place-items":[...K(),"baseline"]}],"place-self":[{"place-self":["auto",...K()]}],p:[{p:P()}],px:[{px:P()}],py:[{py:P()}],ps:[{ps:P()}],pe:[{pe:P()}],pbs:[{pbs:P()}],pbe:[{pbe:P()}],pt:[{pt:P()}],pr:[{pr:P()}],pb:[{pb:P()}],pl:[{pl:P()}],m:[{m:z()}],mx:[{mx:z()}],my:[{my:z()}],ms:[{ms:z()}],me:[{me:z()}],mbs:[{mbs:z()}],mbe:[{mbe:z()}],mt:[{mt:z()}],mr:[{mr:z()}],mb:[{mb:z()}],ml:[{ml:z()}],"space-x":[{"space-x":P()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":P()}],"space-y-reverse":["space-y-reverse"],size:[{size:J()}],"inline-size":[{inline:["auto",...X()]}],"min-inline-size":[{"min-inline":["auto",...X()]}],"max-inline-size":[{"max-inline":["none",...X()]}],"block-size":[{block:["auto",...re()]}],"min-block-size":[{"min-block":["auto",...re()]}],"max-block-size":[{"max-block":["none",...re()]}],w:[{w:[s,"screen",...J()]}],"min-w":[{"min-w":[s,"screen","none",...J()]}],"max-w":[{"max-w":[s,"screen","none","prose",{screen:[o]},...J()]}],h:[{h:["screen","lh",...J()]}],"min-h":[{"min-h":["screen","lh","none",...J()]}],"max-h":[{"max-h":["screen","lh",...J()]}],"font-size":[{text:["base",n,Rn,Qt]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[i,My,Cy]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",rr,oe]}],"font-family":[{font:[Dy,Ay,t]}],"font-features":[{"font-features":[oe]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[r,se,oe]}],"line-clamp":[{"line-clamp":[me,"none",se,uo]}],leading:[{leading:[a,...P()]}],"list-image":[{"list-image":["none",se,oe]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",se,oe]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:C()}],"text-color":[{text:C()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...I(),"wavy"]}],"text-decoration-thickness":[{decoration:[me,"from-font","auto",se,Qt]}],"text-decoration-color":[{decoration:C()}],"underline-offset":[{"underline-offset":[me,"auto",se,oe]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:P()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",se,oe]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",se,oe]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:k()}],"bg-repeat":[{bg:Y()}],"bg-size":[{bg:L()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},qt,se,oe],radial:["",se,oe],conic:[qt,se,oe]},Ey,Ny]}],"bg-color":[{bg:C()}],"gradient-from-pos":[{from:R()}],"gradient-via-pos":[{via:R()}],"gradient-to-pos":[{to:R()}],"gradient-from":[{from:C()}],"gradient-via":[{via:C()}],"gradient-to":[{to:C()}],rounded:[{rounded:j()}],"rounded-s":[{"rounded-s":j()}],"rounded-e":[{"rounded-e":j()}],"rounded-t":[{"rounded-t":j()}],"rounded-r":[{"rounded-r":j()}],"rounded-b":[{"rounded-b":j()}],"rounded-l":[{"rounded-l":j()}],"rounded-ss":[{"rounded-ss":j()}],"rounded-se":[{"rounded-se":j()}],"rounded-ee":[{"rounded-ee":j()}],"rounded-es":[{"rounded-es":j()}],"rounded-tl":[{"rounded-tl":j()}],"rounded-tr":[{"rounded-tr":j()}],"rounded-br":[{"rounded-br":j()}],"rounded-bl":[{"rounded-bl":j()}],"border-w":[{border:E()}],"border-w-x":[{"border-x":E()}],"border-w-y":[{"border-y":E()}],"border-w-s":[{"border-s":E()}],"border-w-e":[{"border-e":E()}],"border-w-bs":[{"border-bs":E()}],"border-w-be":[{"border-be":E()}],"border-w-t":[{"border-t":E()}],"border-w-r":[{"border-r":E()}],"border-w-b":[{"border-b":E()}],"border-w-l":[{"border-l":E()}],"divide-x":[{"divide-x":E()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":E()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...I(),"hidden","none"]}],"divide-style":[{divide:[...I(),"hidden","none"]}],"border-color":[{border:C()}],"border-color-x":[{"border-x":C()}],"border-color-y":[{"border-y":C()}],"border-color-s":[{"border-s":C()}],"border-color-e":[{"border-e":C()}],"border-color-bs":[{"border-bs":C()}],"border-color-be":[{"border-be":C()}],"border-color-t":[{"border-t":C()}],"border-color-r":[{"border-r":C()}],"border-color-b":[{"border-b":C()}],"border-color-l":[{"border-l":C()}],"divide-color":[{divide:C()}],"outline-style":[{outline:[...I(),"none","hidden"]}],"outline-offset":[{"outline-offset":[me,se,oe]}],"outline-w":[{outline:["",me,Rn,Qt]}],"outline-color":[{outline:C()}],shadow:[{shadow:["","none",d,ri,ii]}],"shadow-color":[{shadow:C()}],"inset-shadow":[{"inset-shadow":["none",l,ri,ii]}],"inset-shadow-color":[{"inset-shadow":C()}],"ring-w":[{ring:E()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:C()}],"ring-offset-w":[{"ring-offset":[me,Qt]}],"ring-offset-color":[{"ring-offset":C()}],"inset-ring-w":[{"inset-ring":E()}],"inset-ring-color":[{"inset-ring":C()}],"text-shadow":[{"text-shadow":["none",g,ri,ii]}],"text-shadow-color":[{"text-shadow":C()}],opacity:[{opacity:[me,se,oe]}],"mix-blend":[{"mix-blend":[...q(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":q()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[me]}],"mask-image-linear-from-pos":[{"mask-linear-from":$()}],"mask-image-linear-to-pos":[{"mask-linear-to":$()}],"mask-image-linear-from-color":[{"mask-linear-from":C()}],"mask-image-linear-to-color":[{"mask-linear-to":C()}],"mask-image-t-from-pos":[{"mask-t-from":$()}],"mask-image-t-to-pos":[{"mask-t-to":$()}],"mask-image-t-from-color":[{"mask-t-from":C()}],"mask-image-t-to-color":[{"mask-t-to":C()}],"mask-image-r-from-pos":[{"mask-r-from":$()}],"mask-image-r-to-pos":[{"mask-r-to":$()}],"mask-image-r-from-color":[{"mask-r-from":C()}],"mask-image-r-to-color":[{"mask-r-to":C()}],"mask-image-b-from-pos":[{"mask-b-from":$()}],"mask-image-b-to-pos":[{"mask-b-to":$()}],"mask-image-b-from-color":[{"mask-b-from":C()}],"mask-image-b-to-color":[{"mask-b-to":C()}],"mask-image-l-from-pos":[{"mask-l-from":$()}],"mask-image-l-to-pos":[{"mask-l-to":$()}],"mask-image-l-from-color":[{"mask-l-from":C()}],"mask-image-l-to-color":[{"mask-l-to":C()}],"mask-image-x-from-pos":[{"mask-x-from":$()}],"mask-image-x-to-pos":[{"mask-x-to":$()}],"mask-image-x-from-color":[{"mask-x-from":C()}],"mask-image-x-to-color":[{"mask-x-to":C()}],"mask-image-y-from-pos":[{"mask-y-from":$()}],"mask-image-y-to-pos":[{"mask-y-to":$()}],"mask-image-y-from-color":[{"mask-y-from":C()}],"mask-image-y-to-color":[{"mask-y-to":C()}],"mask-image-radial":[{"mask-radial":[se,oe]}],"mask-image-radial-from-pos":[{"mask-radial-from":$()}],"mask-image-radial-to-pos":[{"mask-radial-to":$()}],"mask-image-radial-from-color":[{"mask-radial-from":C()}],"mask-image-radial-to-color":[{"mask-radial-to":C()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":S()}],"mask-image-conic-pos":[{"mask-conic":[me]}],"mask-image-conic-from-pos":[{"mask-conic-from":$()}],"mask-image-conic-to-pos":[{"mask-conic-to":$()}],"mask-image-conic-from-color":[{"mask-conic-from":C()}],"mask-image-conic-to-color":[{"mask-conic-to":C()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:k()}],"mask-repeat":[{mask:Y()}],"mask-size":[{mask:L()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",se,oe]}],filter:[{filter:["","none",se,oe]}],blur:[{blur:ie()}],brightness:[{brightness:[me,se,oe]}],contrast:[{contrast:[me,se,oe]}],"drop-shadow":[{"drop-shadow":["","none",f,ri,ii]}],"drop-shadow-color":[{"drop-shadow":C()}],grayscale:[{grayscale:["",me,se,oe]}],"hue-rotate":[{"hue-rotate":[me,se,oe]}],invert:[{invert:["",me,se,oe]}],saturate:[{saturate:[me,se,oe]}],sepia:[{sepia:["",me,se,oe]}],"backdrop-filter":[{"backdrop-filter":["","none",se,oe]}],"backdrop-blur":[{"backdrop-blur":ie()}],"backdrop-brightness":[{"backdrop-brightness":[me,se,oe]}],"backdrop-contrast":[{"backdrop-contrast":[me,se,oe]}],"backdrop-grayscale":[{"backdrop-grayscale":["",me,se,oe]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[me,se,oe]}],"backdrop-invert":[{"backdrop-invert":["",me,se,oe]}],"backdrop-opacity":[{"backdrop-opacity":[me,se,oe]}],"backdrop-saturate":[{"backdrop-saturate":[me,se,oe]}],"backdrop-sepia":[{"backdrop-sepia":["",me,se,oe]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":P()}],"border-spacing-x":[{"border-spacing-x":P()}],"border-spacing-y":[{"border-spacing-y":P()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",se,oe]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[me,"initial",se,oe]}],ease:[{ease:["linear","initial",x,se,oe]}],delay:[{delay:[me,se,oe]}],animate:[{animate:["none",T,se,oe]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[y,se,oe]}],"perspective-origin":[{"perspective-origin":v()}],rotate:[{rotate:de()}],"rotate-x":[{"rotate-x":de()}],"rotate-y":[{"rotate-y":de()}],"rotate-z":[{"rotate-z":de()}],scale:[{scale:Z()}],"scale-x":[{"scale-x":Z()}],"scale-y":[{"scale-y":Z()}],"scale-z":[{"scale-z":Z()}],"scale-3d":["scale-3d"],skew:[{skew:be()}],"skew-x":[{"skew-x":be()}],"skew-y":[{"skew-y":be()}],transform:[{transform:[se,oe,"","none","gpu","cpu"]}],"transform-origin":[{origin:v()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ce()}],"translate-x":[{"translate-x":Ce()}],"translate-y":[{"translate-y":Ce()}],"translate-z":[{"translate-z":Ce()}],"translate-none":["translate-none"],accent:[{accent:C()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:C()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",se,oe]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":P()}],"scroll-mx":[{"scroll-mx":P()}],"scroll-my":[{"scroll-my":P()}],"scroll-ms":[{"scroll-ms":P()}],"scroll-me":[{"scroll-me":P()}],"scroll-mbs":[{"scroll-mbs":P()}],"scroll-mbe":[{"scroll-mbe":P()}],"scroll-mt":[{"scroll-mt":P()}],"scroll-mr":[{"scroll-mr":P()}],"scroll-mb":[{"scroll-mb":P()}],"scroll-ml":[{"scroll-ml":P()}],"scroll-p":[{"scroll-p":P()}],"scroll-px":[{"scroll-px":P()}],"scroll-py":[{"scroll-py":P()}],"scroll-ps":[{"scroll-ps":P()}],"scroll-pe":[{"scroll-pe":P()}],"scroll-pbs":[{"scroll-pbs":P()}],"scroll-pbe":[{"scroll-pbe":P()}],"scroll-pt":[{"scroll-pt":P()}],"scroll-pr":[{"scroll-pr":P()}],"scroll-pb":[{"scroll-pb":P()}],"scroll-pl":[{"scroll-pl":P()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",se,oe]}],fill:[{fill:["none",...C()]}],"stroke-w":[{stroke:[me,Rn,Qt,uo]}],stroke:[{stroke:["none",...C()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Ly=py(Iy);function yt(...e){return Ly(Ks(e))}function Fy(e,t){let n;return(i,r)=>{clearTimeout(n),n=setTimeout(()=>e(i,r),t)}}const gn=(e,t)=>{if(t==="1D"||t==="D"||t==="1440"){const n=new Date(e*1e3);return n.setUTCHours(0,0,0,0),n.getTime()}return e.toString().length>11?e:e*1e3};var _n=e=>e.type==="checkbox",tn=e=>e instanceof Date,Ze=e=>e==null;const cl=e=>typeof e=="object";var Ge=e=>!Ze(e)&&!Array.isArray(e)&&cl(e)&&!tn(e),ul=e=>Ge(e)&&e.target?_n(e.target)?e.target.checked:e.target.value:e,Gy=e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e,dl=(e,t)=>e.has(Gy(t)),By=e=>{const t=e.constructor&&e.constructor.prototype;return Ge(t)&&t.hasOwnProperty("isPrototypeOf")},Vr=typeof window<"u"&&typeof window.HTMLElement<"u"&&typeof document<"u";function Le(e){if(e instanceof Date)return new Date(e);const t=typeof FileList<"u"&&e instanceof FileList;if(Vr&&(e instanceof Blob||t))return e;const n=Array.isArray(e);if(!n&&!(Ge(e)&&By(e)))return e;const i=n?[]:Object.create(Object.getPrototypeOf(e));for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(i[r]=Le(e[r]));return i}var Ii=e=>/^\w*$/.test(e),Re=e=>e===void 0,Kr=e=>Array.isArray(e)?e.filter(Boolean):[],Jr=e=>Kr(e.replace(/["|']|\]/g,"").split(/\.|\[/)),ne=(e,t,n)=>{if(!t||!Ge(e))return n;const i=(Ii(t)?[t]:Jr(t)).reduce((r,a)=>Ze(r)?r:r[a],e);return Re(i)||i===e?Re(e[t])?n:e[t]:i},at=e=>typeof e=="boolean",Je=e=>typeof e=="function",ke=(e,t,n)=>{let i=-1;const r=Ii(t)?[t]:Jr(t),a=r.length,o=a-1;for(;++i<a;){const s=r[i];let u=n;if(i!==o){const c=e[s];u=Ge(c)||Array.isArray(c)?c:isNaN(+r[i+1])?{}:[]}if(s==="__proto__"||s==="constructor"||s==="prototype")return;e[s]=u,e=e[s]}};const gi={BLUR:"blur",FOCUS_OUT:"focusout",CHANGE:"change"},mt={onBlur:"onBlur",onChange:"onChange",onSubmit:"onSubmit",onTouched:"onTouched",all:"all"},Lt={max:"max",min:"min",maxLength:"maxLength",minLength:"minLength",pattern:"pattern",required:"required",validate:"validate"},Xr=p.createContext(null);Xr.displayName="HookFormControlContext";const Zr=()=>p.useContext(Xr);var hl=(e,t,n,i=!0)=>{const r={defaultValues:t._defaultValues};for(const a in e)Object.defineProperty(r,a,{get:()=>{const o=a;return t._proxyFormState[o]!==mt.all&&(t._proxyFormState[o]=!i||mt.all),n&&(n[o]=!0),e[o]}});return r};const Qr=typeof window<"u"?p.useLayoutEffect:p.useEffect;function jy(e){const t=Zr(),{control:n=t,disabled:i,name:r,exact:a}=e||{},[o,s]=p.useState(n._formState),u=p.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,validatingFields:!1,isValidating:!1,isValid:!1,errors:!1});return Qr(()=>n._subscribe({name:r,formState:u.current,exact:a,callback:c=>{!i&&s({...n._formState,...c})}}),[r,i,a]),p.useEffect(()=>{u.current.isValid&&n._setValid(!0)},[n]),p.useMemo(()=>hl(o,n,u.current,!1),[o,n])}var st=e=>typeof e=="string",br=(e,t,n,i,r)=>st(e)?(i&&t.watch.add(e),ne(n,e,r)):Array.isArray(e)?e.map(a=>(i&&t.watch.add(a),ne(n,a))):(i&&(t.watchAll=!0),n),vr=e=>Ze(e)||!cl(e);function ft(e,t,n=new WeakSet){if(vr(e)||vr(t))return Object.is(e,t);if(tn(e)&&tn(t))return Object.is(e.getTime(),t.getTime());const i=Object.keys(e),r=Object.keys(t);if(i.length!==r.length)return!1;if(n.has(e)||n.has(t))return!0;n.add(e),n.add(t);for(const a of i){const o=e[a];if(!r.includes(a))return!1;if(a!=="ref"){const s=t[a];if(tn(o)&&tn(s)||Ge(o)&&Ge(s)||Array.isArray(o)&&Array.isArray(s)?!ft(o,s,n):!Object.is(o,s))return!1}}return!0}function Mn(e){const t=Zr(),{control:n=t,name:i,defaultValue:r,disabled:a,exact:o,compute:s}=e||{},u=p.useRef(r),c=p.useRef(s),d=p.useRef(void 0),l=p.useRef(n),g=p.useRef(i);c.current=s;const[f,m]=p.useState(()=>{const S=n._getWatch(i,u.current);return c.current?c.current(S):S}),y=p.useCallback(S=>{const v=br(i,n._names,S||n._formValues,!1,u.current);return c.current?c.current(v):v},[n._formValues,n._names,i]),b=p.useCallback(S=>{if(!a){const v=br(i,n._names,S||n._formValues,!1,u.current);if(c.current){const D=c.current(v);ft(D,d.current)||(m(D),d.current=D)}else m(v)}},[n._formValues,n._names,a,i]);Qr(()=>((l.current!==n||!ft(g.current,i))&&(l.current=n,g.current=i,b()),n._subscribe({name:i,formState:{values:!0},exact:o,callback:S=>{b(S.values)}})),[n,o,i,b]),p.useEffect(()=>n._removeUnmounted());const x=l.current!==n,T=g.current,A=p.useMemo(()=>{if(a)return null;const S=!x&&!ft(T,i);return x||S?y():null},[a,x,i,T,y]);return A!==null?A:f}function Uy(e){const t=Zr(),{name:n,disabled:i,control:r=t,shouldUnregister:a,defaultValue:o,exact:s=!0}=e,u=dl(r._names.array,n),c=p.useMemo(()=>ne(r._formValues,n,ne(r._defaultValues,n,o)),[r,n,o]),d=Mn({control:r,name:n,defaultValue:c,exact:s}),l=jy({control:r,name:n,exact:s}),g=p.useRef(e),f=p.useRef(void 0),m=p.useRef(r.register(n,{...e.rules,value:d,...at(e.disabled)?{disabled:e.disabled}:{}}));g.current=e;const y=p.useMemo(()=>Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!ne(l.errors,n)},isDirty:{enumerable:!0,get:()=>!!ne(l.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!ne(l.touchedFields,n)},isValidating:{enumerable:!0,get:()=>!!ne(l.validatingFields,n)},error:{enumerable:!0,get:()=>ne(l.errors,n)}}),[l,n]),b=p.useCallback(S=>m.current.onChange({target:{value:ul(S),name:n},type:gi.CHANGE}),[n]),x=p.useCallback(()=>m.current.onBlur({target:{value:ne(r._formValues,n),name:n},type:gi.BLUR}),[n,r._formValues]),T=p.useCallback(S=>{const v=ne(r._fields,n);v&&v._f&&S&&(v._f.ref={focus:()=>Je(S.focus)&&S.focus(),select:()=>Je(S.select)&&S.select(),setCustomValidity:D=>Je(S.setCustomValidity)&&S.setCustomValidity(D),reportValidity:()=>Je(S.reportValidity)&&S.reportValidity()})},[r._fields,n]),A=p.useMemo(()=>({name:n,value:d,...at(i)||l.disabled?{disabled:l.disabled||i}:{},onChange:b,onBlur:x,ref:T}),[n,i,l.disabled,b,x,T,d]);return p.useEffect(()=>{const S=r._options.shouldUnregister||a,v=f.current;v&&v!==n&&!u&&r.unregister(v),r.register(n,{...g.current.rules,...at(g.current.disabled)?{disabled:g.current.disabled}:{}});const D=(w,P)=>{const M=ne(r._fields,w);M&&M._f&&(M._f.mount=P)};if(D(n,!0),S){const w=Le(ne(r._options.defaultValues,n,g.current.defaultValue));ke(r._defaultValues,n,w),Re(ne(r._formValues,n))&&ke(r._formValues,n,w)}return!u&&r.register(n),f.current=n,()=>{(u?S&&!r._state.action:S)?r.unregister(n):D(n,!1)}},[n,r,u,a]),p.useEffect(()=>{r._setDisabledField({disabled:i,name:n})},[i,n,r]),p.useMemo(()=>({field:A,formState:l,fieldState:y}),[A,l,y])}const wr=e=>e.render(Uy(e)),pl=p.createContext(null);pl.displayName="HookFormContext";const zy=e=>{const{children:t,watch:n,getValues:i,getFieldState:r,setError:a,clearErrors:o,setValue:s,trigger:u,formState:c,resetField:d,reset:l,handleSubmit:g,unregister:f,control:m,register:y,setFocus:b,subscribe:x}=e;return p.createElement(pl.Provider,{value:p.useMemo(()=>({watch:n,getValues:i,getFieldState:r,setError:a,clearErrors:o,setValue:s,trigger:u,formState:c,resetField:d,reset:l,handleSubmit:g,unregister:f,control:m,register:y,setFocus:b,subscribe:x}),[o,m,c,r,i,g,y,l,d,a,b,s,x,u,f,n])},p.createElement(Xr.Provider,{value:m},t))};var Hy=(e,t,n,i,r)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[i]:r||!0}}:{},On=e=>Array.isArray(e)?e:[e],mo=()=>{let e=[];return{get observers(){return e},next:r=>{for(const a of e)a.next&&a.next(r)},subscribe:r=>(e.push(r),{unsubscribe:()=>{e=e.filter(a=>a!==r)}}),unsubscribe:()=>{e=[]}}};function ml(e,t){const n={};for(const i in e)if(e.hasOwnProperty(i)){const r=e[i],a=t[i];if(r&&Ge(r)&&a){const o=ml(r,a);Ge(o)&&(n[i]=o)}else e[i]&&(n[i]=a)}return n}var Ke=e=>Ge(e)&&!Object.keys(e).length,$r=e=>e.type==="file",yi=e=>{if(!Vr)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},fl=e=>e.type==="select-multiple",ea=e=>e.type==="radio",Yy=e=>ea(e)||_n(e),ar=e=>yi(e)&&e.isConnected;function qy(e,t){const n=t.slice(0,-1).length;let i=0;for(;i<n;)e=Re(e)?i++:e[t[i++]];return e}function Wy(e){for(const t in e)if(e.hasOwnProperty(t)&&!Re(e[t]))return!1;return!0}function Fe(e,t){const n=Array.isArray(t)?t:Ii(t)?[t]:Jr(t),i=n.length===1?e:qy(e,n),r=n.length-1,a=n[r];return i&&delete i[a],r!==0&&(Ge(i)&&Ke(i)||Array.isArray(i)&&Wy(i))&&Fe(e,n.slice(0,-1)),e}var _y=e=>{for(const t in e)if(Je(e[t]))return!0;return!1};function gl(e){return Array.isArray(e)||Ge(e)&&!_y(e)}function xr(e,t={}){for(const n in e){const i=e[n];gl(i)?(t[n]=Array.isArray(i)?[]:{},xr(i,t[n])):Re(i)||(t[n]=!0)}return t}function fn(e,t,n){n||(n=xr(t));for(const i in e){const r=e[i];if(gl(r))Re(t)||vr(n[i])?n[i]=xr(r,Array.isArray(r)?[]:{}):fn(r,Ze(t)?{}:t[i],n[i]);else{const a=t[i];n[i]=!ft(r,a)}}return n}const fo={value:!1,isValid:!1},go={value:!0,isValid:!0};var yl=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter(n=>n&&n.checked&&!n.disabled).map(n=>n.value);return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!Re(e[0].attributes.value)?Re(e[0].value)||e[0].value===""?go:{value:e[0].value,isValid:!0}:go:fo}return fo},bl=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:i})=>Re(e)?e:t?e===""?NaN:e&&+e:n&&st(e)?new Date(e):i?i(e):e;const yo={isValid:!1,value:null};var vl=e=>Array.isArray(e)?e.reduce((t,n)=>n&&n.checked&&!n.disabled?{isValid:!0,value:n.value}:t,yo):yo;function bo(e){const t=e.ref;return $r(t)?t.files:ea(t)?vl(e.refs).value:fl(t)?[...t.selectedOptions].map(({value:n})=>n):_n(t)?yl(e.refs).value:bl(Re(t.value)?e.ref.value:t.value,e)}var Vy=(e,t,n,i)=>{const r={};for(const a of e){const o=ne(t,a);o&&ke(r,a,o._f)}return{criteriaMode:n,names:[...e],fields:r,shouldUseNativeValidation:i}},bi=e=>e instanceof RegExp,En=e=>Re(e)?e:bi(e)?e.source:Ge(e)?bi(e.value)?e.value.source:e.value:e,vo=e=>({isOnSubmit:!e||e===mt.onSubmit,isOnBlur:e===mt.onBlur,isOnChange:e===mt.onChange,isOnAll:e===mt.all,isOnTouch:e===mt.onTouched});const wo="AsyncFunction";var Ky=e=>!!e&&!!e.validate&&!!(Je(e.validate)&&e.validate.constructor.name===wo||Ge(e.validate)&&Object.values(e.validate).find(t=>t.constructor.name===wo)),Jy=e=>e.mount&&(e.required||e.min||e.max||e.maxLength||e.minLength||e.pattern||e.validate),xo=(e,t,n)=>!n&&(t.watchAll||t.watch.has(e)||[...t.watch].some(i=>e.startsWith(i)&&/^\.\w+/.test(e.slice(i.length))));const In=(e,t,n,i)=>{for(const r of n||Object.keys(e)){const a=ne(e,r);if(a){const{_f:o,...s}=a;if(o){if(o.refs&&o.refs[0]&&t(o.refs[0],r)&&!i)return!0;if(o.ref&&t(o.ref,o.name)&&!i)return!0;if(In(s,t))break}else if(Ge(s)&&In(s,t))break}}};function Po(e,t,n){const i=ne(e,n);if(i||Ii(n))return{error:i,name:n};const r=n.split(".");for(;r.length;){const a=r.join("."),o=ne(t,a),s=ne(e,a);if(o&&!Array.isArray(o)&&n!==a)return{name:n};if(s&&s.type)return{name:a,error:s};if(s&&s.root&&s.root.type)return{name:`${a}.root`,error:s.root};r.pop()}return{name:n}}var Xy=(e,t,n,i)=>{n(e);const{name:r,...a}=e;return Ke(a)||Object.keys(a).length>=Object.keys(t).length||Object.keys(a).find(o=>t[o]===(!i||mt.all))},Zy=(e,t,n)=>!e||!t||e===t||On(e).some(i=>i&&(n?i===t:i.startsWith(t)||t.startsWith(i))),Qy=(e,t,n,i,r)=>r.isOnAll?!1:!n&&r.isOnTouch?!(t||e):(n?i.isOnBlur:r.isOnBlur)?!e:(n?i.isOnChange:r.isOnChange)?e:!0,$y=(e,t)=>!Kr(ne(e,t)).length&&Fe(e,t),eb=(e,t,n)=>{const i=On(ne(e,n));return ke(i,"root",t[n]),ke(e,n,i),e};function So(e,t,n="validate"){if(st(e)||Array.isArray(e)&&e.every(st)||at(e)&&!e)return{type:n,message:st(e)?e:"",ref:t}}var pn=e=>Ge(e)&&!bi(e)?e:{value:e,message:""},To=async(e,t,n,i,r,a)=>{const{ref:o,refs:s,required:u,maxLength:c,minLength:d,min:l,max:g,pattern:f,validate:m,name:y,valueAsNumber:b,mount:x}=e._f,T=ne(n,y);if(!x||t.has(y))return{};const A=s?s[0]:o,S=B=>{r&&A.reportValidity&&(A.setCustomValidity(at(B)?"":B||""),A.reportValidity())},v={},D=ea(o),w=_n(o),P=D||w,M=(b||$r(o))&&Re(o.value)&&Re(T)||yi(o)&&o.value===""||T===""||Array.isArray(T)&&!T.length,G=Hy.bind(null,y,i,v),W=(B,_,V,K=Lt.maxLength,z=Lt.minLength)=>{const J=B?_:V;v[y]={type:B?K:z,message:J,ref:o,...G(B?K:z,J)}};if(a?!Array.isArray(T)||!T.length:u&&(!P&&(M||Ze(T))||at(T)&&!T||w&&!yl(s).isValid||D&&!vl(s).isValid)){const{value:B,message:_}=st(u)?{value:!!u,message:u}:pn(u);if(B&&(v[y]={type:Lt.required,message:_,ref:A,...G(Lt.required,_)},!i))return S(_),v}if(!M&&(!Ze(l)||!Ze(g))){let B,_;const V=pn(g),K=pn(l);if(!Ze(T)&&!isNaN(T)){const z=o.valueAsNumber||T&&+T;Ze(V.value)||(B=z>V.value),Ze(K.value)||(_=z<K.value)}else{const z=o.valueAsDate||new Date(T),J=C=>new Date(new Date().toDateString()+" "+C),X=o.type=="time",re=o.type=="week";st(V.value)&&T&&(B=X?J(T)>J(V.value):re?T>V.value:z>new Date(V.value)),st(K.value)&&T&&(_=X?J(T)<J(K.value):re?T<K.value:z<new Date(K.value))}if((B||_)&&(W(!!B,V.message,K.message,Lt.max,Lt.min),!i))return S(v[y].message),v}if((c||d)&&!M&&(st(T)||a&&Array.isArray(T))){const B=pn(c),_=pn(d),V=!Ze(B.value)&&T.length>+B.value,K=!Ze(_.value)&&T.length<+_.value;if((V||K)&&(W(V,B.message,_.message),!i))return S(v[y].message),v}if(f&&!M&&st(T)){const{value:B,message:_}=pn(f);if(bi(B)&&!T.match(B)&&(v[y]={type:Lt.pattern,message:_,ref:o,...G(Lt.pattern,_)},!i))return S(_),v}if(m){if(Je(m)){const B=await m(T,n),_=So(B,A);if(_&&(v[y]={..._,...G(Lt.validate,_.message)},!i))return S(_.message),v}else if(Ge(m)){let B={};for(const _ in m){if(!Ke(B)&&!i)break;const V=So(await m[_](T,n),A,_);V&&(B={...V,...G(_,V.message)},S(V.message),i&&(v[y]=B))}if(!Ke(B)&&(v[y]={ref:A,...B},!i))return v}}return S(!0),v};const tb={mode:mt.onSubmit,reValidateMode:mt.onChange,shouldFocusError:!0};function nb(e={}){let t={...tb,...e},n={submitCount:0,isDirty:!1,isReady:!1,isLoading:Je(t.defaultValues),isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},validatingFields:{},errors:t.errors||{},disabled:t.disabled||!1},i={},r=Ge(t.defaultValues)||Ge(t.values)?Le(t.defaultValues||t.values)||{}:{},a=t.shouldUnregister?{}:Le(r),o={action:!1,mount:!1,watch:!1,keepIsValid:!1},s={mount:new Set,disabled:new Set,unMount:new Set,array:new Set,watch:new Set},u,c=0;const d={isDirty:!1,dirtyFields:!1,validatingFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},l={...d};let g={...l};const f={array:mo(),state:mo()},m=t.criteriaMode===mt.all,y=N=>O=>{clearTimeout(c),c=setTimeout(N,O)},b=async N=>{if(!o.keepIsValid&&!t.disabled&&(l.isValid||g.isValid||N)){let O;t.resolver?(O=Ke((await P()).errors),x()):O=await G(i,!0),O!==n.isValid&&f.state.next({isValid:O})}},x=(N,O)=>{!t.disabled&&(l.isValidating||l.validatingFields||g.isValidating||g.validatingFields)&&((N||Array.from(s.mount)).forEach(H=>{H&&(O?ke(n.validatingFields,H,O):Fe(n.validatingFields,H))}),f.state.next({validatingFields:n.validatingFields,isValidating:!Ke(n.validatingFields)}))},T=(N,O=[],H,te,ee=!0,Q=!0)=>{if(te&&H&&!t.disabled){if(o.action=!0,Q&&Array.isArray(ne(i,N))){const le=H(ne(i,N),te.argA,te.argB);ee&&ke(i,N,le)}if(Q&&Array.isArray(ne(n.errors,N))){const le=H(ne(n.errors,N),te.argA,te.argB);ee&&ke(n.errors,N,le),$y(n.errors,N)}if((l.touchedFields||g.touchedFields)&&Q&&Array.isArray(ne(n.touchedFields,N))){const le=H(ne(n.touchedFields,N),te.argA,te.argB);ee&&ke(n.touchedFields,N,le)}(l.dirtyFields||g.dirtyFields)&&(n.dirtyFields=fn(r,a)),f.state.next({name:N,isDirty:B(N,O),dirtyFields:n.dirtyFields,errors:n.errors,isValid:n.isValid})}else ke(a,N,O)},A=(N,O)=>{ke(n.errors,N,O),f.state.next({errors:n.errors})},S=N=>{n.errors=N,f.state.next({errors:n.errors,isValid:!1})},v=(N,O,H,te)=>{const ee=ne(i,N);if(ee){const Q=ne(a,N,Re(H)?ne(r,N):H);Re(Q)||te&&te.defaultChecked||O?ke(a,N,O?Q:bo(ee._f)):K(N,Q),o.mount&&!o.action&&b()}},D=(N,O,H,te,ee)=>{let Q=!1,le=!1;const ye={name:N};if(!t.disabled){if(!H||te){(l.isDirty||g.isDirty)&&(le=n.isDirty,n.isDirty=ye.isDirty=B(),Q=le!==ye.isDirty);const fe=ft(ne(r,N),O);le=!!ne(n.dirtyFields,N),fe?Fe(n.dirtyFields,N):ke(n.dirtyFields,N,!0),ye.dirtyFields=n.dirtyFields,Q=Q||(l.dirtyFields||g.dirtyFields)&&le!==!fe}if(H){const fe=ne(n.touchedFields,N);fe||(ke(n.touchedFields,N,H),ye.touchedFields=n.touchedFields,Q=Q||(l.touchedFields||g.touchedFields)&&fe!==H)}Q&&ee&&f.state.next(ye)}return Q?ye:{}},w=(N,O,H,te)=>{const ee=ne(n.errors,N),Q=(l.isValid||g.isValid)&&at(O)&&n.isValid!==O;if(t.delayError&&H?(u=y(()=>A(N,H)),u(t.delayError)):(clearTimeout(c),u=null,H?ke(n.errors,N,H):Fe(n.errors,N)),(H?!ft(ee,H):ee)||!Ke(te)||Q){const le={...te,...Q&&at(O)?{isValid:O}:{},errors:n.errors,name:N};n={...n,...le},f.state.next(le)}},P=async N=>(x(N,!0),await t.resolver(a,t.context,Vy(N||s.mount,i,t.criteriaMode,t.shouldUseNativeValidation))),M=async N=>{const{errors:O}=await P(N);if(x(N),N)for(const H of N){const te=ne(O,H);te?ke(n.errors,H,te):Fe(n.errors,H)}else n.errors=O;return O},G=async(N,O,H={valid:!0})=>{for(const te in N){const ee=N[te];if(ee){const{_f:Q,...le}=ee;if(Q){const ye=s.array.has(Q.name),fe=ee._f&&Ky(ee._f);fe&&l.validatingFields&&x([Q.name],!0);const De=await To(ee,s.disabled,a,m,t.shouldUseNativeValidation&&!O,ye);if(fe&&l.validatingFields&&x([Q.name]),De[Q.name]&&(H.valid=!1,O||e.shouldUseNativeValidation))break;!O&&(ne(De,Q.name)?ye?eb(n.errors,De,Q.name):ke(n.errors,Q.name,De[Q.name]):Fe(n.errors,Q.name))}!Ke(le)&&await G(le,O,H)}}return H.valid},W=()=>{for(const N of s.unMount){const O=ne(i,N);O&&(O._f.refs?O._f.refs.every(H=>!ar(H)):!ar(O._f.ref))&&q(N)}s.unMount=new Set},B=(N,O)=>!t.disabled&&(N&&O&&ke(a,N,O),!ft(k(),r)),_=(N,O,H)=>br(N,s,{...o.mount?a:Re(O)?r:st(N)?{[N]:O}:O},H,O),V=N=>Kr(ne(o.mount?a:r,N,t.shouldUnregister?ne(r,N,[]):[])),K=(N,O,H={})=>{const te=ne(i,N);let ee=O;if(te){const Q=te._f;Q&&(!Q.disabled&&ke(a,N,bl(O,Q)),ee=yi(Q.ref)&&Ze(O)?"":O,fl(Q.ref)?[...Q.ref.options].forEach(le=>le.selected=ee.includes(le.value)):Q.refs?_n(Q.ref)?Q.refs.forEach(le=>{(!le.defaultChecked||!le.disabled)&&(Array.isArray(ee)?le.checked=!!ee.find(ye=>ye===le.value):le.checked=ee===le.value||!!ee)}):Q.refs.forEach(le=>le.checked=le.value===ee):$r(Q.ref)?Q.ref.value="":(Q.ref.value=ee,Q.ref.type||f.state.next({name:N,values:Le(a)})))}(H.shouldDirty||H.shouldTouch)&&D(N,ee,H.shouldTouch,H.shouldDirty,!0),H.shouldValidate&&C(N)},z=(N,O,H)=>{for(const te in O){if(!O.hasOwnProperty(te))return;const ee=O[te],Q=N+"."+te,le=ne(i,Q);(s.array.has(N)||Ge(ee)||le&&!le._f)&&!tn(ee)?z(Q,ee,H):K(Q,ee,H)}},J=(N,O,H={})=>{const te=ne(i,N),ee=s.array.has(N),Q=Le(O);ke(a,N,Q),ee?(f.array.next({name:N,values:Le(a)}),(l.isDirty||l.dirtyFields||g.isDirty||g.dirtyFields)&&H.shouldDirty&&f.state.next({name:N,dirtyFields:fn(r,a),isDirty:B(N,Q)})):te&&!te._f&&!Ze(Q)?z(N,Q,H):K(N,Q,H),xo(N,s)?f.state.next({...n,name:N,values:Le(a)}):f.state.next({name:o.mount?N:void 0,values:Le(a)})},X=async N=>{o.mount=!0;const O=N.target;let H=O.name,te=!0;const ee=ne(i,H),Q=fe=>{te=Number.isNaN(fe)||tn(fe)&&isNaN(fe.getTime())||ft(fe,ne(a,H,fe))},le=vo(t.mode),ye=vo(t.reValidateMode);if(ee){let fe,De;const it=O.type?bo(ee._f):ul(N),Ue=N.type===gi.BLUR||N.type===gi.FOCUS_OUT,jt=!Jy(ee._f)&&!t.resolver&&!ne(n.errors,H)&&!ee._f.deps||Qy(Ue,ne(n.touchedFields,H),n.isSubmitted,ye,le),Ot=xo(H,s,Ue);ke(a,H,it),Ue?(!O||!O.readOnly)&&(ee._f.onBlur&&ee._f.onBlur(N),u&&u(0)):ee._f.onChange&&ee._f.onChange(N);const St=D(H,it,Ue),un=!Ke(St)||Ot;if(!Ue&&f.state.next({name:H,type:N.type,values:Le(a)}),jt)return(l.isValid||g.isValid)&&(t.mode==="onBlur"?Ue&&b():Ue||b()),un&&f.state.next({name:H,...Ot?{}:St});if(!Ue&&Ot&&f.state.next({...n}),t.resolver){const{errors:dn}=await P([H]);if(x([H]),Q(it),te){const ae=Po(n.errors,i,H),ge=Po(dn,i,ae.name||H);fe=ge.error,H=ge.name,De=Ke(dn)}}else x([H],!0),fe=(await To(ee,s.disabled,a,m,t.shouldUseNativeValidation))[H],x([H]),Q(it),te&&(fe?De=!1:(l.isValid||g.isValid)&&(De=await G(i,!0)));te&&(ee._f.deps&&(!Array.isArray(ee._f.deps)||ee._f.deps.length>0)&&C(ee._f.deps),w(H,De,fe,St))}},re=(N,O)=>{if(ne(n.errors,O)&&N.focus)return N.focus(),1},C=async(N,O={})=>{let H,te;const ee=On(N);if(t.resolver){const Q=await M(Re(N)?N:ee);H=Ke(Q),te=N?!ee.some(le=>ne(Q,le)):H}else N?(te=(await Promise.all(ee.map(async Q=>{const le=ne(i,Q);return await G(le&&le._f?{[Q]:le}:le)}))).every(Boolean),!(!te&&!n.isValid)&&b()):te=H=await G(i);return f.state.next({...!st(N)||(l.isValid||g.isValid)&&H!==n.isValid?{}:{name:N},...t.resolver||!N?{isValid:H}:{},errors:n.errors}),O.shouldFocus&&!te&&In(i,re,N?ee:s.mount),te},k=(N,O)=>{let H={...o.mount?a:r};return O&&(H=ml(O.dirtyFields?n.dirtyFields:n.touchedFields,H)),Re(N)?H:st(N)?ne(H,N):N.map(te=>ne(H,te))},Y=(N,O)=>({invalid:!!ne((O||n).errors,N),isDirty:!!ne((O||n).dirtyFields,N),error:ne((O||n).errors,N),isValidating:!!ne(n.validatingFields,N),isTouched:!!ne((O||n).touchedFields,N)}),L=N=>{const O=N?On(N):void 0;O?.forEach(H=>Fe(n.errors,H)),O?O.forEach(H=>{f.state.next({name:H,errors:n.errors})}):f.state.next({errors:{}})},R=(N,O,H)=>{const te=(ne(i,N,{_f:{}})._f||{}).ref,ee=ne(n.errors,N)||{},{ref:Q,message:le,type:ye,...fe}=ee;ke(n.errors,N,{...fe,...O,ref:te}),f.state.next({name:N,errors:n.errors,isValid:!1}),H&&H.shouldFocus&&te&&te.focus&&te.focus()},j=(N,O)=>Je(N)?f.state.subscribe({next:H=>"values"in H&&N(_(void 0,O),H)}):_(N,O,!0),E=N=>f.state.subscribe({next:O=>{Zy(N.name,O.name,N.exact)&&Xy(O,N.formState||l,Mt,N.reRenderRoot)&&N.callback({values:{...a},...n,...O,defaultValues:r})}}).unsubscribe,I=N=>(o.mount=!0,g={...g,...N.formState},E({...N,formState:{...d,...N.formState}})),q=(N,O={})=>{for(const H of N?On(N):s.mount)s.mount.delete(H),s.array.delete(H),O.keepValue||(Fe(i,H),Fe(a,H)),!O.keepError&&Fe(n.errors,H),!O.keepDirty&&Fe(n.dirtyFields,H),!O.keepTouched&&Fe(n.touchedFields,H),!O.keepIsValidating&&Fe(n.validatingFields,H),!t.shouldUnregister&&!O.keepDefaultValue&&Fe(r,H);f.state.next({values:Le(a)}),f.state.next({...n,...O.keepDirty?{isDirty:B()}:{}}),!O.keepIsValid&&b()},$=({disabled:N,name:O})=>{if(at(N)&&o.mount||N||s.disabled.has(O)){const ee=s.disabled.has(O)!==!!N;N?s.disabled.add(O):s.disabled.delete(O),ee&&o.mount&&!o.action&&b()}},ie=(N,O={})=>{let H=ne(i,N);const te=at(O.disabled)||at(t.disabled);return ke(i,N,{...H||{},_f:{...H&&H._f?H._f:{ref:{name:N}},name:N,mount:!0,...O}}),s.mount.add(N),H?$({disabled:at(O.disabled)?O.disabled:t.disabled,name:N}):v(N,!0,O.value),{...te?{disabled:O.disabled||t.disabled}:{},...t.progressive?{required:!!O.required,min:En(O.min),max:En(O.max),minLength:En(O.minLength),maxLength:En(O.maxLength),pattern:En(O.pattern)}:{},name:N,onChange:X,onBlur:X,ref:ee=>{if(ee){ie(N,O),H=ne(i,N);const Q=Re(ee.value)&&ee.querySelectorAll&&ee.querySelectorAll("input,select,textarea")[0]||ee,le=Yy(Q),ye=H._f.refs||[];if(le?ye.find(fe=>fe===Q):Q===H._f.ref)return;ke(i,N,{_f:{...H._f,...le?{refs:[...ye.filter(ar),Q,...Array.isArray(ne(r,N))?[{}]:[]],ref:{type:Q.type,name:N}}:{ref:Q}}}),v(N,!1,void 0,Q)}else H=ne(i,N,{}),H._f&&(H._f.mount=!1),(t.shouldUnregister||O.shouldUnregister)&&!(dl(s.array,N)&&o.action)&&s.unMount.add(N)}}},de=()=>t.shouldFocusError&&In(i,re,s.mount),Z=N=>{at(N)&&(f.state.next({disabled:N}),In(i,(O,H)=>{const te=ne(i,H);te&&(O.disabled=te._f.disabled||N,Array.isArray(te._f.refs)&&te._f.refs.forEach(ee=>{ee.disabled=te._f.disabled||N}))},0,!1))},be=(N,O)=>async H=>{let te;H&&(H.preventDefault&&H.preventDefault(),H.persist&&H.persist());let ee=Le(a);if(f.state.next({isSubmitting:!0}),t.resolver){const{errors:Q,values:le}=await P();x(),n.errors=Q,ee=Le(le)}else await G(i);if(s.disabled.size)for(const Q of s.disabled)Fe(ee,Q);if(Fe(n.errors,"root"),Ke(n.errors)){f.state.next({errors:{}});try{await N(ee,H)}catch(Q){te=Q}}else O&&await O({...n.errors},H),de(),setTimeout(de);if(f.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:Ke(n.errors)&&!te,submitCount:n.submitCount+1,errors:n.errors}),te)throw te},Ce=(N,O={})=>{ne(i,N)&&(Re(O.defaultValue)?J(N,Le(ne(r,N))):(J(N,O.defaultValue),ke(r,N,Le(O.defaultValue))),O.keepTouched||Fe(n.touchedFields,N),O.keepDirty||(Fe(n.dirtyFields,N),n.isDirty=O.defaultValue?B(N,Le(ne(r,N))):B()),O.keepError||(Fe(n.errors,N),l.isValid&&b()),f.state.next({...n}))},dt=(N,O={})=>{const H=N?Le(N):r,te=Le(H),ee=Ke(N),Q=ee?r:te;if(O.keepDefaultValues||(r=H),!O.keepValues){if(O.keepDirtyValues){const le=new Set([...s.mount,...Object.keys(fn(r,a))]);for(const ye of Array.from(le)){const fe=ne(n.dirtyFields,ye),De=ne(a,ye),it=ne(Q,ye);fe&&!Re(De)?ke(Q,ye,De):!fe&&!Re(it)&&J(ye,it)}}else{if(Vr&&Re(N))for(const le of s.mount){const ye=ne(i,le);if(ye&&ye._f){const fe=Array.isArray(ye._f.refs)?ye._f.refs[0]:ye._f.ref;if(yi(fe)){const De=fe.closest("form");if(De){De.reset();break}}}}if(O.keepFieldsRef)for(const le of s.mount)J(le,ne(Q,le));else i={}}a=t.shouldUnregister?O.keepDefaultValues?Le(r):{}:Le(Q),f.array.next({values:{...Q}}),f.state.next({values:{...Q}})}s={mount:O.keepDirtyValues?s.mount:new Set,unMount:new Set,array:new Set,disabled:new Set,watch:new Set,watchAll:!1,focus:""},o.mount=!l.isValid||!!O.keepIsValid||!!O.keepDirtyValues||!t.shouldUnregister&&!Ke(Q),o.watch=!!t.shouldUnregister,o.keepIsValid=!!O.keepIsValid,o.action=!1,O.keepErrors||(n.errors={}),f.state.next({submitCount:O.keepSubmitCount?n.submitCount:0,isDirty:ee?!1:O.keepDirty?n.isDirty:!!(O.keepDefaultValues&&!ft(N,r)),isSubmitted:O.keepIsSubmitted?n.isSubmitted:!1,dirtyFields:ee?{}:O.keepDirtyValues?O.keepDefaultValues&&a?fn(r,a):n.dirtyFields:O.keepDefaultValues&&N?fn(r,N):O.keepDirty?n.dirtyFields:{},touchedFields:O.keepTouched?n.touchedFields:{},errors:O.keepErrors?n.errors:{},isSubmitSuccessful:O.keepIsSubmitSuccessful?n.isSubmitSuccessful:!1,isSubmitting:!1,defaultValues:r})},Pt=(N,O)=>dt(Je(N)?N(a):N,{...t.resetOptions,...O}),He=(N,O={})=>{const H=ne(i,N),te=H&&H._f;if(te){const ee=te.refs?te.refs[0]:te.ref;ee.focus&&setTimeout(()=>{ee.focus(),O.shouldSelect&&Je(ee.select)&&ee.select()})}},Mt=N=>{n={...n,...N}},cn={control:{register:ie,unregister:q,getFieldState:Y,handleSubmit:be,setError:R,_subscribe:E,_runSchema:P,_updateIsValidating:x,_focusError:de,_getWatch:_,_getDirty:B,_setValid:b,_setFieldArray:T,_setDisabledField:$,_setErrors:S,_getFieldArray:V,_reset:dt,_resetDefaultValues:()=>Je(t.defaultValues)&&t.defaultValues().then(N=>{Pt(N,t.resetOptions),f.state.next({isLoading:!1})}),_removeUnmounted:W,_disableForm:Z,_subjects:f,_proxyFormState:l,get _fields(){return i},get _formValues(){return a},get _state(){return o},set _state(N){o=N},get _defaultValues(){return r},get _names(){return s},set _names(N){s=N},get _formState(){return n},get _options(){return t},set _options(N){t={...t,...N}}},subscribe:I,trigger:C,register:ie,handleSubmit:be,watch:j,setValue:J,getValues:k,reset:Pt,resetField:Ce,clearErrors:L,unregister:q,setError:R,setFocus:He,getFieldState:Y};return{...cn,formControl:cn}}function wl(e={}){const t=p.useRef(void 0),n=p.useRef(void 0),[i,r]=p.useState({isDirty:!1,isValidating:!1,isLoading:Je(e.defaultValues),isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},validatingFields:{},errors:e.errors||{},disabled:e.disabled||!1,isReady:!1,defaultValues:Je(e.defaultValues)?void 0:e.defaultValues});if(!t.current)if(e.formControl)t.current={...e.formControl,formState:i},e.defaultValues&&!Je(e.defaultValues)&&e.formControl.reset(e.defaultValues,e.resetOptions);else{const{formControl:o,...s}=nb(e);t.current={...s,formState:i}}const a=t.current.control;return a._options=e,Qr(()=>{const o=a._subscribe({formState:a._proxyFormState,callback:()=>r({...a._formState}),reRenderRoot:!0});return r(s=>({...s,isReady:!0})),a._formState.isReady=!0,o},[a]),p.useEffect(()=>a._disableForm(e.disabled),[a,e.disabled]),p.useEffect(()=>{e.mode&&(a._options.mode=e.mode),e.reValidateMode&&(a._options.reValidateMode=e.reValidateMode)},[a,e.mode,e.reValidateMode]),p.useEffect(()=>{e.errors&&(a._setErrors(e.errors),a._focusError())},[a,e.errors]),p.useEffect(()=>{e.shouldUnregister&&a._subjects.state.next({values:a._getWatch()})},[a,e.shouldUnregister]),p.useEffect(()=>{if(a._proxyFormState.isDirty){const o=a._getDirty();o!==i.isDirty&&a._subjects.state.next({isDirty:o})}},[a,i.isDirty]),p.useEffect(()=>{var o;e.values&&!ft(e.values,n.current)?(a._reset(e.values,{keepFieldsRef:!0,...a._options.resetOptions}),!((o=a._options.resetOptions)===null||o===void 0)&&o.keepIsValid||a._setValid(),n.current=e.values,r(s=>({...s}))):a._resetDefaultValues()},[a,e.values]),p.useEffect(()=>{a._state.mount||(a._setValid(),a._state.mount=!0),a._state.watch&&(a._state.watch=!1,a._subjects.state.next({...a._formState})),a._removeUnmounted()}),t.current.formState=p.useMemo(()=>hl(i,a),[a,i]),t.current}const $t={min:10,max:50,custom:[60,70,80,90,100]},Qe=[{ticker:"EUR_JPY",display_name:"EURJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/EUR.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"EUR JPY",type:"forex",session:"1700-1700"},{ticker:"GBP_JPY",display_name:"GBPJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"GBP JPY",type:"forex",session:"1700-1700"},{ticker:"AUD_JPY",display_name:"AUDJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/AUD.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"AUD JPY",type:"forex",session:"1700-1700"},{ticker:"NZD_JPY",display_name:"NZDJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/NZD.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"NZD JPY",type:"forex",session:"1700-1700"},{ticker:"CAD_JPY",display_name:"CADJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/CAD.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"CAD JPY",type:"forex",session:"1700-1700"},{ticker:"CHF_JPY",display_name:"CHFJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/CHF.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"CHF JPY",type:"forex",session:"1700-1700"},{ticker:"USD_JPY",display_name:"USDJPY",logo_urls:["https://cdn.iccandle.ai/web-assets/USD.svg","https://cdn.iccandle.ai/web-assets/JPY.svg"],description:"USD JPY",type:"forex",session:"1700-1700"},{ticker:"EUR_USD",display_name:"EURUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/EUR.svg","https://cdn.iccandle.ai/web-assets/USD.svg"],description:"EUR USD",type:"forex",session:"1700-1700"},{ticker:"AUD_USD",display_name:"AUDUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/AUD.svg","https://cdn.iccandle.ai/web-assets/USD.svg"],description:"AUD USD",type:"forex",session:"1700-1700"},{ticker:"NZD_USD",display_name:"NZDUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/NZD.svg","https://cdn.iccandle.ai/web-assets/USD.svg"],description:"NZD USD",type:"forex",session:"1700-1700"},{ticker:"USD_CHF",display_name:"USDCHF",logo_urls:["https://cdn.iccandle.ai/web-assets/USD.svg","https://cdn.iccandle.ai/web-assets/CHF.svg"],description:"USD CHF",type:"forex",session:"1700-1700"},{ticker:"USD_CAD",display_name:"USDCAD",logo_urls:["https://cdn.iccandle.ai/web-assets/USD.svg","https://cdn.iccandle.ai/web-assets/CAD.svg"],description:"USD CAD",type:"forex",session:"1700-1700"},{ticker:"GBP_AUD",display_name:"GBPAUD",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/AUD.svg"],description:"GBP AUD",type:"forex",session:"1700-1700"},{ticker:"GBP_CAD",display_name:"GBPCAD",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/CAD.svg"],description:"GBP CAD",type:"forex",session:"1700-1700"},{ticker:"GBP_CHF",display_name:"GBPCHF",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/CHF.svg"],description:"GBP CHF",type:"forex",session:"1700-1700"},{ticker:"GBP_NZD",display_name:"GBPNZD",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/NZD.svg"],description:"GBP NZD",type:"forex",session:"1700-1700"},{ticker:"GBP_USD",display_name:"GBPUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/GBP.svg","https://cdn.iccandle.ai/web-assets/USD.svg"],description:"GBP USD",type:"forex",session:"1700-1700"},{ticker:"NZD_CAD",display_name:"NZDCAD",logo_urls:["https://cdn.iccandle.ai/web-assets/NZD.svg","https://cdn.iccandle.ai/web-assets/CAD.svg"],description:"NZD CAD",type:"forex",session:"1700-1700"},{ticker:"EUR_CAD",display_name:"EURCAD",logo_urls:["https://cdn.iccandle.ai/web-assets/EUR.svg","https://cdn.iccandle.ai/web-assets/CAD.svg"],description:"EUR CAD",type:"forex",session:"1700-1700"},{ticker:"EUR_AUD",display_name:"EURAUD",logo_urls:["https://cdn.iccandle.ai/web-assets/EUR.svg","https://cdn.iccandle.ai/web-assets/AUD.svg"],description:"EUR AUD",type:"forex",session:"1700-1700"},{ticker:"XAU_USD",display_name:"XAUUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/XAU.svg"],description:"Gold",type:"commodity",session:"1700-1700"},{ticker:"BCO_USD",display_name:"BCOUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/BCO.svg"],description:"Brent Crude Oil",type:"commodity",session:"1700-1700"},{ticker:"SPX500_USD",display_name:"S&P500",logo_urls:["https://cdn.iccandle.ai/web-assets/SPX500.svg"],description:"S&P 500",type:"indices",session:"1700-1700"},{ticker:"NAS100_USD",display_name:"NASDAQ100",logo_urls:["https://cdn.iccandle.ai/web-assets/NAS100.svg"],description:"NASDAQ 100",type:"indices",session:"1700-1700"},{ticker:"US30_USD",display_name:"US30",logo_urls:["https://cdn.iccandle.ai/web-assets/US30.svg"],description:"US Wall St 30",type:"indices",session:"1700-1700"},{ticker:"BTCUSDT",display_name:"BTCUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/BTC.svg"],description:"BTCUSDT",type:"crypto",session:"24x7"},{ticker:"ETHUSDT",display_name:"ETHUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/ETH.svg"],description:"ETHUSDT",type:"crypto",session:"24x7"},{ticker:"XRPUSDT",display_name:"XRPUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/XRP.svg"],description:"XRPUSDT",type:"crypto",session:"24x7"},{ticker:"SOLUSDT",display_name:"SOLUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/SOL.svg"],description:"SOLUSDT",type:"crypto",session:"24x7"},{ticker:"ADAUSDT",display_name:"ADAUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/ADA.svg"],description:"ADAUSDT",type:"crypto",session:"24x7"},{ticker:"AVAUSDT",display_name:"AVAUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/AVA.svg"],description:"AVAUSDT",type:"crypto",session:"24x7"},{ticker:"AVAXUSDT",display_name:"AVAXUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/AVAX.svg"],description:"AVAXUSDT",type:"crypto",session:"24x7"},{ticker:"BNBUSDT",display_name:"BNBUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/BNB.svg"],description:"BNBUSDT",type:"crypto",session:"24x7"},{ticker:"DOGEUSDT",display_name:"DOGEUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/DOGE.svg"],description:"DOGEUSDT",type:"crypto",session:"24x7"},{ticker:"DOTUSDT",display_name:"DOTUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/DOT.svg"],description:"DOTUSDT",type:"crypto",session:"24x7"},{ticker:"TRXUSDT",display_name:"TRXUSDT",logo_urls:["https://cdn.iccandle.ai/web-assets/TRX.svg"],description:"TRXUSDT",type:"crypto",session:"24x7"},{ticker:"AAPL",display_name:"AAPL",logo_urls:["https://cdn.iccandle.ai/web-assets/AAPL.svg"],description:"Apple Inc.",type:"stock",session:"24x7"},{ticker:"AMZN",display_name:"AMZN",logo_urls:["https://cdn.iccandle.ai/web-assets/AMZN.svg"],description:"Amazon.Com Inc",type:"stock",session:"24x7"},{ticker:"BRK.B",display_name:"BRK.B",logo_urls:["https://cdn.iccandle.ai/web-assets/BRK.B.svg"],description:"BERKSHIRE HATHAWAY Class B",type:"stock",session:"24x7"},{ticker:"GOOGL",display_name:"GOOGL",logo_urls:["https://cdn.iccandle.ai/web-assets/GOOGL.svg"],description:"Alphabet Inc. Class A Common Stock",type:"stock",session:"24x7"},{ticker:"KO",display_name:"KO",logo_urls:["https://cdn.iccandle.ai/web-assets/KO.svg"],description:"Coca-Cola Company",type:"stock",session:"24x7"},{ticker:"META",display_name:"META",logo_urls:["https://cdn.iccandle.ai/web-assets/META.svg"],description:"Meta Platforms, Inc. Class A Common Stock",type:"stock",session:"24x7"},{ticker:"MSFT",display_name:"MSFT",logo_urls:["https://cdn.iccandle.ai/web-assets/MSFT.svg"],description:"Microsoft Corp",type:"stock",session:"24x7"},{ticker:"NFLX",display_name:"NFLX",logo_urls:["https://cdn.iccandle.ai/web-assets/NFLX.svg"],description:"NetFlix Inc",type:"stock",session:"24x7"},{ticker:"NKE",display_name:"NKE",logo_urls:["https://cdn.iccandle.ai/web-assets/NKE.svg"],description:"Nike, Inc.",type:"stock",session:"24x7"},{ticker:"NVDA",display_name:"NVDA",logo_urls:["https://cdn.iccandle.ai/web-assets/NVDA.svg"],description:"Nvidia Corp",type:"stock",session:"24x7"},{ticker:"TME",display_name:"TME",logo_urls:["https://cdn.iccandle.ai/web-assets/TME.svg"],description:"Tencent Music Entertainment Group American Depositary Shares, each representing two Class A Ordinary Shares",type:"stock",session:"24x7"},{ticker:"TSLA",display_name:"TSLA",logo_urls:["https://cdn.iccandle.ai/web-assets/TSLA.svg"],description:"Tesla, Inc. Common Stock",type:"stock",session:"24x7"},{ticker:"XAG_USD",display_name:"XAGUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/XAG.svg"],description:"Silver",type:"commodity",session:"1700-1700"},{ticker:"XCU_USD",display_name:"XCUUSD",logo_urls:["https://cdn.iccandle.ai/web-assets/XCU.svg"],description:"Copper",type:"commodity",session:"1700-1700"}];function ko(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function xl(...e){return t=>{let n=!1;const i=e.map(r=>{const a=ko(r,t);return!n&&typeof a=="function"&&(n=!0),a});if(n)return()=>{for(let r=0;r<i.length;r++){const a=i[r];typeof a=="function"?a():ko(e[r],null)}}}}function Bt(...e){return F.useCallback(xl(...e),e)}function Pl(e){const t=rb(e),n=F.forwardRef((i,r)=>{const{children:a,...o}=i,s=F.Children.toArray(a),u=s.find(ob);if(u){const c=u.props.children,d=s.map(l=>l===u?F.Children.count(c)>1?F.Children.only(null):F.isValidElement(c)?c.props.children:null:l);return h.jsx(t,{...o,ref:r,children:F.isValidElement(c)?F.cloneElement(c,void 0,d):null})}return h.jsx(t,{...o,ref:r,children:a})});return n.displayName=`${e}.Slot`,n}var ib=Pl("Slot");function rb(e){const t=F.forwardRef((n,i)=>{const{children:r,...a}=n;if(F.isValidElement(r)){const o=lb(r),s=sb(a,r.props);return r.type!==F.Fragment&&(s.ref=i?xl(i,o):o),F.cloneElement(r,s)}return F.Children.count(r)>1?F.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Sl=Symbol("radix.slottable");function ab(e){const t=({children:n})=>h.jsx(h.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=Sl,t}function ob(e){return F.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Sl}function sb(e,t){const n={...t};for(const i in t){const r=e[i],a=t[i];/^on[A-Z]/.test(i)?r&&a?n[i]=(...s)=>{const u=a(...s);return r(...s),u}:r&&(n[i]=r):i==="style"?n[i]={...r,...a}:i==="className"&&(n[i]=[r,a].filter(Boolean).join(" "))}return{...e,...n}}function lb(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var cb=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],xt=cb.reduce((e,t)=>{const n=Pl(`Primitive.${t}`),i=F.forwardRef((r,a)=>{const{asChild:o,...s}=r,u=o?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(u,{...s,ref:a})});return i.displayName=`Primitive.${t}`,{...e,[t]:i}},{});function ub(e,t){e&&is.flushSync(()=>e.dispatchEvent(t))}var db=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),hb="VisuallyHidden",Tl=F.forwardRef((e,t)=>h.jsx(xt.span,{...e,ref:t,style:{...db,...e.style}}));Tl.displayName=hb;var pb=Tl;function ta(e,t=[]){let n=[];function i(a,o){const s=F.createContext(o),u=n.length;n=[...n,o];const c=l=>{const{scope:g,children:f,...m}=l,y=g?.[e]?.[u]||s,b=F.useMemo(()=>m,Object.values(m));return h.jsx(y.Provider,{value:b,children:f})};c.displayName=a+"Provider";function d(l,g){const f=g?.[e]?.[u]||s,m=F.useContext(f);if(m)return m;if(o!==void 0)return o;throw new Error(`\`${l}\` must be used within \`${a}\``)}return[c,d]}const r=()=>{const a=n.map(o=>F.createContext(o));return function(s){const u=s?.[e]||a;return F.useMemo(()=>({[`__scope${e}`]:{...s,[e]:u}}),[s,u])}};return r.scopeName=e,[i,mb(r,...t)]}function mb(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const i=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(a){const o=i.reduce((s,{useScope:u,scopeName:c})=>{const l=u(a)[`__scope${c}`];return{...s,...l}},{});return F.useMemo(()=>({[`__scope${t.scopeName}`]:o}),[o])}};return n.scopeName=t.scopeName,n}function pt(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}var Vt=globalThis?.document?F.useLayoutEffect:()=>{},fb=F[" useInsertionEffect ".trim().toString()]||Vt;function kl({prop:e,defaultProp:t,onChange:n=()=>{},caller:i}){const[r,a,o]=gb({defaultProp:t,onChange:n}),s=e!==void 0,u=s?e:r;{const d=F.useRef(e!==void 0);F.useEffect(()=>{const l=d.current;l!==s&&console.warn(`${i} is changing from ${l?"controlled":"uncontrolled"} to ${s?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=s},[s,i])}const c=F.useCallback(d=>{if(s){const l=yb(d)?d(e):d;l!==e&&o.current?.(l)}else a(d)},[s,e,a,o]);return[u,c]}function gb({defaultProp:e,onChange:t}){const[n,i]=F.useState(e),r=F.useRef(n),a=F.useRef(t);return fb(()=>{a.current=t},[t]),F.useEffect(()=>{r.current!==n&&(a.current?.(n),r.current=n)},[n,r]),[n,i,a]}function yb(e){return typeof e=="function"}function bb(e,t){return F.useReducer((n,i)=>t[n][i]??n,e)}var Li=e=>{const{present:t,children:n}=e,i=vb(t),r=typeof n=="function"?n({present:i.isPresent}):F.Children.only(n),a=Bt(i.ref,wb(r));return typeof n=="function"||i.isPresent?F.cloneElement(r,{ref:a}):null};Li.displayName="Presence";function vb(e){const[t,n]=F.useState(),i=F.useRef(null),r=F.useRef(e),a=F.useRef("none"),o=e?"mounted":"unmounted",[s,u]=bb(o,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return F.useEffect(()=>{const c=ai(i.current);a.current=s==="mounted"?c:"none"},[s]),Vt(()=>{const c=i.current,d=r.current;if(d!==e){const g=a.current,f=ai(c);e?u("MOUNT"):f==="none"||c?.display==="none"?u("UNMOUNT"):u(d&&g!==f?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,u]),Vt(()=>{if(t){let c;const d=t.ownerDocument.defaultView??window,l=f=>{const y=ai(i.current).includes(CSS.escape(f.animationName));if(f.target===t&&y&&(u("ANIMATION_END"),!r.current)){const b=t.style.animationFillMode;t.style.animationFillMode="forwards",c=d.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=b)})}},g=f=>{f.target===t&&(a.current=ai(i.current))};return t.addEventListener("animationstart",g),t.addEventListener("animationcancel",l),t.addEventListener("animationend",l),()=>{d.clearTimeout(c),t.removeEventListener("animationstart",g),t.removeEventListener("animationcancel",l),t.removeEventListener("animationend",l)}}else u("ANIMATION_END")},[t,u]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:F.useCallback(c=>{i.current=c?getComputedStyle(c):null,n(c)},[])}}function ai(e){return e?.animationName||"none"}function wb(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var xb=F[" useId ".trim().toString()]||(()=>{}),Pb=0;function Sb(e){const[t,n]=F.useState(xb());return Vt(()=>{n(i=>i??String(Pb++))},[e]),t?`radix-${t}`:""}function Fi(e){const t=F.useRef(e);return F.useEffect(()=>{t.current=e}),F.useMemo(()=>(...n)=>t.current?.(...n),[])}function Tb(e,t=globalThis?.document){const n=Fi(e);F.useEffect(()=>{const i=r=>{r.key==="Escape"&&n(r)};return t.addEventListener("keydown",i,{capture:!0}),()=>t.removeEventListener("keydown",i,{capture:!0})},[n,t])}var kb="DismissableLayer",Pr="dismissableLayer.update",Cb="dismissableLayer.pointerDownOutside",Ab="dismissableLayer.focusOutside",Co,Cl=F.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Al=F.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:i,onPointerDownOutside:r,onFocusOutside:a,onInteractOutside:o,onDismiss:s,...u}=e,c=F.useContext(Cl),[d,l]=F.useState(null),g=d?.ownerDocument??globalThis?.document,[,f]=F.useState({}),m=Bt(t,w=>l(w)),y=Array.from(c.layers),[b]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),x=y.indexOf(b),T=d?y.indexOf(d):-1,A=c.layersWithOutsidePointerEventsDisabled.size>0,S=T>=x,v=Rb(w=>{const P=w.target,M=[...c.branches].some(G=>G.contains(P));!S||M||(r?.(w),o?.(w),w.defaultPrevented||s?.())},g),D=Eb(w=>{const P=w.target;[...c.branches].some(G=>G.contains(P))||(a?.(w),o?.(w),w.defaultPrevented||s?.())},g);return Tb(w=>{T===c.layers.size-1&&(i?.(w),!w.defaultPrevented&&s&&(w.preventDefault(),s()))},g),F.useEffect(()=>{if(d)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(Co=g.body.style.pointerEvents,g.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(d)),c.layers.add(d),Ao(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=Co)}},[d,g,n,c]),F.useEffect(()=>()=>{d&&(c.layers.delete(d),c.layersWithOutsidePointerEventsDisabled.delete(d),Ao())},[d,c]),F.useEffect(()=>{const w=()=>f({});return document.addEventListener(Pr,w),()=>document.removeEventListener(Pr,w)},[]),h.jsx(xt.div,{...u,ref:m,style:{pointerEvents:A?S?"auto":"none":void 0,...e.style},onFocusCapture:pt(e.onFocusCapture,D.onFocusCapture),onBlurCapture:pt(e.onBlurCapture,D.onBlurCapture),onPointerDownCapture:pt(e.onPointerDownCapture,v.onPointerDownCapture)})});Al.displayName=kb;var Nb="DismissableLayerBranch",Db=F.forwardRef((e,t)=>{const n=F.useContext(Cl),i=F.useRef(null),r=Bt(t,i);return F.useEffect(()=>{const a=i.current;if(a)return n.branches.add(a),()=>{n.branches.delete(a)}},[n.branches]),h.jsx(xt.div,{...e,ref:r})});Db.displayName=Nb;function Rb(e,t=globalThis?.document){const n=Fi(e),i=F.useRef(!1),r=F.useRef(()=>{});return F.useEffect(()=>{const a=s=>{if(s.target&&!i.current){let u=function(){Nl(Cb,n,c,{discrete:!0})};const c={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=u,t.addEventListener("click",r.current,{once:!0})):u()}else t.removeEventListener("click",r.current);i.current=!1},o=window.setTimeout(()=>{t.addEventListener("pointerdown",a)},0);return()=>{window.clearTimeout(o),t.removeEventListener("pointerdown",a),t.removeEventListener("click",r.current)}},[t,n]),{onPointerDownCapture:()=>i.current=!0}}function Eb(e,t=globalThis?.document){const n=Fi(e),i=F.useRef(!1);return F.useEffect(()=>{const r=a=>{a.target&&!i.current&&Nl(Ab,n,{originalEvent:a},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,n]),{onFocusCapture:()=>i.current=!0,onBlurCapture:()=>i.current=!1}}function Ao(){const e=new CustomEvent(Pr);document.dispatchEvent(e)}function Nl(e,t,n,{discrete:i}){const r=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),i?ub(r,a):r.dispatchEvent(a)}var Mb="Portal",Dl=F.forwardRef((e,t)=>{const{container:n,...i}=e,[r,a]=F.useState(!1);Vt(()=>a(!0),[]);const o=n||r&&globalThis?.document?.body;return o?Dt.createPortal(h.jsx(xt.div,{...i,ref:t}),o):null});Dl.displayName=Mb;function Ob(e){const t=F.useRef({value:e,previous:e});return F.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function Rl(e){const[t,n]=F.useState(void 0);return Vt(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const i=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const a=r[0];let o,s;if("borderBoxSize"in a){const u=a.borderBoxSize,c=Array.isArray(u)?u[0]:u;o=c.inlineSize,s=c.blockSize}else o=e.offsetWidth,s=e.offsetHeight;n({width:o,height:s})});return i.observe(e,{box:"border-box"}),()=>i.unobserve(e)}else n(void 0)},[e]),t}var Gi="Checkbox",[Ib]=ta(Gi),[Lb,na]=Ib(Gi);function Fb(e){const{__scopeCheckbox:t,checked:n,children:i,defaultChecked:r,disabled:a,form:o,name:s,onCheckedChange:u,required:c,value:d="on",internal_do_not_use_render:l}=e,[g,f]=kl({prop:n,defaultProp:r??!1,onChange:u,caller:Gi}),[m,y]=F.useState(null),[b,x]=F.useState(null),T=F.useRef(!1),A=m?!!o||!!m.closest("form"):!0,S={checked:g,disabled:a,setChecked:f,control:m,setControl:y,name:s,form:o,value:d,hasConsumerStoppedPropagationRef:T,required:c,defaultChecked:_t(r)?!1:r,isFormControl:A,bubbleInput:b,setBubbleInput:x};return h.jsx(Lb,{scope:t,...S,children:Gb(l)?l(S):i})}var El="CheckboxTrigger",Ml=F.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:n,...i},r)=>{const{control:a,value:o,disabled:s,checked:u,required:c,setControl:d,setChecked:l,hasConsumerStoppedPropagationRef:g,isFormControl:f,bubbleInput:m}=na(El,e),y=Bt(r,d),b=F.useRef(u);return F.useEffect(()=>{const x=a?.form;if(x){const T=()=>l(b.current);return x.addEventListener("reset",T),()=>x.removeEventListener("reset",T)}},[a,l]),h.jsx(xt.button,{type:"button",role:"checkbox","aria-checked":_t(u)?"mixed":u,"aria-required":c,"data-state":Bl(u),"data-disabled":s?"":void 0,disabled:s,value:o,...i,ref:y,onKeyDown:pt(t,x=>{x.key==="Enter"&&x.preventDefault()}),onClick:pt(n,x=>{l(T=>_t(T)?!0:!T),m&&f&&(g.current=x.isPropagationStopped(),g.current||x.stopPropagation())})})});Ml.displayName=El;var Ol=F.forwardRef((e,t)=>{const{__scopeCheckbox:n,name:i,checked:r,defaultChecked:a,required:o,disabled:s,value:u,onCheckedChange:c,form:d,...l}=e;return h.jsx(Fb,{__scopeCheckbox:n,checked:r,defaultChecked:a,disabled:s,required:o,onCheckedChange:c,name:i,form:d,value:u,internal_do_not_use_render:({isFormControl:g})=>h.jsxs(h.Fragment,{children:[h.jsx(Ml,{...l,ref:t,__scopeCheckbox:n}),g&&h.jsx(Gl,{__scopeCheckbox:n})]})})});Ol.displayName=Gi;var Il="CheckboxIndicator",Ll=F.forwardRef((e,t)=>{const{__scopeCheckbox:n,forceMount:i,...r}=e,a=na(Il,n);return h.jsx(Li,{present:i||_t(a.checked)||a.checked===!0,children:h.jsx(xt.span,{"data-state":Bl(a.checked),"data-disabled":a.disabled?"":void 0,...r,ref:t,style:{pointerEvents:"none",...e.style}})})});Ll.displayName=Il;var Fl="CheckboxBubbleInput",Gl=F.forwardRef(({__scopeCheckbox:e,...t},n)=>{const{control:i,hasConsumerStoppedPropagationRef:r,checked:a,defaultChecked:o,required:s,disabled:u,name:c,value:d,form:l,bubbleInput:g,setBubbleInput:f}=na(Fl,e),m=Bt(n,f),y=Ob(a),b=Rl(i);F.useEffect(()=>{const T=g;if(!T)return;const A=window.HTMLInputElement.prototype,v=Object.getOwnPropertyDescriptor(A,"checked").set,D=!r.current;if(y!==a&&v){const w=new Event("click",{bubbles:D});T.indeterminate=_t(a),v.call(T,_t(a)?!1:a),T.dispatchEvent(w)}},[g,y,a,r]);const x=F.useRef(_t(a)?!1:a);return h.jsx(xt.input,{type:"checkbox","aria-hidden":!0,defaultChecked:o??x.current,required:s,disabled:u,name:c,value:d,form:l,...t,tabIndex:-1,ref:m,style:{...t.style,...b,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});Gl.displayName=Fl;function Gb(e){return typeof e=="function"}function _t(e){return e==="indeterminate"}function Bl(e){return _t(e)?"indeterminate":e?"checked":"unchecked"}const Bb=["top","right","bottom","left"],Kt=Math.min,ot=Math.max,vi=Math.round,oi=Math.floor,Nt=e=>({x:e,y:e}),jb={left:"right",right:"left",bottom:"top",top:"bottom"},Ub={start:"end",end:"start"};function Sr(e,t,n){return ot(e,Kt(t,n))}function Ft(e,t){return typeof e=="function"?e(t):e}function Gt(e){return e.split("-")[0]}function Sn(e){return e.split("-")[1]}function ia(e){return e==="x"?"y":"x"}function ra(e){return e==="y"?"height":"width"}const zb=new Set(["top","bottom"]);function Ct(e){return zb.has(Gt(e))?"y":"x"}function aa(e){return ia(Ct(e))}function Hb(e,t,n){n===void 0&&(n=!1);const i=Sn(e),r=aa(e),a=ra(r);let o=r==="x"?i===(n?"end":"start")?"right":"left":i==="start"?"bottom":"top";return t.reference[a]>t.floating[a]&&(o=wi(o)),[o,wi(o)]}function Yb(e){const t=wi(e);return[Tr(e),t,Tr(t)]}function Tr(e){return e.replace(/start|end/g,t=>Ub[t])}const No=["left","right"],Do=["right","left"],qb=["top","bottom"],Wb=["bottom","top"];function _b(e,t,n){switch(e){case"top":case"bottom":return n?t?Do:No:t?No:Do;case"left":case"right":return t?qb:Wb;default:return[]}}function Vb(e,t,n,i){const r=Sn(e);let a=_b(Gt(e),n==="start",i);return r&&(a=a.map(o=>o+"-"+r),t&&(a=a.concat(a.map(Tr)))),a}function wi(e){return e.replace(/left|right|bottom|top/g,t=>jb[t])}function Kb(e){return{top:0,right:0,bottom:0,left:0,...e}}function jl(e){return typeof e!="number"?Kb(e):{top:e,right:e,bottom:e,left:e}}function xi(e){const{x:t,y:n,width:i,height:r}=e;return{width:i,height:r,top:n,left:t,right:t+i,bottom:n+r,x:t,y:n}}function Ro(e,t,n){let{reference:i,floating:r}=e;const a=Ct(t),o=aa(t),s=ra(o),u=Gt(t),c=a==="y",d=i.x+i.width/2-r.width/2,l=i.y+i.height/2-r.height/2,g=i[s]/2-r[s]/2;let f;switch(u){case"top":f={x:d,y:i.y-r.height};break;case"bottom":f={x:d,y:i.y+i.height};break;case"right":f={x:i.x+i.width,y:l};break;case"left":f={x:i.x-r.width,y:l};break;default:f={x:i.x,y:i.y}}switch(Sn(t)){case"start":f[o]-=g*(n&&c?-1:1);break;case"end":f[o]+=g*(n&&c?-1:1);break}return f}async function Jb(e,t){var n;t===void 0&&(t={});const{x:i,y:r,platform:a,rects:o,elements:s,strategy:u}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:l="floating",altBoundary:g=!1,padding:f=0}=Ft(t,e),m=jl(f),b=s[g?l==="floating"?"reference":"floating":l],x=xi(await a.getClippingRect({element:(n=await(a.isElement==null?void 0:a.isElement(b)))==null||n?b:b.contextElement||await(a.getDocumentElement==null?void 0:a.getDocumentElement(s.floating)),boundary:c,rootBoundary:d,strategy:u})),T=l==="floating"?{x:i,y:r,width:o.floating.width,height:o.floating.height}:o.reference,A=await(a.getOffsetParent==null?void 0:a.getOffsetParent(s.floating)),S=await(a.isElement==null?void 0:a.isElement(A))?await(a.getScale==null?void 0:a.getScale(A))||{x:1,y:1}:{x:1,y:1},v=xi(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:s,rect:T,offsetParent:A,strategy:u}):T);return{top:(x.top-v.top+m.top)/S.y,bottom:(v.bottom-x.bottom+m.bottom)/S.y,left:(x.left-v.left+m.left)/S.x,right:(v.right-x.right+m.right)/S.x}}const Xb=async(e,t,n)=>{const{placement:i="bottom",strategy:r="absolute",middleware:a=[],platform:o}=n,s=a.filter(Boolean),u=await(o.isRTL==null?void 0:o.isRTL(t));let c=await o.getElementRects({reference:e,floating:t,strategy:r}),{x:d,y:l}=Ro(c,i,u),g=i,f={},m=0;for(let b=0;b<s.length;b++){var y;const{name:x,fn:T}=s[b],{x:A,y:S,data:v,reset:D}=await T({x:d,y:l,initialPlacement:i,placement:g,strategy:r,middlewareData:f,rects:c,platform:{...o,detectOverflow:(y=o.detectOverflow)!=null?y:Jb},elements:{reference:e,floating:t}});d=A??d,l=S??l,f={...f,[x]:{...f[x],...v}},D&&m<=50&&(m++,typeof D=="object"&&(D.placement&&(g=D.placement),D.rects&&(c=D.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:r}):D.rects),{x:d,y:l}=Ro(c,g,u)),b=-1)}return{x:d,y:l,placement:g,strategy:r,middlewareData:f}},Zb=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:i,placement:r,rects:a,platform:o,elements:s,middlewareData:u}=t,{element:c,padding:d=0}=Ft(e,t)||{};if(c==null)return{};const l=jl(d),g={x:n,y:i},f=aa(r),m=ra(f),y=await o.getDimensions(c),b=f==="y",x=b?"top":"left",T=b?"bottom":"right",A=b?"clientHeight":"clientWidth",S=a.reference[m]+a.reference[f]-g[f]-a.floating[m],v=g[f]-a.reference[f],D=await(o.getOffsetParent==null?void 0:o.getOffsetParent(c));let w=D?D[A]:0;(!w||!await(o.isElement==null?void 0:o.isElement(D)))&&(w=s.floating[A]||a.floating[m]);const P=S/2-v/2,M=w/2-y[m]/2-1,G=Kt(l[x],M),W=Kt(l[T],M),B=G,_=w-y[m]-W,V=w/2-y[m]/2+P,K=Sr(B,V,_),z=!u.arrow&&Sn(r)!=null&&V!==K&&a.reference[m]/2-(V<B?G:W)-y[m]/2<0,J=z?V<B?V-B:V-_:0;return{[f]:g[f]+J,data:{[f]:K,centerOffset:V-K-J,...z&&{alignmentOffset:J}},reset:z}}}),Qb=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,i;const{placement:r,middlewareData:a,rects:o,initialPlacement:s,platform:u,elements:c}=t,{mainAxis:d=!0,crossAxis:l=!0,fallbackPlacements:g,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:y=!0,...b}=Ft(e,t);if((n=a.arrow)!=null&&n.alignmentOffset)return{};const x=Gt(r),T=Ct(s),A=Gt(s)===s,S=await(u.isRTL==null?void 0:u.isRTL(c.floating)),v=g||(A||!y?[wi(s)]:Yb(s)),D=m!=="none";!g&&D&&v.push(...Vb(s,y,m,S));const w=[s,...v],P=await u.detectOverflow(t,b),M=[];let G=((i=a.flip)==null?void 0:i.overflows)||[];if(d&&M.push(P[x]),l){const V=Hb(r,o,S);M.push(P[V[0]],P[V[1]])}if(G=[...G,{placement:r,overflows:M}],!M.every(V=>V<=0)){var W,B;const V=(((W=a.flip)==null?void 0:W.index)||0)+1,K=w[V];if(K&&(!(l==="alignment"?T!==Ct(K):!1)||G.every(X=>Ct(X.placement)===T?X.overflows[0]>0:!0)))return{data:{index:V,overflows:G},reset:{placement:K}};let z=(B=G.filter(J=>J.overflows[0]<=0).sort((J,X)=>J.overflows[1]-X.overflows[1])[0])==null?void 0:B.placement;if(!z)switch(f){case"bestFit":{var _;const J=(_=G.filter(X=>{if(D){const re=Ct(X.placement);return re===T||re==="y"}return!0}).map(X=>[X.placement,X.overflows.filter(re=>re>0).reduce((re,C)=>re+C,0)]).sort((X,re)=>X[1]-re[1])[0])==null?void 0:_[0];J&&(z=J);break}case"initialPlacement":z=s;break}if(r!==z)return{reset:{placement:z}}}return{}}}};function Eo(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Mo(e){return Bb.some(t=>e[t]>=0)}const $b=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n,platform:i}=t,{strategy:r="referenceHidden",...a}=Ft(e,t);switch(r){case"referenceHidden":{const o=await i.detectOverflow(t,{...a,elementContext:"reference"}),s=Eo(o,n.reference);return{data:{referenceHiddenOffsets:s,referenceHidden:Mo(s)}}}case"escaped":{const o=await i.detectOverflow(t,{...a,altBoundary:!0}),s=Eo(o,n.floating);return{data:{escapedOffsets:s,escaped:Mo(s)}}}default:return{}}}}},Ul=new Set(["left","top"]);async function ev(e,t){const{placement:n,platform:i,elements:r}=e,a=await(i.isRTL==null?void 0:i.isRTL(r.floating)),o=Gt(n),s=Sn(n),u=Ct(n)==="y",c=Ul.has(o)?-1:1,d=a&&u?-1:1,l=Ft(t,e);let{mainAxis:g,crossAxis:f,alignmentAxis:m}=typeof l=="number"?{mainAxis:l,crossAxis:0,alignmentAxis:null}:{mainAxis:l.mainAxis||0,crossAxis:l.crossAxis||0,alignmentAxis:l.alignmentAxis};return s&&typeof m=="number"&&(f=s==="end"?m*-1:m),u?{x:f*d,y:g*c}:{x:g*c,y:f*d}}const tv=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,i;const{x:r,y:a,placement:o,middlewareData:s}=t,u=await ev(t,e);return o===((n=s.offset)==null?void 0:n.placement)&&(i=s.arrow)!=null&&i.alignmentOffset?{}:{x:r+u.x,y:a+u.y,data:{...u,placement:o}}}}},nv=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:i,placement:r,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:u={fn:x=>{let{x:T,y:A}=x;return{x:T,y:A}}},...c}=Ft(e,t),d={x:n,y:i},l=await a.detectOverflow(t,c),g=Ct(Gt(r)),f=ia(g);let m=d[f],y=d[g];if(o){const x=f==="y"?"top":"left",T=f==="y"?"bottom":"right",A=m+l[x],S=m-l[T];m=Sr(A,m,S)}if(s){const x=g==="y"?"top":"left",T=g==="y"?"bottom":"right",A=y+l[x],S=y-l[T];y=Sr(A,y,S)}const b=u.fn({...t,[f]:m,[g]:y});return{...b,data:{x:b.x-n,y:b.y-i,enabled:{[f]:o,[g]:s}}}}}},iv=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:i,placement:r,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:u=!0,crossAxis:c=!0}=Ft(e,t),d={x:n,y:i},l=Ct(r),g=ia(l);let f=d[g],m=d[l];const y=Ft(s,t),b=typeof y=="number"?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(u){const A=g==="y"?"height":"width",S=a.reference[g]-a.floating[A]+b.mainAxis,v=a.reference[g]+a.reference[A]-b.mainAxis;f<S?f=S:f>v&&(f=v)}if(c){var x,T;const A=g==="y"?"width":"height",S=Ul.has(Gt(r)),v=a.reference[l]-a.floating[A]+(S&&((x=o.offset)==null?void 0:x[l])||0)+(S?0:b.crossAxis),D=a.reference[l]+a.reference[A]+(S?0:((T=o.offset)==null?void 0:T[l])||0)-(S?b.crossAxis:0);m<v?m=v:m>D&&(m=D)}return{[g]:f,[l]:m}}}},rv=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,i;const{placement:r,rects:a,platform:o,elements:s}=t,{apply:u=()=>{},...c}=Ft(e,t),d=await o.detectOverflow(t,c),l=Gt(r),g=Sn(r),f=Ct(r)==="y",{width:m,height:y}=a.floating;let b,x;l==="top"||l==="bottom"?(b=l,x=g===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?"start":"end")?"left":"right"):(x=l,b=g==="end"?"top":"bottom");const T=y-d.top-d.bottom,A=m-d.left-d.right,S=Kt(y-d[b],T),v=Kt(m-d[x],A),D=!t.middlewareData.shift;let w=S,P=v;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(P=A),(i=t.middlewareData.shift)!=null&&i.enabled.y&&(w=T),D&&!g){const G=ot(d.left,0),W=ot(d.right,0),B=ot(d.top,0),_=ot(d.bottom,0);f?P=m-2*(G!==0||W!==0?G+W:ot(d.left,d.right)):w=y-2*(B!==0||_!==0?B+_:ot(d.top,d.bottom))}await u({...t,availableWidth:P,availableHeight:w});const M=await o.getDimensions(s.floating);return m!==M.width||y!==M.height?{reset:{rects:!0}}:{}}}};function Bi(){return typeof window<"u"}function Tn(e){return zl(e)?(e.nodeName||"").toLowerCase():"#document"}function lt(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Et(e){var t;return(t=(zl(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function zl(e){return Bi()?e instanceof Node||e instanceof lt(e).Node:!1}function bt(e){return Bi()?e instanceof Element||e instanceof lt(e).Element:!1}function Rt(e){return Bi()?e instanceof HTMLElement||e instanceof lt(e).HTMLElement:!1}function Oo(e){return!Bi()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof lt(e).ShadowRoot}const av=new Set(["inline","contents"]);function Vn(e){const{overflow:t,overflowX:n,overflowY:i,display:r}=vt(e);return/auto|scroll|overlay|hidden|clip/.test(t+i+n)&&!av.has(r)}const ov=new Set(["table","td","th"]);function sv(e){return ov.has(Tn(e))}const lv=[":popover-open",":modal"];function ji(e){return lv.some(t=>{try{return e.matches(t)}catch{return!1}})}const cv=["transform","translate","scale","rotate","perspective"],uv=["transform","translate","scale","rotate","perspective","filter"],dv=["paint","layout","strict","content"];function oa(e){const t=sa(),n=bt(e)?vt(e):e;return cv.some(i=>n[i]?n[i]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||uv.some(i=>(n.willChange||"").includes(i))||dv.some(i=>(n.contain||"").includes(i))}function hv(e){let t=Jt(e);for(;Rt(t)&&!wn(t);){if(oa(t))return t;if(ji(t))return null;t=Jt(t)}return null}function sa(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const pv=new Set(["html","body","#document"]);function wn(e){return pv.has(Tn(e))}function vt(e){return lt(e).getComputedStyle(e)}function Ui(e){return bt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Jt(e){if(Tn(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Oo(e)&&e.host||Et(e);return Oo(t)?t.host:t}function Hl(e){const t=Jt(e);return wn(t)?e.ownerDocument?e.ownerDocument.body:e.body:Rt(t)&&Vn(t)?t:Hl(t)}function jn(e,t,n){var i;t===void 0&&(t=[]),n===void 0&&(n=!0);const r=Hl(e),a=r===((i=e.ownerDocument)==null?void 0:i.body),o=lt(r);if(a){const s=kr(o);return t.concat(o,o.visualViewport||[],Vn(r)?r:[],s&&n?jn(s):[])}return t.concat(r,jn(r,[],n))}function kr(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Yl(e){const t=vt(e);let n=parseFloat(t.width)||0,i=parseFloat(t.height)||0;const r=Rt(e),a=r?e.offsetWidth:n,o=r?e.offsetHeight:i,s=vi(n)!==a||vi(i)!==o;return s&&(n=a,i=o),{width:n,height:i,$:s}}function la(e){return bt(e)?e:e.contextElement}function bn(e){const t=la(e);if(!Rt(t))return Nt(1);const n=t.getBoundingClientRect(),{width:i,height:r,$:a}=Yl(t);let o=(a?vi(n.width):n.width)/i,s=(a?vi(n.height):n.height)/r;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}const mv=Nt(0);function ql(e){const t=lt(e);return!sa()||!t.visualViewport?mv:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function fv(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==lt(e)?!1:t}function sn(e,t,n,i){t===void 0&&(t=!1),n===void 0&&(n=!1);const r=e.getBoundingClientRect(),a=la(e);let o=Nt(1);t&&(i?bt(i)&&(o=bn(i)):o=bn(e));const s=fv(a,n,i)?ql(a):Nt(0);let u=(r.left+s.x)/o.x,c=(r.top+s.y)/o.y,d=r.width/o.x,l=r.height/o.y;if(a){const g=lt(a),f=i&&bt(i)?lt(i):i;let m=g,y=kr(m);for(;y&&i&&f!==m;){const b=bn(y),x=y.getBoundingClientRect(),T=vt(y),A=x.left+(y.clientLeft+parseFloat(T.paddingLeft))*b.x,S=x.top+(y.clientTop+parseFloat(T.paddingTop))*b.y;u*=b.x,c*=b.y,d*=b.x,l*=b.y,u+=A,c+=S,m=lt(y),y=kr(m)}}return xi({width:d,height:l,x:u,y:c})}function zi(e,t){const n=Ui(e).scrollLeft;return t?t.left+n:sn(Et(e)).left+n}function Wl(e,t){const n=e.getBoundingClientRect(),i=n.left+t.scrollLeft-zi(e,n),r=n.top+t.scrollTop;return{x:i,y:r}}function gv(e){let{elements:t,rect:n,offsetParent:i,strategy:r}=e;const a=r==="fixed",o=Et(i),s=t?ji(t.floating):!1;if(i===o||s&&a)return n;let u={scrollLeft:0,scrollTop:0},c=Nt(1);const d=Nt(0),l=Rt(i);if((l||!l&&!a)&&((Tn(i)!=="body"||Vn(o))&&(u=Ui(i)),Rt(i))){const f=sn(i);c=bn(i),d.x=f.x+i.clientLeft,d.y=f.y+i.clientTop}const g=o&&!l&&!a?Wl(o,u):Nt(0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-u.scrollLeft*c.x+d.x+g.x,y:n.y*c.y-u.scrollTop*c.y+d.y+g.y}}function yv(e){return Array.from(e.getClientRects())}function bv(e){const t=Et(e),n=Ui(e),i=e.ownerDocument.body,r=ot(t.scrollWidth,t.clientWidth,i.scrollWidth,i.clientWidth),a=ot(t.scrollHeight,t.clientHeight,i.scrollHeight,i.clientHeight);let o=-n.scrollLeft+zi(e);const s=-n.scrollTop;return vt(i).direction==="rtl"&&(o+=ot(t.clientWidth,i.clientWidth)-r),{width:r,height:a,x:o,y:s}}const Io=25;function vv(e,t){const n=lt(e),i=Et(e),r=n.visualViewport;let a=i.clientWidth,o=i.clientHeight,s=0,u=0;if(r){a=r.width,o=r.height;const d=sa();(!d||d&&t==="fixed")&&(s=r.offsetLeft,u=r.offsetTop)}const c=zi(i);if(c<=0){const d=i.ownerDocument,l=d.body,g=getComputedStyle(l),f=d.compatMode==="CSS1Compat"&&parseFloat(g.marginLeft)+parseFloat(g.marginRight)||0,m=Math.abs(i.clientWidth-l.clientWidth-f);m<=Io&&(a-=m)}else c<=Io&&(a+=c);return{width:a,height:o,x:s,y:u}}const wv=new Set(["absolute","fixed"]);function xv(e,t){const n=sn(e,!0,t==="fixed"),i=n.top+e.clientTop,r=n.left+e.clientLeft,a=Rt(e)?bn(e):Nt(1),o=e.clientWidth*a.x,s=e.clientHeight*a.y,u=r*a.x,c=i*a.y;return{width:o,height:s,x:u,y:c}}function Lo(e,t,n){let i;if(t==="viewport")i=vv(e,n);else if(t==="document")i=bv(Et(e));else if(bt(t))i=xv(t,n);else{const r=ql(e);i={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return xi(i)}function _l(e,t){const n=Jt(e);return n===t||!bt(n)||wn(n)?!1:vt(n).position==="fixed"||_l(n,t)}function Pv(e,t){const n=t.get(e);if(n)return n;let i=jn(e,[],!1).filter(s=>bt(s)&&Tn(s)!=="body"),r=null;const a=vt(e).position==="fixed";let o=a?Jt(e):e;for(;bt(o)&&!wn(o);){const s=vt(o),u=oa(o);!u&&s.position==="fixed"&&(r=null),(a?!u&&!r:!u&&s.position==="static"&&!!r&&wv.has(r.position)||Vn(o)&&!u&&_l(e,o))?i=i.filter(d=>d!==o):r=s,o=Jt(o)}return t.set(e,i),i}function Sv(e){let{element:t,boundary:n,rootBoundary:i,strategy:r}=e;const o=[...n==="clippingAncestors"?ji(t)?[]:Pv(t,this._c):[].concat(n),i],s=o[0],u=o.reduce((c,d)=>{const l=Lo(t,d,r);return c.top=ot(l.top,c.top),c.right=Kt(l.right,c.right),c.bottom=Kt(l.bottom,c.bottom),c.left=ot(l.left,c.left),c},Lo(t,s,r));return{width:u.right-u.left,height:u.bottom-u.top,x:u.left,y:u.top}}function Tv(e){const{width:t,height:n}=Yl(e);return{width:t,height:n}}function kv(e,t,n){const i=Rt(t),r=Et(t),a=n==="fixed",o=sn(e,!0,a,t);let s={scrollLeft:0,scrollTop:0};const u=Nt(0);function c(){u.x=zi(r)}if(i||!i&&!a)if((Tn(t)!=="body"||Vn(r))&&(s=Ui(t)),i){const f=sn(t,!0,a,t);u.x=f.x+t.clientLeft,u.y=f.y+t.clientTop}else r&&c();a&&!i&&r&&c();const d=r&&!i&&!a?Wl(r,s):Nt(0),l=o.left+s.scrollLeft-u.x-d.x,g=o.top+s.scrollTop-u.y-d.y;return{x:l,y:g,width:o.width,height:o.height}}function or(e){return vt(e).position==="static"}function Fo(e,t){if(!Rt(e)||vt(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return Et(e)===n&&(n=n.ownerDocument.body),n}function Vl(e,t){const n=lt(e);if(ji(e))return n;if(!Rt(e)){let r=Jt(e);for(;r&&!wn(r);){if(bt(r)&&!or(r))return r;r=Jt(r)}return n}let i=Fo(e,t);for(;i&&sv(i)&&or(i);)i=Fo(i,t);return i&&wn(i)&&or(i)&&!oa(i)?n:i||hv(e)||n}const Cv=async function(e){const t=this.getOffsetParent||Vl,n=this.getDimensions,i=await n(e.floating);return{reference:kv(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function Av(e){return vt(e).direction==="rtl"}const Nv={convertOffsetParentRelativeRectToViewportRelativeRect:gv,getDocumentElement:Et,getClippingRect:Sv,getOffsetParent:Vl,getElementRects:Cv,getClientRects:yv,getDimensions:Tv,getScale:bn,isElement:bt,isRTL:Av};function Kl(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Dv(e,t){let n=null,i;const r=Et(e);function a(){var s;clearTimeout(i),(s=n)==null||s.disconnect(),n=null}function o(s,u){s===void 0&&(s=!1),u===void 0&&(u=1),a();const c=e.getBoundingClientRect(),{left:d,top:l,width:g,height:f}=c;if(s||t(),!g||!f)return;const m=oi(l),y=oi(r.clientWidth-(d+g)),b=oi(r.clientHeight-(l+f)),x=oi(d),A={rootMargin:-m+"px "+-y+"px "+-b+"px "+-x+"px",threshold:ot(0,Kt(1,u))||1};let S=!0;function v(D){const w=D[0].intersectionRatio;if(w!==u){if(!S)return o();w?o(!1,w):i=setTimeout(()=>{o(!1,1e-7)},1e3)}w===1&&!Kl(c,e.getBoundingClientRect())&&o(),S=!1}try{n=new IntersectionObserver(v,{...A,root:r.ownerDocument})}catch{n=new IntersectionObserver(v,A)}n.observe(e)}return o(!0),a}function Rv(e,t,n,i){i===void 0&&(i={});const{ancestorScroll:r=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:u=!1}=i,c=la(e),d=r||a?[...c?jn(c):[],...jn(t)]:[];d.forEach(x=>{r&&x.addEventListener("scroll",n,{passive:!0}),a&&x.addEventListener("resize",n)});const l=c&&s?Dv(c,n):null;let g=-1,f=null;o&&(f=new ResizeObserver(x=>{let[T]=x;T&&T.target===c&&f&&(f.unobserve(t),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var A;(A=f)==null||A.observe(t)})),n()}),c&&!u&&f.observe(c),f.observe(t));let m,y=u?sn(e):null;u&&b();function b(){const x=sn(e);y&&!Kl(y,x)&&n(),y=x,m=requestAnimationFrame(b)}return n(),()=>{var x;d.forEach(T=>{r&&T.removeEventListener("scroll",n),a&&T.removeEventListener("resize",n)}),l?.(),(x=f)==null||x.disconnect(),f=null,u&&cancelAnimationFrame(m)}}const Ev=tv,Mv=nv,Ov=Qb,Iv=rv,Lv=$b,Go=Zb,Fv=iv,Gv=(e,t,n)=>{const i=new Map,r={platform:Nv,...n},a={...r.platform,_c:i};return Xb(e,t,{...r,platform:a})};var Bv=typeof document<"u",jv=function(){},ui=Bv?p.useLayoutEffect:jv;function Pi(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,i,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(i=n;i--!==0;)if(!Pi(e[i],t[i]))return!1;return!0}if(r=Object.keys(e),n=r.length,n!==Object.keys(t).length)return!1;for(i=n;i--!==0;)if(!{}.hasOwnProperty.call(t,r[i]))return!1;for(i=n;i--!==0;){const a=r[i];if(!(a==="_owner"&&e.$$typeof)&&!Pi(e[a],t[a]))return!1}return!0}return e!==e&&t!==t}function Jl(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Bo(e,t){const n=Jl(e);return Math.round(t*n)/n}function sr(e){const t=F.useRef(e);return ui(()=>{t.current=e}),t}function Uv(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:i=[],platform:r,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:u,open:c}=e,[d,l]=F.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[g,f]=F.useState(i);Pi(g,i)||f(i);const[m,y]=F.useState(null),[b,x]=F.useState(null),T=F.useCallback(X=>{X!==D.current&&(D.current=X,y(X))},[]),A=F.useCallback(X=>{X!==w.current&&(w.current=X,x(X))},[]),S=a||m,v=o||b,D=F.useRef(null),w=F.useRef(null),P=F.useRef(d),M=u!=null,G=sr(u),W=sr(r),B=sr(c),_=F.useCallback(()=>{if(!D.current||!w.current)return;const X={placement:t,strategy:n,middleware:g};W.current&&(X.platform=W.current),Gv(D.current,w.current,X).then(re=>{const C={...re,isPositioned:B.current!==!1};V.current&&!Pi(P.current,C)&&(P.current=C,is.flushSync(()=>{l(C)}))})},[g,t,n,W,B]);ui(()=>{c===!1&&P.current.isPositioned&&(P.current.isPositioned=!1,l(X=>({...X,isPositioned:!1})))},[c]);const V=F.useRef(!1);ui(()=>(V.current=!0,()=>{V.current=!1}),[]),ui(()=>{if(S&&(D.current=S),v&&(w.current=v),S&&v){if(G.current)return G.current(S,v,_);_()}},[S,v,_,G,M]);const K=F.useMemo(()=>({reference:D,floating:w,setReference:T,setFloating:A}),[T,A]),z=F.useMemo(()=>({reference:S,floating:v}),[S,v]),J=F.useMemo(()=>{const X={position:n,left:0,top:0};if(!z.floating)return X;const re=Bo(z.floating,d.x),C=Bo(z.floating,d.y);return s?{...X,transform:"translate("+re+"px, "+C+"px)",...Jl(z.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:re,top:C}},[n,s,z.floating,d.x,d.y]);return F.useMemo(()=>({...d,update:_,refs:K,elements:z,floatingStyles:J}),[d,_,K,z,J])}const zv=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:i,padding:r}=typeof e=="function"?e(n):e;return i&&t(i)?i.current!=null?Go({element:i.current,padding:r}).fn(n):{}:i?Go({element:i,padding:r}).fn(n):{}}}},Hv=(e,t)=>({...Ev(e),options:[e,t]}),Yv=(e,t)=>({...Mv(e),options:[e,t]}),qv=(e,t)=>({...Fv(e),options:[e,t]}),Wv=(e,t)=>({...Ov(e),options:[e,t]}),_v=(e,t)=>({...Iv(e),options:[e,t]}),Vv=(e,t)=>({...Lv(e),options:[e,t]}),Kv=(e,t)=>({...zv(e),options:[e,t]});var Jv="Arrow",Xl=F.forwardRef((e,t)=>{const{children:n,width:i=10,height:r=5,...a}=e;return h.jsx(xt.svg,{...a,ref:t,width:i,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:h.jsx("polygon",{points:"0,0 30,0 15,10"})})});Xl.displayName=Jv;var Xv=Xl,ca="Popper",[Zl,Ql]=ta(ca),[Zv,$l]=Zl(ca),ec=e=>{const{__scopePopper:t,children:n}=e,[i,r]=F.useState(null);return h.jsx(Zv,{scope:t,anchor:i,onAnchorChange:r,children:n})};ec.displayName=ca;var tc="PopperAnchor",nc=F.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:i,...r}=e,a=$l(tc,n),o=F.useRef(null),s=Bt(t,o),u=F.useRef(null);return F.useEffect(()=>{const c=u.current;u.current=i?.current||o.current,c!==u.current&&a.onAnchorChange(u.current)}),i?null:h.jsx(xt.div,{...r,ref:s})});nc.displayName=tc;var ua="PopperContent",[Qv,$v]=Zl(ua),ic=F.forwardRef((e,t)=>{const{__scopePopper:n,side:i="bottom",sideOffset:r=0,align:a="center",alignOffset:o=0,arrowPadding:s=0,avoidCollisions:u=!0,collisionBoundary:c=[],collisionPadding:d=0,sticky:l="partial",hideWhenDetached:g=!1,updatePositionStrategy:f="optimized",onPlaced:m,...y}=e,b=$l(ua,n),[x,T]=F.useState(null),A=Bt(t,I=>T(I)),[S,v]=F.useState(null),D=Rl(S),w=D?.width??0,P=D?.height??0,M=i+(a!=="center"?"-"+a:""),G=typeof d=="number"?d:{top:0,right:0,bottom:0,left:0,...d},W=Array.isArray(c)?c:[c],B=W.length>0,_={padding:G,boundary:W.filter(tw),altBoundary:B},{refs:V,floatingStyles:K,placement:z,isPositioned:J,middlewareData:X}=Uv({strategy:"fixed",placement:M,whileElementsMounted:(...I)=>Rv(...I,{animationFrame:f==="always"}),elements:{reference:b.anchor},middleware:[Hv({mainAxis:r+P,alignmentAxis:o}),u&&Yv({mainAxis:!0,crossAxis:!1,limiter:l==="partial"?qv():void 0,..._}),u&&Wv({..._}),_v({..._,apply:({elements:I,rects:q,availableWidth:$,availableHeight:ie})=>{const{width:de,height:Z}=q.reference,be=I.floating.style;be.setProperty("--radix-popper-available-width",`${$}px`),be.setProperty("--radix-popper-available-height",`${ie}px`),be.setProperty("--radix-popper-anchor-width",`${de}px`),be.setProperty("--radix-popper-anchor-height",`${Z}px`)}}),S&&Kv({element:S,padding:s}),nw({arrowWidth:w,arrowHeight:P}),g&&Vv({strategy:"referenceHidden",..._})]}),[re,C]=oc(z),k=Fi(m);Vt(()=>{J&&k?.()},[J,k]);const Y=X.arrow?.x,L=X.arrow?.y,R=X.arrow?.centerOffset!==0,[j,E]=F.useState();return Vt(()=>{x&&E(window.getComputedStyle(x).zIndex)},[x]),h.jsx("div",{ref:V.setFloating,"data-radix-popper-content-wrapper":"",style:{...K,transform:J?K.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:j,"--radix-popper-transform-origin":[X.transformOrigin?.x,X.transformOrigin?.y].join(" "),...X.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:h.jsx(Qv,{scope:n,placedSide:re,onArrowChange:v,arrowX:Y,arrowY:L,shouldHideArrow:R,children:h.jsx(xt.div,{"data-side":re,"data-align":C,...y,ref:A,style:{...y.style,animation:J?void 0:"none"}})})})});ic.displayName=ua;var rc="PopperArrow",ew={top:"bottom",right:"left",bottom:"top",left:"right"},ac=F.forwardRef(function(t,n){const{__scopePopper:i,...r}=t,a=$v(rc,i),o=ew[a.placedSide];return h.jsx("span",{ref:a.onArrowChange,style:{position:"absolute",left:a.arrowX,top:a.arrowY,[o]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[a.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[a.placedSide],visibility:a.shouldHideArrow?"hidden":void 0},children:h.jsx(Xv,{...r,ref:n,style:{...r.style,display:"block"}})})});ac.displayName=rc;function tw(e){return e!==null}var nw=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:i,middlewareData:r}=t,o=r.arrow?.centerOffset!==0,s=o?0:e.arrowWidth,u=o?0:e.arrowHeight,[c,d]=oc(n),l={start:"0%",center:"50%",end:"100%"}[d],g=(r.arrow?.x??0)+s/2,f=(r.arrow?.y??0)+u/2;let m="",y="";return c==="bottom"?(m=o?l:`${g}px`,y=`${-u}px`):c==="top"?(m=o?l:`${g}px`,y=`${i.floating.height+u}px`):c==="right"?(m=`${-u}px`,y=o?l:`${f}px`):c==="left"&&(m=`${i.floating.width+u}px`,y=o?l:`${f}px`),{data:{x:m,y}}}});function oc(e){const[t,n="center"]=e.split("-");return[t,n]}var iw=ec,rw=nc,aw=ic,ow=ac,[Hi]=ta("Tooltip",[Ql]),Yi=Ql(),sc="TooltipProvider",sw=700,Cr="tooltip.open",[lw,da]=Hi(sc),lc=e=>{const{__scopeTooltip:t,delayDuration:n=sw,skipDelayDuration:i=300,disableHoverableContent:r=!1,children:a}=e,o=F.useRef(!0),s=F.useRef(!1),u=F.useRef(0);return F.useEffect(()=>{const c=u.current;return()=>window.clearTimeout(c)},[]),h.jsx(lw,{scope:t,isOpenDelayedRef:o,delayDuration:n,onOpen:F.useCallback(()=>{window.clearTimeout(u.current),o.current=!1},[]),onClose:F.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>o.current=!0,i)},[i]),isPointerInTransitRef:s,onPointerInTransitChange:F.useCallback(c=>{s.current=c},[]),disableHoverableContent:r,children:a})};lc.displayName=sc;var Un="Tooltip",[cw,Kn]=Hi(Un),cc=e=>{const{__scopeTooltip:t,children:n,open:i,defaultOpen:r,onOpenChange:a,disableHoverableContent:o,delayDuration:s}=e,u=da(Un,e.__scopeTooltip),c=Yi(t),[d,l]=F.useState(null),g=Sb(),f=F.useRef(0),m=o??u.disableHoverableContent,y=s??u.delayDuration,b=F.useRef(!1),[x,T]=kl({prop:i,defaultProp:r??!1,onChange:w=>{w?(u.onOpen(),document.dispatchEvent(new CustomEvent(Cr))):u.onClose(),a?.(w)},caller:Un}),A=F.useMemo(()=>x?b.current?"delayed-open":"instant-open":"closed",[x]),S=F.useCallback(()=>{window.clearTimeout(f.current),f.current=0,b.current=!1,T(!0)},[T]),v=F.useCallback(()=>{window.clearTimeout(f.current),f.current=0,T(!1)},[T]),D=F.useCallback(()=>{window.clearTimeout(f.current),f.current=window.setTimeout(()=>{b.current=!0,T(!0),f.current=0},y)},[y,T]);return F.useEffect(()=>()=>{f.current&&(window.clearTimeout(f.current),f.current=0)},[]),h.jsx(iw,{...c,children:h.jsx(cw,{scope:t,contentId:g,open:x,stateAttribute:A,trigger:d,onTriggerChange:l,onTriggerEnter:F.useCallback(()=>{u.isOpenDelayedRef.current?D():S()},[u.isOpenDelayedRef,D,S]),onTriggerLeave:F.useCallback(()=>{m?v():(window.clearTimeout(f.current),f.current=0)},[v,m]),onOpen:S,onClose:v,disableHoverableContent:m,children:n})})};cc.displayName=Un;var Ar="TooltipTrigger",uc=F.forwardRef((e,t)=>{const{__scopeTooltip:n,...i}=e,r=Kn(Ar,n),a=da(Ar,n),o=Yi(n),s=F.useRef(null),u=Bt(t,s,r.onTriggerChange),c=F.useRef(!1),d=F.useRef(!1),l=F.useCallback(()=>c.current=!1,[]);return F.useEffect(()=>()=>document.removeEventListener("pointerup",l),[l]),h.jsx(rw,{asChild:!0,...o,children:h.jsx(xt.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...i,ref:u,onPointerMove:pt(e.onPointerMove,g=>{g.pointerType!=="touch"&&!d.current&&!a.isPointerInTransitRef.current&&(r.onTriggerEnter(),d.current=!0)}),onPointerLeave:pt(e.onPointerLeave,()=>{r.onTriggerLeave(),d.current=!1}),onPointerDown:pt(e.onPointerDown,()=>{r.open&&r.onClose(),c.current=!0,document.addEventListener("pointerup",l,{once:!0})}),onFocus:pt(e.onFocus,()=>{c.current||r.onOpen()}),onBlur:pt(e.onBlur,r.onClose),onClick:pt(e.onClick,r.onClose)})})});uc.displayName=Ar;var ha="TooltipPortal",[uw,dw]=Hi(ha,{forceMount:void 0}),dc=e=>{const{__scopeTooltip:t,forceMount:n,children:i,container:r}=e,a=Kn(ha,t);return h.jsx(uw,{scope:t,forceMount:n,children:h.jsx(Li,{present:n||a.open,children:h.jsx(Dl,{asChild:!0,container:r,children:i})})})};dc.displayName=ha;var xn="TooltipContent",hc=F.forwardRef((e,t)=>{const n=dw(xn,e.__scopeTooltip),{forceMount:i=n.forceMount,side:r="top",...a}=e,o=Kn(xn,e.__scopeTooltip);return h.jsx(Li,{present:i||o.open,children:o.disableHoverableContent?h.jsx(pc,{side:r,...a,ref:t}):h.jsx(hw,{side:r,...a,ref:t})})}),hw=F.forwardRef((e,t)=>{const n=Kn(xn,e.__scopeTooltip),i=da(xn,e.__scopeTooltip),r=F.useRef(null),a=Bt(t,r),[o,s]=F.useState(null),{trigger:u,onClose:c}=n,d=r.current,{onPointerInTransitChange:l}=i,g=F.useCallback(()=>{s(null),l(!1)},[l]),f=F.useCallback((m,y)=>{const b=m.currentTarget,x={x:m.clientX,y:m.clientY},T=yw(x,b.getBoundingClientRect()),A=bw(x,T),S=vw(y.getBoundingClientRect()),v=xw([...A,...S]);s(v),l(!0)},[l]);return F.useEffect(()=>()=>g(),[g]),F.useEffect(()=>{if(u&&d){const m=b=>f(b,d),y=b=>f(b,u);return u.addEventListener("pointerleave",m),d.addEventListener("pointerleave",y),()=>{u.removeEventListener("pointerleave",m),d.removeEventListener("pointerleave",y)}}},[u,d,f,g]),F.useEffect(()=>{if(o){const m=y=>{const b=y.target,x={x:y.clientX,y:y.clientY},T=u?.contains(b)||d?.contains(b),A=!ww(x,o);T?g():A&&(g(),c())};return document.addEventListener("pointermove",m),()=>document.removeEventListener("pointermove",m)}},[u,d,o,c,g]),h.jsx(pc,{...e,ref:a})}),[pw,mw]=Hi(Un,{isInside:!1}),fw=ab("TooltipContent"),pc=F.forwardRef((e,t)=>{const{__scopeTooltip:n,children:i,"aria-label":r,onEscapeKeyDown:a,onPointerDownOutside:o,...s}=e,u=Kn(xn,n),c=Yi(n),{onClose:d}=u;return F.useEffect(()=>(document.addEventListener(Cr,d),()=>document.removeEventListener(Cr,d)),[d]),F.useEffect(()=>{if(u.trigger){const l=g=>{g.target?.contains(u.trigger)&&d()};return window.addEventListener("scroll",l,{capture:!0}),()=>window.removeEventListener("scroll",l,{capture:!0})}},[u.trigger,d]),h.jsx(Al,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:o,onFocusOutside:l=>l.preventDefault(),onDismiss:d,children:h.jsxs(aw,{"data-state":u.stateAttribute,...c,...s,ref:t,style:{...s.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[h.jsx(fw,{children:i}),h.jsx(pw,{scope:n,isInside:!0,children:h.jsx(pb,{id:u.contentId,role:"tooltip",children:r||i})})]})})});hc.displayName=xn;var mc="TooltipArrow",gw=F.forwardRef((e,t)=>{const{__scopeTooltip:n,...i}=e,r=Yi(n);return mw(mc,n).isInside?null:h.jsx(ow,{...r,...i,ref:t})});gw.displayName=mc;function yw(e,t){const n=Math.abs(t.top-e.y),i=Math.abs(t.bottom-e.y),r=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,i,r,a)){case a:return"left";case r:return"right";case n:return"top";case i:return"bottom";default:throw new Error("unreachable")}}function bw(e,t,n=5){const i=[];switch(t){case"top":i.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":i.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":i.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":i.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return i}function vw(e){const{top:t,right:n,bottom:i,left:r}=e;return[{x:r,y:t},{x:n,y:t},{x:n,y:i},{x:r,y:i}]}function ww(e,t){const{x:n,y:i}=e;let r=!1;for(let a=0,o=t.length-1;a<t.length;o=a++){const s=t[a],u=t[o],c=s.x,d=s.y,l=u.x,g=u.y;d>i!=g>i&&n<(l-c)*(i-d)/(g-d)+c&&(r=!r)}return r}function xw(e){const t=e.slice();return t.sort((n,i)=>n.x<i.x?-1:n.x>i.x?1:n.y<i.y?-1:n.y>i.y?1:0),Pw(t)}function Pw(e){if(e.length<=1)return e.slice();const t=[];for(let i=0;i<e.length;i++){const r=e[i];for(;t.length>=2;){const a=t[t.length-1],o=t[t.length-2];if((a.x-o.x)*(r.y-o.y)>=(a.y-o.y)*(r.x-o.x))t.pop();else break}t.push(r)}t.pop();const n=[];for(let i=e.length-1;i>=0;i--){const r=e[i];for(;n.length>=2;){const a=n[n.length-1],o=n[n.length-2];if((a.x-o.x)*(r.y-o.y)>=(a.y-o.y)*(r.x-o.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var Sw=lc,Tw=cc,kw=uc,Cw=dc,fc=hc;function Aw({className:e,...t}){return h.jsx(Ol,{"data-slot":"checkbox",className:yt("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:h.jsx(Ll,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:h.jsx(an,{className:"size-3.5"})})})}const Nw=({delayDuration:e=0,...t})=>h.jsx(Sw,{delayDuration:e,...t}),Dw=Tw,Rw=kw,gc=F.forwardRef(({className:e,sideOffset:t=4,container:n,...i},r)=>h.jsx(Cw,{container:n??void 0,children:h.jsx(fc,{ref:r,sideOffset:t,className:yt("bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-[200] overflow-visible rounded-md border px-3 py-1.5 text-sm shadow-md",e),...i})}));gc.displayName=fc.displayName;const Ln=({title:e,description:t="",lines:n,side:i="bottom",className:r,size:a=21})=>{const o=p.useRef(null),[s,u]=p.useState(!1),[c,d]=p.useState(null),l=p.useCallback(f=>{o.current=f;const m=f?.closest(".iccandle-selector-widget")??document.body;d(y=>y===m?y:m)},[]),g=()=>{u(f=>!f)};return p.useEffect(()=>{const f=m=>{o.current&&!o.current.contains(m.target)&&u(!1)};return document.addEventListener("mouseover",f),()=>{document.removeEventListener("mouseover",f)}},[]),h.jsx(Nw,{children:h.jsxs(Dw,{open:s,children:[h.jsx(Rw,{asChild:!0,children:h.jsx("div",{onMouseEnter:g,className:"cursor-pointer",ref:l,children:h.jsx(qu,{size:a,className:yt("iccandle-info-tooltip-icon",r==="text-muted-foreground"&&"iccandle-info-tooltip-icon--muted",r)})})}),h.jsx(gc,{side:i,sideOffset:5,container:c,className:"iccandle-info-tooltip-content",children:h.jsxs("div",{className:"iccandle-info-tooltip-content__inner",children:[h.jsx("h4",{className:"iccandle-info-tooltip-content__title",children:e}),n?h.jsx("div",{className:"iccandle-info-tooltip-content__body",children:n.map(f=>h.jsxs("p",{className:"iccandle-info-tooltip-content__line",children:[h.jsx("span",{className:"iccandle-info-tooltip-content__line-label",children:f.label})," ",f.text]},f.label))}):t!==""&&h.jsx("p",{className:"iccandle-info-tooltip-content__description",children:t})]})})]})})};function Fn({value:e,options:t,onChange:n,isLocked:i,getLabel:r,onUpgradeClick:a,wrapClassName:o,open:s,onOpenChange:u}){const{t:c}=nt(),d=p.useRef(null),l=p.useRef(null),g=p.useRef(null),[f,m]=p.useState(null),[y,b]=p.useState(null),x=p.useCallback(v=>{d.current=v;const D=v?.closest(".iccandle-selector-widget")??document.body;m(w=>w===D?w:D)},[]),T=p.useCallback(()=>{u(!1),b(null)},[u]),A=p.useCallback(()=>{const v=l.current;if(!v)return;const D=v.getBoundingClientRect(),w=4,P=240,M=window.innerHeight-D.bottom-w-8,G=D.top-8,W=M<Math.min(P,160)&&G>M,B=Math.max(120,Math.min(P,W?G:M));b(W?{bottom:window.innerHeight-D.top+w,left:D.left,width:D.width,maxHeight:B}:{top:D.bottom+w,left:D.left,width:D.width,maxHeight:B})},[]);p.useLayoutEffect(()=>{if(!s)return;A();const v=()=>A();return window.addEventListener("resize",v),window.addEventListener("scroll",v,!0),()=>{window.removeEventListener("resize",v),window.removeEventListener("scroll",v,!0)}},[s,A]),p.useEffect(()=>{if(!s)return;const v=w=>{const P=w.target;P&&(d.current?.contains(P)||g.current?.contains(P)||T())},D=w=>{w.key==="Escape"&&T()};return document.addEventListener("mousedown",v),document.addEventListener("keydown",D),()=>{document.removeEventListener("mousedown",v),document.removeEventListener("keydown",D)}},[T,s]);const S=s&&f&&y?Dt.createPortal(h.jsx("div",{ref:g,className:"iccandle-scanner-ai-settings__dropdown",role:"listbox",style:{...y.top!==void 0?{top:y.top}:{bottom:y.bottom},left:y.left,width:y.width,maxHeight:y.maxHeight},children:t.map(v=>{const D=i?.(v)??!1;return h.jsxs("div",{role:"option","aria-selected":v===e,className:`iccandle-scanner-ai-settings__dropdown-item${D?" iccandle-scanner-ai-settings__dropdown-item--locked":""}`,onClick:()=>{D||(n(v),T())},children:[h.jsx("span",{className:D?"is-disabled":void 0,children:r(v)}),D?h.jsx("span",{className:"iccandle-scanner-ai-settings__upgrade-btn-wrap ai-gradient-border",children:h.jsx("button",{type:"button",className:"iccandle-scanner-ai-settings__upgrade-btn",onMouseDown:w=>{w.stopPropagation(),w.preventDefault(),T(),a?.()},children:c("Common.upgradePlan")})}):null]},String(v))})}),f):null;return h.jsxs("div",{ref:x,className:`iccandle-scanner-ai-settings__select-wrap${s?" iccandle-scanner-ai-settings__select-wrap--open":""}`,children:[h.jsx("div",{className:o,children:h.jsxs("button",{ref:l,type:"button",className:"iccandle-scanner-ai-settings__select-trigger","aria-expanded":s,"aria-haspopup":"listbox",onClick:()=>{if(s){T();return}u(!0)},children:[h.jsx("span",{children:r(e)}),h.jsx(us,{className:`iccandle-scanner-ai-settings__trigger-chevron${s?" iccandle-scanner-ai-settings__trigger-chevron--open":""}`,"aria-hidden":!0})]})}),S]})}const Ew=[{label:"15M",value:"15"},{label:"30M",value:"30"},{label:"1H",value:"60"},{label:"2H",value:"120"},{label:"4H",value:"240"},{label:"1D",value:"1D"}],Mw=[{labelKey:"Selector.periodAll",value:0},{labelKey:"Selector.periodLastYear",value:1},{labelKey:"Selector.periodLast3Years",value:3},{labelKey:"Selector.periodLast5Years",value:5},{labelKey:"Selector.periodLast15Years",value:15}],Ow=[0,1,3,5,15],Iw=["15","30","60","120","240","1D"],Lw=[.5,1,1.5],Fw=({control:e,temperature:t,onTemperatureChange:n})=>{const{t:i}=nt(),[r,a]=p.useState(null),o=p.useCallback(d=>l=>{a(l?d:null)},[]),s=p.useMemo(()=>{const d=new Map;for(const l of Mw)d.set(l.value,i(l.labelKey));return d},[i]),u=p.useMemo(()=>{const d=new Map;for(const l of Ew)d.set(l.value,l.label);return d},[]),c=p.useCallback(d=>i(d===.5?"News.temperatureLow":d===1?"News.temperatureMedium":"News.temperatureHigh"),[i]);return h.jsxs("div",{className:"iccandle-scanner-advanced-options",children:[h.jsxs("div",{className:"iccandle-scanner-advanced-options__row",children:[h.jsxs("label",{className:"iccandle-scanner-advanced-options__label",children:[i("Selector.period"),h.jsx(Ln,{title:i("Selector.period"),description:i("Selector.periodTooltip"),side:"right",size:16,className:"text-muted-foreground"})]}),h.jsx(wr,{control:e,name:"period",render:({field:d})=>h.jsx(Fn,{value:d.value??0,options:Ow,onChange:l=>d.onChange(l),getLabel:l=>s.get(l)??String(l),open:r==="period",onOpenChange:o("period")})})]}),h.jsxs("div",{className:"iccandle-scanner-advanced-options__row",children:[h.jsxs("label",{className:"iccandle-scanner-advanced-options__label",children:[i("Common.timeframe"),h.jsx(Ln,{title:i("Common.timeframe"),description:i("Selector.timeframeTooltip"),side:"right",size:16,className:"text-muted-foreground"})]}),h.jsx(wr,{control:e,name:"timeframe",render:({field:d})=>h.jsx(Fn,{value:d.value,options:Iw,onChange:l=>d.onChange(l),getLabel:l=>u.get(l)??l,open:r==="timeframe",onOpenChange:o("timeframe")})})]}),h.jsxs("div",{className:"iccandle-scanner-advanced-options__row",children:[h.jsxs("label",{className:"iccandle-scanner-advanced-options__label",children:[i("Selector.aiTemperature"),h.jsx(Ln,{title:i("Selector.aiTemperature"),description:i("Selector.aiTemperatureTooltip"),side:"right",size:16,className:"text-muted-foreground"})]}),h.jsx(Fn,{value:t,options:Lw,onChange:n,getLabel:c,open:r==="temperature",onOpenChange:o("temperature")})]})]})},Nr=({name:e})=>{const t=Qe?.find(n=>n.ticker===e)?.logo_urls.map(n=>n)||[];return h.jsxs("div",{className:"iccandle-forexIcons",children:[t.length===1&&h.jsx("img",{src:t[0],alt:"forex icon",width:24,height:24,className:"iccandle-forexIcons__img iccandle-forexIcons__img--single"}),t.length===2&&h.jsxs(h.Fragment,{children:[h.jsx("img",{src:t[0],alt:"forex icon 1",width:18,height:18,className:"iccandle-forexIcons__img iccandle-forexIcons__img--left"}),h.jsx("img",{src:t[1],alt:"forex icon 2",width:18,height:18,className:"iccandle-forexIcons__img iccandle-forexIcons__img--right"})]})]})},jo=["forex","crypto","indices","commodity","stock"],Gw=3,Bw={commodity:"Layout.helperBar.groupCommodity",forex:"Layout.helperBar.groupForex",crypto:"Layout.helperBar.groupCrypto",indices:"Layout.helperBar.groupIndices",stock:"Layout.helperBar.groupStock"};function Uo({state:e}){return e==="all"?h.jsx("div",{className:"iccandle-scanner-symbol-search__check iccandle-scanner-symbol-search__check--on",children:h.jsx(an,{className:"h-3 w-3"})}):e==="some"?h.jsx("div",{className:"iccandle-scanner-symbol-search__check iccandle-scanner-symbol-search__check--on",children:h.jsx(hs,{className:"h-3 w-3"})}):h.jsx("div",{className:"iccandle-scanner-symbol-search__check"})}const yc=p.memo(function({searchTerm:t,onSearchChange:n,selectedSymbols:i,onSymbolChange:r,onGroupChange:a,filteredSymbols:o,selectedCount:s,allSymbols:u}){const{t:c}=nt(),d=p.useRef(null),l=p.useRef(null),g=p.useRef(null),f=p.useRef(null),[m,y]=p.useState(!1),[b,x]=p.useState(null),[T,A]=p.useState(null),[S,v]=p.useState({}),D=p.useCallback(E=>{d.current=E;const I=E?.closest(".iccandle-selector-widget")??document.body;x(q=>q===I?q:I)},[]),w=p.useCallback(()=>{const E=l.current;if(!E)return;const I=E.getBoundingClientRect(),q=4,$=384,ie=window.innerHeight-I.bottom-q-8,de=I.top-8,Z=ie<Math.min($,240)&&de>ie,be=Math.max(160,Math.min($,Z?de:ie)),Ce=Z?Math.max(8,I.top-q-be):I.bottom+q;A({top:Ce,left:I.left,width:I.width,maxHeight:be})},[]),P=p.useMemo(()=>(u??o??[]).filter(I=>i[I.ticker]),[u,o,i]),M=P.slice(0,Gw),G=P.length-M.length,W=p.useMemo(()=>{const E=new Set;for(const I of P)E.add(I.type);return E},[P]),B=p.useMemo(()=>{const E=new Map;for(const I of jo)E.set(I,[]);return o?.forEach(I=>{const q=I.type;E.has(q)||E.set(q,[]),E.get(q).push(I)}),jo.map(I=>({type:I,symbols:E.get(I)??[]})).filter(I=>I.symbols.length>0)},[o]),_=p.useMemo(()=>B.flatMap(E=>E.symbols),[B]),V=p.useCallback(E=>{if(E.length===0)return"none";const I=E.filter(q=>i[q.ticker]).length;return I===0?"none":I===E.length?"all":"some"},[i]),K=p.useCallback(E=>t.trim().length>0?!0:Object.prototype.hasOwnProperty.call(S,E)?S[E]===!0:W.has(E),[S,W,t]),z=p.useCallback(E=>{const I=K(E);v(q=>({...q,[E]:!I}))},[K]),J=p.useCallback(E=>{r(E,!i[E])},[r,i]),X=p.useCallback(E=>{const I=E.map($=>$.ticker),q=V(E)!=="all";a(I,q)},[V,a]),re=p.useCallback(()=>{const E=_.map(q=>q.ticker),I=V(_)!=="all";a(E,I)},[_,V,a]),C=p.useCallback((E,I)=>{I.preventDefault(),I.stopPropagation(),r(E,!1)},[r]),k=p.useCallback(()=>{y(!1),A(null),n("")},[n]),Y=p.useCallback(E=>{if(E){y(!0);return}k()},[k]);p.useLayoutEffect(()=>{if(!m)return;w();const E=()=>w();return window.addEventListener("resize",E),window.addEventListener("scroll",E,!0),()=>{window.removeEventListener("resize",E),window.removeEventListener("scroll",E,!0)}},[m,w]),p.useEffect(()=>{if(!m)return;const E=q=>{const $=q.target;$&&(d.current?.contains($)||g.current?.contains($)||k())},I=q=>{q.key==="Escape"&&k()};return document.addEventListener("mousedown",E),document.addEventListener("keydown",I),()=>{document.removeEventListener("mousedown",E),document.removeEventListener("keydown",I)}},[k,m]),p.useEffect(()=>{if(!m)return;const E=requestAnimationFrame(()=>{f.current?.focus()});return()=>cancelAnimationFrame(E)},[m]);const L=V(_),R=s<=1?c("Pattern.symbolSelected",{count:s}):c("Pattern.symbolsSelected",{count:s}),j=m&&b&&T?Dt.createPortal(h.jsxs("div",{ref:g,className:"iccandle-scanner-symbol-search__popover",role:"listbox","aria-multiselectable":!0,style:{top:T.top,left:T.left,width:T.width,maxHeight:T.maxHeight},children:[h.jsxs("div",{className:"iccandle-scanner-symbol-search__search",children:[h.jsx(ps,{className:"iccandle-scanner-symbol-search__search-icon"}),h.jsx("input",{ref:f,type:"text",className:"iccandle-scanner-symbol-search__command-input",placeholder:c("Selector.searchSymbol"),value:t,onChange:E=>n(E.target.value.toUpperCase()),"aria-label":c("Selector.searchSymbol")})]}),h.jsxs("div",{className:"iccandle-scanner-symbol-search__command-list",style:{maxHeight:Math.max(120,T.maxHeight-48)},children:[t.trim()&&_.length===0?h.jsx("div",{className:"iccandle-scanner-symbol-search__empty",children:c("Selector.noResultsFound")}):null,_.length>0?h.jsxs("div",{className:"iccandle-scanner-symbol-search__select-all",children:[h.jsx("button",{type:"button",className:"iccandle-scanner-symbol-search__group-check-btn",onClick:re,"aria-label":c("Selector.selectAll"),children:h.jsx(Uo,{state:L})}),h.jsx("button",{type:"button",className:"iccandle-scanner-symbol-search__group-label-btn",onClick:re,children:c("Selector.selectAll")})]}):null,B.map(E=>{const I=V(E.symbols),q=K(E.type),$=c(Bw[E.type]);return h.jsxs("div",{className:"iccandle-scanner-symbol-search__group",children:[h.jsxs("div",{className:"iccandle-scanner-symbol-search__group-row",children:[h.jsx("button",{type:"button",className:"iccandle-scanner-symbol-search__group-check-btn",onClick:ie=>{ie.preventDefault(),ie.stopPropagation(),X(E.symbols)},"aria-label":`${c("Selector.selectAll")} ${$}`,children:h.jsx(Uo,{state:I})}),h.jsxs("button",{type:"button",className:"iccandle-scanner-symbol-search__group-expand-btn",onClick:()=>z(E.type),"aria-expanded":q,children:[h.jsx("span",{children:$}),h.jsx(us,{className:yt("h-4 w-4 transition-transform",!q&&"-rotate-90")})]})]}),q?E.symbols.map(ie=>{const de=!!i[ie.ticker];return h.jsxs("button",{type:"button",role:"option","aria-selected":de,className:"iccandle-scanner-symbol-search__item",onClick:()=>J(ie.ticker),children:[h.jsx("div",{className:yt("iccandle-scanner-symbol-search__check",de&&"iccandle-scanner-symbol-search__check--on"),children:de?h.jsx(an,{className:"h-3 w-3"}):null}),h.jsx(Nr,{name:ie.ticker}),h.jsx("div",{className:"iccandle-scanner-symbol-search__item-label",children:ie.display_name})]},ie.ticker)}):null]},E.type)})]})]}),b):null;return h.jsxs("div",{ref:D,className:"iccandle-scanner-symbol-search iccandle-scanner-symbol-search--combobox",children:[h.jsxs("button",{ref:l,type:"button",role:"combobox","aria-expanded":m,"aria-haspopup":"listbox",className:"iccandle-scanner-symbol-search__trigger",onClick:()=>Y(!m),children:[h.jsx("div",{className:"iccandle-scanner-symbol-search__chips",children:P.length===0?h.jsx("span",{className:"iccandle-scanner-symbol-search__placeholder",children:c("Selector.searchSymbol")}):h.jsxs(h.Fragment,{children:[M.map(E=>h.jsxs("span",{className:"iccandle-scanner-symbol-search__chip",children:[h.jsx("span",{className:"iccandle-scanner-symbol-search__chip-icon",children:h.jsx(Nr,{name:E.ticker})}),h.jsx("span",{className:"iccandle-scanner-symbol-search__chip-label",children:E.display_name}),h.jsx("span",{role:"button",tabIndex:0,"aria-label":`Remove ${E.display_name}`,className:"iccandle-scanner-symbol-search__chip-remove",onClick:I=>C(E.ticker,I),onKeyDown:I=>{(I.key==="Enter"||I.key===" ")&&(I.preventDefault(),I.stopPropagation(),r(E.ticker,!1))},children:h.jsx(Ai,{className:"h-2.5 w-2.5"})})]},E.ticker)),G>0?h.jsxs("span",{className:"iccandle-scanner-symbol-search__chip-overflow",children:["+",G]}):null]})}),h.jsxs("div",{className:"iccandle-scanner-symbol-search__trigger-meta",children:[h.jsx("span",{children:R}),h.jsx(ds,{className:"h-4 w-4 opacity-60"})]})]}),j]})}),jw=[10,30,50,80,100,150,200],Uw=({control:e,userResultLimit:t,model:n,isProModelEnabled:i,onModelChange:r,onUpgradeClick:a})=>{const{t:o}=nt(),[s,u]=p.useState(null);return h.jsxs("div",{className:"iccandle-scanner-ai-settings",children:[h.jsxs("div",{className:"iccandle-scanner-ai-settings__row",children:[h.jsxs("label",{className:"iccandle-scanner-ai-settings__label",children:[o("Selector.result"),h.jsx(Ln,{title:o("Selector.result"),description:o("Selector.topResultsTooltip"),side:"right",size:16,className:"text-muted-foreground"})]}),h.jsx(wr,{control:e,name:"top_k",render:({field:c})=>h.jsx(Fn,{value:c.value??30,options:jw,onChange:d=>c.onChange(d),isLocked:d=>d>t,getLabel:d=>String(d),onUpgradeClick:a,open:s==="top_k",onOpenChange:d=>u(d?"top_k":null)})})]}),h.jsxs("div",{className:"iccandle-scanner-ai-settings__row",children:[h.jsxs("div",{className:"iccandle-scanner-ai-settings__label",children:[o("Selector.aiModel"),h.jsx(Ln,{title:o("Selector.aiModel"),lines:[{label:"CSE Light",text:o("Selector.aiModelTooltipLight")},{label:"CSE Pro",text:o("Selector.aiModelTooltipPro")}],side:"right",size:16,className:"text-muted-foreground"})]}),h.jsx(Fn,{value:n,options:["light","pro"],onChange:r,isLocked:c=>c==="pro"&&!i,getLabel:c=>c==="light"?"CSE Light":"CSE Pro",onUpgradeClick:a,wrapClassName:"ai-gradient-border",open:s==="model",onOpenChange:c=>u(c?"model":null)})]})]})},mn={free:30,standard:50,pro:100,expert:200};function zw(){const e=Oi();return Object.keys(e).length>0?e:null}function Hw(e,t){return e?.symbols?.length?e.symbols.reduce((n,i)=>(n[i]=!0,n),{}):t?{[t]:!0}:{}}function Yw(e,t){return e?.symbols?.length?e.symbols:t?[t]:[]}function qw(e,t){return e?.timeframe?e.timeframe:t==="1"||t==="5"?"60":t||"60"}const Ww=({intent:e,onCancel:t,onScanConfigSaved:n,onUpgradeClick:i,setResolution:r,timeframe:a,currentSymbol:o})=>{const{t:s}=nt(),[u,c]=p.useState(()=>localStorage.getItem("iccandle_token")?null:"free"),d=mn[u??"free"]??mn.free,l=u==="pro"||u==="expert",[g,f]=p.useState(()=>Ws()),[m]=p.useState(zw),y=m?.top_k??30,[b,x]=p.useState(""),T=p.useDeferredValue(b),[A,S]=p.useState(!1),[v,D]=p.useState(()=>{const L=m?.model??"light";return!localStorage.getItem("iccandle_token")&&L==="pro"?"light":L}),[w,P]=p.useState(m?.temperature??1),[M,G]=p.useState(()=>Hw(m,o)),W=wl({defaultValues:{probability:m?.probability??0,top_k:localStorage.getItem("iccandle_token")?y:Math.min(mn.free,y),timeframe:qw(m,a),period:m?.period??0,symbols:Yw(m,o)}}),B=Mn({control:W.control,name:"symbols"});p.useEffect(()=>{const L=localStorage.getItem("iccandle_token");L&&Me.get(`${Eh}/credits/v1/me`,{headers:{Authorization:`Bearer ${L}`}}).then(({data:R})=>{const j=R?.user_credit?.plan?.toLowerCase()||"free";c(j);const E=mn[j]??mn.free;W.setValue("top_k",Math.min(E,y)),j==="pro"||j==="expert"||D(q=>q==="pro"?"light":q)}).catch(()=>{c("free"),W.setValue("top_k",Math.min(mn.free,y)),D(R=>R==="pro"?"light":R)})},[W,y]);const _=p.useMemo(()=>{const L=new Map;return Qe.forEach(R=>{L.set(R.ticker,R.logo_urls)}),L},[]),V=p.useMemo(()=>{const L=T.toLowerCase();return Qe.filter(R=>R.display_name.toLowerCase().includes(L))},[T]),K=p.useMemo(()=>Object.values(M).filter(Boolean).length,[M]),z=p.useCallback(L=>{const R=Object.entries(L).filter(([j,E])=>E).map(([j])=>j);W.setValue("symbols",R,{shouldValidate:!1})},[W]);p.useEffect(()=>{W.clearErrors("symbols")},[e,W]),p.useEffect(()=>{(B?.length??0)>0&&W.clearErrors("symbols")},[B,W]),p.useEffect(()=>{const L=R=>{R.key==="Escape"&&t()};return window.addEventListener("keydown",L),()=>window.removeEventListener("keydown",L)},[t]);const J=p.useCallback((L,R)=>{G(j=>{const E={...j,[L]:R};return z(E),E})},[z]),X=p.useCallback((L,R)=>{G(j=>{const E={...j};for(const I of L)E[I]=R;return z(E),E})},[z]),re=W.formState.errors.symbols?.message,C=L=>{const R=L.symbols??[];if(R.length===0){W.setError("symbols",{type:"manual",message:s("Pattern.signalDialog.selectOneSymbol")}),setTimeout(()=>{W.clearErrors("symbols")},1800);return}const j=Array.from(new Set(Qe.filter(q=>R.includes(q.ticker)).map(q=>q.type))),E=Qe.every(q=>M[q.ticker])??!1,I={probability:0,top_k:L.top_k,timeframe:L.timeframe,period:L.period,symbols:R,symbolTypes:j,isAllSelected:E,model:v,temperature:w};zg(I),ro(g),r(L.timeframe),t(),e==="settings"?yn({title:s("Common.success"),description:s("Selector.searchFilterSaved"),variant:"success"}):n?.()},k=L=>{L.preventDefault(),W.handleSubmit(C)()},Y=s(e==="scan"?"Selector.scan":"Selector.saveOptions");return h.jsxs("div",{className:"iccandle-scanner-settings",children:[h.jsxs("div",{className:"iccandle-scanner-settings__header",children:[h.jsxs("div",{className:"iccandle-scanner-settings__title-wrap",children:[h.jsx("div",{className:"iccandle-scanner-settings__title",children:s("Selector.scannerOptions")}),h.jsx("div",{className:"iccandle-scanner-settings__description",children:s("Selector.scannerOptionsDescription")})]}),h.jsx("button",{type:"button",onClick:t,className:"iccandle-scanner-option__close-btn","aria-label":s("Common.close"),children:h.jsx(Ai,{size:20})})]}),h.jsx("form",{onSubmit:k,className:"iccandle-scanner-settings__form",id:"scanner-option-form",children:h.jsxs("div",{className:"iccandle-scanner-settings__body",children:[h.jsxs("section",{className:"iccandle-scanner-settings__section",children:[h.jsx("h3",{className:"iccandle-scanner-settings__section-title",children:s("Selector.tabSymbols")}),h.jsx(yc,{searchTerm:b,onSearchChange:x,selectedSymbols:M,onSymbolChange:J,onGroupChange:X,filteredSymbols:V,selectedCount:K,logoByTicker:_,allSymbols:Qe})]}),h.jsx("section",{className:"iccandle-scanner-settings__section",children:h.jsx(Uw,{control:W.control,userResultLimit:d,model:v,isProModelEnabled:l,onModelChange:D,onUpgradeClick:i})}),h.jsxs("section",{className:"iccandle-scanner-settings__section",children:[h.jsxs("button",{type:"button",className:"iccandle-scanner-settings__accordion-trigger","aria-expanded":A,onClick:()=>S(L=>!L),children:[h.jsx("span",{children:s("Selector.tabAdvancedOptions")}),h.jsx("span",{className:yt("iccandle-scanner-settings__accordion-caret",A&&"iccandle-scanner-settings__accordion-caret--open")})]}),A?h.jsx("div",{className:"iccandle-scanner-settings__accordion-content",children:h.jsx(Fw,{control:W.control,temperature:w,onTemperatureChange:P})}):null]})]})}),h.jsxs("div",{className:"iccandle-scanner-option__footer",children:[re?h.jsx("p",{className:"iccandle-scanner-option__error",children:re}):null,h.jsxs("div",{className:"iccandle-scanner-option__actions",children:[h.jsxs("div",{className:"iccandle-scanner-option__always-show",children:[h.jsx(Aw,{id:"scanner-always-show",checked:g,onCheckedChange:L=>{const R=L===!0;f(R),ro(R)}}),h.jsx("label",{htmlFor:"scanner-always-show",className:"iccandle-scanner-option__always-show-label",children:s("Selector.alwaysShow")})]}),h.jsxs("div",{className:"iccandle-scanner-option__buttons",children:[h.jsx("button",{type:"button",className:"iccandle-scanner-option__btn iccandle-scanner-option__btn--outline",onClick:t,children:s("Common.back")}),h.jsxs("button",{type:"submit",form:"scanner-option-form",className:yt("iccandle-scanner-option__btn iccandle-scanner-option__btn--primary",e==="scan"&&"iccandle-scanner-option__btn--scan"),children:[e==="scan"&&h.jsx(ms,{size:14,color:"#ffb84d"}),Y]})]})]})]})]})},_w=({intent:e,handleCloseDialog:t,timeframe:n,setResolution:i,currentSymbol:r,onScanConfigSaved:a,onUpgradeClick:o})=>h.jsx("div",{className:"iccandle-scanner-option",role:"dialog","aria-modal":"true",onPointerDown:s=>{s.target===s.currentTarget&&t()},children:h.jsx("div",{className:"iccandle-scanner-option__card",onPointerDown:s=>s.stopPropagation(),children:h.jsx(Ww,{intent:e,onCancel:t,onScanConfigSaved:a,onUpgradeClick:o,setResolution:i,timeframe:n,currentSymbol:r})})});function Vw(e,t){p.useEffect(()=>{const n=async({origin:i,data:r})=>{if(i!==rn||typeof r!="string")return;let a;try{a=JSON.parse(r)}catch{return}if(a.name!=="news.selectedEventPayloads")return;const o=a.data??[],s=JSON.parse(localStorage.getItem(pi)||"[]"),u=e?.activeChart?.();await e?.headerReady(),o.length<s.length&&await new Promise(c=>{setTimeout(()=>{u?.clearMarks(2),c(!0)},150)}),localStorage.setItem(pi,JSON.stringify(o)),u?.refreshMarks();try{if(t.current&&t.current.length>0&&(t.current.forEach(c=>{try{u?.removeEntity(c)}catch{}}),t.current=[]),o.length===0)return;for(const c of o)try{const d=await u?.createShape({time:Math.floor(c.timestamp/1e3)},{shape:"vertical_line",lock:!0,disableSelection:!0,overrides:{linestyle:2,linewidth:1}});d&&(u?.getShapeById(d)?.setSavingEnabled(!1),t.current.push(d))}catch{}}catch{}};return window.addEventListener("message",n),()=>window.removeEventListener("message",n)},[e,t])}function Kw(e,t,n=1){if(t===0||!isFinite(t))return n;const i=e/t;return isFinite(i)?i:n}function zo(e){if(e.length===0)return 0;const t=[...e].sort((i,r)=>i-r),n=Math.floor(t.length/2);return t.length%2!==0?t[n]:(t[n-1]+t[n])/2}function Jw(e,t,n=[]){if(e.length===0)return[];const i=n.map(d=>Math.abs(d.c-d.o)),r=e.map(d=>Math.abs(d.c-d.o)),a=zo(r),o=zo(i),s=Kw(o,a),u=e[0].o,c=t.c;return e.map(d=>{const l=(d.o-u)*s+c,g=(d.h-u)*s+c,f=(d.l-u)*s+c,m=(d.c-u)*s+c;return{o:l,h:Math.max(g,l,m),l:Math.min(f,l,m),c:m}})}const di=8,bc=4,Dr=6,Rr=5,vc=e=>{const t=new Date(e+di*60*60*1e3),n=t.getUTCDay(),i=t.getUTCHours();return n===0?!1:n===1?i>=Dr:n===6?i<bc:i!==Rr},wc=e=>{const t=new Date(e+di*60*60*1e3),n=t.getUTCDay(),i=t.getUTCHours();if(n===0||n===1&&i<Dr||n===6&&i>=bc){const r=(8-n)%7;return t.setUTCDate(t.getUTCDate()+r),t.setUTCHours(Dr,0,0,0),t.getTime()-di*60*60*1e3}return n>=2&&n<=5&&i===Rr?(t.setUTCHours(Rr+1,0,0,0),t.getTime()-di*60*60*1e3):e},Xw=(e,t,n)=>{const i=gt(t)*1e3,r=[];let a=e;for(let o=0;o<n;o++)a+=i,vc(a)||(a=wc(a)),r.push(a);return r},Ho=(e,t,n,i)=>{if(n<=0)return[];if(i==="24x7"){const a=gt(t)*1e3;return Array.from({length:n},(o,s)=>e+(s+1)*a)}if(i==="1700-1700")return Xw(e,t,n);const r=gt(t)*1e3;return Array.from({length:n},(a,o)=>e+(o+1)*r)},Zw=(e,t,n,i)=>{if(i==="24x7"){const a=gt(n)*1e3;return Math.max(0,Math.floor((t-e)/a))}if(i==="1700-1700"){const a=gt(n)*1e3;let o=0,s=e;for(;s<t;)s+=a,vc(s)||(s=wc(s)),s<=t&&o++;return o}const r=gt(n)*1e3;return Math.max(0,Math.floor((t-e)/r))},Yo=e=>{let t;const n=new Set,i=(c,d)=>{const l=typeof c=="function"?c(t):c;if(!Object.is(l,t)){const g=t;t=d??(typeof l!="object"||l===null)?l:Object.assign({},t,l),n.forEach(f=>f(t,g))}},r=()=>t,s={setState:i,getState:r,getInitialState:()=>u,subscribe:c=>(n.add(c),()=>n.delete(c))},u=t=e(i,r,s);return s},Qw=(e=>e?Yo(e):Yo),$w=e=>e;function ex(e,t=$w){const n=p.useSyncExternalStore(e.subscribe,p.useCallback(()=>t(e.getState()),[e,t]),p.useCallback(()=>t(e.getInitialState()),[e,t]));return p.useDebugValue(n),n}const qo=e=>{const t=Qw(e),n=i=>ex(t,i);return Object.assign(n,t),n},xc=(e=>e?qo(e):qo);xc(e=>({patterns:[],setPatterns:t=>e({patterns:t}),addPattern:t=>e(n=>({patterns:[...n.patterns,t]})),removePattern:t=>e(n=>({patterns:n.patterns.filter(i=>i.id!==t)})),clearPatterns:()=>e({patterns:[]})}));const je=xc((e,t)=>({activeTab:"patterns",setActiveTab:n=>e({activeTab:n}),selectedPattern:null,setSelectedPattern:n=>e({selectedPattern:n}),playEndTimestamp:null,setPlayEndTimestamp:n=>e(()=>({playEndTimestamp:n})),getPlayEndTimestamp:()=>t().playEndTimestamp,targetCandles:[],setTargetCandles:n=>e({targetCandles:n}),gapCount:0,setGapCount:n=>e({gapCount:n})}));let Er=null,Mr=!1,Pc=!1;function tx(e){return typeof e=="function"&&typeof e.onReady!="function"}function nx(e){if(typeof e?.onReady!="function")throw new Error("withPlayChart: expected a TradingView datafeed object with onReady(). If you use a factory, call it first: withPlayChart(yourDataFeed(...)) or pass factory args: withPlayChart(yourDataFeed, arg1, arg2).")}function ix(e){return Er=e,t=>{!Mr&&Pc||e(t)}}function Wo(e){nx(e);const t=e.subscribeBars?.bind(e);return t?Object.assign(Object.create(Object.getPrototypeOf(e)),e,{subscribeBars(n,i,r,a,o){return t(n,i,ix(r),a,o)}}):e}function rx(e,...t){if(tx(e)){if(t.length>0)return Wo(e(...t));throw new Error("withPlayChart: received a datafeed factory. Call it before passing to TradingView: withPlayChart(yourDataFeed(...)) or pass factory arguments: withPlayChart(yourDataFeed, arg1, arg2).")}return Wo(e)}function At(e){Pc=e}function _o(e){if(!Er)return!1;Mr=!0;try{Er(e)}finally{Mr=!1}return!0}let Sc=[];const lr=e=>{Sc=e},ax=()=>Sc,Si=e=>e>1e11?e:e*1e3,Tc=(e,t)=>{const n=Si(e);return t.find(i=>Si(i.time)===n)},Or="Generated Candles - By iC Candle",Ir="Generated Candles Background - By iC Candle",qi="revealed_count",kc={id:qi,name:"Revealed Count",type:"integer",defval:0,isHidden:!0,min:0},Cc=e=>{const t=Math.max(0,Number(e(0))||0);return ax().slice(0,t)},Ac=(e,t)=>!!Tc(e,t),ox=({id:e,description:t,shortDescription:n,isHiddenStudy:i,bodyColors:r,wickColors:a,borderColors:o})=>({_metainfoVersion:51,id:e,description:t,shortDescription:n,isCustomIndicator:!0,is_hidden_study:i,is_price_study:!0,linkedToSeries:!0,format:{type:"price",precision:2},inputs:[kc],palettes:{palette_bar:{colors:{0:{name:"Bullish"},1:{name:"Bearish"}},valToIndex:{0:0,1:1}},palette_wick:{colors:{0:{name:"Bullish Wick"},1:{name:"Bearish Wick"}},valToIndex:{0:0,1:1}},palette_border:{colors:{0:{name:"Bullish Border"},1:{name:"Bearish Border"}},valToIndex:{0:0,1:1}}},plots:[{id:"plot_open",type:"ohlc_open",target:"plot_candle"},{id:"plot_high",type:"ohlc_high",target:"plot_candle"},{id:"plot_low",type:"ohlc_low",target:"plot_candle"},{id:"plot_close",type:"ohlc_close",target:"plot_candle"},{id:"plot_bar_color",type:"ohlc_colorer",palette:"palette_bar",target:"plot_candle"},{id:"plot_wick_color",type:"wick_colorer",palette:"palette_wick",target:"plot_candle"},{id:"plot_border_color",type:"border_colorer",palette:"palette_border",target:"plot_candle"}],ohlcPlots:{plot_candle:{title:n,forceOverlay:!0}},styles:{},defaults:{styles:{},ohlcPlots:{plot_candle:{borderColor:o[0],color:r[0],drawBorder:!0,drawWick:!0,plottype:"ohlc_candles",visible:!0,wickColor:a[0]}},palettes:{palette_bar:{colors:{0:{color:r[0],width:1,style:0},1:{color:r[1],width:1,style:0}}},palette_wick:{colors:{0:{color:a[0],width:1,style:0},1:{color:a[1],width:1,style:0}}},palette_border:{colors:{0:{color:o[0],width:1,style:0},1:{color:o[1],width:1,style:0}}}},precision:2,inputs:{[qi]:0}}}),Vo=0,Nc=(e="light")=>e==="dark"?"#0F0F0F":"#ffffff",Lr=[Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN],sx=e=>function(){this.init=function(t){this._context=t},this.main=function(t,n){this._context=t;const i=t.symbol.time,r=Cc(n);return!Number.isFinite(i)||!r.length?[...Lr]:Ac(i,r)?e(t,r):[...Lr]}},lx=(e="light")=>{const t=Nc(e),n={name:Ir,metainfo:{_metainfoVersion:51,id:"Generated Candles Background - By iC Candle@tv-basicstudies-1",description:Ir,shortDescription:"Generated Candles Background",isCustomIndicator:!0,is_hidden_study:!0,is_price_study:!0,linkedToSeries:!0,format:{type:"inherit"},inputs:[kc],palettes:{prediction_bar_palette:{colors:{0:{name:"Predicted Bar"}},valToIndex:{[Vo]:0}},prediction_mask_palette:{colors:{0:{name:"Predicted Mask"}},valToIndex:{0:0}}},plots:[{id:"bar",type:"bar_colorer",palette:"prediction_bar_palette"},{id:"mask_open",type:"ohlc_open",target:"mask_candle"},{id:"mask_high",type:"ohlc_high",target:"mask_candle"},{id:"mask_low",type:"ohlc_low",target:"mask_candle"},{id:"mask_close",type:"ohlc_close",target:"mask_candle"},{id:"mask_bar_color",type:"ohlc_colorer",palette:"prediction_mask_palette",target:"mask_candle"},{id:"mask_wick_color",type:"wick_colorer",palette:"prediction_mask_palette",target:"mask_candle"},{id:"mask_border_color",type:"border_colorer",palette:"prediction_mask_palette",target:"mask_candle"}],ohlcPlots:{mask_candle:{title:"Predicted Mask Candle",forceOverlay:!0}},defaults:{ohlcPlots:{mask_candle:{borderColor:t,color:t,drawBorder:!0,drawWick:!0,plottype:"ohlc_candles",visible:!0,wickColor:t}},palettes:{prediction_bar_palette:{colors:{0:{color:t,width:1,style:1}}},prediction_mask_palette:{colors:{0:{color:t,width:1,style:0}}}},inputs:{[qi]:0}}},constructor:function(){this.init=function(r){this._context=r},this.main=function(r,a){this._context=r;const o=r.symbol.time,s=Cc(a);if(!Number.isFinite(o)||!Ac(o,s))return[Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN,Number.NaN];const{open:u,high:c,low:d,close:l}=r.symbol,g=Math.max(c-d,Math.abs(l-u),Math.abs(l)*1e-4,.01);return[Vo,u,c+g,d-g,l,0,0,0]}}},i={name:Or,metainfo:ox({id:"Generated Candles - By iC Candle@tv-basicstudies-1",description:Or,shortDescription:"Generated Candles",isHiddenStudy:!1,bodyColors:["#00dfb9","#ffb84d"],wickColors:["#00dfb9","#ffb84d"],borderColors:["#00dfb9","#ffb84d"]}),constructor:sx((r,a)=>{const o=Tc(r.symbol.time,a);if(!o)return[...Lr];const u=o.close<o.open?1:0;return[o.open,o.high,o.low,o.close,u,u,u]})};return Promise.resolve([n,i])},Ko=(e,t)=>{if(t)try{e.removeEntity(t)}catch{}},cx=e=>({"predicted mask candle.color":e,"predicted mask candle.bordercolor":e,"predicted mask candle.wickcolor":e,"predicted bar.color.0":e,"predicted mask.color.0":e}),Dc=(e,t)=>{try{e.getSeries().sendToBack()}catch{}const n=t.generatedCandlesStudyIdRef.current;n&&e.bringToFront([n])},ux=e=>{try{e.getSeries().bringToFront()}catch{}},Rc=async(e,t,n="light")=>{Ko(e,t.generatedCandlesStudyIdRef.current),Ko(e,t.generatedCandlesBackgroundStudyIdRef.current),t.generatedCandlesStudyIdRef.current=null,t.generatedCandlesBackgroundStudyIdRef.current=null;const i=Nc(n),r=await e.createStudy(Ir,!0,!0,void 0,cx(i));r&&(t.generatedCandlesBackgroundStudyIdRef.current=r);const a=await e.createStudy(Or,!0,!0);a&&(t.generatedCandlesStudyIdRef.current=a),Dc(e,t)},cr=(e,t,n)=>{const i={id:qi,value:n};for(const r of[t.generatedCandlesBackgroundStudyIdRef,t.generatedCandlesStudyIdRef])if(r.current)try{e.getStudyById(r.current).setInputValues([i])}catch{}},dx=(e,t,n,i,r)=>{const a=t?.highlightBarsRef,o=je(d=>d.targetCandles),s=je(d=>d.gapCount),u=p.useRef(r),c=p.useRef(null);p.useEffect(()=>{let d=!1,l;const g=()=>{l&&(clearInterval(l),l=void 0)},f=S=>{if(!(!e||!t))try{cr(e.activeChart(),t,S)}catch{}},m=(S,v,D=[])=>{if(!(!e||!r?.length)&&!(!S.length&&!D.length))try{const w=e.activeChart(),P=Gs(n),G=gn(o[0].timestamp,n)/1e3-(Wt*P+P*100);if(v>0&&S.length>0){const K=Si(S[v-1].time)/1e3+Wt/3*P;w.setVisibleRange({from:G,to:K});return}const W=S[S.length-1]??D[D.length-1],_=(W?Si(W.time):gn(o[o.length-1].timestamp,n))/1e3+Wt/3*P;w.setVisibleRange({from:G,to:_})}catch(w){console.error("Error setting visible range:",w)}},y=(S,v,D=[])=>{requestAnimationFrame(()=>{d||m(S,v,D)})},b=(S,v,D)=>new Promise(w=>{if(!S.length){w();return}let P=0,M=0;const G=()=>{g(),w()},W=()=>{if(d){G();return}if(P>=S.length){G();return}if(_o(S[P])){P++,M=0,D?.(P),P>=S.length&&G();return}M++,M>200&&G()};W(),P<S.length&&!d&&(l=setInterval(W,Math.max(v,1)))}),x=async()=>{if(!(!e||!t?.generatedCandlesStudyIdRef||!t?.generatedCandlesBackgroundStudyIdRef))try{await new Promise(S=>{e.onChartReady(async()=>{try{await Rc(e.activeChart(),t,e.getTheme())}catch(v){console.error("Failed to recreate generated candle studies:",v)}S()})})}catch{}},T=(S,v)=>{d||(At(!1),c.current=r,a&&(a.current=S),m(S,S.length,v))},A=async(S,v=[])=>{if(!d&&(At(!0),lr(S),a&&(a.current=[]),await x(),!d)){if(m(S,0,v),v.length>0){for(const D of v){if(d)return;_o(D)}m(S,0,v)}if(await b(S,Mh,D=>{f(D),y(S,D,v),a&&(a.current=S.slice(0,D))}),!d){if(e&&t)try{Dc(e.activeChart(),t)}catch{}T(S,v)}}};return(async()=>{if(!d){if(r?.length&&o.length>0){if(c.current===r)return;const v=[...r].slice(-50-(s||0)),D=Jw(v,o[o.length-1],o),P=Qe.find(z=>z.ticker===i||z.display_name===i)?.session||"24x7",M=gn(o[o.length-1].timestamp,n),G=o[o.length-1].c,W=Ho(M,n,s||0,P),B=W.map(z=>({open:G,high:G,low:G,close:G,time:z})),_=Ho(s?W[W.length-1]:M,n,D.length,P),K=[...D.map((z,J)=>({open:z.o,high:z.h,low:z.l,close:z.c,time:gn(_[J],n)}))].sort((z,J)=>z.time-J.time);try{e?.onChartReady(()=>{A(K,B)})}catch{A(K,B)}}else{if(At(!1),lr([]),c.current=null,a&&(a.current=[]),e&&t)try{cr(e.activeChart(),t,0)}catch{}try{e?.onChartReady(()=>{ux(e.activeChart())})}catch{}}u.current=r}})(),()=>{d=!0,g(),At(!1)}},[r,o,s,a,t,n,i,e]),p.useEffect(()=>{if(r===null&&(lr([]),a&&(a.current=[]),e&&t))try{cr(e.activeChart(),t,0)}catch{}},[t,e,a,r])},hx=(e,t)=>{if(t.current){try{const n=e?.activeChart?.();if(n)try{n.removeEntity(t.current)}catch{}}catch{}t.current=null}},px=e=>{try{localStorage.removeItem(Bn)}catch{}try{const t=e?.activeChart?.();if(!t)return;t.clearMarks(2),t.refreshMarks()}catch{}},mx=(e,t)=>{try{localStorage.setItem(Bn,JSON.stringify(t))}catch{}try{e?.activeChart?.()?.refreshMarks()}catch{}},fx=async(e,t)=>{if(!(!e||!Number.isFinite(t)||t<=0))try{await e.headerReady();const n=e.activeChart(),i=Math.floor(t/1e3),r=n.getVisibleRange();let a;if(r?.from!=null&&r?.to!=null&&r.to>r.from)a=(r.to-r.from)/2;else{const o=gt(n.resolution());a=Wt*o/2}await n.setVisibleRange({from:i-a,to:i+a}),await new Promise(o=>{let s=!1;const u=()=>{s||(s=!0,o())};n.onDataLoaded().subscribe(null,u,!0),setTimeout(u,300)})}catch(n){console.error("Error centering visible range on event",n)}},Ec=async(e,t,n)=>{if(!e||!Number.isFinite(t)||t<=0)return;await e?.headerReady();const i=e?.activeChart?.();if(i)try{if(n.current){try{i.removeEntity(n.current)}catch{}n.current=null}try{const r=gt(i.resolution()),a=Math.floor(t/1e3),o=a-a%r,s=await i.createShape({time:o},{shape:"vertical_line",lock:!0,disableSelection:!0,overrides:{linestyle:2,linewidth:1}});s&&(i.getShapeById(s)?.setSavingEnabled(!1),n.current=s)}catch{}}catch{}},gx=async(e,t)=>{if(!(!e||!Number.isFinite(t)||t<=0))try{await e.headerReady();const n=e.activeChart(),i=gt(n.resolution()),{data:r}=await n.exportData();if(!r?.length)return;const a=r[r.length-1][0],o=Math.floor(t/1e3);await n.setVisibleRange({from:a-Wt*i,to:o+Wt/3*i})}catch(n){console.error("Error expanding visible range for future event",n)}},Mc=async(e,t,n)=>{if(!e||!n||!Number.isFinite(t)||t<=0)return!1;try{await e.headerReady();const i=e.activeChart(),r=i.resolution(),a=gt(r),o=Math.floor(t/1e3),s=o-o%a,{data:u}=await i.exportData();if(!u?.length)return!1;const d=u[u.length-1][0],l=i.symbol(),g=Qe.find(y=>y.ticker===l||y.display_name===l)?.session||"24x7";if(n.clearSelectedCandles(),je.getState().setPlayEndTimestamp(null),At(!1),s>d){const y=gn(d,r),b=gn(s,r),x=Zw(y,b,r,g);je.getState().setGapCount(x);const T=u.slice(-50).map(A=>({o:A[1],h:A[2],l:A[3],c:A[4],timestamp:A[0]}));return T.length===0||n.setTargetCandles(T),!0}je.getState().setGapCount(0);let f=u.findIndex(y=>y[0]===s);if(f===-1){let y=Number.POSITIVE_INFINITY;for(let b=0;b<u.length;b++){const x=Math.abs(u[b][0]-s);x<y&&(y=x,f=b)}}if(f<0)return!1;const m=u.slice(Math.max(0,f-49),f+1).map(y=>({o:y[1],h:y[2],l:y[3],c:y[4],timestamp:y[0]}));return m.length===0||n.setTargetCandles(m),!1}catch(i){return console.error("Error preparing event target candles",i),!1}},Ti=e=>{if(e)try{e.onChartReady(()=>{try{e.activeChart().resetData(),e.resetCache?.()}catch(t){console.error("Error resetting chart data",t)}})}catch(t){console.error("Error resetting chart data",t)}},ur=(e,t)=>{t([]),je.getState().setPlayEndTimestamp(null),At(!1),Ti(e)},Oc=(e,t)=>{if(e)try{const n=e.activeChart?.();if(!n)return;if(t.current){try{n.removeEntity(t.current)}catch{}t.current=null}n.getAllShapes().filter(r=>r.name==="date_range").forEach(r=>{try{n.removeEntity(r.id)}catch{}})}catch{}},yx=e=>_g[e]||e,bx=e=>{if(!e)return null;const t=Object.keys(e)[0],n=Number(t);return Number.isFinite(n)&&n>0?n:null},Jo=async(e,t,n,i,r,a)=>{if(!e)return;const{end_timestamp:o,symbol:s,timeframe:u}=t,c=bx(r),d=yx(u);if(!(!s||!u||!Number.isFinite(o)||o<=0||c==null)&&!(a&&a.length>0&&!a.includes(d)&&!a.includes(u)))try{await e.headerReady();const l=gt(d);i?.clearSelectedCandles(),je.getState().setPlayEndTimestamp(null),At(!1),i&&(i.applyingPatternRef.current=!0);try{await new Promise(w=>{e.setSymbol(s,d,()=>w())});const g=e.activeChart();Oc(e,n);const f=o-(c-1)*l;try{await g.setVisibleRange({from:f-(Wt*l+l*c+l*100),to:o+Wt/3*l})}catch(w){console.error("Error setting visible range for pattern",w)}const{data:m}=await g.exportData();let y=m.findIndex(w=>w[0]===o);y===-1&&(y=m.length-1);const b=Math.max(0,y-c+1),x=m.slice(b,y+1),T=x[0]?.[0]??o,A=x[x.length-1]?.[0]??o,S=t.pattern?.trim()||"",v=gr(),D=await g.createMultipointShape([{time:T},{time:A}],{...v,overrides:{...v.overrides,title:S||"Pattern range"}});if(D){const w=g.getShapeById(D);w&&(S&&w.setProperties({customText:{visible:!0,text:S,color:"#ffffff",fontsize:14,bold:!0}}),w.setSavingEnabled(!1)),n.current=D,i&&(i.lastEntity.current=D)}if(i&&x.length>0){const w=x.map(M=>({o:M[1],h:M[2],l:M[3],c:M[4],timestamp:M[0]})),P=w.slice(-50);i.setSymbol(s),i.setResolution(d),i.setTimeframe(d),i.setWindowSize(w.length),i.setCandles(w),i.setTargetCandles(P),i.setHasActiveShape(!0)}}finally{i&&setTimeout(()=>{i.applyingPatternRef.current=!1},600)}}catch(l){console.error("Error drawing pattern date range",l),i&&setTimeout(()=>{i.applyingPatternRef.current=!1},600)}};function vx(e,t,n,i,r,a,o,s){const u=p.useRef(n),c=p.useRef(e),d=p.useRef(t),l=p.useRef(i),g=p.useRef(r),f=p.useRef(a),m=p.useRef(o),y=p.useRef(s),b=p.useRef(null),x=p.useRef(null),T=p.useRef(null);p.useEffect(()=>{u.current=n},[n]),p.useEffect(()=>{c.current=e},[e]),p.useEffect(()=>{d.current=t},[t]),p.useEffect(()=>{l.current=i},[i]),p.useEffect(()=>{g.current=r},[r]),p.useEffect(()=>{f.current=a},[a]),p.useEffect(()=>{m.current=o},[o]),p.useEffect(()=>{y.current=s},[s]),p.useEffect(()=>{const A=({origin:S,data:v})=>{if(S!==rn)return;let D;try{D=typeof v=="string"?JSON.parse(v):v}catch{return}if(!D||typeof D!="object")return;const w=()=>{Oc(c.current,x);const G=f.current;G&&(G.lastEntity.current=null,G.setHasActiveShape(!1),G.setCandles([]),G.setTargetCandles([]))},P=D.name;if(typeof P!="string")return;const M=D.data;switch(P){case"chart.play":{const G=M;if(!G)return;if(G.isReplay){const _=(G.selectedCandles??[]).map(K=>({o:K.o,h:K.h,l:K.l,c:K.c,timestamp:K.timestamp}));if(_.length===0)return;d.current(_);const V=G.playEndTimestamp??(T.current!=null?Math.floor(T.current/1e3):u.current);V!=null&&Number.isFinite(V)&&je.getState().setPlayEndTimestamp(V);return}if(!("candles"in G))return;const W=G.candles??null;d.current(W);const B=u.current;B!=null&&Number.isFinite(B)&&je.getState().setPlayEndTimestamp(B);break}case"chart.stop":{if(M?.isReplay===!1){ur(c.current,d.current);break}d.current(null),je.getState().setPlayEndTimestamp(null),At(!1),Ti(c.current);break}case"selector.closeResult":d.current([]),je.getState().setPlayEndTimestamp(null),g.current?.();break;case"selector.loading":{const G=M;l.current(G?.isLoading??!1);break}case"auth.signIn":{const G=M;localStorage.setItem("iccandle_token",G?.idToken||"");break}case"auth.signOut":localStorage.removeItem("iccandle_token");break;case"news.eventClicked":{const W=M?.event;if(!W?.timestamp)return;T.current=W.timestamp,mx(c.current,W),(async()=>(await Mc(c.current,W.timestamp,f.current)?await gx(c.current,W.timestamp):await fx(c.current,W.timestamp),await Ec(c.current,W.timestamp,b)))();break}case"news.back":hx(c.current,b),px(c.current),ur(c.current,d.current),T.current=null,je.getState().setGapCount(0),f.current?.setTargetCandles([]);break;case"news.backToSimilarEvents":ur(c.current,d.current);break;case"pattern.classicPatternSelected":{const W=D.data?.pattern,B=W?.compared_pattern;if(!B)return;Jo(c.current,B,x,f.current,W?.results?.matches_by_window,y.current);break}case"pattern.custom_pattern_selected":{const W=M?.pattern,B=W?.compared_pattern;if(!B)return;Jo(c.current,B,x,f.current,W?.results?.matches_by_window,y.current);break}case"pattern.clear_custom_pattern_selected":case"pattern.clearClassicPatternSelected":w();break;case"nav.click":{const G=M;G?.href&&m.current?.(G.href);break}}};return window.addEventListener("message",A),()=>window.removeEventListener("message",A)},[])}const wx="open-pricing";function xx(e){return{type:wx,...e}}function Ic(e,t){e.postMessage(JSON.stringify(xx(t)),"*")}function Px(e,t){const n=e?.contentWindow;return n?(Ic(n,t),!0):!1}function Sx(e){return typeof window>"u"||window.parent===window?!1:(Ic(window.parent,e),!0)}const Tx=({patternName:e,onPatternNameChange:t,onNext:n,onCancel:i})=>{const{t:r}=nt();return h.jsxs("div",{className:"iccandle-pattern-alert-name",children:[h.jsxs("div",{className:"iccandle-pattern-alert-name__header",children:[h.jsxs("div",{className:"iccandle-pattern-alert-name__title-row",children:[h.jsxs("h2",{className:"iccandle-pattern-alert-name__title",children:[h.jsx(qr,{size:20,className:"iccandle-pattern-alert-name__title-icon"}),r("Pattern.addToPatternTracker")]}),h.jsx("button",{type:"button",className:"iccandle-pattern-alert-name__close-btn",onClick:i,"aria-label":r("Common.close"),children:h.jsx(zs,{size:20})})]}),h.jsx("p",{className:"iccandle-pattern-alert-name__description",children:r("Pattern.addToPatternTrackerDescription")})]}),h.jsxs("div",{className:"iccandle-pattern-alert-name__content",children:[h.jsx(jg,{size:64,className:"iccandle-pattern-alert-name__bell-icon"}),h.jsx("div",{className:"iccandle-pattern-alert-name__form",children:h.jsxs("div",{className:"iccandle-pattern-alert-name__field",children:[h.jsx("label",{htmlFor:"patternName",className:"iccandle-pattern-alert-name__label",children:r("Pattern.patternName")}),h.jsx("input",{id:"patternName",className:"iccandle-pattern-alert-name__input",placeholder:r("Pattern.patternNamePlaceholder"),value:e,maxLength:20,minLength:5,onChange:a=>t(a.target.value.slice(0,20))}),e.length===20&&h.jsx("p",{className:"iccandle-pattern-alert-name__error",children:r("Pattern.patternNameMaxChars")}),e.trim().length>0&&e.trim().length<5&&h.jsx("p",{className:"iccandle-pattern-alert-name__error",children:r("Pattern.patternNameMinChars")})]})})]}),h.jsxs("div",{className:"iccandle-pattern-alert-name__footer-wrap",children:[h.jsx("hr",{className:"iccandle-pattern-alert-name__divider"}),h.jsxs("div",{className:"iccandle-pattern-alert-name__footer",children:[h.jsx("button",{type:"button",className:"iccandle-pattern-alert-name__btn iccandle-pattern-alert-name__btn--outline",onClick:i,children:r("Common.cancel")}),h.jsx("button",{type:"submit",className:"iccandle-pattern-alert-name__btn iccandle-pattern-alert-name__btn--primary",onClick:n,disabled:e.trim().length<5,children:r("Common.next")})]})]})]})},kx=zy;F.createContext({});F.createContext({});const Gn=[{value:"M15",label:"M15",description:"15 Minutes",type:"minutes"},{value:"M30",label:"M30",description:"30 Minutes",type:"minutes"},{value:"H1",label:"H1",description:"1 Hour",type:"hourly"},{value:"H2",label:"H2",description:"2 Hours",type:"hourly"},{value:"H4",label:"H4",description:"4 Hours",type:"hourly"},{value:"D",label:"D",description:"Daily",type:"daily"}];function Cx({state:e}){return e==="all"?h.jsx("div",{className:"iccandle-scanner-timeframe-search__check iccandle-scanner-timeframe-search__check--on",children:h.jsx(an,{className:"h-3 w-3"})}):e==="some"?h.jsx("div",{className:"iccandle-scanner-timeframe-search__check iccandle-scanner-timeframe-search__check--on",children:h.jsx(hs,{className:"h-3 w-3"})}):h.jsx("div",{className:"iccandle-scanner-timeframe-search__check"})}const Ax=p.memo(function({searchTerm:t,onSearchChange:n,selectedTimeframes:i,onTimeframeChange:r,onGroupChange:a,filteredTimeframes:o,selectedCount:s,allTimeframes:u}){const{t:c}=nt(),d=p.useRef(null),l=p.useRef(null),g=p.useRef(null),f=p.useRef(null),[m,y]=p.useState(!1),[b,x]=p.useState(null),[T,A]=p.useState(null),S=p.useCallback(C=>{d.current=C;const k=C?.closest(".iccandle-selector-widget")??document.body;x(Y=>Y===k?Y:k)},[]),v=p.useCallback(()=>{const C=l.current;if(!C)return;const k=C.getBoundingClientRect(),Y=4,L=384,R=window.innerHeight-k.bottom-Y-8,j=k.top-8,E=R<Math.min(L,240)&&j>R,I=Math.max(160,Math.min(L,E?j:R)),q=E?Math.max(8,k.top-Y-I):k.bottom+Y;A({top:q,left:k.left,width:k.width,maxHeight:I})},[]),D=u??o??Gn,w=o??Gn,P=p.useMemo(()=>D.filter(C=>i[C.value]),[D,i]),M=p.useCallback(C=>{if(C.length===0)return"none";const k=C.filter(Y=>i[Y.value]).length;return k===0?"none":k===C.length?"all":"some"},[i]),G=p.useCallback(C=>c(`Pattern.timeframeOptions.${C}.displayName`),[c]),W=p.useCallback(C=>c(`Pattern.timeframeOptions.${C}.description`),[c]),B=p.useCallback(C=>{r(C,!i[C])},[r,i]),_=p.useCallback(()=>{const C=w.map(Y=>Y.value),k=M(w)!=="all";a(C,k)},[w,M,a]),V=p.useCallback((C,k)=>{k.preventDefault(),k.stopPropagation(),r(C,!1)},[r]),K=p.useCallback(()=>{y(!1),A(null),n("")},[n]),z=p.useCallback(C=>{if(C){y(!0);return}K()},[K]);p.useLayoutEffect(()=>{if(!m)return;v();const C=()=>v();return window.addEventListener("resize",C),window.addEventListener("scroll",C,!0),()=>{window.removeEventListener("resize",C),window.removeEventListener("scroll",C,!0)}},[m,v]),p.useEffect(()=>{if(!m)return;const C=Y=>{const L=Y.target;L&&(d.current?.contains(L)||g.current?.contains(L)||K())},k=Y=>{Y.key==="Escape"&&K()};return document.addEventListener("mousedown",C),document.addEventListener("keydown",k),()=>{document.removeEventListener("mousedown",C),document.removeEventListener("keydown",k)}},[K,m]),p.useEffect(()=>{if(!m)return;const C=requestAnimationFrame(()=>{f.current?.focus()});return()=>cancelAnimationFrame(C)},[m]);const J=M(w),X=s<=1?c("Pattern.timeframeSelected",{count:s}):c("Pattern.timeframesSelected",{count:s}),re=m&&b&&T?Dt.createPortal(h.jsxs("div",{ref:g,className:"iccandle-scanner-timeframe-search__popover",role:"listbox","aria-multiselectable":!0,style:{top:T.top,left:T.left,width:T.width,maxHeight:T.maxHeight},children:[h.jsxs("div",{className:"iccandle-scanner-timeframe-search__search",children:[h.jsx(ps,{className:"iccandle-scanner-timeframe-search__search-icon"}),h.jsx("input",{ref:f,type:"text",className:"iccandle-scanner-timeframe-search__command-input",placeholder:c("Selector.searchTimeframe"),value:t,onChange:C=>n(C.target.value.toUpperCase()),"aria-label":c("Selector.searchTimeframe")})]}),h.jsxs("div",{className:"iccandle-scanner-timeframe-search__command-list",style:{maxHeight:Math.max(120,T.maxHeight-48)},children:[t.trim()&&w.length===0?h.jsx("div",{className:"iccandle-scanner-timeframe-search__empty",children:c("Selector.noResultsFound")}):null,w.length>0?h.jsxs("div",{className:"iccandle-scanner-timeframe-search__select-all",children:[h.jsx("button",{type:"button",className:"iccandle-scanner-timeframe-search__group-check-btn",onClick:_,"aria-label":c("Selector.selectAllTimeframes"),children:h.jsx(Cx,{state:J})}),h.jsx("button",{type:"button",className:"iccandle-scanner-timeframe-search__group-label-btn",onClick:_,children:c("Selector.selectAllTimeframes")})]}):null,w.map(C=>{const k=!!i[C.value];return h.jsxs("button",{type:"button",role:"option","aria-selected":k,className:"iccandle-scanner-timeframe-search__item",onClick:()=>B(C.value),children:[h.jsx("div",{className:yt("iccandle-scanner-timeframe-search__check",k&&"iccandle-scanner-timeframe-search__check--on"),children:k?h.jsx(an,{className:"h-3 w-3"}):null}),h.jsx("span",{className:"iccandle-scanner-timeframe-search__item-label",children:G(C.value)}),h.jsx("span",{className:"iccandle-scanner-timeframe-search__item-description",children:W(C.value)})]},C.value)})]})]}),b):null;return h.jsxs("div",{ref:S,className:"iccandle-scanner-timeframe-search iccandle-scanner-timeframe-search--combobox",children:[h.jsxs("button",{ref:l,type:"button",role:"combobox","aria-expanded":m,"aria-haspopup":"listbox",className:"iccandle-scanner-timeframe-search__trigger",onClick:()=>z(!m),children:[h.jsx("div",{className:"iccandle-scanner-timeframe-search__chips",children:P.length===0?h.jsx("span",{className:"iccandle-scanner-timeframe-search__placeholder",children:c("Selector.searchTimeframe")}):h.jsx(h.Fragment,{children:P.map(C=>h.jsxs("span",{className:"iccandle-scanner-timeframe-search__chip",children:[h.jsx("span",{className:"iccandle-scanner-timeframe-search__chip-label",children:C.label}),h.jsx("span",{role:"button",tabIndex:0,"aria-label":`Remove ${C.label}`,className:"iccandle-scanner-timeframe-search__chip-remove",onClick:k=>V(C.value,k),onKeyDown:k=>{(k.key==="Enter"||k.key===" ")&&(k.preventDefault(),k.stopPropagation(),r(C.value,!1))},children:h.jsx(Ai,{className:"h-2.5 w-2.5"})})]},C.value))})}),h.jsxs("div",{className:"iccandle-scanner-timeframe-search__trigger-meta",children:[h.jsx("span",{children:X}),h.jsx(ds,{className:"h-4 w-4 opacity-60"})]})]}),re]})}),Nx=({form:e})=>{const{t}=nt(),[n,i]=p.useState(""),r=p.useDeferredValue(n),a=e.watch("timeframes"),o=p.useMemo(()=>a.reduce((g,f)=>(g[f]=!0,g),{}),[a]),s=p.useMemo(()=>{const g=r.toLowerCase();return Gn.filter(f=>{const m=t(`Pattern.timeframeOptions.${f.value}.displayName`).toLowerCase(),y=t(`Pattern.timeframeOptions.${f.value}.description`).toLowerCase();return f.label.toLowerCase().includes(g)||f.value.toLowerCase().includes(g)||m.includes(g)||y.includes(g)})},[r,t]),u=p.useMemo(()=>Object.values(o).filter(Boolean).length,[o]),c=p.useCallback(g=>{const f=Gn.filter(m=>g[m.value]).map(m=>m.value);e.setValue("timeframes",f,{shouldDirty:!0}),f.length>0&&e.clearErrors("timeframes")},[e]),d=p.useCallback((g,f)=>{c({...o,[g]:f})},[o,c]),l=p.useCallback((g,f)=>{const m={...o};for(const y of g)m[y]=f;c(m)},[o,c]);return h.jsxs("div",{className:"iccandle-timeframes-tab",children:[h.jsx("div",{className:"iccandle-timeframes-tab__header",children:h.jsx("h3",{className:"iccandle-timeframes-tab__title",children:t("Pattern.selectTimeframes")})}),h.jsx(Ax,{searchTerm:n,onSearchChange:i,selectedTimeframes:o,onTimeframeChange:d,onGroupChange:l,filteredTimeframes:s,selectedCount:u,allTimeframes:[...Gn]})]})},Dx=({form:e})=>{const{t}=nt(),[n,i]=p.useState(""),r=p.useDeferredValue(n),a=e.watch("symbols"),o=p.useMemo(()=>a.reduce((f,m)=>(f[m.symbol]=!0,f),{}),[a]),s=p.useMemo(()=>{const f=r.toLowerCase();return Qe.filter(m=>m.display_name.toLowerCase().includes(f)||m.description.toLowerCase().includes(f))},[r]),u=p.useMemo(()=>Object.values(o).filter(Boolean).length,[o]),c=p.useMemo(()=>{const f=new Map;return Qe.forEach(m=>{f.set(m.ticker,m.logo_urls)}),f},[]),d=p.useCallback(f=>{e.setValue("symbols",Object.entries(f).filter(([,m])=>m).map(([m])=>{const y=Qe.find(b=>b.ticker===m);return{symbol:m,type:y?.type??"forex"}}),{shouldDirty:!0}),Object.values(f).some(Boolean)&&e.clearErrors("symbols")},[e]),l=p.useCallback((f,m)=>{d({...o,[f]:m})},[o,d]),g=p.useCallback((f,m)=>{const y={...o};for(const b of f)y[b]=m;d(y)},[o,d]);return h.jsxs("div",{className:"iccandle-symbols-tab",children:[h.jsx("div",{className:"iccandle-symbols-tab__header",children:h.jsx("h3",{className:"iccandle-symbols-tab__title",children:t("Pattern.signalDialog.selectCurrencyPairs")})}),h.jsx(yc,{searchTerm:n,onSearchChange:i,selectedSymbols:o,onSymbolChange:l,onGroupChange:g,filteredSymbols:s,selectedCount:u,logoByTicker:c,allSymbols:Qe})]})},pa=[{value:"new_york",label:"New York Session",timezone:"America/New_York",start:"09:30",end:"16:00"},{value:"london",label:"London Session",timezone:"Europe/London",start:"08:00",end:"16:30"},{value:"tokyo",label:"Tokyo Session",timezone:"Asia/Tokyo",start:"09:00",end:"18:00"},{value:"sydney",label:"Sydney Session",timezone:"Australia/Sydney",start:"09:00",end:"18:00"}],Xo=[{value:"all_time",label:"All time"},...pa.map(e=>({value:e.value,label:e.label})),{value:"customize",label:"Customize"}],Rx=e=>{const t=e.match(/GMT([+-])(\d{1,2})(?::?(\d{2}))?/);if(!t)return 0;const n=t[1]==="-"?-1:1,i=Number(t[2]),r=Number(t[3]??"0");return n*(i*60+r)},Zo=(e,t)=>{const i=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"shortOffset",hour:"2-digit"}).formatToParts(e).find(r=>r.type==="timeZoneName")?.value??"GMT+0";return Rx(i)},Qo=(e,t,n)=>{const[i,r]=e.split(":").map(Number),a=new Date,o=Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),i,r,0),s=Zo(new Date(o),t);let u=o-s*6e4;const c=Zo(new Date(u),t);return u=o-c*6e4,new Intl.DateTimeFormat("en-GB",{timeZone:n,hour12:!1,hour:"2-digit",minute:"2-digit"}).format(new Date(u))},ki=(e,t)=>{const n=pa.find(i=>i.value===e);return n?{start_time:Qo(n.start,n.timezone,t),end_time:Qo(n.end,n.timezone,t),timezone:t}:null},Ex=(e,t)=>{if(!e)return"all_time";const n=e.timezone||t,i=!!(e.start_time&&e.end_time);if(e.preset_session){if(e.preset_session==="all_time")return"all_time";if(e.preset_session==="customize")return"customize";const a=ki(e.preset_session,n);if(a&&a.start_time===e.start_time&&a.end_time===e.end_time)return e.preset_session}if(!i)return"customize";const r=pa.find(a=>{const o=ki(a.value,n);return o&&o.start_time===e.start_time&&o.end_time===e.end_time});return r?r.value:"customize"},Mx=e=>{const t=Intl,n=typeof t.supportedValuesOf=="function"?t.supportedValuesOf("timeZone")??[]:[],i=e||"UTC";return(n.length?n:[i]).filter(Boolean)},Ox={all_time:"TimeConfig.allTime",new_york:"TimeConfig.newYorkSession",london:"TimeConfig.londonSession",tokyo:"TimeConfig.tokyoSession",sydney:"TimeConfig.sydneySession",customize:"TimeConfig.customize"},Ix=(e,t)=>{const n=t.trim().toLowerCase();return n?e.filter(i=>i.toLowerCase().includes(n)):e},Lx=({timeconfig:e,onTimeConfigChange:t,containerClassName:n=""})=>{const{t:i}=nt(),r=p.useRef(null),a=p.useRef(null),o=p.useRef(null),s=p.useRef(null),u=p.useRef(null),[c,d]=p.useState(null),[l,g]=p.useState(!1),[f,m]=p.useState(!1),[y,b]=p.useState(""),[x,T]=p.useState(""),[A,S]=p.useState(null),[v,D]=p.useState(null),w=p.useCallback(R=>{r.current=R;const j=R?.closest(".iccandle-selector-widget")??document.body;d(E=>E===j?E:j)},[]),P=Intl.DateTimeFormat().resolvedOptions().timeZone,M=p.useMemo(()=>Ex(e,P),[e,P]),G=R=>i(Ox[R]),W=e?.timezone?.trim()||P||"UTC",B=M==="all_time"?i("TimeConfig.yourTimezone"):W,_=p.useMemo(()=>Mx(P),[P]),V=p.useMemo(()=>{const R=y.trim().toLowerCase();return R?Xo.filter(j=>G(j.value).toLowerCase().includes(R)||j.value.toLowerCase().includes(R)):Xo},[y,i]),K=p.useMemo(()=>Ix(_,x),[_,x]),z=p.useCallback((R,j)=>{if(!R)return;const E=R.getBoundingClientRect(),I=4,q=320,$=window.innerHeight-E.bottom-I-8,ie=E.top-8,de=$<Math.min(q,180)&&ie>$,Z=Math.max(160,Math.min(q,de?ie:$)),be=de?Math.max(8,E.top-I-Z):E.bottom+I;j({top:be,left:E.left,width:E.width,maxHeight:Z})},[]),J=p.useCallback(()=>{m(!1),b(""),S(null)},[]),X=p.useCallback(()=>{g(!1),T(""),D(null)},[]),re=(R,j)=>{t({...e||{timezone:P},[R]:j,preset_session:"customize"},{shouldDirty:!0})},C=R=>{if(J(),R==="all_time"){e&&t(void 0,{shouldDirty:!0}),X();return}if(R==="customize"){e?e.preset_session!=="customize"&&t({...e,preset_session:"customize"},{shouldDirty:!0}):t({start_time:"08:00",end_time:"23:00",timezone:P,preset_session:"customize"},{shouldDirty:!0});return}const j=ki(R,e?.timezone||P);j&&t({...j,preset_session:R},{shouldDirty:!0})};p.useEffect(()=>{!e||M==="all_time"||e.timezone||t({...e,timezone:P},{shouldDirty:!1})},[e,M,t,P]),p.useLayoutEffect(()=>{if(!f&&!l)return;const R=()=>{f&&z(a.current,S),l&&z(o.current,D)};return R(),window.addEventListener("resize",R),window.addEventListener("scroll",R,!0),()=>{window.removeEventListener("resize",R),window.removeEventListener("scroll",R,!0)}},[f,l,z]),p.useEffect(()=>{if(!f&&!l)return;const R=E=>{const I=E.target;I&&(r.current?.contains(I)||s.current?.contains(I)||u.current?.contains(I)||(f&&J(),l&&X()))},j=E=>{E.key==="Escape"&&(f&&J(),l&&X())};return document.addEventListener("mousedown",R),document.addEventListener("keydown",j),()=>{document.removeEventListener("mousedown",R),document.removeEventListener("keydown",j)}},[J,X,f,l]);const k=R=>{if(M!=="customize")return;const j=R.currentTarget;try{j.showPicker?.()}catch{}},Y=f&&c&&A?Dt.createPortal(h.jsxs("div",{ref:s,className:"iccandle-time-config-section__dropdown iccandle-time-config-section__dropdown--portal",role:"listbox",style:{top:A.top,left:A.left,width:A.width,maxHeight:A.maxHeight},children:[h.jsx("div",{className:"iccandle-time-config-section__dropdown-search",children:h.jsx("input",{type:"text",className:"iccandle-time-config-section__dropdown-search-input",placeholder:i("TimeConfig.searchSession"),value:y,onChange:R=>b(R.target.value),autoFocus:!0})}),h.jsxs("ul",{className:"iccandle-time-config-section__dropdown-list",style:{maxHeight:Math.max(120,A.maxHeight-52)},children:[h.jsx("li",{className:"iccandle-time-config-section__dropdown-group-label","aria-hidden":"true",children:i("TimeConfig.sessionsHeading")}),V.length===0?h.jsx("li",{className:"iccandle-time-config-section__dropdown-empty",children:i("TimeConfig.noSessionFound")}):V.map(R=>h.jsx("li",{children:h.jsxs("button",{type:"button",role:"option","aria-selected":M===R.value,className:`iccandle-time-config-section__dropdown-item${M===R.value?" iccandle-time-config-section__dropdown-item--selected":""}`,onClick:()=>C(R.value),children:[h.jsx(an,{className:`iccandle-time-config-section__check${M===R.value?" iccandle-time-config-section__check--visible":""}`}),G(R.value)]})},R.value))]})]}),c):null,L=l&&c&&v?Dt.createPortal(h.jsxs("div",{ref:u,className:"iccandle-time-config-section__dropdown iccandle-time-config-section__dropdown--portal",role:"listbox",style:{top:v.top,left:v.left,width:v.width,maxHeight:v.maxHeight},children:[h.jsxs("div",{className:"iccandle-time-config-section__dropdown-header",children:[h.jsx("p",{className:"iccandle-time-config-section__dropdown-title",children:i("TimeConfig.selectTimezone")}),h.jsx("p",{className:"iccandle-time-config-section__dropdown-subtitle",children:i("TimeConfig.selectTimezoneHint")})]}),h.jsx("div",{className:"iccandle-time-config-section__dropdown-search",children:h.jsx("input",{type:"text",className:"iccandle-time-config-section__dropdown-search-input",placeholder:i("TimeConfig.searchTimezone"),value:x,onChange:R=>T(R.target.value),autoFocus:!0})}),h.jsxs("ul",{className:"iccandle-time-config-section__dropdown-list",style:{maxHeight:Math.max(120,v.maxHeight-96)},children:[h.jsx("li",{className:"iccandle-time-config-section__dropdown-group-label","aria-hidden":"true",children:i("TimeConfig.timezonesHeading")}),K.length===0?h.jsx("li",{className:"iccandle-time-config-section__dropdown-empty",children:i("TimeConfig.noTimezoneFound")}):K.map(R=>h.jsx("li",{children:h.jsxs("button",{type:"button",role:"option","aria-selected":W===R,className:`iccandle-time-config-section__dropdown-item${W===R?" iccandle-time-config-section__dropdown-item--selected":""}`,onClick:()=>{const j=R;if(M!=="all_time"&&M!=="customize"){const E=ki(M,j);E&&t({...E,preset_session:M},{shouldDirty:!0})}else t({...e||{},timezone:j},{shouldDirty:!0});X()},children:[h.jsx(an,{className:`iccandle-time-config-section__check${W===R?" iccandle-time-config-section__check--visible":""}`}),R]})},R))]})]}),c):null;return h.jsxs("div",{ref:w,className:`iccandle-time-config-section ${n}`.trim(),children:[h.jsx("div",{className:"iccandle-time-config-section__header",children:h.jsx("h3",{className:"iccandle-time-config-section__title",children:i("TimeConfig.title")})}),h.jsxs("div",{className:"iccandle-time-config-section__fields",children:[h.jsxs("div",{className:"iccandle-time-config-section__row",children:[h.jsxs("div",{className:"iccandle-time-config-section__field",children:[h.jsx("label",{className:"iccandle-time-config-section__label",children:i("TimeConfig.session")}),h.jsx("div",{className:`iccandle-time-config-section__select-wrap${f?" iccandle-time-config-section__select-wrap--open":""}`,children:h.jsx("button",{ref:a,type:"button",className:"iccandle-time-config-section__select-btn","aria-haspopup":"listbox","aria-expanded":f,onClick:()=>{if(f){J();return}X(),m(!0)},children:h.jsx("span",{className:"iccandle-time-config-section__select-label",children:G(M)||i("TimeConfig.selectSession")})})})]}),h.jsxs("div",{className:"iccandle-time-config-section__field",children:[h.jsx("label",{className:"iccandle-time-config-section__label",children:i("TimeConfig.timezone")}),h.jsx("div",{className:`iccandle-time-config-section__select-wrap${l?" iccandle-time-config-section__select-wrap--open":""}`,children:h.jsx("button",{ref:o,type:"button",className:"iccandle-time-config-section__select-btn","aria-haspopup":"listbox","aria-expanded":l,disabled:M==="all_time",onClick:()=>{if(l){X();return}J(),g(!0)},children:h.jsx("span",{className:"iccandle-time-config-section__select-label",children:B})})})]})]}),h.jsxs("div",{className:"iccandle-time-config-section__row",children:[h.jsxs("div",{className:"iccandle-time-config-section__field",children:[h.jsx("label",{className:"iccandle-time-config-section__label",children:i("TimeConfig.startTime")}),h.jsx("input",{type:"time",disabled:M!=="customize",value:e?.start_time??"",onChange:R=>re("start_time",R.target.value),onClick:k,className:"iccandle-time-config-section__input"})]}),h.jsxs("div",{className:"iccandle-time-config-section__field",children:[h.jsx("label",{className:"iccandle-time-config-section__label",children:i("TimeConfig.endTime")}),h.jsx("input",{type:"time",disabled:M!=="customize",value:e?.end_time??"",onChange:R=>re("end_time",R.target.value),onClick:k,className:"iccandle-time-config-section__input"})]})]})]}),Y,L]})},Fx=({form:e,onBack:t,onCancel:n,onSubscribe:i,isSubscribing:r,errorMessage:a,formRef:o})=>{const{t:s}=nt(),[u,c]=p.useState(null),d=Mn({control:e.control,name:"timeframes"}),l=Mn({control:e.control,name:"symbols"}),g=Mn({control:e.control,name:"timeconfig"}),f=s("Pattern.signalDialog.selectOneTimeframe"),m=s("Pattern.signalDialog.selectOneSymbol"),b=(u===f&&(d?.length??0)>0||u===m&&(l?.length??0)>0?null:u)||a;p.useEffect(()=>{(d?.length??0)>0&&e.clearErrors("timeframes")},[d,e]),p.useEffect(()=>{(l?.length??0)>0&&e.clearErrors("symbols")},[l,e]),p.useEffect(()=>{if(!u)return;const T=setTimeout(()=>c(null),1800);return()=>clearTimeout(T)},[u]);const x=T=>{if(T.preventDefault(),!e.getValues("timeframes")?.length){e.setError("timeframes",{type:"manual",message:s("Pattern.signalDialog.selectOneTimeframe")}),c(f);return}if(!e.getValues("symbols")?.length){e.setError("symbols",{type:"manual",message:s("Pattern.signalDialog.selectOneSymbol")}),c(m);return}e.clearErrors(["timeframes","symbols"]),c(null),i()};return h.jsxs("div",{className:"iccandle-pattern-alert-settings",children:[h.jsxs("div",{className:"iccandle-pattern-alert-settings__header-row",children:[h.jsx(qr,{size:20,className:"iccandle-pattern-alert-settings__header-icon"}),h.jsx("div",{className:"iccandle-pattern-alert-settings__header",children:h.jsxs("div",{className:"iccandle-pattern-alert-settings__title-row",children:[h.jsx("h2",{className:"iccandle-pattern-alert-settings__title",children:h.jsx("span",{className:"iccandle-pattern-alert-settings__title-text",children:s("Pattern.configurePatternTracker")})}),h.jsx("button",{type:"button",className:"iccandle-pattern-alert-settings__close-btn",onClick:n,"aria-label":s("Common.close"),children:h.jsx(zs,{size:16})})]})})]}),h.jsx(kx,{...e,children:h.jsx("form",{ref:o,onSubmit:x,className:"iccandle-pattern-alert-settings__form",id:"pattern-alert-settings-form",children:h.jsxs("div",{className:"iccandle-pattern-alert-settings__sections",children:[h.jsx("section",{className:"iccandle-pattern-alert-settings__section",children:h.jsx(Nx,{form:e})}),h.jsx("section",{className:"iccandle-pattern-alert-settings__section",children:h.jsx(Dx,{form:e})}),h.jsx("section",{className:"iccandle-pattern-alert-settings__section",children:h.jsx(Lx,{timeconfig:g,onTimeConfigChange:(T,A)=>{e.setValue("timeconfig",T,{shouldDirty:A?.shouldDirty??!0,shouldValidate:!1})},containerClassName:"iccandle-pattern-alert-settings__time-config"})})]})})}),h.jsxs("div",{className:"iccandle-pattern-alert-settings__footer",children:[b?h.jsx("p",{className:"iccandle-pattern-alert-settings__error iccandle-pattern-alert-settings__error--visible",children:b}):null,h.jsxs("div",{className:`iccandle-pattern-alert-settings__actions${b?" iccandle-pattern-alert-settings__actions--with-error":""}`,children:[h.jsx("button",{type:"button",className:"iccandle-pattern-alert-settings__btn iccandle-pattern-alert-settings__btn--outline",onClick:t,children:s("Common.back")}),h.jsx("button",{type:"submit",form:"pattern-alert-settings-form",className:"iccandle-pattern-alert-settings__btn iccandle-pattern-alert-settings__btn--primary",disabled:r,children:s(r?"Pattern.subscribing":"Pattern.subscribe")})]})]})]})};async function Gx(e){const{data:t}=await Me.post("https://api.iccandle.ai/custom-pattern/v1/searchless",e,{headers:{Authorization:`Bearer ${localStorage.getItem("iccandle_token")}`}});return t}const Lc=e=>{if(typeof e=="string")return e;if(typeof e!="object"||e===null)return to;for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)){const n=Lc(e[t]);if(n)return n}return to},Bx=e=>Rh(e)?Lc(e.response?.data):e.message,jx=({open:e,onOpenChange:t,resolution:n,type:i,symbol:r,candles:a,percent:o,theme:s="light",themeStyle:u})=>{const{t:c}=nt(),[d,l]=p.useState(""),[g,f]=p.useState(!1),[m,y]=p.useState(null),[b,x]=p.useState(!1),T=p.useRef(null),A=wl({defaultValues:{timeframes:[],symbols:[]}});p.useEffect(()=>{e&&(l(""),f(!1),y(null),x(!1),A.reset({timeframes:[],symbols:[]}))},[e,A]);const S=p.useCallback(()=>{d.trim().length<5||f(!0)},[d]);p.useEffect(()=>{if(!e)return;const w=P=>{if(P.key==="Escape"){t(!1);return}P.key==="Enter"&&!P.shiftKey&&(P.preventDefault(),g?T.current?.requestSubmit():S())};return document.addEventListener("keydown",w),()=>{document.removeEventListener("keydown",w)}},[e,g,S,t]);const v=async()=>{const{symbols:w,timeframes:P,timeconfig:M}=A.getValues();if(!w.length||!P.length){y(c("Pattern.signalDialog.selectOneTimeframeAndSymbol")),setTimeout(()=>{y(null)},1500);return}if(!a.length){y(c("Pattern.noPatternCandles")),setTimeout(()=>{y(null)},1500);return}if(!r.trim()){y(c("Pattern.chartSymbolRequired")),setTimeout(()=>{y(null)},1500);return}const G=M&&(M.start_time||M.end_time||M.timezone)?{start_time:M.start_time,end_time:M.end_time,timezone:M.timezone||Intl.DateTimeFormat().resolvedOptions().timeZone}:void 0,W={resolution:n,type:i,symbol:r,candles:a,custom_name:d.trim(),filter:{symbols:w,timeframes:P,timeconfig:G},percent:o};x(!0);try{await Gx(W),yn({title:c("Pattern.patternSubscribed"),description:c("Pattern.patternSubscribedDesc",{name:d}),variant:"success"}),t(!1)}catch(B){const _=Bx(B);y(_),yn({title:c("Pattern.patternSubscriptionError"),description:_,variant:"error"}),setTimeout(()=>{y(null)},3e3)}finally{x(!1)}},D=()=>{f(!1)};return e?h.jsx("div",{className:yt("iccandle-pattern-tracker-modal","iccandle-selector-widget",s==="dark"&&"iccandle-dark"),role:"dialog","aria-modal":"true","aria-label":c("Pattern.subscriptionModalAria"),onPointerDown:w=>{const P=w.target;P.closest(".iccandle-scanner-symbol-search__popover")||P.closest(".iccandle-scanner-timeframe-search__popover")||P.closest(".iccandle-time-config-section__dropdown--portal")||w.target===w.currentTarget&&t(!1)},children:h.jsx("div",{className:yt("iccandle-pattern-tracker-modal__content",g&&"iccandle-pattern-tracker-modal__content--settings"),style:{...u,height:g?"100%":void 0},onPointerDown:w=>w.stopPropagation(),children:g?h.jsx(Fx,{form:A,onBack:D,onCancel:()=>t(!1),onSubscribe:v,isSubscribing:b,errorMessage:m,formRef:T}):h.jsx(Tx,{patternName:d,onPatternNameChange:l,onNext:S,onCancel:()=>t(!1)})})}):null},$o=e=>typeof e=="boolean"?`${e}`:e===0?"0":e,es=Ks,Ux=(e,t)=>n=>{var i;if(t?.variants==null)return es(e,n?.class,n?.className);const{variants:r,defaultVariants:a}=t,o=Object.keys(r).map(c=>{const d=n?.[c],l=a?.[c];if(d===null)return null;const g=$o(d)||$o(l);return r[c][g]}),s=n&&Object.entries(n).reduce((c,d)=>{let[l,g]=d;return g===void 0||(c[l]=g),c},{}),u=t==null||(i=t.compoundVariants)===null||i===void 0?void 0:i.reduce((c,d)=>{let{class:l,className:g,...f}=d;return Object.entries(f).every(m=>{let[y,b]=m;return Array.isArray(b)?b.includes({...a,...s}[y]):{...a,...s}[y]===b})?[...c,l,g]:c},[]);return es(e,o,u,n?.class,n?.className)},zx=Ux("inline-flex items-center text-theme-color cursor-pointer justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-[#00dfb9]/10 border-[0.1px] border-[#00dfb9]/50",warning:"bg-amber-500/15 border-[0.1px] border-amber-500/60 text-amber-500 hover:bg-amber-500/25",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}});function ts({className:e,variant:t="default",size:n="default",asChild:i=!1,...r}){const a=i?ib:"button";return h.jsx(a,{"data-slot":"button","data-variant":t,"data-size":n,className:yt(zx({variant:t,size:n,className:e})),...r})}function Hx(e,t){try{return new Intl.DateTimeFormat(t,{year:"numeric",month:"long",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(e))}catch{return new Date(e).toLocaleString()}}function Yx({event:e,symbol:t,onClose:n,onGoToEventDetail:i,position:r}){const{t:a,language:o}=nt(),s=p.useId(),u=p.useId(),c=p.useRef(null),d=p.useRef(null);p.useEffect(()=>(d.current=document.activeElement,c.current?.focus(),()=>{d.current?.focus?.()}),[]);const l=()=>{const g=e.default_symbol||t;localStorage.setItem("currentSymbolNews",g),i?.(e),n()};return h.jsx("div",{className:"iccandle-event-info-modal",onClick:n,role:"presentation",children:h.jsxs("div",{className:"iccandle-event-info-modal__dialog",role:"dialog","aria-modal":"true","aria-labelledby":s,"aria-describedby":u,style:r?{left:`${r.x}px`,top:`${r.y}px`,transform:"translate(-50%, -100%)"}:{bottom:"100px",left:"50%",transform:"translateX(-50%)"},onClick:g=>g.stopPropagation(),onKeyDown:g=>{g.key==="Escape"&&n()},children:[h.jsxs("div",{className:"iccandle-event-info-modal__header",children:[h.jsxs("div",{className:"iccandle-event-info-modal__title-row",children:[h.jsx(Nr,{name:e.default_symbol||t||""}),h.jsx("h3",{id:s,className:"iccandle-event-info-modal__title",children:e.event_name})]}),h.jsx("button",{type:"button",onClick:n,className:"iccandle-event-info-modal__close","aria-label":a("Common.close"),ref:c,children:h.jsx(Ai,{size:20})})]}),h.jsxs("div",{id:u,children:[e.timestamp?h.jsx("p",{className:"iccandle-event-info-modal__date",children:Hx(e.timestamp,o)}):null,h.jsxs("div",{className:"iccandle-event-info-modal__rows",children:[h.jsxs("div",{className:"iccandle-event-info-modal__row",children:[h.jsxs("span",{className:"iccandle-event-info-modal__label",children:[a("Common.actual"),":"]}),h.jsx("span",{className:"iccandle-event-info-modal__value",children:e.actual||"-"})]}),h.jsxs("div",{className:"iccandle-event-info-modal__row",children:[h.jsxs("span",{className:"iccandle-event-info-modal__label",children:[a("News.previousActual"),":"]}),h.jsx("span",{className:"iccandle-event-info-modal__value",children:e.previous||"-"})]}),h.jsxs("div",{className:"iccandle-event-info-modal__row",children:[h.jsxs("span",{className:"iccandle-event-info-modal__label",children:[a("News.currentForecast"),":"]}),h.jsx("span",{className:"iccandle-event-info-modal__value",children:e.forecast||"-"})]}),h.jsxs("div",{className:"iccandle-event-info-modal__row",children:[h.jsxs("span",{className:"iccandle-event-info-modal__label",children:[a("News.previousForecast"),":"]}),h.jsx("span",{className:"iccandle-event-info-modal__value",children:"-"})]})]})]}),h.jsxs("div",{className:"iccandle-event-info-modal__actions",children:[h.jsx(ts,{variant:"outline",onClick:n,className:"iccandle-event-info-modal__btn",children:a("Common.close")}),h.jsx(ts,{onClick:l,className:"iccandle-event-info-modal__btn",children:a("News.goToEventDetail")})]})]})})}function qx({language:e,children:t}){const n=p.useMemo(()=>{const i=Bs(e);return Fg(i),{language:i,t:(r,a)=>Yr(i,r,a)}},[e]);return h.jsx(Us.Provider,{value:n,children:t})}function Wx(e){try{const t=JSON.parse(localStorage.getItem(Bn)||"null");if(t&&String(t.id)===String(e))return t}catch{}try{return JSON.parse(localStorage.getItem(pi)||"[]").find(n=>String(n.id)===String(e))??null}catch{return null}}function _x(e){return!(!e?.event_name||!e.currency||e.event_name==="Holiday"||e.status==="early")}const Vx=({chartWidget:e,children:t,theme:n,language:i,submitCallback:r,onCloseResult:a,iframeLoaded:o,resultIframeRef:s,isShowScanButton:u=!0,isShowTrackerButton:c=!0,isShowScannerPopup:d=!0,availableIntervals:l})=>{const g=p.useMemo(()=>Bs(i),[i]),f=p.useMemo(()=>({highlightBarsRef:{current:[]},generatedCandlesBackgroundStudyIdRef:{current:null},generatedCandlesStudyIdRef:{current:null}}),[]),m=typeof t=="function"?t(f):t,y=p.useRef(null),b=p.useRef(null),x=p.useRef(!1),T=p.useRef(null),A=p.useRef([]),S=p.useRef(null),v=je(ae=>ae.setTargetCandles),[D,w]=p.useState(!1),[P,M]=p.useState(!1),[G,W]=p.useState(null),[B,_]=p.useState(null),[V,K]=p.useState(null),z=p.useCallback(()=>S.current&&getComputedStyle(S.current).getPropertyValue("--iccandle-primary").trim()||void 0,[]),J=p.useRef(z);p.useEffect(()=>{J.current=z},[z]);const X=p.useMemo(()=>n==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":n,[n]),[re,C]=p.useState(!1),[k,Y]=p.useState(!1),[L,R]=p.useState(!1),[j,E]=p.useState(ir),[I,q]=p.useState([]),[$,ie]=p.useState(null),[de,Z]=p.useState(!1),[be,Ce]=p.useState("60"),[dt,Pt]=p.useState(Wg.interval),[He,Mt]=p.useState(""),_e=p.useCallback(()=>{try{const ae=e?.activeChart?.();if(ae){if(y.current){try{ae.removeEntity(y.current)}catch{}y.current=null}ae.getAllShapes().filter(ge=>ge.name==="date_range").forEach(ge=>{try{ae.removeEntity(ge.id)}catch{}})}}catch{}R(!1),q([]),v([])},[e,v]),cn=p.useCallback(ae=>{let ge=ae;try{ge=new URL(ae,`${rn}/`).pathname}catch{}ge.includes("/news")&&_e(),V?.length&&(je.getState().setPlayEndTimestamp(null),je.getState().setGapCount(0),K(null),At(!1),Ti(e))},[e,V,_e]),N=p.useCallback(()=>Y(!0),[]),O=p.useCallback(()=>Y(!1),[]),H=p.useCallback(()=>{je.getState().setPlayEndTimestamp(null),je.getState().setGapCount(0);const ae=!!V?.length;K(null),At(!1),ae&&Ti(e),T.current?.()},[e,V]),te=p.useCallback(()=>ie("settings"),[]),ee=p.useCallback(()=>ie(null),[]),Q=p.useCallback(()=>Z(!1),[]),le=p.useCallback(()=>Z(!0),[]),ye=p.useCallback(()=>{const ae={theme:X==="dark"?"dark":"light",language:g};Px(s?.current,ae)||Sx(ae)||r(`${rn}/${g}?pricing=true&theme=${X==="dark"?"dark":"light"}`)},[g,X,s,r]),fe=p.useCallback(()=>{M(!1),W(null),_(null)},[]),De=p.useCallback(ae=>{const ge=ae.default_symbol||He,ct=X==="dark"?"dark":"light";_e(),K(null),je.getState().setPlayEndTimestamp(null);const he={id:ae.id,event_name:ae.event_name,timestamp:ae.timestamp,actual:ae.actual||"",forecast:ae.forecast||"",previous:ae.previous||"",currency:ae.currency||"",metric:"",default_symbol:ae.default_symbol,status:ae.status};try{localStorage.setItem(Bn,JSON.stringify(he))}catch{}try{e?.activeChart?.()?.refreshMarks()}catch{}(async()=>(await Mc(e,ae.timestamp,{lastEntity:y,applyingPatternRef:x,setHasActiveShape:R,setCandles:q,setWindowSize:E,setSymbol:Mt,setResolution:Pt,setTimeframe:Ce,setTargetCandles:v,clearSelectedCandles:()=>K(null)}),await Ec(e,ae.timestamp,b)))(),r(`${rn}/${g}/news/similar-events/${ae.id}?symbol=${encodeURIComponent(ge)}&theme=${ct}`)},[e,_e,g,X,v,r,He]),it=p.useCallback(ae=>{if(!ae||!e)return;let ge;try{ge=e.activeChart()}catch(Ye){console.log("Error getting active chart",Ye);return}if(!ge)return;const ct=ge.getTimeScale(),he=ge.getVisibleRange();if(!he?.from||!he?.to)return;const Ut=S.current?.firstElementChild||S.current;if(!Ut)return;const Zt=Ut.getBoundingClientRect(),ce=ct.width(),Oe=Ye=>{let Ne=0,ve=ce,Ve=ce/2;const qe=.1;for(let Wi=0;Wi<30;Wi++){const ht=(Ne+ve)/2,Jn=ct.coordinateToTime(ht);if(Jn===null){const Fc=(Ye-he.from)/(he.to-he.from);Ve=Math.max(0,Math.min(ce,Fc*ce));break}const Te=Jn-Ye;if(Math.abs(Te)<qe){Ve=ht;break}Te>0?ve=ht:Ne=ht,Ve=ht}const rt=Zt.left+Ve+53,Ee=Zt.bottom-103;return{x:rt,y:Ee}},pe=Wx(ae);if(!_x(pe))return;const Ae=pe.timestamp?pe.timestamp/1e3:null,ze=he.to-he.from,Se=Ae??he.from+ze*.5,Pe=Oe(Se);Pe&&_(Pe),W(pe),M(!0)},[e]),Ue=p.useCallback(()=>{C(!0)},[]),jt=p.useCallback(()=>{x.current||(y.current=null,R(!1))},[]),Ot=p.useCallback(ae=>{Ce(ae==="1"||ae==="5"?"60":ae),Pt(ae),jt()},[jt]),St=p.useCallback(ae=>{Mt(ae.library_custom_fields?.ticker||ae.ticker||ae.name||ae.base_name+""||""),jt()},[jt]);p.useEffect(()=>{let ae,ge,ct;return e&&e.onChartReady(()=>{const he=e.activeChart();if(he){const Ut=he.resolution(),Zt=Qe?.find(pe=>pe.display_name===he.symbol());Ce(Ut),Pt(Ut),Mt(Zt?.ticker||he.symbol());const ce=async(pe,Ae)=>{if(he?.getAllShapes()?.filter(Pe=>Pe.name==="date_range")?.forEach(Pe=>{he?.removeEntity(Pe.id)}),Ae){const{data:Pe}=await he.exportData();let Ye=Pe.findIndex(Ee=>Ee[0]===Ae);Ye===-1&&(Ye=Pe.length-1);const Ne=Pe.findIndex(Ee=>Ee[0]===pe),ve=Math.floor((Ne+Ye)/2),Ve=Math.floor(ir/2),qe=Pe.slice(ve-(Ve+1),ve+Ve),rt=Pe.slice(ve+Ve-49,ve+Ve);if(E(qe.length),q(qe.map(Ee=>({o:Ee[1],h:Ee[2],l:Ee[3],c:Ee[4],timestamp:Ee[0]}))),v(rt.map(Ee=>({o:Ee[1],h:Ee[2],l:Ee[3],c:Ee[4],timestamp:Ee[0]}))),R(!0),y.current=await he.createMultipointShape([{time:qe[0][0]},{time:qe[qe.length-1][0]}],gr(J.current())),y.current){const Ee=he.getShapeById(y.current);Ee&&Ee.setSavingEnabled&&(Ee.setProperties({customText:{visible:!0,text:oo}}),Ee.setSavingEnabled(!1))}}};ae=Fy(async(pe,Ae)=>{if(!x.current&&(Ae==="remove"&&(y.current===pe&&(y.current=null),R(!1)),Ae==="points_changed"&&he.getAllShapes().filter(ze=>ze.name==="date_range").some(ze=>ze.id===pe)&&e)){const ze=he.getShapeById(pe);if(!ze)return;const Se=ze.getPoints(),Pe=Se[0].time,Ye=Se[1].time,{data:Ne}=await he.exportData();let ve=Ne.findIndex(Te=>Te[0]===Ye),Ve=Ne.findIndex(Te=>Te[0]===Pe);ve===-1&&(ve=Ne.length-2,Ve=Ne.length-1-ir);let rt=Ne.slice(Ve,ve+1).length-1;rt>$t.max?(rt=Math.round(rt/10)*10-1,rt>$t.custom[$t.custom.length-1]&&(rt=$t.custom[$t.custom.length-1]-1)):rt<=$t.min&&(rt=$t.min-1),y.current&&he.removeEntity(y.current),he.getAllShapes().filter(Te=>Te.name==="date_range").forEach(Te=>{he.removeEntity(Te.id)});const ht=Ne.slice(ve-rt,ve+1),Jn=Ne.slice(ve-49,ve+1);if(y.current=await he.createMultipointShape([{time:ht[0][0]},{time:ht[ht.length-1][0]}],gr(J.current())),E(ht.length),q(ht.map(Te=>({o:Te[1],h:Te[2],l:Te[3],c:Te[4],timestamp:Te[0]}))),v(Jn.map(Te=>({o:Te[1],h:Te[2],l:Te[3],c:Te[4],timestamp:Te[0]}))),R(!0),y.current){const Te=he.getShapeById(y.current);Te&&Te.setSavingEnabled&&(Te.setProperties({customText:{visible:!0,text:oo}}),Te.setSavingEnabled(!1))}}},500),T.current=()=>{R(!0);const pe=he.getVisibleRange();pe?.from&&pe?.to&&ce(pe.from,pe.to)};const Oe=pe=>{if(!y.current||!pe)return!1;try{const Ae=he?.getShapeById(y.current);if(!Ae)return!1;const ze=Ae.getPoints();if(ze.length===0)return!1;const Se=ze.map(ve=>ve.time).filter(ve=>typeof ve=="number");if(Se.length===0)return!1;const Pe=Math.min(...Se);return Math.max(...Se)<pe.from||Pe>pe.to}catch{return!1}};ct=pe=>{ge&&clearTimeout(ge),ge=setTimeout(()=>{Oe(pe)?R(!1):y.current&&R(!0)},150)},he.onIntervalChanged().subscribe(null,Ot),he.onSymbolChanged().subscribe(null,St),he.onVisibleRangeChanged().subscribe(null,ct),e.subscribe?.("drawing_event",ae)}}),()=>{y.current=null,T.current=null;try{if(ge&&clearTimeout(ge),e){const he=e.activeChart();he&&(ct&&he.onVisibleRangeChanged().unsubscribe(null,ct),he.onIntervalChanged().unsubscribe(null,Ot),he.onSymbolChanged().unsubscribe(null,St)),ae&&e.unsubscribe("drawing_event",ae)}}catch{}}},[e,Ot,St,v]),p.useEffect(()=>{if(!e)return;const ae=it;return e.onChartReady(()=>{e.subscribe("onTimescaleMarkClick",ae)}),()=>{try{e.unsubscribe("onTimescaleMarkClick",ae)}catch{}}},[e,it]),Vw(e,A);const un=p.useMemo(()=>({lastEntity:y,applyingPatternRef:x,setHasActiveShape:R,setCandles:q,setWindowSize:E,setSymbol:Mt,setResolution:Pt,setTimeframe:Ce,setTargetCandles:v,clearSelectedCandles:()=>K(null)}),[v]);vx(e,K,I[I.length-1]?.timestamp??null,w,a,un,cn,l),p.useEffect(()=>{if(!e)return;let ae=!1;return e.onChartReady(async()=>{if(!ae)try{await Rc(e.activeChart(),f,e.getTheme())}catch(ge){console.error("Failed to create generated candle studies:",ge)}}),()=>{ae=!0}},[e,f]),dx(e,f,dt,He,V);const dn=p.useCallback(()=>{try{localStorage.removeItem(pi),localStorage.removeItem(Bn)}catch{}const ae=e?.activeChart?.();if(ae){A.current&&A.current.length>0&&(A.current.forEach(ge=>{try{ae.removeEntity(ge)}catch{}}),A.current=[]);try{ae.clearMarks(2)}catch{}}},[e]);return h.jsx(qx,{language:g,children:h.jsxs("div",{ref:S,lang:g,className:`iccandle-selector-widget ${X==="dark"?"iccandle-dark":""}`,children:[m,h.jsx(Yg,{hide:!d,hideScanButton:!u,hideTrackerButton:!c,submitCallback:r,handleShowDialog:te,onOpenScanConfig:()=>ie("scan"),onApplySavedTimeframe:Ce,pendingScanAfterConfig:de,onPendingScanHandled:Q,triggerScanner:H,window_size:j,currentSymbol:He,resolution:dt,timeframe:be,chartWidget:e,candles:I,handleStartDrag:N,handleStopDrag:O,hasActiveShape:L,theme:X,language:g,clearScannerNewsMarks:dn,selectedCandles:V,iframeLoaded:o,isLoading:D,handleTrackPatternClick:Ue}),re&&h.jsx(jx,{open:re,onOpenChange:C,resolution:dt,type:Qe.find(ae=>ae.ticker===He)?.type??"forex",symbol:He,candles:I,percent:90,theme:X}),$&&h.jsx(_w,{intent:$,setResolution:Ce,timeframe:be,handleCloseDialog:ee,onScanConfigSaved:le,onUpgradeClick:ye,currentSymbol:He}),P&&G&&h.jsx(Yx,{event:G,symbol:He||localStorage.getItem("tv:latest-symbol")||"XAU_USD",onClose:fe,onGoToEventDetail:De,position:B}),k&&h.jsx("div",{className:"iccandle-selector-widget__overlay"}),h.jsx(pu,{theme:X,position:"top-right",className:"iccandle-toaster",richColors:!1})]})})},Kx=e=>{const t=e?.contentWindow;if(!t||!e?.src)return;const n=new URL(e.src).origin,i=()=>t.postMessage(JSON.stringify({type:"parent-origin",origin:window.location.origin}),n);if([0,300,1e3,2500].forEach(a=>window.setTimeout(i,a)),new URLSearchParams(window.location.search).get("payment")==="success"){const a=()=>t.postMessage(JSON.stringify({type:"payment-success"}),n);[0,600,1500].forEach(s=>window.setTimeout(a,s));const o=new URL(window.location.href);["payment","session_id","lookup_key"].forEach(s=>o.searchParams.delete(s)),window.history.replaceState({},"",o)}};exports.WIDGET_RESULT_URL=rn;exports.WidgetIccandle=Vx;exports.getCustomIndicators=lx;exports.handleResultIframeLoad=Kx;exports.withPlayChart=rx;