diff --git a/charting_library/ar-tv-locale.1c4a7b40.js b/charting_library/ar-tv-locale.c58662ff.js similarity index 100% rename from charting_library/ar-tv-locale.1c4a7b40.js rename to charting_library/ar-tv-locale.c58662ff.js diff --git a/charting_library/bundles/library.7336148543ee0b93bdab.js b/charting_library/bundles/library.c79733e53f6643f7b2e1.js similarity index 53% rename from charting_library/bundles/library.7336148543ee0b93bdab.js rename to charting_library/bundles/library.c79733e53f6643f7b2e1.js index 1765148f..a9ce35b4 100644 --- a/charting_library/bundles/library.7336148543ee0b93bdab.js +++ b/charting_library/bundles/library.c79733e53f6643f7b2e1.js @@ -336,449 +336,449 @@ this._deleteChart=e=>{this._isActiveChart(e)&&(s.enabled("saveload_storage_custo this._chartWidgetCollection.metaInfo.name.setValue(n),null==r||r()})}}class m extends _{cloneChart(){this._cloneChart().then(()=>this._visibility.setValue(!0))}show(){(0,l.checkAuthBeforeSaveLoad)(()=>this.cloneChart(),{source:"Clone chart"})}_renameDialogTitle(){return(0,c.t)("Copy Chart Layout")}_renameDialogText(){return(0,c.t)("Enter a new chart layout name")+":"}_renameActionHandler({newValue:e,dialogClose:t}){s.enabled("saveload_storage_customization")&&this._doCloneCurrentLayout(e),t()}async _cloneChart(){const e=await d();e&&(this._hide=await this._showRenameDialog(this._getInitialRenameDialogInput()))}_doCloneCurrentLayout(e){const t=this._chartWidgetCollection.metaInfo.name.value();this._chartWidgetCollection.metaInfo.uid.deleteValue(),this._chartWidgetCollection.metaInfo.id.deleteValue(),this._chartWidgetCollection.metaInfo.name.setValue(e),this._doSave(void 0,void 0,()=>{this._chartWidgetCollection.metaInfo.name.setValue(t)})}_getInitialRenameDialogInput(){return(0,c.t)("{title} copy",{context:"ex: AAPL chart copy"}).format({title:this._chartWidgetCollection.metaInfo.name.value()})}}class g extends _{show(e,t,i){this._saveNewChart(e,t,i).then(()=>this._visibility.setValue(!0))}_renameDialogTitle(){return(0,c.t)("Save New Chart Layout")}_renameDialogText(){return(0,c.t)("Enter a new chart layout name")+":"}_renameActionHandler({newValue:e,dialogClose:t},i,s,r){this._doSaveCurrentLayout(e,i,s,r),t()}async _saveNewChart(e,t,i){await d();const s=this._chartWidgetCollection.metaInfo.name.value();this._hide=await this._showRenameDialog(s,e,t,i)}}class f extends _{show(){(0,l.checkAuthBeforeSaveLoad)(()=>this._show(),{source:"Rename chart"})}_renameDialogTitle(){return(0,c.t)("Rename Chart Layout")}_renameDialogText(){return(0,c.t)("Enter a new chart layout name")+":"}_renameActionHandler({newValue:e,dialogClose:t}){this._doSaveCurrentLayout(e),t()}async _show(){await this._renameChart(),this._visibility.setValue(!0)}async _renameChart(){const e=this._chartWidgetCollection.metaInfo.name.value();this._hide=await this._showRenameDialog(e)}}class v{constructor(e,t){this._autosaveTimer=null,this._watchedAutoSaveEnabled=new(n()),this._toggleAutoSaveEnabledHandler=this._toggleAutoSaveEnabled.bind(this),this._doSave=(e,t,i,s)=>{const r=this._chartWidgetCollection;void 0!==e&&e(),this._chartSaver.saveChartSilently(e=>{var i;i=r.metaInfo.uid.value(),"/chart/"===location.pathname&&(location.href="/chart/"+i),void 0!==t&&t(e)},()=>{void 0!==i&&i()},{autoSave:Boolean(s)})},this._doLoad=()=>h.backend.getCharts(),this._chartWidgetCollection=e,this._chartSaver=t,this._createController=new g(e,this._doSave,this._doLoad),this._renameController=new f(e,this._doSave,this._doLoad),this._saveAsController=new m(e,this._doSave,this._doLoad),this._chartChangesWatcher=new a.ChartChangesWatcher(e.undoHistory,e.lineToolsSynchronizerHasChanges,t,o),e.saveKeysPressed().subscribe(this,this.saveChartOrShowTitleDialog),this._chartChangesWatcher.getOnChange().subscribe(this,this._onStateChanged)}autoSaveEnabled(){ return this._watchedAutoSaveEnabled}destroy(){0}getCreateController(){return this._createController}getRenameController(){return this._renameController}getSaveAsController(){return this._saveAsController}cloneChart(){this._saveAsController.cloneChart()}saveChartAs(){this._saveAsController.show()}renameChart(){this._renameController.show()}saveNewChart(e,t,i){this._createController.show(e,t,i)}saveExistentChart(e,t,i){this._doSave(e,t,i)}hasChanges(){return this._chartChangesWatcher.hasChanges()}saveChartOrShowTitleDialog(e,t,i){const s=window.saver.isSaveInProcess(),r=this._chartChangesWatcher.hasChanges(),n=!!this._chartWidgetCollection.metaInfo.id.value();window.is_authenticated&&(s||!r&&n)||(0,l.checkAuthBeforeSaveLoad)(()=>{null!=this._chartWidgetCollection.metaInfo.id.value()?this.saveExistentChart(e,t,i):this.saveNewChart(e,t,i)},{source:"Save chart",sourceMeta:"Chart"})}whenReadyToSave(e){this._chartSaver.whenReadyToSave(e)}saveToJSON(){return this._chartSaver.saveToJSON()}saveChartSilently(e,t,i){this._chartSaver.saveChartSilently(e,t,i)}setAutoSaveEnabled(e){window.is_authenticated&&window.saver.isSaveInProcess()||(0,l.checkAuthBeforeSaveLoad)(()=>{this._watchedAutoSaveEnabled.setValue(e)},{source:"AutoSave chart"})}saveChartLineTools(e,t,i){return this._chartSaver.saveChartLineTools(e,t,i)}_autoSaveEnabledSettingHandler(e){0}_toggleAutoSaveEnabled(e){0}_enableAutoSave(){0}_disableAutoSave(){0}_onStateChanged(e){e?this._startAutosave():this._stopAutosave()}_startAutosave(){s.enabled("charts_auto_save")&&null===this._autosaveTimer&&(this._autosaveTimer=setTimeout(()=>{this._autosaveTimer=null,this._chartWidgetCollection.metaInfo.id.value()&&this._doSave(void 0,void 0,void 0,!0)},6e4))}_stopAutosave(){null!==this._autosaveTimer&&(clearInterval(this._autosaveTimer),this._autosaveTimer=null)}}},13647:(e,t,i)=>{"use strict";i.d(t,{showMarketOpenStatusProperty:()=>o,restoreShowMarketOpenStatusProperty:()=>a});var s=i(32255),r=i(56840);function n(){return r.getBool("Chart.ShowMarketOpenStatus",!0)}const o=(0,s.createPrimitiveProperty)(n());function a(){o.setValue(!0),r.remove("Chart.ShowMarketOpenStatus")}r.onSync.subscribe(null,()=>o.setValue(n())),o.subscribe(null,()=>r.setValue("Chart.ShowMarketOpenStatus",o.value()))},46723:(e,t,i)=>{"use strict";i.d(t,{StudyTemplates:()=>p});var s=i(28353),r=i(43007),n=i(51768),o=i(2872),a=i.n(o),l=i(52714),c=i.n(l),h=i(3615);const d=(0,i(98125).getLogger)("Platform.StudyTemplates"),u=(0,s.t)("Do you really want to delete Study Template '{name}' ?");class p{constructor(e){this._chartWidgetCollection=e.chartWidgetCollection,this._favoriteStudyTemplatesService=e.favoriteStudyTemplatesService,window.loginStateChange.subscribe(null,r.backend.invalidateStudyTemplatesList),this._list=new(c())([]),this._onChange=new(a()),this._list.subscribe(()=>this._onChange.fire())}findRecordByName(e){return this._list.value().find(t=>t.name===e)||null}showSaveAsDialog(){const e=this._chartWidgetCollection.activeChartWidget.value().model() ;Promise.all([i.e(5514),i.e(9129),i.e(4194),i.e(7962),i.e(8986),i.e(7836),i.e(8463),i.e(9289),i.e(7427),i.e(7345),i.e(5998),i.e(7552),i.e(5804),i.e(3016),i.e(6631)]).then(i.bind(i,33165)).then(t=>{new t.StudyTemplateSaver({controller:e,onSave:e=>{this._list.setValue(e)}}).show()})}applyTemplate(e){const t=this.findRecordByName(e);null!==t?window.runOrSignIn(()=>{const e=this._chartWidgetCollection.activeChartWidget.value(),i=i=>{(0,n.trackEvent)("GUI","Load Study Template"),e.model().applyStudyTemplate(JSON.parse(i.content),t.name)};void 0!==t.id?t.is_default?r.backend.getStandardStudyTemplateContentById(t.id,i):r.backend.getStudyTemplateContentById(t.id,i):r.backend.getStudyTemplateContent(t.name).then(i)},{source:"Study templates apply"}):d.logNormal(`Template ${e} not found in cache`)}deleteStudyTemplate(e){const t=this.findRecordByName(e);null!==t?this._removeTemplate(t):d.logNormal(`Template ${e} not found in cache`)}list(){return this._list.value()}getOnChange(){return this._onChange}refreshStudyTemplateList(e){r.backend.getStudyTemplatesList().then(t=>{this._list.setValue(t),void 0!==e&&e()})}invalidate(){r.backend.invalidateStudyTemplatesList()}_removeTemplate(e){window.runOrSignIn(()=>{(0,h.showConfirm)({text:u.format({name:e.name}),onConfirm:({dialogClose:t})=>new Promise(i=>{const s=()=>{this.refreshStudyTemplateList(()=>{const s=this.list();this._list.setValue(s.filter(t=>t!==e)),this._favoriteStudyTemplatesService&&this._favoriteStudyTemplatesService.remove(e.name),i(),t()})};r.backend.invalidateStudyTemplatesList(),void 0!==e.id?r.backend.removeStudyTemplateById(e.id,s):r.backend.removeStudyTemplate(e.name).then(s)})})},{source:"Study templates delete"})}}},38318:(e,t,i)=>{"use strict";i.d(t,{canShowSpreadActions:()=>c,globalKeypressMatches:()=>h,intervalIsSupported:()=>l,parseIntervalValue:()=>a});var s=i(67337),r=i(9315),n=i(82992),o=i(29823);new RegExp("^quandl","i");function a(e){let t;t=/^[,\s]*(^[1-9][0-9]*)?\s*([hdwmst]?)\s*$/i;const i=t.exec(e)||[],s=~~i[1],r=i[2]&&i[2].toUpperCase()||null,n={qty:!s&&r?1:s,unit:r};return n.error=!s&&!r,n.intraday=!(n.error||n.unit&&"H"!==n.unit&&"S"!==n.unit&&"T"!==n.unit),n}function l(e){if(s.enabled("allow_supported_resolutions_set_only")){const t=o.Interval.normalize(e);return null!==t&&(0,r.isAvailable)(t)}{const t=a(e);if(t.error)return!1;if(t.intraday)return n.linking.intraday.value();{const e=n.linking.supportedResolutions.value();return!e||null!==t.unit&&!!~e.indexOf(t.unit)}}}function c(){let e=!1;return s.enabled("show_spread_operators")&&(e=!0),e}function h(e){return!e.ctrlKey&&(!e.metaKey&&(!!e.charCode&&(!(!e.which||e.which<=32)&&(null===e.target||!/^(input|textarea)$/i.test(e.target.tagName)))))}},11181:(e,t,i)=>{"use strict";function s(){return Promise.all([i.e(9685),i.e(5514),i.e(9129),i.e(4194),i.e(7962),i.e(8986),i.e(7836),i.e(3921),i.e(5774),i.e(2153),i.e(9837),i.e(3199),i.e(3016),i.e(2301),i.e(1754)]).then(i.bind(i,89324))}i.d(t,{loadNewSymbolSearch:()=>s})},92033:(e,t,i)=>{"use strict";i.d(t,{tradingService:()=>n});var s=i(16216);const r={ -id:"TradingService"};function n(){return(0,s.hasService)(r)?(0,s.service)(r):null}},1314:(e,t,i)=>{"use strict";i.d(t,{TradingViewApiBase:()=>_});i(88537);var s=i(82992),r=i(67337),n=i(51768),o=i(6087),a=i(45345),l=i(2872),c=i.n(l);class h{constructor(e){this._toolbarThemeChanged=new(c()),this._onWatchedThemeChanged=e=>{this._toolbarThemeChanged.fire(e)},this._opts=e,a.watchedTheme.subscribe(this._onWatchedThemeChanged)}destroy(){a.watchedTheme.unsubscribe(this._onWatchedThemeChanged)}isStdTheme(){const e=this._opts.chartWidgetCollection.getAll().every(e=>(0,o.isStdTheme)((0,o.extractThemeFromModel)(e.model())));return Promise.resolve(e)}async setStdTheme(e,t=!0,i){await(0,o.loadTheme)(this._opts.chartWidgetCollection,{themeName:e,standardTheme:!0,syncState:t,noUndo:i})}setStdThemeForLayout(e,t=!0){(0,a.setTheme)(e),t&&(0,o.syncTheme)()}getCurrentThemeName(){return(0,o.getCurrentTheme)().name}toolbarThemeChanged(){return this._toolbarThemeChanged}}var d=i(16906),u=i(85733);function p(){throw new Error("not implemented")}class _{constructor(e){this._studyTemplatesDrawer=null,this._fontIconsSettingsDrawer=null,this._favoriteDrawingsToolbar=null,this._themesApi=null,this._newsApiDeferredPromise=null,this._newsApiRejectionReason=null,this._watchlistApiDeferredPromise=null,this._watchlistApiRejectionReason=null,this._widgetbarApiDeferredPromise=null,this._widgetbarApiRejectionReason=null,this._isDestroyed=!1,this._widgebarApi=null;const{chartApiInstance:t,chartWidgetCollection:i,studyMarket:r,financialsDialog:n,saveChartService:o,loadChartService:a,sharingChartService:l=null}=e;this._chartWidgetCollection=i,this._studyMarket=r,this._financialsDialog=n,this._saveChartService=o,this._sharingChartService=l,this._loadChartLayoutDialog=a,this._intervalsService=null,this._alertsWidgetDialog=null,this._detailsDialogController=null,this._supportedChartStylesSpawn=s.linking.supportedChartStyles.spawn(),this._chartWidgetCollection.onAboutToBeDestroyed.subscribe(null,()=>this.destroy(),!0)}destroy(){var e,t,i;this._supportedChartStylesSpawn.destroy(),null===(e=this._intervalsService)||void 0===e||e.destroy(),null===(t=this._themesApi)||void 0===t||t.destroy(),null===(i=this._widgebarApi)||void 0===i||i.destroy(),this._widgetbarApiRejectionReason="This ITradingViewApi instance has been destroyed",this._isDestroyed=!0}themes(){return null===this._themesApi&&(this._themesApi=new h({chartWidgetCollection:this._chartWidgetCollection})),this._themesApi}dialogs(){var e,t,i,s,r,n;return{Indicators:this._studyMarket,Financials:this._financialsDialog,Compare:this._chartWidgetCollection.getCompareDialogRenderer(),ObjectsTree:null,ChartProperties:this._chartWidgetCollection.getChartPropertiesDialogRenderer(),ChartLayoutSaveAs:null!==(t=null===(e=this._saveChartService)||void 0===e?void 0:e.getSaveAsController())&&void 0!==t?t:null,ChartLayoutRename:null!==(s=null===(i=this._saveChartService)||void 0===i?void 0:i.getRenameController())&&void 0!==s?s:null, -ChartLayoutCreate:null!==(n=null===(r=this._saveChartService)||void 0===r?void 0:r.getCreateController())&&void 0!==n?n:null,ChartLayoutLoad:this._loadChartLayoutDialog,Alerts:this._alertsWidgetDialog,Details:this._detailsDialogController,FinancialsCharts:null}}studyTemplatesDrawerApi(){p()}fontIconsSettingsDrawer(){p()}intervalsService(){p()}supportedChartTypes(){return this._supportedChartStylesSpawn}setBrokerName(e){this._chartWidgetCollection.setBroker(e)}drawOnAllChartsMode(e){(0,u.drawOnAllChartsMode)().setValue(e)}disableTrackingEvents(){(0,n.disableTrackingEvents)()}setSymbolSearchUI(e){p()}setLayout(e,t){(null==t?void 0:t.withUndo)?this._chartWidgetCollection.setChartLayoutWithUndo(e):this._chartWidgetCollection.setLayout(e)}selectLineTool(e,t){if(!d.supportedLineTools[e])return;const i=d.supportedLineTools[e].name;if("icon"===e){const e=null==t?void 0:t.icon;void 0!==e&&u.iconTool.setValue(e)}u.tool.setValue(i)}favoriteDrawingsToolbar(){return i.e(5551).then(i.bind(i,88823)).then(e=>(this._favoriteDrawingsToolbar||(this._favoriteDrawingsToolbar=new e.FavoriteDrawingsApi),this._favoriteDrawingsToolbar))}sharingChart(){return this._sharingChartService}watchlist(){p()}setWatchlistApiPromise(e){p()}news(){p()}setNewsApiPromise(e){p()}widgetbar(){p()}setWidgetbarApiPromise(e){p()}setDebugMode(e){r.setEnabled("charting_library_debug_mode",e)}}},28399:(e,t,i)=>{"use strict";var s=i(2872),r=i(52714),n=i(82992).linking,o=(i(81836).createDeferredPromise,i(21269)),a=i(42060).layouts,l=i(76422),c=i(97056).ContextMenuManager,h=i(85733),d=i(9315),u=i(43007).backend,p=i(98125),_=i(3615).showWarning,m=i(3615).showConfirm,g=i(16906),f=i(52092).CLOSE_POPUPS_AND_DIALOGS_COMMAND,v=i(29823).Interval,S=i(88564).saveDefaultProperties,y=i(68425).ChartChangesWatcher,b=i(1314).TradingViewApiBase,w=i(67072),C=i(152).getStudyInputsInfo,P=i(70120).getStudyStylesInfo;e.exports=class extends b{constructor(e){const{chartWidgetCollection:t,saveChartService:i,loadChartService:r,sharingChartService:o,alertsDispatcher:a,supportTicketData:l,favoriteServices:c,chartApiInstance:h=null,studyMarket:d=null,financialsDialog:u=null}=e;super({chartApiInstance:h,chartWidgetCollection:t,studyMarket:d,financialsDialog:u,saveChartService:i,loadChartService:r,sharingChartService:o}),this._chartApiInstance=h,this._loadChartService=r,this._alertsDispatcher=a,this._supportTicketData=l,this._favoriteServices=c,this._proxyWatchListChangedDelegate=null,this._lockDrawingsWatchedValue=null,this._hideDrawingsWatchedValue=null,this._hideIndicatorsWatchedValue=null,this._magnetEnabledWatchedValue=null,this._magnetModeWatchedValue=null,this._replayApi=null,this._chartChangesWatcher=null,this._hasChartChangesWatchedValue=null,this._getDataSourceHub=function(){return t.activeChartWidget.value().model().model()},this._chartWidgetCollection.getResizerDetacher=function(){return t.activeChartWidget.value().getResizerDetacher()},this._alertService=this._alertsDispatcher?new(void 0)(this._alertsDispatcher,this._getDataSourceHub):null,this._activeChangedChangedDelegate=new s, -this._chartWidgetCollection.activeChartWidget.subscribe(function(){this._activeChangedChangedDelegate.fire()}.bind(this)),this._chartWidgets=new WeakMap,this._activateChart=function(e){t.activeChartWidget.setValue(e)},this.linking=n}subscribe(e,t){l.subscribe(e,t)}unsubscribe(e,t){l.unsubscribe(e,t)}onContextMenu(e){l.subscribe("onContextMenu",(function(t){t.callback(e(t.unixtime,t.price))}))}onGrayedObjectClicked(e){l.subscribe("onGrayedObjectClicked",e)}activeChart(){return this._getChartWidgetApi(this._chartWidgetCollection.activeChartWidget.value())}_getChartWidgetApi(e){var t=this._chartWidgets.get(e);return void 0===t&&(t=new o(e,this._activateChart.bind(null,e)),this._chartWidgets.set(e,t)),t}onActiveChartChanged(){return this._activeChangedChangedDelegate}changeSymbol(e,t,i){n.interval.setValue(v.normalize(t)),n.symbol.setValue(e),i&&this.activeChart().onDataLoaded().subscribe(null,i,!0)}layout(){return this._chartWidgetCollection.layout.value()}layoutName(){return this._chartWidgetCollection.metaInfo.name.value()}layoutNameWatchedValue(){return this._chartWidgetCollection.metaInfo.name.readonly()}layoutSettingsDrawer(){throw new Error("not implemented")}chartsCount(){return a[this.layout()].count}viewMode(){throw new Error("not implemented")}viewModeWatchedValue(){throw new Error("not implemented")}setForceFullscreenMode(){throw new Error("not implemented")}setMultichartMode(){throw new Error("not implemented")}setActiveChart(e){throw new Error("not implemented")}chart(e){if(void 0===e&&(e=0),e<0||e>=this.chartsCount())throw Error("Incorrect index: "+e);return this._getChartWidgetApi(this._chartWidgetCollection.getAll()[e])}getSymbolInterval(e){var t={symbol:n.symbol.value(),interval:n.interval.value()};return e&&e(t),t}saveChart(e){if(this._saveChartService){var t=this;this._saveChartService.whenReadyToSave((function(){var i=t._saveChartService.saveToJSON();return e&&e(JSON.parse(i.content))}))}}loadChart(e){this._chartApiInstance.disconnect(),this._chartWidgetCollection.loadContent(e.json),this._chartWidgetCollection.purgeUnusedWidgets(),e.extendedData&&(this._chartWidgetCollection.metaInfo.id.setValue(e.extendedData.uid),this._chartWidgetCollection.metaInfo.uid.setValue(e.extendedData.uid),this._chartWidgetCollection.metaInfo.name.setValue(e.extendedData.name)),this._chartApiInstance.connect(),n.symbol.setValue(this.activeChart().symbol()),l.emit("chart_loaded")}getStudiesList(){return this._chartApiInstance.allStudiesMetadata().filter((function(e){return!e.is_hidden_study})).map((function(e){return e.description}))}getStudyInputs(e){{const t=w.findStudyMetaInfoByDescription(this._chartApiInstance.allStudiesMetadata(),e);return C(t)}}getStudyStyles(e){{const t=w.findStudyMetaInfoByDescription(this._chartApiInstance.allStudiesMetadata(),e);return P(t)}}getSavedCharts(e){u.getCharts().then(e)}loadChartFromServer(e){u.loadChart(e)}saveChartToServer(e,t,i){this._saveChartService&&this._saveChartService.saveChartSilently(e,t,i)}setAutosave(e){ -this._saveChartService&&this._saveChartService.autoSaveEnabled().setValue(e)}removeChartFromServer(e,t){u.removeChart(e).then(t)}getIntervals(){var e=[],t=d.getCustomResolutions();return null!==this._chartApiInstance&&(e=this._chartApiInstance.defaultResolutions()),d.mergeResolutions(e,t)}closePopupsAndDialogs(){c.hideAll(),l.emit(f)}selectedLineTool(){for(var e=Object.keys(g.supportedLineTools),t=h.tool.value(),i=0;i{"use strict";i.d(t,{addPlusButtonProperty:()=>o,restoreAddPlusButtonSettingsValue:()=>a});var s=i(56840),r=i(32255);function n(){return s.getBool("add_plus_button",!0)}const o=(0,r.createPrimitiveProperty)(n());function a(){o.setValue(!0),s.remove("add_plus_button")}s.onSync.subscribe(null,()=>o.setValue(n())),o.listeners().subscribe(null,()=>s.setValue("add_plus_button",o.value()))},20165:(e,t,i)=>{"use strict";i.d(t,{alignToStep:()=>n});var s=i(60521),r=i.n(s);function n(e,t){return r()(e).div(t).round(0,r().roundHalfUp).mul(t).toNumber()}},44419:(e,t,i)=>{"use strict";i.d(t,{AppliedTimeFrame:()=>r});var s=i(40144);class r{constructor(e){this._appliedTimeFrame=new s.WatchedObject(null),this._appliedTimeFrameInfo=null,this._appliedTimeFrameChangedBound=this._appliedTimeFrameChanged.bind(this),this._model=e,e.mainSeries().dataEvents().seriesTimeFrame().subscribe(this,this._onSeriesTimeFrame),this._appliedTimeFrame.subscribe(this._appliedTimeFrameChangedBound)}destroy(){this._appliedTimeFrame.unsubscribe(this._appliedTimeFrameChangedBound),this._model.timeScale().logicalRangeChanged().unsubscribeAll(this),this._model.mainSeries().dataEvents().seriesTimeFrame().unsubscribeAll(this)}appliedTimeFrame(){return this._appliedTimeFrame}_appliedTimeFrameChanged(){this._model.timeScale().logicalRangeChanged().unsubscribe(this,this._invalidateAppliedTimeFrame)}_onSeriesTimeFrame(e,t,i,s){if(s){const e=this._model.timeScale();this._appliedTimeFrameInfo={logicalRange:e.logicalRange(),baseIndex:e.baseIndex()},e.logicalRangeChanged().subscribe(this,this._invalidateAppliedTimeFrame)}}_invalidateAppliedTimeFrame(){if(null===this._appliedTimeFrameInfo)return;const e=this._model.timeScale(),t=e.logicalRange(),i=e.baseIndex(),s=this._appliedTimeFrameInfo.logicalRange,r=this._appliedTimeFrameInfo.baseIndex;(null===t||null===s||Math.abs(i-t.left()-(r-s.left()))>=.01||Math.abs(i-t.right()-(r-s.right()))>=.01)&&this._appliedTimeFrame.setValue(null)}}},67396:(e,t,i)=>{"use strict";i.d(t,{defaultsPreferencesByWhiteList:()=>P,preferencesByWhiteList:()=>C});var s=i(80643),r=i(27759);var n=i(98125),o=i(3825),a=i(59803),l=i(47484),c=i(15840),h=i(49642);const d=(0,n.getLogger)("Chart.ApplyPreferencesToAllCharts"),u={color:"",style:0},p={autoScale:!1,autoScaleDisabled:!1,lockScale:!1,percentage:!1,percentageDisabled:!1,log:!1,logDisabled:!1,alignLabels:!1,isInverted:!1,indexedTo100:!1},_={backgroundType:h.ColorType.Solid,background:"",backgroundGradientStartColor:"",backgroundGradientEndColor:"",topMargin:0,bottomMargin:0,rightOffset:0,horzGridProperties:(0,c.deepExtend)({},u),vertGridProperties:(0,c.deepExtend)({},u),crossHairProperties:(0,c.deepExtend)({},{color:"",style:0,transparency:0,width:0}),legendProperties:(0,c.deepExtend)({},{showStudyArguments:!1,showStudyTitles:!1,showStudyValues:!1,showSeriesTitle:!1,showSeriesOHLC:!1,showLegend:!1,showBarChange:!0,showVolume:!1,showBackground:!0,backgroundTransparency:0}),axisProperties:(0,c.deepExtend)({},p),separatorColor:""},m={lineColor:"",textColor:"",fontSize:0, -scaleSeriesOnly:!1,showSeriesLastValue:!1,seriesLastValueMode:o.PriceAxisLastValueMode.LastValueAccordingToScale,showSeriesPrevCloseValue:!1,showStudyLastValue:!1,showSymbolLabels:!1,showStudyPlotLabels:!1,showBidAskLabels:!1,showPrePostMarketPriceLabel:!0,showFundamentalLastValue:!1,showFundamentalNameLabel:!1,showPriceScaleCrosshairLabel:!0,showTimeScaleCrosshairLabel:!0},g={...m},f={visible:!1,futureOnly:!1,breaks:(0,c.deepExtend)({},{color:"",visible:!1,style:0,width:0})},v={style:0,minTick:"",showPriceLine:!1,priceLineWidth:0,priceLineColor:"",baseLineColor:"",showPrevClosePriceLine:!1,showCountdown:!0,prevClosePriceLineWidth:0,sessionId:"regular",prevClosePriceLineColor:"",esdShowDividends:!1,esdShowSplits:!1,esdShowEarnings:!1,esdShowBreaks:!1,showContinuousContractSwitches:!1,showContinuousContractSwitchesBreaks:!1,dividendsAdjustment:!1,backAdjustment:!1,settlementAsClose:!0,statusViewStyle:(0,c.deepExtend)({},{fontSize:16,showExchange:!0,showInterval:!0,symbolTextSource:"description"}),priceAxisProperties:(0,c.deepExtend)({},p),highLowAvgPrice:(0,c.deepExtend)({},{highLowPriceLinesVisible:!1,highLowPriceLabelsVisible:!1,averageClosePriceLabelVisible:!1,averageClosePriceLineVisible:!1,highLowPriceLinesColor:"",highLowPriceLinesWidth:0,averagePriceLineColor:"",averagePriceLineWidth:0}),candleStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",drawWick:!1,drawBorder:!1,drawBody:!0,borderColor:"",borderUpColor:"",borderDownColor:"",wickColor:"",wickUpColor:"",wickDownColor:"",barColorsOnPrevClose:!1}),hollowCandleStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",drawWick:!1,drawBorder:!1,drawBody:!0,borderColor:"",borderUpColor:"",borderDownColor:"",wickColor:"",wickUpColor:"",wickDownColor:""}),barStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",barColorsOnPrevClose:!1,dontDrawOpen:!1,thinBars:!0}),lineStyle:(0,c.deepExtend)({},{color:"",linestyle:0,linewidth:0,styleType:0}),areaStyle:(0,c.deepExtend)({},{color1:"",color2:"",linecolor:"",linestyle:0,linewidth:0,transparency:0}),baselineStyle:(0,c.deepExtend)({},{topFillColor1:"",topFillColor2:"",bottomFillColor1:"",bottomFillColor2:"",topLineColor:"",bottomLineColor:"",baselineColor:"",topLineWidth:0,bottomLineWidth:0,transparency:0,baseLevelPercentage:0}),hiloStyle:(0,c.deepExtend)({},{color:"",showBorders:!1,borderColor:"",showLabels:!1,labelColor:"",fontSize:0,drawBody:!0}),haStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",drawWick:!1,drawBorder:!1,drawBody:!0,borderColor:"",borderUpColor:"",borderDownColor:"",wickColor:"",wickUpColor:"",wickDownColor:"",showRealLastPrice:!1,barColorsOnPrevClose:!1,inputs:{}}),renkoStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",borderUpColor:"",borderDownColor:"",upColorProjection:"",downColorProjection:"",borderUpColorProjection:"",borderDownColorProjection:"",wickUpColor:"",wickDownColor:"",inputs:{boxSize:0,style:"",atrLength:0,wicks:!1,sources:"",source:""}}),pbStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",borderUpColor:"",borderDownColor:"",upColorProjection:"",downColorProjection:"", -borderUpColorProjection:"",borderDownColorProjection:"",inputs:{source:"",lb:0}}),kagiStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",upColorProjection:"",downColorProjection:"",inputs:{style:"",atrLength:0,reversalAmount:0}}),pnfStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",upColorProjection:"",downColorProjection:"",inputs:{reversalAmount:0,boxSize:0,style:"",atrLength:0}}),rangeStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",upColorProjection:"",downColorProjection:"",thinBars:!1,inputs:{range:0,phantomBars:!1}}),columnStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",barColorsOnPrevClose:!1})},S={priceScaleSelectionStrategyName:"auto",timeScale:(0,c.deepExtend)({},{defaultRightOffset:0}),mainSeries:(0,c.deepExtend)({},v),sessions:(0,c.deepExtend)({},l.sessionsPreferencesDefault),paneProperties:(0,c.deepExtend)({},_),chartEventsSourceProperties:(0,c.deepExtend)({},f),tradingProperties:(0,c.deepExtend)({},r.tradingPreferencesDefault)},y={timezone:"",scalesProperties:(0,c.deepExtend)({},g),...S},b={scalesProperties:(0,c.deepExtend)({},m),...S};function w(e,t,i,r,n=!0){if(void 0===t[e])return d.logDebug(`We haven't had this property ${r}.${e} yet, please, remove it from whiteList`),null;if((0,s.isObject)(i[e])){const s=Object.keys(i[e]);let o="";return s.map(s=>({[s]:w(s,t[e],i[e],`${r}.${e}`,n)})).reduce((e,t)=>(o=Object.keys(t)[0],e[o]=t[o],e),{})}return n?t[e].value():t[e]}function C(e,t,i=y){const s={timezone:"",priceScaleSelectionStrategyName:"auto",timeScale:{defaultRightOffset:e.timeScale().defaultRightOffset().value()},mainSeries:{},sessions:{},paneProperties:{},scalesProperties:{},chartEventsSourceProperties:{},tradingProperties:{}},r=["timeScale","mainSeries","sessions"],n=i.mainSeries,o=Object.keys(i),a=Object.keys(n),l=t.properties(),c=e.properties(),h=i.sessions,d=Object.keys(h),u=e.sessions().properties();return a.forEach(e=>{s.mainSeries[e]=w(e,l,n,"mainSeries")}),d.forEach(e=>{s.sessions[e]=w(e,u,h,"sessions")}),o.forEach(e=>{r.includes(e)||(s[e]=w(e,c,i,"preferences"))}),s}function P(e,t,i=b){const s={timeScale:{defaultRightOffset:e.timeScale().rightOffsetDefaultValue()},mainSeries:{},sessions:(0,c.deepExtend)({},l.sessionsPreferencesDefault),paneProperties:{},scalesProperties:{},chartEventsSourceProperties:{},tradingProperties:{},priceScaleSelectionStrategyName:"auto"},r=["timeScale","mainSeries","sessions"],n=i.mainSeries,o=Object.keys(i),h=Object.keys(n),d=(0,a.factoryDefaults)("chartproperties.mainSeriesProperties"),u=(0,a.factoryDefaults)("chartproperties");return h.forEach(e=>{s.mainSeries[e]=w(e,d,n,"mainSeries",!1)}),o.forEach(e=>{r.includes(e)||(s[e]=w(e,u,i,"preferences",!1))}),s}},87426:(e,t,i)=>{"use strict";i.d(t,{axisLabelBackgroundColor:()=>r});var s=i(45112);const r={common:s.colorsPalette["color-tv-blue-500"],active:s.colorsPalette["color-tv-blue-800"]}},65862:(e,t,i)=>{"use strict";i.d(t,{createDwmAligner:()=>c,isAlignmentEnabled:()=>h,createTimeToBarTimeAligner:()=>d});var s=i(10480),r=i(67337),n=i(29823),o=i(29617),a=i(69177) -;const l=new o.SessionInfo("Etc/UTC","0000-0000:1234567");function c(e,t){if(!h()||!n.Interval.isDWM(e))return null;const i=new o.SessionInfo(t.timezone,t.session,t.session_holidays,t.corrections),r=(0,a.newBarBuilder)(e,i,l);return{timeToSessionStart:e=>r.tradingDayToSessionStart(e),timeToExchangeTradingDay:e=>{const t=s.utc_to_cal(i.timezone,e),r=i.spec.correctTradingDay(t);return s.set_hms(r,0,0,0,0,s.get_timezone("Etc/UTC")),r.getTime()}}}function h(){return!r.enabled("disable_resolution_rebuild")}function d(e,t){if(!h())return e=>e;const i=new o.SessionInfo(t.timezone,t.session,t.session_holidays,t.corrections),s=(0,a.newBarBuilder)(e,i,i,!1);return e=>s.alignTimeIfPossible(e)}},29617:(e,t,i)=>{"use strict";i.d(t,{SessionInfo:()=>o,BarBuilderBase:()=>a});var s=i(10480),r=i(68684),n=i(90388);class o{constructor(e,t,i,s){this.init(e,t,i,s),this._state={timezone:e,spec:t,holidays:i,corrections:s}}init(e,t,i,r){this.timezone=s.get_timezone(e),this.spec=new n.SessionSpec(e,t,i,r)}state(){return this._state}static fromState(e){return new o(e.timezone,e.spec,e.holidays,e.corrections)}}class a{alignTime(e){if(isNaN(e))return NaN;let t=this.indexOfBar(e);return t===r.SessionStage.POST_SESSION&&(this.moveTo(e),t=this.indexOfBar(e)),t<0?NaN:this.startOfBar(t)}}},69177:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SessionInfo:()=>o.SessionInfo,alignExchangeTimeToSessionStartAndReturnUTC:()=>P,alignPeriodsBackForDataRequest:()=>y,alignPeriodsBackForVisibleRange:()=>b,getPeriodsBetweenDates:()=>C,isTradingNow:()=>T,newBarBuilder:()=>S});var s=i(10480),r=i(29823),n=i(64514),o=i(29617),a=i(68684);class l extends o.BarBuilderBase{constructor(e,t){super(),this._sessionStartMs=-Number.MAX_VALUE,this._sessionEndMs=-Number.MAX_VALUE,this._periodSec=e,this._session=t}alignTimeIfPossible(e){const t=this.alignTime(e);return isNaN(t)?e:t}indexOfBar(e){return e=this._sessionEndMs?a.SessionStage.POST_SESSION:(0,n.toInt)(s.time_seconds_diff(e,this._sessionStartMs)/this._periodSec)}startOfBar(e){if(e===a.SessionStage.PRE_SESSION){const e=s.get_cal_from_unix_timestamp_ms(this._session.timezone,this._sessionStartMs-1),t=this._session.spec.alignToNearestSessionEnd(e,-1);return s.cal_to_utc(this._session.timezone,t)}if(e===a.SessionStage.POST_SESSION)return this._sessionEndMs;if(e<0)throw new Error("Negative offset is not supported");return this._sessionStartMs+s.time_seconds(this._periodSec*e)}endOfBar(e){if(e<0)throw new Error("Index cannot be negative");const t=this.startOfBar(e)+1e3*this._periodSec;return t>this._sessionEndMs?this._sessionEndMs:t}isLastBar(e,t){return t>=this._sessionStartMs+s.time_seconds(this._periodSec*(e+1)-1)}moveTo(e){const t=this._session.timezone,i=s.utc_to_cal(t,e),r=this._session.spec.alignToSessionStart(i);this._sessionStartMs=s.cal_to_utc(t,i),s.add_minutes(i,r),this._sessionEndMs=s.cal_to_utc(t,i)}indexOfLastBarInSession(){return(0,n.toInt)((this._sessionEndMs-1-this._sessionStartMs)/1e3/this._periodSec)}moveNext(){this.moveTo(this._sessionEndMs)}}var c=i(26985) -;function h(e,t){const i=s.clone(t),r=e.businessDaysToCalendarDays(i,1);r>1&&s.add_date(i,r-1);const n=e.leftBorderOfDailyBar(i);if(null===n)throw new Error("Cannot calculate left border of daily bar");return s.cal_to_utc(s.get_timezone(e.timezone()),n)}class d extends o.BarBuilderBase{constructor(e,t,i,s,r=!1){super(),this._periodStart=-Number.MAX_VALUE,this._periodEnd=-Number.MAX_VALUE,this._periodLastBarStart=-Number.MAX_VALUE,this._periodStartDay=new c.BusinessDay(0,0,0),this._periodEndDay=new c.BusinessDay(0,0,0),this._period=i,this._sessionTgt=e,this._builder=s,this._useBusinessDays=r,this._sessionSrc=r?new o.SessionInfo("Etc/UTC","24x7"):t||e}builder(){return this._builder}alignTimeIfPossible(e){return this.tradingDayToSessionStart(e)}tradingDayToSessionStart(e){return this.moveTo(e),this.startOfBar(0)}indexOfBar(e){if(this._useBusinessDays){const t=c.BusinessDay.fromCalendar(s.get_cal_from_unix_timestamp_ms(this._sessionSrc.timezone,e));return t.before(this._periodStartDay)?a.SessionStage.PRE_SESSION:this._periodEndDay.before(t)?a.SessionStage.POST_SESSION:0}return e=this._periodEnd?a.SessionStage.POST_SESSION:0}startOfBar(e){if(e===a.SessionStage.PRE_SESSION){const e=s.get_cal_from_unix_timestamp_ms(this._sessionTgt.timezone,this._periodStart-1),t=this._sessionTgt.spec.alignToNearestSessionEnd(e,-1);return s.cal_to_utc(this._sessionTgt.timezone,t)-1}return e===a.SessionStage.POST_SESSION||e>0?this._periodEnd:e===a.SessionStage.LASTBAR_SESSION?this._periodLastBarStart:this._periodStart}moveTo(e){const t=s.get_cal_from_unix_timestamp_ms(this._sessionSrc.timezone,e);this._sessionSrc.spec.correctTradingDay(t);const i=s.get_year(t),r=this._indexOfPeriodInYear(t),n=r+this._period,o=this._sessionTgt.spec,a=this._sessionTgt.timezone,l=this._builder.startOfPeriod(a,r,i);this._periodStart=h(o,l);const d=s.clone(l),u=o.businessDaysToCalendarDays(d,1);u>1&&s.add_date(d,u-1),this._periodStartDay=c.BusinessDay.fromCalendar(d);const p=this._builder.startOfPeriod(a,n,i);this._periodEnd=h(o,p);const _=s.clone(p);for(s.add_date(_,-1);o.isCalWeekEnd(_);)s.add_date(_,-1);this._periodEndDay=c.BusinessDay.fromCalendar(_),s.add_date(p,-1),function(e,t){for(;e.isCalWeekEnd(t);)s.add_date(t,-1)}(this._sessionTgt.spec,p),this._periodLastBarStart=h(o,p),(this._periodLastBarStart=this._periodLastBarStart}currentRange(){return{from:this._periodStartDay,to:this._periodEndDay}}indexOfBarInYear(e){const t=s.get_cal_from_unix_timestamp_ms(this._sessionSrc.timezone,e),i=s.get_year(t),r=this._builder.indexOfPeriod(t),o=this._sessionTgt.timezone;let a=this._builder.startOfPeriod(o,r,i),l=h(this._sessionTgt.spec,a);return a=s.get_cal_from_unix_timestamp_ms(s.get_timezone("Etc/UTC"),l),i=0&&(r-=7),(0,n.toInt)((r+i)/7))}class _{indexOfPeriod(e){return s.get_day_of_year(e)-1}startOfPeriod(e,t,i){const r=s.days_per_year(i);return s.get_cal(s.get_timezone("Etc/UTC"),i,s.JANUARY,1+Math.min(t,r))}}class m extends _{constructor(e){super(),this._sessionsSpec=e}indexOfPeriod(e){return super.indexOfPeriod(e)-function(e,t){const i=p(e,t),r=s.get_cal(s.get_timezone("Etc/UTC"),s.get_year(t),s.JANUARY,1);s.add_date(r,7*i);const n=i*e.weekEndsCount()+e.holidaysFromYearStart(r),o=s.get_day_of_year(t)-s.get_day_of_year(r);return n+o-e.calendarDaysToBusinessDays(r,o)}(this._sessionsSpec,e)}startOfPeriod(e,t,i){const r=7-this._sessionsSpec.weekEndsCount(),o=Math.max(0,(0,n.toInt)(t/r)-1),a=s.get_cal(s.get_timezone("Etc/UTC"),i,s.JANUARY,1),l=s.get_days_per_year(a);if(s.add_date(a,7*o),(t-=r*o-this._sessionsSpec.holidaysFromYearStart(a))>0){const e=this._sessionsSpec.businessDaysToCalendarDays(a,t);s.add_date(a,e)}let c=s.get_day_of_year(a)-1;return is.get_days_per_year(r)?this.startOfPeriod(e,0,i+1):(s.add_date(r,a),r)}}class v{indexOfPeriod(e){return s.get_month(e)}startOfPeriod(e,t,i){if(t<0){const e=(0,n.toInt)((11-t)/12);i-=e,t+=12*e}else t>s.DECEMBER&&(i++,t=s.JANUARY);return s.get_cal(s.get_timezone("Etc/UTC"),i,t,1)}}function S(e,t,i,s=!1){const n=r.Interval.parse(e),o=n.multiplier();return n.isMinutes()?new l(60*o,t):n.isSeconds()?new l(o,t):n.isTicks()?new l(1,t):n.isRange()?new l(60*o,t):new d(t,i,o,function(e,t){switch(e){case r.ResolutionKind.Days:return new g(t);case r.ResolutionKind.Weeks:return new f(t);case r.ResolutionKind.Months:return new v}throw new Error("Unknown dwm resolution: "+e)}(n.kind(),t),s)} -function y(e,t,i,s,r,n,o){return w(e,t,i,s,r,n,o,0)}function b(e,t,i,s,r,n,o){return w(e,t,i,s,r,n,o,1)}function w(e,t,i,s,n,a,l,c){const h=r.Interval.parse(n+s);if(h.isMonths()){const e=new Date(l);return 0===c&&e.setUTCDate(1),function(e,t){x(e,Math.floor(t/12));let i=e.getUTCMonth()-t%12;i<0&&(x(e,1),i+=12);e.setUTCMonth(i);for(;e.getUTCMonth()!==i;)I(e,1)}(e,a*h.multiplier()),e.getTime()}const d=new o.SessionInfo("Etc/UTC",e,t,i),u=h.inMilliseconds(),p=h.isDWM();let _;_=p?864e5:60*d.spec.maxTradingDayLength()*1e3;let m=0;m=h.isWeeks()?7:7-d.spec.weekEndsCount();const g=_/u,f=m*g;let v;if(a=g&&(f=_/6048e5*g),Math.ceil(f)}function P(e,t){const i=s.clone(t);return e.alignToSessionStart(i),s.cal_to_utc(s.get_timezone(e.timezone()),i)}function T(e,t){const i=s.utc_to_cal(t.timezone,+e);let r=s.get_day_of_week(i),n=s.get_minutes_from_midnight(i);const o=t.spec.findSession(t.spec.getWeekIndex(i),r,n).getEntry();return o.isOvernight()&&n>o.startOffset()+o.length()&&r===o.dayOfWeek()-1&&(r++,n-=1440),r===o.dayOfWeek()&&n>=o.startOffset()&&n{"use strict";i.d(t,{BusinessDay:()=>r});var s=i(10480);class r{constructor(e,t,i){this.year=e,this.month=t,this.day=i}toString(){return`${this.year}-${this.month}-${this.day}`}compareTo(e){return this.year>e.year||this.year===e.year&&this.month>e.month||this.year===e.year&&this.month===e.month&&this.day>e.day?1:this.year===e.year&&this.month===e.month&&this.day===e.day?0:-1}before(e){return-1===this.compareTo(e)}toCalendar(e){return s.get_cal(s.get_timezone("Etc/UTC"),this.year,this.month-1,this.day)}addDays(e){const t=this.toCalendar(s.get_timezone("Etc/UTC"));return s.add_date(t,e),r.fromCalendar(t)}static fromCalendar(e){return new r(s.get_year(e),s.get_month(e)+1,s.get_day_of_month(e))}}},68684:(e,t,i)=>{"use strict";var s;i.d(t,{SessionStage:()=>s}),function(e){e[e.PRE_SESSION=-1]="PRE_SESSION",e[e.POST_SESSION=-2]="POST_SESSION",e[e.LASTBAR_SESSION=-3]="LASTBAR_SESSION"}(s||(s={}))},11075:(e,t,i)=>{"use strict";i.d(t,{extrapolateBarsFrontToTime:()=>r,extrapolateBarsFrontByCount:()=>n});var s=i(68684);function r(e,t,i,s,n=!1){if(t>i){const o=r(e,i,t,s,n);return o.count=-o.count,o}return o(e,t,1,(e,t)=>t>i||0!==s&&e>s,n)}function n(e,t,i,s=!1){const r=i<0?-1:1;return o(e,t,r,(e,t)=>e>=i*r,s)}function o(e,t,i,r,n){let o=0,a=t;e.moveTo(a);let l=0,c=Number.MAX_VALUE,h=!1,d=t;const u=[] -;for(;!r(o,a);){if(l>15)throw new Error("Internal error 0x10 while extrapolating.");const r=e.indexOfBar(a);if(r===s.SessionStage.PRE_SESSION&&1===i)a=e.startOfBar(0),e.moveTo(a);else if(r===s.SessionStage.PRE_SESSION&&-1===i)a=e.startOfBar(s.SessionStage.PRE_SESSION),e.moveTo(a);else if(r===s.SessionStage.POST_SESSION&&1===i)a=e.startOfBar(s.SessionStage.POST_SESSION),e.moveTo(a);else{if(r===s.SessionStage.POST_SESSION&&-1===i)throw new Error("Internal error 0x12 while extrapolating.");{const p=e.startOfBar(r);if(p>t&&i>0||t>p&&i<0){if(h&&c===p)throw new Error("Internal error 0x11 while extrapolating.");h=!0,c=p,l=0,o++,d=p,n&&u.push(d)}if(0===r&&-1===i)a=p-1;else{a=e.startOfBar(r+i);const t=e.startOfBar(s.SessionStage.POST_SESSION);a>t&&(e.moveTo(t),a=e.startOfBar(0))}}}l++}return{time:d,times:u,count:o}}},37415:(e,t,i)=>{"use strict";i.d(t,{PrePostMarketBarIdentifier:()=>n});var s=i(10480);function r(e,t){return null!==t&&t.to>e&&e>=t.from}class n{constructor(e,t,i,s){this._timezone=e,this._regularSessionSpec=t,this._preMarketSessionSpec=i,this._postMarketSessionSpec=s}getPreAndPostMarketTimes(e){if(0===e.length)return{preMarket:[],postMarket:[]};const t=[],i=[];let r=null,n=null,o=e[0],a=(0,s.utc_to_cal)(this._timezone,o);this._isInPreMarketSession(a)&&(n=o);for(let l=1;l{"use strict";i.d(t,{SessionSpec:()=>f});var s=i(10480),r=i(55257),n=i(26985);function o(e,t){return e.compareTo(t)}class a{constructor(e,t,i){this._dayOfWeek=e,this._start=t,this._length=i}start(){return this._start+s.minutesPerDay*this.sessionStartDaysOffset()}startOffset(){return this._start}sessionStartDaysOffset(){return this._start>=0?0:this._start%s.minutesPerDay==0?-Math.ceil(this._start/s.minutesPerDay):-Math.floor(this._start/s.minutesPerDay)}sessionEndDaysOffset(){const e=this._start+this._length;return e>=0?0:e%s.minutesPerDay==0?-Math.ceil(e/s.minutesPerDay):-Math.floor(e/s.minutesPerDay)}isOvernight(){return this._start<0}dayOfWeek(){return this._dayOfWeek}sessionStartDayOfWeek(){let e=this._dayOfWeek-this.sessionStartDaysOffset();return es.SATURDAY&&(e=1),e}length(){return this._length}weight(){return this._dayOfWeek*s.minutesPerDay+this._start}compareTo(e){const t=this.weight(),i=t+this._length,s=e.weight(),r=s+e._length -;return t<=s&&ss?1:-1}contains(e){const t=60*s.get_hours(e)+s.get_minutes(e);let i=s.get_day_of_week(e)-this._dayOfWeek;i>0&&(i-=7);const r=i*s.minutesPerDay+t;return r>=this._start&&r=48&&e<=57}class _{constructor(){this.entries=[],this.firstDayOfWeek=s.MONDAY,this.weekEndsCount=-1,this.maxTradingDayLength=0}parseSessions(e,t){var i;let s=!1;this._clear(),this.timezone=e;const{hasErrors:r,spec:n}=this._parseFirstDayOfWeek(t);if("24x7"===n.toLowerCase())for(const e of d)this.entries.push(_._createSessionEntry(e,0,0,0,0));else{let e=!1;const t=new Map;for(const i of n.split("|")){const r=i.split(":");if(1!==r.length&&2!==r.length){s=!0,u.logError("Bad session section: "+i);continue}const n=1===r.length;if(n){if(e){s=!0,u.logError("Duplicated default section: "+i);continue}e=!0}const o=n?h:_._parseWorkingDays(r[1]);for(const e of o)n&&t.has(e)||t.set(e,r[0])}for(const e of d){const i=t.get(e);if(void 0!==i)for(const t of i.split(",")){const{hasErrors:i,sessionEntry:r}=_._parseSessionEntry(e,t);i&&(s=i),this.entries.push(r)}}}this.entries.sort(o);const a=new Map;for(const e of this.entries){const t=e.dayOfWeek();a.set(t,e.length()+(null!==(i=a.get(t))&&void 0!==i?i:0))}return this.maxTradingDayLength=0,a.forEach(e=>{this.maxTradingDayLength=Math.max(this.maxTradingDayLength,e)}),this.weekEndsCount=7-a.size,s||r}static parseHolidaysAndCorrections(e,t,i){const r=new Map,n=new Map,o=e=>{const t=this._parseDay(e),i=t.toString(),s=n.get(i);return void 0!==s?s:(n.set(i,t),t)};if(""!==t){const e=[];for(const i of t.split(",")){if(8!==i.length)throw new Error("bad holiday date: "+i);const t=o(i);r.set(t,e)}}if(""===i)return r;const l=s.get_timezone("Etc/UTC");for(const e of i.split(";")){const t=e.split(":");if(2!==t.length)throw new Error("bad correction section: "+e);const i=[];if("dayoff"!==t[0])for(const e of t[0].split(","))i.push(this._parseSessionEntry(1,e).sessionEntry);for(const e of t[1].split(",")){if(8!==e.length)throw new Error("bad correction date: "+e);const t=o(e),n=s.get_day_of_week(s.get_cal(l,t.year,t.month-1,t.day)),c=[];for(const e of i)c.push(new a(n,e.startOffset(),e.length()));r.set(t,c)}}return r}_clear(){this.entries=[],this.timezone="",this.firstDayOfWeek=s.MONDAY,this.weekEndsCount=-1}_parseFirstDayOfWeek(e){const t=e.split(";");if(t.length>2)return u.logError("Only one `first day` specification expected @ session "+e),{hasErrors:!0,spec:e};if(1===t.length)return{hasErrors:!1,spec:e};let i=1;let r=t[0].indexOf("-")>=0?NaN:parseInt(t[0]);return isNaN(r)&&(i=0,r=parseInt(t[1])),rs.SATURDAY?(u.logError(`Unexpected day index @ session: ${e}; day index ${r}`),{hasErrors:!0,spec:e}):(this.firstDayOfWeek=r,{ -hasErrors:!1,spec:t[i]})}static _parseDay(e){const t=parseInt(e.substring(0,4)),i=parseInt(e.substring(4,6)),s=parseInt(e.substring(6,8));return new n.BusinessDay(t,i,s)}static _parseSessionEntry(e,t){let i=!1,s=t.split("-");2!==s.length&&(i=!0,u.logError("Bad sessions entry: "+t),s=["0000","0000"]);let r=0,n=s[0];if(n.includes("F")){const e=n.split("F");n=e[0],r=""!==e[1]?parseInt(e[1]):1}let o=0,a=s[1];if(a.includes("F")){const e=a.split("F");a=e[0],o=""!==e[1]?parseInt(e[1]):1}if(!this._isCorrectSession(n)||!this._isCorrectSession(a))throw new Error("Incorrect entry syntax: "+t);const l=n,c=a;return{hasErrors:i,sessionEntry:this._createSessionEntry(e,_._minutesFromHHMM(l),_._minutesFromHHMM(c),r,o)}}static _isCorrectSession(e){return 4===e.length&&p(e.charCodeAt(0))&&p(e.charCodeAt(1))&&p(e.charCodeAt(2))&&p(e.charCodeAt(3))}static _parseWorkingDays(e){const t=[];for(let i=0;i0&&(t-=r*s.minutesPerDay),n>0&&(i-=n*s.minutesPerDay);return new a(e,t,i-t)}}function m(e,t){return e.compareTo(t)<0}function g(e,t){const i=(0,r.lowerbound)(e,t,(e,t)=>-1===e.day.compareTo(t));return i===e.length?null:e[i]}class f{constructor(e="Etc/UTC",t="0000-0000",i="",r=""){this._entries=[],this._firstDayOfWeek=s.MONDAY,this._entriesHash=new Map,this._holidayAndCorrectionMap=new Map,this._holidaySessions=[];const n=new _;n.parseSessions(e,t),this._entries=n.entries,this._timezone=n.timezone,this._spec=t,this._firstDayOfWeek=n.firstDayOfWeek,this._weekEndsCount=n.weekEndsCount,this._maxTradingDayLength=n.maxTradingDayLength;const o=_.parseHolidaysAndCorrections(e,i,r),a=s.get_timezone(e);this._isThereCorrections=""!==i||""!==r,o.forEach((e,t)=>{this._holidayAndCorrectionMap.set(t.toString(),e),this._holidaySessions.push({day:t,sessions:e});const i=this.getWeekIndex(t.toCalendar(a));this._entriesHash.set(i,null)}),this._holidaySessions.sort((e,t)=>e.day.compareTo(t.day))}entries(){return this._entries}timezone(){return this._timezone}spec(){return this._spec}firstDayOfWeek(){return this._firstDayOfWeek}addSessionEntry(e,t,i,r,n){0===i&&(i=s.minutesPerDay),r===n&&i<=t&&(r+=1),r>0&&(t-=r*s.minutesPerDay),n>0&&(i-=n*s.minutesPerDay);const o=i-t;this._entries.push(new a(e,t,o))}longestSessionLength(){let e=0,t=0;for(const t of this._holidaySessions)t.sessions.forEach(t=>{e=Math.max(e,t.length())});return this._entries.forEach(e=>{t=Math.max(t,e.length())}),Math.max(e,t)}isWeekEnd(e){const t=(0,r.lowerbound)(this._entries,new a(e,0,0),(e,t)=>e.dayOfWeek()this._entries.length-1||this._entries[t].dayOfWeek()!==e}isCalWeekEnd(e){const t=s.get_day_of_week(e);if(!this._isThereCorrections)return this.isWeekEnd(t);const i=n.BusinessDay.fromCalendar(e),r=this._holidayAndCorrectionMap.get(i.toString());return void 0===r?this.isWeekEnd(t):0===r.length}hasWeekEnds(){return this.weekEndsCount()>0}weekEndsCount(){ -return this._weekEndsCount}maxTradingDayLength(){return this._maxTradingDayLength}holidaysFromYearStart(e){if(!this._isThereCorrections)return 0;const t=s.get_timezone(this._timezone),i=new n.BusinessDay(s.get_year(e),s.JANUARY,1),r=n.BusinessDay.fromCalendar(e);let o=0;const a=this._selectHolidays(i,r);for(let e=0;et.start()%e==0&&t.length()%e==0)}indexOfSession(e,t,i){const n=this._getEntriesForWeek(e);let o=(0,r.lowerbound)(n,new a(t,i,0),m);if(o!==n.length)return new l(e,o,n);let c=e;const h=7-t+this._firstDayOfWeek-1;for(i=-(s.minutesPerDay-i+h*s.minutesPerDay);;){c++;const e=this._getEntriesForWeek(c);if(0!==e.length)return o=(0,r.lowerbound)(e,new a(this._firstDayOfWeek,i,0),m),new l(c,o,e)}}findSession(e,t,i,s=0){const r=this.indexOfSession(e,t,i),n=r.entries;let o=r.entryIndex;if(0!==s){const e=n[o].dayOfWeek(),t=s>0?1:-1;for(;;){const i=o+t;if(i<0||i>=n.length||n[i].dayOfWeek()!==e)break;o=i}}return new l(r.weekIndex,o,n)}getWeekIndex(e){if(!this._isThereCorrections)return 0;const t=s.get_day_of_week(e)-s.SUNDAY,i=s.get_timezone("Etc/UTC"),r=s.get_cal(i,s.get_year(e),s.get_month(e),s.get_day_of_month(e)-t);return Math.floor((r.getTime()+621672192e5)/1e3/86400/7)}correctTradingDay(e){const t=s.get_day_of_week(e),i=60*s.get_hours(e)+s.get_minutes(e),r=this.getWeekIndex(e),n=this.findSession(r,t,i,0),o=n.getEntry().dayOfWeek()-t+7*(n.weekIndex-r);return 0!==o&&s.add_date(e,o),e}alignToSessionStart(e,t=0){const i=s.get_day_of_week(e),r=60*s.get_hours(e)+s.get_minutes(e),n=this.getWeekIndex(e),o=this.findSession(n,i,r,t),a=o.getEntry(),l=a.dayOfWeek()-i+7*(o.weekIndex-n);0!==l&&s.add_date(e,l);const c=a.startOffset();return s.set_hms(e,c/60,c%60,0,0,s.get_timezone(this._timezone)),a.length()}businessDaysToCalendarDays(e,t){let i=this.getWeekIndex(e),r=s.get_day_of_week(e),n=0,o=0;for(;oi);)e[a].dayOfWeek()=t)return n}i++,r=s.SUNDAY}return n}calendarDaysToBusinessDays(e,t){let i=this.getWeekIndex(e),r=s.get_day_of_week(e),n=0,o=0;for(;ni);)e[a].dayOfWeek()=t)return o}i++,r=s.SUNDAY}return o}alignToNearestSessionStart(e,t){return this._alignToNearestSessionValue(e,t,this._entrySessionStart.bind(this))}alignToNearestSessionEnd(e,t){return this._alignToNearestSessionValue(e,t,this._entrySessionEnd.bind(this))}leftBorderOfDailyBar(e){const t=this._getEntriesForDay(e);return 0===t.length?null:(t.sort(o),this._getLeftEntryBorder(e,t[0]))}bordersOfDailyBar(e){const t=this._getEntriesForDay(e);if(0===t.length)return null;t.sort(o);const i=this._getLeftEntryBorder(e,t[0]),r=t[t.length-1],n=s.clone(e) -;let a=60*(r.startOffset()+r.length())-1;const l=Math.floor(a/3600);return a-=3600*l,s.set_hms(n,l,a/60,a%60,0,s.get_timezone(this._timezone)),{from:i,to:n}}getEntriesForWeekByCalendar(e){const t=this.getWeekIndex(e);return this._getEntriesForWeek(t)}_getEntriesForWeek(e){let t=this._entriesHash.get(e);if(void 0===t)return this._entries;if(null!==t)return t;const i=s.get_timezone(this._timezone);t=this._entries.slice();const r=this._weekIndexToCalendar(e),a=this._weekIndexToCalendar(e+1),l=n.BusinessDay.fromCalendar(r),c=n.BusinessDay.fromCalendar(a),h=this._selectHolidays(l,c);for(const e of h){const r=e.day.toCalendar(i),n=s.get_day_of_week(r);t=t.filter(e=>e.dayOfWeek()!==n),t=t.concat(e.sessions)}return t.sort(o),this._entriesHash.set(e,t),t}_selectHolidays(e,t){const i=[];let s=e;for(;;){const e=g(this._holidaySessions,s);if(null===e)return i;if(!e.day.before(t))return i;i.push(e),s=e.day.addDays(1)}}_weekIndexToCalendar(e){const t=1e3*(86400*e*7+86400)-621672192e5,i=s.get_cal_from_unix_timestamp_ms(s.get_timezone("Etc/UTC"),t),r=s.get_timezone("Etc/UTC");return s.get_cal(r,s.get_year(i),s.get_month(i),s.get_day_of_month(i))}_alignToNearestSessionValue(e,t,i){const r=s.get_day_of_week(e),n=60*s.get_hours(e)+s.get_minutes(e),o=this.getWeekIndex(e);let a=this.findSession(o,r,n);if(a.getEntry().contains(e)&&o===a.weekIndex||1===t)return i(a,s.clone(e),t);let c=a.entryIndex-1;if(c<0){let e=a.weekIndex,t=a.entries;for(;c<0;)e--,t=this._getEntriesForWeek(e),c+=t.length;a=new l(e,c,t)}else a=new l(a.weekIndex,c,a.entries);return i(a,s.clone(e),t)}_entrySessionStart(e,t,i){return this._entrySessionValue(e,t,i,e=>60*e.start())}_entrySessionEnd(e,t,i){return this._entrySessionValue(e,t,i,e=>60*(e.start()+e.length())-1)}_entrySessionValue(e,t,i,r){let n=s.get_day_of_week(t);const o=e.getEntry();let a=o.dayOfWeek()-o.sessionStartDaysOffset();const l=this.getWeekIndex(t);let c=e.weekIndex-l,h=!1;if(a0&&i>=0||c<0&&i<0)&&s.add_date(t,7*c),!o.contains(t)){let e=a-n;h&&i<0&&(e=-(7-a+n)),s.add_date(t,e),n=s.get_day_of_week(t)}o.isOvernight()&&n===o.dayOfWeek()&&s.add_date(t,-o.sessionStartDaysOffset());let d=r(o);const u=Math.floor(d/3600);return d-=3600*u,s.set_hms(t,u,d/60,d%60,0,s.get_timezone(this._timezone)),t}_getEntriesForDay(e){const t=s.get_day_of_week(e);return this._getEntriesForWeek(this.getWeekIndex(e)).filter(e=>e.dayOfWeek()===t)}_getLeftEntryBorder(e,t){const i=s.clone(e),r=t.startOffset();return s.set_hms(i,r/60,r%60,0,0,s.get_timezone(this._timezone)),i}}},33981:(e,t,i)=>{"use strict";var s=i(71053).PlotRowSearchMode,r=i(68906).rgbaFromInteger;function n(){this.backColorers=[]}function o(e){n.call(this),this._series=e}function a(e,t){n.call(this),this._study=e,this._plotIndex=t}n.prototype.barStyle=function(e,t,i){for(var s={},r=this.backColorers.length-1;r>=0;r--)this.backColorers[r].applyBarStyle(e,t,s,i);return this.applyBarStyle(e,t,s,i),s},n.prototype.pushBackBarColorer=function(e){this.backColorers.push(e)},n.prototype.applyBarStyle=function(e,t,i){ -throw new Error("This function is supposed to be reimplemented in a subclass")},inherit(o,n),o.upColor=function(e,t){switch(e.style.value()){case TradingView.Series.STYLE_LINE:return e.lineStyle.color.value();case TradingView.Series.STYLE_AREA:return e.areaStyle.linecolor.value();case TradingView.Series.STYLE_BARS:return e.barStyle.upColor.value();case TradingView.Series.STYLE_CANDLES:return e.candleStyle.upColor.value();case TradingView.Series.STYLE_HOLLOW_CANDLES:return e.hollowCandleStyle.upColor.value();case TradingView.Series.STYLE_HEIKEN_ASHI:return e.haStyle.upColor.value();case TradingView.Series.STYLE_BASELINE:return e.baselineStyle.topLineColor.value();case TradingView.Series.STYLE_HILO:return e.hiloStyle.color.value();case TradingView.Series.STYLE_COLUMNS:return e.columnStyle.upColor.value()}throw new Error("Unknown series style")},o.downColor=function(e,t){switch(e.style.value()){case TradingView.Series.STYLE_LINE:return e.lineStyle.color.value();case TradingView.Series.STYLE_AREA:return e.areaStyle.linecolor.value();case TradingView.Series.STYLE_BARS:return e.barStyle.downColor.value();case TradingView.Series.STYLE_CANDLES:return e.candleStyle.downColor.value();case TradingView.Series.STYLE_HOLLOW_CANDLES:return e.hollowCandleStyle.downColor.value();case TradingView.Series.STYLE_HEIKEN_ASHI:return e.haStyle.downColor.value();case TradingView.Series.STYLE_BASELINE:return e.baselineStyle.bottomLineColor.value();case TradingView.Series.STYLE_HILO:return e.hiloStyle.color.value();case TradingView.Series.STYLE_COLUMNS:return e.columnStyle.downColor.value()}throw new Error("Unknown series style")},o.prototype._applyLineStyle=function(e,t,i,s,r){i.barColor=o.upColor(r)},o.prototype._applyAreaStyle=function(e,t,i,s,r){i.barColor=o.upColor(r)},o.prototype._applyBarStyle=function(e,t,i,s,r){var n=o.upColor(r),a=o.downColor(r),l=this.findBar(e,!1,s);if(r.barStyle.barColorsOnPrevClose.value()){var c=this.findPrevBar(e,!1,s);i.barColor=c[TradingView.CLOSE_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a,i.barBorderColor=c[TradingView.CLOSE_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a}else i.barColor=l[TradingView.OPEN_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a,i.barBorderColor=l[TradingView.OPEN_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a},o.prototype._applyCandleStyle=function(e,t,i,s,r){var n,a=o.upColor(r,t),l=o.downColor(r,t),c=r.candleStyle.borderUpColor?r.candleStyle.borderUpColor.value():r.candleStyle.borderColor.value(),h=r.candleStyle.borderDownColor?r.candleStyle.borderDownColor.value():r.candleStyle.borderColor.value(),d=r.candleStyle.wickUpColor?r.candleStyle.wickUpColor.value():r.candleStyle.wickColor.value(),u=r.candleStyle.wickDownColor?r.candleStyle.wickDownColor.value():r.candleStyle.wickColor.value(),p=this.findBar(e,!1,s);r.candleStyle.barColorsOnPrevClose.value()&&this._series.data().first().index!==e?n=this.findPrevBar(e,!1,s)[TradingView.CLOSE_PLOT]<=p[TradingView.CLOSE_PLOT]:n=p[TradingView.OPEN_PLOT]<=p[TradingView.CLOSE_PLOT];i.barColor=n?a:l,i.barBorderColor=n?c:h,i.barWickColor=n?d:u}, -o.prototype._applyHollowCandleStyle=function(e,t,i,s,r){var n,a=o.upColor(r,t),l=o.downColor(r,t),c=r.hollowCandleStyle.borderUpColor?r.hollowCandleStyle.borderUpColor.value():r.hollowCandleStyle.borderColor.value(),h=r.hollowCandleStyle.borderDownColor?r.hollowCandleStyle.borderDownColor.value():r.hollowCandleStyle.borderColor.value(),d=r.hollowCandleStyle.wickUpColor?r.hollowCandleStyle.wickUpColor.value():r.hollowCandleStyle.wickColor.value(),u=r.hollowCandleStyle.wickDownColor?r.hollowCandleStyle.wickDownColor.value():r.hollowCandleStyle.wickColor.value(),p=this.findBar(e,!1,s),_=this.findPrevBar(e,!1,s);n=this._series.data().first().index!==e?_[TradingView.CLOSE_PLOT]<=p[TradingView.CLOSE_PLOT]:p[TradingView.OPEN_PLOT]<=p[TradingView.CLOSE_PLOT],i.barColor=n?a:l,i.barBorderColor=n?c:h,i.barWickColor=n?d:u,i.isBarHollow=p[TradingView.OPEN_PLOT]<=p[TradingView.CLOSE_PLOT]},o.prototype._applyHAStyle=function(e,t,i,s,r){var n,a=o.upColor(r,t),l=o.downColor(r,t),c=r.haStyle.borderUpColor.value(),h=r.haStyle.borderDownColor.value(),d=r.haStyle.wickUpColor.value(),u=r.haStyle.wickDownColor.value(),p=this.findBar(e,t,s);r.haStyle.barColorsOnPrevClose.value()?n=this.findPrevBar(e,t,s)[TradingView.CLOSE_PLOT]<=p[TradingView.CLOSE_PLOT]:n=p[TradingView.OPEN_PLOT]<=p[TradingView.CLOSE_PLOT];i.barColor=n?a:l,i.barBorderColor=n?c:h,i.barWickColor=n?d:u},o.prototype._applyBaseLineStyle=function(e,t,i,s,r){var n=this.findBar(e,t,s),a=r.baselineStyle,l=this._series.priceScale(),c=Math.round(l.height()*(Math.abs(100-a.baseLevelPercentage.value())/100)),h=this._series.firstValue(),d=l.coordinateToPrice(c,h);n[TradingView.CLOSE_PLOT]>d?i.barColor=o.upColor(r,t):i.barColor=o.downColor(r,t)},o.prototype._applyHiLoStyle=function(e,t,i,s,r){i.barColor=o.upColor(r,t),i.barBorderColor=r.hiloStyle.borderColor.value()},o.prototype._applyColumnStyle=function(e,t,i,s,r){var n=o.upColor(r),a=o.downColor(r),l=this.findBar(e,!1,s);if(r.columnStyle.barColorsOnPrevClose.value()){var c=this.findPrevBar(e,!1,s);i.color=c[TradingView.CLOSE_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a}else i.color=l[TradingView.OPEN_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a;i.barColor=i.color},o.prototype.applyBarStyle=function(e,t,i,s){i||(i={}),i.barColor=null,i.barBorderColor=null,i.barWickColor=null,i.isBarHollow=null,i.isBarUp=null,i.upColor=null,i.downColor=null,i.isTwoColorBar=null,i.isMergedBar=null;var r=this._series.properties();switch(r.style.value()){case TradingView.Series.STYLE_LINE:this._applyLineStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_AREA:this._applyAreaStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_BARS:this._applyBarStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_CANDLES:this._applyCandleStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_HOLLOW_CANDLES:this._applyHollowCandleStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_HEIKEN_ASHI:this._applyHAStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_BASELINE:this._applyBaseLineStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_HILO:this._applyHiLoStyle(e,t,i,s,r);break -;case TradingView.Series.STYLE_COLUMNS:this._applyColumnStyle(e,t,i,s,r)}return i},o.prototype.getSeriesBars=function(e){return e?this._series.nsBars():this._series.bars()},o.prototype._findBarFieldValue=function(e,t,i){var s=this.getSeriesBars(i).valueAt(e);if(null!==s)return s[t]},o.prototype.findBar=function(e,t,i){return i?i.value:this.getSeriesBars(t).valueAt(e)||[]},o.prototype.findPrevBar=function(e,t,i){if(i&&i.previousValue)return i.previousValue;var r=this._series.bars().search(e-1,s.NearestLeft,TradingView.CLOSE_PLOT);return null!==r?r.value:[]},inherit(a,n),a.prototype.getBars=function(){return this._study.series().bars()},a.prototype.firstColoredBar=function(e){for(var t=e,i=0;ie+l)return i;var c=s.styles[a.id];if(c.visible&&!c.visible.value())return i;var h=o.valueAt(e-l);if(null===h)return i;var d=h[this._plotIndex+1];if(null==d)return i;if(d=Math.round(d),n.isRGB)i.barColor=r(d),i.upColor=i.barColor,i.downColor=i.barColor;else{var u=n.plots[this._plotIndex].palette,p=s.palettes[u],_=n.palettes[u].valToIndex?n.palettes[u].valToIndex[d]:d,m=p.colors[_].color.value();i.barColor=m,i.upColor=m.color,i.downColor=m.color}return i},t.SeriesBarColorer=o,t.StudyBarColorer=a},81688:(e,t,i)=>{"use strict";i.d(t,{BarsRange:()=>r});var s=i(88537);class r{constructor(e,t){(0,s.assert)(e<=t,"The last bar in the bars range should be greater than or equal to the first bar"),this._firstBar=e,this._lastBar=t}firstBar(){return this._firstBar}lastBar(){return this._lastBar}count(){return this._lastBar-this._firstBar+1}contains(e){return this._firstBar<=e&&e<=this._lastBar}equals(e){return this._firstBar===e.firstBar()&&this._lastBar===e.lastBar()}static compare(e,t){return null===e||null===t?e===t:e.equals(t)}}},36244:(e,t,i)=>{"use strict";i.d(t,{ChartModelBase:()=>Vi});var s=i(4889),r=i(88537),n=i(86441),o=i(24377),a=i(45112),l=i(45345),c=i(6087),h=i(51768),d=i(81836),u=i(76422),p=i(11417),_=i(27759),m=i(35878),g=i(55257),f=i(14291);function v(e){return(0,f.isLineTool)(e)&&e.boundToSymbol()||!1}class S{constructor(){this._items=[],this._set=new Set,this._dataSourcesCache=null,this._customSourcesCache=null,this._lineSourcesCache=null}isEmpty(){return 0===this._items.length}add(e){if(this._items.length>0&&!v(this._items[0])&&this.clear(),v(e)){const t=(0,g.lowerbound)(this._items,e,(e,t)=>e.zorder()!(0,m.isDataSource)(e))),this._customSourcesCache}checkLineToolSelection(){this._items.forEach(e=>(0,f.isLineTool)(e)&&e.calcIsActualSymbol()),this._items=this._items.filter(e=>!(0,f.isLineTool)(e)||e.isActualSymbol()),this._invalidateCache()}remove(e){this._items=this._items.filter(t=>t!==e),this._set.delete(e),this._invalidateCache()}clear(){this._items=[],this._set.clear(),this._invalidateCache()}_invalidateCache(){this._customSourcesCache=null,this._dataSourcesCache=null,this._lineSourcesCache=null}}var y=i(31752),b=i.n(y),w=i(25270),C=i(29823),P=i(88564),T=i(2015),x=i.n(T),I=i(52640),M=i(22799);class L{constructor(e){this._rendererOptions={borderSize:1,offsetSize:5,fontSize:NaN,font:"",color:"",paneBackgroundColor:"",paddingBottom:0,paddingInner:0,paddingOuter:0,paddingTop:0,lineSpacing:0},this._chartModel=e}options(){const e=this._rendererOptions,t=this._chartModel.properties().childs(),i=t.scalesProperties.childs().fontSize.value();return e.fontSize!==i&&(e.fontSize=i,e.font=(0,I.makeFont)(i,M.CHART_FONT_FAMILY,""),e.paddingTop=2.5/12*i,e.paddingBottom=e.paddingTop,e.paddingInner=i/12*e.offsetSize,e.paddingOuter=i/12*e.offsetSize,e.lineSpacing=2/12*i),e.color=t.scalesProperties.childs().textColor.value(),e.paneBackgroundColor=t.paneProperties.childs().background.value(),this._rendererOptions}}var A=i(27982),E=i(54376),k=i(97098),D=i(59803),V=i(99305),B=i(67337),N=i(37667),R=i(47484),O=i(33291);const F=new k.PriceFormatter;class W extends V.CustomSourceBase{constructor(e,t,i){super(e,t),this._studySource=null,this._paneViews=[],this._metaInfo=null,this._destroyed=!1,this._isStarted=!1,this._loadedGraphics=null,this._doubleClickHandler=i;const s=t.mainSeries();this._properties=new P.DefaultProperty("sessions"),(0,D.applyDefaultsOverrides)(this._properties.childs().graphics,void 0,!1,"sessions"),this._removeDuplicateProperties(),this._properties.subscribe(this,this._onPropertiesChanged),t.studyMetaInfoRepository().findById({type:"java",studyId:"Sessions@tv-basicstudies"}).then(i=>{this._destroyed||null===this._loadedGraphics&&(this._setMetaInfo(i),null!==this._metaInfo&&(this._studySource=new A.StudyDataSource(t.chartApi(),s.seriesSource(),"sessions_",this._metaInfo),this._createPaneViews(),this._studySource.dataCleared().subscribe(this,this.updateAllViews.bind(this,(0,O.dataSourceChangeEvent)(e))),this._studySource.dataUpdated().subscribe(this,this.updateAllViews.bind(this,(0,O.dataSourceChangeEvent)(e))),this._studySource.setInputs({}),this._processHibernate()))}), -t.timeScale().onReset().subscribe(this,this._clearData),t.timeScale().logicalRangeChanged().subscribe(this,this.updateAllViews.bind(this,(0,O.viewportChangeEvent)())),t.mainSeries().sessionIdProxyProperty().subscribe(this,this._updateVisibleOfPreAndPostMarketBackground),t.mainSeries().properties().childs().interval.subscribe(this,this._processHibernate),this._updateVisibleOfPreAndPostMarketBackground(t.mainSeries().properties().childs().sessionId)}applyOverrides(e){(0,D.applyPropertiesOverrides)(this._properties.childs().graphics,void 0,!1,e,"sessions"),this._model.updateSource(this)}start(){this._isStarted=!0,this._processHibernate()}restart(){this._clearData(),B.enabled("stop_study_on_restart")&&this.stop(),this.start()}isStarted(){return this._isStarted}stop(){this._isStarted=!1,null!==this._studySource&&this._studySource.stop()}isHoveredEnabled(){return!1}paneViews(e){return this._paneViews}updateAllViews(e){this._paneViews.forEach(t=>t.update(e))}updateViewsForPane(e,t){this.updateAllViews(t)}destroy(){this._destroyed=!0,null!==this._studySource&&(this._studySource.dataCleared().unsubscribeAll(this),this._studySource.dataUpdated().unsubscribeAll(this),this._studySource.destroy(),this._studySource=null),this._model.timeScale().logicalRangeChanged().unsubscribeAll(this),this._model.timeScale().onReset().unsubscribeAll(this),this._model.mainSeries().sessionIdProxyProperty().unsubscribeAll(this),this._model.mainSeries().properties().childs().interval.unsubscribeAll(this),this._properties.unsubscribeAll(this)}series(){return this._model.mainSeries()}priceScale(){return this.series().priceScale()}graphics(){return this._loadedGraphics||(0,r.ensureNotNull)(this._studySource).graphics()}properties(){return this._properties}graphicsInfo(){return(0,r.ensureNotNull)(this._metaInfo).graphics}firstValue(e){return this._model.mainSeries().firstValue()}formatter(){return F}state(e){const t={properties:this._properties.state()};return e&&null!==this._metaInfo&&(t.data={graphics:(0,E.saveStudyGraphics)(this.graphics()),metaInfo:this._metaInfo}),t}restoreState(e,t){const i=e.properties;this._migrateOutOfSessionProperty(i),this._properties.mergeAndFire(i),this._removeDuplicateProperties(),this._updateVisibleOfPreAndPostMarketBackground(this._model.mainSeries().properties().childs().sessionId),void 0!==e.data&&t&&(this._loadStudyGraphics(e.data.graphics),this._setMetaInfo(e.data.metaInfo),this._createPaneViews())}restoreOldState(e,t){const i={properties:{graphics:e.state.graphics}};void 0!==e.data&&void 0!==e.metaInfo&&t&&(i.data={metaInfo:e.metaInfo,graphics:e.data.graphics}),this.restoreState(i,t)}applyPreferences(e){this._properties.mergePreferences(e)}metaInfo(){return(0,r.ensureNotNull)(this._metaInfo)}_loadStudyGraphics(e){const t=e.backgrounds;if(void 0!==t){const e=t.findIndex(e=>"inSession"===e.styleId);-1!==e&&t.splice(e,1)}this._loadedGraphics=(0,E.loadStudyGraphics)(e)}_setMetaInfo(e){const t=e.graphics.backgrounds;void 0!==t&&void 0!==t.inSession&&delete t.inSession,this._metaInfo=e} -_updateVisibleOfPreAndPostMarketBackground(e){const t=!(0,N.isRegularSessionId)(e.value());this._outOfSessionVisibilityProperty().setValue(t),this._preMarketVisibilityProperty().setValue(t),this._postMarketVisibilityProperty().setValue(t)}_clearData(){null!==this._studySource&&this._studySource.clearData()}_createPaneViews(){const e={doubleClickHandler:this._doubleClickHandler};(0,E.createGraphicsPaneViews)(this,this._model,e).then(e=>{this._paneViews=e,this._model.lightUpdate()})}_onPropertiesChanged(){this._processHibernate(),this.updateAllViews((0,O.dataSourceChangeEvent)(this.id()))}_processHibernate(){if(null!==this._studySource){const e=this._canBeHibernated(),t=this._isHibernated(),i=this._studySource.isStarted();!t&&e&&i?this._studySource.stop():!t||e||i||this._studySource.start()}}_canBeHibernated(){const e=this._model.mainSeries(),t=this._preMarketVisibilityProperty().value()&&this._postMarketVisibilityProperty().value()&&this._outOfSessionVisibilityProperty().value();return e.isDWM()||!t&&!this._vertLinesVisibleProperty().value()}_isHibernated(){return this._isStarted&&(null===this._studySource||!this._studySource.isStarted())}_outOfSessionVisibilityProperty(){return this._properties.childs().graphics.childs().backgrounds.childs().outOfSession.childs().visible}_preMarketVisibilityProperty(){return this._properties.childs().graphics.childs().backgrounds.childs().preMarket.childs().visible}_postMarketVisibilityProperty(){return this._properties.childs().graphics.childs().backgrounds.childs().postMarket.childs().visible}_vertLinesVisibleProperty(){return this._properties.childs().graphics.childs().vertlines.childs().sessBreaks.childs().visible}_removeDuplicateProperties(){this._properties.hasChild("properties")&&(this._properties.removeProperty("properties"),(0,P.saveDefaultProperties)(!0),this._properties.childChanged(null),(0,P.saveDefaultProperties)(!1))}_migrateOutOfSessionProperty(e){const t=e.graphics.backgrounds;if(void 0!==t){const i=t.outOfSession;i.color===(0,r.ensureDefined)(R.sessionsPreferencesDefault.graphics.backgrounds).outOfSession.color||"postMarket"in t||(e.graphics.backgrounds={...t,postMarket:{color:i.color,transparency:i.transparency,visible:i.visible},preMarket:{color:i.color,transparency:i.transparency,visible:i.visible}})}}}var H=i(81851),z=i(2872),U=i.n(z),j=i(52714),G=i.n(j),q=i(23653),Y=i(8175),K=i(28353),$=i(98125),X=i(9423),Z=i(39593),J=i(22932),Q=i(74325),ee=i(59555);const te=new Map([["price",e=>(0,J.isPriceDataSource)(e)],["trading",e=>(0,f.isTrading)(e)],["drawing",e=>(0,f.isLineTool)(e)&&!(0,f.isTrading)(e)&&!e.isPhantom()],["drawingsForAllSymbols",e=>(0,f.isLineTool)(e)&&!(0,f.isTrading)(e)&&!e.isPhantom()],["phantom",e=>(0,f.isLineTool)(e)&&e.isPhantom()],["restRowSources",e=>!(0,f.isLineTool)(e)&&!(0, -f.isTrading)(e)],["leftPriceScale",(e,t)=>"left"===se(e,t)],["rightPriceScale",(e,t)=>"right"===se(e,t)],["overlayPriceScale",(e,t)=>"overlay"===se(e,t)]]),ie=new Map([["price","visibleSorted"],["trading","visibleSorted"],["drawing","visibleSorted"],["drawingsForAllSymbols","allSorted"],["phantom","visibleSorted"],["restRowSources","visibleSorted"],["leftPriceScale","visibleSorted"],["rightPriceScale","visibleSorted"],["overlayPriceScale","visibleSorted"]]);function se(e,t){const i=e.priceScale();return null===i?"overlay":t.priceScalePosition(i)}class re{constructor(e){this._groupedSources=new Map,this._sources=null,this._pane=e}clear(){this._groupedSources.clear(),this._sources=null}destroy(){this.clear()}all(){return this._groupedSources.has("visibleSorted")||this._sortSources(),(0,r.ensureDefined)(this._groupedSources.get("visibleSorted"))}allIncludingHidden(){return this._groupedSources.has("allSorted")||this._sortSources(),(0,r.ensureDefined)(this._groupedSources.get("allSorted"))}allExceptSpecialSources(){if(!this._groupedSources.has("exceptSpecial")){const e=this.allIncludingHidden().filter(e=>!e.isSpeciallyZOrderedSource());this._groupedSources.set("exceptSpecial",e)}return(0,r.ensureDefined)(this._groupedSources.get("exceptSpecial"))}tradingSources(){return this._getSourcesByGroupType("trading")}priceSources(){return this._getSourcesByGroupType("price")}lineSources(){return this._getSourcesByGroupType("drawing")}lineSourcesForAllSymbols(){return this._getSourcesByGroupType("drawingsForAllSymbols")}phantomSources(){return this._getSourcesByGroupType("phantom")}allExceptLineAndTradingSources(){return this._getSourcesByGroupType("restRowSources")}hitTestSources(){if(!this._groupedSources.has("hitTest")){const e=this.allExceptLineAndTradingSources().concat(this.lineSources());this._groupedSources.set("hitTest",e)}return(0,r.ensureDefined)(this._groupedSources.get("hitTest"))}generalSources(){if(!this._groupedSources.has("general")){const e=this.allExceptLineAndTradingSources().concat(this.lineSources());this._groupedSources.set("general",(0,ee.sortSources)(e))}return(0,r.ensureDefined)(this._groupedSources.get("general"))}leftPriceScalesSources(){return this._getSourcesByGroupType("leftPriceScale")}rightPriceScalesSources(){return this._getSourcesByGroupType("rightPriceScale")}overlayPriceScaleSources(){return this._getSourcesByGroupType("overlayPriceScale")}_getSourcesByGroupType(e){const t=(0,r.ensureDefined)(ie.get(e));return this._groupedSources.has(t)?this._groupedSources.has(e)||this._groupSources(e):(this._sortSources(),this._groupSources(e)),(0,r.ensureDefined)(this._groupedSources.get(e))}_sortSources(){null===this._sources&&(this._sources=this._pane.dataSources());const e=(0,ee.sortSources)(this._sources),t=e.filter(e=>!(0,f.isLineTool)(e)||e.isActualSymbol()&&e.isActualCurrency()&&e.isActualUnit());this._groupedSources.set("allSorted",e),this._groupedSources.set("visibleSorted",t)}_groupSources(e){const t=(0,r.ensureDefined)(ie.get(e)),i=te.get(e);if(void 0!==i){const s=(0, -r.ensureDefined)(this._groupedSources.get(t)).filter(e=>i(e,this._pane));this._groupedSources.set(e,s)}}}var ne=i(28372),oe=i(22423),ae=i(69927),le=i(79680),ce=i(26161),he=i(50669),de=i(16654),ue=i(67072),pe=i.n(ue),_e=i(80643),me=i(13933);const ge=[],fe=[];class ve{constructor(e){this._studies={},this._deferreds={},this._container=e,ge.push(e),fe.push(this)}add(e,t){this._deferreds[e]&&(this._deferreds[e].resolve(t),delete this._deferreds[e]),this._studies[e]=t}get(e){return this._studies[e]?Promise.resolve(this._studies[e]):(this._deferreds[e]||(this._deferreds[e]=(0,d.createDeferredPromise)()),this._deferreds[e].promise)}reset(){const e=ge.indexOf(this._container);~e&&(ge.splice(e,1),fe.splice(e,1))}static instance(e){const t=ge.indexOf(e);return~t?fe[t]:new ve(e)}}var Se=i(66101),ye=i(97917);var be=i(36759),we=i(98802),Ce=i(95536),Pe=i(86225),Te=i(82241),xe=i(78898);const Ie=(0,$.getLogger)("Chart.Pane");function Me(e,t,i){e.setMargins({top:t,bottom:i})}class Le{constructor(e,t,i,s){this.m_dataSources=[],this._sourceWatchedValuesSubscriptions=new Map,this.m_mainDataSource=null,this._cachedOrderedSources=new re(this),this._sourcesById=new Map,this._priceSourcesById=new Map,this._sourcePropertiesChanged=new(U()),this._sourcesZOrderChanged=new(U()),this._tagsChanged=new(U()),this._stretchFactor=1e3,this._isInInsertManyDataSourcesState=!1,this._lastLineDataSourceZOrder=null,this._rightPriceScales=[],this._leftPriceScales=[],this._lockedPriceScale=null,this._currentPriceScaleRatio=null,this._onPriceScalesChanged=new(U()),this._isRecalculatingScales=!1,this._priceDataSources=[],this._symbolSources=[],this._symbolSourceResolved=new(U()),this._symbolSourceResolvingActive=new(G())(!1),this._bulkActions={activeCounter:0},this._height=0,this._width=0,this._dataSourcesCollectionChanged=new(U()),this._symbolSourceCollectionChanged=new(U()),this._maximized=new(G())(!1),this._collapsed=new(G())(!1),this._destroyed=new(U()),this._executionsPositionController=null,this._recalcSymbolSourceResolvingActive=()=>{for(const e of this._symbolSources)if(e.symbolResolvingActive().value())return void this._symbolSourceResolvingActive.setValue(!0);this._symbolSourceResolvingActive.setValue(!1)},this._onSymbolSourceCollectionChanged=()=>{0===this._bulkActions.activeCounter?this._symbolSourceCollectionChanged.fire():this._bulkActions.symbolSourceCollectionChanged=!0},this._priceScaleSelectionStrategy=(0,Q.createPriceScaleSelectionStrategy)(i.properties().childs().priceScaleSelectionStrategyName.value()),this._id=null!=s?s:(0,X.randomHashN)(6),this._timeScale=e,this.m_mainDataSource=null,this._properties=t,this._model=i,i.properties().childs().priceScaleSelectionStrategyName.subscribe(null,e=>{this._priceScaleSelectionStrategy=(0,Q.createPriceScaleSelectionStrategy)(e.value()),this._priceScaleSelectionStrategy.apply(this)}),this._timeScale.barSpacingChanged().subscribe(this,()=>{this.m_mainDataSource===this._model.mainSeries()&&this._recalculatePriceScaleByScaleRatio(this.m_mainDataSource.priceScale())}), -t.childs().topMargin.subscribe(this,this._updateMargins),t.childs().bottomMargin.subscribe(this,this._updateMargins),this._updateMargins()}destroy(){this._properties.childs().topMargin.unsubscribeAll(this),this._properties.childs().bottomMargin.unsubscribeAll(this),this._model.properties().childs().priceScaleSelectionStrategyName.unsubscribeAll(this),this._timeScale.barSpacingChanged().unsubscribeAll(this),this._leftPriceScales.concat(this._rightPriceScales).forEach(e=>{e.modeChanged().unsubscribeAll(this),e.priceRangeChanged().unsubscribeAll(this),e.internalHeightChanged().unsubscribeAll(this)});for(const e of this.m_dataSources)this.removeSourceFromPriceScale(e),e.destroy&&e.destroy();this._destroyed.fire()}id(){return this._id}bulkActionMacro(e){const t=this._bulkActions;t.activeCounter+=1,e(),t.activeCounter-=1,0===t.activeCounter&&(this._dataSourcesCollectionChanged.fire(),t.symbolSourceCollectionChanged&&this._symbolSourceCollectionChanged.fire(),t.symbolSourceCollectionChanged=!1)}defaultPriceScale(){var e,t;const i=null!==(t=null===(e=this.m_mainDataSource)||void 0===e?void 0:e.priceScale())&&void 0!==t?t:null;if(null!==i)return i;const s=this.properties().childs().axisProperties.state();return s.autoScale=!0,new ne.PriceScale(this._model.properties().childs().scalesProperties,s)}leftPriceScales(){return this._leftPriceScales}rightPriceScales(){return this._rightPriceScales}visibleLeftPriceScales(){var e;const t=this._model.priceScaleSlotsCount();if(this._leftPriceScales.length>t.left){const i=(0,g.moveToHead)(this._leftPriceScales,null===(e=this.mainDataSource())||void 0===e?void 0:e.priceScale());return i.splice(t.left),i}return this._leftPriceScales}visibleRightPriceScales(){var e;const t=this._model.priceScaleSlotsCount();if(this._rightPriceScales.length>t.right){const i=(0,g.moveToHead)(this._rightPriceScales,null===(e=this.mainDataSource())||void 0===e?void 0:e.priceScale());return i.splice(t.right),i}return this._rightPriceScales}clearSeries(e){const t=this._model.mainSeries();for(let i=this.m_dataSources.length-1;i>=0;i--)this.m_dataSources[i]===t&&this._removeSourceFromCollections(i,e)}sourcesByGroup(){return this._cachedOrderedSources}dataSourceForId(e){return this._sourcesById.get(e)||null}changeSourceId(e,t){(0,r.assert)(this.hasDataSource(e));const i=e.id();e.setId(t),this._sourcesById.delete(i),this._sourcesById.set(t,e),(0,J.isPriceDataSource)(e)&&(this._priceSourcesById.delete(i),this._priceSourcesById.set(t,e))}movePriceScale(e,t,i){const s=this.priceScalePosition(e);if(s!==t)this.removePriceScale(e),this._placePriceScale(e,t,i),e.invalidateMargins(),this._invalidateSourcesCache();else if(void 0!==i&&"overlay"!==s){const t="left"===s?this._leftPriceScales:this._rightPriceScales,r=t.indexOf(e);t.splice(r,1),t.splice(i,0,e)}}mainDataSource(){return this.m_mainDataSource}isEmpty(){return null===this.m_mainDataSource}recalculatePriceScale(e,t){if(!e)return;const i=e.sourcesForAutoscale();if((e.isAutoScale()||e.priceRangeShouldBeRecalculatedOnce())&&i&&i.length>0&&!this.timeScale().isEmpty()){ -const t=this.timeScale().visibleBarsStrictRange();e.recalculatePriceRange(t)}e.updateAllViews(t)}onSourceTagsChanged(){this._tagsChanged.fire()}insertDataSource(e,t,i){e.setZorder(i),t||(t=this.findSuitableScale(e)),this._addSourceToCollections(e);let s=!1;e===this.model().mainSeries()?(this.m_mainDataSource=this.model().mainSeries(),s=!0):null===this.m_mainDataSource&&(0,J.isPriceDataSource)(e)&&(this.m_mainDataSource=e,s=!0),t.addDataSource(e,this._isInInsertManyDataSourcesState),e.setPriceScale(t),t.invalidateMargins(),e.onTagsChanged&&e.onTagsChanged().subscribe(this,this.onSourceTagsChanged),s&&this._processMainSourceChange(),this._tagsChanged.fire(),(0,J.isPriceDataSource)(e)&&this.recalculatePriceScale(t,(0,O.dataSourceChangeEvent)(e.id())),this._invalidateSourcesCache()}addDataSource(e,t,i){let s=e.zorder();i||((0,f.isLineTool)(e)&&!e.isSpeciallyZOrderedSource()?(s=null!==this._lastLineDataSourceZOrder?this._lastLineDataSourceZOrder+1:this.newLineToolZOrder(),this._isInInsertManyDataSourcesState&&(this._lastLineDataSourceZOrder=s)):(0,H.isStudy)(e)&&!e.isSpeciallyZOrderedSource()&&(s=this.newStudyZOrder())),this.insertDataSource(e,t,s)}removeDataSource(e,t,i){const s=this.m_dataSources.indexOf(e);if(-1===s)return void Ie.logDebug("removeDataSource: invalid data source");this._removeSourceFromCollections(s,!!i),e!==this.m_mainDataSource||t||(this.m_mainDataSource=null);const r=e.priceScale();this.removeSourceFromPriceScale(e),e.onTagsChanged&&e.onTagsChanged().unsubscribe(this,this.onSourceTagsChanged),(0,J.isPriceDataSource)(e)&&!t&&this._processMainSourceChange(),this._tagsChanged.fire(),r&&(0,J.isPriceDataSource)(e)&&this.recalculatePriceScale(r,(0,O.dataSourceChangeEvent)(e.id())),this._invalidateSourcesCache()}hasDataSource(e){return this._sourcesById.has(e.id())}hasPriceDataSource(e){return this._priceSourcesById.has(e.id())}dataSources(){return this.m_dataSources}priceDataSources(){return this._priceDataSources}symbolSources(){return this._symbolSources}replaceSource(e,t,i){const s=this.m_mainDataSource===e,r=e.zorder();this.insertDataSource(t,i,r),this.removeDataSource(e,s),this._sourcesById.set(t.id(),t),(0,J.isPriceDataSource)(t)&&this._priceSourcesById.set(t.id(),t),s&&(this.m_mainDataSource=t,this._processMainSourceChange())}findSuitableScale(e,t,i){return this._priceScaleSelectionStrategy.findSuitableScale(this,e,t,i)}createNewPriceScaleIfPossible(){return this._priceScaleSelectionStrategy.createNewPriceScaleIfPossible(this)}canCreateNewPriceScale(){return this._priceScaleSelectionStrategy.canCreateNewPriceScale(this)}isOverlay(e){const t=e.priceScale();return null===t||"overlay"===this.priceScalePosition(t)}recalculate(e){this._leftPriceScales.forEach(t=>this.recalculatePriceScale(t,e)),this._rightPriceScales.forEach(t=>this.recalculatePriceScale(t,e));for(const t of this.m_dataSources)this.isOverlay(t)&&!(0,f.isLineTool)(t)&&this.recalculatePriceScale(t.priceScale(),e);this.updateAllViews(e),this._model.updatePane(this)}updateAllViews(e){for(const t of this.m_dataSources)t.updateAllViews(e) -;for(const t of this.model().customSources())t.updateViewsForPane(this,e)}priceScalePosition(e){return this._leftPriceScales.includes(e)?"left":this._rightPriceScales.includes(e)?"right":"overlay"}createPriceScaleAtPosition(e,t){const i=this.properties().childs().axisProperties.state();i.autoScale=!0;const s=new ne.PriceScale(this.model().properties().childs().scalesProperties,i);return s.setHeight(this.height()),Me(s,this._defaultTopMargin(),this._defaultBottomMargin()),this._placePriceScale(s,e,t),s}removePriceScale(e){e.modeChanged().unsubscribeAll(this),e.priceRangeChanged().unsubscribeAll(this),e.internalHeightChanged().unsubscribeAll(this),e===this._lockedPriceScale&&(this._lockedPriceScale=null,this._currentPriceScaleRatio=null);const t=this._leftPriceScales.indexOf(e);-1!==t&&(this._leftPriceScales[t].invalidateMargins(),this._leftPriceScales.splice(t,1));const i=this._rightPriceScales.indexOf(e);if(-1!==i&&(this._rightPriceScales[i].invalidateMargins(),this._rightPriceScales.splice(i,1)),null===e.mainSource()){const t=e.dataSources().length;0!==t&&Ie.logError("Invalid priceScale state: empty mainSource but non-empty data sources="+t)}this._onPriceScalesChanged.fire()}priceScaleIndex(e,t){switch(t){case"left":return this.leftPriceScales().indexOf(e);case"right":return this.rightPriceScales().indexOf(e)}}move(e,t,i){const s=e.priceScale();this.removeSourceFromPriceScale(e),t.addDataSource(e),e.setPriceScale(t),t.invalidateMargins(),this._processMainSourceChange(),this._invalidateSourcesCache(),e.isIncludedInAutoScale()&&(null!==s&&this.recalculatePriceScale(s,(0,O.dataSourceChangeEvent)(e.id())),this.recalculatePriceScale(t,(0,O.dataSourceChangeEvent)(e.id()))),this._onPriceScalesChanged.fire()}setZOrders(e){e.forEach((e,t)=>{t.setZorder(e)}),this._invalidateSourcesCache(),0===this._bulkActions.activeCounter&&this._dataSourcesCollectionChanged.fire(),this.model().lightUpdate()}isMainPane(){return this.hasDataSource(this.model().mainSeries())}isLast(){const e=this.model().panes();return e[e.length-1]===this}newStudyZOrder(){return(0,ce.newStudyZOrder)(this._priceDataSources)}newLineToolZOrder(e){return(0,ce.newLineToolZOrder)(this.m_dataSources,e)}model(){return this._model}containsMainSeries(){return this._sourcesById.has(this.model().mainSeries().id())}applyPriceScaleRatio(e,t){var i;null!==this._lockedPriceScale&&this._lockedPriceScale!==e||this._currentPriceScaleRatio===t||!this.isMainPane()||null===this._lockedPriceScale&&e!==(null===(i=this.mainDataSource())||void 0===i?void 0:i.priceScale())||(this._setNewPriceRangeByScaleRatio(e,t,this._mainSourceVisiblePriceRange(e),!0,!0),null!==this._lockedPriceScale?this._tryToApplyNewPriceScaleRatio():e.isLog()||this.model().mainSeriesScaleRatioPropertyOnChanged())}sendToBack(e){const t=this.sourcesByGroup().allExceptSpecialSources();this._batchReorder(e,t[0],ce.moveBeforeSource)}bringToFront(e){const t=this.sourcesByGroup().allExceptSpecialSources();this._batchReorder(e,t[t.length-1],ce.moveAfterSource)}sendBackward(e){ -const t=this.sourcesByGroup().allIncludingHidden(),i=t.indexOf(e[0]);if(0===i)this.bringToFront(e);else{const s=t[i-1];this.insertBefore(e,s)}}bringForward(e){const t=this.sourcesByGroup().allExceptSpecialSources(),i=t.indexOf(e[e.length-1]);if(i===t.length-1)this.sendToBack(e);else{const s=t[i+1];this.insertAfter(e,s)}}insertAfter(e,t){this._batchReorder(e,t,ce.moveAfterSource)}insertBefore(e,t){this._batchReorder(e,t,ce.moveBeforeSource)}maximized(){return this._maximized}collapsed(){return this._collapsed}getPriceScaleById(e){const t=this.m_dataSources.find(t=>{var i;return(null===(i=t.priceScale())||void 0===i?void 0:i.id())===e});return void 0===t?null:t.priceScale()}priceScaleSelectionStrategy(){return this._priceScaleSelectionStrategy}setPriceScaleSelectionStrategy(e){this._priceScaleSelectionStrategy=e,e.apply(this)}findTargetPriceAxisViews(e,t,i,s){if((0,m.isDataSource)(e)&&this.model().paneForSource(e)!==this)return[];const r=e.priceScale();if(t===r)return i;if(null===r)return[];if("overlay"===this.priceScalePosition(r))return t===this.defaultPriceScale()?i:[];const n=this.priceScalePosition(t);if(n!==this.priceScalePosition(r))return[];const o="left"===n?this.leftPriceScales():this.rightPriceScales();return o.indexOf(t)1}properties(){return this._properties}setPriceAutoScale(e,t){e.setMode({autoScale:t}),this.timeScale().isEmpty()||this.recalculatePriceScale(e,(0,O.viewportChangeEvent)())}state(e,t,i,s,r,n){var o,a;const l={sources:[],mainSourceId:null===(o=this.m_mainDataSource)||void 0===o?void 0:o.id(),stretchFactor:this._stretchFactor,leftAxisesState:[],rightAxisesState:[],overlayPriceScales:{},priceScaleRatio:this._currentPriceScaleRatio},c=new Map,h=e=>{if(c.has(e))return c.get(e);let o=null;const a=i&&!e.isSavedInStudyTemplates()||!e.state||(0,f.isLineTool)(e)&&n||!(o=e.state(t,r))||!e.isSavedInChart(Boolean(t))||s&&(0,f.isLineTool)(e)&&e.isActualSymbol&&!e.isActualSymbol()||e.isPhantom()?null:o;return c.set(e,a),a};if(e){l.sources=[];for(let e=0;enull!==c.get(e),u=e=>!n||!(0,f.isLineTool)(e);l.leftAxisesState=this._leftPriceScales.map(e=>({state:e.state(),sources:e.dataSources().filter(d).filter(u).map(e=>e.id())})),l.rightAxisesState=this._rightPriceScales.map(e=>({state:e.state(),sources:e.dataSources().filter(d).filter(u).map(e=>e.id())})),l.overlayPriceScales={};for(const e of this.m_dataSources)if(this.isOverlay(e)&&e.isSavedInChart(Boolean(t))){const t=e.priceScale();l.overlayPriceScales[e.id()]=null!==(a=null==t?void 0:t.state())&&void 0!==a?a:null}return l}restoreState(e,t,i,s,n,o){var a;s=s||{},e.stretchFactor&&(this._stretchFactor=e.stretchFactor);const l={};if(e.sources){const r=e.sources.filter(e=>{var t -;return!!e&&("MainSeries"===e.type||(!(null===(t=e.points)||void 0===t?void 0:t.some(e=>null===e.time_t||!isFinite(e.time_t)))||(Ie.logNormal("Dropped invalid "+e.type+". Reason: non-numeric point time"),!1)))}),a=r.findIndex(he.isMainSeriesState);-1!==a&&this.model().mainSeries().setObsoleteZOrder(r[a].zorder),i<3&&(0,ce.reorderDataSourcesStateZOrder)(r);const c=-1!==this.m_dataSources.indexOf(this._model.mainSeries());this.clearSeries(Boolean(o)),this.m_mainDataSource=null,c&&this._addSourceToCollections(this._model.mainSeries(),o),(()=>{const t=r.find(t=>t.id===e.mainSourceId);if(void 0===t)return void Ie.logWarn("There is no main source with id "+e.mainSourceId+", total sources="+r.length);if(!window.TradingView[t.type]||!(0,f.isLineToolName)(t.type))return void Ie.logNormal("The type of main source is not line tool - fix is unnecessary");let i=null;for(const e of r)if(!window.TradingView[t.type]||!(0,f.isLineToolName)(e.type)){if(null!==i)return void Ie.logWarn("Pane contains more than 1 possibly main sources - auto fix cannot be applied");i=e}if(null===i)return void Ie.logWarn("Pane contains only line tools - possible we need to remove this pane?");const s=e.mainSourceId;let n=0;e.mainSourceId=i.id,r.forEach(e=>{e.ownerSource===s&&(e.ownerSource=null==i?void 0:i.id,n+=1)}),Ie.logNormal("Auto fix broken pane is applied, changed line tools="+n+", changed from="+s+" to="+i.id)})();for(const e of r)if("study_Sessions"===e.type){this.model().sessions().restoreOldState(e,t);break}for(const e of r){if("study_Sessions"===e.type)continue;const i=e.id;null===this._model.dataSourceForId(e.id)||"MainSeries"===e.type?(l[i]=e.ownerSource,(0,he.isMainSeriesState)(e)?this._restoreMainSeries(e,t,c,s,n,o):(0,he.isStudyState)(e)?this.restoreStudy(e,t,s,o):(0,he.isLineToolState)(e)?(e.state&&(e.state.zOrderVersion=2),this.restoreLineTool(e,t,void 0,o)):"ChartEventsSource"===e.type&&this._restoreSpecialSource(e,t,o)):Ie.logError("Duplicate id while restoring pane: "+e.type+","+e.id)}}const c=new Set,h=(e,t)=>{e.priceScale()!==t&&(this.removeSourceFromPriceScale(e),e.setPriceScale(t),t.addDataSource(e))},d=(e,t,i)=>{if(c.has(e))return;c.add(e);const s=i.m_showSymbolLabels;void 0!==s&&e===this.model().mainSeries()&&this.model().properties().childs().scalesProperties.childs().showSymbolLabels.setValue(s),this._model.children(e,!0).forEach(e=>d(e,t,i)),h(e,t)},u=e=>{const t=(0,D.defaults)("chartproperties").paneProperties.axisProperties,i=new ne.PriceScale(this.model().properties().childs().scalesProperties,t);return i.restoreState(e.state),e.sources.forEach(e=>{const s=this.dataSourceForId(e);s&&d(s,i,t)}),0===i.dataSources().length?null:i},p=e=>e.map(u).filter(e=>null!==e);let _;if(e.leftAxisesState)_=p(e.leftAxisesState);else{const t=u({state:e.leftAxisState,sources:e.leftAxisSources});_=null!==t?[t]:[]}let m;if(this._leftPriceScales.slice().forEach(e=>this.removePriceScale(e)),this._leftPriceScales=[],_.forEach(e=>this._placePriceScale(e,"left")),e.rightAxisesState)m=p(e.rightAxisesState);else{const t=u({state:e.rightAxisState, -sources:e.rightAxisSources});m=null!==t?[t]:[]}this._rightPriceScales.slice().forEach(e=>this.removePriceScale(e)),this._rightPriceScales=[],m.forEach(e=>this._placePriceScale(e,"right")),this._currentPriceScaleRatio=e.priceScaleRatio||e.leftPriceScaleRatio||e.rightPriceScaleRatio||null;const g=new Map;for(const t of this.m_dataSources){if(c.has(t))continue;let i;if(e.overlayPriceScales&&e.overlayPriceScales[t.id()]){let s=e.overlayPriceScales[t.id()];g.has(null==s?void 0:s.id)?i=g.get(null==s?void 0:s.id):(s=(0,r.ensure)(s),i=new ne.PriceScale(this._model.properties().childs().scalesProperties),i.setHeight(this._height),s.m_isAutoScale=!0,s.m_isLog=!1,s.m_isPercentage=!1,s.m_isLockScale=!1,i.restoreState(s),g.set(s.id,i))}else i=new ne.PriceScale(this._model.properties().childs().scalesProperties),i.setHeight(this._height);h(t,i)}for(const e of Object.keys(l)){const t=l[e];t&&(null===(a=this.dataSourceForId(e))||void 0===a||a.setOwnerSource(this.dataSourceForId(t)))}if(e.mainSourceId&&!this.containsMainSeries()&&(this.m_mainDataSource=this.dataSourceForId(e.mainSourceId)),!this.m_mainDataSource)for(const e of this.m_dataSources)if((0,J.isPriceDataSource)(e)){this.m_mainDataSource=e;break}for(const e of this.m_dataSources)if((0,f.isLineTool)(e))e.ownerSource()||e.setOwnerSource(this.mainDataSource()),e.isFixed()&&e.restoreFixedPoints();else if((0,H.isStudy)(e)){const t=e.properties();t.linkedToSeries&&t.linkedToSeries.value()&&(e.ownerSource()||e.setOwnerSource(this.model().mainSeries()))}this._updateMargins(),this._cachedOrderedSources.clear()}onPriceScalesChanged(){return this._onPriceScalesChanged}setPaneSize(e){let t;switch(e){case"large":t=1;break;case"medium":t=.6;break;case"small":t=.3;break;case"tiny":t=.15;break;default:throw new Error("Unknown size enum value: "+e)}this._stretchFactor=1e3*t}stretchFactor(){return this._stretchFactor}setStretchFactor(e){this._stretchFactor=e}customSources(e){return this.model().customSources(e)}createDrawingsCaches(){Z.ExecutionsPositionController.recreateOrderedByBarsSourcesCache(this)}clearDrawingCaches(){Z.ExecutionsPositionController.clearOrderedByBarsSourcesCache()}executionsPositionController(){return this._executionsPositionController||(this._executionsPositionController=new Z.ExecutionsPositionController(this,this._model.timeScale())),this._executionsPositionController}width(){return this._width}height(){return this._height}setHeight(e){this._height=e,this._leftPriceScales.forEach(t=>t.setHeight(e)),this._rightPriceScales.forEach(t=>t.setHeight(e));for(let t=0;t(e.paneViews(this)||[]).some(e=>{const r=e.renderer(t,i);return r&&r.doesIntersectWithBox&&r.doesIntersectWithBox(s)}))}logicalRectToPixels(e){const t=this.defaultPriceScale(),i=this.timeScale(),s=(0,r.ensureNotNull)((0,r.ensureNotNull)(t.mainSource()).firstValue()),o=t.priceToCoordinate(e.p1.price,s),a=i.indexToCoordinate(e.p1.index),l=t.priceToCoordinate(e.p2.price,s),c=i.indexToCoordinate(e.p2.index),h=new n.Point(Math.min(a,c),Math.min(o,l)),d=new n.Point(Math.max(a,c),Math.max(o,l));return(0,n.box)(h,d)}timeScale(){return this._timeScale}restoreLineTool(e,t,i,s){var n,o,a,l,c,h,d,u,p,_,m;delete e.state.lastUpdateTime,e.state.intervalsVisibilities=(0,be.mergeIntervalVisibilitiesDefaults)(e.state.intervalsVisibilities),i=void 0===i||i,ye.LineToolElliott.migrateState(e),"LineToolGannComplex"!==(m=e).type||void 0!==m.version&&1!==m.version||(m.type="LineToolGannFixed");const g=e.type,v=e.id,S=e.state,y=i?e.zorder:this.newLineToolZOrder();(0,r.assert)((0,f.isLineToolName)(g),"invalid data source type:"+g+" (expected to be a Line Tool)");let b,w,C=null;if((0,he.isStudyLineToolState)(e)){C=this._model.studyVersioning();const t=C.patchPointsBasedStudyState(e);e=t;const i=t.metaInfo;Object.assign(i,pe().parseIdString(null==i?void 0:i.fullId));const s=C.updateMetaInfo(i)||i;w=(0,f.createStudyLineToolProperties)(g,i,s,S,C),b=(0,f.createLineTool)(g,this._model,w,s,!0)}else w=(0,f.createLineToolProperties)(g,S,this._model),t?null===(n=w.child("fixedSize"))||void 0===n||n.setValue(!1):null===(o=w.child("fixedSize"))||void 0===o||o.setValue(!0),b=(0,f.createLineTool)(g,this._model,w,null,!0);b.setId(v),b.linkKey().setValue(e.linkKey||null);const P=e.alertId;P&&b.canHasAlert()&&B.enabled("alerts")&&!this._model.readOnly()&&!this._model.isJustClonedChart()&&b.setAlert(P,{noChartSave:!0});let T=null!==(a=e.indexes)&&void 0!==a?a:[];if(T=T.slice(0,null!==(c=null===(l=e.points)||void 0===l?void 0:l.length)&&void 0!==c?c:T.length),b.isFixed()?e.positionPercents&&b.restorePositionPercents(e.positionPercents):e.points&&b.restorePoints(e.points,T,t),b instanceof we.LineToolBarsPattern||b instanceof Ce.LineToolCallout||b instanceof Pe.LineToolTrendAngle||b instanceof Te.LineToolGhostFeed||b instanceof xe.LineToolParallelChannel)null===(d=(h=b).restoreData)||void 0===d||d.call(h,e);else if(t&&(0,he.isStudyLineToolState)(e)&&b.restoreData){const t=e;C&&(t.graphics=C.patchPointsBasedStudyData(t.metaInfo,t.graphics)),null===(u=b.restoreData)||void 0===u||u.call(b,t)}const x=null==e.version?1:e.version,I=null==b.version?1:b.version;return x!==I&&(null===(_=(p=b).migrateVersion)||void 0===_||_.call(p,x,I,{pane:this, -model:this._model,properties:w})),void 0!==y&&b.setZorder(y),this._addSourceToCollections(b,s),this._cachedOrderedSources.clear(),b}restoreStudy(e,t,i,s){if(t&&void 0===e.data&&void 0===e.nonSeriesData&&void 0===e.indexes)return Ie.logError("Cannot restore (skipping) study without data "+e.id+", "+e.metaInfo.id),null;const r=e.id,n=e.state,o=e.zorder,a=e.ownerSource;let l=(0,_e.clone)(e.metaInfo);if(Object.assign(l,pe().parseIdString(l.id)),function(e){return"Script$TV_EARNINGS@tv-scripting"===e||"Script$TV_DIVIDENDS@tv-scripting"===e||"Script$TV_SPLITS@tv-scripting"===e||"ESD$TV_EARNINGS@tv-scripting"===e||"ESD$TV_DIVIDENDS@tv-scripting"===e||"ESD$TV_SPLITS@tv-scripting"===e||"Earnings@tv-basicstudies"===e||"Dividends@tv-basicstudies"===e||"Splits@tv-basicstudies"===e||"BarSetContinuousRollDates@tv-basicstudies"===e}(l.id)&&!t)return Ie.logNormal("Skipping study "+l.id),null;let c=n;const h=this._model.studyVersioning(),d=h.patchPropsStateAndMetaInfo(c,l,{oldShowStudyLastValueProperty:t&&!i.showStudyLastValueProperty});c=d.propsState,l=d.metaInfo;const u=new w.StudyStub(this._model,e,l.shortDescription);let p;u.setId(r),u.setZorder(o);const _=i=>{u.setStatus({type:me.StudyStatusType.Undefined});const s=i||new(pe())(l),n=ve.instance(this._model),o=o=>{var a;const d=(0,Se.prepareStudyPropertiesForLoadChart)(l,i,c,null,h),_=(0,H.createStudy)(this._model,d,o||this._model.mainSeries(),s);if(_.setId(r),_.setOwnFirstValue(null!==(a=e.ownFirstValue)&&void 0!==a?a:null),t){const t=e,{data:i,nsData:s,indexes:r}=h.patchStudyData(l,t.data,t.nonSeriesData,t.indexes);_.restoreData(i,s,r)}this._model.replaceStudyStub(u,_)||(p=_),n.add(r,_)};a&&e.state.isChildStudy?n.get(a).then(o):o()};if(t)_(null);else{const e=h.updateMetaInfoAsync(l);e.sync?_(e.result):e.result.then(_).catch(e=>u.setFailed("error: "+e))}const m=null!=p?p:u;return m&&(m.setZorder(o),this._addSourceToCollections(m,s),this._processMainSourceChange()),this._cachedOrderedSources.clear(),m}clipboardLineToolOwnerSource(e){const t=this.dataSourceForId(e);if(null!==t){const e=t.ownerSource();if(null!==e&&null!==e.firstValue())return e}const i=this.mainDataSource();if(null!==i&&null!==i.firstValue())return i;for(const e of this.dataSources())if((0,J.isPriceDataSource)(e)&&null!==e.firstValue())return e;return null}realignLineTools(e){var t;let i=!1;for(const s of this.m_dataSources)!(0,f.isLineTool)(s)||void 0!==e&&(null===(t=null==s?void 0:s.ownerSource())||void 0===t?void 0:t.symbolSource())!==e&&(0,le.isActingAsSymbolSource)(e)||(s.realign(),s.updateAllViews((0,O.dataSourceChangeEvent)(s.id())),i=!0);return i&&this._invalidateSourcesCache(),i}startScalePrice(e,t){e.startScale(t)}scalePriceTo(e,t){e.scaleTo(t),this.updateAllViews((0,O.viewportChangeEvent)())}endScalePrice(e){e.endScale()}startScrollPrice(e,t){e.startScroll(t)}scrollPriceTo(e,t){e.scrollTo(t),this.updateAllViews((0,O.viewportChangeEvent)())}endScrollPrice(e){e.endScroll()}resetPriceScale(e){const t=this.timeScale().visibleBarsStrictRange();e.isLockScale()||e.setMode({autoScale:!0}), -e.recalculatePriceRange(t),this.updateAllViews((0,O.viewportChangeEvent)())}restorePriceScaleState(e,t){e.restoreState(t),this.updateAllViews((0,O.viewportChangeEvent)())}beginInsertManyLineDataSources(){this._isInInsertManyDataSourcesState=!0,this._lastLineDataSourceZOrder=null}endInsertManyLineDataSources(){this._isInInsertManyDataSourcesState=!1,this._lastLineDataSourceZOrder=null}removeSourceFromPriceScale(e){const t=e.priceScale();if(null!==t){const i=t.dataSources();i.indexOf(e)>=0&&t.removeDataSource(e),0===i.length&&this.removePriceScale(t)}}_invalidateSourcesCache(){this._cachedOrderedSources.clear(),this._leftPriceScales.forEach(e=>e.invalidateSourcesCache()),this._rightPriceScales.forEach(e=>e.invalidateSourcesCache())}_processMainSourceChange(){let e=!1;if(null===this.m_mainDataSource)for(const t of this.m_dataSources)if((0,J.isPriceDataSource)(t)&&!this.isOverlay(t)&&(!t.properties().linkedToSeries||!t.properties().linkedToSeries.value())){this.m_mainDataSource=t,e=!0;break}if(this.m_mainDataSource&&e){let e=this.m_dataSources.filter(f.isLineTool);e=(0,ee.sortSources)(e);for(const t of e)this.move(t,(0,r.ensureNotNull)(this.m_mainDataSource.priceScale()),!0)}else if(!this.m_mainDataSource||this.isOverlay(this.m_mainDataSource)&&0===this._nonOverlayPricesSourcesCount()){let e=null;if(this.m_dataSources.includes(this._model.mainSeries()))e=this._model.mainSeries();else for(const t of this.m_dataSources)if((0,J.isPriceDataSource)(t)&&this.isOverlay(t)&&t.showInObjectTree()){e=t;break}if(null!==e){const t=this.m_mainDataSource===e;this.m_mainDataSource=e;const i=this.createNewPriceScaleIfPossible();if(t&&e===this._model.mainSeries()){const t=(0,r.ensureNotNull)(e.priceScale());this._model.children(e,!0).forEach(e=>{this.removeSourceFromPriceScale(e),i.addDataSource(e),e.setPriceScale(i)}),this.removePriceScale(t)}this.move(e,i,!0),this.recalculatePriceScale(e.priceScale(),(0,O.globalChangeEvent)())}}}_addSourceToCollections(e,t){this.m_dataSources.push(e),this._sourcesById.set(e.id(),e),this._invalidateSourcesCache();const i=()=>{this._sourcePropertiesChanged.fire(e)};e.properties().subscribe(this,i),e.zOrderChanged().subscribe(this,t=>this._sourcesZOrderChanged.fire(e,t)),(0,f.isLineTool)(e)&&(e.normalizedPointsChanged().subscribe(this,i),e.fixedPointsChanged().subscribe(this,i),e.hasAlert.subscribe(i),e.sharingMode().subscribe(i),e.linkKey().subscribe(i),this._sourceWatchedValuesSubscriptions.set(e.id(),i));const s=(0,le.isSymbolSource)(e)?e:null;(0,J.isPriceDataSource)(e)&&(this._priceSourcesById.set(e.id(),e),e.currencyChanged().subscribe(this,()=>this._invalidateSourcesCache()),e.unitChanged().subscribe(this,()=>this._invalidateSourcesCache()),this._priceDataSources.push(e),null!==s&&(this._symbolSources.push(s),s.symbolResolved().subscribe(this,()=>this._symbolSourceResolved.fire(e)),s.symbolResolvingActive().subscribe(this._recalcSymbolSourceResolvingActive),s.symbolHibernated().subscribe(this._onSymbolSourceCollectionChanged),this._recalcSymbolSourceResolvingActive(), -this._onSymbolSourceCollectionChanged())),e.isMultiPaneAvailable()&&this.model().addMultiPaneSource(e),t||0!==this._bulkActions.activeCounter||this._dataSourcesCollectionChanged.fire()}_removeSourceFromCollections(e,t){const i=this.m_dataSources[e];i.properties().unsubscribeAll(this),i.zOrderChanged().unsubscribeAll(this),this.m_dataSources.splice(e,1),this._sourcesById.delete(i.id());const s=i.id();if((0,f.isLineTool)(i)&&(i.normalizedPointsChanged().unsubscribeAll(this),i.fixedPointsChanged().unsubscribeAll(this),this._sourceWatchedValuesSubscriptions.has(s))){const e=this._sourceWatchedValuesSubscriptions.get(s);i.hasAlert.unsubscribe(e),i.linkKey().unsubscribe(e)}this._invalidateSourcesCache();const n=(0,le.isSymbolSource)(i)?i:null;if((0,J.isPriceDataSource)(i)){this._priceSourcesById.delete(i.id()),i.currencyChanged().unsubscribeAll(this),i.unitChanged().unsubscribeAll(this);const e=this._priceDataSources.indexOf(i);if((0,r.assert)(-1!==e),this._priceDataSources.splice(e,1),null!==n){const e=this._symbolSources.indexOf(n);(0,r.assert)(-1!==e,"Source is not found"),this._symbolSources.splice(e,1),n.symbolResolved().unsubscribeAll(this),n.symbolResolvingActive().unsubscribe(this._recalcSymbolSourceResolvingActive),n.symbolHibernated().unsubscribe(this._onSymbolSourceCollectionChanged),this._recalcSymbolSourceResolvingActive(),this._onSymbolSourceCollectionChanged()}}i.isMultiPaneAvailable()&&this.model().removeMultiPaneSource(i),t||0!==this._bulkActions.activeCounter||this._dataSourcesCollectionChanged.fire()}_recalculatePriceScaleByScaleRatio(e){this.isMainPane()&&e===this._lockedPriceScale&&(null!==this._currentPriceScaleRatio?this._applyOldScaleRatioToPriceScale():this._tryToApplyNewPriceScaleRatio())}_defaultBottomMargin(){return.01*this.properties().childs().bottomMargin.value()}_defaultTopMargin(){return.01*this.properties().childs().topMargin.value()}_updateMargins(){const e=this._defaultTopMargin(),t=this._defaultBottomMargin();for(const i of this._leftPriceScales)Me(i,e,t);for(const i of this._rightPriceScales)Me(i,e,t);for(const i of this.m_dataSources)if(this.isOverlay(i)){const s=i.priceScale();null!==s&&(Me(s,e,t),this.recalculatePriceScale(s,(0,O.viewportChangeEvent)()))}for(const e of this._leftPriceScales)this.recalculatePriceScale(e,(0,O.viewportChangeEvent)());for(const e of this._rightPriceScales)this.recalculatePriceScale(e,(0,O.viewportChangeEvent)());this.updateAllViews((0,O.viewportChangeEvent)())}_batchReorder(e,t,i){i(this.sourcesByGroup().allExceptSpecialSources(),e,t),this._invalidateSourcesCache(),this._dataSourcesCollectionChanged.fire(),this.model().fullUpdate()}_placePriceScale(e,t,i){if("overlay"===t)return void e.invalidateMargins();const s="left"===t?this._leftPriceScales:this._rightPriceScales,n=void 0===i?s.length:i;s.splice(n,0,e),e.modeChanged().subscribe(this,this._onPriceScaleModeChanged.bind(this,e)),e.internalHeightChanged().subscribe(this,this._recalculatePriceScaleByScaleRatio.bind(this,e)), -e.priceRangeChanged().subscribe(this,this._recalculateTimeScaleByScaleRatio.bind(this,e)),e.priceRangeChanged().subscribe(this,this._onPriceScaleSetMinMaxPriceRange.bind(this,e)),e.isLockScale()&&((0,r.assert)(null===this._lockedPriceScale),this._lockedPriceScale=e,this._currentPriceScaleRatio=null),e.invalidateMargins(),this._onPriceScalesChanged.fire()}_onPriceScaleModeChanged(e,t,i){if(i.lockScale&&(this._lockedPriceScale!==e&&null!==this._lockedPriceScale&&this._lockedPriceScale.setMode({lockScale:!1}),this._lockedPriceScale=e,this._currentPriceScaleRatio=(0,oe.scaleRatio)(this.timeScale(),e)),t.lockScale&&!i.lockScale&&(this._lockedPriceScale=null,this._currentPriceScaleRatio=null),t.percentage===i.percentage&&t.indexedTo100===i.indexedTo100)return;const s=this.timeScale().visibleBarsStrictRange();null!==s&&(e.recalculatePriceRange(s),e.updateAllViews((0,O.viewportChangeEvent)()))}_applyOldScaleRatioToPriceScale(){this._isRecalculatingScales||null===this._currentPriceScaleRatio||null===this._lockedPriceScale||(this._isRecalculatingScales=!0,this._setNewPriceRangeByScaleRatio(this._lockedPriceScale,this._currentPriceScaleRatio,this._mainSourceVisiblePriceRange(this._lockedPriceScale)),this._isRecalculatingScales=!1)}_setNewPriceRangeByScaleRatio(e,t,i,s,r){const n=(0,oe.priceRangeByScaleRatio)(e,this.timeScale().barSpacing(),t);e.setPriceRange(null!==n?n:i,s,r)}_applyOldScaleRatioToTimeScale(){this._isRecalculatingScales||null===this._currentPriceScaleRatio||(this._isRecalculatingScales=!0,this._setNewBarSpacingByScaleRatio(),this._isRecalculatingScales=!1)}_tryToApplyNewPriceScaleRatio(){const e=(0,r.ensureNotNull)(this._lockedPriceScale),t=(0,oe.scaleRatio)(this.timeScale(),e);this._currentPriceScaleRatio===t||e.isLog()||(this._currentPriceScaleRatio=t,this.model().mainSeriesScaleRatioPropertyOnChanged())}_recalculateTimeScaleByScaleRatio(e){e===this._lockedPriceScale&&(null!==this._currentPriceScaleRatio?this._applyOldScaleRatioToTimeScale():this._tryToApplyNewPriceScaleRatio())}_setNewBarSpacingByScaleRatio(){const e=this.timeScale().getValidBarSpacing((0,oe.barSpacingByScaleRatio)((0,r.ensureNotNull)(this._lockedPriceScale),this._currentPriceScaleRatio));this.timeScale().isValidBarSpacing(e)&&this.timeScale().setBarSpacing(e)}_mainSourceVisiblePriceRange(e){const t=this.timeScale().visibleBarsStrictRange();return null!==t?(0,r.ensureNotNull)((0,r.ensureNotNull)(e.mainSource()).priceRange(t.firstBar(),t.lastBar())):new ae.PriceRange(-.5,.5)}_setMinMaxPriceRange(){const e=(0,r.ensureNotNull)(this._lockedPriceScale),t=(0,oe.priceRangeByScaleRatio)(e,this.timeScale().maxBarSpacing(),this._currentPriceScaleRatio),i=(0,oe.priceRangeByScaleRatio)(e,this.timeScale().minBarSpacing(),this._currentPriceScaleRatio);null!==t&&e.setMaxPriceRange(t),null!==i&&e.setMinPriceRange(i)}_onPriceScaleSetMinMaxPriceRange(e){e===this._lockedPriceScale&&this._setMinMaxPriceRange()}_nonOverlayPricesSourcesCount(){return this.m_dataSources.filter(e=>(!e.properties().linkedToSeries||!e.properties().linkedToSeries.value())&&((0, -J.isPriceDataSource)(e)&&e.showInObjectTree()&&!this.isOverlay(e))).length}_restoreMainSeries(e,t,i,s,r,n){const o=e.id,a=e.state;if(a&&r&&(a.style=r.style||a.style,a.interval=r.interval||a.interval,r.symbol&&r.symbol!==a.symbol&&(a.symbol=r.symbol,delete a.currencyId,delete a.unitId)),a&&a.style,a&&["candleStyle","hollowCandleStyle","haStyle"].forEach(e=>{a[e]&&(a[e].wickUpColor=a[e].wickUpColor||a[e].wickColor,a[e].wickDownColor=a[e].wickDownColor||a[e].wickColor)}),a&&(a.statusViewStyle=a.statusViewStyle||{},!a.statusViewStyle.symbolTextSource)){const e=!!a.statusViewStyle.showSymbolAsDescription;a.statusViewStyle.symbolTextSource=e?"ticker":"description"}if(a&&(a.extendedHours?a.sessionId="extended":a.sessionId||(a.sessionId="regular"),delete a.extendedHours),!i){const e=this._model.mainSeries();this._model.mainPane().removeDataSource(e,!1,n),this._addSourceToCollections(e,n)}const l=this.model().mainSeries(),c=l.properties().childs();this.m_mainDataSource=l;const h=a&&a.style?a.style:void 0;if(6===h&&"ATR"===c.pnfStyle.childs().inputs.childs().style.value()?c.pnfStyle.childs().inputs.childs().style.setValueSilently("Traditional"):4===h&&"ATR"===c.renkoStyle.childs().inputs.childs().style.value()&&c.renkoStyle.childs().inputs.childs().style.setValueSilently("Traditional"),a&&!a.hasOwnProperty("showSessions")&&(a.showSessions=!1),a&&void 0===a.settlementAsClose&&(a.settlementAsClose=!1),a&&t&&(a.showCountdown=!1),a&&(t&&!("showSeriesLastValueProperty"in s)&&"showLastValue"in a&&this._model.properties().childs().scalesProperties.childs().showSeriesLastValue.setValue(a.showLastValue),delete a.showLastValue),a){const t={haStyle:(0,N.chartStyleStudyId)(8,!0),renkoStyle:(0,N.chartStyleStudyId)(4,!0),pbStyle:(0,N.chartStyleStudyId)(7,!0),kagiStyle:(0,N.chartStyleStudyId)(5,!0),pnfStyle:(0,N.chartStyleStudyId)(6,!0),rangeStyle:(0,N.chartStyleStudyId)(11,!0)},i=this._model.studyVersioning(),s=l.styleStudyInfos(),r=Object.keys(de.SYMBOL_STRING_DATA);for(let n=0;nthis._zoffset&&e+t>0)return Ne.logError("merge: when the first time point index is updated, we should fill the time points starting from the first one"),[];if(0===this._items.length)return this._items=i.slice(),this._zoffset=t,[{change:"rebuild",index:this._validOffsetToIndex(0)}];const s=e+this._zoffset;if(s<0){const r=Math.abs(s);if(i.lengththis._items.length){const e=o-this._items.length;for(let t=n;tthis._items[this._items.length-1])return t?this._validOffsetToIndex(this._items.length-1):null;for(let i=0;io){const i=e-o;if(i<500&&null!=t)return t(l,i);return l+i*c}return null}roughIndex(e,t=null){const i=this._items;if(!i.length||i.length<2)return null;const s=i.length-1,r=this._validOffsetToIndex(0),n=this._validOffsetToIndex(s),o=i[0],a=i[s];if(e>=o&&e<=a)return this.closestIndexLeft(e);const l=(a-o)/(n-r);if(ea){const i=e-a;let s=Math.trunc(i/l);if(s<500&&null!==t){const i=t(a,e);i.success&&(s=i.result)}return n+s}return null}closestIndexLeft(e){const t=this._items -;if(!t.length)return null;if(Number.isNaN(e))return null;let i=t.length-1;if(e>=t[i])return this._validOffsetToIndex(i);let s=0;const r=t[s];if(es+1;){const r=s+i>>1,n=t[r];if(n>e)i=r;else{if(!(n{this.setRightOffset(e)}), -this._options.preserveBarSpacing&&(this._barSpacing=this._scalesProperties.childs().barSpacing.value()||6),this._barSpacingChanged.subscribe(this,this._maxRightOffsetOnChanged),this._widthChanged.subscribe(this,this._maxRightOffsetOnChanged)}destroy(){this._barSpacingChanged.unsubscribeAll(this),this._barSpacingChanged.destroy(),this._widthChanged.unsubscribeAll(this),this._widthChanged.destroy()}isEmpty(){return 0===this._width||!this.canNormalize()}canNormalize(){return this._points.size()>0}update(e,t,i,s){this._visibleBarsInvalidated=!0,i.length>0&&this._points.merge(e,t,i),this._tickMarks.merge(s),this._correctOffset()}addTail(e,t,i){this._tickMarks.removeTail(t);const s=e.params,n=(0,r.ensureDefined)(this._tickMarks.maxIndex)+(i?0:1);for(let e=0;e0&&(i*=this._width/e.width)),this._tryToUpdateBarSpacing(this._barSpacing,i),this._correctOffset(),this._rightOffsetChanged.fire(this._rightOffset)}marks(){if(this.isEmpty())return null;const e=this._barSpacing,t=5*((this._scalesProperties.childs().fontSize.value()||0)+4),i=Math.round(t/e),s=(0,r.ensureNotNull)(this.visibleBarsStrictRange()),n=Math.max(s.firstBar(),s.firstBar()-i),o=Math.max(s.lastBar(),s.lastBar()-i),a=this._tickMarks.build(e,t),l=[];for(const e of a){if(!(n<=e.index&&e.index<=o))continue;const t=this._tickMarks.indexToTime(e.index);null!==t&&l.push({coord:this.indexToCoordinate(e.index),label:this.formatLabel(t,e.span),span:e.span,major:e.label>=He.DAY_SPAN})}return l}visibleBarsStrictRange(){return this._visibleBarsInvalidated&&(this._visibleBarsInvalidated=!1,this._updateVisibleBars()),this._visibleBars.strictRange()}visibleBarsStrictRangeChanged(){return this._visibleBarsChanged}logicalRangeChanged(){return this._logicalRangeChanged}tickMarks(){return this._tickMarks}points(){return this._points}width(){return this._width}setWidth(e,t){if(!Number.isFinite(e)||e<=0)return void Ke.logWarn("setWidth: invalid argument: "+e);if(this._width===e)return;if(this._visibleBarsInvalidated=!0,(t||this._options.lockVisibleTimeRangeOnResize)&&this._width){const t=this._barSpacing*e/this._width -;this._tryToUpdateBarSpacing(this._barSpacing,t)}else this._width&&this.setBarSpacing(this._barSpacing);if(null!==this._leftEdgeIndex){if((0,r.ensureNotNull)(this.visibleBarsStrictRange()).firstBar()<=this._leftEdgeIndex){const t=this._width-e;this._rightOffset-=Math.round(t/this._barSpacing)+1}}this._width=e,this._widthChanged.fire(e);const i=this._rightOffset;this._correctOffset(),this._rightOffset!==i&&this._rightOffsetChanged.fire(this._rightOffset),this._requestMoreData()}setLeftEdgeFix(e){this._leftEdgeIndex=e;const t=this.visibleBarsStrictRange();if(null===t)return;const i=t.firstBar()-e;if(i<0){const e=this._rightOffset-i-1;this.scrollToOffsetAnimated(e,500)}}indexToCoordinate(e){if(this.isEmpty())return 0;if(!(0,_e.isInteger)(e))return 0;const t=this.baseIndex()+this._rightOffset-e;return this._width-(t+.5)*this._barSpacing-1}indexToUserTime(e){return this._tickMarks.indexToTime(e)}timePointToIndex(e){return this._points.indexOf(e,!0)}indexToTimePoint(e){return this._points.valueAt(e)}timeToCoordinate(e){const t=this._points.closestIndexLeft(e);if(null===t)return null;const i=(0,r.ensureNotNull)(this._points.valueAt(t)),s=this.indexToCoordinate(t);if(s<=0||s>=this._width)return null;const n=this.barSpacing(),o=this.baseIndex(),a=s+(e-i)/((0,r.ensureNotNull)(this._points.valueAt(o))-(0,r.ensureNotNull)(this._points.valueAt(o-1)))*n+1;return a<=0||a>=this._width?null:a}barIndexesToCoordinates(e){const t=this.baseIndex();for(const i of e){const e=i.time,s=t+this._rightOffset-e,r=this._width-(s+.5)*this._barSpacing-1;i.time=r,i.exactTime=r}}timedValuesToCoordinates(e,t){var i,s;const r=this.baseIndex()+this._rightOffset,n=this._width-r*this._barSpacing-.5*this._barSpacing-1,o=null!==(i=null==t?void 0:t.startItemIndex)&&void 0!==i?i:0,a=null!==(s=null==t?void 0:t.endItemIndex)&&void 0!==s?s:e.length;for(let t=o;t{void 0!==t&&t(),this._requestMoreData()};if(e){const e=this._rightOffset,t=this.maxRightOffset();t>0&&i>t&&(i=t);const r=this._model;(0,Ee.doAnimate)({from:e,to:i,duration:1e3,easing:Ae.easingFunc.easeInOutQuint,onComplete:s,onStep:(e,t)=>{this._visibleBarsInvalidated=!0,this._updateRightOffset(t),r.recalculateAllPanes((0,O.viewportChangeEvent)()),r.lightUpdate(),r.recalcVisibleRangeStudies()}})}else this._visibleBarsInvalidated=!0,this._updateRightOffset(i),s()}scrollToFirstBar(){this._model.gotoTime(new Date("1800-01-01").getTime())}scrollToOffsetAnimated(e,t){if(!isFinite(e))throw new RangeError("offset is required and must be finite number");const i=void 0===t?400:t -;if(!isFinite(i)||i<=0)throw new RangeError("animationDuration (optional) must be finite positive number");const s=this._rightOffset,r=Date.now(),n=()=>{this._visibleBarsInvalidated=!0;const t=(Date.now()-r)/i;if(t>=1)return this._updateRightOffset(e),this._visibleBarsInvalidated=!0,this._model.recalculateAllPanes((0,O.viewportChangeEvent)()),void this._model.lightUpdate();const o=s+(e-s)*t;this._updateRightOffset(o),this._model.recalculateAllPanes((0,O.viewportChangeEvent)()),setTimeout(n,20)};n()}defaultRightOffset(){return this._defaultRightOffset}rightOffsetDefaultValue(){return 10}barSpacing(){return this._barSpacing}setBarSpacing(e){Number.isFinite(e)?(e=this.getValidBarSpacing(e),this._tryToUpdateBarSpacing(this._barSpacing,e)&&(this._correctOffset(),this._options.preserveBarSpacing&&((0,P.saveDefaultProperties)(!0),this._scalesProperties.childs().barSpacing.setValue(this._barSpacing),(0,P.saveDefaultProperties)(!1)),this._model.recalculateAllPanes((0,O.viewportChangeEvent)()),this._model.lightUpdate())):Ke.logWarn("setBarSpacing: invalid argument: "+e)}barSpacingChanged(){return this._barSpacingChanged}getValidBarSpacing(e){return null==e&&(e=this.barSpacing()),ethis.maxBarSpacing()?this.maxBarSpacing():e}isValidBarSpacing(e){return e>=this.minBarSpacing()&&e<=this.maxBarSpacing()}preserveBarSpacing(){return this._options.preserveBarSpacing}normalizeBarIndex(e){let t=0,i=0;const s=this.baseIndex(),n=(0,r.ensureNotNull)(this._points.firstIndex());return es?(t=(0,r.ensureNotNull)(this._points.valueAt(s)),i=e-s):(t=(0,r.ensureNotNull)(this._points.valueAt(e)),i=0),{time_t:t,offset:i}}denormalizeTimePoint(e){const t=this._points.indexOf(e.time_t,!1);if(null!==t)return t+e.offset}rightOffset(){return this._rightOffset}rightOffsetChanged(){return this._rightOffsetChanged}minRightOffset(){const e=this.points().firstIndex(),t=this._baseIndex;if(null===e||null===t)return null;if(null!==this._leftEdgeIndex){const e=this.width()/this._barSpacing;return this._leftEdgeIndex-t+e-1}return e-t-1+Ye}maxRightOffset(){return this.width()/this._barSpacing-Ye}maxRightOffsetChanged(){return this._maxRightOffsetChanged}onReset(){return this._resetDelegate}scrollStartPoint(){return this._scrollStartPoint}baseIndex(){return this._baseIndex||0}zoom(e,t,i){if(!Number.isFinite(e)||!Number.isFinite(t))return void Ke.logWarn(`zoom: invalid arguments: ${e}, ${t}, ${i}`);const s=this.coordinateToIndex(e),r=this.barSpacing(),n=r+t*(r/10);this.setBarSpacing(n);(void 0!==i?!i:this._options.rightBarStaysOnScroll)||this.setRightOffset(this.rightOffset()-.5+(s-this._coordinateToFloatIndex(e))),this._requestMoreData()}zoomToBarsRange(e,t){if(null!==this._leftEdgeIndex&&(e=Math.max(e,this._leftEdgeIndex)),t<=e)return;const i=this.baseIndex(),s=this._rightOffset;this._rightOffset=t-i;const r=Math.max(t-e+1,Ye);this.setBarSpacing(this.width()/r),this._visibleBarsInvalidated=!0,this._correctOffset(), -this._rightOffset!==s&&this._rightOffsetChanged.fire(this._rightOffset),this._requestMoreData()}coordinateToIndex(e){return Math.ceil(this._coordinateToFloatIndex(e))}coordinateToVisibleIndex(e){let t;if(0===e){const e=this._coordinateToFloatIndex(-1);t=Math.floor(e)+1}else t=this.coordinateToIndex(e);const i=this.visibleBarsStrictRange();return null===i||i.contains(t)||(t=Math.min(Math.max(i.firstBar(),t),i.lastBar())),t}canZoomIn(){return this.barSpacing()this._options.minBarSpacing}minBarSpacing(){return this._options.minBarSpacing}maxBarSpacing(){const e=this.width();return qe?e:e/Ye}resetRightOffset(){this.setRightOffset(this._defaultRightOffset.value())}reset(){this._visibleBarsInvalidated=!0,this._points=new Re,this._scrollStartPoint=null,this._scaleStartPoint=null,this._clearCommonTransitionsStartState(),this._tickMarks.reset(),this._leftEdgeIndex=null,this._resetDelegate.fire(),this.disconnect()}disconnect(){this._requestingMoreData=!1,this._requestedTickmarksCount=0,this._endOfData=!1}setBaseIndex(e){Number.isFinite(e)?(this._visibleBarsInvalidated=!0,this._baseIndex=e,this._correctOffset()):Ke.logDebug("setBaseIndex: invalid argument: "+e)}resetBaseIndex(){this._visibleBarsInvalidated=!0,this._baseIndex=null}setRightOffset(e){Number.isFinite(e)?(this._visibleBarsInvalidated=!0,this._updateRightOffset(e)):Ke.logWarn("setRightOffset: invalid argument: "+e)}correctBarSpacing(){this.isEmpty()||this.points().size()this.formatLabelImpl(e,t)),this._formattedBySpan.set(t,i)),i.format(new Date(e))}formatLabelImpl(e,t){if(!(e&&e instanceof Date))return"incorrect time";const i=function(e,t){if(ee&&(this._rightOffset=e,this._visibleBarsInvalidated=!0);const t=this.minRightOffset();null!==t&&this._rightOffset{e.onChanged().subscribe(null,t=>this._onChanged.fire(e.id,t))})}groups(){return this._groups.filter(e=>e.isActualSymbol())}groupsForAllSymbols(){return this._groups}createGroup(e,t,i){t=t||this._generateNextName();const s=new et.LineToolsGroup(e,t,i);this._groups.push(s),s.onChanged().subscribe(null,e=>this._onChanged.fire(s.id,e));const r={visibilityChanged:!1,lockedChanged:!1,titleChanged:!1,isActualIntervalChanged:!1,affectedLineTools:e.map(e=>e.id())};return this._onChanged.fire(s.id,r),s}addGroup(e){this._groups.push(e),e.onChanged().subscribe(null,t=>this._onChanged.fire(e.id,t)),this._onChanged.fire(e.id)}removeGroup(e){const t=this._groups.findIndex(t=>t.id===e.id);this._groups.splice(t,1),this._onChanged.fire(e.id)}groupForId(e){return this._groups.find(t=>t.id===e)||null}groupForLineTool(e){return this._groups.find(t=>t.containsLineTool(e))||null}removeLineTools(e){ -this._groups.forEach(t=>{const i=e.filter(t.containsLineTool.bind(t));i.length&&t.excludeLineTools(i)});this._groups.filter(e=>0===e.lineTools().length).forEach(e=>this.removeGroup(e))}state(e){return{groups:(e?this._groups.filter(e=>e.isActualSymbol()):this._groups).map(e=>e.state())}}onChanged(){return this._onChanged}fireChangedAll(){this._groups.forEach(e=>{this._onChanged.fire(e.id)})}static fromState(e,t){const i=[];for(const s of t.groups){const t=et.LineToolsGroup.fromState(e,s);null!==t&&i.push(t)}return new tt(i)}_generateNextName(){const e=new Set(this.groups().map(e=>e.name()));for(let t=1;;t++){const i="Group "+t,s="Group_"+t;if(!e.has(i)&&!e.has(s))return i}}}var it=i(10480),st=i.n(it),rt=i(69177);let nt=null;function ot(e){return Boolean(e.symbolInfo.timezone)&&Boolean(e.symbolInfo.session)}class at{constructor(e,t){var i,s;this._sourceTargetBarBuilder=null,this._cache=new Map,this._source=e,this._sourceSession=rt.SessionInfo.fromState(e.session),this._target=t,this._targetSession=rt.SessionInfo.fromState(t.session),this._isResolutionTheSame=C.Interval.isEqual(e.resolution,t.resolution),this._isSessionTheSame=(i=e.symbolInfo,s=t.symbolInfo,i.timezone===s.timezone&&i.session===s.session&&i.session_holidays===s.session_holidays&&i.corrections===s.corrections),this._shouldCorrectTradingDay=C.Interval.isDWM(e.resolution)&&!this._isSessionTheSame}sourceTimeToTargetTime(e){if(this._isSessionTheSame&&this._isResolutionTheSame)return e;if(!ot(this._source)||!ot(this._target))return e;let t=this._cache.get(e);if(void 0===t){let i=1e3*e;if(this._shouldCorrectTradingDay){let e=st().utc_to_cal(this._sourceSession.timezone,i);e=this._sourceSession.spec.correctTradingDay(e);const t=new Date(e);st().set_hms(t,0,0,0,0,this._sourceSession.timezone),i=t.valueOf()}const s=this._sourceTargetBuilder();s.moveTo(i);const r=s.indexOfBar(i);t=s.startOfBar(Math.max(0,r))/1e3,this._cache.set(e,t)}return t}_sourceTargetBuilder(){if(null===this._sourceTargetBarBuilder){const e=this._isSessionTheSame?this._targetSession:(null===nt&&(nt=new rt.SessionInfo("Etc/UTC","24x7")),nt);this._sourceTargetBarBuilder=(0,rt.newBarBuilder)(this._target.resolution,this._targetSession,e)}return this._sourceTargetBarBuilder}}var lt=i(85733),ct=i(68906),ht=i(4676),dt=i(49642);function ut(e,t){return e.codet.code?1:0}class pt{constructor(e){this._convertibleItems=e,this._idsToItems=new Map;for(const t of e)this._idsToItems.set(t.id,t)}convertible(e){return void 0!==this._idsToItems.get(e)}item(e){var t;return null!==(t=this._idsToItems.get(e))&&void 0!==t?t:null}size(){return this._convertibleItems.length}filterConvertible(e,t){const i=this._convertibleItems.filter(function(e,t){return i=>!e.has(i.id)&&t(i.id)}(e,t));return i.sort(ut),i}}class _t{constructor(e){this._allGroups=new Set,this._idToName=new Map,this._idToDescription=new Map,this._groupedUnitIds=new Map,this._groupedUnits=new Map,this._groupById=new Map,this._size=0,this._units=e;for(const t in e)if(e.hasOwnProperty(t)){this._allGroups.add(t), -this._groupedUnitIds.set(t,new Set(e[t].map(e=>e.id))),this._groupedUnits.set(t,e[t]);for(const i of e[t])this._size++,this._idToName.set(i.id,i.name),this._idToDescription.set(i.id,i.description),this._groupById.set(i.id,t)}}unitsChanged(e){return this._units!==e}size(){return this._size}name(e){return this._idToName.get(e)||e}description(e){return this._idToDescription.get(e)||e}unitGroupById(e){return this._groupById.get(e)||null}allGroups(){return new Set(this._allGroups)}unitsByGroups(e){const t=[];return e.forEach(e=>{const i=this._groupedUnits.get(e);void 0!==i&&t.push({name:e,units:i})}),t}convertible(e,t){for(const i of t){const t=this._groupedUnitIds.get(i);if(void 0!==t&&t.has(e))return!0}return!1}}var mt=i(93751);class gt{constructor(e){this._source=null,this._sourcePane=null,this._currentToolSupportsPhantomMode=!1,this._model=e}destroy(){this._source=null,this._sourcePane=null}source(){return this._source}onToolChanged(){this._removeSource();const e=this._model.currentTool();this._currentToolSupportsPhantomMode=(0,f.isLineToolName)(e)&&(0,f.supportsPhantomMode)(e)}onCursorPositionUpdated(){if(!this._currentToolSupportsPhantomMode)return;const e=this._model.crossHairSource();if(this._sourcePane!==e.pane&&this._removeSource(),null===e.pane||!(0,mt.isNumber)(e.index)||!(0,mt.isNumber)(e.price))return void this._removeSource();const t={index:e.index,price:e.price};null!==this._source?this._source.setPoint(0,t):(this._source=this._model.createLineTool(e.pane,t,this._model.currentTool(),void 0,null),this._sourcePane=e.pane)}_removeSource(){null!==this._source&&(this._model.removeSource(this._source),this._source=null,this._sourcePane=null)}}var ft=i(71053),vt=i(73383),St=i(90373),yt=i(30460);class bt{align(e,t,i){let s=e;if(!(0,yt.magnetEnabled)().value())return s;const n=i.mainDataSource();if(null===n)return s;const o=n.model().mainSeries();if(n!==o)return s;const a=o.priceScale(),l=o.bars();if(a.isEmpty()||!l.contains(t))return s;const c=l.valueAt(t);if(null===c)return s;const h=[];null!==o.priceSource()?h.push(o.barFunction()(c)):h.push(c[1],c[2],c[3],c[4]);const d=(0,r.ensure)(o.firstValue()),u=h.map(e=>({y:a.priceToCoordinate(e,d),price:e})),p=a.priceToCoordinate(e,d);u.sort((e,t)=>Math.abs(e.y-p)-Math.abs(t.y-p));const _=u[0];return((0,yt.magnetMode)().value()===St.MagnetMode.StrongMagnet||Math.abs(_.y-p)<50)&&(s=_.price),s}}var wt=i(65862),Ct=i(62443),Pt=i(29892),Tt=i(42759);class xt{constructor(){this._data=null}setData(e){this._data=e}draw(e,t){if(null===this._data)return;const i=t.pixelRatio,s=Math.max(1,Math.floor(i));e.lineWidth=s;const r=Math.ceil(this._data.h*i),n=Math.ceil(this._data.w*i);if(e.save(),e.lineCap="butt",this._data.vertLinesVisible){e.strokeStyle=this._data.vertLinesColor,(0,Pt.setLineStyle)(e,this._data.vertLineStyle);for(const t of this._data.timeMarks){const s=Math.round(t.coord*i);(0,Tt.drawVerticalLine)(e,s,0,r)}}if(this._data.horzLinesVisible){e.strokeStyle=this._data.horzLinesColor,(0,Pt.setLineStyle)(e,this._data.horzLineStyle);for(const t of this._data.priceMarks){ -const s=Math.round(t.coord*i);(0,Tt.drawHorizontalLine)(e,s,0,n)}}e.restore()}hitTest(e){return null}}class It{constructor(e){this._renderer=new xt,this._pane=e}update(){}renderer(){const e=this._pane.defaultPriceScale(),t=this._pane.model().timeScale();if(e.isEmpty()||t.isEmpty())return null;const i=this._pane.model().properties().childs().paneProperties.childs(),s=t.marks(),r={horzLinesVisible:!0,vertLinesVisible:!0,horzLinesColor:i.horzGridProperties.childs().color.value(),vertLinesColor:i.vertGridProperties.childs().color.value(),horzLineStyle:i.horzGridProperties.childs().style.value(),vertLineStyle:i.vertGridProperties.childs().style.value(),priceMarks:e.marks(),timeMarks:null!==s?s:[],w:this._pane.width(),h:this._pane.height()};return this._renderer.setData(r),this._renderer}}class Mt extends Ct.DataSource{id(){return"grid"}paneViews(e){return[new It(e)]}}var Lt=i(97938);class At extends Lt.PriceAxisView{constructor(e,t,i){super(),this._source=e,this._priceScale=t,this._priceProvider=i,this._properties=e.model().properties().childs().scalesProperties}setHitTestData(e){this._hitTestData=e}additionalPadding(e){return 0}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const s=this._priceScale,r=s.mainSource(),n=null!==r?r.firstValue():null;if(!this._isVisible()||s.isEmpty()||null===n)return;const o=this._priceProvider(s);if(null===o)return;i.background=this._bgColor(),i.textColor=this.generateTextColor(i.background);const a=this.additionalPadding(s.fontSize());i.additionalPaddingTop=a,i.additionalPaddingBottom=a,i.coordinate=s.priceToCoordinate(o,n),e.text=s.formatPrice(o,n),e.visible=!0,t.visible=!0,t.hitTestData=this._hitTestData}}const Et={normalBgColor:a.colorsPalette["color-cold-gray-750"],hoveredBgColor:a.colorsPalette["color-cold-gray-600"]},kt={normalBgColor:a.colorsPalette["color-cold-gray-900"],hoveredBgColor:a.colorsPalette["color-cold-gray-650"]};class Dt extends At{additionalPadding(e){return 2/12*e}_isVisible(){return this._properties.childs().showPriceScaleCrosshairLabel.value()&&this._source.visible&&null!==this._source.pane}_bgColor(){return this._getThemedColors().normalBgColor}_updateRendererData(e,t,i){const s=t.visible;super._updateRendererData(e,t,i),this._source.isHovered()?t.backgroung=this._getThemedColors().hoveredBgColor:t.backgroung=void 0,s||(t.visible=s)}_getThemedColors(){return this._source.model().isDark()?Et:kt}}class Vt extends At{_isVisible(){return null!==this._source.measurePane().value()}_bgColor(){return this._properties.childs().axisLineToolLabelBackgroundColorCommon.value()}}var Bt=i(28978),Nt=(i(28296),i(97056));function Rt(e){const t=e.priceScale();return null===t?0:t.isPercentage()||t.isIndexedTo100()?2:1}const Ot=B.enabled("show_context_menu_in_crosshair_if_only_one_item");class Ft extends Bt.PanePriceAxisView{constructor(e,t,i,s,r){super(e,t,s),this._crossHairMenuCachedState=null,this._hasActions=!1,this._tooltipText=null,this._gaOrigin="CH menu",this._crosshairPriceAxisView=e,e.setPaneRendererLabelIcon(0),this._crosshair=t,this._scale=i,this._options=r} -_updateImpl(e,t){super._updateImpl(e,t);const i=this._crosshair.y,s=this._chartModel.properties().childs().scalesProperties.childs().fontSize.value(),r=this._chartModel.timeScale().width(),n=this._crosshair.model().priceAxisRendererOptions(),o=s+2*this._crosshairPriceAxisView.additionalPadding(s)+n.paddingTop+n.paddingBottom,a=o,l=i-o/2,c=r-a,h=this._crosshair.pane,d=this._mainDataSourceOnPane(),u=d&&d.symbolSource(),p=!!u&&(u.isConvertedToOtherCurrency()||u.isConvertedToOtherUnit());if(null!==d){const e=Rt(d),t=d.idForAlert(),i=this._chartModel.isInReplay(),s=this._crossHairMenuCachedState;null!==s&&s.id===t&&s.priceScale===e&&s.isCurrencyOrUnitConverted===p&&s.isInReplay===i||(this._updateTooltipAndActionsAvaliability(d,e,p),this._crossHairMenuCachedState={id:t,priceScale:e,isCurrencyOrUnitConverted:p,isInReplay:i})}const _=null!==d&&(0,le.isActingAsSymbolSource)(d)?d.symbol():null,m=null!==h&&(h.maximized().value()||!h.collapsed().value())&&(Boolean(_)||!1);this._crosshairPriceAxisView.setPaneLabelVisible(m);const g=null!==h&&0!==h.leftPriceScales().length&&m,f=null!==h&&0!==h.rightPriceScales().length&&m,v=r-a/2,S=this._tooltipText?{text:this._tooltipText,rect:{x:v,y:l,w:0,h:0}}:void 0;this._data={left:g,right:f,xl:0,xr:c,y:l,containerWidth:a,containerHeight:o,clickHandler:this._handleClick.bind(this),tooltip:S},this._crosshairPriceAxisView.setHitTestData(this._data)}_priceScale(){return this._scale}_updateTooltipAndActionsAvaliability(e,t,i){this._tooltipText=null,this._hasActions=!1;if(!(1===t))return;this._chartModel.isInReplay();let s=0;let r=0;1!==s||Ot||(this._tooltipText=""),this._crosshairPriceAxisView.setPaneRendererLabelIcon(r),this._hasActions=0!==s}_handleClick(e,t,i){(0,h.trackEvent)(this._gaOrigin,"click");const s=this._mainDataSourceOnPane(),r=null!==s&&(0,le.isActingAsSymbolSource)(s)?s.symbol():null,n={pageX:i.pageX,pageY:i.pageY,clientX:i.clientX,clientY:i.clientY,screenX:i.screenX,screenY:i.screenY,price:this._crosshair.price,symbol:r};u.emit("onPlusClick",n)}_getMenuItems(e){return Promise.resolve([])}_createAlertMenuItems(e){return Promise.resolve([])}_createTradingMenuItems(){return Promise.resolve([])}_createAddHorizontalLineMenuItem(){return[]}_getActionAddAlert(e){return null}_getActionAddHorizontalLine(e){return null}_getValue(e,t){const i=e.priceScale(),s=e.firstValue();if(null===i||null===s)return null;return i.isPercentage()||i.isIndexedTo100()?null:i.coordinateToPrice(t,s)}_formatValue(e,t){return t.formatter().format(e)}_addAlert(e,t){}_addHorizontalLineTool(e,t){}_showContextMenu(e,t,i,s){const n="left"===s;setTimeout(()=>{const t=(0,r.ensureDefined)(this._data),s=n?t.xl:t.xr,o=i.localX-s,a=i.clientX-o,l=i.clientX-o+t.containerWidth;Nt.ContextMenuManager.showMenu(e,{clientX:n?a:l,clientY:i.clientY-t.containerHeight/2,boxHeight:t.containerHeight,attachToXBy:n?"left":"right",attachToYBy:"auto-strict"},void 0,{menuName:"CrosshairMenuView"})})}_mainDataSourceOnPane(){const e=this._crosshair.pane;return null!==e?e.mainDataSource():null}}var Wt=i(43891),Ht=i(71413),zt=i(84346);class Ut{ -constructor(e){this._data=e}hitTest(e){return void 0===this._data.clickHandler?null:new zt.HitTestResult(zt.HitTestResult.CUSTOM,{clickHandler:this._data.clickHandler,tapHandler:this._data.clickHandler})}draw(e,t){const i=t.pixelRatio,s=this._data.vertLinesVisible,r=this._data.horzLinesVisible;if(!s&&!r)return;e.save(),e.lineWidth=Math.max(1,Math.floor(this._data.lineWidth*i)),e.strokeStyle=this._data.color,e.fillStyle=this._data.color,e.lineCap="butt",(0,Pt.setLineStyle)(e,this._data.lineStyle);const n=Math.round(this._data.x*i),o=Math.round(this._data.y*i),a=Math.ceil(this._data.w*i),l=Math.ceil(this._data.h*i);s&&n>=0&&(0,Tt.drawVerticalLine)(e,n,0,l),r&&o>=0&&(0,Tt.drawHorizontalLine)(e,o,0,a),this._data.drawCenter&&(e.beginPath(),e.arc(n,o,Math.round(3*i),0,2*Math.PI,!0),e.fillStyle=this._data.color,e.fill()),e.restore()}}const jt=a.colorsPalette["color-tv-blue-500"];class Gt{constructor(e,t){this._rendererData={},this._renderer=new Ut(this._rendererData),this._source=e,this._pane=t}update(){}renderer(e,t){const i=this._source.selectPointMode().value(),s=this._source.visible&&(this._source.areLinesVisible||i)&&!this._source.linesShouldBeHidden(),n=this._rendererData;if(!s||null===this._pane)return null;const o=this._source.paneForPointSelect(),a=null!==o?this._source.pane===o&&this._pane===o:this._pane===this._source.pane;if(i&&this._source.isOnHoveredChartWidget()&&a){const e=(0,r.ensureNotNull)(this._source.pointToSelect());n.color=this._source.lineColor()||jt,n.lineWidth=1,n.lineStyle=Wt.LINESTYLE_SOLID,n.horzLinesVisible=!0,n.vertLinesVisible=!0,n.drawCenter=!1,"time"===e?n.horzLinesVisible=!1:"price"===e&&(n.vertLinesVisible=!1)}else{const e=this._source.properties(),t=this._source.model().currentTool(),i=(0,Ht.lastMouseOrTouchEventInfo)(),s=i.isTouch&&!i.stylus&&((0,f.isLineToolName)(t)||(0,lt.toolIsMeasure)(t));let r;r=s?jt:e.childs().color.value();const o=e.childs().transparency.value();!s&&o>0&&(r=(0,ct.generateColor)(r,o)),n.color=r,n.horzLinesVisible=this._pane===this._source.pane&&(this._pane.maximized().value()||!this._pane.collapsed().value()),n.vertLinesVisible=!0,n.lineWidth=e.childs().width.value(),n.lineStyle=e.childs().style.value(),n.drawCenter=s&&this._pane===this._source.pane}return n.w=this._pane.width(),n.h=this._pane.height(),n.x=void 0!==this._source.lockedX&&isFinite(this._source.lockedX)&&this._source.lockedX||this._source.x,n.y=this._source.y,this._renderer}}var qt=i(55776);const Yt={backgroundColor:(0,ct.generateColor)(a.colorsPalette["color-tv-blue-500"],70),borderColor:(0,ct.generateColor)(a.colorsPalette["color-tv-blue-500"],20)};class Kt{constructor(e){this._renderer=new qt.RectangleRenderer,this._rectangle=null,this._crosshair=e}update(){const e=this._crosshair.selection();null!==e&&null!==this._crosshair.pane?this._rectangle=this._crosshair.pane.logicalRectToPixels(e):this._rectangle=null}renderer(e,t){if(!this._rectangle)return null;const i={backcolor:Yt.backgroundColor,color:Yt.borderColor,fillBackground:!0,linewidth:1,points:[this._rectangle.min,this._rectangle.max], -extendLeft:!1,extendRight:!1};return this._renderer.setData(i),this._renderer}}var $t=i(62820),Xt=i(26811),Zt=i(97645),Jt=i(92242),Qt=i(67802),ei=i(63300),ti=i(98664),ii=i(94804),si=i(49612);const ri=(0,K.t)("{count} bars"),ni=(0,K.t)("Vol"),oi=new Xt.PercentageFormatter,ai=new Jt.TimeSpanFormatter,li=new Qt.VolumeFormatter,ci=(0,a.getHexColorByName)("color-tv-blue-500"),hi=(0,a.getHexColorByName)("color-ripe-red-400"),di={bgColorPositive:(0,ct.generateColor)(ci,80),bgColorNegative:(0,ct.generateColor)(hi,80),colorPositive:(0,a.getHexColorByName)("color-tv-blue-600"),colorNegative:(0,a.getHexColorByName)("color-ripe-red-400"),labelBgColorPositive:ci,labelBgColorNegative:hi};class ui{constructor(e,t){this._pipFormatter=null,this._lastSymbolInfo=null,this._horzTrenRenderer=new ei.TrendLineRenderer,this._vertTrenRenderer=new ei.TrendLineRenderer,this._bgRenderer=new qt.RectangleRenderer,this._labelRenderer=new ti.TextRenderer,this._p1=null,this._p2=null,this._label=null,this._source=e,this._pane=t}update(e){const[t,i]=this._source.measurePoints();if(void 0===i)return this._p1=null,void(this._p2=null);const s=(0,r.ensureNotNull)(this._source.measurePane().value()),o=t.price,a=i.price,l=i.price-o,c=i.index-t.index,h=(0,$t.forceLTRStr)(""+c),d=(0,r.ensureNotNull)(s.mainDataSource());let u=(0,r.ensureNotNull)(d.formatter()).format(l);if(Math.abs(o)>1e-8){const e=l/Math.abs(o);u+=" ("+oi.format(100*e)+")"}const p=(0,$t.forceLTRStr)(u);this._label=p+"\n"+ri.format({count:h});const _=(0,r.ensureNotNull)(d.firstValue()),m=this._source.model().timeScale().indexToCoordinate(t.index),g=this._source.model().timeScale().indexToCoordinate(i.index),f=s.defaultPriceScale().priceToCoordinate(o,_),v=s.defaultPriceScale().priceToCoordinate(a,_);this._p1=new n.Point(m,f),this._p2=new n.Point(g,v);const S=this._source.model().timeScale().indexToUserTime(t.index),y=this._source.model().timeScale().indexToUserTime(i.index);let b=null;if(null!==S&&null!==y){const e=this._pane.model().mainSeries().symbolInfo();null!==e&&e!==this._lastSymbolInfo&&(this._pipFormatter=new Zt.PipFormatter(e.pricescale,e.minmov,e.type,e.minmove2),this._lastSymbolInfo=e),b=(y.valueOf()-S.valueOf())/1e3}const w=this._pipFormatter?this._pipFormatter.format(l):null,C=null!==w?" , "+w:"",P=null!==b?ai.format(b):null,T=null!==P?", "+(0,$t.startWithLTR)(P):"";this._label=(0,$t.forceLTRStr)(p+C)+"\n"+ri.format({count:h})+T;const x=this._source.measureVolume();Number.isNaN(x)||(this._label+=`\n${ni} ${li.format(x)}`);const I=a=50?si.LineEnd.Arrow:si.LineEnd.Normal};this._horzTrenRenderer.setData(s)}{const e=Math.round(k.x),t=new n.Point(e,this._p1.y),i=new n.Point(e,this._p2.y),s={points:[t,i],color:L,linewidth:1,linestyle:Wt.LINESTYLE_SOLID,extendleft:!1,extendright:!1,leftend:si.LineEnd.Normal,rightend:Math.abs(t.y-i.y)>=50?si.LineEnd.Arrow:si.LineEnd.Normal};this._vertTrenRenderer.setData(s)}const D={x:0,y:10},V=.5*(this._p1.x+this._p2.x),B=this._p2.y,N=new n.Point(V,B),R=(O=(0,r.ensureNotNull)(this._label),{points:[N],text:O,color:"#FFFFFF",horzAlign:"center",vertAlign:"middle",font:M.CHART_FONT_FAMILY,offsetX:D.x,offsetY:D.y,bold:!1,italic:!1,fontsize:12,padding:8,highlightBorder:!1,backgroundColor:A,backgroundTransparency:10,backgroundVertInflate:5,backgroundHorzInflate:5,backgroundRoundRect:4});var O;this._labelRenderer.setData(R);const F=this._labelRenderer.measure(),W=(0,ti.calculateLabelPosition)(F,this._p1,this._p2,D,this._pane.height());this._labelRenderer.setPoints([W])}renderer(){if(null===this._p1||null===this._p2)return null;const e=new ii.CompositeRenderer;return e.append(this._bgRenderer),e.append(this._horzTrenRenderer),e.append(this._vertTrenRenderer),e.append(this._labelRenderer),e}}var pi=i(16282);class _i extends pi.ScaledPaneRenderer{constructor(e){super(),this._data=e}hitTest(e){return null}_drawImpl(e){e.translate(this._data.x-this._data.width/2,this._data.y-this._data.height/2),e.strokeStyle="rgba(153,153,153,.3)",e.lineWidth=2,e.beginPath(),this._drawShackle(e),e.stroke(),e.closePath(),e.strokeStyle="rgba(153,153,153,.7)",e.lineWidth=1,e.beginPath(),e.rect(0,this._data.height-this._data.bodyHeight+.5,this._data.width,this._data.bodyHeight),e.closePath(),e.stroke(),e.translate(0,-1),e.strokeStyle="#777",e.beginPath(),this._drawShackle(e),e.stroke(),e.closePath(),e.fillStyle="rgba(255,255,255,.7)",e.beginPath(),e.rect(1,this._data.height-this._data.bodyHeight+1.5,this._data.width-2,this._data.bodyHeight-2),e.fill(),e.beginPath(),e.rect(.5,this._data.height-this._data.bodyHeight+1,this._data.width-1,this._data.bodyHeight-1),e.stroke(),e.closePath(),e.fillStyle="#777",e.fillRect(this._data.width/2-.5,this._data.height-this._data.bodyHeight/2,1,2)}_drawShackle(e){const t=(this._data.width-3)/2,i=this._data.height-this._data.bodyHeight;e.moveTo(1.5,t),e.arc(this._data.width/2,t,t,Math.PI,2*Math.PI),i>t&&(e.moveTo(1.5,t),e.lineTo(1.5,i),e.moveTo(this._data.width-1.5,t),e.lineTo(this._data.width-1.5,i))}}class mi{constructor(e,t,i){this._horzVisible=!1,this._source=e,this._pane=t,this._axis=i||"x"}update(){}renderer(e,t){const i=this._source.visible&&this._source.areLinesVisible,s=(0,lt.lockTimeAxis)().value(),n=i&&this._horzVisible,o=i||s;if("y"===this._axis&&!n||!o)return null;const a="y"===this._axis?this._pane.width()-4.5:(0,r.ensureDefined)(this._source.lockedX)+1,l="y"===this._axis?this._source.y:this._pane.height()-5.5-1;return new _i({x:a,y:l,width:9,height:11,bodyHeight:7})}}var gi=i(49483),fi=i(76166),vi=i(14445),Si=i(57626);class yi extends vi.DataWindowView{constructor(e){super(), -this._invalidated=!0,this._dateItem=new vi.DataWindowItem((0,K.t)("Date"),""),this._timeItem=new vi.DataWindowItem((0,K.t)("Time"),""),this._model=e,this._items.push(this._dateItem),this._items.push(this._timeItem)}update(){this._invalidated=!0}items(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._items}_updateImpl(){const e=this._model.mainSeries().isDWM();if(this._timeItem.setVisible(!e),this._timeItem.setValue(Si.notAvailable),this._dateItem.setValue(Si.notAvailable),this._model.timeScale().isEmpty())return;let t=this._model.crossHairSource().appliedIndex();if(!(0,mt.isNumber)(t)){const e=this._model.mainSeries().data().last();if(null===e)return;t=e.index}const i=this._model.timeScale().indexToUserTime(t);null!==i&&(this._dateItem.setValue(this._model.dateFormatter().format(i)),e||this._timeItem.setValue(this._model.timeFormatter().format(i)))}}var bi=i(85578);class wi extends bi.TimeAxisView{constructor(e,t,i=!1){super(e),this._indexProvider=t,this._highlighted=i,this._properties=e.properties().childs().scalesProperties}_getBgColor(){const e=this._model.isDark();return this._highlighted?this._properties.childs().axisLineToolLabelBackgroundColorCommon.value():e?a.colorsPalette["color-cold-gray-750"]:a.colorsPalette["color-cold-gray-900"]}_getIndex(){return this._model.crossHairSource().visible?this._indexProvider():null}_isVisible(){return this._properties.childs().showTimeScaleCrosshairLabel.value()}}var Ci=i(34081);const Pi={menuEnabled:!1,menuForMainSourceOnly:!1,disableTradingMenuActions:!1,disableDrawHorizLineMenuAction:!1};class Ti extends Ct.DataSource{constructor(e,t,i){super(),this.pane=null,this.price=NaN,this.index=NaN,this.visible=!0,this.areLinesVisible=!0,this.x=NaN,this.y=NaN,this._measurePane=new(G())(null),this._startMeasurePoint=null,this._endMeasurePoint=null,this._lastValidMeasurePoint=null,this._isOnHoveredChartWidget=!1,this._selectPointMode=new(G())(!1),this._selectionPane=null,this._selectionView=new Kt(this),this._selectionStartPoint=null,this._measurePaneView=null,this._timeLockPaneView=null,this._priceAxisViews=new Map,this._panePriceAxisViews=new Map,this._startMeasurePriceAxisViews=new Map,this._endMeasurePriceAxisViews=new Map,this._originX=NaN,this._originY=NaN,this._subscribed=!1,this._movedDelegate=new(U()),this._pointSelectedDelegate=new(U()),this._requestedPoint=null,this._paneForRequestedPoint=null,this._selectLineColor=null,this._volumeCalculator=null,this._model=e,this._options=Object.assign({},Pi,i||{}),this._linesShouldBeHidden=this._model.readOnly(),this._dataWindowView=new yi(e),this.setSelectionEnabled(!1);const s=e=>t=>t===(0,r.ensureNotNull)(this._measurePane.value()).defaultPriceScale()?e():null;this._currentPosPriceProvider=e=>{const t=(0,r.ensureNotNull)(this.pane);if(e===t.defaultPriceScale())return this.price;const i=(0,r.ensureNotNull)(t.defaultPriceScale().mainSource()).firstValue();if(null===i)return null;const s=t.defaultPriceScale().priceToCoordinate(this.price,i),n=(0,r.ensureNotNull)(e.mainSource()).firstValue() -;return null===n?null:e.coordinateToPrice(s,n)},this._startMeasurePriceProvider=s(()=>(0,r.ensureNotNull)(this._startMeasurePoint).price),this._endMeasurePriceProvider=s(()=>(0,r.ensureNotNull)(this._lastMeasurePoint()).price),this._properties=t;this._timeAxisView=new wi(e,()=>this.appliedIndex(),!1),this._startMeasureTimeAxisView=new wi(e,()=>(0,r.ensureNotNull)(this._startMeasurePoint).index,!0),this._endMeasureTimeAxisView=new wi(e,()=>(0,r.ensureNotNull)(this._lastMeasurePoint()).index,!0),e.readOnly()||lt.cursorTool.subscribe(e=>this.areLinesVisible="arrow"!==e,{callWithLast:!0})}destroy(){null!==this._volumeCalculator&&this._volumeCalculator.destroy(),this._measurePane.setValue(null)}moved(){return this._movedDelegate}originX(){return this._originX}originY(){return this._originY}saveOriginCoords(e,t){this._originX=e,this._originY=t}clearOriginCoords(){this._originX=NaN,this._originY=NaN}currentPoint(){return new n.Point(this.x,this.y)}model(){return this._model}appliedIndex(){return Number.isFinite(this.lockedIndex)?this.lockedIndex:this.index}startMeasurePoint(){return this._startMeasurePoint||null}endMeasurePoint(){return this._endMeasurePoint||null}measureVolume(){if(null===this._volumeCalculator)return NaN;const[e,t]=this.measurePoints();return void 0===t?NaN:this._volumeCalculator.volume(e.index,t.index)}measurePane(){return this._measurePane.readonly()}startMeasuring(e,t){this._startMeasurePoint=e,this._measurePane.setValue(t),t.containsMainSeries()&&((0,r.assert)(null===this._volumeCalculator),this._volumeCalculator=new Ci.SeriesTimeRangeVolumeCalculator(this.model().mainSeries())),this._model.updatePane(t)}finishMeasure(e){this._endMeasurePoint=e}clearMeasure(){this._measurePane.setValue(null),delete this._startMeasurePoint,delete this._endMeasurePoint,delete this._lastValidMeasurePoint,this._model.lightUpdate(),null!==this._volumeCalculator&&(this._volumeCalculator.destroy(),this._volumeCalculator=null)}measurePoints(){const e=[(0,r.ensureNotNull)(this._startMeasurePoint)],t=this._lastMeasurePoint();return null!==t&&e.push(t),e}startSelection(e){this._selectionStartPoint=this.currentLogicalPoint(),this._selectionPane=e}clearSelection(){this._selectionStartPoint=null,this._selectionPane=null}selection(){return this._selectionStartPoint?{p1:this._selectionStartPoint,p2:this.currentLogicalPoint()}:null}currentLogicalPoint(){return{index:this.appliedIndex(),price:this.price}}selectPointMode(){return this._selectPointMode}lineColor(){return this._selectLineColor}cancelRequestSelectPoint(){this._selectPointMode.value()&&this._setSelectPointModeState(!1)}requestSelectPoint(e){(0,r.assert)(!this._selectPointMode.value(),"Point already requested");const{pointType:t,pane:i,lineColor:s=null}=e;i&&((0,r.assert)(-1!==this._model.panes().indexOf(i),"Chartmodel doesn't contains specified pane"),this._paneForRequestedPoint=i,this._model.panesCollectionChanged().subscribe(this,this._paneCollectionChanged)),this._selectLineColor=s,this._requestedPoint=t,this._setSelectPointModeState(!0)}onPointSelected(){ -return this._pointSelectedDelegate}trySelectCurrentPoint(){const e=(0,r.ensureNotNull)(this._requestedPoint);if(!this._model.mainSeries().bars().contains(this.index)&&"price"!==e)return;const t=(0,r.ensureNotNull)(this.pane);if(this._paneForRequestedPoint&&this._paneForRequestedPoint!==t)return;let i,s;if("price"===e||(i=this._model.timeScale().indexToTimePoint(this.index),null!==i)){if("time"!==e){const e=t.mainDataSource();if(null===e)return;const i=e.firstValue(),r=e.priceScale();if(null===i||null===r)return;s=r.coordinateToPrice(this.y,i)}this._setSelectPointModeState(!1),this._pointSelectedDelegate.fire({time:i,price:s},t)}}isOnHoveredChartWidget(){return this._isOnHoveredChartWidget}setOnHoveredChartWidget(e){this._isOnHoveredChartWidget=e}clearPosition(){this.visible=!1,this.index=NaN,this.price=NaN,this.x=NaN,this.y=NaN,this.pane=null,this.clearOriginCoords()}setPosition(e,t,i){return this._subscribed||(this._model.mainSeries().onRestarted().subscribe(this,this.clearMeasure),this._subscribed=!0),this.setLockedPosition(i),this.visible=!0,this._tryToUpdateViews(e,t,i)}setLinesShouldBeHidden(e){this._linesShouldBeHidden=e}linesShouldBeHidden(){return this._linesShouldBeHidden}handleContextMenuEvent(e){this._selectPointMode.value()&&this._setSelectPointModeState(!1)}properties(){return this._properties}priceAxisViews(e,t){const i=null===this._requestedPoint||"time"!==this._requestedPoint||!this._isOnHoveredChartWidget,s=[];return this.pane===e&&i&&s.push(this._createPriceAxisViewOnDemand(this._priceAxisViews,this._panePriceAxisViews,e,t,this._currentPosPriceProvider,Dt,!0)[0]),this._startMeasurePoint&&s.push(this._createPriceAxisViewOnDemand(this._startMeasurePriceAxisViews,null,e,t,this._startMeasurePriceProvider,Vt)[0]),this._lastMeasurePoint()&&s.push(this._createPriceAxisViewOnDemand(this._endMeasurePriceAxisViews,null,e,t,this._endMeasurePriceProvider,Vt)[0]),s}timeAxisViews(){const e=[],t=null===this._requestedPoint||"price"!==this._requestedPoint||!this._isOnHoveredChartWidget;return!this._linesShouldBeHidden&&(this.visible||(0,lt.lockTimeAxis)().value())&&t&&e.push(this._timeAxisView),this._startMeasurePoint&&e.push(this._startMeasureTimeAxisView),this._lastMeasurePoint()&&e.push(this._endMeasureTimeAxisView),e}paneViews(e){if(void 0===e)return null;const t=[new Gt(this,e)];if(e===this._selectionPane&&t.push(this._selectionView),e===this._measurePane.value()&&(null===this._measurePaneView&&(this._measurePaneView=new ui(this,e)),this._measurePaneView.update((0,O.dataSourceChangeEvent)(this.id())),t.push(this._measurePaneView)),fi.addPlusButtonProperty.value()){const i=e===this.pane,s=!gi.CheckMobile.any()||window.screen.width>=320,r=lt.tool.value(),n=(0,f.isLineToolName)(r),o=null!==this._model.lineBeingEdited()||null!==this._model.lineBeingCreated()||this._model.sourcesBeingMoved().length>0||null!==this._model.customSourceBeingMoved()||(0,lt.toolIsMeasure)(r);if(i&&this._isOnHoveredChartWidget&&!this._selectPointMode.value()&&s&&!n&&!o){const i=e.mainDataSource();if(null!==i){const s=i.priceScale() -;if(null!==s){const i=this._createPriceAxisViewOnDemand(this._priceAxisViews,this._panePriceAxisViews,e,s,this._currentPosPriceProvider,Dt,!0)[1];null!==i&&t.push(i)}}}}return(0,lt.lockTimeAxis)().value()&&(null===this._timeLockPaneView&&(this._timeLockPaneView=new mi(this,e)),t.push(this._timeLockPaneView)),t}dataWindowView(){return this._dataWindowView}updateAllViews(e){this._priceAxisViews.forEach(t=>{t.forEach(t=>t.update(e))}),this._panePriceAxisViews.forEach(t=>{t.forEach(t=>t.update(e))}),this._startMeasurePoint&&(this._startMeasurePriceAxisViews.forEach(t=>{t.forEach(t=>t.update(e))}),this._startMeasureTimeAxisView.update(e)),this._lastMeasurePoint()&&(this._endMeasurePriceAxisViews.forEach(t=>{t.forEach(t=>t.update(e))}),this._endMeasureTimeAxisView.update(e)),this._timeAxisView.update(e),this._selectionView.update(),this._dataWindowView.update()}setLockedPosition(e){delete this.lockedIndex,delete this.lockedX,e!==this._measurePane.value()&&(0,lt.lockTimeAxis)().value()&&(this.lockedIndex=this._model.timeScale().points().roughIndex(lt.lockTimeAxisTime.value()),null!==this.lockedIndex&&(this.lockedX=this._model.timeScale().indexToCoordinate(this.lockedIndex)))}isMenuEnabled(){return this._options.menuEnabled}isHoveredEnabled(){return fi.addPlusButtonProperty.value()}isHovered(){return this._model.hoveredSource()===this}pointToSelect(){return this._requestedPoint}paneForPointSelect(){return this._paneForRequestedPoint}_lastMeasurePoint(){return this._endMeasurePoint?this._endMeasurePoint:(null!==this.pane&&this._measurePane.value()===this.pane&&(this._lastValidMeasurePoint={price:this._model.magnet().align(this.price,this.index,this.pane),index:this.index}),this._lastValidMeasurePoint||null)}_createPriceAxisViewOnDemand(e,t,i,s,n,o,a=!1){let l=e.get(i),c=null!==t?t.get(i):void 0;void 0===l&&(l=new Map,e.set(i,l),this._options.menuEnabled&&null!==t&&(c=new Map,t.set(i,c)),a&&i.onDestroyed().subscribe(this,()=>this._onPaneDestroyed(i)));let h=l.get(s);if(void 0===h){if(h=new o(this,s,n),l.set(s,h),void 0!==c){const e=new Ft(h,this,s,this._model,this._options);c.set(s,e)}a&&s.lastSourceRemoved().subscribe(this,()=>this._onPriceScaleCleared(s))}let d=null;return void 0!==c&&(d=(0,r.ensureDefined)(c.get(s))),[h,d]}_onPaneDestroyed(e){e.onDestroyed().unsubscribeAll(this),this._priceAxisViews.delete(e),this._panePriceAxisViews.delete(e),this._startMeasurePriceAxisViews.delete(e),this._endMeasurePriceAxisViews.delete(e)}_onPriceScaleCleared(e){e.lastSourceRemoved().unsubscribeAll(this),this._priceAxisViews.forEach(t=>t.delete(e)),this._panePriceAxisViews.forEach(t=>t.delete(e)),this._startMeasurePriceAxisViews.forEach(t=>t.delete(e)),this._endMeasurePriceAxisViews.forEach(t=>t.delete(e))}_tryToUpdateViews(e,t,i){return!!this._tryToUpdateData(e,t,i)&&(this.updateAllViews((0,O.dataSourceChangeEvent)(this.id())),this._movedDelegate.fire({index:this.index,price:this.price}),!0)}_tryToUpdateData(e,t,i){const s=this.x,n=this.y,o=this.price,a=this.index,l=this.pane,c=this._priceScaleByPane(i);if(this.index=e, -this.x=isNaN(e)?NaN:this._model.timeScale().indexToCoordinate(e),null!==c&&null!==i){this.pane=i,this.price=t;const e=(0,r.ensureNotNull)(i.mainDataSource()).firstValue();this.y=null===e?NaN:c.priceToCoordinate(t,e)}else this.pane=null,this.price=NaN,this.y=NaN;return s!==this.x||n!==this.y||a!==this.index||o!==this.price||l!==this.pane}_priceScaleByPane(e){return e&&!e.defaultPriceScale().isEmpty()?e.defaultPriceScale():null}_setSelectPointModeState(e){e||(this._requestedPoint=null,this._selectLineColor=null,this._paneForRequestedPoint&&(this._paneForRequestedPoint=null,this._model.panesCollectionChanged().unsubscribe(this,this._paneCollectionChanged))),lt.isPointSelectedNow.setValue(e),this._selectPointMode.setValue(e),this._model.lightUpdate()}_paneCollectionChanged(e){const t=this._paneForRequestedPoint;null!==t&&-1===e.indexOf(t)&&this.cancelRequestSelectPoint()}}var xi=i(56972),Ii=i(40236),Mi=i(67396),Li=i(52418);const Ai=(0,$.getLogger)("Chart.ChartModel");function Ei(e,t){const i=e.indexOf(t);return-1!==i&&(e.splice(i,1),!0)}function ki(e){var t,i;for(let s=e.length;s--;){const r=e[s].dataSources();for(let e=r.length;e--;)null===(t=r[e].dataWindowView())||void 0===t||t.update();const n=e[s].priceDataSources();for(let e=n.length;e--;)null===(i=n[e].legendView())||void 0===i||i.update()}}const Di={isSnapshot:!1,readOnly:!1,watermarkEnabled:!0,shiftVisibleRangeOnNewBar:!0,currencyConversionEnabled:!1,unitConversionEnabled:!1,countdownEnabled:!0,lastPriceAnimationEnabled:!0,onWidget:!1,hideIdeas:!1};class Vi{constructor(e,t,i,r,n,o,a,c,h,d){this._onRearrangePanes=new(U()),this._lineToolsGroupModel=new tt,this._sourcesBeingMoved=[],this._activeItemBeingMoved=null,this._lineBeingEdited=null,this._linePointBeingEdited=null,this._linePointBeingChanged=null,this._customSourceBeingMovedHitTestData=null,this._customSourceBeingMoved=null,this._dataSourceCollectionChanged=new(U()),this._sourceProperitesChanged=new(U()),this._sourceZOrderChanged=new(U()),this._symbolSourceResolved=new(U()),this._symbolSourceResolvingActive=new(G())(!1),this._adjustForDividendsAvailability=new(G())(0),this._adjustForDividendsEnabled=new(G())(!1),this._sessions=null,this._currentTool="",this._lineBeingCreated=null,this._paneBeingCreatedLineOn=null,this._lineCancelled=new(U()),this._phantomSourceContainer=new gt(this),this._destroyed=!1,this._isSettingsExternalPosition=!1,this._isTimeScrolling=!1,this._magnet=new bt,this._scrollingState=null,this._modelIntervals=[],this._rendererOptionsProvider=new L(this),this._cachedStudiesMaxOffset=0,this._panes=[],this._tagsChanged=new(U()),this._strategySources=[],this._strategySourcesChange=new(U()),this._activeStrategySource=new(G())(null),this._paneCollapsingAvailable=new(G())(!1),this._panesCollectionChanged=new(U()),this._scrollEnabled=B.enabled("chart_scroll"),this._zoomEnabled=B.enabled("chart_zoom"),this._isScalesResetAvailableChanged=new(U()),this._isScalesResetAvailable=!1,this._esdWatcher=null,this._alertsWatcher=null,this._hoveredSource=null,this._hoveredSourceChanged=new(U()), -this._lastHoveredHittestData=null,this._lastSelectedHittestData=null,this._topmostCustomSources=[],this._fgCustomSources=[],this._bgCustomSources=[],this._allCustomSources=[],this._customSourcesMap=new Map,this._multiPaneSources=[],this._showLegendProperty=new(x()),this._id=(0,X.guid)(),this._chartSaveTime=null,this._availableCurrenciesList=null,this._availableCurrencies=new pt([]),this._availableUnitsObject=null,this._availableUnits=new _t({}),this._shouldBeSavedEvenIfHidden=!1,this._watchedThemeSpawn=l.watchedTheme.spawn(),this._gradientColorsCache=null,this._recalcVRStudiesParams={},this._recalcColorStudiesParams={},this._recalcVisibleRangeStudiesImplDebounced=(0,s.default)(this._recalcVisibleRangeStudiesImpl.bind(this,this._recalcVRStudiesParams),500),this._recalcColorStudiesImplDebounced=(0,s.default)(this._recalcColorStudiesImpl.bind(this,this._recalcColorStudiesParams),250),this._width=0,this._resetScales=new(U()),this._chartThemeLoaded=new(U()),this._selection=new S,this._selectedSourceChanged=new(U()),this._symbolSourceCollectionChanged=new(U()),this._gridSource=new Mt,this._syncPointCache=new Map,this._lastAppliedTimeRange=null,this._clearSelection=()=>{this._lastSelectedHittestData=null,this._selection.clear()},this._removeSourceFromSelection=e=>{this._selection.remove(e)},this._addSourceToSelection=(e,t)=>{const i=this._selection.isSelected(e);i&&this._lastSelectedHittestData===t||e&&!e.isSelectionEnabled()||(this._lastSelectedHittestData=t||null,i||this._selection.add(e))},this._recalcSymbolResolvingActive=()=>{for(const e of this._panes)if(e.symbolSourceResolvingActive().value())return void this._symbolSourceResolvingActive.setValue(!0);this._symbolSourceResolvingActive.setValue(!1)},this._recalcAdjustForDividendsAvailibility=()=>{var e,t,i,s;if(this._symbolSourceResolvingActive.value())return void this._adjustForDividendsAvailability.setValue(0);const r=this.mainSeries();switch(null!==(t=null===(e=r.symbolInfo())||void 0===e?void 0:e.allowed_adjustment)&&void 0!==t?t:"none"){case"dividends":return void this._adjustForDividendsAvailability.setValue(2);case"splits":return void this._adjustForDividendsAvailability.setValue(1);case"any":return void this._adjustForDividendsAvailability.setValue(3)}for(const e of this.symbolSources().filter(le.isActingAsSymbolSource)){if(e.symbolHibernated().value()||e===r)continue;if("any"===(null!==(s=null===(i=e.symbolInfo())||void 0===i?void 0:i.allowed_adjustment)&&void 0!==s?s:"none"))return void this._adjustForDividendsAvailability.setValue(3)}this._adjustForDividendsAvailability.setValue(0)},this._recalcAdjustForDividendsEnabled=()=>{switch(this._adjustForDividendsAvailability.value()){case 2:return void this._adjustForDividendsEnabled.setValue(!0);case 0:case 1:return void this._adjustForDividendsEnabled.setValue(!1)}this._adjustForDividendsEnabled.setValue(this.mainSeries().properties().childs().dividendsAdjustment.value())},this._recalcPaneCollapsingAvailable=e=>{let t=this._panes.filter(e=>!e.collapsed().value()).length -;0===t&&e&&this._panes.length>0&&(this._panes[0].collapsed().setValue(!1),t=1),this._paneCollapsingAvailable.setValue(t>1)},this._chartApi=e,this._invalidateHandler=t,this._undoModel=o,this._properties=i,this._options=(0,_e.merge)((0,_e.clone)(Di),c),this._collapsedWV=h,this._isAutoSaveEnabled=d,this._studiesMetaInfoRepository=n,this._readOnly=this._options.readOnly,this._isSnapshot=this._options.isSnapshot,this._chartSaveTime=(new Date).valueOf(),this._backgroundColor=new(G())(this._getBackgroundColor()),this._backgroundTopColor=new(G())(this._getBackgroundColor(!0)),this._properties.childs().paneProperties.childs().background.subscribe(this,this._updateBackgroundColor),this._properties.childs().paneProperties.childs().backgroundType.subscribe(this,this._updateBackgroundColor),this._properties.childs().paneProperties.childs().backgroundGradientStartColor.subscribe(this,this._updateBackgroundColor),this._properties.childs().paneProperties.childs().backgroundGradientEndColor.subscribe(this,this._updateBackgroundColor),this._backgroundColor.subscribe(this.recalcColorStudies.bind(this,!1)),this._backgroundTopColor.subscribe(this.recalcColorStudies.bind(this,!1)),this._watchedThemeSpawn.subscribe(this._updateBackgroundColor.bind(this)),this._symbolSourceResolvingActive.subscribe(this._recalcAdjustForDividendsAvailibility),this.setStudiesMetaData(this._studiesMetaInfoRepository.getInternalMetaInfoArray(),this._studiesMetaInfoRepository.getMigrations()),(0,lt.init)();const u=this._readOnly?new(x())((0,D.defaults)("chartproperties.paneProperties.crossHairProperties")):this._properties.childs().paneProperties.childs().crossHairProperties;this.m_crossHairSource=new Ti(this,u,this._options.crossHair),this.m_crossHairSource.selectPointMode().subscribe(e=>{if(e&&this.lineBeingCreated()){const e=lt.tool.value();this.cancelCreatingLine(),lt.tool.setValue(e)}}),this._tagsChanged=new(U());const p=new P.DefaultProperty("chartproperties.mainSeriesProperties");p.addExclusion("minTick"),p.addExclusion("priceAxisProperties.lockScale"),p.addExclusion("priceAxisProperties.percentage"),p.addExclusion("priceAxisProperties.indexedTo100"),p.addExclusion("priceAxisProperties.isInverted"),p.addExclusion("priceAxisProperties.log"),p.addExclusion("priceAxisProperties.logDisabled"),p.addExclusion("priceAxisProperties.percentageDisabled"),p.addExclusion("priceAxisProperties.autoScaleDisabled"),p.merge(i.childs().mainSeriesProperties.state()),this._timeScale=new $e(this,this._options.timeScale);const _={countdownEnabled:this._options.countdownEnabled,lastPriceAnimationEnabled:this._options.lastPriceAnimationEnabled};this.m_mainSeries=new xi.Series(this,p,_,r),this.m_mainSeries.onStyleChanged().subscribe(this._timeScale,this._timeScale.invalidateVisibleBars);const m=()=>this.fullUpdate();this.m_mainSeries.properties().childs().showCountdown.subscribe(this,()=>{this.m_mainSeries.updateAllViews((0,O.dataSourceChangeEvent)(this.m_mainSeries.id())),m()}),(0,Y.currencyUnitVisibilityProperty)().subscribe(this,m), -this._timeScale.visibleBarsStrictRangeChanged().subscribe(this.m_mainSeries,this.m_mainSeries.clearHighLowPriceCache),this._timeScale.visibleBarsStrictRangeChanged().subscribe(this.m_mainSeries,this.m_mainSeries.clearAveragePriceCache),this.createPane(void 0,{axisProperties:p.childs().priceAxisProperties.state(["autoScale"])}),this._adjustForDividendsAvailability.subscribe(this._recalcAdjustForDividendsEnabled),this.mainSeries().properties().childs().dividendsAdjustment.subscribe(this,this._recalcAdjustForDividendsEnabled),this._recalcAdjustForDividendsEnabled(),this._boundUpdateStudiesMaxOffset=this._updateStudiesMaxOffset.bind(this),this.mainSeries().dataEvents().seriesTimeFrame().subscribe(this,(e,t,i,s)=>{if(null!==this._lastAppliedTimeRange&&null!==i&&s&&(0,vt.areEqualTimeFrames)(this._lastAppliedTimeRange.range,i)){const e=this.appliedTimeFrame().value();null!==e&&!this._lastAppliedTimeRange.actual&&(0,vt.areEqualTimeFrames)(this._lastAppliedTimeRange.range,e.val)&&this.appliedTimeFrame().setValue(null),this._lastAppliedTimeRange=null}})}setStudiesMetaData(e,t){this._studiesMetaData=e,this._studyVersioning=new(b())(this._studiesMetaData,t)}restart(){this._chartApi.switchTimezone(this.timezone()),this._timeScale.reset(),this.m_mainSeries.restart();for(const e of this.dataSources())e.restart&&e!==this.m_mainSeries&&e.restart();this.sessions().restart()}version(){return 3}collapsed(){return this._collapsedWV}chartSaveTime(){return this._chartSaveTime}setChartSaveTime(e){this._chartSaveTime=e}destroy(){this._phantomSourceContainer.destroy(),this._hoveredSourceChanged.destroy(),null!==this._watermarkSource&&(this._watermarkSource.destroy(),this._watermarkSource=null),Array.from(this._customSourcesMap.keys()).forEach(this._removeCustomSource,this),(0,r.assert)(0===this._topmostCustomSources.length),(0,r.assert)(0===this._fgCustomSources.length),(0,r.assert)(0===this._bgCustomSources.length),(0,r.assert)(0===this._allCustomSources.length),(0,r.assert)(0===this._customSourcesMap.size),null!==this._esdWatcher&&(this._esdWatcher.destroy(),this._esdWatcher=null),null!==this._alertsWatcher&&(this._alertsWatcher.destroy(),this._alertsWatcher=null),this._properties.childs().paneProperties.childs().background.unsubscribeAll(this),this._properties.childs().paneProperties.childs().backgroundType.unsubscribeAll(this),this._properties.childs().paneProperties.childs().backgroundGradientEndColor.unsubscribeAll(this),this._properties.childs().paneProperties.childs().backgroundGradientStartColor.unsubscribeAll(this),this._watchedThemeSpawn.destroy(),this._lastHoveredHittestData=null,this._lastSelectedHittestData=null,(0,Y.currencyUnitVisibilityProperty)().unsubscribeAll(this),this._destroyed=!0}undoModel(){return this._undoModel}onData(e){switch(e.method){case"timescale_update":{const t=e.params;this._updateTimeScale({index:t.index,zoffset:t.zoffset,values:t.changes,indexDiffs:t.index_diff,baseIndex:t.baseIndex,marks:t.marks,clearFlag:t.clear});break}case"timescale_completed":{const t=Boolean(e.params[0]) -;this._timeScale.onTimeScaleCompleted(t);break}}}addStrategySource(e,t){1!==t&&-1===this._strategySources.indexOf(e)&&(this._strategySources.push(e),this._strategySourcesChange.fire(t),this.setActiveStrategySource(e))}removeStrategySource(e,t){if(1===t)return;const i=this._strategySources.indexOf(e);if(-1!==i){if(this._strategySources.splice(i,1)[0]===this._activeStrategySource.value()&&this.unsetActiveStrategySource(),this._strategySources.length>0){const e=this._strategySources[this._strategySources.length-1];this.setActiveStrategySource(e)}this._strategySourcesChange.fire(t)}}setActiveStrategySource(e){-1!==this._strategySources.indexOf(e)&&this._activeStrategySource.setValue(e)}unsetActiveStrategySource(){this._activeStrategySource.setValue(null)}activeStrategySource(){return this._activeStrategySource}strategySources(){return this._strategySources}strategySourcesChange(){return this._strategySourcesChange}setScrollEnabled(e){this._scrollEnabled=e}scrollEnabled(){return this._scrollEnabled}setZoomEnabled(e){this._zoomEnabled=e}zoomEnabled(){return this._zoomEnabled}zoomToViewport(e,t,i,s,r){this.setTimeViewport(e,t);let n=Math.min(i,s),o=Math.max(i,s);const a=r.defaultPriceScale();a.isPercentage()||a.setMode({autoScale:!1}),a.isLog()&&(n=a.priceToLogical(n),o=a.priceToLogical(o)),a.setPriceRange(new ae.PriceRange(n,o)),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.invalidate(this._paneInvalidationMask(r,q.InvalidationLevel.Light)),this._setScalesResetAvailable(!0)}setTimeViewport(e,t){const i=this.appliedTimeFrame().value();null!==this._lastAppliedTimeRange&&null!==i&&(0,vt.areEqualTimeFrames)(this._lastAppliedTimeRange.range,i.val)&&!this._lastAppliedTimeRange.actual||(this.timeScale().zoomToBarsRange(e,t),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.recalcVisibleRangeStudies(),this.lightUpdate())}onTagsChanged(){return this._tagsChanged}canZoomIn(){return this._timeScale.canZoomIn()&&this._zoomEnabled}canZoomOut(){return this._timeScale.canZoomOut()&&this._zoomEnabled}onPaneTagsChanged(){this._tagsChanged.fire()}panesCollectionChanged(){return this._panesCollectionChanged}dataSourceCollectionChanged(){return this._dataSourceCollectionChanged}symbolSourceCollectionChanged(){return this._symbolSourceCollectionChanged}symbolSourceResolved(){return this._symbolSourceResolved}symbolSourceResolvingActive(){return this._symbolSourceResolvingActive}adjustForDividendsAvailability(){return this._adjustForDividendsAvailability}adjustForDividendsEnabled(){return this._adjustForDividendsEnabled}paneCollapsingAvailable(){return this._paneCollapsingAvailable}sourcePropertiesChanged(){return this._sourceProperitesChanged}sourceZOrderChanged(){return this._sourceZOrderChanged}updateCrosshairPositionByOriginCoords(){const e=this.crossHairSource(),t=e.pane;let i=e.originX(),s=e.originY();if(Number.isFinite(i)||(i=e.x,s=e.y),null!==t&&Number.isFinite(i)&&Number.isFinite(s)){const n=this._timeScale.coordinateToVisibleIndex(i);let o=NaN;const a=t.defaultPriceScale();if(!a.isEmpty()){const e=(0, -r.ensureNotNull)(t.mainDataSource()).firstValue();null!==e&&(o=a.coordinateToPrice(s,(0,r.ensureNotNull)(e)))}this.crossHairSource().setPosition(n,o,t)&&e.isOnHoveredChartWidget()&&this._syncCrosshair()}}zoomTime(e,t,i){if(!this._zoomEnabled)return;const s=this.timeScale();if(s.isEmpty()||0===t)return;const r=s.width();e=Math.max(1,Math.min(e,r-2)),s.zoom(e,t,i),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.lightUpdate(),this.recalcVisibleRangeStudies(),this._setScalesResetAvailable(!0)}linePointBeingEdited(){return this._linePointBeingEdited}activeItemBeingMoved(){return this._activeItemBeingMoved}linePointBeingChanged(){return this._linePointBeingChanged}updateAllPaneViews(e){for(const t of this._panes)t.updateAllViews(e);for(const t of this.barsMarksSources())t.updateAllViews(e)}dataSources(){const e=[this.crossHairSource()];for(const t of this._panes)for(const i of t.dataSources())e.push(i);return e}priceDataSources(){const e=[];for(const t of this._panes)for(const i of t.priceDataSources())e.push(i);return e}symbolSources(){const e=[];for(const t of this._panes)for(const i of t.symbolSources())e.push(i);return e}selection(){return this._selection}selectionMacro(e){const t=this.selection().allSources();e({removeSourceFromSelection:this._removeSourceFromSelection,addSourceToSelection:this._addSourceToSelection,clearSelection:this._clearSelection,selection:this.selection.bind(this)});const i=(0,g.subtract)(t,this.selection().allSources()),s=(0,g.subtract)(this.selection().allSources(),t);s.concat(t).forEach(e=>e.updateAllViews((0,O.selectionChangeEvent)())),i.forEach(e=>{const t=(0,f.isLineTool)(e)&&e.hasAlert.value()&&e.getAlertSync();t&&t.set("selected",!1)}),s.forEach(e=>{const t=(0,f.isLineTool)(e)&&e.hasAlert&&e.hasAlert.value()&&e.getAlertSync();t&&t.set("selected",!0)}),this.lightUpdate(),(i.length>0||s.length>0)&&this._selectedSourceChanged.fire()}onSelectedSourceChanged(){return this._selectedSourceChanged}checkLineToolSelection(){const e=this.selection().allSources();this._selection.checkLineToolSelection(),e.length!==this.selection().allSources().length&&this._selectedSourceChanged.fire()}lineToolsGroupModel(){return this._lineToolsGroupModel}restoreLineToolsGroups(e){this._lineToolsGroupModel=tt.fromState(this,e)}realignLineTools(e){for(const t of this._panes)(void 0===e||t.hasDataSource(e))&&t.realignLineTools(e)&&this._dataSourceCollectionChanged.fire(t)}isSnapshot(){return this._isSnapshot}onWidget(){return this._options.onWidget}hideIdeas(){return this._options.hideIdeas}updateSource(e){const t=this._invalidationMaskForSource(e);null!==t&&this.invalidate(t)}updateSourcePriceScale(e){const t=this._invalidationMaskForSourcePriceScale(e);null!==t&&this.invalidate(t)}updatePane(e){this.invalidate(this._paneInvalidationMask(e))}replaceStudyStub(e,t){const i=this.paneForSource(e);if(null===i)return!1;const s=e.priceScale(),r=e.zorder(),n=e.ownerSource();return this.paneForSource(e)===i?i.replaceSource(e,t,s):(i.insertDataSource(t,s,r),this.removeSource(e)),t.setOwnerSource(n), -this.dataSources().forEach(i=>{i.ownerSource()===e&&i.setOwnerSource(t)}),t.start(),this.recalculatePane(i,(0,O.dataSourceChangeEvent)(t.id())),this.fullUpdate(),!0}insertStudyStub(e){const t=this.mainSeries(),i=(0,r.ensureNotNull)(this.paneForSource(t)),s=new w.StudyStub(this,null,e),n=i.createPriceScaleAtPosition("overlay");return i.addDataSource(s,n,!1),this.recalculatePane(i,(0,O.dataSourceChangeEvent)(s.id())),this.fullUpdate(),s}removeStudyStub(e){const t=this.dataSourceForId(e);return null===t?(Ai.logNormal("StudyStub id="+e+" is not found in chart model"),!1):(this.removeSource(t),!0)}setHoveredSource(e,t=null){const i=this._hoveredSource!==e;if(!i&&this._lastHoveredHittestData===t)return;this._lastHoveredHittestData=t;let s=null;if(this._hoveredSource){this._hoveredSource.updateAllViews((0,O.selectionChangeEvent)()),s=new q.InvalidationMask(q.InvalidationLevel.Cursor);const e=this._invalidationMaskForSource(this._hoveredSource,q.InvalidationLevel.Light);null!==e&&s.merge(e)}if(this._hoveredSource=e,e){e.updateAllViews((0,O.selectionChangeEvent)()),s||(s=new q.InvalidationMask(q.InvalidationLevel.Cursor));const t=this._invalidationMaskForSource(e,q.InvalidationLevel.Light);null!==t&&s.merge(t)}s&&this.invalidate(s),i&&this._hoveredSourceChanged.fire(e)}properties(){return this._properties}disconnect(){this.sessions().stop();for(const e of this.dataSources())e.disconnect&&e.disconnect();this._timeScale.disconnect()}gridSource(){return this._gridSource}hoveredSource(){return this._hoveredSource}hoveredSourceChanged(){return this._hoveredSourceChanged}lastHittestData(){return this._lastHoveredHittestData}lastSelectedHittestData(){return this._lastSelectedHittestData}syncTimeWithModel(e,t){const i=this.mainSeries().syncModel();if(null===i)return;const s=1e3*this.createSyncPoint(e,i.syncSourceTarget()).sourceTimeToTargetTime(t/1e3),r=(0,it.get_timezone)(this.timezone());let n=(0,it.utc_to_cal)(r,s);this.mainSeries().isDWM()&&(n=i.getSession().spec.correctTradingDay(n),(0,it.set_hms)(n,0,0,0,0,(0,it.get_timezone)("Etc/UTC"))),this._gotoTimeImpl(n.getTime(),{centerIfVisible:!1})}gotoTime(e){return this._gotoTimeImpl(e,{centerIfVisible:!0})}recalculatePane(e,t){null==e||e.recalculate(t)}recalculateAllPanes(e){this._panes.forEach(t=>t.recalculate(e)),this.updateAllPaneViews(e),this.crossHairSource().updateAllViews(e)}gotoTimeRange(e,t){const i=this.timeScale(),s=i.tickMarks(),n=this.mainSeries();if(void 0===s.minIndex)return;let o=e,a=t;const l=n.symbolInfo();if(null!==l){let i=this.properties().childs().timezone.value();"exchange"===i&&(i=l.timezone);const s=(0,it.get_timezone)(i),r=(0,it.utc_to_cal)(s,e),c=(0,it.utc_to_cal)(s,t);if(n.isDWM()){const e=(0,it.get_timezone)("Etc/UTC");(0,it.set_hms)(r,0,0,0,0,e),(0,it.set_hms)(c,0,0,0,0,e)}o=r.getTime(),a=c.getTime()}const c=(0,r.ensureDefined)(s.maxIndex),h=(0,r.ensureNotNull)(s.indexToTime((0,r.ensureDefined)(s.minIndex))).valueOf();if(h-o<=0&&h-a<=0){const e=(e,t)=>e(0,r.ensureNotNull)(s.indexToTime(e)).valueOf(),n=(0, -g.lowerboundExt)(t,o,e,s.nearestIndex(o),c),l=(0,g.lowerboundExt)(t,a,e,s.nearestIndex(a),c);if(null!==this._lastAppliedTimeRange&&(this._lastAppliedTimeRange.actual=!1),n!==l)i.zoomToBarsRange(n,l),this.lightUpdate();else{this.startScrollTime(0);const e=((0,r.ensureNotNull)(i.logicalRange()).left()-n+1)*i.barSpacing();this.scrollTimeTo(e),this.endScrollTime()}}else{const i={type:"time-range",from:e/1e3,to:t/1e3};this._lastAppliedTimeRange={range:i,actual:!0},n.loadDataTo(i)}}paneForSource(e){if(!(0,m.isDataSource)(e))return Array.from(this._customSourcesMap.values()).includes(e)?this.paneForSource(this.mainSeries()):null;for(let t=this._panes.length-1;t>=0;t--)if(this._panes[t].hasDataSource(e))return this._panes[t];return e instanceof ht.BarsMarksContainer?this.paneForSource(this.mainSeries()):null}mainPane(){for(const e of this._panes)if(e.isMainPane())return e;throw new Error("Main pane is not found")}lastPane(){return this._panes[this._panes.length-1]}removeSource(e,t){this.selectionMacro(t=>t.removeSourceFromSelection(e)),this._hoveredSource===e&&(this._hoveredSource=null,this._lastHoveredHittestData=null),this._sourcesBeingMoved.includes(e)&&(this._sourcesBeingMoved=this._sourcesBeingMoved.filter(t=>t!==e),this._sourcesBeingMoved.length||(this._activeItemBeingMoved=null)),e===this._lineBeingEdited&&(this._lineBeingEdited=null,lt.isToolEditingNow.setValue(!1)),e===this._lineBeingCreated&&(this._lineBeingCreated=null,lt.isToolCreatingNow.setValue(!1)),e.stop&&e.stop();const i=this.detachSource(e),s=this.mainSeries().priceScale();return(0,H.isStudy)(e)&&(0,le.isActingAsSymbolSource)(e)&&e.priceScale()===s&&s.isPercentage()&&1===s.seriesLikeSources().filter(le.isActingAsSymbolSource).length&&s.setMode({percentage:!1}),this.fullUpdate(),this._invalidateBarColorerCaches(),(0,H.isStudy)(e)&&((0,u.emit)("study_event",e.id(),"remove"),e.isChildStudy()&&e.parentSource().unsetChild(e),e.maxOffset().unsubscribe(this._boundUpdateStudiesMaxOffset)),e.destroy&&e.destroy(),(0,f.isLineTool)(e)&&(e.removeAlert(),(0,u.emit)("drawing_event",e.id(),"remove")),i}allStudies(e){const t=e?e=>(0,H.isStudy)(e)&&!0:H.isStudy;return this._getAllSources(t)}findNonOverlayStudyWithGroupingKey(e,t){const i=void 0!==t?[t]:this._panes;for(const t of i){const i=t.dataSources().find(i=>(0,H.isStudy)(i)&&i.metaInfo().groupingKey===e&&!t.isOverlay(i));if(void 0!==i)return{pane:t,study:i}}return null}movePaneUp(e){this.movePane(e,e-1)}movePaneDown(e){this.movePane(e,e+1)}movePane(e,t){const i=this._panes[e];this._panes.splice(e,1),this._panes.splice(t,0,i),this._panesCollectionChanged.fire(this._panes),this._onRearrangePanes.fire(),this.invalidate(q.InvalidationMask.panesOrder())}backgroundColor(){return this._backgroundColor}backgroundTopColor(){return this._backgroundTopColor}backgroundColorAtYPercentFromTop(e){const t=this.backgroundColor().value(),i=this.backgroundTopColor().value();if(t===i)return t;if(e=Math.max(0,Math.min(100,Math.round(100*e))), -null===this._gradientColorsCache||this._gradientColorsCache.topColor!==i||this._gradientColorsCache.bottomColor!==t)this._gradientColorsCache={topColor:i,bottomColor:t,colors:new Map};else{const t=this._gradientColorsCache.colors.get(e);if(void 0!==t)return t}const s=(0,ct.gradientColorAtPercent)(i,t,e/100);return this._gradientColorsCache.colors.set(e,s),s}backgroundCounterColor(){const e=this.backgroundColor().value();if(void 0===this._lastBackgroundColor||void 0===this._lastOriginalColor||e!==this._lastBackgroundColor){const t=(0,o.rgbToBlackWhiteString)((0,o.parseRgb)(e),150);this._lastBackgroundColor=e,this._lastOriginalColor="black"===t?"white":"black"}return this._lastOriginalColor}isDark(){return"white"===this.backgroundCounterColor()}defaultResolutions(){return this.chartApi().defaultResolutions()}availableCurrencies(){const e=this._getAvailableCurrencies();return e.length!==this._availableCurrencies.size()&&(this._availableCurrencies=new pt(e)),this._availableCurrencies}currencyConversionEnabled(){return this._options.currencyConversionEnabled}availableUnits(){const e=this._getAvailableUnits();return this._availableUnits.unitsChanged(e)&&(this._availableUnits=new _t(e)),this._availableUnits}unitConversionEnabled(){return this._options.unitConversionEnabled}resetDeferredStudies(){ve.instance(this).reset()}isJustClonedChart(){return this._undoModel.isJustClonedChart()}studyTemplate(e,t,i){const s={panes:[],version:this.version()};for(const e of this.panes())s.panes.push(e.state(!0,!1,!0));const r=this.mainSeries();return e&&(s.symbol=r.symbol(),this.currencyConversionEnabled()&&i&&(s.currency=r.currency()),this.unitConversionEnabled()&&i&&(s.unit=r.unit())),t&&(s.interval=r.interval()),s}restoreLineToolState(e,t,i){e.restorePoints(t.points,t.indexes||[]),e.properties().merge(t.state),e.restoreData&&e.restoreData(t),e.linkKey().setValue(t.linkKey||null),e.createServerPoints(),this.fullUpdate();const s=e.linkKey().value();null!==s&&i&&(0,lt.restoreLineToolState)({model:this,linkKey:s,state:t})}preferences(){return(0,Mi.preferencesByWhiteList)(this,this.mainSeries())}restoreTheme(e,t,i){e.mainSourceProperties.hollowCandleStyle||(e.mainSourceProperties.hollowCandleStyle=e.mainSourceProperties.candleStyle),this._undoModel.chartLoadTheme(e,t,i)}onResetScales(){return this._resetScales}startMovingSources(e,t,i,s,n,o){this._sourcesBeingMoved=e,this._activeItemBeingMoved=i;let a=!1;if(this._sourcesBeingMoved.forEach(e=>{!a&&(0,H.isStudy)(e)&&(a=!0);const l=(0,r.ensureNotNull)(this.paneForSource(e)),c=(0,f.isLineTool)(e),h=c&&e.linkKey().value();if(!1!==h&&null!==h&&s.has(h)&&c&&e.isFixed()){const t=(0,r.ensureDefined)(s.get(h)),a={screen:this._percentPositionToPoint(t,l)};e.startMoving(a,i,n,o)}else e.startMoving(t,i,n,o);const d=this._paneInvalidationMask(l,q.InvalidationLevel.Light);this.invalidate(d)}),!o){const s=e.filter(f.isLineTool).filter(e=>e.linkKey().value()&&e.isSynchronizable()).map(e=>e.linkKey().value());if(s.length&&t.logical){const o=this.externalTimeStamp(t.logical.index),a={linkKeys:s,model:this, -symbol:this.mainSeries().symbol(),point:{price:t.logical.price,timeStamp:o},activeItem:null!==i?i:void 0,envState:n,pointPositionPercents:new Map};e.forEach(e=>{if((0,f.isLineTool)(e)){const i=e.linkKey().value();if(i&&e.isSynchronizable()&&e.isFixed()){const s=(0,r.ensureNotNull)(this.paneForSource(e));a.pointPositionPercents.set(i,this._pointToPercentPosition((0,r.ensureDefined)(t.screen),s))}}}),(0,lt.startMovingLineTool)(a)}}lt.isToolMovingNow.setValue(!0),a&<.isStudyEditingNow.setValue(!0)}moveSources(e,t,i,s){if(this._sourcesBeingMoved.filter(e=>!e.isLocked||!e.isLocked()).forEach(n=>{const o=(0,f.isLineTool)(n)?n.linkKey().value():null;if(null!==o&&t.has(o)){const e=(0,r.ensureNotNull)(this.paneForSource(n)),a=(0,r.ensureDefined)(t.get(o)),l={screen:this._percentPositionToPoint(a,e)};n.move(l,this._activeItemBeingMoved,i,s)}else n.move(e,this._activeItemBeingMoved,i,s)}),this.lightUpdate(),!s&&e.logical){const t=this._sourcesBeingMoved.filter(f.isLineTool).filter(e=>e.isSynchronizable()&&!!e.linkKey().value()).map(e=>e.linkKey().value()),s=this.externalTimeStamp(e.logical.index),n={linkKeys:t,model:this,point:{price:e.logical.price,timeStamp:s},envState:i,pointPositionPercents:new Map};this._sourcesBeingMoved.filter(f.isLineTool).forEach(t=>{if(t.linkKey().value()&&t.isSynchronizable()&&t.isFixed()){const i=(0,r.ensureNotNull)(this.paneForSource(t));n.pointPositionPercents.set(t.linkKey().value(),this._pointToPercentPosition((0,r.ensureDefined)(e.screen),i))}}),(0,lt.moveLineTool)(n)}}endMovingSources(e,t,i){const s=this._sourcesBeingMoved.map(s=>{const n=(0,r.ensureNotNull)(this.paneForSource(s)),o=s.endMoving(e,t,i),a=this._paneInvalidationMask(n,q.InvalidationLevel.Light);return a.invalidateAll(q.InvalidationLevel.Light),this.invalidate(a),o}),n=this._sourcesBeingMoved.filter(f.isLineTool).filter(e=>e.isSynchronizable()&&!!e.linkKey().value()).map(e=>e.linkKey().value()),o=this._sourcesBeingMoved.filter(f.isLineTool).filter(e=>e.isSynchronizable()&&!!e.linkKey).map(e=>{const t={points:e.normalizedPoints(),interval:this.mainSeries().interval()};return e.isFixed()&&(t.pointPositionPercents=e.calcPositionPercents()),t});n.length&&(0,lt.finishMovingLineTool)({linkKeys:n,model:this,finalStates:o,changes:s}),this._sourcesBeingMoved=[],this._activeItemBeingMoved=null,lt.isToolMovingNow.setValue(!1),lt.isStudyEditingNow.setValue(!1)}sourcesBeingMoved(){return this._sourcesBeingMoved}setMovingCustomSource(e,t){this._customSourceBeingMoved=e,this._customSourceBeingMovedHitTestData=null!==t?{beingMoved:!1,...t}:null}processingCustomSourceMove(){null!==this._customSourceBeingMovedHitTestData&&(this._customSourceBeingMovedHitTestData.beingMoved=!0)}customSourceMovingHitTestData(){return this._customSourceBeingMovedHitTestData}customSourceBeingMoved(){return null!==this._customSourceBeingMovedHitTestData&&this._customSourceBeingMovedHitTestData.beingMoved?this._customSourceBeingMoved:null}width(){return this._width}setWidth(e,t){this._width=e,this._timeScale.setWidth(e,t);for(const t of this._panes)t.setWidth(e) -;this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.recalcVisibleRangeStudies()}setPaneHeight(e,t){e.setHeight(t),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.lightUpdate()}isScalesResetAvailableChanged(){return this._isScalesResetAvailableChanged}isScalesResetAvailable(){return this._isScalesResetAvailable}panes(){return this._panes}paneForId(e){return this._panes.find(t=>t.id()===e)||null}createPane(e,t,i){const s=this._undoModel.chartWidget();s.isMaximizedPane()&&s.toggleMaximizePane(null);const r=this._properties.childs().paneProperties;t&&r.merge(t);const n=new Le(this._timeScale,r,this,i);return void 0!==e?this._panes.splice(e,0,n):this._panes.push(n),n.onTagsChanged().subscribe(this,Vi.prototype.onPaneTagsChanged),n.dataSourcesCollectionChanged().subscribe(this,()=>this._dataSourceCollectionChanged.fire(n)),n.symbolSourceCollectionChanged().subscribe(this,()=>this._onSymbolSourceCollectionChanged(n)),n.sourcePropertiesChanged().subscribe(this,e=>this._sourceProperitesChanged.fire(n,e)),n.sourceZOrderChanged().subscribe(this,e=>this._sourceZOrderChanged.fire(n,e)),n.symbolSourceResolved().subscribe(this,e=>this._symbolSourceResolved.fire(n,e)),n.symbolSourceResolvingActive().subscribe(this._recalcSymbolResolvingActive),n.collapsed().subscribe(this._recalcPaneCollapsingAvailable),this._recalcPaneCollapsingAvailable(),this._panesCollectionChanged.fire(this._panes),this.invalidate(q.InvalidationMask.panesOrder()),n}removePane(e){const t=this._undoModel.chartWidget();t.isMaximizedPane()&&t.toggleMaximizePane(null);const i=e;i.destroy();const s=this._panes.indexOf(i);-1!==s&&(this._panes.splice(s,1),e.dataSourcesCollectionChanged().unsubscribeAll(this),e.symbolSourceCollectionChanged().unsubscribeAll(this),e.sourcePropertiesChanged().unsubscribeAll(this),e.onTagsChanged().unsubscribeAll(this),e.symbolSourceResolved().unsubscribeAll(this),i.symbolSourceResolvingActive().unsubscribe(this._recalcSymbolResolvingActive),e.collapsed().unsubscribe(this._recalcPaneCollapsingAvailable),this._recalcPaneCollapsingAvailable(!0));this.crossHairSource().pane===e&&this.clearCurrentPosition(),this._panesCollectionChanged.fire(this._panes),this.invalidate(q.InvalidationMask.panesOrder())}changePanesHeight(e,t){if(this._panes.length<2)return;(0,r.assert)(e>=0&&ee+t.stretchFactor(),0),n=this._panes.reduce((e,t)=>e+t.height(),0),o=n-30*(this._panes.length-1);t=Math.min(o,Math.max(30,t));const a=s/n,l=i.height();i.setStretchFactor(t*a);let c=t-l,h=this._panes.length-1;for(const e of this._panes)if(e!==i){const t=Math.min(o,Math.max(30,e.height()-c/h));c-=e.height()-t,h-=1;const i=t*a;e.setStretchFactor(i)}this.fullUpdate()}clearCurrentPosition(){const e=this.crossHairSource();e.clearPosition(),(0,r.ensureNotNull)(e.dataWindowView()).update(),ki(this._panes),this.invalidate(q.InvalidationMask.cursor());const t=this._undoModel.chartWidget();t.chartWidgetCollection().syncCrosshair(null,t.id()), -this._phantomSourceContainer.onCursorPositionUpdated()}setAndSaveCurrentPosition(e,t,i,s){this.crossHairSource().saveOriginCoords(e,t),this.setCurrentPosition(e,t,i,s)}setCurrentPosition(e,t,i,s){let n=NaN;const o=this._timeScale.coordinateToVisibleIndex(e),a=i.defaultPriceScale();let l=null;!a.isEmpty()&&Number.isFinite(t)&&(l=(0,r.ensureNotNull)(i.mainDataSource()).firstValue(),null!==l&&(n=a.coordinateToPrice(t,l)));const c=this.crossHairSource(),h=c.selectPointMode().value(),d=this.currentTool(),u=this.mainSeries(),p=h||lt.isStudyEditingNow.value(),_=this._lineBeingCreated||this._lineBeingEdited||(0,f.isLineToolName)(d)||(0,lt.toolIsMeasure)(d)||p;!this._isSettingsExternalPosition&&_&&(n=this._magnet.align(n,o,i),null!==l&&c.saveOriginCoords(c.originX(),a.priceToCoordinate(n,l)));let m=null;if(isNaN(n)||(m=i),this._isTimeScrolling){if(!this._isSettingsExternalPosition&&h){const e=u.bars().firstIndex(),t=u.bars().lastIndex();if(null!==e&&null!==t){const s=Math.min(Math.max(o,e),t);s!==o&&this._setCorrectedPositionToCrosshair(s,n,l,i)}}else c.setPosition(c.index,n,m);return}c.setOnHoveredChartWidget(!0),c.setPosition(o,n,m),(0,r.ensureNotNull)(c.dataWindowView()).update(),ki(this._panes);const g=u.syncModel();if(this.crossHairSource().startMeasurePoint()||this._lineBeingCreated?this.lightUpdate():this.invalidate(q.InvalidationMask.cursor()),this._lineBeingCreated){const e=this._lineBeingCreated.linkKey().value();if(!this._isSettingsExternalPosition){const t=this._lineBeingCreated.setLastPoint({index:o,price:n},s);if(this._lineBeingCreated.updateAllViews((0,O.dataSourceChangeEvent)(this._lineBeingCreated.id())),t.price===n&&t.index===o||this._setCorrectedPositionToCrosshair(t.index,t.price,l,i),g&&e){const i=this._timeScale.points().roughTime(t.index,g.projectTime.bind(g));(0,lt.setLineToolLastPoint)({model:this,linkKey:e,point:{timeStamp:(0,r.ensureNotNull)(i),price:t.price}})}}}if(!this._isSettingsExternalPosition&&null!==this._lineBeingEdited&&null!==this._linePointBeingEdited){const e={index:o,price:n};this.changeLinePoint(e,s);const t=this._lineBeingEdited.alignCrossHairToAnchor(this._linePointBeingEdited)?this._lineBeingEdited.getPoint(this._linePointBeingEdited):e;null!==t&&this._setCorrectedPositionToCrosshair(t.index,t.price,l,i)}if(!this._isSettingsExternalPosition&&p){const e=u.bars().firstIndex(),t=u.bars().lastIndex();if(null!==e&&null!==t){const s=Math.min(Math.max(o,e),t);s!==o&&this._setCorrectedPositionToCrosshair(s,n,l,i)}}this._syncCrosshair(s)}setExternalPosition(e,t){let i;const s=this.crossHairSource();if(s.setOnHoveredChartWidget(!1),null!==e&&(0,_e.isNumber)(e.timeStamp)){const t=this.mainSeries().syncModel();if(t){const s=this.createSyncPoint(e.syncSourceTarget,t.syncSourceTarget()).sourceTimeToTargetTime(e.timeStamp);i=this._timeScale.points().roughIndex(s,t.distance.bind(t))}}if(null!==e&&null!=i&&Number.isFinite(i)){this._isSettingsExternalPosition=!0;const n=(0,r.ensureNotNull)(this.paneForSource(this.mainSeries())),o=this._timeScale.indexToCoordinate(i),a=(0, -r.ensureNotNull)(n.mainDataSource()).firstValue();if(null!==a){let i=NaN;void 0!==e.price&&Number.isFinite(e.price)&&(i=this.mainSeries().priceScale().priceToCoordinate(e.price,a)),s.clearOriginCoords(),this.setCurrentPosition(o,i,n,t)}return s.setOnHoveredChartWidget(!1),void(this._isSettingsExternalPosition=!1)}s.clearPosition(),(0,r.ensureNotNull)(s.dataWindowView()).update(),ki(this._panes),this.invalidate(q.InvalidationMask.cursor())}startScaleTime(e){this._timeScale.startScale(e)}scaleTimeTo(e){this._timeScale.scaleTo(e),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.lightUpdate(),this._setScalesResetAvailable(!0)}endScaleTime(){this._timeScale.endScale(),this.lightUpdate(),this.recalcVisibleRangeStudies()}resetTimeScale(){this._timeScale.restoreDefault(),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.recalcVisibleRangeStudies(),this.lightUpdate(),this._resetScales.fire(),this._setScalesResetAvailable(!1)}startScalePrice(e,t,i){e.startScalePrice(t,i)}scalePriceTo(e,t,i){e.scalePriceTo(t,i),this.mainSeries().priceScale().isLockScale()?this.lightUpdate():this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light)),this._setScalesResetAvailable(!0)}endScalePrice(e,t){e.endScalePrice(t),this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light))}startTwoPointsScalePrice(e,t,i,s){t.startTwoPointsScale(i,s)}twoPointsScalePriceTo(e,t,i,s){t.twoPointsScale(i,s),this.invalidate(this._paneInvalidationMask(e)),this._setScalesResetAvailable(!0)}endTwoPointsScalePrice(e,t){t.endTwoPointsScale(),this.invalidate(this._paneInvalidationMask(e))}resetPriceScale(e,t){this._setScalesResetAvailable(!1),e.resetPriceScale(t),this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light))}restorePriceScaleState(e,t,i){e.restorePriceScaleState(t,i),this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light))}currentTool(){return this._currentTool}setCurrentTool(e){this._currentTool!==e&&((0,f.isLineToolName)(e)&&this.selectionMacro(e=>{e.clearSelection()}),this._currentTool=e,this._phantomSourceContainer.onToolChanged())}detachSource(e){const t=this.paneForSource(e);return!!t&&(t.removeDataSource(e),t.isEmpty()?(this._lineBeingCreated&&t===this._paneBeingCreatedLineOn&&this.cancelCreatingLine(),this.removePane(t),!0):(this.fullUpdate(),!1))}onRearrangePanes(){return this._onRearrangePanes}finishLineTool(e){const t=e.linkKey().value();(0,lt.drawOnAllCharts)().value()&&null!==t&&e.isSynchronizable()&&(0,lt.finishLineTool)({linkKey:t,model:this})}startChangingLinetool(e,t,i,s,n){this._lineBeingEdited=e,this._linePointBeingChanged=t||null,this._linePointBeingEdited=void 0===i?null:i,this._lineBeingEdited.startChanging(i,t,n),lt.isToolEditingNow.setValue(!0);const o=(0,r.ensureNotNull)(this.paneForSource(e));this._lineBeingEdited.startDragPoint&&void 0!==i&&void 0!==t&&this._lineBeingEdited.startDragPoint(i,t),n||void 0===i||void 0===t||this._lineBeingEdited.setPoint(i,t,s,n),this._lineBeingEdited.updateAllViews((0,O.dataSourceChangeEvent)(this._lineBeingEdited.id())) -;const a=this._paneInvalidationMask(o,q.InvalidationLevel.Light);this.invalidate(a);const l=e.linkKey().value();if(l&&e.isSynchronizable()&&void 0!==i&&void 0!==t){const e=(0,r.ensureNotNull)(this.externalTimeStamp(t.index));(0,lt.startChangingLineTool)({linkKey:l,model:this,symbol:this.mainSeries().symbol(),point:{price:t.price,timeStamp:e},pointIndex:i,envState:s||null})}}createLineTool(e,t,i,s,o,a,l){if((0,r.assert)((0,f.isLineToolName)(i),"Cannot create unknown line tool: "+i),s){const e={...Li.intervalsVisibilitiesDefaults},t=s.childs().intervalsVisibilities.state();(0,_e.merge)(e,null!=t?t:{});const r=s.state();r.intervalsVisibilities=e,s=(0,f.createLineToolProperties)(i,r,this)}const c=(0,f.createLineTool)(i,this,s,null,void 0,l);if("LineToolExecution"!==i){const e="LineToolIcon"===i?c.properties().childs().icon.value().toString(16).toUpperCase():void 0;(0,h.trackEvent)("drawings","Study_Drawing_"+i,e)}const d=!c.linkKey().value()&&!o;a=(0,r.ensureDefined)(a||(0,r.ensureNotNull)(e.mainDataSource())),s||(0,f.prepareLineToolPropertiesByOwnerSource)(c.properties(),a),c.setOwnerSource(a);const u=a.priceScale();if(e.addDataSource(c,u,!1),(0,lt.drawOnAllCharts)().value()){const e=c.isSynchronizable()?o||(0,X.randomHash)():null;c.linkKey().setValue(e)}else c.linkKey().setValue(o);let p;if(c.isFixed()){const i=(0,r.ensureNotNull)((0,r.ensureNotNull)(e.mainDataSource()).firstValue()),s=this._timeScale.indexToCoordinate(t.index),o=(0,r.ensureNotNull)(u).priceToCoordinate(t.price,i);p=c.addFixedPoint(new n.Point(s,o))}else p=c.addPoint(t);return p||(this._lineBeingCreated=c,this._paneBeingCreatedLineOn=e,lt.isToolCreatingNow.setValue(!0)),d&&c.enableCurrentIntervalVisibility(),this.fullUpdate(),c}endChangingLinetool(e,t){const i=(0,r.ensureNotNull)(this._lineBeingEdited),s=i.endChanging(!1,e,t);this._lineBeingEdited=null,lt.isToolEditingNow.setValue(!1),this._linePointBeingEdited=null,this._linePointBeingChanged=null,this.lightUpdate();const n={points:i.normalizedPoints(),interval:this.mainSeries().interval()},o=i.linkKey().value();null!==o&&i.isSynchronizable()&&!t&&(0,lt.finishChangingLineTool)({model:this,linkKey:o,symbol:this.mainSeries().symbol(),finalState:n,changes:s})}continueCreatingLine(e,t,i,s){const n=(0,r.ensureNotNull)(this._lineBeingCreated),o=n.addPoint(e,t,i);n.updateAllViews((0,O.dataSourceChangeEvent)(n.id()));const a=new q.InvalidationMask(q.InvalidationLevel.Light);return o&&(this._paneBeingCreatedLineOn=null,this._lineBeingCreated=null,lt.isToolCreatingNow.setValue(!1)),this.invalidate(a),o}cancelCreatingLine(){if(!this._lineBeingCreated)return;const e=this._lineBeingCreated;this.removeSource(this._lineBeingCreated),this._lineBeingCreated=null,this._lineCancelled.fire(),lt.isToolCreatingNow.setValue(!1),(0,lt.drawOnAllCharts)().value()&&e.isSynchronizable()&&(0,lt.cancelLineTool)({model:this})}lineBeingCreated(){return this._lineBeingCreated}paneBeingCreatedLineOn(){return this._paneBeingCreatedLineOn}lineCancelled(){return this._lineCancelled}isPhantomLine(e){ -return this._phantomSourceContainer.source()===e}changeLinePoint(e,t,i){const s=(0,r.ensureNotNull)(this._lineBeingEdited),n=(0,r.ensureNotNull)(this._linePointBeingEdited);let o=e.price,a=e.index;if(s.setPoint(n,e,t,i),!i){const t=s.alignCrossHairToAnchor(n)?s.getPoint(n):e;null!==t&&(a=t.index,o=t.price)}s.updateAllViews((0,O.dataSourceChangeEvent)(s.id())),this.lightUpdate();const l=s.linkKey().value();if(!i&&null!==l&&s.isSynchronizable()){const e=(0,r.ensureNotNull)(this._linePointBeingChanged),i={indexesChanged:a!==e.index,pricesChanged:o!==e.price},c=s.getChangePointForSync(n);if(null!==c){const e=this.externalTimeStamp(a);null!==e&&(o=c.price,(0,lt.changeLineTool)({linkKey:l,model:this,symbol:this.mainSeries().symbol(),point:{price:o,timeStamp:e},envState:t,changes:i}))}}}changeLinePoints(e,t,i){const s=e.points(),n=e.linkKey().value();!i&&n&&e.isSynchronizable()&&t.forEach((t,i)=>{const o=s[i],a=o.price!==t.price,l=o.index!==t.index;if(e.getChangePointForSync(i)){const e=(0,r.ensureNotNull)(this.externalTimeStamp(t.index));(0,lt.changeLineTool)({linkKey:n,model:this,symbol:this.mainSeries().symbol(),point:{price:t.price,timeStamp:e},changes:{pricesChanged:a,indexesChanged:l}})}}),e.setPoints(t),e.updateAllViews((0,O.dataSourceChangeEvent)(e.id())),this.lightUpdate()}startScrollTime(e){this._timeScale.startScroll(e),this._isTimeScrolling=!0}scrollTimeTo(e){this._timeScale.scrollTo(e),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.lightUpdate(),this._setScalesResetAvailable(!0)}endScrollTime(){this._timeScale.endScroll(),this.lightUpdate(),this.recalcVisibleRangeStudies(),this._isTimeScrolling=!1}startScrollPrice(e,t,i){e.startScrollPrice(t,i)}scrollPriceTo(e,t,i){e.scrollPriceTo(t,i),this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light))}endScrollPrice(e,t){e.endScrollPrice(t),this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light))}addCustomSource(e,t,i=_.CustomSourceLayer.Foreground){this._customSourcesMap.has(e)&&Ai.logWarn(`Attempt to add the same custom source multiple time "${e}"`),Ai.logNormal(`Adding custom source "${e}"`);const s=t(e,this);switch(i){case _.CustomSourceLayer.Background:this._bgCustomSources.push(s);break;case _.CustomSourceLayer.Foreground:this._fgCustomSources.push(s);break;case _.CustomSourceLayer.Topmost:this._topmostCustomSources.push(s);break;default:throw new Error("Unknown custom sources layer "+i)}this._allCustomSources.push(s),this._customSourcesMap.set(e,s),this.lightUpdate()}removeCustomSource(e){this._removeCustomSource(e),this.lightUpdate()}hasCustomSource(e){return this._customSourcesMap.has(e)}customSourceForName(e){return this._customSourcesMap.get(e)||null}customSourceName(e){let t=null;return this._customSourcesMap.forEach((i,s)=>{i===e&&(t=s)}),t}customSources(e){switch(e){case _.CustomSourceLayer.Background:return this._bgCustomSources;case _.CustomSourceLayer.Foreground:return this._fgCustomSources;case _.CustomSourceLayer.Topmost:return this._topmostCustomSources;default:return this._allCustomSources}} -addMultiPaneSource(e){this._multiPaneSources.push(e),this.lightUpdate()}removeMultiPaneSource(e){const t=this._multiPaneSources.indexOf(e);-1===t?Ai.logWarn("Attempt to remove multi-pane source which does not exist in the model"):this._multiPaneSources.splice(t,1),this.lightUpdate()}multiPaneSources(e){return this._multiPaneSources.filter(t=>!e.hasDataSource(t))}dateTimeFormatter(){return this._dateTimeFormatter}dateFormatter(){return this._dateFormatter}timeFormatter(){return this._timeFormatter}sessions(){return(0,r.ensureNotNull)(this._sessions)}createSessions(e){(0,r.assert)(null===this._sessions,"Sessions are already created"),this.addCustomSource("sessions",(t,i)=>(this._sessions=new W(t,i,e),this._sessions.start(),this._sessions),_.CustomSourceLayer.Background)}createPrePostMarket(e){this.addCustomSource("prePostMarket",(t,i)=>new PrePostMarket(t,i,e))}theme(){const e=this.properties().childs().paneProperties.state();delete e.topMargin,delete e.bottomMargin;const t=this.mainSeries().state().state;t&&(delete t.symbol,delete t.interval,delete t.currencyId,delete t.unitId);const i={mainSourceProperties:t,sessions:this.sessions().properties().state(),chartProperties:{paneProperties:e,scalesProperties:this.properties().childs().scalesProperties.state()},version:this.version()};return i.version=this.version(),i}onChartThemeLoaded(){return this._chartThemeLoaded}chartThemeLoaded(){this._chartThemeLoaded.fire()}state(e,t,i,s){var r;const n=this.publishedChartsTimelineSource(),o=this.properties().childs(),a=o.tradingProperties.state(),l={panes:this._panes.map(r=>r.state(!0,e,!1,t,i,s)),timeScale:this._timeScale.state(e),chartProperties:{paneProperties:o.paneProperties.state(),scalesProperties:o.scalesProperties.state(),publishedChartsTimelineProperties:n?n.state(e):void 0,chartEventsSourceProperties:null===(r=o.chartEventsSourceProperties)||void 0===r?void 0:r.state(),tradingProperties:a,priceScaleSelectionStrategyName:o.priceScaleSelectionStrategyName.value()},sessions:this.sessions().state(e),version:this.version(),timezone:this.timezone(),shouldBeSavedEvenIfHidden:this._shouldBeSavedEvenIfHidden};return s||(l.lineToolsGroups=this.lineToolsGroupModel().state(t)),l}restoreState(e,t,i){ve.instance(this).reset();const s={};if(!e.panes)return void Ai.logDebug("ChartModel.restoreState: invalid state");if(!Array.isArray(e.panes))return void Ai.logDebug("ChartModel.restoreState: invalid state");if(e.panes.length<1)return void Ai.logDebug("ChartModel.restoreState: invalid state");if(this._shouldBeSavedEvenIfHidden=void 0===e.shouldBeSavedEvenIfHidden||e.shouldBeSavedEvenIfHidden,e.chartProperties&&!e.chartProperties.timezone&&(e.chartProperties.timezone=e.timezone),e.chartProperties){const i=(0,D.factoryDefaults)("chartproperties").scalesProperties;(0,_e.merge)(i,e.chartProperties.scalesProperties),!("showLastValue"in i)||"showSeriesLastValue"in i||"showStudyLastValue"in i||(i.showSeriesLastValueProperty=i.showLastValue,i.showStudyLastValueProperty=i.showLastValue), -"showSeriesLastValue"in i&&(s.showSeriesLastValueProperty=!0),"showStudyLastValue"in i&&(s.showStudyLastValueProperty=!0),(!this.isSnapshot()&&!this.readOnly()&&"showCurrency"in i||"showUnit"in i)&&(0,Y.migrateShowCurrencyAndShowUnitProperties)(i.showCurrency,i.showUnit),e.chartProperties.paneProperties.vertGridProperties=e.chartProperties.paneProperties.vertGridProperties||(0,_e.clone)(e.chartProperties.paneProperties.gridProperties),e.chartProperties.paneProperties.horzGridProperties=e.chartProperties.paneProperties.horzGridProperties||(0,_e.clone)(e.chartProperties.paneProperties.gridProperties),"backgroundType"in e.chartProperties.paneProperties||(e.chartProperties.paneProperties.backgroundType=dt.ColorType.Solid),"separatorColor"in e.chartProperties.paneProperties||(e.chartProperties.paneProperties.separatorColor=(0,c.getThemedColor)("color-chart-page-bg")),this._properties.childs().paneProperties.mergeAndFire(e.chartProperties.paneProperties),this._properties.childs().scalesProperties.mergeAndFire(i),e.chartProperties.timezone&&this._properties.childs().timezone.setValue(e.chartProperties.timezone),e.chartProperties.chartEventsSourceProperties&&this._properties.hasChild("chartEventsSourceProperties")&&this._properties.childs().chartEventsSourceProperties.mergeAndFire(e.chartProperties.chartEventsSourceProperties),e.chartProperties.tradingProperties&&this._properties.hasChild("tradingProperties")&&(void 0===e.chartProperties.tradingProperties.horizontalAlignment&&(e.chartProperties.tradingProperties.horizontalAlignment=(r=e.chartProperties.tradingProperties.lineLength)<=40?_.TradingSourcesHorizontalAlignment.Right:r>=60?_.TradingSourcesHorizontalAlignment.Left:_.TradingSourcesHorizontalAlignment.Center),this._properties.childs().tradingProperties.mergeAndFire(e.chartProperties.tradingProperties)),this._timeScale.restoreState(e.timeScale,t),this._updateDateTimeFormatter()}var r;if(e.timeScale&&this._timeScale.restoreState(e.timeScale,t),!this.readOnly()){const t=this._getExceedingChildStudies(e.panes);if(t.length){for(let i=e.panes.length-1;i>=0;--i){const s=e.panes[i];for(let e=s.sources.length-1;e>=0;--e){const i=s.sources[e];~t.indexOf(i)&&s.sources.splice(e,1)}s.sources.length||e.panes.splice(i,1)}0}}const n=e.version||0,o=e.panes;this.panes()[0].restoreState(o[0],t,n,s,i,!0);let a=1;for(let r=1;rd&&h%100==0?{lines_limit_exceeded:!0,line_tools_count:h}:(this.panes().forEach(e=>this._dataSourceCollectionChanged.fire(e)),this._lineToolsGroupModel.fireChangedAll(),{})}shouldBeSavedEvenIfHidden(){return this._shouldBeSavedEvenIfHidden}setShouldBeSavedEvenIfHidden(e){this._shouldBeSavedEvenIfHidden=e}externalTimeStamp(e){const t=this.mainSeries().syncModel();return this.timeScale().points().roughTime(e,t&&t.projectTime.bind(t))}syncESD(){null!==this._esdWatcher&&this._esdWatcher.syncESDStudies()}recalcVisibleRangeStudies(e){this._recalcVRStudiesParams.force=this._recalcVRStudiesParams.force||Boolean(e),this._recalcVisibleRangeStudiesImplDebounced()}recalcColorStudies(e){this._recalcColorStudiesParams.force=this._recalcColorStudiesParams.force||Boolean(e),this._recalcColorStudiesImplDebounced()}alertsWatcher(){return this._alertsWatcher}showLegend(){return this._showLegendProperty}id(){return this._id}recalculatePriceRangeOnce(){const e=this.mainSeries();for(const t of this._panes)for(const i of t.priceDataSources())i.symbolSource()===e&&i.disablePriceRangeReady()}invalidate(e){var t;null===(t=this._invalidateHandler)||void 0===t||t.call(this,e)}appliedTimeFrame(){return this._appliedTimeFrame.appliedTimeFrame()}barsMarksSources(){return this._barsMarksSources}barMarksSourceForId(e){for(const t of this._barsMarksSources)if(t.id()===e)return t;return null}createSyncPoint(e,t){return(0,Ii.getDefault2Lazy)(this._syncPointCache,e.uniqueId,t.uniqueId,()=>new at(e,t))}isAutoSaveEnabled(){return this._isAutoSaveEnabled}studyAwareDefaultRightOffset(){return Math.max(this._timeScale.defaultRightOffset().value(),this._cachedStudiesMaxOffset)}clearAllStudies(){this.dataSources().forEach(e=>{var t;return null===(t=e.clearData)||void 0===t?void 0:t.call(e)})}_updateStudiesMaxOffset(){const e=Math.max(...this.allStudies().map(e=>e.maxOffset().value()));this._cachedStudiesMaxOffset=e;const t=this._timeScale.rightOffset();t<0||this._timeScale.setRightOffset(Math.max(t,e))}_updateBaseIndex(e,t){const i=this._timeScale,s=i.baseIndex(),r=i.visibleBarsStrictRange(),n=i.logicalRange();if(null!==n&&t){const t=n.contains(s),o=e-s;let a=t?null:i.rightOffset()-o;if(!this._options.shiftVisibleRangeOnNewBar&&t){const e=i.indexToCoordinate(s)+i.barSpacing()/2+1,t=s-n.left()+o,l=e/t;if(l>=i.minBarSpacing()){i.setBarSpacing(l);a=i.width()/l-t}else(null==r?void 0:r.lastBar())!==s&&(a=i.rightOffset()-o)}null!==a&&i.setRightOffset(a)}i.setBaseIndex(e)}_createESDWatcher(){}_updateDateTimeFormatter(){const e=Je.dateFormatProperty.value(),t=new Ze.DateFormatter(e);if(this._dateFormatter=t,this.mainSeries().isDWM())this._dateTimeFormatter=t,this._timeFormatter=new Qe.TimeFormatter("%h:%m");else{const t=C.Interval.parse(this.mainSeries().interval()),i=t.isSeconds()||t.isTicks()?"%h:%m:%s":"%h:%m" -;this._dateTimeFormatter=new Xe.DateTimeFormatter({dateFormat:e,timeFormat:i,dateTimeSeparator:" "}),this._timeFormatter=new Qe.TimeFormatter(i)}}_setScalesResetAvailable(e){this._isScalesResetAvailable!==e&&(this._isScalesResetAvailable=e,this._isScalesResetAvailableChanged.fire())}_invalidationMaskForSource(e,t=q.InvalidationLevel.Light){if(e===this.crossHairSource())return q.InvalidationMask.cursor();if(this._watermarkSource===e)return this._paneInvalidationMask((0,r.ensureNotNull)(this.paneForSource(this.mainSeries())),t);if(-1!==this._allCustomSources.indexOf(e)){const e=new q.InvalidationMask;return e.invalidateAll(t),e}if(!(0,m.isDataSource)(e))return null;if(e.isMultiPaneEnabled())return new q.InvalidationMask(t);const i=this.paneForSource(e);return null!==i?this._paneInvalidationMask(i,t):null}_paneInvalidationMask(e,t=q.InvalidationLevel.Light){const i=new q.InvalidationMask,s=this._panes.indexOf(e);return i.invalidateAllPane(s,t),i}_invalidationMaskForSourcePriceScale(e,t=q.InvalidationLevel.Light){if(!(0,m.isDataSource)(e))return new q.InvalidationMask(t);const i=this.paneForSource(e);if(null===i)return null;let s=e.priceScale();if(null===s)return null;const r=this._panes.indexOf(i);let n=i.priceScalePosition(s);if("overlay"===n){const e=this._panes[r].defaultPriceScale();s=e,n=i.priceScalePosition(e)}const o=i.priceScaleIndex(s,n);if(void 0===o)return null;const a=new q.InvalidationMask;return a.invalidatePriceScale(r,n,o,t),a}_removeCustomSource(e){const t=this._customSourcesMap.get(e);if(void 0===t)return void Ai.logWarn(`Attempt to remove custom source which does not exist in the model - "${e}"`);Ai.logNormal(`Removing custom source "${e}"`),this.selectionMacro(e=>{e.removeSourceFromSelection(t)}),this._hoveredSource===t&&this.setHoveredSource(null),this._customSourceBeingMoved===t&&this.setMovingCustomSource(null,null);const i=Ei(this._bgCustomSources,t),s=Ei(this._fgCustomSources,t),n=Ei(this._topmostCustomSources,t),o=Ei(this._allCustomSources,t);(0,r.assert)(i||s||n,"Source should be presented in one of the layers"),(0,r.assert)(o,"Source should be presented in the array"),this._customSourcesMap.delete(e),t.destroy()}_updateShowLegendProperty(){const e=this._properties.childs().paneProperties.childs().legendProperties.childs().showLegend,t=this._showLegendProperty;if(e.value())t.setValue(!0);else{for(const e of this._panes){let i=0;for(const s of e.priceDataSources())if(s!==this.mainSeries()&&null!==s.statusView()&&(i++,i>1))return void t.setValue(!1)}t.setValue(!0)}}_pointToPercentPosition(e,t){return{x:e.x/this._timeScale.width(),y:e.y/(0,r.ensureNotNull)((0,r.ensureNotNull)(t.mainDataSource()).priceScale()).height()}}_percentPositionToPoint(e,t){const i=e.x*this._timeScale.width(),s=e.y*(0,r.ensureNotNull)((0,r.ensureNotNull)(t.mainDataSource()).priceScale()).height();return new n.Point(i,s)}_recalcVisibleRangeStudiesImpl(e){var t,i,s;if(e.timerId=null,this.timeScale().isEmpty())return;const r=this.timeScale().visibleBarsStrictRange();if(null===r)return -;const n=this.mainSeries().bars(),o=n.search(r.firstBar(),ft.PlotRowSearchMode.NearestRight),a=n.search(r.lastBar(),ft.PlotRowSearchMode.NearestLeft),l=n.lastIndex(),c=o?o.index:void 0,h=a?a.index:void 0,d=c===e.oldStartVisibleIndex,u=h===e.oldEndVisibleIndex;if(d&&u&&!e.force)return;e.force=!1,e.oldStartVisibleIndex=void 0!==c?c:NaN,e.oldEndVisibleIndex=void 0!==h?h:NaN;const p={first_visible_bar_time:1e3*(null!==(t=null==o?void 0:o.value[0])&&void 0!==t?t:0),last_visible_bar_time:1e3*(null!==(i=null==a?void 0:a.value[0])&&void 0!==i?i:0),subscribeRealtime:(null==a?void 0:a.index)===l},_=null!==(s=e.studies)&&void 0!==s?s:this.priceDataSources();e.studies=void 0;for(const e of _)if((0,H.isStudy)(e)){const t=e.metaInfo().inputs,i=[];for(const e of t)p.hasOwnProperty(e.id)&&i.push(e.id);const s=e.properties().inputs;for(const e of i)s[e].setValueSilently(p[e]);i.length>0&&s.listeners().fire(s)}}_recalcColorStudiesImpl(e){var t;e.timerId=null;const i=this.backgroundColorAtYPercentFromTop(.5),s=this.isDark()?a.colorsPalette["color-cold-gray-200"]:a.colorsPalette["color-cold-gray-900"],r=i===e.oldBgColor,n=s===e.oldFgColor;if(r&&n&&!e.force)return;e.force=!1,e.oldBgColor=i,e.oldFgColor=s;const o={__chart_bgcolor:i,__chart_fgcolor:s},l=null!==(t=e.studies)&&void 0!==t?t:this.priceDataSources();e.studies=void 0;for(const e of l)if((0,H.isStudy)(e)){const t=e.metaInfo().inputs,i=[];for(const e of t)o.hasOwnProperty(e.id)&&i.push(e.id);const s=e.properties().inputs;for(const e of i)s[e].setValueSilently(o[e]);i.length>0&&s.listeners().fire(s)}}_getAllSources(e){const t=[];for(const i of this._panes){const s=i.sourcesByGroup().all();for(const i of s)e(i)&&t.push(i)}return t}_invalidateBarColorerCaches(){this.mainSeries().invalidateBarColorerCache()}_updateTimeScale(e){var t,i;const{index:s,zoffset:r,values:n,indexDiffs:o,baseIndex:a,marks:l,clearFlag:c}=e;if(c){this._timeScale.reset();for(const e of this.dataSources())null===(t=e.clearData)||void 0===t||t.call(e)}if(o.length>0)for(const e of this.dataSources())null===(i=e.moveData)||void 0===i||i.call(e,o);const h=this._timeScale.indexToTimePoint(this._timeScale.baseIndex()),d=this._timeScale.canNormalize();this._timeScale.update(s,r,n,l);let u="ChartModel.prototype._updateTimeScale("+s+","+r+","+n.length+","+o.length+","+l.length+","+c+")";if(u+="TimeScale: {first:"+this._timeScale.points().firstIndex()+",last:"+this._timeScale.points().lastIndex()+"}",null===a){this._timeScale.resetBaseIndex();const e=this._timeScale.rightOffset();e<0?this._timeScale.setRightOffset(this.studyAwareDefaultRightOffset()):this._timeScale.setRightOffset(Math.max(e,this._cachedStudiesMaxOffset))}else if(void 0!==a){const e=this._timeScale.indexToTimePoint(a),t=null!==h&&null!==e&&e>h;this._updateBaseIndex(a,t)}if(Ai.logDebug(u),!d&&d!==this._timeScale.canNormalize())for(const e of this.dataSources())!(0,f.isLineTool)(e)||e.isFixed()||e.isSourceHidden()||e.processHibernate();this.recalculateAllPanes((0,O.globalChangeEvent)()),this.lightUpdate()}_getAvailableCurrencies(){ -return!this.currencyConversionEnabled()||this.isSnapshot()?[]:(0,_e.isArray)(this._availableCurrenciesList)?this._availableCurrenciesList:(null!==this._availableCurrenciesList||(this._availableCurrenciesList=this.chartApi().availableCurrencies(),this._availableCurrenciesList.then(e=>{this._destroyed||(this._availableCurrenciesList=e,this.fullUpdate())}).catch(e=>{Ai.logWarn("An error occurred while getting currencies config: "+e)})),[])}_getAvailableUnits(){return!this.unitConversionEnabled()||this.isSnapshot()?{}:this._availableUnitsObject instanceof Promise||null===this._availableUnitsObject?(null!==this._availableUnitsObject||(this._availableUnitsObject=this.chartApi().availableUnits(),this._availableUnitsObject.then(e=>{this._destroyed||(this._availableUnitsObject=e,this.fullUpdate())}).catch(e=>{Ai.logWarn("An error occurred while getting units config: "+e)})),{}):this._availableUnitsObject}_getBackgroundColor(e){const t=this._properties.childs().paneProperties.childs();if(t.backgroundType.value()===dt.ColorType.Gradient){const i=t.backgroundGradientStartColor.value(),s=t.backgroundGradientEndColor.value();return e?i:s}return t.background.value()}_updateBackgroundColor(){this._backgroundColor.setValue(this._getBackgroundColor()),this._backgroundTopColor.setValue(this._getBackgroundColor(!0))}_syncCrosshair(e){if(!this._isSettingsExternalPosition){const t=this._undoModel.chartWidget(),i=this._undoModel.mainSeries(),s=i.syncModel(),r=this._undoModel.crossHairSource(),n=r.pane;if(null!==s&&null!==n){const o={timeStamp:this._timeScale.points().roughTime(r.index,s.projectTime.bind(s)),syncSourceTarget:s.syncSourceTarget()};n.mainDataSource()===i&&(o.price=r.price,o.symbol=i.symbol());let a=this._lineBeingCreated||null!==this._linePointBeingEdited||Boolean(this._sourcesBeingMoved.length);a=a&&(0,lt.drawOnAllCharts)().value(),t.chartWidgetCollection().syncCrosshair(o,t.id(),a,e)}this._phantomSourceContainer.onCursorPositionUpdated()}}_gotoTimeImpl(e,t){const i=this.timeScale(),s=this.mainSeries();let n;if(void 0!==e){if(this._scrollingState&&this._scrollingState.deferred.reject(),n=(0,d.createDeferredPromise)(),!s.isDWM()){const t=s.symbolInfo();if(null!==t){let i=this.properties().childs().timezone.value();"exchange"===i&&(i=t.timezone);const r=(0,it.cal_to_utc)((0,it.get_timezone)(i),new Date(e)),n=(0,wt.createTimeToBarTimeAligner)(s.interval(),t)(r);e=(0,it.utc_to_cal)((0,it.get_timezone)(i),n).getTime()}}this._scrollingState={targetDate:e,deferred:n,centerIfVisible:t.centerIfVisible}}else{if(!this._scrollingState)return Ai.logError("scrollTo called without an argument"),Promise.reject();e=this._scrollingState.targetDate,n=this._scrollingState.deferred}if(void 0===i.tickMarks().minIndex)return n.resolve(void 0),n.promise;let o=((e,t)=>{if((e=>(0,r.ensureNotNull)(i.tickMarks().indexToTime((0,r.ensureDefined)(i.tickMarks().minIndex))).valueOf()-e)(t)<0){let n=i.tickMarks().nearestIndex(t);const o=s.bars().lastIndex();if(null===o)return null;n=Math.min(n,o);let a=(0, -r.ensureNotNull)(i.tickMarks().indexToTime(n)).valueOf();for(;a1&&s.push(e)),n=(n+1)%t.length}return s}}},15943:(e,t,i)=>{"use strict";i.d(t,{japaneseChartStyles:()=>r,commonChartStyles:()=>n,allChartStyles:()=>o});var s=i(67337);function r(){return s.enabled("japanese_chart_styles"),[8]}function n(){const e=[0,1,9,13,2,3,10];return s.enabled("chart_style_hilo")&&e.push(12),e}function o(){return n().concat(r())}},97205:(e,t,i)=>{"use strict";i.d(t,{ChartUndoModelBase:()=>Wi});var s=i(85459),r=i.n(s),n=i(16230),o=i(88537),a=i(86441),l=i(28353),c=i(24980),h=i(68587),d=i(65645),u=i(67072),p=i.n(u),_=i(98125);const m=new c.TranslatedString("move all scales to left",(0,l.t)("move all scales to left")),g=new c.TranslatedString("move all scales to right",(0,l.t)("move all scales to right")),f=(0,_.getLogger)("Chart.MergeAllScales");var v=i(44556),S=i(35762);class y extends S.UndoCommand{constructor(e,t,i,s,r,n){super(n),this._model=e,this._paneIndex=e.panes().indexOf(t),this._targetPosition=s,this._targetIndex=r,this._scaleId=i.id(),this._sourcePosition=t.priceScalePosition(i),"overlay"!==this._sourcePosition&&(this._sourceIndex=t.priceScaleIndex(i,this._sourcePosition))}redo(){const e=this._model.panes()[this._paneIndex],t=(0,o.ensureNotNull)(e.getPriceScaleById(this._scaleId));e.movePriceScale(t,this._targetPosition,this._targetIndex),this._model.fullUpdate()}undo(){const e=this._model.panes()[this._paneIndex],t=(0,o.ensureNotNull)(e.getPriceScaleById(this._scaleId));e.movePriceScale(t,this._sourcePosition,this._sourceIndex),this._model.fullUpdate()}}var b=i(14291) -;class w extends S.UndoCommand{constructor(e,t,i,s){super(s),this._createdIds=[],this._model=e,this._withoutShift=i,this._origStates=t.map(e=>e.state(!0));const r=e.lineToolsGroupModel();this._origGroups=t.map(e=>{const t=r.groupForLineTool(e);return t&&t.id})}redo(){const e=this._model.lineToolsGroupModel(),t=this._origStates.map((t,i)=>{const s=(0,o.ensureNotNull)(this._model.dataSourceForId(t.id)),r=0===this._createdIds.length?void 0:(0,o.ensureDefined)(this._createdIds[i]),n=(0,b.cloneLineTool)(this._model,s,!this._withoutShift,r),a=(0,o.ensureNotNull)(s.priceScale());(0,o.ensureNotNull)(this._model.paneForSource(s)).addDataSource(n,a,!1);const l=this._origGroups[i];if(null!==l){const t=e.groupForId(l);t&&t.addLineTools([n])}return this._model.updateSource(n),n});0===this._createdIds.length&&(this._createdIds=t.map(e=>e.id())),this._model.selectionMacro(e=>{e.clearSelection(),t.forEach(t=>{e.addSourceToSelection(t)})}),this._model.setShouldBeSavedEvenIfHidden(!0)}undo(){const e=this._model.lineToolsGroupModel();this._createdIds.forEach(t=>{const i=(0,o.ensureNotNull)(this._model.dataSourceForId(t)),s=e.groupForLineTool(i);null!==s&&s.excludeLineTool(i),this._model.removeSource(i)})}newIds(){return this._createdIds}}var C=i(65284),P=i(79495),T=i(80643),x=i(81851);class I extends S.UndoCommand{constructor(e,t,i,s=!0){super(i,s),this._newStates=[],this._model=e,this._savedStates=t.map(e=>e.state(!1))}redo(){this._applyState(this._newStates)}undo(){0===this._newStates.length&&this.saveNewState(),this._applyState(this._savedStates)}saveNewState(){const e=this._savedStates.filter(T.notNull).map(e=>(0,o.ensureNotNull)(this._model.dataSourceForId(e.id)));this._newStates=e.map(e=>e.state(!1))}_applyState(e){for(const t of e)if(null!==t){const e=this._model.dataSourceForId(t.id);if(null!==e)if((0,x.isStudy)(e)){const i=t.state.inputs,s=e.properties().inputs;for(const e in i)s[e]&&s[e].setValue(i[e])}else this._model.restoreLineToolState(e,t,!0)}}}var M=i(36551),L=i(8597),A=i(59555),E=i(60870);const k=new c.TranslatedString("create {tool}",(0,l.t)("create {tool}"));class D extends S.UndoCommand{constructor(e,t,i,s,r=0,n){super(k.format({tool:new c.TranslatedString(i,E.lineToolsLocalizedNames[i])}),!1),this._lineId=null,this._lineState=null,this._model=e,this._paneIndex=e.panes().indexOf(t),this._lineTool=i,this._ownerSourceId=s.id(),this._lineId=null!=n?n:null,this._drawOnAllChartsMode=r}startCreatingLine(e,t,i){var s;const r=this._model.panes()[this._paneIndex],n=this._model.dataSourceForId(this._ownerSourceId),o=this._model.createLineTool(r,e,this._lineTool,t,i,n,null!==(s=this._lineId)&&void 0!==s?s:void 0);return this._lineId=o.id(),!this._model.lineBeingCreated()}continueCreatingLine(e,t,i,s){const r=this._model.continueCreatingLine(e,t,i,s);return r&&this._model.setShouldBeSavedEvenIfHidden(!0),r}line(){return null===this._lineId?null:this._model.dataSourceForId(this._lineId)}undo(){const e=this.line();null!==e&&(this._lineState=e.state(!1),this._model.removeSource(e),this._lineId=null)}redo(){ -if(null===this._lineState)return;const e=this._model.restoreSource(!1,this._paneIndex,null,(0,o.ensureNotNull)(this._lineState),null);null!==e&&(this._lineId=e.id(),this._lineState=null,e.share(this._drawOnAllChartsMode))}drawOnAllCharts(){return 0!==this._drawOnAllChartsMode}}var V=i(94578);const B=new c.TranslatedString("bring {title} to front",(0,l.t)("bring {title} to front")),N=new c.TranslatedString("send {title} to back",(0,l.t)("send {title} to back")),R=new c.TranslatedString("insert {title} after {targetTitle}",(0,l.t)("insert {title} after {targetTitle}")),O=new c.TranslatedString("insert {title} before {targetTitle}",(0,l.t)("insert {title} before {targetTitle}")),F=new c.TranslatedString("send {title} backward",(0,l.t)("send {title} backward")),W=new c.TranslatedString("bring {title} forward",(0,l.t)("bring {title} forward")),H=new c.TranslatedString("send group {title} backward",(0,l.t)("send group {title} backward")),z=new c.TranslatedString("bring group {title} forward",(0,l.t)("bring group {title} forward"));function U(e){return new c.TranslatedString(e.name(),e.title())}class j extends S.UndoCommand{constructor(e,t,i){super(i),this._sourcesByPanes=new Map,this._originalState=new Map,this._model=e,t.forEach(t=>{const i=(0,o.ensureNotNull)(e.paneForSource(t)),s=e.panes().indexOf(i),r=this._sourcesByPanes.get(s)||[];r.push(t.id()),this._sourcesByPanes.set(s,r)}),Array.from(this._sourcesByPanes.keys()).forEach(t=>{const i=e.panes()[t],s=new Map;i.sourcesByGroup().allIncludingHidden().forEach(e=>{s.set(e.id(),e.zorder())}),this._originalState.set(t,s)})}undo(){this._originalState.forEach((e,t)=>{const i=this._model.panes()[t],s=new Map;e.forEach((e,t)=>{const r=(0,o.ensureNotNull)(i.dataSourceForId(t));s.set(r,e)}),i.setZOrders(s)})}redo(){this._sourcesByPanes.forEach((e,t)=>{const i=this._model.panes()[t],s=e.map(e=>(0,o.ensureNotNull)(i.dataSourceForId(e)));this._paneOperation(i,s)})}}class G extends j{constructor(e,t){super(e,t,B.format({title:U(t[0])}))}_paneOperation(e,t){e.bringToFront(t)}}class q extends j{constructor(e,t){super(e,t,N.format({title:U(t[0])}))}_paneOperation(e,t){e.sendToBack(t)}}class Y extends j{constructor(e,t,i,s){super(e,t,s),this._targetSource=i}_paneOperation(e,t){e.insertAfter(t,this._targetSource)}}class K extends Y{constructor(e,t,i){super(e,t,i,R.format({title:U(t[0]),targetTitle:U(i)}))}}class $ extends j{constructor(e,t,i,s){super(e,t,s),this._targetSource=i}_paneOperation(e,t){e.insertBefore(t,this._targetSource)}}class X extends ${constructor(e,t,i){super(e,t,i,O.format({title:U(t[0]),targetTitle:U(i)}))}}function Z(e,t){const i=t[0],s=e.sourcesByGroup().all().filter(e=>e.zorder()e.zorder()>i.zorder());if(0===s.length)throw new Error("Cannot bring forward source that alreadt on back");let r=s[0];if((0,b.isLineTool)(r)){const t=e.model().lineToolsGroupModel().groupForLineTool(r);if(null!==t){const e=t.lineTools();r=e[e.length-1]}}return r}class ee extends Y{constructor(e,t,i){super(e,i,Q(t,i),W.format({title:U(i[0])}))}}function te(e,t){return(0,o.ensureNotNull)(e.paneForSource(t.lineTools()[0]))}class ie extends ${constructor(e,t){super(e,t.lineTools(),Z(te(e,t),t.lineTools()),H.format({title:t.name()}))}}class se extends Y{constructor(e,t){super(e,t.lineTools(),Q(te(e,t),t.lineTools()),z.format({title:t.name()}))}}const re=new c.TranslatedString("rearrange panes",(0,l.t)("rearrange panes"));class ne extends S.UndoCommand{constructor(e,t,i){super(re),this._chartModel=e,this._index=t,(0,T.isNumber)(i)?this._dstIndex=i:this._dstIndex="up"===i?t-1:t+1}redo(){this._checkIndices()&&this._chartModel.movePane(this._index,this._dstIndex)}undo(){this._checkIndices()&&this._chartModel.movePane(this._dstIndex,this._index)}_checkIndices(){const e=this._chartModel.panes().length;return this._index>=0&&this._index=0&&this._dstIndexe.id())}redo(){const e=(0,o.ensureNotNull)(this._model.lineToolsGroupModel().groupForId(this._groupId));this._model.lineToolsGroupModel().removeGroup(e)}undo(){const e=this._lineToolsIds.map(e=>this._model.dataSourceForId(e)),t=new Se.LineToolsGroup(e,this._groupName,this._groupId);this._model.lineToolsGroupModel().addGroup(t)}}const be=new c.TranslatedString("create line tools group",(0,l.t)("create line tools group"));class we extends S.UndoCommand{constructor(e,t){super(be),this._groupId=null,this._model=e,this._sourcesIds=t.map(e=>e.id())}redo(){const e=this._sourcesIds.map(e=>this._model.dataSourceForId(e)),t=null===this._groupId?void 0:this._groupId;this._groupId=this._model.lineToolsGroupModel().createGroup(e,this._title,t).id}undo(){const e=(0,o.ensureNotNull)(this._model.lineToolsGroupModel().groupForId((0,o.ensureNotNull)(this._groupId)));this._model.lineToolsGroupModel().removeGroup(e)}createdGroupId(){return this._groupId}}const Ce=new c.TranslatedString("add line tool(s) to group {group}",(0,l.t)("add line tool(s) to group {group}"));class Pe extends S.UndoCommand{constructor(e,t,i){super(Ce.format({group:t.name()})),this._model=e,this._groupId=t.id,this._lineToolsIds=i.map(e=>e.id())}redo(){const e=(0,o.ensureNotNull)(this._model.lineToolsGroupModel().groupForId(this._groupId)),t=this._lineToolsIds.map(e=>this._model.dataSourceForId(e));e.addLineTools(t)}undo(){const e=this._lineToolsIds.map(e=>this._model.dataSourceForId(e));(0,o.ensureNotNull)(this._model.lineToolsGroupModel().groupForId(this._groupId)).excludeLineTools(e)}}var Te=i(46627);class xe extends S.UndoCommand{ -constructor(e,t,i,s,r){super(i),this._targetObj=e,this._newValue=t,this._oldValue=this._targetObj.value(),this._model=s,r&&this.setCustomFlag("doesnt_affect_save",!0)}redo(){(0,le.saveDefaultProperties)(!0),this._targetObj.setValue(this._newValue),(0,le.saveDefaultProperties)(!1),this._model.recalculateAllPanes((0,ue.globalChangeEvent)()),this._model.lightUpdate()}undo(){(0,le.saveDefaultProperties)(!0),this._targetObj.setValue(this._oldValue),(0,le.saveDefaultProperties)(!1),this._model.recalculateAllPanes((0,ue.globalChangeEvent)()),this._model.lightUpdate()}}class Ie extends S.UndoCommand{constructor(e,t,i,s){super(s),this._chartModel=e,this._groupId=t.id,this._oldName=t.name(),this._newName=i}redo(){(0,o.ensureNotNull)(this._chartModel.lineToolsGroupModel().groupForId(this._groupId)).setName(this._newName)}undo(){(0,o.ensureNotNull)(this._chartModel.lineToolsGroupModel().groupForId(this._groupId)).setName(this._oldName)}}var Me=i(85733);const Le=new c.TranslatedString("create line tools group from selection",(0,l.t)("create line tools group from selection")),Ae=new c.TranslatedString("removing line tools group {name}",(0,l.t)("removing line tools group {name}")),Ee=new c.TranslatedString("add line tool {lineTool} to group {name}",(0,l.t)("add line tool {lineTool} to group {name}")),ke=new c.TranslatedString("make group {group} visible",(0,l.t)("make group {group} visible")),De=new c.TranslatedString("make group {group} invisible",(0,l.t)("make group {group} invisible")),Ve=new c.TranslatedString("lock group {group}",(0,l.t)("lock group {group}")),Be=new c.TranslatedString("unlock group {group}",(0,l.t)("unlock group {group}")),Ne=new c.TranslatedString("rename group {group} to {newName}",(0,l.t)("rename group {group} to {newName}"));class Re{constructor(e){this._lineToolsAffectChartInvalidation=new Te.FeatureToggleWatchedValue("do_not_invalidate_chart_on_changing_line_tools",!1),this._environment=e}createGroupFromSelection(){const e=this._environment.model();(0,o.assert)(!e.selection().isEmpty(),"Cannot create group from empty selection");const t=(0,A.sortSources)(e.selection().lineDataSources());(0,o.assert)(t.length===e.selection().allSources().length,"A group could contain line tools only");const i=t.length>1||null!==this._environment.model().lineToolsGroupModel().groupForLineTool(t[0]),s=t.reduce((e,t)=>e.zorder()>t.zorder()?e:t,t[0]);let r=s;const n=e.lineToolsGroupModel().groupForLineTool(s);if(null!==n){const e=n.lineTools();r=e[e.length-1]}this._environment.beginUndoMacro(Le,this._lineToolsAffectChartInvalidation.value());const a=new Map,l=new Set;t.forEach(t=>{const i=this._groupForLineTool(t);if(null===i)return;const s=a.get(i)||[];s.push(t),a.set(i,s);const r=(0,o.ensureNotNull)(e.paneForSource(t));l.add(r)}),(0,o.assert)(l.size<=1,"All selected sources should be on the same pane"),a.forEach((t,i)=>{const s=new P.ExcludeLineToolsFromGroupUndoCommand(e,i,t);this._environment.pushUndoCommand(s)});const c=new we(e,(0,A.sortSources)(t));if(this._environment.pushUndoCommand(c),i){const i=new K(e,t,r) -;this._environment.pushUndoCommand(i)}this._environment.endUndoMacro();const h=(0,o.ensureNotNull)(c.createdGroupId());return(0,o.ensureNotNull)(e.lineToolsGroupModel().groupForId(h))}removeGroup(e){const t=this._environment.model(),i=e.lineTools();this._environment.beginUndoMacro(Ae.format({name:e.name()}),this._lineToolsAffectChartInvalidation.value());const s=new ye(t,e,null);this._environment.pushUndoCommand(s);const r=new C.RemoveSourcesCommand(t,i,null);this._environment.pushUndoCommand(r);const n=t.mainSeries().symbol();i.forEach(e=>{null!==e.linkKey().value()&&(0,Me.removeLineTool)({withUndo:!0,model:t,symbol:n,sourceTitle:new c.TranslatedString(e.name(),e.title()),lineToolState:e.state(!1),linkKey:(0,o.ensureNotNull)(e.linkKey().value())})}),this._environment.endUndoMacro()}groups(){return this._environment.model().lineToolsGroupModel().groups()}excludeLineToolFromGroup(e,t){const i=this._environment.model(),s=new P.ExcludeLineToolsFromGroupUndoCommand(i,e,[t]);s.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(s)}addLineToolToGroup(e,t){const i=this._environment.model(),s=i.lineToolsGroupModel().groupForLineTool(t);if(s===e)return;const r=Ee.format({lineTool:new c.TranslatedString(t.name(),t.title()),name:e.name()});this._environment.beginUndoMacro(r,this._lineToolsAffectChartInvalidation.value()),null!==s&&this._environment.pushUndoCommand(new P.ExcludeLineToolsFromGroupUndoCommand(i,s,[t])),this._environment.pushUndoCommand(new Pe(i,e,[t])),this._environment.endUndoMacro()}bringToFront(e){const t=this._environment.model(),i=new G(t,e.lineTools());i.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(i),this._environment.emitEvent("changeZOrder",[e.lineTools()])}sendToBack(e){const t=this._environment.model(),i=new q(t,e.lineTools());i.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(i),this._environment.emitEvent("changeZOrder",[e.lineTools()])}bringForward(e){const t=this._environment.model(),i=new se(t,e);i.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(i),this._environment.emitEvent("changeZOrder",[e.lineTools()])}sendBackward(e){const t=this._environment.model(),i=new ie(t,e);i.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(i),this._environment.emitEvent("changeZOrder",[e.lineTools()])}insertAfter(e,t){const i=this._environment.model();let s;if(t instanceof Se.LineToolsGroup){const e=t.lineTools();s=e[e.length-1]}else s=t;const r=new K(i,e.lineTools(),s);this._environment.pushUndoCommand(r),this._environment.emitEvent("changeZOrder",[e.lineTools()])}insertBefore(e,t){const i=this._environment.model();let s;if(t instanceof Se.LineToolsGroup){s=t.lineTools()[0]}else s=t;const r=new X(i,e.lineTools(),s);this._environment.pushUndoCommand(r), -this._environment.emitEvent("changeZOrder",[e.lineTools()])}availableZOrderOperations(e){const t=this._environment.model(),i=e.lineTools(),s=i[0],r=i[i.length-1],n=(0,o.ensureNotNull)(t.paneForSource(i[0])).sourcesByGroup().allExceptSpecialSources(),a=n[0],l=n[n.length-1];return{bringForwardEnabled:r!==l,bringToFrontEnabled:r!==l,sendBackwardEnabled:s!==a,sendToBackEnabled:s!==a}}setGroupVisibility(e,t){const i=(t?ke:De).format({group:e.name()}),s=this._environment.model();this._environment.beginUndoMacro(i,this._lineToolsAffectChartInvalidation.value()),e.lineTools().forEach(e=>{const i=e.properties().visible,r=new xe(i,t,null,s);this._environment.pushUndoCommand(r)}),this._environment.endUndoMacro()}setGroupLock(e,t){const i=(t?Ve:Be).format({group:e.name()}),s=this._environment.model();this._environment.beginUndoMacro(i,this._lineToolsAffectChartInvalidation.value()),e.lineTools().forEach(e=>{const i=e.properties().frozen,r=new xe(i,t,null,s);this._environment.pushUndoCommand(r)}),this._environment.endUndoMacro()}setGroupName(e,t){const i=this._environment.model(),s=Ne.format({group:e.name(),newName:t}),r=new Ie(i,e,t,s);r.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(r)}canBeGroupped(e){const t=this._environment.model();return new Set(e.map(e=>t.paneForSource(e))).size<=1}_groupForLineTool(e){return this._environment.model().lineToolsGroupModel().groups().find(t=>t.containsLineTool(e))||null}}var Oe=i(58121),Fe=i(52546),We=i(50669),He=i(26161);const ze=new c.TranslatedString("apply study template {template}",(0,l.t)("apply study template {template}"));function Ue(e){for(const t of e.panes)for(const e of t.sources)if((0,We.isMainSeriesState)(e))return e.id;return null}class je extends S.UndoCommand{constructor(e,t,i){var s,r;super(ze.format({template:i})),this._newSymbolParams={},this._model=e,this._templateContent=function(e,t){const i=(0,Oe.default)({},e),s=(0,o.ensureNotNull)(Ue(i));for(const e of i.panes){e.mainSourceId===s&&(e.mainSourceId=t);for(const i of e.sources)if(i.id===s){i.id=t;const r=e=>{const i=e.indexOf(s);-1!==i&&e.splice(i,1,t)};if(e.leftAxisesState&&e.rightAxisesState?(e.leftAxisesState.forEach(e=>r(e.sources)),e.rightAxisesState.forEach(e=>r(e.sources))):(r(e.leftAxisSources),r(e.rightAxisSources)),e.overlayPriceScales){const i=e.overlayPriceScales[s];i&&(delete e.overlayPriceScales[s],e.overlayPriceScales[t]=i)}}else i.ownerSource===s&&(i.ownerSource=t)}return i}(t,e.mainSeries().id()),this._initialState=e.studyTemplate(!0,!0,!0);const n=e.mainSeries();t.symbol&&(this._newSymbolParams={symbol:t.symbol,currency:null!==(s=t.currency)&&void 0!==s?s:null,unit:null!==(r=t.unit)&&void 0!==r?r:null}),t.interval&&(this._newSymbolParams.interval=t.interval,this._newSymbolParams.style=(0,ce.getChartStyleByResolution)(t.interval,n.style())),this._initialSymbolParams={symbol:n.symbol(),currency:n.currency(),unit:n.unit(),interval:n.interval(),style:n.style()},this._initialState=e.studyTemplate(), -this._initialGroupsState=e.lineToolsGroupModel().state()}redo(){this._model.mainSeries().setSymbolParams(this._newSymbolParams);const e=this._merge(this._templateContent).filter(b.isLineTool);this._model.lineToolsGroupModel().removeLineTools(e);const t=this._model.mainSeries().properties();(0,ce.preparePriceAxisProperties)(t),this._model.recalcVisibleRangeStudies(!0),this._model.setShouldBeSavedEvenIfHidden(!0)}undo(){this._model.mainSeries().setSymbolParams(this._initialSymbolParams),this._merge(this._initialState)}_merge(e){const t=e.version||0,i=this._model,s=i.mainSeries();(0,o.assert)(s.id()===Ue(e)),s.priceScale().properties().childs().lockScale.setValue(!1);const r=i.panes(),n=[];for(let e=r.length;e--;){const t=r[e],i=t.containsMainSeries(),s=t.dataSources();for(let e=s.length;e--;){const t=s[e];(!i||(0,x.isStudy)(t)&&t.isRemovedByStudyTemplates())&&n.push(t)}}i.resetDeferredStudies();const a=(0,Fe.closeSourcesSet)(i,n);for(let e=0;ee.zorder-t.zorder);for(let e=0;e-1,a=o?r[e]:i.createPane(e);o&&t<3&&(0,He.reorderDataSourcesStateZOrder)(n.sources),a.restoreState(n,!1,t),null!==a.mainDataSource()||i.removePane(a)}return i.syncESD(),s.priceScale().setMode({autoScale:!0}),i.startNotStartedStudies(),i.recalculateAllPanes((0,ue.globalChangeEvent)()),i.fullUpdate(),a}}var Ge=i(9423),qe=i(79680);const Ye=(0,_.getLogger)("Chart.ChartUndoModel"),Ke=new c.TranslatedString("paste drawing",(0,l.t)("paste drawing"));class $e extends S.UndoCommand{constructor(e,t,i,s,r){super(Ke),this._needCopyToOtherCharts=!1,this._sourceState=null,this._model=e,this._clipboardData=t,this._paneIndex=this._model.panes().indexOf(i||(0,o.ensureNotNull)(this._model.paneForSource(this._model.mainSeries()))),this._pasteWithData=!!s,this._keepZIndex=!!r}redo(){const e=this._model.panes()[this._paneIndex],t=(0,o.ensureNotNull)(e.clipboardLineToolOwnerSource(this._clipboardData.source.id));null===this._sourceState&&(this._sourceState=this._getSourceState(t));const i=(0,o.ensureNotNull)(e.restoreLineTool(this._sourceState,this._pasteWithData,this._keepZIndex));this._clipboardData.centeredOnChart&&i.centerPosition&&i.centerPosition();const s=(0,o.ensureNotNull)(t.priceScale());i.setOwnerSource(t),i.setPriceScale(s),s.addDataSource(i),i.restoreFixedPoints(),(0,b.prepareLineToolPropertiesByOwnerSource)(i.properties(),t),i.calcIsActualSymbol(),i.createServerPoints();const r=(0,qe.isActingAsSymbolSource)(t)||t.metaInfo().is_price_study;this._needCopyToOtherCharts=Boolean(r&&((0,Me.drawOnAllCharts)().value()||i.linkKey().value()&&i.isSynchronizable())),this._model.setShouldBeSavedEvenIfHidden(!0)}undo(){if(!this._sourceState)return void Ye.logError("This command was never executed - nothing to undo");const e=this.source();this._clipboardData.centeredOnChart&&(this._clipboardData.centeredOnChart=!1, -this._sourceState.points=e.normalizedPoints()),this._model.removeSource(e)}source(){return(0,o.ensureNotNull)(this._model.dataSourceForId((0,o.ensureNotNull)(this._sourceState).id))}needCopyToOtherCharts(){return this._needCopyToOtherCharts}_getSourceState(e){const t=(0,T.clone)(this._clipboardData.source);delete t.state.symbol,null!=t.linkKey&&(t.linkKey=(0,Ge.randomHash)());const i=(0,o.ensureNotNull)(e.priceScale()),s=this._model,{symbol:r,currencyId:n,unitId:l}=this._clipboardData.source.state,c=(0,o.ensureNotNull)(e.symbolSource());let h=!1;!c.symbolSameAsCurrent(r)||(null!==n?n!==(0,ce.symbolCurrency)(c.symbolInfo(),void 0,!0):c.isConvertedToOtherCurrency())||(null!==l?l!==(0,ce.symbolUnit)(c.symbolInfo(),this._model.unitConversionEnabled()):c.isConvertedToOtherUnit())||((0,qe.isActingAsSymbolSource)(e)?h=!0:(0,x.isStudy)(e)&&(h=Boolean(e.metaInfo().is_price_study)));const d=e=>{const t=e.x*s.timeScale().width(),r=e.y*i.height()-40;return new a.Point(t,r)},u=(0,o.ensureNotNull)(e.firstValue());if(this._model.id()===this._clipboardData.modelId||!h)for(let e=0;e(0,tt.trackEvent)("SOS","Apply SOS","Rebind SOS")),this._chartModel.setShouldBeSavedEvenIfHidden(!0),null!==this._paneState){(0,o.ensureNotNull)(this._chartModel.paneForSource(t)).restoreState(this._paneState,!1,this._chartModel.version()),this._paneState=null}}undo(){const e=(0,o.ensureNotNull)(this._chartModel.dataSourceForId((0,o.ensureNotNull)(this._studyId))),t=(0,o.ensureNotNull)(this._chartModel.paneForSource(e)).state();this._chartModel.removeSource(e)&&(this._paneState=t)}insertedStudy(){return this._chartModel.dataSourceForId((0,o.ensureNotNull)(this._studyId))}} -var dt=i(59836),ut=i(88735),pt=i.n(ut),_t=i(79222),mt=i(69746),gt=i(67337);const ft=new c.TranslatedString("zoom",(0,l.t)("zoom"));class vt extends S.UndoCommand{constructor(e,t,i,s,r,n){super(ft),this._barSpacing=null,this._rightBarsOffset=null,this._leftBarsOffset=null,this._priceMode=null,this._model=e,this._startBar=t,this._endBar=i,this._startPrice=s,this._endPrice=r,this._pane=n}redo(){const e=(0,o.ensureNotNull)(this._model.timeScale().visibleBarsStrictRange());this._leftBarsOffset=e.firstBar()-this._startBar,this._rightBarsOffset=e.lastBar()-this._endBar,this._barSpacing=this._model.timeScale().barSpacing(),this._priceMode=this._pane.defaultPriceScale().mode(),this._model.zoomToViewport(this._startBar,this._endBar,this._startPrice,this._endPrice,this._pane)}undo(){const e=this._model.timeScale(),t=this._pane.defaultPriceScale(),i=(0,o.ensureNotNull)(e.visibleBarsStrictRange());e.setBarSpacing((0,o.ensureNotNull)(this._barSpacing)),e.zoomToBarsRange(i.firstBar()+(0,o.ensureNotNull)(this._leftBarsOffset),i.lastBar()+(0,o.ensureNotNull)(this._rightBarsOffset)),t.setMode((0,o.ensureNotNull)(this._priceMode)),t.recalculatePriceRange((0,o.ensureNotNull)(e.visibleBarsStrictRange())),this._model.recalculateAllPanes((0,ue.viewportChangeEvent)()),this._model.lightUpdate()}}const St=(0,_.getLogger)("Chart.ChartUndoModel"),yt=new c.TranslatedString("zoom",(0,l.t)("zoom"));class bt extends S.UndoCommand{constructor(e,t,i){super(yt),this._baseCmd=e,this._zoomStack=t,this._inOut=i}undo(){if(this._inOut){if(this._baseCmd!==this._zoomStack.head())return void St.logDebug("zoom stack inconsistency");this._baseCmd.undo(),this._zoomStack.pop()}else this._baseCmd.redo(),this._zoomStack.push(this._baseCmd)}redo(){if(this._inOut)this._baseCmd.redo(),this._zoomStack.push(this._baseCmd);else{if(this._baseCmd!==this._zoomStack.head())return void St.logDebug("zoom stack inconsistency");this._baseCmd.undo(),this._zoomStack.pop()}}}const wt=new c.TranslatedString("stop syncing drawing",(0,l.t)("stop syncing drawing"));class Ct extends S.UndoCommand{constructor(e,t){super(wt),this._model=e,this._sourceId=t.id(),this._linkKey=t.linkKey().value()}redo(){(0,o.ensureNotNull)(this._model.dataSourceForId(this._sourceId)).linkKey().setValue(null)}undo(){(0,o.ensureNotNull)(this._model.dataSourceForId(this._sourceId)).linkKey().setValue(this._linkKey)}}const Pt=new c.TranslatedString("restore defaults",(0,l.t)("restore defaults"));class Tt extends S.UndoCommand{constructor(e,t,i=Pt){super(i),this._chartModel=e,this._defaultProperty=t,this._state=t.state()}redo(){this._chartModel.restoreFactoryDefaults(this._defaultProperty)}undo(){this._defaultProperty.mergeAndFire(this._state),this._chartModel.mainSeries().onChartStyleChanged()}}var xt=i(52418);class It extends Tt{redo(){this._defaultProperty.hasChild("intervalsVisibilities")&&this._defaultProperty.childs().intervalsVisibilities.mergeAndFire(xt.intervalsVisibilitiesDefaults),super.redo()}}class Mt extends It{redo(){super.redo(),this._chartModel.recalcColorStudies(!0)}undo(){super.undo(), -this._chartModel.recalcColorStudies(!0)}}var Lt=i(36759),At=i(15840),Et=i(59803);function kt(e){const{visible:t,...i}=e;return i}function Dt(e){const{visible:t,...i}=e;return i}function Vt(e){const{drawWick:t,drawBorder:i,drawBody:s,barColorsOnPrevClose:r,...n}=e;return n}function Bt(e){const{drawWick:t,drawBorder:i,drawBody:s,...r}=e;return r}function Nt(e){const{drawWick:t,drawBorder:i,drawBody:s,showRealLastPrice:r,inputs:n,...o}=e;return o}function Rt(e){const{barColorsOnPrevClose:t,dontDrawOpen:i,thinBars:s,...r}=e;return r}function Ot(e){const{showBorders:t,showLabels:i,fontSize:s,drawBody:r,...n}=e;return n}function Ft(e){const{linestyle:t,linewidth:i,styleType:s,priceSource:r,...n}=e;return n}function Wt(e){const{linestyle:t,linewidth:i,priceSource:s,...r}=e;return r}function Ht(e){const{inputs:t,...i}=e;return i}function zt(e){const{inputs:t,...i}=e;return i}function Ut(e){const{inputs:t,...i}=e;return i}function jt(e){const{inputs:t,...i}=e;return i}function Gt(e){const{topLineWidth:t,bottomLineWidth:i,baseLevelPercentage:s,priceSource:r,...n}=e;return n}function qt(e){const{thinBars:t,inputs:i,...s}=e;return s}function Yt(e){const{visible:t,style:i,symbol:s,interval:r,sessionId:n,highLowAvgPrice:o,showCountdown:a,bidAsk:l,prePostMarket:c,priceAxisProperties:h,candleStyle:d,hollowCandleStyle:u,haStyle:p,barStyle:_,hiloStyle:m,lineStyle:g,areaStyle:f,renkoStyle:v,pbStyle:S,kagiStyle:y,pnfStyle:b,baselineStyle:w,rangeStyle:C,...P}=e;return{bidAsk:kt(l),prePostMarket:Dt(c),candleStyle:Vt(d),hollowCandleStyle:Bt(u),haStyle:Nt(p),barStyle:Rt(_),hiloStyle:Ot(m),lineStyle:Ft(g),areaStyle:Wt(f),renkoStyle:Ht(v),pbStyle:zt(S),kagiStyle:Ut(y),pnfStyle:jt(b),baselineStyle:Gt(w),rangeStyle:qt(C),...P}}function Kt(e){const{scaleSeriesOnly:t,showSeriesLastValue:i,showStudyLastValue:s,showSymbolLabels:r,showBidAskLabels:n,showPrePostMarketPriceLabel:o,showStudyPlotLabels:a,showFundamentalNameLabel:l,showFundamentalLastValue:c,seriesLastValueMode:h,...d}=e;return d}function $t(e){const{topMargin:t,bottomMargin:i,...s}=e;return s}const Xt=new c.TranslatedString("apply chart theme",(0,l.t)("apply chart theme"));class Zt extends S.UndoCommand{constructor(e,t,i){var s,r,n;super(Xt),this._model=e,this._newSessionProps=t.sessions||(0,Et.factoryDefaults)("sessions"),["candleStyle","hollowCandleStyle","haStyle"].forEach(e=>{t.mainSourceProperties[e].wickUpColor=t.mainSourceProperties[e].wickUpColor||t.mainSourceProperties[e].wickColor,t.mainSourceProperties[e].wickDownColor=t.mainSourceProperties[e].wickDownColor||t.mainSourceProperties[e].wickColor}),t.chartProperties=null!==(s=t.chartProperties)&&void 0!==s?s:{paneProperties:void 0,scalesProperties:void 0},t.chartProperties.paneProperties.vertGridProperties=null!==(r=t.chartProperties.paneProperties.vertGridProperties)&&void 0!==r?r:t.chartProperties.paneProperties.gridProperties,t.chartProperties.paneProperties.horzGridProperties=null!==(n=t.chartProperties.paneProperties.horzGridProperties)&&void 0!==n?n:t.chartProperties.paneProperties.gridProperties -;const o=this._model.properties().state().paneProperties.legendProperties;delete o.backgroundTransparency,t.chartProperties.paneProperties.legendProperties={...t.chartProperties.paneProperties.legendProperties,...o};const a=(0,Et.factoryDefaults)("chartproperties"),l=(0,At.deepExtend)({},a,t.chartProperties);this._newChartProps={paneProperties:$t(l.paneProperties),scalesProperties:Kt(l.scalesProperties)},e.timeScale().preserveBarSpacing()&&delete this._newChartProps.scalesProperties.barSpacing;const c=(0,Et.factoryDefaults)("chartproperties.mainSeriesProperties"),h=(0,At.deepExtend)({},c,t.mainSourceProperties);this._newSeriesProps=i?h:Yt(h);const d=e.properties().state();this._oldChartProps={paneProperties:$t(d.paneProperties),scalesProperties:Kt(d.scalesProperties)};const u=e.mainSeries().properties().state();this._oldSeriesProps=i?u:Yt(u),this._oldSessionProps=this._model.sessions().properties().state()}undo(){this._merge(this._oldChartProps,this._oldSeriesProps,this._oldSessionProps),this._model.mainSeries().onChartStyleChanged(),this._model.updateScales(),this._model.chartThemeLoaded()}redo(){this._merge(this._newChartProps,this._newSeriesProps,this._newSessionProps),this._model.mainSeries().onChartStyleChanged(),this._model.updateScales(),this._model.chartThemeLoaded()}_merge(e,t,i){var s,r,n,o;const a=this._model;(0,le.saveDefaultProperties)(!0),e&&(a.properties().childs().paneProperties.mergeAndFire(e.paneProperties),a.properties().childs().scalesProperties.mergeAndFire(e.scalesProperties)),"priceAxisProperties"in t&&a.mainSeries().priceScale().setMode({autoScale:null===(s=t.priceAxisProperties)||void 0===s?void 0:s.autoScale,percentage:null===(r=t.priceAxisProperties)||void 0===r?void 0:r.percentage,log:null===(n=t.priceAxisProperties)||void 0===n?void 0:n.log,lockScale:null===(o=t.priceAxisProperties)||void 0===o?void 0:o.lockScale}),a.mainSeries().properties().mergeAndFire(t),a.mainSeries().properties().saveDefaults(),a.mainSeries().createPaneView(),a.mainSeries().invalidateBarStylesCache(),a.recalculateAllPanes((0,ue.globalChangeEvent)()),a.fullUpdate(),a.properties().saveDefaults(),a.sessions().restoreState({properties:i},!1),(0,le.saveDefaultProperties)(!1)}}const Jt=new c.TranslatedString("change resolution",(0,l.t)("change resolution"));class Qt extends S.UndoCommand{constructor(e,t,i){let s;super(Jt),this._sourceId=e.id();const r=(0,ce.isRangeStyle)(e.style()),n=me.Interval.isRange(t);!r&&n?s=11:r&&!n&&(s=(0,ce.getLastUsedStyle)()),this._newSymbolParams={interval:t,style:s},this._prevSymbolParams={symbol:e.symbol(),currency:e.currency(),unit:e.unit(),interval:e.interval(),style:e.style()},this._chartWidget=i}redo(){this._chartWidget.screen.show();this._symbolSource().setSymbolParams(this._newSymbolParams)}undo(){this._chartWidget.screen.show();this._symbolSource().setSymbolParams(this._prevSymbolParams)}_symbolSource(){return(0,o.ensureNotNull)(this._chartWidget.model().model().dataSourceForId(this._sourceId))}}const ei=new c.TranslatedString("send {title} backward",(0, -l.t)("send {title} backward")),ti=new c.TranslatedString("bring {title} forward",(0,l.t)("bring {title} forward")),ii=new c.TranslatedString("insert {title} after {target}",(0,l.t)("insert {title} after {target}")),si=new c.TranslatedString("insert {title} before {target}",(0,l.t)("insert {title} before {target}")),ri=new c.TranslatedString("cut {title}",(0,l.t)("cut {title}")),ni=new c.TranslatedString("cut sources",(0,l.t)("cut sources")),oi=new c.TranslatedString("remove {title}",(0,l.t)("remove {title}")),ai=new c.TranslatedString("remove drawings group",(0,l.t)("remove drawings group")),li=new c.TranslatedString("move scale",(0,l.t)("move scale")),ci=new c.TranslatedString("stop syncing line tool(s)",(0,l.t)("stop syncing line tool(s)")),hi=new c.TranslatedString("zoom out",(0,l.t)("zoom out")),di=new c.TranslatedString("zoom in",(0,l.t)("zoom in")),ui=new c.TranslatedString("move drawing(s)",(0,l.t)("move drawing(s)")),pi=new c.TranslatedString("load default drawing template",(0,l.t)("load default drawing template")),_i=new c.TranslatedString("change currency",(0,l.t)("change currency")),mi=new c.TranslatedString("change unit",(0,l.t)("change unit")),gi=new c.TranslatedString("clone line tools",(0,l.t)("clone line tools")),fi=new c.TranslatedString("merge up",(0,l.t)("merge up")),vi=new c.TranslatedString("merge down",(0,l.t)("merge down")),Si=new c.TranslatedString("merge to pane",(0,l.t)("merge to pane")),yi=new c.TranslatedString("unmerge up",(0,l.t)("unmerge up")),bi=new c.TranslatedString("unmerge down",(0,l.t)("unmerge down")),wi=new c.TranslatedString("unmerge to new bottom pane",(0,l.t)("unmerge to new bottom pane")),Ci=new c.TranslatedString("move {title} to new right scale",(0,l.t)("move {title} to new right scale")),Pi=new c.TranslatedString("move {title} to new left scale",(0,l.t)("move {title} to new left scale")),Ti=new c.TranslatedString("make {title} no scale (Full screen)",(0,l.t)("make {title} no scale (Full screen)")),xi=new c.TranslatedString("scroll time",(0,l.t)("scroll time")),Ii=new c.TranslatedString("scale time",(0,l.t)("scale time")),Mi=new c.TranslatedString("reset time scale",(0,l.t)("reset time scale")),Li=new c.TranslatedString("reset scales",(0,l.t)("reset scales")),Ai=new c.TranslatedString("create {tool}",(0,l.t)("create {tool}")),Ei=new c.TranslatedString("change {pointIndex} point",(0,l.t)("change {pointIndex} point")),ki=new c.TranslatedString("paste {title}",(0,l.t)("paste {title}")),Di=new c.TranslatedString("insert {title}",(0,l.t)("insert {title}")),Vi=new c.TranslatedString("remove all studies",(0,l.t)("remove all studies")),Bi=new c.TranslatedString("remove drawings",(0,l.t)("remove drawings")),Ni=new c.TranslatedString("remove all studies and drawing tools",(0,l.t)("remove all studies and drawing tools"));new c.TranslatedString("turn line tools sharing off",(0,l.t)("turn line tools sharing off")),new c.TranslatedString("share line tools in layout",(0,l.t)("share line tools in layout")),new c.TranslatedString("share line tools globally",(0, -l.t)("share line tools globally"));function Ri(e,t){return{bringForwardEnabled:e.bringForwardEnabled||t.bringForwardEnabled,bringToFrontEnabled:e.bringToFrontEnabled||t.bringToFrontEnabled,sendBackwardEnabled:e.sendBackwardEnabled||t.sendBackwardEnabled,sendToBackEnabled:e.sendToBackEnabled||t.sendToBackEnabled}}function Oi(e){return new c.TranslatedString(e.name(),e.title())}function Fi(){return(0,Me.drawOnAllCharts)().value()?1:0}class Wi extends(r()){constructor(e,t,i,s,r,n,o,a,l,c,h){super(),this._createLineCommand=null,this._initialTimeScrollState=null,this._initialTimeScrollPos=null,this._scalePriceInfo=null,this._currentSourceMoveCommand=null,this._currentLineChangeCommand=null,this._currentCustomMoveCommand=null,this._zoomStack=new v.UndoStack,this._lineToolsDoNotAffectChartInvalidation=new Te.FeatureToggleWatchedValue("do_not_invalidate_chart_on_changing_line_tools",!1),this._chartWidget=n,this.m_model=new(pt())(e,t,i,s,r,this,a,l,c,h),this._undoHistory=o,this._lineToolsGroupController=new Re({model:this._model.bind(this),pushUndoCommand:this._pushUndoCommand.bind(this),beginUndoMacro:(e,t)=>{this._undoHistory.beginUndoMacro(e).setCustomFlag("doesnt_affect_save",!!t)},endUndoMacro:this._undoHistory.endUndoMacro.bind(this._undoHistory),emitEvent:this.emitEvent.bind(this)})}undoHistory(){return this._undoHistory}setWatchedValue(e,t,i){this._undoHistory.setWatchedValue(e,t,i)}lineToolsGroupController(){return this._lineToolsGroupController}mergeAllScales(e){!function(e,t){e.beginUndoMacro("left"===t?m:g),e.model().panes().forEach(i=>{const s="left"===t?i.rightPriceScales():i.leftPriceScales(),r=("left"===t?i.leftPriceScales():i.rightPriceScales()).concat(s),n="overlay"===i.priceScalePosition(i.defaultPriceScale())?r[0]:i.defaultPriceScale();e.movePriceScale(i,n,t,0),r.forEach(t=>{if(t===n)return;let s=t.mainSource();for(;null!==s;){e.moveToScale(s,i,n,null,!0);const r=t.mainSource();if(r===s){f.logError("Loop detected while trying to merge scales");break}s=r}})}),e.endUndoMacro(),e.model().fullUpdate()}(this,e)}movePriceScale(e,t,i,s){const r=new y(this._model(),e,t,i,s,li);this._pushUndoCommand(r)}createLineTool({pane:e,point:t,linetool:i,properties:s,linkKey:r,ownerSource:n,disableSynchronization:a,sharingMode:l=Fi(),id:h}){if(("LineToolRegressionTrend"===i||"LineToolAnchoredVWAP"===i)&&!this.canCreateStudy())return(0,d.showTooManyStudiesNotice)(),null;const u=Ai.format({tool:new c.TranslatedString(i,E.lineToolsLocalizedNames[i])});this.beginUndoMacro(u,this._lineToolsDoNotAffectChartInvalidation.value());const p=!a;this._createLineCommand=new D(this._model(),e,i,n||(0,o.ensureNotNull)(e.mainDataSource()),l,h);const _=this._createLineCommand.startCreatingLine(t,s,r||null),m=(0,o.ensureNotNull)(this._createLineCommand.line());let g=null;if(_&&(p&&this.finishLineTool(m),this._pushUndoCommand(this._createLineCommand),this._createLineCommand=null,g={points:m.normalizedPoints(),interval:this.mainSeries().interval()}),p&&void 0===r&&(0,Me.drawOnAllCharts)().value()&&m.isSynchronizable()){const e=(0, -o.ensureNotNull)(this.model().externalTimeStamp(t.index)),s={point:{price:t.price,timeStamp:e},linetool:i,properties:m.properties(),symbol:this.mainSeries().symbol(),model:this.model(),linkKey:(0,o.ensureNotNull)(m.linkKey().value()),finalState:g,id:m.id()};m.isFixed()&&(s.pointPositionPercents=m.calcPositionPercents()[0]),(0,Me.createLineTool)(s)}return this.endUndoMacro(),m}continueCreatingLine(e,t,i,s){const r=(0,o.ensureNotNull)(this._createLineCommand);this.beginUndoMacro(r.text(),this._lineToolsDoNotAffectChartInvalidation.value());const n=(0,o.ensureNotNull)(this._model().lineBeingCreated()),a=r.continueCreatingLine(e,t,i,s);let l=null;if(a&&(this.finishLineTool(n),this._pushUndoCommand(r),this._createLineCommand=null,l={points:n.normalizedPoints(),interval:this.mainSeries().interval()}),r.drawOnAllCharts()&&n.isSynchronizable()){const i=(0,o.ensureNotNull)(this._model().externalTimeStamp(e.index));(0,Me.continueLineTool)({point:{price:e.price,timeStamp:i},envState:t,finalState:l,model:this._model()})}return this.endUndoMacro(),a}continueExternalLine(e,t,i){const s=(0,o.ensureNotNull)(this._createLineCommand),r=s.continueCreatingLine(e,t,i);return r&&(this._pushUndoCommand(s),this._createLineCommand=null),r}finishLineTool(e){this._model().finishLineTool(e)}pasteImageAsLineTool(e,t,i,s){return null}loadRange(e){this._pushUndoCommand(new fe(this._model(),e))}unlinkLines(e){const t=this.model();this.beginUndoMacro(ci,this._lineToolsDoNotAffectChartInvalidation.value());for(const i of e)null!==i.linkKey().value()&&(0,Me.removeLineTool)({withUndo:!0,model:this.model(),symbol:i.symbol(),linkKey:(0,o.ensureNotNull)(i.linkKey().value()),sourceTitle:Oi(i),lineToolState:i.state(!1),unlink:!0}),this._pushUndoCommand(new Ct(t,i));this.endUndoMacro()}zoomFromViewport(){const e=new bt((0,o.ensureDefined)(this._zoomStack.head()),this._zoomStack,!1);this._pushUndoCommand(e)}zoomToViewport(e,t,i,s,r){const n=new vt(this.m_model,e,t,i,s,r),o=new bt(n,this._zoomStack,!0);this._pushUndoCommand(o)}zoomStack(){return this._zoomStack}hoveredSource(){return this.m_model.hoveredSource()}setProperty(e,t,i,s){if(e&&e.value()!==t){const r=new xe(e,t,i,this.m_model,s);this._pushUndoCommand(r),this.emitEvent("setProperty")}}withMacro(e,t,i){const s=this.beginUndoMacro(e,i);try{t()}finally{this.endUndoMacro()}return s}barsMarksSources(){return this.m_model.barsMarksSources()}barMarksSourceForId(e){return this.m_model.barMarksSourceForId(e)}removeAllDrawingTools(){this.beginUndoMacro(Bi,!0),this._removeAllDrawingToolsImpl(),this.endUndoMacro()}removeAllStudiesAndDrawingTools(){this.beginUndoMacro(Ni),this._removeAllDrawingToolsImpl(),this._removeAllStudiesImpl(),this.endUndoMacro()}removeAllStudies(){this.beginUndoMacro(Vi),this._removeAllStudiesImpl(),this.endUndoMacro()}canZoomIn(){return this.model().canZoomIn()}canZoomOut(){return this.model().canZoomOut()}zoomOut(){const e=this.timeScale().width();if(this.canZoomOut()){try{this.beginUndoMacro(hi)}catch(e){return}(0,ve.doAnimate)({to:e/5,onStep:e=>{this.startScaleTime(0), -this.scaleTimeTo(e),this.endScaleTime()},onComplete:()=>this.endUndoMacro()})}}zoomIn(){const e=this.timeScale().width();if(this.canZoomIn()){try{this.beginUndoMacro(di)}catch(e){return}(0,ve.doAnimate)({to:e/5,onStep:e=>{this.startScaleTime(e),this.scaleTimeTo(0),this.endScaleTime()},onComplete:()=>this.endUndoMacro()})}}startMovingSources(e,t,i,s){e.filter(e=>e.doesMovingAffectsUndo()).length&&(this._currentSourceMoveCommand=new I(this.model(),e,ui,!1),e.every(b.isLineTool)&&this._currentSourceMoveCommand.setCustomFlag("doesnt_affect_save",this._lineToolsDoNotAffectChartInvalidation.value())),this.model().startMovingSources(e,t,i,new Map,s)}moveSources(e,t){this.model().moveSources(e,new Map,t)}endMovingSource(e,t){this.model().endMovingSources(e,void 0,t),null!==this._currentSourceMoveCommand&&(this._currentSourceMoveCommand.saveNewState(),this._pushUndoCommand(this._currentSourceMoveCommand)),this._currentSourceMoveCommand=null}startChangingLinetool(e,t,i,s,r){this._currentLineChangeCommand=new I(this.model(),[e],Ei.format({pointIndex:i}),!1),this._currentLineChangeCommand.setCustomFlag("doesnt_affect_save",this._lineToolsDoNotAffectChartInvalidation.value()),this.model().startChangingLinetool(e,t,i,s,r)}changeLinePoint(e,t){this.model().changeLinePoint(e,t)}endChangingLinetool(e){this.model().endChangingLinetool(e),null!==this._currentLineChangeCommand&&(this._currentLineChangeCommand.saveNewState(),this._pushUndoCommand(this._currentLineChangeCommand)),this._currentLineChangeCommand=null}setChartStyleProperty(e,t,i){if(e.value()!==t){const s=new pe(e,t,this.mainSeries(),i,this.model(),this.chartWidget());this._pushUndoCommand(s),this.emitEvent("setChartStyleProperty"),(0,ae.trackChartStyleChanged)(e.value())}}restorePropertiesForSource(e){(0,b.isLineTool)(e)?this._restoreLineToolFactoryDefaults(e):this._restoreStudyFactoryDefaults(e)}restoreState(e,t,i){return this.m_model.restoreState(e,t,i)}async clipboardCopy(e,t=this.selection().dataSources()){if(!(0,gt.enabled)("datasource_copypaste"))return;const i=t.filter(e=>e.copiable());if(0===i.length)return;for(const e of i)if((0,x.isStudy)(e)&&e.isChildStudy())throw new Error("Can not copy child study");const s=(0,V.clipboardDataForSources)(this._model().id(),i);return null!==s?e.write({app:JSON.stringify(s),text:s.title}):void 0}async clipboardCut(e,t=this.selection().dataSources()){if(!(0,gt.enabled)("datasource_copypaste"))return;const i=t.filter(e=>e.copiable());if(0===i.length)return;await this.clipboardCopy(e,i);const s=i.filter(e=>e.isUserDeletable());if(0===s.length)return;const r=(1===s.length?ri:ni).format({title:Oi(s[0])});this.beginUndoMacro(r),this.m_model.selectionMacro(()=>{this.removeSources(s,!1,r)}),this.endUndoMacro()}async clipboardPaste(e,t){let i=null;if((0,gt.enabled)("datasource_copypaste")&&(i=i||await e.read(),i.app)){const e=JSON.parse(i.app);if(null!==this.pasteSourceFromClip(t,e))return}await this._processSpecialLineToolsContents(e,i,t)}applyStudyTemplate(e,t){const i=new je(this._model(),e,t);this._pushUndoCommand(i)} -startCustomMoving(e,t,i){this._currentCustomMoveCommand=new ct(this.model(),e,t,i)}customMoveBeingProcessed(){return null!==this._currentCustomMoveCommand}processCustomMove(e){(0,o.ensureNotNull)(this._currentCustomMoveCommand).move(e)}endCustomMoving(){null!==this._currentCustomMoveCommand&&this._currentCustomMoveCommand.hasChanges()&&(this._pushUndoCommand(this._currentCustomMoveCommand),this._currentCustomMoveCommand=null)}cloneLineTools(e,t){for(let t=0;t(0,o.ensureNotNull)(this.model().dataSourceForId(e)));this.copyToOtherCharts(e)}return this.endUndoMacro(),this.emitEvent("cloneLineTools"),i.newIds()}removeSource(e,t,i){this.lineBeingCreated()!==e?this.removeSources([e],t,oi.format({title:Oi(e)}),i):this.cancelCreatingLine()}removeSelectedSources(){const e=this._model().selection().dataSources();if(!e.length)return;const t=(e.length>1?ai:oi).format({title:Oi(e[0])});this.removeSources(e,!1,t)}removeSources(e,t,i,s){s||(e=e.filter(e=>e.isUserDeletable()));const r=this._model(),n=r.lineToolsGroupModel(),a=e.every(b.isLineTool)&&this._lineToolsDoNotAffectChartInvalidation.value();this.beginUndoMacro(i,a),r.selectionMacro(s=>{const a=new Map;e.forEach(e=>{if((0,b.isLineTool)(e)){const t=n.groupForLineTool(e);if(null!==t){const i=a.get(t)||[];i.push(e),a.set(t,i)}null!==e.linkKey().value()&&(0,Me.removeLineTool)({withUndo:!0,model:this.model(),linkKey:(0,o.ensureNotNull)(e.linkKey().value()),symbol:this.model().mainSeries().symbol(),lineToolState:e.state(!1),sourceTitle:Oi(e)})}}),a.forEach((e,t)=>{const i=new P.ExcludeLineToolsFromGroupUndoCommand(r,t,e);this._pushUndoCommand(i)});const l=new C.RemoveSourcesCommand(r,e,i),c=l.removedIds();this._pushUndoCommand(l),!t&&c.length>0&&(1===c.length?this.emitEvent("removeSource",[c[0]]):this.emitEvent("removeSources",[c]))}),this.endUndoMacro()}removeUnloadedLineTool({lineToolsSynchronizer:e,sourceTitle:t,linkKey:i,symbol:s,state:r,withUndo:n,unlink:o}){}async scrollToLineTool(e){const t=this.timeScale().logicalRange();if(null===t)return;const i=this.timeScale().barSpacing();let s=t.left();const r=e.points().map(e=>e.index);let n=this.timeScale().points().firstIndex();const a=this.timeScale().points().lastIndex();if(null===n||null===a)return;const l=t.length()/2;if(0===r.length||r.some(e=>t.contains(e)))return;const c=()=>{const t=e.points().map(e=>e.index),i=t.filter(e=>e<=a).reduce((e,t)=>null===e?t:Math.max(e,t),null);return null!==i?i:t.reduce((e,t)=>Math.min(e,t))};let d,u=c();if(n-l>u){const t=e.points().map(e=>e.time).filter(T.notUndefined).map(e=>e.valueOf()/1e3);if(0===t.length)return;const i=t.reduce((e,t)=>Math.min(e,t),t[0]);await this.model().gotoTime(i),u=c();s=(0,o.ensureNotNull)(this.timeScale().logicalRange()).left(),n=(0,o.ensureNotNull)(this.timeScale().points().firstIndex())}n-l>u?(d=(s-n+l)*i, -this.mainSeries().setGotoDateResult({timestamp:(0,o.ensureNotNull)(this.timeScale().points().valueAt(n)),eod:!0})):d=(s-u+1+l)*i,this.startScrollTime(0),(0,ve.doAnimate)({onStep:(e,t)=>this.scrollTimeTo(t),from:0,to:Math.round(d),easing:h.easingFunc.easeInOutCubic,duration:h.dur,onComplete:()=>this.endScrollTime()})}mergeSourceUp(e){const t=new L.MergeUpUndoCommand(this._model(),e,fi);this._mergeUnmergeSource(e,t)}mergeSourceDown(e){const t=new L.MergeDownUndoCommand(this._model(),e,vi);this._mergeUnmergeSource(e,t)}mergeToPane(e,t){const i=this._model().panes().indexOf(t),s=new L.MergeToTargetPane(this._model(),e,i,Si);this._mergeUnmergeSource(e,s)}unmergeSourceUp(e){const t=new M.UnmergeUpUndoCommand(this._model(),e,yi);this._mergeUnmergeSource(e,t)}unmergeSourceDown(e){const t=new M.UnmergeDownUndoCommand(this._model(),e,bi);this._mergeUnmergeSource(e,t)}unmergeToNewBottomPane(e){const t=new M.UnmergeToNewBottomPane(this._model(),e,wi);this._mergeUnmergeSource(e,t)}availableZOrderOperations(e){const t=this._model().lineToolsGroupModel(),i=e.filter(b.isLineTool),s=i.map(e=>t.groupForLineTool(e));(0,o.assert)(new Set(s).size<=1,"Cannot move line tools from different group");const r=0===s.length?null:s[0];let n={bringForwardEnabled:!1,bringToFrontEnabled:!1,sendBackwardEnabled:!1,sendToBackEnabled:!1};const a=new Set(i);for(const t of(0,A.sortSources)(e)){if((0,b.isLineTool)(t)&&null!==r){const e=(0,A.sortSources)(r.lineTools().filter(e=>!a.has(e)||e===t));n=Ri(n,{bringForwardEnabled:t!==e[e.length-1],bringToFrontEnabled:t!==e[e.length-1],sendBackwardEnabled:t!==e[0],sendToBackEnabled:t!==e[0]});continue}const e=(0,o.ensureNotNull)(this._model().paneForSource(t)).sourcesByGroup().allExceptSpecialSources();if(0===e.length)continue;const i=t.zorder(),s=e[0].zorder(),l=e[e.length-1].zorder();n=Ri(n,{bringForwardEnabled:i!==l,bringToFrontEnabled:i!==l,sendBackwardEnabled:i!==s,sendToBackEnabled:i!==s})}return n}sendToBack(e){if(!this.availableZOrderOperations(e).sendToBackEnabled)throw new Error("Send to back operation is unavailable");let t=null;const i=e[0];if((0,b.isLineTool)(i)){const s=this._model().lineToolsGroupModel().groupForLineTool(i);if(null!==s){const i=s.lineTools();t=new X(this.model(),(0,A.sortSources)(e),i[0])}}null===t&&(t=new q(this.model(),(0,A.sortSources)(e))),this._pushUndoCommand(t),this.emitEvent("changeZOrder",[e])}bringToFront(e){if(!this.availableZOrderOperations(e).bringToFrontEnabled)throw new Error("Bring to front operation is unavailable");let t=null;const i=e[0];if((0,b.isLineTool)(i)){const s=this._model().lineToolsGroupModel().groupForLineTool(i);if(null!==s){const i=s.lineTools();t=new K(this.model(),(0,A.sortSources)(e),i[i.length-1])}}null===t&&(t=new G(this.model(),(0,A.sortSources)(e))),this._pushUndoCommand(t),this.emitEvent("changeZOrder",[e])}sendBackward(e){if(!this.availableZOrderOperations(e).sendBackwardEnabled)throw new Error("Send backward operation is unavailable");const t=ei.format({title:Oi(e[0])});this._sendBackOrBringForward(t,(0, -A.sortSources)(e),(e,t)=>new J(this.model(),e,t))}bringForward(e){if(!this.availableZOrderOperations(e).bringForwardEnabled)throw new Error("Bring forward operation is unavailable");const t=ti.format({title:Oi(e[0])});this._sendBackOrBringForward(t,(0,A.sortSources)(e),(e,t)=>new ee(this.model(),e,t))}insertAfter(e,t){e=(0,A.sortSources)(e);const i=ii.format({title:Oi(e[0]),target:Oi(t)});this._insertAfterOrBefore(i,e,t,()=>new K(this.model(),e,t))}insertBefore(e,t){e=(0,A.sortSources)(e);const i=si.format({title:Oi(e[0]),target:Oi(t)});this._insertAfterOrBefore(i,e,t,()=>new X(this.model(),e,t))}detachToRight(e,t){(0,tt.trackEvent)("Chart","Move to new right scale");const i=Ci.format({title:Oi(e)}),s=new Je.MoveToNewPriceScaleUndoCommand(this.model(),e,t,"right",i);this._pushUndoCommand(s),this.emitEvent("moveSource",[e])}detachToLeft(e,t){(0,tt.trackEvent)("Chart","Move to new left scale");const i=Pi.format({title:Oi(e)}),s=new Je.MoveToNewPriceScaleUndoCommand(this.model(),e,t,"left",i);this._pushUndoCommand(s),this.emitEvent("moveSource",[e])}detachNoScale(e,t){(0,tt.trackEvent)("Chart","Make source no scale");const i=Ti.format({title:Oi(e)}),s=new Je.MoveToNewPriceScaleUndoCommand(this.model(),e,t,"overlay",i);this._pushUndoCommand(s),this.emitEvent("moveSource",[e])}moveToScale(e,t,i,s,r){(0,tt.trackEvent)("Chart","Move source to target scale"),this.beginUndoMacro(s);const n=new Je.MoveToExistingPriceScaleUndoCommand(this.model(),e,t,i,s),o=r?null:(0,it.sourceNewCurrencyOnPinningToPriceScale)(e,i,this._model()),a=r?null:(0,_t.sourceNewUnitOnPinningToPriceScale)(e,i,this._model());this._pushUndoCommand(n),null!==o&&this.setPriceScaleCurrency(i,o),null!==a&&this.setPriceScaleUnit(i,a),this.endUndoMacro(),this.emitEvent("moveSource",[e])}startScrollTime(e){const t=this.timeScale();this._initialTimeScrollState={rightOffset:t.rightOffset(),barSpacing:t.barSpacing()},this._initialTimeScrollPos=e,this.model().startScrollTime(e)}scrollTimeTo(e){let t=!1;return null!==this._initialTimeScrollPos&&null!==this._initialTimeScrollState&&Math.abs(e-this._initialTimeScrollPos)>20&&(this._pushUndoCommand(new oe.TimeScaleChangeUndoCommand(this.model(),this._initialTimeScrollState,xi)),this._initialTimeScrollPos=null,this._initialTimeScrollState=null,t=!0),this.model().scrollTimeTo(e),t}endScrollTime(){this.model().endScrollTime(),this._initialTimeScrollPos=null,this._initialTimeScrollState=null}startScaleTime(e){const t=this.timeScale(),i={rightOffset:t.rightOffset(),barSpacing:t.barSpacing()};this._pushUndoCommand(new oe.TimeScaleChangeUndoCommand(this.model(),i,Ii)),this.model().startScaleTime(e)}scaleTimeTo(e){this.model().scaleTimeTo(e)}endScaleTime(){this.model().endScaleTime()}resetTimeScale(){const e=this.timeScale(),t={rightOffset:e.rightOffset(),barSpacing:e.barSpacing()};this._pushUndoCommand(new oe.TimeScaleChangeUndoCommand(this.model(),t,Mi)),this.model().resetTimeScale()}startScalePrice(e,t,i,s){this._scalePriceInfo={priceScaleState:t.state(),tryMergeConsecutiveScales:s},this.model().startScalePrice(e,t,i)} -scalePriceTo(e,t,i){this.model().scalePriceTo(e,t,i)}endScalePrice(e,t){this.model().endScalePrice(e,t);const i=(0,o.ensureNotNull)(this._scalePriceInfo);(0,n.default)(i.priceScaleState,t.state())||this._pushUndoCommand(new mt.PriceScaleChangeUndoCommand(this.model(),e,t,i.priceScaleState,i.tryMergeConsecutiveScales)),this._scalePriceInfo=null}startTwoPointsScalePrice(e,t,i,s,r){this._scalePriceInfo={priceScaleState:t.state(),tryMergeConsecutiveScales:r},this.model().startTwoPointsScalePrice(e,t,i,s)}twoPointsScalePriceTo(e,t,i,s){this.model().twoPointsScalePriceTo(e,t,i,s)}endTwoPointsScalePrice(e,t){this.model().endTwoPointsScalePrice(e,t);const i=(0,o.ensureNotNull)(this._scalePriceInfo);(0,n.default)(i.priceScaleState,t.state())||this._pushUndoCommand(new mt.PriceScaleChangeUndoCommand(this.model(),e,t,i.priceScaleState,i.tryMergeConsecutiveScales)),this._scalePriceInfo=null}resetPriceScale(e,t){const i=t.state();this.model().resetPriceScale(e,t),(0,n.default)(i,t.state())||this._pushUndoCommand(new mt.PriceScaleChangeUndoCommand(this.m_model,e,t,i))}rearrangePanes(e,t){const i=new ne(this._model(),e,t);this._pushUndoCommand(i)}movePane(e,t){const i=new ne(this._model(),e,t);this._pushUndoCommand(i)}pasteSourceFromClip(e,t,i){const s=t;if(!s||0===s.sources.length)return null;const r=e||(0,o.ensureNotNull)(this.model().paneForSource(this.mainSeries()));if(!s.sources.some(e=>"drawing"!==e.type||null!==r.clipboardLineToolOwnerSource(e.source.id)))return null;this.beginUndoMacro(ki.format({title:s.title}));let n=0;const a=[],l=[];for(const t of s.sources)if("drawing"===t.type&&null!==r.clipboardLineToolOwnerSource(t.source.id)){const e=this.pasteLineTool(r,t);n<5&&((0,ae.trackDrawingPasted)(e),n+=1),l.push(e),a.push(e)}else"study"===t.type&&t.source&&t.source.metaInfo&&this.checkIfFeatureAvailable(new(p())(t.source.metaInfo))&&a.push(this.pasteStudy(t,i?e:void 0));return l.length&&this.selectionMacro(e=>{e.clearSelection(),l.forEach(t=>{e.addSourceToSelection(t,null)})}),this.endUndoMacro(),a}pasteLineTool(e,t,i,s){t.source.state.intervalsVisibilities=(0,Lt.mergeIntervalVisibilitiesDefaults)(t.source.state.intervalsVisibilities),(0,Lt.makeIntervalsVisibilitiesVisibleAtInterval)(t.source.state.intervalsVisibilities,me.Interval.parse(this.model().mainSeries().interval()));const r=new $e(this.model(),t,e,i,s);this._pushUndoCommand(r);const n=r.source();return r.needCopyToOtherCharts()&&this.copyToOtherCharts([n]),this.selectionMacro(e=>{e.clearSelection(),e.addSourceToSelection(n,null)}),n}pasteStudy(e,t){const i=new nt(this.model(),e,null==t?void 0:t.id());this._pushUndoCommand(i);const s=(0,o.ensureNotNull)(i.state()).id;return(0,o.ensureNotNull)(this._model().dataSourceForId(s))}setPriceScaleCurrency(e,t){const i=new Xe.SetPriceScaleCurrencyUndoCommand(e,t,this.chartWidget(),_i);this._pushUndoCommand(i)}setPriceScaleUnit(e,t){const i=new Ze.SetPriceScaleUnitUndoCommand(e,t,this.chartWidget(),mi);this._pushUndoCommand(i)}setSymbol(e,t){e.symbol()!==t&&this._pushUndoCommand(new et(e,t,this.chartWidget()))} -setResolution(e,t){me.Interval.isEqual(e.interval(),t)||this._pushUndoCommand(new Qt(e,t,this.chartWidget()))}chartLoadTheme(e,t,i){const s=new Zt(this.model(),e,t);i?s.redo():this._pushUndoCommand(s)}isJustClonedChart(){return this._chartWidget.isJustClonedChart()}copyToOtherCharts(e){const t=this.mainSeries(),i=t.syncModel(),s=this.timeScale();if(i)for(const r of e){if(!r.isSynchronizable())continue;const e=r.linkKey().value()||(0,Ge.randomHash)();r.linkKey().setValue(e);const n=r.state(!1),a=r.normalizedPoints(),l=r.properties().interval.value(),c=t.interval();let h;if(me.Interval.isEqual(l,c))h=a.map(e=>{const t=(0,o.ensureNotNull)(s.timePointToIndex(e.time_t))+e.offset;return{price:e.price,timeStamp:(0,o.ensureNotNull)(this.model().externalTimeStamp(t))}});else{const e=i.createNewModelWithResolution(l);h=a.map(t=>({price:t.price,timeStamp:0===t.offset?t.time_t:e.projectTime(t.time_t,t.offset)}))}const d={...n,id:r.id(),linkKey:e,points:h,linetool:r.toolname,model:this.model(),symbol:t.symbol(),finalState:{points:a,interval:l},pointPositionPercents:r.isFixed()?r.calcPositionPercents():void 0,sharingMode:r.sharingMode().value()};(0,Me.copyLineTool)(d)}}addPaneStretchFactorUndoCommand(e,t,i,s){const r=new ot(this.model(),e,t,i,s);this._pushUndoCommand(r)}paneForSource(e){return this.m_model.paneForSource(e)}destroy(){this._lineToolsDoNotAffectChartInvalidation.destroy(),this.m_model.destroy()}moveSelectedToolsLeft(){return this._moveSelectedTools(2)}moveSelectedToolsUp(){return this._moveSelectedTools(0)}moveSelectedToolsRight(){return this._moveSelectedTools(3)}moveSelectedToolsDown(){return this._moveSelectedTools(1)}insertStudyWithoutCheck(e,t){return this._insertStudy(e,t,{},!1,void 0,void 0,void 0,void 0,void 0,null,void 0)}saveLineToolState(e,t){this._pushUndoCommand(new I(this.m_model,[e],t))}resetScales(){this.beginUndoMacro(Li),this.resetTimeScale();for(const e of this.m_model.panes()){for(const t of e.leftPriceScales())this.resetPriceScale(e,t);for(const t of e.rightPriceScales())this.resetPriceScale(e,t)}this.endUndoMacro(),this.m_model.recalculateAllPanes((0,ue.viewportChangeEvent)())}shareLineTools(e,t){}_mergeUnmergeSource(e,t){this.beginUndoMacro(t.text());const i=(0,o.ensureNotNull)(this._model().paneForSource(e)),s=new Set(i.sourcesByGroup().lineSources().filter(t=>t.ownerSource()===e));this._model().lineToolsGroupModel().groups().filter(e=>{const t=e.lineTools().some(e=>s.has(e)),i=e.lineTools().some(e=>!s.has(e));return t&&i}).forEach(e=>{this._pushUndoCommand(new P.ExcludeLineToolsFromGroupUndoCommand(this._model(),e,e.lineTools()))}),this._pushUndoCommand(t),this.endUndoMacro()}_insertStudy(e,t,i,s,r,n,a,l,c,h,d){const u=Di.format({title:e.description});this.beginUndoMacro(u);const p=new ht(this.model(),e,t,i,s,r,n,a,l,c,h||null,u);this._pushUndoCommand(p);const _=p.insertedStudy();if(void 0!==d){const e=new dt.SetPriceScaleModeCommand(d,(0,o.ensureNotNull)(_.priceScale()),null,this.model());this._pushUndoCommand(e)}return this.endUndoMacro(),_}async _processSpecialLineToolsContents(e,t,i){0} -_insertAfterOrBefore(e,t,i,s){const r=(0,o.ensureNotNull)(this._model().paneForSource(i));if(t.some(e=>(0,b.isLineTool)(e)&&this._model().paneForSource(e)!==r))throw new Error("Cannot insert line tool after target on another pane");this.beginUndoMacro(e),t.forEach(e=>{(0,o.ensureNotNull)(this.model().paneForSource(e))!==r&&this.mergeToPane(e,r)});const n=s();this._pushUndoCommand(n),this.emitEvent("changeZOrder",[t]),this.endUndoMacro()}_sendBackOrBringForward(e,t,i){const s=new Map;t.forEach(e=>{const t=(0,o.ensureNotNull)(this._model().paneForSource(e)),i=s.get(t)||[];i.push(e),s.set(t,i)}),this.beginUndoMacro(e),s.forEach((e,t)=>{this._pushUndoCommand(i(t,e))}),this.endUndoMacro(),this.emitEvent("changeZOrder",[t])}_moveSelectedTools(e){const t=this.model().selection().lineDataSources();if(0===t.length)return!1;if((0,Me.lockDrawings)().value())return!0;const i=this.timeScale().visibleBarsStrictRange();if(null===i)return!1;const s=function(e){const t=new Map;for(const i of e){const e=i.ownerSource();if(null===e)continue;let s=t.get(e);if(void 0===s){const r=e.priceScale(),n=e.priceStep(),o=e.firstValue();if(null===r||null===n||null===o)continue;if(null===r.priceRange())continue;s={sources:[],priceScale:r,priceStep:n,startPrice:i.points()[0].price,firstValue:o},t.set(e,s)}s.sources.push(i)}return t}(t);if(0===s.size)return!1;this.beginUndoMacro(ui,this._lineToolsDoNotAffectChartInvalidation.value());const r=i.firstBar(),n=this.timeScale().indexToCoordinate(r),o=r+(3===e?1:2===e?-1:0),l=this.timeScale().indexToCoordinate(o);return Me.isDirectionalMovementActive.setValue(!0),s.forEach(t=>{const{startPrice:i,priceStep:s,priceScale:c,firstValue:h}=t,d=i+(0===e?s:1===e?-s:0),u=c.priceToCoordinate(i,h),p=c.priceToCoordinate(d,h),_={logical:{index:r,price:i},screen:new a.Point(n,u)},m={logical:{index:o,price:d},screen:new a.Point(l,p)};this.startMovingSources(t.sources,_,null),this.moveSources(m),this.endMovingSource(!1,!0)}),Me.isDirectionalMovementActive.setValue(!1),this.endUndoMacro(),!0}_restoreStudyFactoryDefaults(e){const t=new Mt(this.m_model,e.properties());this._pushUndoCommand(t)}_restoreLineToolFactoryDefaults(e){this.beginUndoMacro(pi,this._lineToolsDoNotAffectChartInvalidation.value()),this.saveLineToolState(e,pi);const t=new It(this.m_model,e.properties(),pi);this._pushUndoCommand(t),this.saveLineToolState(e,pi),this.endUndoMacro(),this.model().updateSource(e)}_removeAllDrawingToolsImpl(e){this.selectionMacro(()=>{this.lineBeingCreated()&&this.cancelCreatingLine();this.dataSources().filter(b.isLineTool).filter(e=>e.isActualSymbol()&&e.isUserDeletable()).filter(t=>!e||e===t.toolname).forEach(e=>this.removeSource(e,!1))})}_removeAllStudiesImpl(){const e=this.dataSources(),t=e.filter(x.isStudy).filter(e=>!e.isChildStudy()&&e.removeByRemoveAllStudies()),i=e.filter(x.isStudyStub);t.concat(i).forEach(e=>this.removeSource(e,!1))}}},88735:(e,t,i)=>{"use strict" -;var s=i(2872),r=i(88537).ensureNotNull,n=i(56840),o=i(88537).assert,a=i(36244).ChartModelBase,l=i(14291),c=l.isLineTool,h=l.isStudyLineTool,d=i(39094).Watermark,u=i(49483).CheckMobile,p=i(23653).InvalidationMask,_=i(23653).InvalidationLevel;const{globalChangeEvent:m,dataSourceChangeEvent:g}=i(33291);var f=i(66101),v=f.Study,S=i(13672).NonSeriesStudy,y=i(81851),b=y.createStudy,w=y.isStudy,C=y.isFundamentalStudy,P=f.prepareStudyProperties,T=i(85733),x=i(88564).saveDefaultProperties,I=i(32050).MainSeriesScaleRatioProperty,M=i(22423).scaleRatio,L=i(90998).StudyInserter,A=i(21761).dateFormatProperty,E=i(79680).isActingAsSymbolSource,k=i(13795).sourceNewCurrencyOnPinningToPriceScale,D=i(79222).sourceNewUnitOnPinningToPriceScale,V=i(76422),B=i(56606).StudyColorRotatorFactory,N=i(67337),R=i(44419).AppliedTimeFrame,O=N.enabled("auto_enable_symbol_labels");N.enabled("fix_left_edge");class F extends a{constructor(e,t,i,r,n,o,a,l,c,h){super(e,t,i,r,n,o,a,l,c,h);var u=this,p=this.m_mainSeries.properties(),_=this._panes[0];_.setStretchFactor(2*_.stretchFactor()),this._properties.listeners().subscribe(this,F.prototype.propertyChangeHandler),this._properties.timezone.listeners().subscribe(null,(function(){u._chartApi&&u._chartApi.isConnected().value()&&u._chartApi.switchTimezone(u.timezone())})),_.addDataSource(this.m_mainSeries,this._panes[0].findSuitableScale(this.m_mainSeries)),this._mainSeriesScaleRatioProperty=new I(this),this.m_mainSeries.dataEvents().completed().subscribe(this,function(){this._scrollingState&&this.gotoTime()}.bind(this)),this.m_mainSeries.onIntervalChanged().subscribe(this,(function(){this._recalcVRStudiesParams.oldStartVisibleIndex=NaN,this._recalcVRStudiesParams.oldEndVisibleIndex=NaN})),this._readOnly||(p.addChild("priceAxisProperties",this.m_mainSeries.m_priceScale.properties()),this._properties.paneProperties.legendProperties.showStudyTitles.listeners().subscribe(this,(function(e){e.value()||u._properties.paneProperties.legendProperties.showStudyArguments.setValue(!1)}))),this._barsMarksSources=a(this);for(var m=0;m0),n?{left:0,right:1,totallySlots:i}:{left:1,right:0,totallySlots:i}}return{left:e,right:t,totallySlots:e+t}}setPriceAutoScale(e,t,i){e.setPriceAutoScale(t,i),this.invalidate(this._paneInvalidationMask(e,_.Light))}updateScales(e,t){this._undoModel._chartWidget._updateScalesActions()}mainSeriesScaleRatioProperty(){return this._mainSeriesScaleRatioProperty}mainSeriesScaleRatioPropertyOnChanged(){this._mainSeriesScaleRatioProperty.listeners().fire(this._mainSeriesScaleRatioProperty)}mainSeriesScaleRatio(){return M(this._timeScale,this.m_mainSeries.priceScale())}setMainSeriesScaleRatio(e){ -this.paneForSource(this.m_mainSeries).applyPriceScaleRatio(this.m_mainSeries.priceScale(),e)}recalcStudyBasedLineTools(){this.dataSources().forEach((function(e){h(e)&&e.recalcStudyIfNeeded&&e.recalcStudyIfNeeded()}))}restoreFactoryDefaults(e){e.restoreFactoryDefaults(),this.recalcVisibleRangeStudies(!0)}orderedDataSources(e){var t=[];t.push(this.m_crossHairSource);for(var i=0;i0)}createStudyInserter(e){return new L(e,this._studiesMetaInfoRepository,{createStudy:this.insertStudyWithParams.bind(this)})}insertStudyWithParams(e,t,i,s,r,o,a,l,c,h,d){null==o&&(o=this.mainSeries());var u=null;if(!r&&void 0!==e.groupingKey){var p=this.findNonOverlayStudyWithGroupingKey(e.groupingKey);null!==p&&(u=p.pane)}null===u&&(r||e.is_price_study?u=this.paneForSource(o):(u=this.createPane(),void 0!==h&&u.setPaneSize(h))),"Compare@tv-basicstudies"===e.id&&this.m_mainSeries.priceScale().setMode({log:!1,percentage:!0});var _=Object.assign({},s,{inputs:t}),m=P(e,_,u,this.studyVersioning(),o),f=b(this,m,o,e,d);this._recalcVisibleRangeStudiesImpl({studies:[f],oldEndVisibleIndex:-1,oldStartVisibleIndex:-1,force:!0,timerId:null});var v=u.findSuitableScale(f,o,a);if(v===this.mainSeries().priceScale()&&E(f)){var S=l?k(f,v,this,!0):null,y=c?D(f,v,this,!0):null;null===S&&null===y||f.setSymbolParams({currency:S||void 0,unit:y||void 0})}return E(f)&&u.hasDataSource(this.mainSeries())&&O&&!n.getBool("enable_symbol_labels_on_inserting_compare_once",!1)&&(x(!0),this.properties().scalesProperties.showSymbolLabels.setValue(!0),x(!1),n.setValue("enable_symbol_labels_on_inserting_compare_once",!0)),f.start(),null!==i&&u.id()===i.paneId?u.insertDataSource(f,v,i.zorder):u.addDataSource(f,v),f.properties().linkedToSeries&&f.properties().linkedToSeries.value()&&f.setOwnerSource(this.mainSeries()),this.recalculatePane(u,g(f.id())),this.fullUpdate(),this._invalidateBarColorerCaches(),this._recalcVisibleRangeStudiesImpl({studies:[f],force:!0}),this._recalcColorStudiesImpl({studies:[f],force:!0}),this._studyInserted.fire(f),f.maxOffset().subscribe(this._boundUpdateStudiesMaxOffset,{callWithLast:!0}),f}studyInserted(){return this._studyInserted}_unmergeAvailable(e){return e===this.m_mainSeries||TradingView.isInherited(e.constructor,v)&&!e.isLinkedToSeries()&&!TradingView.isInherited(e.constructor,S)&&e.showInObjectTree()}isMergeUpAvailableForSource(e){ -return!!this._unmergeAvailable(e)&&this.paneForSource(e)!==this.panes()[0]}isMergeDownAvailableForSource(e){if(!this._unmergeAvailable(e))return!1;var t=this.paneForSource(e),i=this.panes();return t!==i[i.length-1]}isUnmergeAvailableForSource(e){return!!this._unmergeAvailable(e)&&this.paneForSource(e).dataSources().filter(this._unmergeAvailable,this).length>1}lineBeingEdited(){return this._lineBeingEdited}linePointBeingEdited(){return this._linePointBeingEdited}calculateDefaultTags(){for(var e=[],t=this.dataSources(),i=0;i-1&&this._modelIntervals.splice(t,1)}clearIntervals(){for(var e=0;ethis.removeSource(e)),Array.from(this._customSourcesMap.keys()).forEach(this._removeCustomSource,this),o(0===this._topmostCustomSources.length),o(0===this._fgCustomSources.length),o(0===this._bgCustomSources.length),o(0===this._allCustomSources.length),o(0===this._customSourcesMap.size);for(e=0;e{"use strict";var s=i(52640).makeFont,r=i(52640).parseFont,n=(0,i(98125).getLogger)("Model.ChartTradingUtils"),o={_fontHeightCache:{},_parsedColorCache:{},_parseColor:function(e){if(this._parsedColorCache[e])return this._parsedColorCache[e];var t=document.createElement("div");t.style.color=e;var i=t.style.color.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i)||t.style.color.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d*\.?\d+)\s*\)$/i),s={r:i[1],g:i[2],b:i[3],a:i[4]||"1"};return this._parsedColorCache[e]=s,s},getColorFromProperties:function(e,t){var i=1-t.value()/100,s=this._parseColor(e.value());return"rgba("+s.r+","+s.g+","+s.b+","+i+")"},setColorToProperties:function(e,t,i){var s=this._parseColor(e);t.setValue("rgb("+s.r+","+s.g+","+s.b+")");var r=100*(1-s.a);i.setValue(Math.max(0,Math.min(r,100)))},getFontFromProperties:function(e,t,i,r){return s(t.value(),e.value(),r.value()?"italic":"",i.value()?"bold":"")},setFontToProperties:function(e,t,i,s,o){var a=r(e);null!==a?(a.family.length>0&&t.setValue(a.family),i.setValue(a.size),s.setValue(a.bold),o.setValue(a.italic)):n.logError("Invalid font: "+e)},fontHeight:function(e){if(!this._fontHeightCache[e]){var t=document.createElement("span");t.appendChild(document.createTextNode("height")),document.body.appendChild(t),t.style.cssText="font: "+e+"; white-space: nowrap; display: inline;";var i=t.offsetHeight;document.body.removeChild(t),this._fontHeightCache[e]=Math.ceil(i)}return this._fontHeightCache[e]},drawPolyHoverOrPress:function(e,t,i,s){s?(e.save(),e.fillStyle="rgba(0, 0, 0, 0.15)",CanvasEx.drawPoly(e,t,!0),e.restore()):i&&(e.save(),e.fillStyle="rgba(0, 0, 0, 0.1)",CanvasEx.drawPoly(e,t,!0),e.restore())},repaint:function(e){e.lightUpdate()},roundToMinTick:function(e,t){var i=1/e.mainSource().base();return i*Math.round(t/i)}};e.exports=o},24431:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(59199).doAnimate,o=i(97205).ChartUndoModelBase,a=(i(88564).saveDefaultProperties,i(66101).Study),l=i(65645).showTooManyStudiesNotice,c=(i(35762).UndoCommand, -i(17691).ApplyLineToolTemplateUndoCommand),h=i(89730).SetPriceScaleSelectionStrategyCommand,d=i(870).SetScaleRatioPropertiesCommand,u=i(90998).StudyInserter,p=i(51768).trackEvent,_=i(98125).getLogger("Chart.ChartUndoModel"),m=i(91794).RestoreDefaultsPreferencesUndoCommand,g=i(59836).SetPriceScaleModeCommand,f=i(69746).PriceScaleChangeUndoCommand,v=new r("move left",s("move left")),S=new r("move right",s("move right")),y=new r("toggle auto scale",s("toggle auto scale")),b=new r("toggle lock scale",s("toggle lock scale")),w=new r("toggle regular scale",s("toggle regular scale")),C=new r("toggle indexed to 100 scale",s("toggle indexed to 100 scale")),P=new r("toggle percentage scale",s("toggle percentage scale")),T=new r("toggle log scale",s("toggle log scale")),x=new r("invert scale",s("invert scale")),I=new r("remove pane",s("remove pane")),M=(new r("apply all chart properties",s("apply all chart properties")),new r("set price scale selection strategy to {title}",s("set price scale selection strategy to {title}")));s("Cheers");t.ChartUndoModel=class extends o{constructor(e,t,i,s,r,n,o,a,l,c,h){super(e,t,i,s,r,n,o,a,l,c,h),this.beginUndoMacro=(e,t)=>{var i=o.beginUndoMacro(e);return i.setCustomFlag("doesnt_affect_save",t),i},this.endUndoMacro=o.endUndoMacro.bind(o),this.createUndoCheckpoint=o.createUndoCheckpoint.bind(o),this.undoToCheckpoint=o.undoToCheckpoint.bind(o)}version(){return this.m_model.version()}createPane(e){return this.m_model.createPane(e)}readOnly(){return this.m_model.readOnly()}restart(){this.m_model.restart()}disconnect(){this.m_model.disconnect()}studiesMetaData(){return this.m_model.studiesMetaData()}studyVersioning(){return this.m_model.studyVersioning()}chartModel(){return this._model()}_model(){return this.m_model}pushUndoCommand(e){this._pushUndoCommand(e)}_pushUndoCommand(e){this._undoHistory.pushUndoCommand(e)}startScrollPrice(e,t,i){t.isAutoScale()||(this._initialPriceScrollState=t.state(),this._initialPriceScrollPos=i,this.chartModel().startScrollPrice(e,t,i))}scrollPriceTo(e,t,i){t.isAutoScale()||(this._initialPriceScrollPos&&Math.abs(this._initialPriceScrollPos-i)>20&&(this.pushUndoCommand(new f(this.m_model,e,t,this._initialPriceScrollState)),delete this._initialPriceScrollState,delete this._initialPriceScrollPos),this.chartModel().scrollPriceTo(e,t,i))}endScrollPrice(e,t){t.isAutoScale()||(delete this._initialPriceScrollState,delete this._initialPriceScrollPos,this.chartModel().endScrollPrice(e,t))}setPriceAutoScale(e,t,i){this.pushUndoCommand(new f(this.m_model,e,t,t.state())),this.chartModel().setPriceAutoScale(e,t,i)}setWidth(e){this.m_model.setWidth(e)}setPaneHeight(e,t){this.m_model.setPaneHeight(e,t)}gridSource(){return this.m_model.gridSource()}watermarkSource(){return this.m_model.watermarkSource()}addAlertsSource(e){return this.m_model.addAlertsSource(e)}alertsSources(){return this.m_model.alertsSources()}publishedChartsTimelineSource(){return this.m_model.publishedChartsTimelineSource()}crossHairSource(){return this.m_model.crossHairSource()}model(){return this.m_model} -chartWidget(){return this._chartWidget}mainSeries(){return this.m_model.m_mainSeries}mainSeriesScaleRatioProperty(){return this.m_model.mainSeriesScaleRatioProperty()}panes(){return this.m_model.panes()}timeScale(){return this.m_model.timeScale()}selectionMacro(e){return this.m_model.selectionMacro(e)}setHoveredSource(e,t){this.m_model.setHoveredSource(e,t)}selection(){return this.m_model.selection()}onSelectedSourceChanged(){return this.m_model.onSelectedSourceChanged()}activeStrategySource(){return this.m_model.activeStrategySource()}invalidate(e){this.m_model.invalidate(e)}setCurrentPosition(e,t,i,s){this.m_model.setCurrentPosition(e,t,i,s)}setAndSaveCurrentPosition(e,t,i,s){this.m_model.setAndSaveCurrentPosition(e,t,i,s)}canCreateStudy(e){return this.model().chartApi().chartApi().isCanCreateStudy(e)}_isCountedStudy(e){throw new Error("Not implemented")}checkIfFeatureAvailable(e,t){var i=this.canCreateStudy(),s=t&&t instanceof a;return!this.readOnly()&&s&&(i=this.canCreateStudy(!0)),!!i||(s||l(),!1)}createStudyInserter(e,t,i){var s=this,r=null,n={createStudy:function(e,t,i,n,o,a,l,c,h,d,u){return s.checkIfFeatureAvailable(e,a)?(p("studies","Study_"+e.id),"Compare@tv-basicstudies"===e.id&&p("compare","symbol:"+t.symbol),s._insertStudy(e,t,n,o,a,l,c,h,d,r,u)):(_.logNormal("Cannot insert study "+e.id),null)}};void 0!==i&&(n.createStub=function(){var e=s.m_model.insertStudyStub(i);return r={targetPaneId:s.m_model.paneForSource(e).id(),targetZOrder:e.zorder()},e.id()},n.removeStub=function(e){return s.m_model.removeStudyStub(e)});var o=new u(e,this.m_model._studiesMetaInfoRepository,n);return o.setParentSource(t),o}setProperties(e,t,i){var s=this;this.beginUndoMacro(i),this.m_model.selectionMacro((function(){for(var r=0;r{"use strict";var s;i.d(t,{ColorType:()=>s}),function(e){e.Solid="solid",e.Gradient="gradient"}(s||(s={}))},8175:(e,t,i)=>{"use strict";i.d(t,{currencyUnitVisibilityProperty:()=>o,currencyUnitVisibilityOptions:()=>a,migrateShowCurrencyAndShowUnitProperties:()=>c});var s=i(10133),r=i(56840),n=i.n(r);const{property:o,availableValues:a}=(0,s.createVisibilityController)("PriceAxisCurrencyAndUnit.visibility");let l=!1;function c(e,t){l||(l=!0,void 0===n().getValue("PriceAxisCurrencyAndUnit.visibility")&&o().setValue(e||t?"alwaysOn":"alwaysOff"))}},13795:(e,t,i)=>{"use strict";i.d(t,{sourceNewCurrencyOnPinningToPriceScale:()=>r});var s=i(79680);function r(e,t,i,r){let n=null;if(i.currencyConversionEnabled()&&(0,s.isActingAsSymbolSource)(e)){const s=i.availableCurrencies(),o=t.currency(s),a=e.currency() -;null!==o&&null!==o.selectedCurrency&&!o.allCurrenciesAreOriginal&&o.selectedCurrency!==a&&(r&&null===a||null!==a&&s.convertible(a))&&(n=o.selectedCurrency)}return n}},99305:(e,t,i)=>{"use strict";i.d(t,{CustomSourceBase:()=>s});class s{constructor(e,t){this._id=e,this._model=t}id(){return this._id}isHoveredEnabled(){return!0}isSelectionEnabled(){return!1}priceScale(){return null}paneViews(e){return[]}labelPaneViews(e){return[]}priceAxisViews(e,t){return[]}updateViewsForPane(e,t){e.containsMainSeries()&&this.updateAllViews(t)}}},50669:(e,t,i)=>{"use strict";i.d(t,{isMainSeriesState:()=>r,isStudyState:()=>n,isLineToolState:()=>o,isStudyLineToolState:()=>a});var s=i(14291);function r(e){return"MainSeries"===e.type}function n(e){return Boolean(e.type)&&e.type.toLowerCase().startsWith("study")}function o(e){return Boolean(e.type)&&(0,s.isLineToolName)(e.type)}function a(e){return Boolean(e.type)&&(0,s.isStudyLineToolName)(e.type)}},62443:(e,t,i)=>{"use strict";i.d(t,{DataSource:()=>l});i(67337);var s=i(52714),r=i.n(s),n=i(9423),o=i(2872),a=i.n(o);class l{constructor(e){this.hasAlert=new(r())(!1),this._zorder=0,this.m_priceScale=null,this._ownerSource=null,this._userEditEnabled=!0,this._onPriceScaleChanged=new(a()),this._isSelectionEnabled=!0,this._instanceId=(0,n.randomHashN)(6),this._ownerSourceChanged=new(a()),this._zOrderChanged=new(a()),this._id=null!=e?e:(0,n.randomHashN)(6)}id(){return this._id}instanceId(){return this._instanceId}preferNoScale(){return!1}setId(e){this._id=e}zorder(){return this._zorder}setZorder(e){"number"==typeof e&&this._zorder!==e&&(this._zorder=e,this._zOrderChanged.fire(e))}isSpeciallyZOrderedSource(){return!1}title(){throw new Error("Implement this fun in a subclass")}name(){throw new Error("Implement this fun in a subclass")}priceScale(){return this.m_priceScale}setPriceScale(e){this.m_priceScale=e,this._onPriceScaleChanged.fire()}ownerSource(){return this._ownerSource}setOwnerSource(e){this._ownerSource=e,this._ownerSourceChanged.fire()}ownerSourceChanged(){return this._ownerSourceChanged}zOrderChanged(){return this._zOrderChanged}isSavedInChart(e){return!0}isSavedInStudyTemplates(){return!0}isRemovedByStudyTemplates(){return!0}hasContextMenu(){return!0}showInObjectTree(){return!0}setUserEditEnabled(e){this._userEditEnabled=e}userEditEnabled(){return this._userEditEnabled}canBeHidden(){return this.userEditEnabled()}isUserDeletable(){return this.userEditEnabled()}properties(){throw new Error("Implement this fun in a subclass")}isVisible(){return this.properties().visible.value()}dataWindowView(){return null}priceAxisViews(e,t){return null}timeAxisViews(){return null}updateAllViews(e){}paneViews(e){return null}labelPaneViews(){return null}isFailed(){return!1}isLoading(){return!1}isPhantom(){return!1}isChildStudy(){return!1}hasChildren(){return!1}canHaveChildren(){return!1}onClickOutside(){}getSourceIcon(){return null}state(e){throw new Error("Implement this fun in a subclass")}onPriceScaleChanged(){return this._onPriceScaleChanged}doesMovingAffectsUndo(){return!0}isMultiPaneAvailable(){ -return!1}isMultiPaneEnabled(){return!1}copiable(){return!1}cloneable(){return!1}movable(){return!1}isIncludedInAutoScale(){return!1}isHoveredEnabled(){return this.isSelectionEnabled()}isSelectionEnabled(){return this._isSelectionEnabled}setSelectionEnabled(e){this._isSelectionEnabled=e}firstValue(){return null}priceRange(e,t){return null}autoScaleInfo(e,t){return{range:this.priceRange(e,t)}}stateForAlert(){return null}canHasAlert(){return!1}alertCreationAvailable(){return this.hasStateForAlert()}hasStateForAlert(){return!1}idForAlert(){return this._id}}},14445:(e,t,i)=>{"use strict";i.d(t,{DataWindowItem:()=>s,DataWindowView:()=>r});class s{constructor(e,t,i=!1){this._visible=!0,this._title=e,this._value=t,this._unimportant=i}title(){return this._title}setTitle(e){this._title=e}text(){return this._value}value(){return this._value}setValue(e){this._value=e}visible(){return this._visible}setVisible(e){this._visible=e}color(){return this._color}setColor(e){this._color=e}unimportant(){return this._unimportant}}class r{constructor(){this._items=[],this._header="",this._title=""}header(){return this._header}title(){return this._title}items(){return this._items}update(){}}},21761:(e,t,i)=>{"use strict";i.d(t,{dateFormatProperty:()=>a,restoreDateFormatSettingsValue:()=>l});var s=i(56840),r=i(32255),n=i(7043);function o(){return s.getValue("date_format",(0,n.defaultDateFormat)())}const a=(0,r.createPrimitiveProperty)(o());function l(){a.setValue((0,n.defaultDateFormat)()),s.remove("date_format")}s.onSync.subscribe(null,()=>a.setValue(o())),a.listeners().subscribe(null,()=>s.setValue("date_format",a.value()))},88564:(e,t,i)=>{"use strict";i.r(t),i.d(t,{createDefaultsState:()=>u,saveDefaultProperties:()=>_,DefaultProperty:()=>m});var s=i(27788),r=i(58121),n=i(15736),o=i(59803),a=i(2015),l=i.n(a),c=i(2872),h=i.n(c);function d(e,t){const i=(0,s.default)(e);return t.forEach(e=>(0,n.default)(i,e.split("."))),i}function u(e,t,i,n){const a=e?o.defaults:o.factoryDefaults,l=t.startsWith("study_")?(0,s.default)(a("study")):{};let c=(0,s.default)(a(t,n));return t.startsWith("study_")&&c.inputs&&delete c.inputs.symbol,"linetoolicon"===t&&e&&(c.icon=(0,o.defaults)(t).icon),c=d(c,i),(0,r.default)(l,c),l}let p=!1;function _(e){p=e}class m extends(l()){constructor(e,t,i,s){super(function(e,t,i,s){let n;return void 0===s&&(s=!0),i?n=t:(n=u(s,e,[],null),t&&(0,r.default)(n,t)),n}(e,t,i,s)),this._exclusions=[],this._restoreFactoryDefaultsEvent=new(h()),this._defaultName=e,this._useUserPreferences=null==s||s,this.listeners().subscribe(this,m.prototype.onPropertyChanged),this._restoreFactoryDefaultsEvent=new(h())}preferences(){return this.state(this._exclusions)}mergePreferences(e){this.mergeAndFire(d(e,this._exclusions))}addExclusion(e){this._exclusions.indexOf(e)<0&&this._exclusions.push(e)}removeExclusion(e){const t=this._exclusions.indexOf(e);-1!==t&&this._exclusions.splice(t,1)}restoreFactoryDefaults(){const e=u(!1,this._defaultName,this._exclusions,null);this.mergeAndFire(e), -this._defaultName.startsWith("study_")&&!this._defaultName.startsWith("study_VbPFixed")||(0,o.saveDefaults)(this._defaultName,void 0),this._restoreFactoryDefaultsEvent.fire()}onRestoreFactoryDefaults(){return this._restoreFactoryDefaultsEvent}onPropertyChanged(){!p||this._defaultName.startsWith("study_")&&!this._defaultName.startsWith("study_VbPFixed")||this.saveDefaults()}saveDefaults(){this._useUserPreferences&&(0,o.saveDefaults)(this._defaultName,this.preferences())}clone(e){const t=new m(this._defaultName,this.state(),null==e?void 0:e.replaceByState,this._useUserPreferences);for(let e=0;e{"use strict";var s=i(27759).PlDisplay;const{getHexColorByName:r}=i(45112),{generateColor:n}=i(68906);var o=i(27759).TradingSourcesHorizontalAlignment,a=i(16654),l=i(30823).LineToolPitchforkStyle,c=i(8059).LineToolBarsPatternMode,h=i(50993).LineStudyPlotStyle,d=i(5816),u=i(3825).PriceAxisLastValueMode,p=i(245).StoriesTimeLineItemType,_=i(90373).MagnetMode,m=i(49612).LineEnd,g=i(49642).ColorType,f=i(13632).StatsPosition,v=i(47484).sessionsPreferencesDefault,S=i(87426).axisLabelBackgroundColor,y=i(98125).getLogger("Chart.Defaults");const b=r("color-black"),w=r("color-white"),C=n(w,75),P=r("color-tv-blue-50"),T=r("color-tv-blue-500"),x=n(T,30),I=n(T,70),M=n(T,72),L=n(T,75),A=n(T,80),E=r("color-tv-blue-600"),k=r("color-deep-blue-200"),D=r("color-deep-blue-300"),V=r("color-deep-blue-400"),B=n(V,80),N=r("color-deep-blue-500"),R=r("color-sky-blue-500"),O=n(R,80),F=n(R,50),W=r("color-sky-blue-700"),H=n(W,30),z=r("color-youtube"),U=r("color-ripe-red-200"),j=r("color-ripe-red-300"),G=r("color-ripe-red-400"),q=r("color-ripe-red-500"),Y=n(q,70),K=n(q,80),$=n(q,72),X=n(q,95),Z=r("color-ripe-red-600"),J=r("color-grapes-purple-400"),Q=n(J,80),ee=r("color-grapes-purple-500"),te=n(ee,100),ie=n(ee,80),se=n(ee,30),re=n(r("color-berry-pink-400"),85),ne=r("color-berry-pink-500"),oe=n(ne,80),ae=r("color-minty-green-100"),le=r("color-minty-green-500"),ce=n(le,80),he=n(le,72),de=n(le,95),ue=r("color-iguana-green-300"),pe=r("color-iguana-green-500"),_e=n(pe,80),me=r("color-tan-orange-300"),ge=r("color-tan-orange-500"),fe=n(ge,80),ve=r("color-tan-orange-600"),Se=r("color-tan-orange-700"),ye=n(Se,80),be=r("color-tan-orange-a700"),we=r("color-cold-gray-150"),Ce=r("color-cold-gray-300"),Pe=r("color-cold-gray-400"),Te=r("color-cold-gray-500"),xe=r("color-cold-gray-800"),Ie=n(xe,94),Me=n(xe,100),Le=r("color-cold-gray-900"),Ae=r("color-slate-gray"),Ee=r("color-silver-tree"),ke=n(Ee,95),De=r("color-mandy"),Ve=n(De,95);var Be=function(e){var t=function(e,t){return{color:e,visible:t}},i=function(e,t,i){return{coeff:e,color:t,visible:i}},r=function(e,t,i,s,r){return{coeff:e,color:t,visible:i,linestyle:void 0===s?CanvasEx.LINESTYLE_SOLID:s,linewidth:void 0===r?1:r}},y=function(e,t,i){return{color:e,width:i,visible:t}},xe=function(e,t,i,s,r){return{color:e,visible:t,width:i,x:s,y:r}},Be=function(e,t,i,s,r,n){return{coeff1:e,coeff2:t,color:i,visible:s, -linestyle:void 0===r?CanvasEx.LINESTYLE_SOLID:r,linewidth:void 0===n?1:n}};if(void 0===TradingView.defaultProperties){var Ne;switch(window.locale){case"ar_AE":Ne="Asia/Dubai";break;case"au":Ne="Australia/Sydney";break;case"br":Ne="America/Sao_Paulo";break;case"ca":Ne="America/Toronto";break;case"de_DE":case"it":Ne="Europe/Berlin";break;case"es":Ne="Europe/Madrid";break;case"fa_IR":Ne="Asia/Tehran";break;case"fr":case"sv_SE":Ne="Europe/Paris";break;case"he_IL":case"tr":Ne="Europe/Athens";break;case"hu_HU":case"pl":Ne="Europe/Warsaw";break;case"id":case"th_TH":case"vi_VN":Ne="Asia/Bangkok";break;case"in":Ne="Asia/Kolkata";break;case"ja":case"kr":Ne="Asia/Tokyo";break;case"ms_MY":Ne="Asia/Singapore";break;case"ru":Ne="Europe/Moscow";break;case"uk":Ne="Europe/London";break;case"zh_CN":case"zh_TW":Ne="Asia/Shanghai";break;default:Ne="Etc/UTC"}TradingView.defaultProperties={chartproperties:{timezone:Ne,priceScaleSelectionStrategyName:"auto",dataWindowProperties:{background:"rgba( 255, 254, 206, 0.2)",border:"#606090",font:"Verdana",fontBold:!1,fontItalic:!1,fontSize:10,transparency:80,visible:!0},paneProperties:{backgroundType:g.Solid,background:w,backgroundGradientStartColor:w,backgroundGradientEndColor:w,vertGridProperties:{color:Ie,style:CanvasEx.LINESTYLE_SOLID},horzGridProperties:{color:Ie,style:CanvasEx.LINESTYLE_SOLID},crossHairProperties:{color:Pe,style:CanvasEx.LINESTYLE_DASHED,transparency:0,width:1},topMargin:10,bottomMargin:8,axisProperties:{autoScale:!0,autoScaleDisabled:!1,lockScale:!1,percentage:!1,percentageDisabled:!1,indexedTo100:!1,log:!1,logDisabled:!1,alignLabels:!0,isInverted:!1},legendProperties:{showStudyArguments:!0,showStudyTitles:!0,showStudyValues:!0,showSeriesTitle:!0,showSeriesOHLC:!0,showLegend:!0,showBarChange:!0,showVolume:!1,showBackground:!0,backgroundTransparency:50},separatorColor:we},scalesProperties:{backgroundColor:w,lineColor:Me,textColor:Le,fontSize:12,scaleSeriesOnly:!1,showSeriesLastValue:!0,seriesLastValueMode:u.LastValueAccordingToScale,showSeriesPrevCloseValue:!1,showStudyLastValue:!0,showSymbolLabels:!1,showStudyPlotLabels:!1,showBidAskLabels:!1,showPrePostMarketPriceLabel:!0,showFundamentalNameLabel:!1,showFundamentalLastValue:!0,barSpacing:d.DEFAULT_BAR_SPACING,axisHighlightColor:L,axisLineToolLabelBackgroundColorCommon:S.common,axisLineToolLabelBackgroundColorActive:S.active,showPriceScaleCrosshairLabel:!0,showTimeScaleCrosshairLabel:!0},mainSeriesProperties:{style:a.STYLE_CANDLES,esdShowDividends:!0,esdShowSplits:!0,esdShowEarnings:!0,esdShowBreaks:!1,esdFlagSize:2,showContinuousContractSwitches:!0,showContinuousContractSwitchesBreaks:!1,showCountdown:!0,bidAsk:{visible:!1,lineStyle:CanvasEx.LINESTYLE_DOTTED,lineWidth:1,bidLineColor:T,askLineColor:G},prePostMarket:{visible:!0,lineStyle:CanvasEx.LINESTYLE_DOTTED,lineWidth:1,preMarketColor:ve,postMarketColor:T},highLowAvgPrice:{highLowPriceLinesVisible:!1,highLowPriceLabelsVisible:!1,averageClosePriceLineVisible:!1,averageClosePriceLabelVisible:!1,highLowPriceLinesColor:"",highLowPriceLinesWidth:1,averagePriceLineColor:"", -averagePriceLineWidth:1},visible:!0,showPriceLine:!0,priceLineWidth:1,priceLineColor:"",baseLineColor:Ce,showPrevClosePriceLine:!1,prevClosePriceLineWidth:1,prevClosePriceLineColor:"#555555",minTick:"default",dividendsAdjustment:void 0,backAdjustment:!1,settlementAsClose:!0,sessionId:"regular",sessVis:!1,statusViewStyle:{fontSize:16,showExchange:!0,showInterval:!0,symbolTextSource:"description"},candleStyle:{upColor:le,downColor:q,drawWick:!0,drawBorder:!0,borderColor:"#378658",borderUpColor:le,borderDownColor:q,wickColor:"#737375",wickUpColor:le,wickDownColor:q,barColorsOnPrevClose:!1,drawBody:!0},hollowCandleStyle:{upColor:le,downColor:q,drawWick:!0,drawBorder:!0,borderColor:"#378658",borderUpColor:le,borderDownColor:q,wickColor:"#737375",wickUpColor:le,wickDownColor:q,drawBody:!0},haStyle:{upColor:le,downColor:q,drawWick:!0,drawBorder:!0,borderColor:"#378658",borderUpColor:le,borderDownColor:q,wickColor:"#737375",wickUpColor:le,wickDownColor:q,showRealLastPrice:!1,barColorsOnPrevClose:!1,inputs:{},inputInfo:{},drawBody:!0},barStyle:{upColor:le,downColor:q,barColorsOnPrevClose:!1,dontDrawOpen:!1,thinBars:!0},hiloStyle:{color:T,showBorders:!0,borderColor:T,showLabels:!0,labelColor:T,fontSize:7,drawBody:!0},columnStyle:{upColor:n(le,50),downColor:n(q,50),barColorsOnPrevClose:!0,priceSource:"close"},lineStyle:{color:T,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2,priceSource:"close",styleType:a.STYLE_LINE_TYPE_SIMPLE},areaStyle:{color1:M,color2:T,linecolor:T,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2,priceSource:"close",transparency:100},priceAxisProperties:{autoScale:!0,autoScaleDisabled:!1,lockScale:!1,percentage:!1,percentageDisabled:!1,indexedTo100:!1,log:!1,logDisabled:!1,isInverted:!1,alignLabels:!0},renkoStyle:{upColor:le,downColor:q,borderUpColor:le,borderDownColor:q,upColorProjection:"#a9dcc3",downColorProjection:"#f5a6ae",borderUpColorProjection:"#a9dcc3",borderDownColorProjection:"#f5a6ae",wickUpColor:le,wickDownColor:q,inputs:{source:"close",sources:"Close",boxSize:3,style:"ATR",atrLength:14,wicks:!0},inputInfo:{source:{name:"Source"},sources:{name:"Source"},boxSize:{name:"Box size"},style:{name:"Style"},atrLength:{name:"ATR length"},wicks:{name:"Wicks"}}},pbStyle:{upColor:le,downColor:q,borderUpColor:le,borderDownColor:q,upColorProjection:"#a9dcc3",downColorProjection:"#f5a6ae",borderUpColorProjection:"#a9dcc3",borderDownColorProjection:"#f5a6ae",inputs:{source:"close",lb:3},inputInfo:{source:{name:"Source"},lb:{name:"Number of line"}}},kagiStyle:{upColor:le,downColor:q,upColorProjection:"#a9dcc3",downColorProjection:"#f5a6ae",inputs:{source:"close",style:"ATR",atrLength:14,reversalAmount:1},inputInfo:{source:{name:"Source"},style:{name:"Style"},atrLength:{name:"ATR length"},reversalAmount:{name:"Reversal amount"}}},pnfStyle:{upColor:le,downColor:q,upColorProjection:"#a9dcc3",downColorProjection:"#f5a6ae",inputs:{sources:"Close",reversalAmount:3,boxSize:1,style:"ATR",atrLength:14,oneStepBackBuilding:!1},inputInfo:{sources:{name:"Source"},boxSize:{name:"Box size"},reversalAmount:{ -name:"Reversal amount"},style:{name:"Style"},atrLength:{name:"ATR length"},oneStepBackBuilding:{name:"One step back building"}}},baselineStyle:{baselineColor:Ae,topFillColor1:he,topFillColor2:de,bottomFillColor1:X,bottomFillColor2:$,topLineColor:le,bottomLineColor:q,topLineWidth:2,bottomLineWidth:2,priceSource:"close",transparency:50,baseLevelPercentage:50},rangeStyle:{upColor:le,downColor:q,thinBars:!0,upColorProjection:"#a9dcc3",downColorProjection:"#f5a6ae",inputs:{range:10,phantomBars:!1},inputInfo:{range:{name:"Range"},phantomBars:{name:"Phantom bars"}}}},chartEventsSourceProperties:{visible:!0,futureOnly:!0,breaks:{color:"#555555",visible:!1,style:CanvasEx.LINESTYLE_DASHED,width:1}},tradingProperties:{showPositions:!0,positionPL:{visibility:!0,display:s.Money},bracketsPL:{visibility:!0,display:s.Money},showOrders:!0,showExecutions:!0,showExecutionsLabels:!1,showReverse:!0,horizontalAlignment:o.Right,extendLeft:!0,lineLength:5,lineWidth:1,lineStyle:CanvasEx.LINESTYLE_SOLID},editorFontsList:["Verdana","Courier New","Times New Roman","Arial"],volumePaneSize:"large"},sessions:v,drawings:{magnet:!1,magnetMode:_.WeakMagnet,stayInDrawingMode:!1,drawOnAllCharts:!0,drawOnAllChartsMode:1},linetoolorder:{extendLeft:"inherit",lineLength:"inherit",lineColor:z,lineActiveBuyColor:"#4094e8",lineInactiveBuyColor:"rgba(64, 148, 232, 0.5)",lineActiveSellColor:"#e75656",lineInactiveSellColor:"rgba(231, 86, 86, 0.5)",lineStyle:"inherit",lineWidth:"inherit",bodyBorderActiveBuyColor:"#4094e8",bodyBorderInactiveBuyColor:"rgba(64, 148, 232, 0.5)",bodyBorderActiveSellColor:"#e75656",bodyBorderInactiveSellColor:"rgba(231, 86, 86, 0.5)",bodyBackgroundColor:C,bodyBackgroundTransparency:25,bodyTextInactiveLimitColor:"rgba(38, 140, 2, 0.5)",bodyTextActiveLimitColor:"#268c02",bodyTextInactiveStopColor:"rgba(231, 86, 86, 0.5)",bodyTextActiveStopColor:"#e75656",bodyTextInactiveBuyColor:"rgba(64, 148, 232, 0.5)",bodyTextActiveBuyColor:"#4094e8",bodyTextInactiveSellColor:"rgba(231, 86, 86, 0.5)",bodyTextActiveSellColor:"#e75656",bodyFontFamily:"Verdana",bodyFontSize:9,bodyFontBold:!0,bodyFontItalic:!1,quantityBorderActiveBuyColor:"#4094e8",quantityBorderInactiveBuyColor:"rgba(64, 148, 232, 0.5)",quantityBorderActiveSellColor:"#e75656",quantityBorderInactiveSellColor:"rgba(231, 86, 86, 0.5)",quantityBackgroundInactiveBuyColor:"rgba(64, 148, 232, 0.5)",quantityBackgroundActiveBuyColor:"#4094e8",quantityBackgroundInactiveSellColor:"rgba(231, 86, 86, 0.5)",quantityBackgroundActiveSellColor:"#e75656",quantityTextColor:w,quantityTextTransparency:0,quantityFontFamily:"Verdana",quantityFontSize:9,quantityFontBold:!0,quantityFontItalic:!1,cancelButtonBorderActiveBuyColor:"#4094e8",cancelButtonBorderInactiveBuyColor:"rgba(64, 148, 232, 0.5)",cancelButtonBorderActiveSellColor:"#e75656",cancelButtonBorderInactiveSellColor:"rgba(231, 86, 86, 0.5)",cancelButtonBackgroundColor:C,cancelButtonBackgroundTransparency:25,cancelButtonIconActiveBuyColor:"#4094e8",cancelButtonIconInactiveBuyColor:"rgba(64, 148, 232, 0.5)",cancelButtonIconActiveSellColor:"#e75656", -cancelButtonIconInactiveSellColor:"rgba(231, 86, 86, 0.5)",tooltip:"",modifyTooltip:"",cancelTooltip:""},linetoolposition:{extendLeft:"inherit",lineLength:"inherit",lineBuyColor:"#4094e8",lineSellColor:"#e75656",lineStyle:"inherit",lineWidth:"inherit",bodyBorderBuyColor:"#4094e8",bodyBorderSellColor:"#e75656",bodyBackgroundColor:C,bodyBackgroundTransparency:25,bodyTextPositiveColor:"#268c02",bodyTextNeutralColor:"#646464",bodyTextNegativeColor:"#e75656",bodyFontFamily:"Verdana",bodyFontSize:9,bodyFontBold:!0,bodyFontItalic:!1,quantityBorderBuyColor:"#4094e8",quantityBorderSellColor:"#e75656",quantityBackgroundBuyColor:"#4094e8",quantityBackgroundSellColor:"#e75656",quantityTextColor:w,quantityTextTransparency:0,quantityFontFamily:"Verdana",quantityFontSize:9,quantityFontBold:!0,quantityFontItalic:!1,reverseButtonBorderBuyColor:"#4094e8",reverseButtonBorderSellColor:"#e75656",reverseButtonBackgroundColor:C,reverseButtonBackgroundTransparency:25,reverseButtonIconBuyColor:"#4094e8",reverseButtonIconSellColor:"#e75656",closeButtonBorderBuyColor:"#4094e8",closeButtonBorderSellColor:"#e75656",closeButtonBackgroundColor:C,closeButtonBackgroundTransparency:25,closeButtonIconBuyColor:"#4094e8",closeButtonIconSellColor:"#e75656",tooltip:"",protectTooltip:"",closeTooltip:"",reverseTooltip:""},linetoolexecution:{direction:"buy",arrowHeight:8,arrowSpacing:1,arrowBuyColor:"#4094e8",arrowSellColor:"#e75656",text:"",textColor:b,textTransparency:0,fontFamily:"Verdana",fontSize:10,fontBold:!1,fontItalic:!1,tooltip:""},linetoolicon:{color:T,size:40,icon:61720,angle:.5*Math.PI},linetoolimage:{transparency:0,cssWidth:0,cssHeight:0,angle:0},linetoolbezierquadro:{linecolor:T,linewidth:1,fillBackground:!1,backgroundColor:A,transparency:50,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal},linetoolbeziercubic:{linecolor:R,linewidth:1,fillBackground:!1,backgroundColor:O,transparency:50,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal},linetooltrendline:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textcolor:T,fontsize:14,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1,statsPosition:f.Right},linetoolinfoline:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textcolor:T,fontsize:14,bold:!1,italic:!1,alwaysShowStats:!0,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!0,showBarsRange:!0,showDateTimeRange:!0,showDistance:!0,showAngle:!0,statsPosition:f.Center},linetooltimecycles:{linecolor:"#159980",linewidth:1,fillBackground:!0,backgroundColor:"rgba(106, 168, 79, 0.5)",transparency:50,linestyle:CanvasEx.LINESTYLE_SOLID},linetoolsineline:{linecolor:"#159980", -linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},linetooltrendangle:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,textcolor:T,fontsize:12,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!1,showBarsRange:!1,extendRight:!1,extendLeft:!1,statsPosition:f.Right},linetooldisjointangle:{linecolor:le,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,fillBackground:!0,backgroundColor:ce,transparency:20,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,textcolor:le,fontsize:12,bold:!1,italic:!1,showPrices:!1,showPriceRange:!1,showDateTimeRange:!1,showBarsRange:!1},linetoolflatbottom:{linecolor:ge,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,fillBackground:!0,backgroundColor:fe,transparency:20,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,textcolor:ge,fontsize:12,bold:!1,italic:!1,showPrices:!1,showPriceRange:!1,showDateTimeRange:!1,showBarsRange:!1},linetoolfibspiral:{counterclockwise:!1,linecolor:le,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},linetoolriskrewardshort:{linecolor:Te,linewidth:1,textcolor:w,fontsize:12,fillLabelBackground:!0,labelBackgroundColor:"#585858",fillBackground:!0,stopBackground:K,profitBackground:ce,stopBackgroundTransparency:80,profitBackgroundTransparency:80,drawBorder:!1,borderColor:"#667b8b",compact:!1,riskDisplayMode:"percents",accountSize:1e3,lotSize:1,risk:25,alwaysShowStats:!1,showPriceLabels:!0},linetoolriskrewardlong:{linecolor:Te,linewidth:1,textcolor:w,fontsize:12,fillLabelBackground:!0,labelBackgroundColor:"#585858",fillBackground:!0,stopBackground:K,profitBackground:ce,stopBackgroundTransparency:80,profitBackgroundTransparency:80,drawBorder:!1,borderColor:"#667b8b",compact:!1,riskDisplayMode:"percents",accountSize:1e3,lotSize:1,risk:25,alwaysShowStats:!1,showPriceLabels:!0},linetoolarrow:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Arrow,showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textcolor:T,fontsize:14,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1,statsPosition:f.Right},linetoolray:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!0,leftEnd:m.Normal,rightEnd:m.Normal,showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textcolor:T,fontsize:14,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1,statsPosition:f.Right},linetoolextended:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!0,extendRight:!0,leftEnd:m.Normal,rightEnd:m.Normal,showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textcolor:T,fontsize:14,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1,statsPosition:f.Right},linetoolhorzline:{ -linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,showPrice:!0,showLabel:!1,textcolor:T,fontsize:12,bold:!1,italic:!1,horzLabelsAlign:"center",vertLabelsAlign:"top"},linetoolhorzray:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,showPrice:!0,showLabel:!1,textcolor:T,fontsize:12,bold:!1,italic:!1,horzLabelsAlign:"center",vertLabelsAlign:"top"},linetoolvertline:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLine:!0,showTime:!0,showLabel:!1,horzLabelsAlign:"right",vertLabelsAlign:"top",textcolor:T,textOrientation:"vertical",fontsize:14,bold:!1,italic:!1},linetoolcrossline:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,showPrice:!0,showTime:!0},linetoolcirclelines:{trendline:{visible:!0,color:"#808080",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},linecolor:"#80ccdb",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},linetoolfibtimezone:{horzLabelsAlign:"right",vertLabelsAlign:"bottom",baselinecolor:"#808080",linecolor:"#0055db",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,showLabels:!0,fillBackground:!1,transparency:80,trendline:{visible:!0,color:"#808080",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:r(0,Te,!0),level2:r(1,T,!0),level3:r(2,T,!0),level4:r(3,T,!0),level5:r(5,T,!0),level6:r(8,T,!0),level7:r(13,T,!0),level8:r(21,T,!0),level9:r(34,T,!0),level10:r(55,T,!0),level11:r(89,T,!0)},linetooltext:{color:T,fontsize:14,fillBackground:!1,backgroundColor:"rgba(91, 133, 191, 0.3)",backgroundTransparency:70,drawBorder:!1,borderColor:"#667b8b",bold:!1,italic:!1,fixedSize:!0,wordWrap:!1,wordWrapWidth:200},linetooltextabsolute:{color:T,fontsize:14,fillBackground:!1,backgroundColor:"rgba(155, 190, 213, 0.3)",backgroundTransparency:70,drawBorder:!1,borderColor:"#667b8b",bold:!1,italic:!1,fixedSize:!1,wordWrap:!1,wordWrapWidth:200},linetoolballoon:{color:w,backgroundColor:se,borderColor:te,fontsize:14,transparency:30},linetoolbrush:{linecolor:R,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,smooth:5,fillBackground:!1,backgroundColor:F,transparency:50,leftEnd:m.Normal,rightEnd:m.Normal},linetoolhighlighter:{linecolor:re,smooth:5,transparency:85},linetoolpolyline:{linecolor:V,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,fillBackground:!0,backgroundColor:B,transparency:50,filled:!1},linetoolsignpost:{itemType:p.Emoji,emoji:"🙂",showImage:!1,plateColor:T,fontSize:12,bold:!1,italic:!1},linetoolpath:{lineColor:T,lineWidth:2,lineStyle:CanvasEx.LINESTYLE_SOLID,leftEnd:m.Normal,rightEnd:m.Arrow},linetoolarrowmarkleft:{color:T,arrowColor:T,fontsize:14,bold:!1,italic:!1,showLabel:!0},linetoolarrowmarkup:{color:le,arrowColor:le,fontsize:14,bold:!1,italic:!1,showLabel:!0},linetoolarrowmarkright:{color:T,arrowColor:T,fontsize:14,bold:!1,italic:!1,showLabel:!0},linetoolarrowmarkdown:{color:Z,arrowColor:Z,fontsize:14,bold:!1,italic:!1,showLabel:!0},linetoolflagmark:{flagColor:T},linetoolnote:{markerColor:T,textColor:w,backgroundColor:x,backgroundTransparency:0,borderColor:T,fontSize:14,bold:!1,italic:!1,fixedSize:!0},linetoolnoteabsolute:{markerColor:T,textColor:w, -backgroundColor:x,backgroundTransparency:0,borderColor:T,fontSize:14,bold:!1,italic:!1,fixedSize:!0},linetoolpricelabel:{color:w,backgroundColor:T,borderColor:T,fontWeight:"bold",fontsize:14,transparency:0},linetoolpricenote:{showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textColor:T,fontSize:14,bold:!1,italic:!1,lineColor:T,priceLabelBackgroundColor:T,priceLabelBorderColor:T,priceLabelTextColor:w,priceLabelFontSize:12,priceLabelBold:!1,priceLabelItalic:!1},linetoolarrowmarker:{backgroundColor:E,textColor:E,bold:!0,italic:!1,fontsize:16,showLabel:!0},linetoolrectangle:{color:ee,fillBackground:!0,backgroundColor:ie,linewidth:1,transparency:50,showLabel:!1,horzLabelsAlign:"left",vertLabelsAlign:"bottom",textColor:ee,fontSize:14,bold:!1,italic:!1,extendLeft:!1,extendRight:!1},linetoolrotatedrectangle:{color:pe,fillBackground:!0,backgroundColor:_e,transparency:50,linewidth:1},linetoolcircle:{color:ge,backgroundColor:fe,fillBackground:!0,linewidth:1,showLabel:!1,textColor:ge,fontSize:14,bold:!1,italic:!1},linetoolellipse:{color:ne,fillBackground:!0,backgroundColor:oe,transparency:50,linewidth:1,showLabel:!1,textColor:ne,fontSize:14,bold:!1,italic:!1},linetoolarc:{color:J,fillBackground:!0,backgroundColor:Q,transparency:50,linewidth:1},linetoolprediction:{linecolor:T,linewidth:1,sourceBackColor:T,sourceTextColor:w,sourceStrokeColor:T,targetStrokeColor:T,targetBackColor:T,targetTextColor:w,successBackground:pe,successTextColor:w,failureBackground:q,failureTextColor:w,intermediateBackColor:"#ead289",intermediateTextColor:"#6d4d22",transparency:10,centersColor:"#202020"},linetooltriangle:{color:Se,fillBackground:!0,backgroundColor:ye,transparency:50,linewidth:1},linetoolcallout:{color:w,backgroundColor:H,transparency:50,linewidth:1,fontsize:14,bordercolor:W,bold:!1,italic:!1,wordWrap:!1,wordWrapWidth:200},linetoolparallelchannel:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,fillBackground:!0,backgroundColor:A,transparency:20,showMidline:!0,midlinecolor:T,midlinewidth:1,midlinestyle:CanvasEx.LINESTYLE_DASHED},linetoolelliottimpulse:{degree:7,showWave:!0,color:"#3d85c6",linewidth:1},linetoolelliotttriangle:{degree:7,showWave:!0,color:ge,linewidth:1},linetoolelliotttriplecombo:{degree:7,showWave:!0,color:"#6aa84f",linewidth:1},linetoolelliottcorrection:{degree:7,showWave:!0,color:"#3d85c6",linewidth:1},linetoolelliottdoublecombo:{degree:7,showWave:!0,color:"#6aa84f",linewidth:1},linetoolbarspattern:{color:T,mode:c.Bars,mirrored:!1,flipped:!1},linetoolghostfeed:{averageHL:20,variance:50,candleStyle:{upColor:ae,downColor:U,drawWick:!0,drawBorder:!0,borderColor:"#378658",borderUpColor:le,borderDownColor:q,wickColor:Te},transparency:50},study:{inputs:{},styles:{},palettes:{},bands:{},area:{},graphics:{},visible:!0,showLegendValues:!0,showLabelsOnPriceScale:!0,precision:"default"},linetoolpitchfork:{fillBackground:!0,transparency:80,style:l.Original,median:{visible:!0,color:q,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},extendLines:!1,level0:r(.25,me,!1), -level1:r(.382,ue,!1),level2:r(.5,pe,!0),level3:r(.618,le,!1),level4:r(.75,"#64b5f6",!1),level5:r(1,T,!0),level6:r(1.5,ee,!1),level7:r(1.75,ne,!1),level8:r(2,j,!1)},linetoolpitchfan:{fillBackground:!0,transparency:80,median:{visible:!0,color:q,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level0:r(.25,me,!1),level1:r(.382,ue,!1),level2:r(.5,pe,!0),level3:r(.618,le,!1),level4:r(.75,"#64b5f6",!1),level5:r(1,T,!0),level6:r(1.5,ee,!1),level7:r(1.75,ne,!1),level8:r(2,j,!1)},linetoolgannfan:{showLabels:!0,fillBackground:!0,transparency:80,level1:Be(1,8,me,!0),level2:Be(1,4,ue,!0),level3:Be(1,3,pe,!0),level4:Be(1,2,le,!0),level5:Be(1,1,"#64b5f6",!0),level6:Be(2,1,T,!0),level7:Be(3,1,ee,!0),level8:Be(4,1,ne,!0),level9:Be(8,1,j,!0)},linetoolganncomplex:{fillBackground:!1,arcsBackground:{fillBackground:!0,transparency:80},reverse:!1,scaleRatio:"",showLabels:!0,labelsStyle:{fontSize:12,bold:!1,italic:!1},levels:[y(Te,!0,1),y(ge,!0,1),y(ue,!0,1),y(pe,!0,1),y(le,!0,1),y(Te,!0,1)],fanlines:[xe(k,!1,1,8,1),xe(q,!1,1,5,1),xe(Te,!1,1,4,1),xe(ge,!1,1,3,1),xe(ue,!0,1,2,1),xe(pe,!0,1,1,1),xe(le,!0,1,1,2),xe(le,!1,1,1,3),xe(T,!1,1,1,4),xe(D,!1,1,1,5),xe(k,!1,1,1,8)],arcs:[xe(ge,!0,1,1,0),xe(ge,!0,1,1,1),xe(ge,!0,1,1.5,0),xe(ue,!0,1,2,0),xe(ue,!0,1,2,1),xe(pe,!0,1,3,0),xe(pe,!0,1,3,1),xe(le,!0,1,4,0),xe(le,!0,1,4,1),xe(T,!0,1,5,0),xe(T,!0,1,5,1)]},linetoolgannfixed:{fillBackground:!1,arcsBackground:{fillBackground:!0,transparency:80},reverse:!1,levels:[y(Te,!0,1),y(ge,!0,1),y(ue,!0,1),y(pe,!0,1),y(le,!0,1),y(Te,!0,1)],fanlines:[xe(k,!1,1,8,1),xe(q,!1,1,5,1),xe(Te,!1,1,4,1),xe(ge,!1,1,3,1),xe(ue,!0,1,2,1),xe(pe,!0,1,1,1),xe(le,!0,1,1,2),xe(le,!1,1,1,3),xe(T,!1,1,1,4),xe(D,!1,1,1,5),xe(k,!1,1,1,8)],arcs:[xe(ge,!0,1,1,0),xe(ge,!0,1,1,1),xe(ge,!0,1,1.5,0),xe(ue,!0,1,2,0),xe(ue,!0,1,2,1),xe(pe,!0,1,3,0),xe(pe,!0,1,3,1),xe(le,!0,1,4,0),xe(le,!0,1,4,1),xe(T,!0,1,5,0),xe(T,!0,1,5,1)]},linetoolgannsquare:{color:"rgba(21, 56, 153, 0.8)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,showTopLabels:!0,showBottomLabels:!0,showLeftLabels:!0,showRightLabels:!0,fillHorzBackground:!0,horzTransparency:80,fillVertBackground:!0,vertTransparency:80,reverse:!1,fans:t(Pe,!1),hlevel1:i(0,Te,!0),hlevel2:i(.25,Se,!0),hlevel3:i(.382,ue,!0),hlevel4:i(.5,pe,!0),hlevel5:i(.618,le,!0),hlevel6:i(.75,T,!0),hlevel7:i(1,Te,!0),vlevel1:i(0,Te,!0),vlevel2:i(.25,Se,!0),vlevel3:i(.382,ue,!0),vlevel4:i(.5,pe,!0),vlevel5:i(.618,le,!0),vlevel6:i(.75,T,!0),vlevel7:i(1,Te,!0)},linetoolfibspeedresistancefan:{fillBackground:!0,transparency:80,grid:{color:"rgba(21, 56, 153, 0.8)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,visible:!0},linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,showTopLabels:!0,showBottomLabels:!0,showLeftLabels:!0,showRightLabels:!0,reverse:!1,hlevel1:i(0,Te,!0),hlevel2:i(.25,Se,!0),hlevel3:i(.382,ue,!0),hlevel4:i(.5,pe,!0),hlevel5:i(.618,le,!0),hlevel6:i(.75,T,!0),hlevel7:i(1,Te,!0),vlevel1:i(0,Te,!0),vlevel2:i(.25,Se,!0),vlevel3:i(.382,ue,!0),vlevel4:i(.5,pe,!0),vlevel5:i(.618,le,!0),vlevel6:i(.75,T,!0),vlevel7:i(1,Te,!0)},linetoolfibretracement:{ -showCoeffs:!0,showPrices:!0,fillBackground:!0,transparency:80,extendLines:!1,extendLinesLeft:!1,horzLabelsAlign:"left",vertLabelsAlign:"bottom",reverse:!1,coeffsAsPercents:!1,fibLevelsBasedOnLogScale:!1,labelFontSize:12,trendline:{visible:!0,color:Te,linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},levelsStyle:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:i(0,Te,!0),level2:i(.236,q,!0),level3:i(.382,ue,!0),level4:i(.5,pe,!0),level5:i(.618,le,!0),level6:i(.786,"#64b5f6",!0),level7:i(1,Te,!0),level8:i(1.618,T,!0),level9:i(2.618,q,!0),level10:i(3.618,ee,!0),level11:i(4.236,ne,!0),level12:i(1.272,ue,!1),level13:i(1.414,q,!1),level16:i(2,le,!1),level14:i(2.272,ue,!1),level15:i(2.414,pe,!1),level17:i(3,"#64b5f6",!1),level18:i(3.272,Te,!1),level19:i(3.414,T,!1),level20:i(4,"#cc2828",!1),level21:i(4.272,ee,!1),level22:i(4.414,ne,!1),level23:i(4.618,ue,!1),level24:i(4.764,le,!1)},linetoolfibchannel:{showCoeffs:!0,showPrices:!0,fillBackground:!0,transparency:80,extendLeft:!1,extendRight:!1,horzLabelsAlign:"left",vertLabelsAlign:"middle",coeffsAsPercents:!1,labelFontSize:12,levelsStyle:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:i(0,Te,!0),level2:i(.236,q,!0),level3:i(.382,ue,!0),level4:i(.5,pe,!0),level5:i(.618,le,!0),level6:i(.786,"#64b5f6",!0),level7:i(1,Te,!0),level8:i(1.618,T,!0),level9:i(2.618,q,!0),level10:i(3.618,ee,!0),level11:i(4.236,ne,!0),level12:i(1.272,ue,!1),level13:i(1.414,q,!1),level16:i(2,le,!1),level14:i(2.272,ue,!1),level15:i(2.414,pe,!1),level17:i(3,"#64b5f6",!1),level18:i(3.272,Te,!1),level19:i(3.414,T,!1),level20:i(4,"#cc2828",!1),level21:i(4.272,ee,!1),level22:i(4.414,ne,!1),level23:i(4.618,ue,!1),level24:i(4.764,le,!1)},linetoolprojection:{showCoeffs:!0,fillBackground:!0,transparency:80,color1:A,color2:ie,linewidth:1,trendline:{visible:!0,color:Pe,linestyle:CanvasEx.LINESTYLE_SOLID},level1:r(1,"#808080",!0)},linetool5pointspattern:{color:T,textcolor:w,fillBackground:!0,backgroundColor:T,fontsize:12,bold:!1,italic:!1,transparency:85,linewidth:1},linetoolcypherpattern:{color:T,textcolor:w,fillBackground:!0,backgroundColor:T,fontsize:12,bold:!1,italic:!1,transparency:85,linewidth:1},linetooltrianglepattern:{color:N,textcolor:w,fillBackground:!0,backgroundColor:N,fontsize:12,bold:!1,italic:!1,transparency:85,linewidth:1},linetoolabcd:{color:le,textcolor:w,fontsize:12,bold:!1,italic:!1,linewidth:1},linetoolthreedrivers:{color:N,textcolor:w,fillBackground:!0,backgroundColor:"rgba(149, 40, 204, 0.5)",fontsize:12,bold:!1,italic:!1,transparency:50,linewidth:1},linetoolheadandshoulders:{color:le,textcolor:w,fillBackground:!0,backgroundColor:le,fontsize:12,bold:!1,italic:!1,transparency:85,linewidth:1},linetoolfibwedge:{showCoeffs:!0,fillBackground:!0,transparency:80,trendline:{visible:!0,color:"#808080",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:r(.236,q,!0),level2:r(.382,ue,!0),level3:r(.5,pe,!0),level4:r(.618,le,!0),level5:r(.786,"#64b5f6",!0),level6:r(1,Te,!0),level7:r(1.618,T,!1),level8:r(2.618,q,!1),level9:r(3.618,N,!1),level10:r(4.236,ne,!1),level11:r(4.618,ne,!1)}, -linetoolfibcircles:{showCoeffs:!0,fillBackground:!0,transparency:80,coeffsAsPercents:!1,trendline:{visible:!0,color:Te,linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:r(.236,q,!0),level2:r(.382,ue,!0),level3:r(.5,pe,!0),level4:r(.618,le,!0),level5:r(.786,"#64b5f6",!0),level6:r(1,Te,!0),level7:r(1.618,T,!0),level8:r(2.618,q,!0),level9:r(3.618,N,!0),level10:r(4.236,ne,!0),level11:r(4.618,ne,!0)},linetoolfibspeedresistancearcs:{showCoeffs:!0,fillBackground:!0,transparency:80,fullCircles:!1,trendline:{visible:!0,color:Te,linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:r(.236,q,!0),level2:r(.382,ue,!0),level3:r(.5,pe,!0),level4:r(.618,le,!0),level5:r(.786,"#64b5f6",!0),level6:r(1,Te,!0),level7:r(1.618,T,!0),level8:r(2.618,q,!0),level9:r(3.618,N,!0),level10:r(4.236,ne,!0),level11:r(4.618,ne,!0)},linetooltrendbasedfibextension:{showCoeffs:!0,showPrices:!0,fillBackground:!0,transparency:80,extendLines:!1,extendLinesLeft:!1,horzLabelsAlign:"left",vertLabelsAlign:"bottom",reverse:!1,coeffsAsPercents:!1,fibLevelsBasedOnLogScale:!1,labelFontSize:12,trendline:{visible:!0,color:Te,linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},levelsStyle:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:i(0,Te,!0),level2:i(.236,q,!0),level3:i(.382,ue,!0),level4:i(.5,pe,!0),level5:i(.618,le,!0),level6:i(.786,"#64b5f6",!0),level7:i(1,Te,!0),level8:i(1.618,T,!0),level9:i(2.618,q,!0),level10:i(3.618,ee,!0),level11:i(4.236,ne,!0),level12:i(1.272,ue,!1),level13:i(1.414,q,!1),level16:i(2,le,!1),level14:i(2.272,ue,!1),level15:i(2.414,pe,!1),level17:i(3,"#64b5f6",!1),level18:i(3.272,Te,!1),level19:i(3.414,T,!1),level20:i(4,"#cc2828",!1),level21:i(4.272,ee,!1),level22:i(4.414,ne,!1),level23:i(4.618,ue,!1),level24:i(4.764,le,!1)},linetooltrendbasedfibtime:{showCoeffs:!0,fillBackground:!0,transparency:80,horzLabelsAlign:"right",vertLabelsAlign:"bottom",trendline:{visible:!0,color:Te,linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:r(0,Te,!0),level2:r(.382,q,!0),level3:r(.5,ue,!1),level4:r(.618,pe,!0),level5:r(1,le,!0),level6:r(1.382,"#64b5f6",!0),level7:r(1.618,Te,!0),level8:r(2,T,!0),level9:r(2.382,q,!0),level10:r(2.618,ee,!0),level11:r(3,ne,!0)},linetoolschiffpitchfork:{fillBackground:!0,transparency:80,style:l.Schiff,median:{visible:!0,color:q,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},extendLines:!1,level0:r(.25,me,!1),level1:r(.382,ue,!1),level2:r(.5,pe,!0),level3:r(.618,le,!1),level4:r(.75,"#64b5f6",!1),level5:r(1,T,!0),level6:r(1.5,ee,!1),level7:r(1.75,ne,!1),level8:r(2,j,!1)},linetoolschiffpitchfork2:{fillBackground:!0,transparency:80,style:l.Schiff2,median:{visible:!0,color:q,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},extendLines:!1,level0:r(.25,me,!1),level1:r(.382,ue,!1),level2:r(.5,pe,!0),level3:r(.618,le,!1),level4:r(.75,"#64b5f6",!1),level5:r(1,T,!0),level6:r(1.5,ee,!1),level7:r(1.75,ne,!1),level8:r(2,j,!1)},linetoolinsidepitchfork:{fillBackground:!0,transparency:80,style:l.Inside,median:{visible:!0,color:q,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},extendLines:!1,level0:r(.25,me,!1), -level1:r(.382,ue,!1),level2:r(.5,pe,!0),level3:r(.618,le,!1),level4:r(.75,"#64b5f6",!1),level5:r(1,T,!0),level6:r(1.5,ee,!1),level7:r(1.75,ne,!1),level8:r(2,j,!1)},linetoolregressiontrend:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,styles:{upLine:{visible:!0,color:I,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2},downLine:{visible:!0,color:I,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2},baseLine:{visible:!0,color:Y,linestyle:CanvasEx.LINESTYLE_DASHED,linewidth:1},extendLines:!1,showPearsons:!0,transparency:70}}},Re(TradingView.defaultProperties.chartproperties),Fe()}if(void 0===TradingView.defaultProperties["study_MA@tv-basicstudies"]&&(TradingView.defaultProperties["study_MA@tv-basicstudies"]={description:"Moving Average",shortDescription:"MA",inputs:{length:9,source:"close"},styles:{MovAvg:{visible:!0,color:T,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:h.Line,histogramBase:0,title:"MA"}}}),void 0===TradingView.defaultProperties["study_PivotPointsHighLow@tv-basicstudies"]&&(TradingView.defaultProperties["study_PivotPointsHighLow@tv-basicstudies"]={fontsize:10,borderColor:T,backColor:P,textColor:Le}),void 0===TradingView.defaultProperties["study_PivotPointsStandard@tv-basicstudies"]){TradingView.defaultProperties["study_PivotPointsStandard@tv-basicstudies"]={_hardCodedDefaultsVersion:1,fontsize:11,levelsStyle:{showLabels:!0,visibility:{P:!0,"S1/R1":!0,"S2/R2":!0,"S3/R3":!0,"S4/R4":!0,"S5/R5":!0},colors:{P:ve,"S1/R1":ve,"S2/R2":ve,"S3/R3":ve,"S4/R4":ve,"S5/R5":ve},widths:{P:1,"S1/R1":1,"S2/R2":1,"S3/R3":1,"S4/R4":1,"S5/R5":1}}}}if(void 0===TradingView.defaultProperties["study_ZigZag@tv-basicstudies"]&&(TradingView.defaultProperties["study_ZigZag@tv-basicstudies"]={color:T,linewidth:2}),void 0===TradingView.defaultProperties["study_ElliottWave@tv-basicstudies"]&&(TradingView.defaultProperties["study_ElliottWave@tv-basicstudies"]={inputs:{},level0:t(z,!1),level1:t("#008000",!1),level2:t("#0000ff",!1),level3:t("#ff00ff",!1),level4:t("#0080ff",!0),level5:t(z,!0),level6:t("#008000",!0),level7:t("#0000ff",!0),level8:t("#ff00ff",!0)}),void 0===TradingView.defaultProperties["study_LinearRegression@tv-basicstudies"]&&(TradingView.defaultProperties["study_LinearRegression@tv-basicstudies"]={styles:{upLine:{visible:!0,color:I,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},downLine:{visible:!0,color:I,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},baseLine:{visible:!0,color:Y,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},extendLines:!0,showPearsons:!0,backgroundColor:"rgba(153, 21, 21, 0.3)",transparency:70}}),void 0===TradingView.defaultProperties["study_Compare@tv-basicstudies"]&&(TradingView.defaultProperties["study_Compare@tv-basicstudies"]={minTick:"default"}),void 0===TradingView.defaultProperties["study_Overlay@tv-basicstudies"]){TradingView.defaultProperties["study_Overlay@tv-basicstudies"]={style:a.STYLE_LINE,allowExtendTimeScale:!1,showPriceLine:!1,minTick:"default",candleStyle:{upColor:"#6ba583",downColor:"#d75442",drawWick:!0,drawBorder:!0,drawBody:!0,borderColor:"#378658", -borderUpColor:"#225437",borderDownColor:"#5b1a13",wickColor:"#737375",wickUpColor:"#737375",wickDownColor:"#737375",barColorsOnPrevClose:!1},hollowCandleStyle:{upColor:"#6ba583",downColor:"#d75442",drawWick:!0,drawBorder:!0,drawBody:!0,borderColor:"#378658",borderUpColor:"#225437",borderDownColor:"#5b1a13",wickColor:"#737375",wickUpColor:"#737375",wickDownColor:"#737375",barColorsOnPrevClose:!1},barStyle:{upColor:"#6ba583",downColor:"#d75442",barColorsOnPrevClose:!1,dontDrawOpen:!1,thinBars:!0},lineStyle:{color:be,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2,priceSource:"close",styleType:a.STYLE_LINE_TYPE_SIMPLE},areaStyle:{color1:T,color2:T,linecolor:T,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2,priceSource:"close",transparency:95},baselineStyle:{baselineColor:Ae,topFillColor1:ke,topFillColor2:ke,bottomFillColor1:Ve,bottomFillColor2:Ve,topLineColor:Ee,bottomLineColor:De,topLineWidth:2,bottomLineWidth:2,priceSource:"close",transparency:50,baseLevelPercentage:50},columnStyle:{upColor:n(le,50),downColor:n(q,50),barColorsOnPrevClose:!0,priceSource:"close"},styles:{open:{visible:!0,color:z,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:h.Line,histogramBase:0},high:{visible:!0,color:z,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:h.Line,histogramBase:0},low:{visible:!0,color:z,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:h.Line,histogramBase:0},close:{visible:!0,color:z,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:h.Line,histogramBase:0}}}}for(var Oe=e.split("."),We=TradingView.defaultProperties,He=0;He1?h(e[r],t.slice(1),i):(e[r]&&e[r].setValue?e[r].setValue(i):e[r]=i,!0))}function d(e){i||y.logWarn("Path `"+e+"` does not exist.")}}function Re(e,t,i,s){window.__defaultsOverrides&&Ne(e,t,i,window.__defaultsOverrides,s)}function Oe(e,t){window.__settingsOverrides&&Ne(e,null,!1,window.__settingsOverrides,t)}function Fe(){var e=/^linetool.+/;Object.keys(TradingView.defaultProperties).forEach((function(t){e.test(t)&&Re(TradingView.defaultProperties[t],null,!1,t)}))}function We(e,t){return t?function(e,t){var i=Be(e);if(!window._UNIT_TESTS){var s=TradingView.clone(TVSettings.getJSON(e,null));if(function(e){var t=new Set(["linetoolregressiontrend"]);return e.startsWith("study_")||t.has(e)}(e)&&s&&function(e){if(!e)return!1;e=e.toString();var t=new RegExp("\\d+").exec(e);return null!==t&&t[0]===e}(s.version)){var r=s.inputs,n=t.updateStudyInputs(s.id,s.version,"last",r,null);s.inputs=n;var o=t.updateStudyState(s,s);s=o}TradingView.merge(i,s),Oe(i,e)}return i}(e,t):function(e){var t=Be(e);if(!window._UNIT_TESTS){var i=TradingView.clone(TVSettings.getJSON(e,null));if(i){TradingView.merge(t,i) -;const s=e.split(".");Oe(t,void 0===s[1]?e:s[1])}}return t}(e)}We.create=function(e,t){if(t){var i=Be(e);TradingView.defaultProperties[e]=Object.assign(t,i)}},We.remove=function(e){TradingView.defaultProperties[e]=void 0},TradingView.saveDefaults=function(e,t){void 0===t?TVSettings.remove(e):TVSettings.setJSON(e,t)},TradingView.factoryDefaults=Be,window.applyDefaultOverridesToLinetools=Fe,window.applyDefaultsOverrides=Re,window.applyPropertiesOverrides=Ne,window.defaults=We,t.applyDefaultOverridesToLinetools=Fe,t.applyDefaultsOverrides=Re,t.applyPropertiesOverrides=Ne,t.defaults=We,t.factoryDefaults=Be,t.saveDefaults=TradingView.saveDefaults},85733:(e,t,i)=>{"use strict";i.r(t),i.d(t,{toolIsCursor:()=>p,toolIsMeasure:()=>_,resetToCursor:()=>m,lockTimeAxisTime:()=>w,tool:()=>C,iconTool:()=>P,cursorTool:()=>T,isToolCreatingNow:()=>x,isToolEditingNow:()=>I,isToolMovingNow:()=>M,isDirectionalMovementActive:()=>L,createdLineTool:()=>A,continuedLineTool:()=>E,cancelledLineTool:()=>k,beenSetLineToolLastPoint:()=>D,startedMovingLineTool:()=>V,movedLineTool:()=>B,finishedMovingLineTool:()=>N,startedChangingLineTool:()=>R,changedLineTool:()=>O,finishedChangingLineTool:()=>F,removedLineTool:()=>W,finishedLineTool:()=>H,changedLineStyle:()=>z,copiedLineTool:()=>U,restoredLineTool:()=>j,restoredLineToolState:()=>G,isPointSelectedNow:()=>q,isStudyEditingNow:()=>Y,createLineTool:()=>X,continueLineTool:()=>Z,cancelLineTool:()=>J,setLineToolLastPoint:()=>Q,startMovingLineTool:()=>ee,moveLineTool:()=>te,finishMovingLineTool:()=>ie,startChangingLineTool:()=>se,changeLineTool:()=>re,finishChangingLineTool:()=>ne,removeLineTool:()=>oe,finishLineTool:()=>ae,changeLineStyle:()=>le,copyLineTool:()=>ce,restoreLineTool:()=>he,restoreLineToolState:()=>de,init:()=>_e,runOnDrawingStateReady:()=>me,properties:()=>ge,hideAllDrawings:()=>fe,hideAllIndicators:()=>ve,lockDrawings:()=>Se,hideMarksOnBars:()=>ye,drawOnAllCharts:()=>be,drawOnAllChartsMode:()=>we,lockTimeAxis:()=>Ce});var s=i(88537),r=i(32255),n=i(88564),o=i(59803),a=i(52714),l=i.n(a),c=i(2872),h=i.n(c),d=i(56840),u=i(76422);function p(e){return"cursor"===e||"arrow"===e||"dot"===e}function _(e){return"measure"===e}function m(e=!1){if(!e&&g){if(g.childs().stayInDrawingMode.value())return}C.setValue(T.value())}let g=null,f=null,v=null,S=null,y=null,b=null;const w=new(l()),C=new(l()),P=new(l()),T=new(l()),x=new(l())(!1),I=new(l())(!1),M=new(l())(!1),L=new(l())(!1),A=new(h()),E=new(h()),k=new(h()),D=new(h()),V=new(h()),B=new(h()),N=new(h()),R=new(h()),O=new(h()),F=new(h()),W=new(h()),H=new(h()),z=new(h()),U=new(h()),j=new(h()),G=new(h()),q=new(l())(!1),Y=new(l())(!1);function K(e,t){const i=t||{value:!1};return t=>{i.value||(i.value=!0,e.fire(t),i.value=!1)}}const $={value:!1},X=K(A,$),Z=K(E,$),J=K(k,$),Q=K(D,$),ee=K(V),te=K(B),ie=K(N),se=K(R),re=K(O),ne=K(F),oe=K(W),ae=K(H),le=K(z,$),ce=K(U,$),he=K(j),de=K(G);let ue=!1,pe=[];function _e(){ue||(C.setValue(d.getValue("chart.cursorPreference","cursor")),C.subscribe(e=>p(e)&&T.setValue(e),{callWithLast:!0}),T.subscribe(e=>{ -e&&d.setValue("chart.cursorPreference",e)}),g=new n.DefaultProperty("drawings"),f=(0,r.createPrimitiveProperty)(),v=(0,r.createPrimitiveProperty)(),S=(0,r.createPrimitiveProperty)(),y=(0,r.createPrimitiveProperty)(),b=(0,r.createPrimitiveProperty)(),f.setValue(!1),v.setValue(!1),S.setValue(!1),y.setValue(!1),b.setValue(!1),C.subscribe(()=>{(0,u.emit)("onSelectedLineToolChanged")}),P.subscribe(()=>{(0,o.saveDefaults)("linetoolicon",{...(0,o.defaults)("linetoolicon"),icon:P.value()})}),ue=!0,pe.forEach(e=>e()),pe=[])}function me(e){ue?e():pe.push(e)}function ge(){return(0,s.ensureNotNull)(g)}function fe(){return(0,s.ensureNotNull)(f)}function ve(){return(0,s.ensureNotNull)(v)}function Se(){return(0,s.ensureNotNull)(S)}function ye(){return(0,s.ensureNotNull)(y)}function be(){return ge().childs().drawOnAllCharts}function we(){return ge().childs().drawOnAllChartsMode}function Ce(){return(0,s.ensureNotNull)(b)}},77216:(e,t,i)=>{"use strict";i.d(t,{EnvironmentState:()=>r});var s=i(49483);class r{constructor(e,t=!1){this._shift=!1,this._mod=!1,this._alt=!1,void 0!==e&&(this._shift=Boolean(e.shiftKey),this._mod=Boolean((0,s.isMac)()?e.metaKey:e.ctrlKey),this._alt=Boolean(e.altKey)),this._isApiEvent=t}shift(){return this._shift}mod(){return this._mod}alt(){return this._alt}shiftOnly(){return this._shift&&!this._mod&&!this._alt}modOnly(){return this._mod&&!this._shift&&!this._alt}altOnly(){return this._alt&&!this._shift&&!this._mod}modShift(){return this._shift&&this._mod&&!this._alt}isApiEvent(){return this._isApiEvent}static create(e=!1,t=!1,i=!1){return new r({shiftKey:e,ctrlKey:t,metaKey:t,altKey:i})}}},19234:(e,t,i)=>{"use strict";function s(e){return"="+JSON.stringify(function e(t){return Object.keys(t).sort().reduce((i,s)=>("[object Object]"===Object.prototype.toString.call(t[s])?i[s]=e(t[s]):i[s]=t[s],i),{})}(e))}function r(e){return s(e)}function n(e){return"="===e[0]}function o(e){if(!n(e))return{symbol:e};try{return JSON.parse(e.slice(1))}catch(t){return{symbol:e}}}function a(e){return"string"==typeof e?e:a(e.symbol)}i.r(t),i.d(t,{encodeExtendedSymbolOrGetSimpleSymbolString:()=>r,isEncodedExtendedSymbol:()=>n,decodeExtendedSymbol:()=>o,unwrapSimpleSymbol:()=>a})},69147:(e,t,i)=>{"use strict";i.d(t,{customFormatters:()=>s});const s={dateFormatter:null,timeFormatter:null,tickMarkFormatter:null,priceFormatterFactory:null,studyFormatterFactory:null}},7043:(e,t,i)=>{"use strict";i.d(t,{dateFormatFunctions:()=>p,availableDateFormats:()=>_,defaultDateFormat:()=>m});var s=i(28353),r=i(97098);const n={1:()=>(0,s.t)("Jan"),2:()=>(0,s.t)("Feb"),3:()=>(0,s.t)("Mar"),4:()=>(0,s.t)("Apr"),5:()=>(0,s.t)("May",{context:"short"}),6:()=>(0,s.t)("Jun"),7:()=>(0,s.t)("Jul"),8:()=>(0,s.t)("Aug"),9:()=>(0,s.t)("Sep"),10:()=>(0,s.t)("Oct"),11:()=>(0,s.t)("Nov"),12:()=>(0,s.t)("Dec")},o=(e,t)=>(t?e.getMonth():e.getUTCMonth())+1,a=(e,t)=>t?e.getFullYear():e.getUTCFullYear(),l=(e,t)=>(0,r.numberToStringWithLeadingZero)(((e,t)=>t?e.getDate():e.getUTCDate())(e,t),2),c=(e,t)=>n[o(e,t)](),h=(e,t)=>(0, -r.numberToStringWithLeadingZero)(o(e,t),2),d=(e,t)=>(0,r.numberToStringWithLeadingZero)(a(e,t)%100,2),u=(e,t)=>(0,r.numberToStringWithLeadingZero)(a(e,t),4),p={"dd MMM 'yy":(e,t)=>`${l(e,t)} ${c(e,t)} '${d(e,t)}`,"MMM dd, yyyy":(e,t)=>`${c(e,t)} ${l(e,t)}, ${u(e,t)}`,"MMM dd":(e,t)=>`${c(e,t)} ${l(e,t)}`,"yyyy-MM-dd":(e,t)=>`${u(e,t)}-${h(e,t)}-${l(e,t)}`,"yy-MM-dd":(e,t)=>`${d(e,t)}-${h(e,t)}-${l(e,t)}`,"yy/MM/dd":(e,t)=>`${d(e,t)}/${h(e,t)}/${l(e,t)}`,"yyyy/MM/dd":(e,t)=>`${u(e,t)}/${h(e,t)}/${l(e,t)}`,"dd-MM-yyyy":(e,t)=>`${l(e,t)}-${h(e,t)}-${u(e,t)}`,"dd-MM-yy":(e,t)=>`${l(e,t)}-${h(e,t)}-${d(e,t)}`,"dd/MM/yy":(e,t)=>`${l(e,t)}/${h(e,t)}/${d(e,t)}`,"dd/MM/yyyy":(e,t)=>`${l(e,t)}/${h(e,t)}/${u(e,t)}`,"MM/dd/yy":(e,t)=>`${h(e,t)}/${l(e,t)}/${d(e,t)}`,"MM/dd/yyyy":(e,t)=>`${h(e,t)}/${l(e,t)}/${u(e,t)}`},_=Object.keys(p),m=()=>-1!==["ja","ko","zh","zh_TW"].indexOf(window.language||"")?"yyyy-MM-dd":"dd MMM 'yy"},1860:(e,t,i)=>{"use strict";i.d(t,{DateFormatter:()=>n});var s=i(69147),r=i(7043);class n{constructor(e="yyyy-MM-dd"){this._dateFormatFunc=r.dateFormatFunctions[e]}format(e){return s.customFormatters&&s.customFormatters.dateFormatter?s.customFormatters.dateFormatter.format(e):this._dateFormatFunc(e,!1)}formatLocal(e){return s.customFormatters.dateFormatter?s.customFormatters.dateFormatter.formatLocal?s.customFormatters.dateFormatter.formatLocal(e):s.customFormatters.dateFormatter.format(e):this._dateFormatFunc(e,!0)}}},95792:(e,t,i)=>{"use strict";i.d(t,{DateTimeFormatter:()=>o});var s=i(64806),r=i(1860);const n={dateFormat:"yyyy-MM-dd",timeFormat:"%h:%m:%s",dateTimeSeparator:" "};class o{constructor(e={}){const t=Object.assign({},n,e);this._dateFormatter=new r.DateFormatter(t.dateFormat),this._timeFormatter=new s.TimeFormatter(t.timeFormat),this._separator=t.dateTimeSeparator}format(e){return`${this._dateFormatter.format(e)}${this._separator}${this._timeFormatter.format(e)}`}formatLocal(e){return`${this._dateFormatter.formatLocal(e)}${this._separator}${this._timeFormatter.formatLocal(e)}`}}},51264:(e,t,i)=>{"use strict";i.d(t,{LimitedPrecisionNumericFormatter:()=>r});var s=i(80643);class r{constructor(e=1){this._precision=e}format(e){(0,s.isNumber)(e)||(e=parseFloat(e));const t=e.toFixed(this._precision),i=Math.pow(10,-this._precision);return Math.max(parseFloat(t),i)+""}parse(e){const t=parseFloat(e);return isNaN(t)?{res:!1}:{res:!0,value:t,suggest:this.format(t)}}}},95505:(e,t,i)=>{"use strict";i.d(t,{NumericFormatter:()=>n});var s=i(97098),r=i(60521);class n{constructor(e){this._precision=e}format(e){return(void 0!==this._precision?e.toFixed(this._precision):n.formatNoE(e)).replace(".",s.formatterOptions.decimalSign)}parse(e){const t=e.replace(s.formatterOptions.decimalSign,".");let i=parseFloat(t);return this._precision&&(i=+i.toFixed(this._precision)),i}static formatNoE(e){if(!Number.isFinite(e))return String(e);const t=new r.Big(e);return t.lt(1)?t.toFixed():t.toString()}}},26811:(e,t,i)=>{"use strict";i.d(t,{PercentageFormatter:()=>n});var s=i(97098),r=i(62820);class n extends s.PriceFormatter{ -constructor(e){super(e),this.type="percentage"}state(){const e=s.PriceFormatter.prototype.state.call(this);return e.percent=!0,e}parse(e){return e=e.replace("%",""),super.parse(e)}format(e,t,i,s,n=!0){const o=super.format(e,t,i,s,!1)+"%";return n?(0,r.forceLTRStr)(o):o}static serialize(e){return e.state()}static deserialize(e){return new n(e.priceScale)}}},97645:(e,t,i)=>{"use strict";i.d(t,{PipFormatter:()=>r});var s=i(97098);class r extends s.PriceFormatter{constructor(e,t,i,s){t||(t=1),"forex"!==i&&"cfd"!==i||!s?(super(1),this._isForex=!1):(super(s),this._isForex=!0),this._pipPriceScale=e,this._pipMinMove=t,this._pipMinMove2=s}format(e,t,i){let s=this._isForex?this._pipMinMove2:this._pipMinMove;return void 0===s&&(s=NaN),super.format(e*this._pipPriceScale/s,t,i)}}},97098:(e,t,i)=>{"use strict";i.r(t),i.d(t,{formatterOptions:()=>l,numberToStringWithLeadingZero:()=>c,isFormatterHasForexAdditionalPrecision:()=>h,PriceFormatter:()=>d});var s=i(28353),r=i(80643),n=i(62820);const o=(0,i(98125).getLogger)("Chart.PriceFormatter"),a=new RegExp(/^(-?)[0-9]+$/),l={decimalSign:".",decimalSignFractional:"'"};function c(e,t){if(!(0,r.isNumber)(e))return"n/a";if(!(0,r.isInteger)(t))throw new TypeError("invalid length");if(t<0||t>16)throw new TypeError("invalid length");if(0===t)return e.toString();return("0000000000000000"+e.toString()).slice(-t)}function h(e){return"hasForexAdditionalPrecision"in e}class d{constructor(e,t,i,n){if(this.type="price",this._formatterErrors={custom:(0,s.t)("Price format is invalid."),fraction:(0,s.t)("Fraction part is invalid."),secondFraction:(0,s.t)("Second fraction part is invalid.")},t||(t=1),(0,r.isNumber)(e)&&(0,r.isInteger)(e)||(e=100),e<0)throw new TypeError("invalid base");this._priceScale=e,this._minMove=t,this._minMove2=n,i&&void 0!==n&&n>0&&2!==n&&4!==n&&8!==n?o.logDebug("invalid minmove2"):(this._fractional=i,this.calculateDecimal())}isFractional(){return!!this._fractional}state(){return{fractional:this._fractional,fractionalLength:this._fractionalLength,minMove:this._minMove,minMove2:this._minMove2,priceScale:this._priceScale}}calculateDecimal(){if(this._fractionalLength=0,this._priceScale>0&&this._minMove>0){let e=this._priceScale;for(this._fractional&&this._minMove2&&(e/=this._minMove2);e>1;)e/=10,this._fractionalLength++}}format(e,t,i,s=!0,r=!0){let o,a="";return e<0?(a=!1===s?"":"−",e=-e):e&&!0===t&&(a="+"),o=this._fractional?a+this._formatAsFractional(e,i):a+this._formatAsDecimal(e,i),r?(0,n.forceLTRStr)(o):o}parse(e){return e=(e=(0,n.stripLTRMarks)(e)).replace("−","-"),this._fractional?this._minMove2?this._parseAsDoubleFractional(e):this._parseAsSingleFractional(e):this._parseAsDecimal(e)}hasForexAdditionalPrecision(){return!this._fractional&&10===this._minMove2}static serialize(e){return e.state()}static deserialize(e){return new d(e.priceScale,e.minMove,e.fractional,e.minMove2)}_formatAsDecimal(e,t){let i;t=t||0,i=this._fractional?Math.pow(10,this._fractionalLength||0):Math.pow(10,t)*this._priceScale/this._minMove;const s=1/i;let r;if(i>1)r=Math.floor(e);else{ -const t=Math.floor(Math.round(e/s)*s);r=0===Math.round((e-t)/s)?t:t+s}let n="";if(i>1){let s=parseFloat((Math.round(e*i)-r*i).toFixed(this._fractionalLength));s>=i&&(s-=i,r+=1);const o=void 0!==this._fractionalLength?this._fractionalLength:NaN;n=l.decimalSign+c(parseFloat(s.toFixed(this._fractionalLength))*this._minMove,o+t),n=this._removeEndingZeros(n,t)}return r.toString()+n}_getFractPart(e,t,i){const s=[0,5],r=[0,2,5,7],n=[0,1,2,3,5,6,7,8];return 2===i?void 0===s[e]?-1:s[e]:4===i?void 0===r[e]?-1:r[e]:8===i&&2===t?void 0===n[e]?-1:n[e]:e}_formatAsFractional(e,t){const i=this._priceScale/this._minMove;let s=Math.floor(e),r=t?Math.floor(e*i)-s*i:Math.round(e*i)-s*i;r===i&&(r=0,s+=1);let n="";if(t){let o=(e-s-r/i)*i;o=Math.round(o*Math.pow(10,t)),n=c(o,t),n=this._removeEndingZeros(n,t)}if(!this._fractionalLength)throw new Error("_fractionalLength is not calculated");let o="";if(this._minMove2){const e=r%this._minMove2;r=(r-e)/this._minMove2;const t=c(r,this._fractionalLength),i=this._getFractPart(e,2,this._minMove2);o=t+l.decimalSignFractional+i}else r=this._getFractPart(r,1,this._priceScale),o=c(r*this._minMove,this._fractionalLength);return s.toString()+l.decimalSignFractional+o+n}_removeEndingZeros(e,t){for(let i=0;i=s||r<0)return{error:this._formatterErrors.fraction,res:!1};let n=i+r/s;return e&&(n=-n),{value:n,res:!0,suggest:this.format(n)}}return{error:this._formatterErrors.custom,res:!1}}_parseAsDoubleFractional(e){let t=a.exec(e);if(t){const t=parseFloat(e);return{value:t,res:!0,suggest:this.format(t)}}if(t=new RegExp("^(-?)([0-9]+)\\"+l.decimalSignFractional+"([0-9]+)\\"+l.decimalSignFractional+"([0-9]+)$").exec(e),t){const e=!!t[1],i=parseInt(t[2]),s=void 0!==this._minMove2?this._minMove2:NaN,r=this._priceScale/s,n=this._minMove2,o=this._patchFractPart(parseInt(t[3]),1,r),a=this._patchFractPart(parseInt(t[4]),2,n);if(o>=r||o<0)return{error:this._formatterErrors.fraction,res:!1};if(void 0!==n&&a>=n||a<0)return{error:this._formatterErrors.secondFraction,res:!1};let l=void 0!==n?i+o/r+a/(r*n):NaN;return e&&(l=-l),{value:l,res:!0,suggest:this.format(l)}}return{error:this._formatterErrors.custom,res:!1}}}},64806:(e,t,i)=>{"use strict";i.d(t,{ -TimeFormatter:()=>n});var s=i(69147),r=i(97098);class n{constructor(e){this._formatStr=e||"%h:%m:%s"}format(e){return s.customFormatters.timeFormatter?s.customFormatters.timeFormatter.format(e):this._formatStr.replace("%h",(0,r.numberToStringWithLeadingZero)(e.getUTCHours(),2)).replace("%m",(0,r.numberToStringWithLeadingZero)(e.getUTCMinutes(),2)).replace("%s",(0,r.numberToStringWithLeadingZero)(e.getUTCSeconds(),2))}formatLocal(e){return s.customFormatters.timeFormatter?s.customFormatters.timeFormatter.formatLocal?s.customFormatters.timeFormatter.formatLocal(e):s.customFormatters.timeFormatter.format(e):this._formatStr.replace("%h",(0,r.numberToStringWithLeadingZero)(e.getHours(),2)).replace("%m",(0,r.numberToStringWithLeadingZero)(e.getMinutes(),2)).replace("%s",(0,r.numberToStringWithLeadingZero)(e.getSeconds(),2))}}},92242:(e,t,i)=>{"use strict";i.d(t,{TimeSpanFormatter:()=>r});var s=i(28353);class r{format(e){const t=e<0;e=Math.abs(e);const i=Math.floor(e/86400);e-=86400*i;const r=Math.floor(e/3600);e-=3600*r;const n=Math.floor(e/60);e-=60*n;let o="";return i&&(o+=i+(0,s.t)("d",{context:"dates"})+" "),r&&(o+=r+(0,s.t)("h",{context:"dates"})+" "),n&&(o+=n+(0,s.t)("m",{context:"dates"})+" "),e&&(o+=e+(0,s.t)("s",{context:"dates"})+" "),t&&(o="-"+o),o.trim()}}},67802:(e,t,i)=>{"use strict";i.d(t,{VolumeFormatter:()=>a});var s=i(28353),r=i(95505),n=i(80643),o=i(93751);class a{constructor(e){this.type="volume",this._numericFormatter=new r.NumericFormatter,this._fractionalValues=void 0!==e&&e>0,this._precision=e}state(){return{precision:this._precision}}format(e,t){if(!(0,n.isNumber)(e))return"---";let i="";return e<0?(i="−",e=-e):e>0&&t&&(i="+"),e>=1e100?(0,s.t)("N/A"):(!this._fractionalValues||e>=995?e=Math.round(e):this._fractionalValues&&(e=+e.toFixed(this._precision)),e<995?i+this._formatNumber(e):e<999995?i+this._formatNumber(e/1e3)+"K":e<999999995?(e=1e3*Math.round(e/1e3),i+this._formatNumber(e/1e6)+"M"):e<999999999995?(e=1e6*Math.round(e/1e6),i+this._formatNumber(e/1e9)+"B"):(e=1e9*Math.round(e/1e9),i+this._formatNumber(e/1e12)+"T"))}parse(e){if("---"===e)return{error:"not a number",res:!1,value:NaN};const t={K:1e3,M:1e6,B:1e9},i=e.slice(-1);if(t.hasOwnProperty(i)){const s=this._numericFormatter.parse(e.slice(0,-1));return(0,n.isNumber)(s)?{res:!0,value:s*t[i]}:{error:"not a number",res:!1,value:NaN}}{const t=this._numericFormatter.parse(e);return(0,n.isNumber)(t)?{res:!0,value:t}:{error:"not a number",res:!1,value:NaN}}}static serialize(e){return e.state()}static deserialize(e){return new a(e.precision)}_formatNumber(e){return this._fractionalValues&&(e=(0,o.fixComputationError)(e)),this._numericFormatter.format(e).replace(/(\.[1-9]*)0+$/,(e,t)=>t)}}},88129:(e,t,i)=>{"use strict";i.d(t,{shouldBeFormattedAsPercent:()=>n,shouldBeFormattedAsIndexedTo100:()=>o,getPriceValueFormatterForSource:()=>a});var s=i(37667),r=i(79680);function n(e){const t=e.priceScale();return!(null===t||!t.isPercentage())&&(!(0,r.isActingAsSymbolSource)(e)||(0,s.isPriceSourceStyle)(e.style()))}function o(e){const t=e.priceScale() -;return!(null===t||!t.isIndexedTo100())&&(!(0,r.isActingAsSymbolSource)(e)||(0,s.isPriceSourceStyle)(e.style()))}function a(e){const t=e.priceScale();if(o(e)&&null!==t)return i=>{var s;return t.formatPriceIndexedTo100(i,null!==(s=e.firstValue())&&void 0!==s?s:100)};if(n(e)&&null!==t)return i=>{var s;return t.formatPricePercentage(i,null!==(s=e.firstValue())&&void 0!==s?s:100)};const i=e.formatter();return i.format.bind(i)}},84346:(e,t,i)=>{"use strict";function s(e,t,i){if(e.isTouch){if(void 0!==i)return i(e),!0}else if(void 0!==t)return t(e),!0;return!1}function r(e,t,i,s){return void 0!==t.executeDefaultAction&&(e.isTouch?Boolean(t.executeDefaultAction[s]):Boolean(t.executeDefaultAction[i]))}var n;i.d(t,{tryCallHandler:()=>s,shouldDefaultActionBeExecuted:()=>r,AreaName:()=>n,HitTestResult:()=>o}),function(e){e.Style="Style",e.Text="Text",e.SourceItemMove="SourceItemMove"}(n||(n={}));class o{constructor(e,t,i){this._result=e,this._data=t||null,this._eraseMarker=i}result(){return this._result}data(){return this._data}hasPressedMoveHandler(e){return null!==this._data&&function(e,t,i){if(e.isTouch){if(void 0!==i)return!0}else if(void 0!==t)return!0;return!1}(e,this._data.pressedMouseMoveHandler,this._data.touchMoveHandler)}tryCallMouseDownOrTouchStartHandler(e){return null!==this._data&&s(e,this._data.mouseDownHandler,this._data.touchStartHandler)}tryCallMouseUpOrTouchEndHandler(e){return null!==this._data&&s(e,this._data.mouseUpHandler,this._data.touchEndHandler)}tryCallMouseEnterHandler(e){return null!==this._data&&s(e,this._data.mouseEnterHandler)}tryCallMouseLeaveHandler(e){return null!==this._data&&s(e,this._data.mouseLeaveHandler)}tryCallMouseMoveHandler(e){return null!==this._data&&s(e,this._data.mouseMoveHandler)}tryCallClickOrTapHandler(e){return null!==this._data&&s(e,this._data.clickHandler,this._data.tapHandler)}tryCallDblClickOrDblTapHandler(e){return null!==this._data&&s(e,this._data.doubleClickHandler,this._data.doubleTapHandler)}tryCallContextMenuHandler(e){return null!==this._data&&s(e,this._data.contextMenuHandler,this._data.touchContextMenuHandler)}eraseMarker(){return this._eraseMarker}}o.MOVEPOINT_BACKGROUND=1,o.REGULAR=2,o.MOVEPOINT=3,o.CHANGEPOINT=4,o.CUSTOM=5},22221:(e,t,i)=>{"use strict";i.d(t,{HorizontalLinePaneView:()=>n});var s=i(40254),r=i(43891);class n{constructor(){this._lineRendererData={y:0,color:"rgba(0, 0, 0, 0)",linewidth:1,linestyle:r.LINESTYLE_SOLID,visible:!1},this._lineRenderer=new s.HorizontalLineRenderer,this._invalidated=!0,this._lineRenderer.setData(this._lineRendererData)}update(e){this._invalidated=!0}renderer(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._lineRenderer}}},27759:(e,t,i)=>{"use strict";var s,r;i.d(t,{PlDisplay:()=>s,TradingSourcesHorizontalAlignment:()=>r,tradingPreferencesDefault:()=>n,CustomSourceLayer:()=>o}),function(e){e[e.Money=0]="Money",e[e.Pips=1]="Pips",e[e.Percentage=2]="Percentage"}(s||(s={})),function(e){e[e.Left=0]="Left",e[e.Center=1]="Center",e[e.Right=2]="Right"}(r||(r={}));const n={showPositions:!1,positionPL:{ -visibility:!1,display:s.Money},bracketsPL:{visibility:!1,display:s.Money},showOrders:!1,showExecutions:!1,showExecutionsLabels:!1,showReverse:!1,extendLeft:!1,lineLength:0,horizontalAlignment:r.Right,lineWidth:0,lineStyle:0};var o;!function(e){e[e.Background=0]="Background",e[e.Foreground=1]="Foreground",e[e.Topmost=2]="Topmost"}(o||(o={}))},29823:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ResolutionKind:()=>n,SpecialResolutionKind:()=>o,Interval:()=>h,isHour:()=>u});const s=/^(\d*)([TSHDWMR])$/,r=/^(\d+)$/;var n,o;!function(e){e.Ticks="ticks",e.Seconds="seconds",e.Minutes="minutes",e.Days="days",e.Weeks="weeks",e.Months="months",e.Range="range",e.Invalid="invalid"}(n||(n={})),function(e){e.Hours="hours"}(o||(o={}));const a={};a[n.Ticks]=1e3,a[n.Seconds]=1e3,a[n.Minutes]=60*a[n.Seconds],a[n.Days]=1440*a[n.Minutes],a[n.Weeks]=7*a[n.Days];const l={T:n.Ticks,S:n.Seconds,D:n.Days,W:n.Weeks,M:n.Months,R:n.Range},c=new Set([n.Ticks,n.Seconds,n.Minutes]);class h{constructor(e,t){this._kind=n.Invalid,this._multiplier=0,e!==n.Invalid&&t>0&&(this._kind=e,this._multiplier=t)}kind(){return this._kind}multiplier(){return this._multiplier}isValid(){return this.kind()!==n.Invalid&&this.multiplier()>0}isDWM(){return this.isValid()&&!this.isRange()&&!this.isIntraday()&&!this.isTicks()}isIntraday(){const e=c.has(this.kind());return this.isValid()&&e}isSeconds(){return this.kind()===n.Seconds}isMinutes(){return this.kind()===n.Minutes}isMinuteHours(){return this.kind()===n.Minutes&&u(this.multiplier())}isDays(){return this.kind()===n.Days}isWeeks(){return this.kind()===n.Weeks}isMonths(){return this.kind()===n.Months}isRange(){return this.kind()===n.Range}isTicks(){return this.kind()===n.Ticks}isTimeBased(){return!this.isRange()}letter(){return this.isValid()&&this.kind()!==n.Minutes?this.kind()[0].toUpperCase():""}value(){return this.isValid()?this.kind()===n.Minutes?this.multiplier()+"":this.multiplier()+this.letter():""}isEqualTo(e){if(!(e instanceof h))throw new Error("Argument is not an Interval");return!(!this.isValid()||!e.isValid())&&(this.kind()===e.kind()&&this.multiplier()===e.multiplier())}inMilliseconds(e=Date.now()){if(!this.isValid()||this.isRange())return NaN;if(this.isMonths()){const t=new Date(e);t.setUTCMonth(t.getUTCMonth()+(this.multiplier()||1));return+t-e}const t=this.multiplier();return a[this.kind()]*t}static isEqual(e,t){return e===t||h.parse(e).isEqualTo(h.parse(t))}static parseExt(e){e=(e+"").toUpperCase().split(",")[0];let t=s.exec(e);return null!==t?"H"===t[2]?{interval:new h(n.Minutes,60*d(t[1])),guiResolutionKind:o.Hours}:{interval:new h(l[t[2]],d(t[1])),guiResolutionKind:l[t[2]]}:(t=r.exec(e),null!==t?{interval:new h(n.Minutes,d(t[1])),guiResolutionKind:n.Minutes}:{interval:new h(n.Invalid,0),guiResolutionKind:n.Invalid})}static parse(e){return h.parseExt(e).interval}static kind(e){return h.parse(e).kind()}static isValid(e){return h.parse(e).isValid()}static isDWM(e){return h.parse(e).isDWM()}static isIntraday(e){return h.parse(e).isIntraday()}static isSeconds(e){return h.parse(e).isSeconds()} -static isMinutes(e){return h.parse(e).isMinutes()}static isMinuteHours(e){return h.parse(e).isMinuteHours()}static isDays(e){return h.parse(e).isDays()}static isWeeks(e){return h.parse(e).isWeeks()}static isMonths(e){return h.parse(e).isMonths()}static isRange(e){return h.parse(e).isRange()}static isTicks(e){return h.parse(e).isTicks()}static isTimeBased(e){return h.parse(e).isTimeBased()}static normalize(e){const t=h.parse(e);return t.isValid()?t.value():null}}function d(e){return 0===e.length?1:parseInt(e,10)}function u(e){return e>=60&&!(e%60)}},52418:(e,t,i)=>{"use strict";i.d(t,{intervalsVisibilitiesDefaults:()=>s});const s={ticks:!0,seconds:!0,secondsFrom:1,secondsTo:59,minutes:!0,minutesFrom:1,minutesTo:59,hours:!0,hoursFrom:1,hoursTo:24,days:!0,daysFrom:1,daysTo:366,weeks:!0,weeksFrom:1,weeksTo:52,months:!0,monthsFrom:1,monthsTo:12,ranges:!0}},20838:(e,t,i)=>{"use strict";i.d(t,{IntervalsVisibilitiesProperty:()=>n});var s=i(2015),r=i.n(s);i(36759);class n extends(r()){state(e){return super.state(e)}storeStateIfUndefined(){return!1}}},36759:(e,t,i)=>{"use strict";i.d(t,{makeIntervalsVisibilitiesVisibleAtInterval:()=>a,isActualInterval:()=>c,nonDefaultIntervalsVisibilities:()=>h,mergeIntervalVisibilitiesDefaults:()=>d});var s=i(88537),r=i(29823),n=i(52418),o=i(80643);function a(e,t){let i=t.multiplier();if(t.isTicks()&&(e.ticks=!0),t.isSeconds()&&(i<60?(e.seconds=!0,e.secondsFrom=Math.min(e.secondsFrom,i),e.secondsTo=Math.max(e.secondsTo,i)):(i/=60,t=new r.Interval(r.ResolutionKind.Minutes,i))),t.isMinutes())if(i<60)e.minutes=!0,e.minutesFrom=Math.min(e.minutesFrom,i),e.minutesTo=Math.max(e.minutesTo,i);else{const t=Math.floor(i/60);e.hours=!0,e.hoursFrom=Math.min(e.hoursFrom,t),e.hoursTo=Math.max(e.hoursTo,t)}t.isDays()&&(e.days=!0,e.daysFrom=Math.min(e.daysFrom,i),e.daysTo=Math.max(e.daysTo,i)),t.isWeeks()&&(e.weeks=!0,e.weeksFrom=Math.min(e.weeksFrom,i),e.weeksTo=Math.max(e.weeksTo,i)),t.isMonths()&&(e.months=!0,e.monthsFrom=Math.min(e.monthsFrom,i),e.monthsTo=Math.max(e.monthsTo,i)),t.isRange()&&(e.ranges=!0)}function l(e,t,i,s){return e&&s>=t&&s<=i}function c(e,t){const i=t.childs();switch(e.kind()){case r.ResolutionKind.Ticks:return i.ticks.value();case r.ResolutionKind.Seconds:if(e.multiplier()<60)return l(i.seconds.value(),i.secondsFrom.value(),i.secondsTo.value(),e.multiplier());{const t=Math.floor(e.multiplier()/60);return l(i.minutes.value(),i.minutesFrom.value(),i.minutesTo.value(),t)}case r.ResolutionKind.Minutes:if(e.multiplier()<60)return l(i.minutes.value(),i.minutesFrom.value(),i.minutesTo.value(),e.multiplier());{const t=Math.floor(e.multiplier()/60);return l(i.hours.value(),i.hoursFrom.value(),i.hoursTo.value(),t)}case r.ResolutionKind.Days:return l(i.days.value(),i.daysFrom.value(),i.daysTo.value(),e.multiplier());case r.ResolutionKind.Weeks:return l(i.weeks.value(),i.weeksFrom.value(),i.weeksTo.value(),e.multiplier());case r.ResolutionKind.Months:return l(i.months.value(),i.monthsFrom.value(),i.monthsTo.value(),e.multiplier());case r.ResolutionKind.Range:return i.ranges.value()}return(0, -s.assert)(!1,"Unsupported resolution: "+e.value()),!1}function h(e){const t=Object.keys(e).filter(t=>n.intervalsVisibilitiesDefaults[t]!==e[t]);return 0===t.length?null:t.reduce((t,i)=>(t[i]=e[i],t),{})}function d(e){return(0,o.merge)((0,o.clone)(n.intervalsVisibilitiesDefaults),null!=e?e:{})}},35878:(e,t,i)=>{"use strict";function s(e){return Boolean(e.showInObjectTree)}i.d(t,{isDataSource:()=>s})},95836:(e,t,i)=>{"use strict";var s;i.d(t,{SymbolErrorPermissionDeniedReason:()=>s,permissionDenied:()=>r,invalidSymbol:()=>n}),function(e){e.Symbol="symbol",e.GroupPermission="group"}(s||(s={}));const r="permission denied",n="invalid symbol"},79680:(e,t,i)=>{"use strict";function s(e){const t=(null==e?void 0:e.symbolSource)&&e.symbolSource()===e,i=void 0!==(null==e?void 0:e.isActingAsSymbolSource);return t||i}function r(e){return s(e)&&e.isActingAsSymbolSource().value()}i.d(t,{isSymbolSource:()=>s,isActingAsSymbolSource:()=>r})},34580:(e,t,i)=>{"use strict";i.d(t,{LevelsProperty:()=>p});var s=i(80643),r=i(88564),n=i(59803);const o={prefixes:[""],range:[0,0],names:["coeff","color","visible","linestyle","linewidth"],typecheck:{pack:()=>Object(),unpack:()=>[]}};function a(e,t,i,s){return s.push(i[t]),s}function l(e,t,i,s){return s[t]=i[e],s}function c(){return[]}function h(){return{}}function d(e,t,i){return i.prefixes.forEach(r=>{const n=r+"level";for(let r=i.range[0];r<=i.range[1];r++)if(e[n+r]&&(0,s.isSameType)(e[n+r],t.typecheck())){let s=t.tpl();i.names.forEach((i,o)=>{s=t.fill(""+o,i,e[n+r],s)}),e[n+r]=s}}),e}function u(e,t,i){return i(e,{tpl:h,fill:l,typecheck:t.typecheck.unpack},t)}class p extends r.DefaultProperty{constructor(e,t,i,s,r){r=null!=r?r:d;const n={...o,...null!=s?s:{}};super(e,t?u(t,n,r):t,i),this._map=n,this._levelsIterator=r}state(e,t){const i=super.state(e);return t?i:(s=i,r=this._map,(0,this._levelsIterator)(s,{tpl:c,fill:a,typecheck:r.typecheck.pack},r));var s,r}saveDefaults(){this._useUserPreferences&&(0,n.saveDefaults)(this._defaultName,this.state(this._exclusions,!0))}clone(){const e=this.state(),t=new p(this._defaultName,e);for(let e=0;e{"use strict";i.d(t,{LineToolsGroup:()=>l});var s=i(2872),r=i.n(s),n=i(9423);function o(e){return e.properties().visible.value()}function a(e){return!o(e)}class l{constructor(e,t,i){this._instanceId=(0,n.randomHashN)(6),this._onChanged=new(r()),this._lineToolsSet=new Set,this._lineTools=[...e],this._lineToolsSet=new Set(this._lineTools),this._name=t,this.id=i||(0,n.randomHashN)(6)}instanceId(){return this._instanceId}lineTools(){return this._lineTools}name(){return this._name}setName(e){this._doAndFireOnChange(()=>{this._name=e})}isActualSymbol(){return this._lineTools.length>0&&this._lineTools[0].isActualSymbol()&&this._lineTools[0].isActualCurrency()&&this._lineTools[0].isActualUnit()}symbol(){return this._lineTools[0].symbol()}currencyId(){var e -;return null!==(e=this._lineTools[0].properties().childs().currencyId.value())&&void 0!==e?e:null}unitId(){var e;return null!==(e=this._lineTools[0].properties().childs().unitId.value())&&void 0!==e?e:null}sharingMode(){return this._lineTools[0].sharingMode()}share(e){this._lineTools.forEach(t=>t.share(e))}containsLineTool(e){return this._lineToolsSet.has(e)}addLineTools(e){this._doAndFireOnChange(t=>{e.forEach(e=>this._lineToolsSet.add(e)),this._lineTools.push(...e),t.push(...e.map(e=>e.id()))})}excludeLineTool(e){this._doAndFireOnChange(t=>{this._lineToolsSet.delete(e);const i=this._lineTools.indexOf(e);this._lineTools.splice(i,1),t.push(e.id())})}excludeLineTools(e){this._doAndFireOnChange(t=>{const i=new Set(e);e.forEach(e=>this._lineToolsSet.delete(e)),this._lineTools=this._lineTools.filter(e=>!i.has(e)),t.push(...e.map(e=>e.id()))})}state(){return{id:this.id,name:this._name,tools:this._lineTools.map(e=>e.id())}}visibility(){const e=this._lineTools.some(o),t=this._lineTools.some(a);return e&&!t?"Visible":t&&!e?"Invisible":"Partial"}locked(){const e=this._lineTools.some(e=>e.properties().frozen.value()),t=this._lineTools.some(e=>!e.properties().frozen.value());return e&&!t?"Locked":t&&!e?"Unlocked":"Partial"}isActualInterval(){const e=this._lineTools.some(e=>e.isActualInterval()),t=this._lineTools.some(e=>!e.isActualInterval());return e&&!t?"IsActualInterval":t&&!e?"IsNotActualInterval":"Partial"}onChanged(){return this._onChanged}static fromState(e,t){const i=[];for(const s of t.tools){const t=e.dataSourceForId(s);null!==t&&i.push(t)}return i.length>0?new l(i,t.name,t.id):null}_doAndFireOnChange(e){const t=[],i=this.visibility(),s=this.locked(),r=this.name(),n=this.isActualInterval();e(t),this._onChanged.fire({affectedLineTools:t,visibilityChanged:i!==this.visibility(),lockedChanged:s!==this.locked(),titleChanged:r!==this.name(),isActualIntervalChanged:n!==this.isActualInterval()})}}},656:(e,t,i)=>{"use strict";i.d(t,{LineTool5PointsPattern:()=>a});var s=i(88537),r=i(88564),n=i(89857),o=i(37865);class a extends n.LineDataSource{constructor(e,t,i,s){super(e,t||a.createProperties(),i,s),this._loadPaneViews(e)}pointsCount(){return 5}name(){return"XABCD Pattern"}static createProperties(e){const t=new r.DefaultProperty("linetool5pointspattern",e);return a._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,93262)).then(e=>e.PatternWithBackgroundDefinitionViewModel)}_loadPaneViews(e){i.e(1583).then(i.bind(i,46010)).then(t=>{this._setPaneViews([new t.Pattern5pointsPaneView(this,e)])})}static _configureProperties(e){n.LineDataSource._configureProperties(e),e.addChild("linesColors",new o.LineToolColorsProperty([(0,s.ensureDefined)(e.child("color"))])),e.addChild("textsColors",new o.LineToolColorsProperty([(0,s.ensureDefined)(e.child("textcolor"))]))}}},82203:(e,t,i)=>{"use strict";i.d(t,{LineToolABCD:()=>a});var s=i(88537),r=i(88564),n=i(89857),o=i(37865);class a extends n.LineDataSource{constructor(e,t,s,r){const n=t||a.createProperties() -;super(e,n,s,r),i.e(1583).then(i.bind(i,5040)).then(t=>{this._setPaneViews([new t.ABCDPaneView(this,e)])})}pointsCount(){return 4}name(){return"ABCD Pattern"}static createProperties(e){const t=new r.DefaultProperty("linetoolabcd",e);return a._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,98890)).then(e=>e.PatternWithoutBackgroundDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e),e.addChild("linesColors",new o.LineToolColorsProperty([(0,s.ensureDefined)(e.child("color"))])),e.addChild("textsColors",new o.LineToolColorsProperty([(0,s.ensureDefined)(e.child("textcolor"))]))}}},17337:(e,t,i)=>{"use strict";i.d(t,{LineToolArc:()=>h});var s=i(88537),r=i(4652),n=i(86441),o=i(25422),a=i(88564),l=i(89857),c=i(37865);class h extends l.LineDataSource{constructor(e,t,s,r){const n=t||h.createProperties();super(e,n,s,r),this.version=2,this._dist=null,i.e(1583).then(i.bind(i,24843)).then(({ArcPaneView:t})=>{const i=[new t(this,e)];this._setPaneViews(i)})}startChanging(e,t){if(super.startChanging(e,t),0===e||1===e){const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1])),i=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[2]));this._dist=(0,r.distanceToLine)(e,t,i).distance;const o=t.subtract(e),a=new n.Point(-o.y,o.x),l=e.add(t).scaled(.5);i.subtract(l).dotProduct(a)<0&&(this._dist=-this._dist)}}endChanging(e,t){return this._dist=null,super.endChanging(e,t)}pointsCount(){return 3}name(){return"Arc"}hasEditableCoordinates(){return!1}setPoint(e,t){const i={...t},a=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),l=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1]));switch(e){case 0:{const e=(0,s.ensureNotNull)(this._dist),t=(0,s.ensureNotNull)(this.pointToScreenPoint(i)),r=l.subtract(t),o=t.add(l).scaled(.5);let a=new n.Point(-r.y,r.x);a=a.normalized();const c=o.add(a.scaled(e));this._points[0]=i,this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(c));break}case 1:{const e=(0,s.ensureNotNull)(this._dist),t=(0,s.ensureNotNull)(this.pointToScreenPoint(i)),r=t.subtract(a),o=a.add(t).scaled(.5),l=new n.Point(-r.y,r.x).normalized(),c=o.add(l.scaled(e));this._points[1]=i,this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(c));break}case 2:{let e=(0,s.ensureNotNull)(this.pointToScreenPoint(i));const t=(0,r.distanceToLine)(a,l,e).distance,c=l.subtract(a),h=a.add(l).scaled(.5),d=new n.Point(-c.y,c.x).normalized(),u=h.add(d.scaled(t)),p=h.add(d.scaled(-t)),_=c.length(),m=c.x/_,g=c.y/_;let f=Math.acos(m);g<0&&(f=-f);let v=(0,o.translationMatrix)(-h.x,-h.y);e=(0,o.transformPoint)(v,e);let S=(0,o.transformPoint)(v,u);v=(0,o.rotationMatrix)(-f),e=(0,o.transformPoint)(v,e),S=(0,o.transformPoint)(v,S),v=(0,o.scalingMatrix)(1,_/(2*t)),e=(0,o.transformPoint)(v,e),S=(0,o.transformPoint)(v,S);const y=e.y*S.y>=0?new n.Point(u.x,u.y):new n.Point(p.x,p.y);this._points[2]=(0, -s.ensureNotNull)(this.screenPointToPoint(y));break}}this.normalizePoints()}migrateVersion(e,t,i){if(1===e&&2===this._points.length){const e=(2*this._points[0].price+3*this._points[1].price)/5;this._points.push({price:e,index:this._points[1].index})}if(1===e&&2===this._timePoint.length){const e={price:(2*this._timePoint[0].price+3*this._timePoint[1].price)/5,offset:this._timePoint[1].offset,time_t:this._timePoint[1].time_t};this._timePoint.push(e)}}static createProperties(e){const t=new a.DefaultProperty("linetoolarc",e);return h._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,24965))).GeneralFiguresDefinitionsViewModelBase}static _configureProperties(e){l.LineDataSource._configureProperties(e),e.addChild("linesColors",new c.LineToolColorsProperty([e.childs().color]))}}},18659:(e,t,i)=>{"use strict";i.d(t,{LineToolArrowMark:()=>l,LineToolArrowMarkLeft:()=>c,LineToolArrowMarkUp:()=>h,LineToolArrowMarkRight:()=>d,LineToolArrowMarkDown:()=>u});var s=i(88564),r=i(89857),n=i(2015),o=i.n(n),a=i(37865);class l extends r.LineDataSource{constructor(e,t,s,r,n){const o=t||l.createProperties(null,s);super(e,o,r,n),this._textPaneView=null,i.e(1583).then(i.bind(i,71407)).then(({ArrowMarkPaneView:t})=>{const i=[new t(this,e)];this._setPaneViews(i)})}paneViews(e){const t=super.paneViews();return null!==t&&this._textPaneView&&t.push(this._textPaneView),t}pointsCount(){return 1}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}static createProperties(e,t){const i=new s.DefaultProperty(t,e);return l._configureProperties(i),i}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,72930)).then(e=>e.ArrowMarkDefinitionsViewModel)}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}static _configureProperties(e){r.LineDataSource._configureProperties(e),e.addChild("linesColors",new a.LineToolColorsProperty([e.childs().arrowColor])),e.addChild("textsColors",new a.LineToolColorsProperty([e.childs().color])),e.hasChild("text")||e.addChild("text",new(o())("")),e.addExclusion("text")}}l.version=2;class c extends l{constructor(e,t,i,s){super(e,t,"linetoolarrowmarkleft",i,s)}direction(){return"left"}name(){return"Arrow Mark Left"}textAlignParams(){return{horzAlign:"left",vertAlign:"middle",offsetX:22,offsetY:3}}static createProperties(e){return l.createProperties(e,"linetoolarrowmarkleft")}}class h extends l{constructor(e,t,i,s){super(e,t,"linetoolarrowmarkup",i,s)}direction(){return"up"}name(){return"Arrow Mark Up"}textAlignParams(){return{horzAlign:"center",vertAlign:"top",offsetX:0,offsetY:20}}static createProperties(e){return l.createProperties(e,"linetoolarrowmarkup")}}class d extends l{constructor(e,t,i,s){super(e,t,"linetoolarrowmarkright",i,s)}direction(){return"right"}name(){return"Arrow Mark Right"}textAlignParams(){return{horzAlign:"right",vertAlign:"middle",offsetX:22,offsetY:3,forceTextAlign:!0}} -static createProperties(e){return l.createProperties(e,"linetoolarrowmarkright")}}class u extends l{constructor(e,t,i,s){super(e,t,"linetoolarrowmarkdown",i,s)}direction(){return"down"}name(){return"Arrow Mark Down"}textAlignParams(){return{horzAlign:"center",vertAlign:"bottom",offsetX:0,offsetY:20}}static createProperties(e){return l.createProperties(e,"linetoolarrowmarkdown")}}},10167:(e,t,i)=>{"use strict";i.d(t,{LineToolArrowMarker:()=>a});var s=i(89857),r=i(88564),n=i(2015),o=i.n(n);class a extends s.LineDataSource{constructor(e,t,s,r){super(e,null!=t?t:a.createProperties(),s,r),i.e(1583).then(i.bind(i,39833)).then(({ArrowMarkerPaneView:e})=>{this._setPaneViews([new e(this,this.model())])})}pointsCount(){return 2}name(){return"Trend Line"}static createProperties(e){const t=new r.DefaultProperty("linetoolarrowmarker",e);return a._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,92138)).then(e=>e.ArrowMarkerDefinitionsViewModel)}static _configureProperties(e){s.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(o())("")),e.addExclusion("text")}}},59358:(e,t,i)=>{"use strict";var s=i(57649).LineToolTrendLine,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Arrow"}static createProperties(e){var t=new r("linetoolarrow",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolArrow=n},57666:(e,t,i)=>{"use strict";i.d(t,{LineToolBalloon:()=>h});var s=i(28353),r=i(88564),n=i(89857),o=i(2015),a=i.n(o),l=i(37865);const c=(0,s.t)("Comment");class h extends n.LineDataSource{constructor(e,t,s,r){const n=t||h.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,17952)).then(t=>{this._setPaneViews([new t.BalloonPaneView(this,e)])})}pointsCount(){return 1}name(){return"Balloon"}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}static createProperties(e){const t=new r.DefaultProperty("linetoolballoon",e);return h._configureProperties(t),t}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,60991)).then(e=>e.BalloonDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(a())(c)),e.addExclusion("text"),e.addChild("linesColors",new l.LineToolColorsProperty([e.childs().borderColor])),e.addChild("textsColors",new l.LineToolColorsProperty([e.childs().color]))}}},4676:(e,t,i)=>{"use strict";i.d(t,{BarsMarksContainer:()=>T});var s=i(88537),r=i(98125),n=i(56840),o=i.n(n),a=i(67337),l=i(89857),c=i(2872),h=i.n(c),d=i(29823),u=i(80643),p=i(37667);class _{constructor(e,t){this.source=e,this._rendererFactory=t}update(){}renderer(e,t){return this._rendererFactory(this.source)}}var m=i(16282),g=i(22799),f=i(86441),v=i(84346),S=i(34026);const y={ -green:{border:"#78C143",background:"#8DDD54"},red:{border:"#CC4545",background:"#ED5A5A"},neutral:{border:"#EAC300",background:"#FFD400"},yellow:{border:"#EAC300",background:"#FFD400"},blue:{border:"#047ACE",background:"#0496FF"}};class b extends m.ScaledPaneRenderer{constructor(e,t){super(),this._highlightByAuthor=!1,this._barWidth=e.barWidth,this._plates=e.plates,this._tooltip=e.tooltip,this._model=t}hitTest(e){for(let t=this._plates.length-1;t>=0;--t){const i=this._hitTestDot(this._plates[t],e);if(i)return i}return null}_drawImpl(e){var t,i;e.save();for(let e=0;ethis._plateTransform(e));null===(t=this._tooltip)||void 0===t||t.draw(s,e),null===(i=this._tooltip)||void 0===i||i.endDraw(),e.restore()}_drawItem(e,t){e.save(),this._highlightByAuthor&&!t.highlightByAuthor&&(e.globalAlpha=.4);const i=this._dotTransform(t);i.mine?this._drawTriangle(e,i):this._drawDot(e,i),e.restore()}_commonTransform(e){const t=Math.max(1.4*e.minSize,this._barWidth+4),i={up:-1,down:1}[e.direction]*(e.yInverted?-1:1)*(t*(e.order+.6)+.25*t),s=e.y+i,r=(0,u.clone)(e.overridedTheme||y[e.theme]);return r.dotBorderWidth=e.hovered||e.highlightByAuthor?4:2,{id:e.id,theme:r,themeName:e.theme,x:Math.round(e.x+1),y:Math.round(s),yInverted:e.yInverted,pinned:Boolean(e.pinned),hovered:Boolean(e.hovered)}}_dotTransform(e){const t=Math.max(e.minSize/2,.4*this._barWidth),i={...this._commonTransform(e),radius:t,label:e.label,labelFontColor:e.labelFontColor,labelFontSize:Math.ceil(Math.max(10,Math.min(t,20)))};return this._model.updateDotData(e,i)}_plateTransform(e){const t=this._commonTransform(e);return this._model.updatePlateData(e,t)}_drawTriangle(e,t){e.strokeStyle=t.theme.border,e.fillStyle=t.theme.background,e.lineWidth=t.theme.dotBorderWidth||2;const i=t,s=t.radius,r=Math.cos(Math.PI/6)*s,n=Math.sin(Math.PI/6)*s;e.translate(i.x,i.y);"up"===t.direction!==t.yInverted&&e.rotate(Math.PI),t.public||(e.lineWidth/=2),e.beginPath(),e.moveTo(0,-s),e.lineTo(r,n),e.lineTo(-r,n),e.lineTo(0,-s),e.closePath(),e.stroke(),t.public&&e.fill()}_drawDot(e,t){e.strokeStyle=t.theme.border,e.fillStyle=t.theme.background,e.lineWidth=t.theme.dotBorderWidth||2,e.beginPath(),e.arc(t.x,t.y,t.radius,0,2*Math.PI,!0),e.closePath(),e.stroke(),e.fill(),t.label&&t.radius>=7&&(e.textAlign="center",e.textBaseline="middle",e.font="bold "+t.labelFontSize+"px "+g.CHART_FONT_FAMILY,e.fillStyle=t.labelFontColor,e.fillText(t.label,t.x,t.y))}_hitTestDot(e,t){const i=this._dotTransform(e),s=new f.Point(i.x,i.y);return(0,S.pointInCircle)(t,s,Math.max(i.radius,8))?new v.HitTestResult(v.HitTestResult.REGULAR,{activeItem:e}):null}}var w=i(88564);const C=(0,r.getLogger)("Chart.BarsMarksContainer"),P=Math.round(new Date(2037,0,1).getTime()/1e3);class T extends l.LineDataSource{constructor(e,t,i,r){const n=e.onWidget();let c;if(c=n?!e.hideIdeas():!!a.enabled("bars_marks")&&o().getBool("BarsMarksContainer.visibile",!1),t)t.merge({ -visible:c,frozen:!1});else{t=new w.DefaultProperty("barmarks",{visible:c,frozen:!1})}t.childs().visible.listeners().subscribe(null,t=>{n||e.isSnapshot()||!a.enabled("bars_marks")||o().setValue("BarsMarksContainer.visibile",!!t.value()),this._tooltip&&this._tooltip.removeAll()}),l.LineDataSource._configureProperties(t),super(e,t,i,r),this.onNeedRepaint=new(h()),this._requests=[],this._marks={},this._loadedRange=null,this._getDataTimeout=null,this._collectedRange=null,this._lastRange=null,this._model.mainSeries().onSymbolIntervalChanged().subscribe(this,this.clearMarks),this._model.mainSeries().dataEvents().symbolResolved().subscribe(this,this.clearMarks),this._model.mainSeries().dataEvents().completed().subscribe(this,()=>{var e,t;const i=this._model.mainSeries().data();if(0===i.size())return;const r=(0,s.ensureNotNull)(i.first()).index,n=(0,s.ensureNotNull)(i.last()).index,o=this.timeScale();this.getData({start:null!==(e=o.indexToTimePoint(r))&&void 0!==e?e:1/0,end:null!==(t=o.indexToTimePoint(n))&&void 0!==t?t:-1/0})}),this._initialize(),this._pinnedTooltips={},this._tooltip=this._createTooltipRenderer()}marks(){return this._marks}updateDotData(e,t){return t}isAvailableInFloatingWidget(){return!1}pinTooltip(e,t){this._pinnedTooltips[e]=t}timeScale(){return this._model.timeScale()}getIntervalInTicks(){const e=this._model.mainSeries().properties().childs().interval.value(),t=d.Interval.parse(e);if(!t.isValid())throw new TypeError("Unexpected interval");return t.isRange()?60:t.inMilliseconds()/1e3}getVisibleTickMarksRange(){var e,t;if(this.timeScale().isEmpty())return{start:0,end:0};const i=(0,s.ensureNotNull)(this.timeScale().visibleBarsStrictRange()),r=(0,s.ensureNotNull)(this.timeScale().points().firstIndex()),n=(0,s.ensureNotNull)(this.timeScale().points().lastIndex());if(!(i.lastBar()>r&&i.firstBar(){var r,n;const o=this._marks[s],a=o.tickmark;a>=(null!==(r=t.start)&&void 0!==r?r:1/0)&&a<=(null!==(n=t.end)&&void 0!==n?n:-1/0)+i&&e.push(o)}),e}getPublishedPlates(){const e={};return window.is_authenticated?(this.getVisibleRangePlates().forEach(t=>{t.is_public&&(this._pinnedTooltips[t.id]||t.user__id===window.user.id)&&(e[t.id]=t)}),e):e}filterDisplayedPlates(e){const t=e.reduce((e,t)=>{const i=this._getIndex(t.tickmark);return null!==i&&(e[i]=e[i]||[],e[i].push(t)),e},{});return Object.keys(t).reduce((e,i)=>{let s=t[i];return s=s.sort((e,t)=>t.views_count-e.views_count),s=s.slice(0,10),e.concat(s)},[])}getViewData(){return{barWidth:this.barWidth(),plates:this.getPlatesViewData(),tooltip:this._tooltip}}barWidth(){return this.timeScale().barSpacing()}getPlatesViewData(){var e,t,i;const r=this._model.mainSeries() -;if(r.data().isEmpty())return[];const n=(0,p.isPriceSourceStyle)(r.style())?r.barFunction():null,o=this.filterDisplayedPlates(this.getVisibleRangePlates()),a={},l=null!==(e=this._model.lastHittestData())&&void 0!==e?e:this._model.lastSelectedHittestData(),c=[];for(const e of o){const i=(0,s.ensureNotNull)(this._getIndex(e.tickmark)),r=this._getBar(i);if(null===r)continue;const o=this._layout(e.direction),h=this._theme(e.direction);let d=null;null!==l&&this._model.hoveredSource()===this&&(d=null!==(t=l.activeItem)&&void 0!==t?t:null);const p=null!==d&&d.id===e.id,_=this.timeScale().indexToCoordinate(i),m=this._offset(o,r,n),g=(0,s.ensureNotNull)(this.priceScale()).isInverted();let f=0;i in a||(a[i]={up:0,down:0}),f=a[i][o]++,c.push((0,u.merge)({id:e.id,x:_,y:m,yInverted:g,order:f,direction:o,theme:h,hovered:p,pinned:!0===this._pinnedTooltips[e.id],user__id:e.user__id,label:e.label,labelFontColor:e.labelFontColor||"#444",minSize:e.minSize||5},this._plateViewData(e)))}const h=c.filter(e=>!0===e.hovered);for(let e=0;ee.hovered&&!t.hovered?1:0),c}paneViews(){return this._properties.childs().visible.value()?[new _(this,e=>new b(e.getViewData(),this))]:[]}priceAxisViews(){return null}updateAllViews(){}pointsCount(){return 0}roundRange(e){return{start:Math.round(e.start),end:Math.round(e.end)}}refreshData(){null!==this._lastRange&&this.getData(this._lastRange)}getData(e){(0,u.isNumber)(e.start)&&(0,u.isNumber)(e.end)?(this._lastRange=e,e.end=P,this._pushGetDataStack(Object.assign({},e))):C.logError("Wrong range")}clearMarks(){this._abortAllRequests(),this._marks={},this._loadedRange=null}isUserDeletable(){return!1}_plateViewData(e){return{}}_layout(e){switch(e){default:case 0:return"up";case 1:return"down";case 2:return"up";case 3:case 4:case 5:case 6:return"up"}}_theme(e){switch(e){default:case 0:return"neutral";case 1:return"green";case 2:return"red";case 3:return"yellow";case 4:return"blue";case 5:return"green";case 6:return"red"}}_offset(e,t,i){let r;switch(e){default:case"up":r=null===i?t[2]:i(t);break;case"down":r=null===i?t[3]:i(t)}return(0,s.ensureNotNull)(this.priceScale()).priceToCoordinate(r,(0,s.ensureNotNull)((0,s.ensureNotNull)(this.ownerSource()).firstValue()))}_getIndex(e){return this.timeScale().timePointToIndex(e)}_getBar(e){return this._model.mainSeries().data().valueAt(e)}_rangeDifference(e){return e=Object.assign({start:1/0,end:-1/0},e),this._loadedRange&&(e.startthis._loadedRange.end&&(e.start=this._loadedRange.end)),e}_rangeUnion(e,t){return e=Object.assign({start:1/0,end:-1/0},e),t&&(e.start=Math.min(t.start,e.start),e.end=Math.max(t.end,e.end)),e}_pushGetDataStack(e){(0,u.isNumber)(e.start)&&(0,u.isNumber)(e.end)?(this._getDataTimeout&&clearTimeout(this._getDataTimeout),this._collectedRange=this._rangeUnion(e,this._collectedRange),this._getDataTimeout=setTimeout(()=>{this._getData(this._collectedRange), -this._getDataTimeout=this._collectedRange=null},300)):C.logError("Wrong tickmark range")}_abortAllRequests(){this._requests.forEach(e=>{e.cancel()}),this._requests=[],this._getDataTimeout&&clearTimeout(this._getDataTimeout),this._getDataTimeout=this._collectedRange=null}}},8059:(e,t,i)=>{"use strict";var s;i.d(t,{LineToolBarsPatternMode:()=>s}),function(e){e[e.Bars=0]="Bars",e[e.Line=1]="Line",e[e.OpenClose=2]="OpenClose",e[e.LineOpen=3]="LineOpen",e[e.LineHigh=4]="LineHigh",e[e.LineLow=5]="LineLow",e[e.LineHL2=6]="LineHL2"}(s||(s={}))},98802:(e,t,i)=>{"use strict";i.d(t,{LineToolBarsPattern:()=>S});var s=i(88537),r=i(28353),n=i(24980),o=i(80643),a=i(28296),l=i(88564),c=i(71053),h=i(89857),d=i(8059),u=i(33291);const p=new n.TranslatedString("mirror bars pattern",(0,r.t)("mirror bars pattern")),_=new n.TranslatedString("flip bars pattern",(0,r.t)("flip bars pattern")),m=(0,r.t)("Mirrored"),g=(0,r.t)("Flipped"),f={0:2,1:4,2:1,3:1,4:2,5:3,6:-1},v={0:3,1:4,2:4,3:1,4:2,5:3,6:-1};class S extends h.LineDataSource{constructor(e,t=S.createProperties(),s,r){super(e,t,s,r),this._pattern=[],this._scale=1,this._pointsCoordinatePricesDiff=null;const n=t.childs().mode.value();(0,o.isString)(n)&&t.childs().mode.setValue(parseInt(n)),t.childs().mirrored.listeners().subscribe(this,this._mirror),t.childs().flipped.listeners().subscribe(this,this._flip),t.childs().mode.subscribe(this,this._updateLastPoint),this.version=2,i.e(1583).then(i.bind(i,27106)).then(t=>{this._setPaneViews([new t.BarsPatternPaneView(this,e)])})}pattern(){return this._pattern}isSynchronizable(){return!1}additionalActions(e){return[new a.Action({actionId:"Chart.LineTool.BarsPattern.ToggleMirrored",checked:this.properties().childs().mirrored.value(),checkable:!0,label:m,onExecute:()=>{e.setProperty(this.properties().childs().mirrored,!this.properties().childs().mirrored.value(),p),this.updateAllViews((0,u.dataSourceChangeEvent)(this.id())),this._model.updateSource(this)}}),new a.Action({actionId:"Chart.LineTool.BarsPattern.ToggleFlipped",checked:this.properties().childs().flipped.value(),checkable:!0,label:g,onExecute:()=>{e.setProperty(this.properties().childs().flipped,!this.properties().childs().flipped.value(),_),this.updateAllViews((0,u.dataSourceChangeEvent)(this.id())),this._model.updateSource(this)}})]}pointsCount(){return 2}state(e){return{...super.state(e),pattern:this._pattern,scale:this._scale,diff:this._pointsCoordinatePricesDiff}}restoreData(e){const{pattern:t=this._pattern,scale:i=this._scale,diff:s=this._pointsCoordinatePricesDiff}=e;this._pattern=t,this._scale=i,this._pointsCoordinatePricesDiff=s}name(){return"Bars Pattern"}hasEditableCoordinates(){return!1}cloneData(e){this._pattern=(0,o.clone)(e._pattern),this._scale=e._scale,this._pointsCoordinatePricesDiff=e._pointsCoordinatePricesDiff}firstPatternPrice(){const{mode:e,flipped:t}=this.properties().childs(),i=this._pattern[0];return e.value()===d.LineToolBarsPatternMode.LineHL2?(i[2]+i[3])/2:t.value()?i[v[e.value()]]:i[f[e.value()]]}lastPatternPrice(){ -const{mode:e,flipped:t}=this.properties().childs(),i=this._pattern[this._pattern.length-1];return e.value()===d.LineToolBarsPatternMode.LineHL2?(i[2]+i[3])/2:t.value()?i[f[e.value()]]:i[v[e.value()]]}addPoint(e,t,i){const r=super.addPoint(e,t,!0);if(r){const e=this._model.mainSeries(),[{index:t},{index:i}]=this.points(),r=(0,s.ensureDefined)(e.nearestIndex(Math.min(t,i),c.PlotRowSearchMode.NearestRight)),n=(0,s.ensureDefined)(e.nearestIndex(Math.max(t,i),c.PlotRowSearchMode.NearestLeft));this._pattern=this._createPattern(r,n),this._pattern.length>0&&(t>i&&this._points.reverse(),this._points[1].price=this._points[0].price+this._patternPriceDiff(),this._points[1].index=this._points[0].index+(n-r),this.normalizePoints(),this.createServerPoints()),this._updatePointsCoordinatePricesDiff()}return r}setPoint(e,t,i,s){1===e&&t.index<=this._points[0].index&&(t.index=this._points[0].index+1),0===e&&t.index>=this._points[1].index&&(t.index=this._points[1].index-1),super.setPoint(e,t,i),this._updatePointsCoordinatePricesDiff()}move(e,t,i,s){super.move(e,t,i,s),this._updatePointsCoordinatePricesDiff()}migrateVersion(e,t,i){if(1===e&&this._pattern.length>0){const e=this._patternPriceDiff();2===this._timePoint.length&&(this._timePoint[1].price=this._timePoint[0].price+e),2===this._points.length&&(this._points[1].price=this._points[0].price+e)}}getScale(){return this._scale=this._calculateScale()}static createProperties(e){const t=new l.DefaultProperty("linetoolbarspattern",e);return S._configureProperties(t),t}_preparePoint(e,t){var i;const r=this._alignPointToRangeOfActualData(e),n=this._model.mainSeries(),o=(0,s.ensureNotNull)(n.bars().valueAt(r.index));this.properties().childs().mode.value()===d.LineToolBarsPatternMode.Bars?r.price=(0,s.ensure)(o[2]):r.price=(0,s.ensure)(o[4]);const a=(0,s.ensureNotNull)(this.priceScale()),l=(0,s.ensure)(null===(i=this.ownerSource())||void 0===i?void 0:i.firstValue()),c=.05*a.height(),h=a.priceToCoordinate(r.price,l)-c;return r.price=a.coordinateToPrice(h,l),super._preparePoint(r,t)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,14725))).BarsPatternDefinitionsViewModel}static _configureProperties(e){h.LineDataSource._configureProperties(e),e.addExclusion("mirrored"),e.addExclusion("flipped")}_calculatePatternCoordinatePricesDiff(){var e;return this._pattern.length>0&&null!==(e=this._priceCoordinateDiff([this.firstPatternPrice(),this.lastPatternPrice()]))&&void 0!==e?e:null}_updatePointsCoordinatePricesDiff(){this._pointsCoordinatePricesDiff=this._calculatePointsCoordinatePricesDiff()}_calculatePointsCoordinatePricesDiff(){var e;if(2===this._points.length){const[{price:t},{price:i}]=this.points();return null!==(e=this._priceCoordinateDiff([t,i]))&&void 0!==e?e:null}return null}_createPattern(e,t){const i=this._model.mainSeries().data(),r=[];for(let n=e;n<=t;n++)r.push((0,o.clone)((0,s.ensureNotNull)(i.valueAt(n))));return r}_switchPointsPrice(){const e=this._points[0].price -;this._timePoint[0].price=this._points[0].price=this._points[1].price,this._timePoint[1].price=this._points[1].price=e}_mirror(){const e=this._pattern;let t=Math.min(e[0][3],e[0][2]),i=Math.max(e[0][3],e[0][2]);for(let s=1;ss-(e-s);for(let t=0;ts.priceToCoordinate(e,r))}_priceCoordinateDiff(e){const t=this._pricesToCoordinates(e);if(t)return t[1]-t[0]}_calculateScale(){let e=1;if(2===this._points.length){const t=this._calculatePatternCoordinatePricesDiff();if(!t)return e;const i=this._calculatePointsCoordinatePricesDiff();if(t&&null!==i&&(e=+(i/t).toFixed(8)),this._pointsCoordinatePricesDiff!==i){if(this._scale!==e)return this._updateLastPoint(),this._scale;this._updatePointsCoordinatePricesDiff()}}return e}_updateLastPoint(){var e,t;if(this._points.length<2)return;const i=this.priceScale(),s=null!==(t=null===(e=this.ownerSource())||void 0===e?void 0:e.firstValue())&&void 0!==t?t:null;if(null===s||null===i||i.isEmpty())return;const r=this._calculatePatternCoordinatePricesDiff(),n=this._pricesToCoordinates([this.points()[0].price]);null!==r&&n&&(this._timePoint[1].price=this._points[1].price=i.coordinateToPrice(+(this._scale*r).toFixed(8)+n[0],s),this._updatePointsCoordinatePricesDiff())}}},47679:(e,t,i)=>{"use strict";i.d(t,{LineToolBezierCubic:()=>o});var s=i(88537),r=i(88564),n=i(89857);class o extends n.LineDataSource{constructor(e,t,s,r){const n=t||o.createProperties();super(e,n,s,r),this._controlPoints=null,i.e(1583).then(i.bind(i,11933)).then(t=>{this._setPaneViews([new t.BezierCubicPaneView(this,e)])})}pointsCount(){return 2}name(){return"Double Curve"}setLastPoint(e,t){const i=super.setLastPoint(e,t);return this._controlPoints=this._calculateControlPoints(),i}addPoint(e,t,i){const s=super.addPoint(e,t,i);if(s){const e=this._calculateControlPoints();this._controlPoints=null,this._points.push(e[0]),this._points.push(e[1]),i||(this.normalizePoints(),this.createServerPoints()),this._createPointProperty(2),this._createPointProperty(3)}return s}restorePoints(e,t,i){super.restorePoints(e,t,i),this._createPointProperty(2),this._createPointProperty(3)}controlPoints(){return this._controlPoints}static createProperties(e){const t=new r.DefaultProperty("linetoolbeziercubic",e);return o._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){ -return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,79462)).then(e=>e.GeneralBezierDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e)}_calculateControlPoints(){const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this.points()[0])),t=(0,s.ensureNotNull)(this.pointToScreenPoint(this.points()[1])),i=t.subtract(e).scaled(.5).transposed().scaled(.3),r=e.add(t).scaled(.33),n=e.add(t).scaled(.67),o=r.add(i),a=n.subtract(i);return[(0,s.ensureNotNull)(this.screenPointToPoint(o)),(0,s.ensureNotNull)(this.screenPointToPoint(a))]}}},30899:(e,t,i)=>{"use strict";i.d(t,{LineToolBezierQuadro:()=>o});var s=i(88537),r=i(88564),n=i(89857);class o extends n.LineDataSource{constructor(e,t,s,r){const n=t||o.createProperties();super(e,n,s,r),this._controlPoint=null,i.e(1583).then(i.bind(i,79998)).then(t=>{this._setPaneViews([new t.BezierQuadroPaneView(this,e)])})}pointsCount(){return 2}name(){return"Curve"}setLastPoint(e,t){const i=super.setLastPoint(e,t);return this._controlPoint=this._calculateControlPoint(),i}addPoint(e,t,i){const s=super.addPoint(e,t,i);if(s){const e=this._calculateControlPoint();this._points.push(e),this._controlPoint=null,i||(this.normalizePoints(),this.createServerPoints()),this._createPointProperty(2)}return s}restorePoints(e,t,i){super.restorePoints(e,t,i),this._createPointProperty(2)}controlPoint(){return this._controlPoint}static createProperties(e){const t=new r.DefaultProperty("linetoolbezierquadro",e);return o._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,79462)).then(e=>e.GeneralBezierDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e)}_calculateControlPoint(){const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this.points()[0])),t=(0,s.ensureNotNull)(this.pointToScreenPoint(this.points()[1])),i=t.subtract(e).scaled(.5).transposed().scaled(.3),r=e.add(t).scaled(.5).add(i);return(0,s.ensureNotNull)(this.screenPointToPoint(r))}}},27258:(e,t,i)=>{"use strict";i.d(t,{LineToolBrushBase:()=>n});var s=i(88537),r=i(89857);class n extends r.LineDataSource{constructor(){super(...arguments),this._finished=!1}pointsCount(){return-1}finished(){return this._finished}finish(){this._finished=!0,this._lastPoint=null,this.normalizePoints(),this.createServerPoints()}hasEditableCoordinates(){return!1}addPoint(e,t,i){if(this._finished)return!0;if(this._lastPoint=null,this._points.length>0){const t=this._points[this._points.length-1],i=(0,s.ensureNotNull)(this.pointToScreenPoint(t));if((0,s.ensureNotNull)(this.pointToScreenPoint(e)).subtract(i).length()<2)return this._finished}return super.addPoint(e),this._finished}restorePoints(e,t,i){super.restorePoints(e,t,i),this._finished=!0}}},43871:(e,t,i)=>{"use strict";i.d(t,{LineToolBrush:()=>o});var s=i(88564),r=i(27258),n=i(37865);class o extends r.LineToolBrushBase{constructor(e,t,i,s){super(e,t||o.createProperties(),i,s),this._loadPaneViews(e)}smooth(){ -return this.properties().childs().smooth.value()}name(){return"Brush"}hasEditableCoordinates(){return!1}static createProperties(e){const t=new s.DefaultProperty("linetoolbrush",e);return o._configureProperties(t),t}_loadPaneViews(e){i.e(1583).then(i.bind(i,87394)).then(t=>{this._setPaneViews([new t.BrushPaneView(this,e)])})}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,288)).then(e=>e.BrushDefinitionsViewModel)}static _configureProperties(e){r.LineToolBrushBase._configureProperties(e),e.addChild("backgroundsColors",new n.LineToolColorsProperty([e.childs().backgroundColor],e.childs().fillBackground))}}},73932:(e,t,i)=>{"use strict";var s;i.d(t,{CalloutConsts:()=>s}),function(e){e[e.RoundRadius=8]="RoundRadius",e[e.TextMargins=2]="TextMargins",e[e.MinWidth=100]="MinWidth"}(s||(s={}))},95536:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(89857).LineDataSource,n=i(62443).DataSource,o=i(2015),a=i(88564).DefaultProperty,l=i(73932).CalloutConsts,c=i(37865).LineToolColorsProperty;class h extends r{constructor(e,t,s,r){super(e,t||h.createProperties(),s,r),this._barOffset=0,this._timeScale=e.timeScale(),i.e(1583).then(i.t.bind(i,86449,19)).then(({CalloutPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 2}name(){return"Callout"}_correctPoints(e,t){var i=this._currentMovingPoint.logical.index-this._startMovingPoint.logical.index,s=this._currentMovingPoint.logical.price-this._startMovingPoint.logical.price,r=e[1];r.index+=i,r.price+=s,e[1]=r}addPoint(e){var t=r.prototype.addPoint.call(this,e);return t&&this._calculateBarOffset(),t}_calculateBarOffset(){this.points().length>1&&(this._barOffset=this.points()[1].index-this.points()[0].index)}setLastPoint(e){var t=super.setLastPoint(e);return 2===this.points().length&&this._calculateBarOffset(),t}setPoint(e,t){switch(e){case 0:super.setPoint(e,t),this._calculateBarOffset();break;case 1:var i=this.properties();if(!i.wordWrapWidth)return;var s=this._points,r=this._dragStartLeftEdgeIndex,n=Math.round((t.index-r)/2);if(isFinite(r)&&isFinite(n)){s[1]={index:r+n,price:s[1].price},this._calculateBarOffset(),this.normalizePoints();var o=this._timeScale.indexToCoordinate(r+2*n)-this._timeScale.indexToCoordinate(r)-l.RoundRadius-l.TextMargins;if(!isFinite(o))return;i.wordWrapWidth.setValue(Math.max(l.MinWidth,o));break}s[1]=t,this._calculateBarOffset(),this.normalizePoints()}}setPoints(e){super.setPoints(e);var t=this.properties();if(t.wordWrapWidth){var i=this._dragStartLeftEdgeIndex,s=Math.round((e[1].index-i)/2);if(this._calculateBarOffset(),this.normalizePoints(),isFinite(i)&&isFinite(s)){var r=this._timeScale.indexToCoordinate(i+2*s)-this._timeScale.indexToCoordinate(i)-l.RoundRadius-l.TextMargins;if(!isFinite(r))return;t.wordWrapWidth.setValue(Math.max(l.MinWidth,r))}}}_onPointsetUpdated(e){super._onPointsetUpdated(e),0!==e.length&&(this._dragStartLeftEdgeIndex=this.points()[1].index)}move(e,t,i){super.move(e,t,i),this._calculateBarOffset()}state(e){var t=r.prototype.state.call(this,e) -;return t.barOffset=this._barOffset,t}restoreData(e){e.barOffset?this._barOffset=e.barOffset:this._calculateBarOffset(),this._calculatePoint2()}setPriceScale(e){n.prototype.setPriceScale.call(this,e),e&&e.priceRange()&&this._calculatePoint2()}template(){var e=r.prototype.template.call(this);return e.text=this.properties().childs().text.value(),e}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}_calculatePoint2(){if(!(this._model.lineBeingEdited()===this||this._model.sourcesBeingMoved().includes(this)||this._points.length<2)){var e=this.points()[0],t=this.points()[1];this._points[1]={price:t.price,index:e.index+this._barOffset}}}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,26599))).CalloutDefinitionsViewModel}static createProperties(e){var t=new a("linetoolcallout",e);return h._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e),e.hasChild("text")||e.addChild("text",new o(s("Text"))),e.addExclusion("text"),e.addChild("textsColors",new c([e.childs().color]))}}t.LineToolCallout=h},49802:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),i.e(1583).then(i.t.bind(i,99517,19)).then(({LineToolCircleLinesPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 2}name(){return"Cyclic Lines"}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,66819))).CyclicAndSineLinesPatternDefinitionsViewModel}static createProperties(e){var t=new r("linetoolcirclelines",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolCircleLines=n},2039:(e,t,i)=>{"use strict";i.d(t,{LineToolCircle:()=>l});var s=i(2015),r=i.n(s),n=i(88564),o=i(89857),a=i(37865);class l extends o.LineDataSource{constructor(e,t,s,r){const n=t||l.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,13167)).then(({CirclePaneView:t})=>{const i=[new t(this,e)];this._setPaneViews(i)})}pointsCount(){return 2}name(){return"Circle"}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}static createProperties(e){const t=new n.DefaultProperty("linetoolcircle",e);return l._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,3410))).EllipseCircleDefinitionsViewModel}_snapTo45DegreesAvailable(){return!0}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(r())("")),e.addChild("linesColors",new a.LineToolColorsProperty([e.childs().color])),e.addChild("linesWidths",new a.LineToolWidthsProperty([e.childs().linewidth])), -e.addChild("backgroundsColors",new a.LineToolColorsProperty([e.childs().backgroundColor])),e.addChild("textsColors",new a.LineToolColorsProperty([e.childs().textColor],e.childs().showLabel)),e.addExclusion("linesColors"),e.addExclusion("linesWidths"),e.addExclusion("backgroundsColors"),e.addExclusion("text")}}},53193:(e,t,i)=>{"use strict";i.d(t,{LineToolCrossLine:()=>a});var s=i(88564),r=i(10198),n=i(67103),o=i(89857);class a extends o.LineDataSource{constructor(e,t,s,o){super(e,t||a.createProperties(),s,o),this._priceAxisView=new r.LineToolHorzLinePriceAxisView(this),this._timeAxisView=new n.LineToolVertLineTimeAxisView(this),i.e(1583).then(i.bind(i,62105)).then(({CrossLinePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 1}name(){return"Cross Line"}priceAxisViews(e,t){return this.isSourceHidden()?null:t===this.priceScale()&&this.properties().childs().showPrice.value()&&this._model.paneForSource(this)===e?[this._priceAxisView]:null}timeAxisViews(){return this.isSourceHidden()?null:this.properties().childs().showTime.value()?[this._timeAxisView]:null}updateAllViews(e){super.updateAllViews(e),this._priceAxisView.update(e),this._timeAxisView.update()}canHasAlert(){return!1}lineColor(){return this.properties().childs().linecolor.value()}lineWidth(){return this.properties().childs().linewidth.value()}lineStyle(){return this.properties().childs().linestyle.value()}static createProperties(e){const t=new s.DefaultProperty("linetoolcrossline",e);return a._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,99645)).then(e=>e.CrossLineDefinitionsViewModel)}static _configureProperties(e){o.LineDataSource._configureProperties(e)}}},980:(e,t,i)=>{"use strict";i.d(t,{LineToolCypherPattern:()=>n});var s=i(656),r=i(88564);class n extends s.LineTool5PointsPattern{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Cypher Pattern"}static createProperties(e){const t=new r.DefaultProperty("linetoolcypherpattern",e);return n._configureProperties(t),t}_loadPaneViews(e){i.e(1583).then(i.bind(i,58062)).then(t=>{this._setPaneViews([new t.CypherPaneView(this,e)])})}static _configureProperties(e){s.LineTool5PointsPattern._configureProperties(e)}}},85402:(e,t,i)=>{"use strict";i.d(t,{nonThemedFactoryDefaultsBase:()=>l,themedFactoryDefaultsBase:()=>c});var s=i(45112),r=i(24633),n=i(68906),o=i(52418);const a=(0,s.getHexColorByName)("color-tv-blue-500"),l={linewidth:1,fontsize:12,fillLabelBackground:!0,fillBackground:!0,backgroundTransparency:60,intervalsVisibilities:{...o.intervalsVisibilitiesDefaults}},c=new Map([[r.StdTheme.Light,{textcolor:(0,s.getHexColorByName)("color-black"),labelBackgroundColor:(0,s.getHexColorByName)("color-white"),linecolor:a,backgroundColor:(0,n.generateColor)(a,85),shadow:"rgba(0, 0, 0, 0.2)"}],[r.StdTheme.Dark,{textcolor:(0,s.getHexColorByName)("color-white"),labelBackgroundColor:(0,s.getHexColorByName)("color-cold-gray-800"),linecolor:a,backgroundColor:(0,n.generateColor)(a,85), -shadow:"rgba(0, 0, 0, 0.4)"}]])},26215:(e,t,i)=>{"use strict";i.d(t,{LineToolDateAndPriceRange:()=>g});var s=i(88537),r=i(89857),n=i(34081),o=i(24633),a=i(45112),l=i(45383),c=i(85402);const h=(0,a.getHexColorByName)("color-tv-blue-500"),d={...c.nonThemedFactoryDefaultsBase,drawBorder:!1,borderWidth:1},u=new Map([[o.StdTheme.Light,{...c.themedFactoryDefaultsBase.get(o.StdTheme.Light),borderColor:h}],[o.StdTheme.Dark,{...c.themedFactoryDefaultsBase.get(o.StdTheme.Dark),borderColor:h}]]),p=(0,l.extractAllPropertiesKeys)((0,s.ensureDefined)(u.get(o.StdTheme.Light))),_=(0,l.extractAllPropertiesKeys)(d);class m extends l.ThemedDefaultProperty{static create(e){return new m("linetooldateandpricerange",()=>(0,l.factoryDefaultsForCurrentTheme)(d,u),_,p,e)}}class g extends r.LineDataSource{constructor(e,t,s,r){super(e,t||g.createProperties(),s,r),this._volumeCalculator=null,i.e(1583).then(i.bind(i,81226)).then(e=>{this._setPaneViews([new e.DateAndPriceRangePaneView(this,this._model)])})}destroy(){super.destroy(),null!==this._volumeCalculator&&this._volumeCalculator.destroy()}pointsCount(){return 2}name(){return"Date and Price Range"}volume(){if(null===this._volumeCalculator)return NaN;const e=this.points();return this._volumeCalculator.volume(e[0].index,e[1].index)}setOwnerSource(e){e===this._model.mainSeries()&&((0,s.assert)(null===this._volumeCalculator),this._volumeCalculator=new n.SeriesTimeRangeVolumeCalculator(this._model.mainSeries())),super.setOwnerSource(e)}static createProperties(e){const t=m.create(e);return g._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,80447))).GeneralDatePriceRangeDefinitionsViewModel}static _configureProperties(e){r.LineDataSource._configureProperties(e)}}},45669:(e,t,i)=>{"use strict";i.d(t,{LineToolDateRange:()=>_});var s=i(88537),r=i(89857),n=i(34081),o=i(24633),a=i(45383),l=i(85402);const c={...l.nonThemedFactoryDefaultsBase,extendTop:!1,extendBottom:!1},h=l.themedFactoryDefaultsBase,d=(0,a.extractAllPropertiesKeys)((0,s.ensureDefined)(h.get(o.StdTheme.Light))),u=(0,a.extractAllPropertiesKeys)(c);class p extends a.ThemedDefaultProperty{static create(e){return new p("linetooldaterange",()=>(0,a.factoryDefaultsForCurrentTheme)(c,h),u,d,e)}}class _ extends r.LineDataSource{constructor(e,t,s,r){super(e,t||_.createProperties(),s,r),this._volumeCalculator=null,i.e(1583).then(i.bind(i,27913)).then(e=>{this._setPaneViews([new e.DateRangePaneView(this,this._model)])})}destroy(){super.destroy(),null!==this._volumeCalculator&&this._volumeCalculator.destroy()}pointsCount(){return 2}name(){return"Date Range"}volume(){if(null===this._volumeCalculator)return NaN;const e=this.points();return this._volumeCalculator.volume(e[0].index,e[1].index)}setOwnerSource(e){e===this._model.mainSeries()&&((0,s.assert)(null===this._volumeCalculator),this._volumeCalculator=new n.SeriesTimeRangeVolumeCalculator(this._model.mainSeries())),super.setOwnerSource(e)}static createProperties(e){const t=p.create(e) -;return _._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,80447))).GeneralDatePriceRangeDefinitionsViewModel}static _configureProperties(e){r.LineDataSource._configureProperties(e)}}},46512:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),this.version=n.version,i.e(1583).then(i.t.bind(i,56863,19)).then(({DisjointChannelPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 3}name(){return"Disjoint Channel"}hasEditableCoordinates(){return!1}addPoint(e,t){return t&&t.shift()&&2===this.points().length&&this._snapPoint45Degree(e,this.points()[this.points().length-2]),s.prototype.addPoint.call(this,e)}setLastPoint(e,t){return t&&t.shift()&&2===this.points().length&&this._snapPoint45Degree(e,this.points()[this.points().length-2]),s.prototype.setLastPoint.call(this,e)}setPoint(e,t,i){var s=.5*(this._points[1].price+this._points[2].price);if(i&&i.shift()&&1===e){this._snapPoint45Degree(t,this.points()[0])}if(e<3&&super.setPoint(e,t),0!==e&&2!==e){if(1===e){var r=this._points[1].price-s;this._points[2].price=this._points[1].price-2*r}else if(3===e){r=t.price-this._points[2].price;this._points[0].price=this._points[1].price-r,this._points[0].index=t.index}this.normalizePoints()}}getPoint(e){if(e<3)return s.prototype.getPoint.call(this,e);var t=this._points[0].price-this._points[2].price;return{index:this._points[0].index,price:this._points[1].price-t}}canHasAlert(){return!0}_getAlertPlots(){var e=this._points[0],t=this._points[1],i=[];e.index<=t.index?(i.push(e),i.push(t)):(i.push(t),i.push(e));var s=this._points[2];s.time=t.time,s.index=t.index;var r,n,o,a,l={price:s.price+(t.price-e.price),time:e.time,index:e.index},c=[];s.index<=l.index?(c.push(s),c.push(l)):(c.push(l),c.push(s)),i[0].price>c[0].price?(r=i,n=c):c[0].price>i[0].price||c[1].price>i[1].price?(r=c,n=i):(r=i,n=c);var h=this.properties().extendLeft.value(),d=this.properties().extendRight.value();return e.index<=t.index?(o=h,a=d):(o=d,a=h),[this._linePointsToAlertPlot(r,"Upper",o,a),this._linePointsToAlertPlot(n,"Lower",o,a)]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,14145))).GeneralTrendFiguresDefinitionsViewModel}static createProperties(e){var t=new r("linetooldisjointangle",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}n.version=1,t.LineToolDisjointChannel=n},97917:(e,t,i)=>{"use strict";i.d(t,{LineToolElliott:()=>u,LineToolElliottImpulse:()=>m,LineToolElliottTriangle:()=>f,LineToolElliottTripleCombo:()=>S,LineToolElliottCorrection:()=>w,LineToolElliottDoubleCombo:()=>P});var s=i(28353),r=i(24980),n=i(89857),o=i(28296),a=i(88564),l=i(37865);const c=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],h=new r.TranslatedString("change Elliott degree",(0,s.t)("change Elliott degree")),d=[{value:0,title:(0,s.t)("Supermillennium") -},{value:1,title:(0,s.t)("Millennium")},{value:2,title:(0,s.t)("Submillennium")},{value:3,title:(0,s.t)("Grand supercycle")},{value:4,title:(0,s.t)("Supercycle")},{value:5,title:(0,s.t)("Cycle")},{value:6,title:(0,s.t)("Primary")},{value:7,title:(0,s.t)("Intermediate")},{value:8,title:(0,s.t)("Minor",{context:"wave"})},{value:9,title:(0,s.t)("Minute",{context:"wave"})},{value:10,title:(0,s.t)("Minuette")},{value:11,title:(0,s.t)("Subminuette")},{value:12,title:(0,s.t)("Micro")},{value:13,title:(0,s.t)("Submicro")},{value:14,title:(0,s.t)("Minuscule")}];class u extends n.LineDataSource{constructor(e,t,s,r){super(e,null!=t?t:u.createProperties(),s,r),this.version=4,i.e(1583).then(i.bind(i,5761)).then(e=>{this._setPaneViews([new e.ElliottLabelsPaneView(this,this._model)])})}migrateVersion(e,t,i){if(i.properties.hasChild("background")&&i.properties.removeProperty("background"),i.properties.hasChild("backgroundColor")&&i.properties.removeProperty("backgroundColor"),i.properties.hasChild("showBackground")&&i.properties.removeProperty("showBackground"),1===e){const e=Object.assign({},this._timePoint[0]);if(this._timePoint.unshift(e),this._points.length>0){const e=Object.assign({},this._points[0]);this._points.unshift(e)}}}applyTemplate(e){const t=e;delete t.background,delete t.backgroundColor,delete t.showBackground,super.applyTemplate(e)}name(){return"Elliott Labels"}additionalActions(e){return[new o.Action({actionId:"Chart.LineTool.Elliot.ChangeDegreeProperty",label:(0,s.t)("Degree"),subItems:c.map(t=>{const i=d.filter(e=>e.value===t)[0];return new o.Action({actionId:"Chart.LineTool.Elliot.ChangeDegreeProperty",label:i.title,checkable:!0,checked:this.properties().childs().degree.value()===t,onExecute:()=>{e.setProperty(this.properties().childs().degree,t,h)}})})})]}label(e){const t=c.length-this.properties().childs().degree.value()-1,i=Math.floor(t/3);return{group:i,bold:!!(i%2),decoration:["","brackets","circle"][t%3],label:this.labelsGroup()[i][e]}}availableDegreesValues(){return d}static createProperties(e){const t=new a.DefaultProperty("linetoolelliott",e);return u._configureProperties(t),t}static migrateState(e){const t={0:11,1:10,2:9,3:8,4:7,5:6,6:5,7:4,8:3},i={0:11,1:8};"LineToolElliottSubminuette"===e.type&&(e.type="LineToolElliottImpulse",e.state.degree=t[e.state.wavesize]),"LineToolElliottMinor"===e.type&&(e.type="LineToolElliottImpulse",e.state.degree=t[e.state.wavesize]),"LineToolElliottCircle"===e.type&&(e.type="LineToolElliottImpulse",e.state.degree=t[e.state.wavesize]),"LineToolElliottMinorRetr"===e.type&&(e.type="LineToolElliottCorrection",e.state.degree=i[e.state.wavesize]),"LineToolElliottMajorRetr"===e.type&&(e.type="LineToolElliottCorrection",e.state.degree=i[e.state.wavesize])}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,31522))).ElliottPatternDefinitionsViewModel}static _configureProperties(e){n.LineDataSource._configureProperties(e),e.addChild("linesColors",new l.LineToolColorsProperty([e.childs().color])), -e.addExclusion("linesColors")}}class p extends u{pointsCount(){return 6}static _configureProperties(e){u._configureProperties(e)}}const _=[["0","1","2","3","4","5"],["0","i","ii","iii","iv","v"],["0","1","2","3","4","5"],["0","I","II","III","IV","V"],["0","1","2","3","4","5"]];class m extends p{constructor(e,t,i,s){super(e,t||m.createProperties(),i,s)}name(){return"Elliott Impulse Wave (12345)"}labelsGroup(){return _}static createProperties(e){const t=new a.DefaultProperty("linetoolelliottimpulse",e);return m._configureProperties(t),t}static _configureProperties(e){p._configureProperties(e)}}const g=[["0","A","B","C","D","E"],["0","a","b","c","d","e"],["0","A","B","C","D","E"],["0","a","b","c","d","e"],["0","A","B","C","D","E"]];class f extends p{constructor(e,t,i,s){super(e,t||f.createProperties(),i,s)}name(){return"Elliott Triangle Wave (ABCDE)"}labelsGroup(){return g}static createProperties(e){const t=new a.DefaultProperty("linetoolelliotttriangle",e);return f._configureProperties(t),t}static _configureProperties(e){p._configureProperties(e)}}const v=[["0","W","X","Y","X","Z"],["0","w","x","y","x","z"],["0","W","X","Y","X","Z"],["0","w","x","y","x","z"],["0","W","X","Y","X","Z"]];class S extends p{constructor(e,t,i,s){super(e,null!=t?t:S.createProperties(),i,s)}name(){return"Elliott Triple Combo Wave (WXYXZ)"}labelsGroup(){return v}static createProperties(e){const t=new a.DefaultProperty("linetoolelliotttriplecombo",e);return S._configureProperties(t),t}static _configureProperties(e){p._configureProperties(e)}}class y extends u{pointsCount(){return 4}static _configureProperties(e){u._configureProperties(e)}}const b=[["0","A","B","C"],["0","a","b","c"],["0","A","B","C"],["0","a","b","c"],["0","A","B","C"]];class w extends y{constructor(e,t,i,s){super(e,null!=t?t:w.createProperties(),i,s)}name(){return"Elliott Correction Wave (ABC)"}labelsGroup(){return b}static createProperties(e){const t=new a.DefaultProperty("linetoolelliottcorrection",e);return w._configureProperties(t),t}static _configureProperties(e){y._configureProperties(e)}}const C=[["0","W","X","Y"],["0","w","x","y"],["0","W","X","Y"],["0","w","x","y"],["0","W","X","Y"]];class P extends y{constructor(e,t,i,s){super(e,null!=t?t:P.createProperties(),i,s)}name(){return"Elliott Double Combo Wave (WXY)"}labelsGroup(){return C}static createProperties(e){const t=new a.DefaultProperty("linetoolelliottdoublecombo",e);return P._configureProperties(t),t}static _configureProperties(e){y._configureProperties(e)}}},38430:(e,t,i)=>{"use strict";i.d(t,{LineToolEllipse:()=>d});var s=i(88537),r=i(4652),n=i(86441),o=i(2015),a=i.n(o),l=i(89857),c=i(88564),h=i(37865);class d extends l.LineDataSource{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this.version=2,this._dist=null,this._fakePointAdded=!1,i.e(1583).then(i.bind(i,58446)).then(({EllipsePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}startChanging(e,t){if(super.startChanging(e,t),0===e||1===e){const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),t=(0, -s.ensureNotNull)(this.pointToScreenPoint(this._points[1])),i=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[2]));this._dist=(0,r.distanceToLine)(e,t,i).distance||0}}addPoint(e,t,i){const s=l.LineDataSource.prototype.addPoint.call(this,e,t,i);return s&&(this._fakePointAdded=!1),s}setPoint(e,t,i,o){const a={...t};let l=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),c=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1])),h=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[2]));switch(e){case 0:{if(i&&i.shift()){this._snapPoint45Degree(a,this._points[1]),this._points[0]=a,this._points[2]=this._preparePointInternal(this._points[2],i,!0),this._points[0].index===this._points[1].index&&this._fixVerticalDiameterPoints(this._points[0],this._points[1],this._points[2]);break}l=(0,s.ensureNotNull)(this.pointToScreenPoint(a));const e=c.subtract(l),t=l.add(c).scaled(.5),r=new n.Point(-e.y,e.x).normalized();h=t.add(r.scaled((0,s.ensureNotNull)(this._dist))),this._points[0]=a,this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(h));break}case 1:{if(i&&i.shift()){this._snapPoint45Degree(a,this._points[0]),this._points[1]=a,this._points[2]=this._preparePointInternal(this._points[2],i,!0),this._points[0].index===this._points[1].index&&this._fixVerticalDiameterPoints(this._points[1],this._points[0],this._points[2]);break}c=(0,s.ensureNotNull)(this.pointToScreenPoint(a));const e=c.subtract(l),t=l.add(c).scaled(.5),r=new n.Point(-e.y,e.x).normalized();h=t.add(r.scaled((0,s.ensureNotNull)(this._dist))),this._points[1]=a,this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(h));break}case 2:{const e=(0,s.ensureNotNull)(this.pointToScreenPoint(a)),t=(0,r.distanceToLine)(l,c,e).distance,i=c.subtract(l),o=l.add(c).scaled(.5),d=new n.Point(-i.y,i.x).normalized();h=o.add(d.scaled(t)),this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(h));break}case 3:{const e=(0,s.ensureNotNull)(this.pointToScreenPoint(a)),t=(0,r.distanceToLine)(l,c,e).distance,i=c.subtract(l),o=l.add(c).scaled(.5),d=new n.Point(-i.y,i.x).normalized();h=o.add(d.scaled(t)),this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(h));break}}this.normalizePoints()}pointsCount(){return 3}name(){return"Ellipse"}hasEditableCoordinates(){return!1}migrateVersion(e,t,i){if(1===e&&2===this._points.length){const e=this._points[0].price,t=.5*(this._points[0].price+this._points[1].price);this._points[0]={price:t,index:this._points[0].index},this._points[1]={price:t,index:this._points[1].index},this._points.push({price:e,index:this._points[0].index})}if(1===e&&2===this._timePoint.length){const e=this._timePoint[0].price,t=.5*(this._timePoint[0].price+this._timePoint[1].price);this._timePoint[0].price=t,this._timePoint[1].price=t;const i={price:e,offset:this._timePoint[0].offset,time_t:this._timePoint[0].time_t};this._timePoint.push(i)}}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}static createProperties(e){const t=new c.DefaultProperty("linetoolellipse",e) -;return d._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,3410))).EllipseCircleDefinitionsViewModel}_preparePoint(e,t){const i=this._preparePointInternal(e,t,!1);return t&&t.shift()&&this._points[0].index===this._points[1].index&&this._fixVerticalDiameterPoints(this._points[1],this._points[0],i),i}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}static _configureProperties(e){l.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(a())("")),e.addChild("linesColors",new h.LineToolColorsProperty([e.childs().color])),e.addChild("textsColors",new h.LineToolColorsProperty([e.childs().textColor],e.childs().showLabel)),e.addExclusion("text")}_preparePointInternal(e,t,i){let r={...e};if(t&&t.shift()){const t=this.points().length;if(!this._fakePointAdded&&3===t&&!i)return r;if(this._fakePointAdded||2===t||i){this._snapPoint45Degree(e,this._points[0]),this._fakePointAdded?this._points[1]=e:i||(this._fakePointAdded=!0,super._addPointIntenal(e));const t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),o=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1])),a=o.x-t.x,l=o.y-t.y,c=Math.sqrt(a*a+l*l)/2,h=o.subtract(t),d=t.add(o).scaled(.5),u=new n.Point(-h.y,h.x).normalized(),p=d.add(u.scaled(c));r=(0,s.ensureNotNull)(this.screenPointToPoint(p)),(isNaN(r.price)||isNaN(r.index))&&(r=(0,s.ensureNotNull)(this.screenPointToPoint(d)))}}else this._fakePointAdded&&(this._points.splice(1,1),this._fakePointAdded=!1);return r}_fixVerticalDiameterPoints(e,t,i){const r=(0,s.ensureNotNull)(this.pointToScreenPoint(e)),o=(0,s.ensureNotNull)(this.pointToScreenPoint(t)),a=this._model.timeScale(),l=a.indexToCoordinate(e.index),c=a.indexToCoordinate(i.index);let h=2*Math.abs(l-c);h*=t.price>e.price?1:-1,e.price=(0,s.ensureNotNull)(this.screenPointToPoint(new n.Point(r.x,o.y+h))).price}}},39593:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(53664),n=i(88564).DefaultProperty,o=i(71053).PlotRowSearchMode;const a=i(67337);var l=i(59555).sortSourcesPreOrdered.LineToolExecution;class c{constructor(e,t){this._pane=e,this._timeScale=t}static recreateOrderedByBarsSourcesCache(e){c.clearOrderedByBarsSourcesCache();for(var t=c.prototype,i=e.sourcesByGroup().all(),s=0;s_.lastBar()||i<_.firstBar())return{x:-1,y:-1};for(var m=this._cachedByBarIndexOrderedExecutions[i]||this._pane.sourcesByGroup().all(),g=m.length-1;g>=0;--g){var f=m[g];if(f instanceof d&&f._adapter._index===i&&f._adapter.getDirection()===r){if(f===e._line)break;var v=f._adapter._height();s=n?s+v:s-v}}return{x:t.indexToCoordinate(i),y:s}}}c.prototype._cachedByBarIndexOrderedExecutions={};class h{constructor(e){this._line=e}_height(){var e=this.getArrowHeight(),t=this.getArrowSpacing();this.getText()&&r.fontHeight(this.getFont());return e+t+0+10}getIndex(){return this._line._model.timeScale().baseIndex()-this._line.points()[0].index}setIndex(e){var t=this._line._model.timeScale().baseIndex()-Math.abs(e);this._line.startMoving({logical:this._line.points()[0]});var i=TradingView.merge({},this._line.points()[0]);return i.index=t,this._line.move({logical:i}),this._line.endMoving(),this}getTime(){return this._unixtime}setTime(e){return this._unixtime=e,this._line.restorePoints([{offset:0,price:this.getPrice(),time_t:this._unixtime}],[]),this._line.createServerPoints(),this}getPrice(){return this._line.points().length>0?this._line.points()[0].price:this._line._timePoint.length>0?this._line._timePoint[0].price:void 0}setPrice(e){return this._line.points().length>0&&(this._line.points()[0].price=e),this._line._timePoint.length>0&&(this._line._timePoint[0].price=e),this}getText(){return this._line.properties().text.value()}setText(e){return this._line.properties().text.setValue(e||""),this._line.updateAllViewsAndRedraw(),this}getArrowHeight(){return this._line.properties().arrowHeight.value()}setArrowHeight(e){return this._line.properties().arrowHeight.setValue(e||5),this}getArrowSpacing(){return this._line.properties().arrowSpacing.value()}setArrowSpacing(e){return this._line.properties().arrowSpacing.setValue(e||1),this}getDirection(){return this._line.properties().direction.value()}setDirection(e){return this._line.properties().direction.setValue(e||"buy"),this}getArrowColor(){var e=this._line.properties();return"buy"===this.getDirection()?e.arrowBuyColor.value():e.arrowSellColor.value()}setArrowColor(e){return"buy"===this.getDirection()?this.setArrowBuyColor(e):this.setArrowSellColor(e),this}setArrowBuyColor(e){return this._line.properties().arrowBuyColor.setValue(e),this}setArrowSellColor(e){return this._line.properties().arrowSellColor.setValue(e),this}getTextColor(){return r.getColorFromProperties(this._line.properties().textColor,this._line.properties().textTransparency)}setTextColor(e){return r.setColorToProperties(e,this._line.properties().textColor,this._line.properties().textTransparency),this}getFont(){return r.getFontFromProperties(this._line.properties().fontFamily,this._line.properties().fontSize,this._line.properties().fontBold,this._line.properties().fontItalic)}setFont(e){return r.setFontToProperties(e,this._line.properties().fontFamily,this._line.properties().fontSize,this._line.properties().fontBold,this._line.properties().fontItalic),this}setTooltip(e){ -return null==e?e="":e+="",this._line.properties().tooltip.setValue(e),this}getTooltip(){return this._line.properties().tooltip.value()}remove(){this._line._model.removeSource(this._line),delete this._line}getPoints(){return this._line.points()}}class d extends s{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this._adapter=new h(this),this.customization.forcePriceAxisLabel=!1,this.customization.disableErasing=!0,this.customization.showInObjectTree=!1,this.setSelectionEnabled(!1),i.e(1583).then(i.t.bind(i,90216,19)).then(({ExecutionPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}zorder(){return l}isSpeciallyZOrderedSource(){return!0}pointsCount(){return d.POINTS_COUNT}name(){return"Execution"}hasContextMenu(){return!1}state(){return null}updateAllViews(){return this._isVisible()?s.prototype.updateAllViews.call(this):null}priceAxisViews(e,t){return this._isVisible()?s.prototype.priceAxisViews.call(this,e,t):null}_isVisible(){return this._model.properties().tradingProperties.showExecutions.value()}paneViews(){return TradingView.printing&&!a.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showExecutions.value()?s.prototype.paneViews.call(this):null}userEditEnabled(){return!1}showInObjectTree(){return!1}cloneable(){return!1}copiable(){return!1}isSynchronizable(){return!1}static createProperties(e){var t=new n("linetoolexecution",e,!1,!1);return d._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}d.POINTS_COUNT=1,t.ExecutionsPositionController=c,t.LineToolExecution=d},41239:(e,t,i)=>{"use strict";var s=i(57649).LineToolTrendLine,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Extended Line"}static createProperties(e){var t=new r("linetoolextended",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolExtended=n},48917:(e,t,i)=>{"use strict";i.d(t,{LineToolFibChannel:()=>h});var s=i(88537),r=i(28353),n=i(24980),o=i(89857),a=i(34580),l=i(37865);const c=new n.TranslatedString("erase level line",(0,r.t)("erase level line"));class h extends o.LineDataSource{constructor(e,t,s,r){super(e,t||h.createProperties(),s,r),this.version=2,i.e(1583).then(i.bind(i,74042)).then(({FibChannelPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return 24}migrateVersion(e,t,i){i.properties.removeProperty("reverse")}pointsCount(){return 3}name(){return"Fib Channel"}processErase(e,t){const i="level"+t,s=this.properties().child(i).childs().visible;e.setProperty(s,!1,c)}static createProperties(e){const t=new a.LevelsProperty("linetoolfibchannel",e,!1,{range:[1,24],names:["coeff","color","visible"]});return h._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,34670))).FibDrawingsWith24LevelsDefinitionsViewModel}static _configureProperties(e){o.LineDataSource._configureProperties(e);const t=[];for(let i=1;i<=24;i++){ -const r=(0,s.ensureDefined)(e.child("level"+i));t.push((0,s.ensureDefined)(r.child("color")))}e.addChild("linesColors",new l.LineToolColorsProperty(t))}}},54502:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),i.e(1583).then(i.t.bind(i,24227,19)).then(({FibCirclesPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 2}name(){return"Fib Circles"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}static createProperties(e){var t=new o("linetoolfibcircles",e,!1,{range:[1,11]});return d._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,9948))).FibCirclesDefinitionsViewModel}_snapTo45DegreesAvailable(){return!0}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("trendline").child("linewidth")],i=[e.child("trendline").child("color")],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=11,t.LineToolFibCircles=d},44860:(e,t,i)=>{"use strict";i.d(t,{LineToolFibRetracement:()=>c});var s=i(28353),r=i(24980),n=i(34580),o=i(89857),a=i(37865);const l=new r.TranslatedString("erase level line",(0,s.t)("erase level line"));class c extends o.LineDataSource{constructor(e,t,s,r){super(e,t||c.createProperties(),s,r),this.version=2,i.e(1583).then(i.bind(i,22567)).then(e=>{this._setPaneViews([new e.FibRetracementPaneView(this,this._model)])})}levelsCount(){return 24}pointsCount(){return 2}name(){return"Fib Retracement"}migrateVersion(e){1===e&&this.properties().childs().extendLines.setValue(!0)}processErase(e,t){const i="level"+t,{visible:s}=this.properties().childs()[i].childs();e.setProperty(s,!1,l)}fibLevelsBasedOnLogScale(){var e;return this.properties().childs().fibLevelsBasedOnLogScale.value()&&!!(null===(e=this.priceScale())||void 0===e?void 0:e.isLog())}static createProperties(e){const t=new n.LevelsProperty("linetoolfibretracement",e,!1,{range:[1,24],names:["coeff","color","visible"]});return c._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,34670))).FibDrawingsWith24LevelsDefinitionsViewModel}static _configureProperties(e){var t;const i=e;super._configureProperties(i);const s=[i.childs().trendline.childs().linewidth,i.childs().levelsStyle.childs().linewidth],r=[i.childs().trendline.childs().color];for(let e=1;e<=24;e++){const s=null===(t=i.child("level"+e))||void 0===t?void 0:t.child("color");r.push(s)}i.addChild("linesColors",new a.LineToolColorsProperty(r)),i.addChild("linesWidths",new a.LineToolWidthsProperty(s))}}}, -19857:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),i.e(1583).then(i.bind(i,52832)).then(({FibSpeedResistanceArcsPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 2}name(){return"Fib Speed Resistance Arcs"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}static createProperties(e){var t=new o("linetoolfibspeedresistancearcs",e,!1,{range:[1,11]});return d._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,17770))).FibSpeedResistanceArcsDefinitionsViewModel}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("trendline").child("linewidth")],i=[e.child("trendline").child("color")],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=11,t.LineToolFibSpeedResistanceArcs=d},70673:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865).LineToolColorsProperty,l=new r("erase level line",s("erase level line"));class c extends n{constructor(e,t,s,r){super(e,t||c.createProperties(),s,r),i.e(1583).then(i.bind(i,95294)).then(({FibSpeedResistanceFanPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}hLevelsCount(){return c.HLevelsCount}vLevelsCount(){return c.VLevelsCount}pointsCount(){return 2}name(){return"Fib Speed Resistance Fan"}processErase(e,t){var i="h"===t.type?"hlevel"+t.index:"vlevel"+t.index,s=this.properties()[i].visible;e.setProperty(s,!1,l)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,51697))).FibSpeedResistanceFanDefinitionsViewModel}_snapTo45DegreesAvailable(){return!0}static createProperties(e){void 0!==e&&void 0===e.reverse&&(e.reverse=!0);var t=new o("linetoolfibspeedresistancefan",e,!1,{range:[1,7],prefixes:["h","v"],names:["coeff","color","visible"]});return c._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e);var t=[e.child("grid").child("color")];for(let i=1;i<=c.HLevelsCount;i++)t.push(e.child("hlevel"+i).child("color"));for(let i=1;i<=c.VLevelsCount;i++)t.push(e.child("vlevel"+i).child("color"));e.addChild("linesColors",new a(t)),e.addExclusion("linesColors")}}c.HLevelsCount=7,c.VLevelsCount=7,t.LineToolFibSpeedResistanceFan=c},29638:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),i.e(1583).then(i.bind(i,22115)).then(({FibSpiralPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})} -pointsCount(){return 2}name(){return"Fib Spiral"}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,29216))).FibSpiralDefinitionsViewModel}static createProperties(e){var t=new r("linetoolfibspiral",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolFibSpiral=n},63835:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this.version=d.version,i.e(1583).then(i.t.bind(i,28550,19)).then(({FibTimeZonePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}migrateVersion(e,t,i){if(1===e){i.properties.level1.color.setValue(i.properties.baselinecolor.value());for(var s=2;s<=11;s++)i.properties["level"+s].color.setValue(i.properties.linecolor.value());for(s=1;s<=11;s++)i.properties["level"+s].linewidth.setValue(i.properties.linewidth.value()),i.properties["level"+s].linestyle.setValue(i.properties.linestyle.value())}}pointsCount(){return 2}name(){return"Fib Time Zone"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,45384))).FibTimezoneDefinitionsViewModel}static createProperties(e){var t=new o("linetoolfibtimezone",e,!1,{range:[1,11]});return d._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e);for(var t=[],i=[],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));for(t=[],i=[],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.version=2,d.LevelsCount=11,t.LineToolFibTimeZone=d},53804:(e,t,i)=>{"use strict";i.d(t,{LineToolFibWedgeBase:()=>o});var s=i(88537),r=i(86441),n=i(89857);class o extends n.LineDataSource{pointsCount(){return 3}hasEditableCoordinates(){return!1}setPoint(e,t){if(super.setPoint(e,t),!this._recursiveGuard)try{if(this._recursiveGuard=!0,2===e){const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0]));let t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1]));const i=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[2])).subtract(e).length();let n=t.subtract(e);n.length()<=0&&(n=new r.Point(1,0)),t=e.add(n.normalized().scaled(i));const o=(0,s.ensureNotNull)(this.screenPointToPoint(t)),a=this._pointsProperty.childs().points[1];a.childs().price.setValue(o.price),a.childs().bar.setValue(o.index)}else{const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1]));let i=(0, -s.ensureNotNull)(this.pointToScreenPoint(this._points[2]));const n=t.subtract(e).length();let o=i.subtract(e);o.length()<=0&&(o=new r.Point(1,0)),i=e.add(o.normalized().scaled(n));const a=(0,s.ensureNotNull)(this.screenPointToPoint(i)),l=this._pointsProperty.childs().points[2];l.childs().price.setValue(a.price),l.childs().bar.setValue(a.index)}}finally{this._recursiveGuard=!1}}addPoint(e){if(2===this._points.length){const t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),i=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1]));let r=(0,s.ensureNotNull)(this.pointToScreenPoint(e));const n=i.subtract(t).length(),o=r.subtract(t).normalized();r=t.add(o.scaled(n));const a=(0,s.ensureNotNull)(this.ownerSource()),l=(0,s.ensureNotNull)(a.firstValue()),c=(0,s.ensureNotNull)(this.priceScale()).coordinateToPrice(r.y,l);e={index:Math.round(this._model.timeScale().coordinateToIndex(r.x)),price:c}}return n.LineDataSource.prototype.addPoint.call(this,e)}}},41668:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(53804).LineToolFibWedgeBase,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),i.e(1583).then(i.t.bind(i,82522,19)).then(({FibWedgePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}isSynchronizable(){return!1}levelsCount(){return d.LevelsCount}name(){return"Fib Wedge"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}static createProperties(e){var t=new o("linetoolfibwedge",e,!1,{range:[1,11]});return d._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,90156))).FibWedgeDefinitionsViewModel}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("trendline").child("linewidth")],i=[e.child("trendline").child("color")],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=11,t.LineToolFibWedge=d},53342:(e,t,i)=>{"use strict";i.d(t,{LineToolFlagMark:()=>a});var s=i(86441),r=i(89857),n=i(88564),o=i(37865);class a extends r.LineDataSource{constructor(e,t,r,n){super(e,t||a.createProperties(),r,n),i.e(1583).then(i.bind(i,16089)).then(({FlagMarkPaneView:e})=>{const t=new e(this,this.model());t.setAnchors(new s.Point(0,0)),this._setPaneViews([t])})}pointsCount(){return 1}name(){return"Flag Mark"}static createProperties(e){e&&void 0===e.flagColor&&(e.flagColor="#318757");const t=new n.DefaultProperty("linetoolflagmark",e);return a._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,18661)).then(e=>e.FlagMarkDefinitionsViewModel)}static _configureProperties(e){r.LineDataSource._configureProperties(e), -e.addChild("backgroundsColors",new o.LineToolColorsProperty([e.childs().flagColor])),e.addExclusion("backgroundsColors")}}a.version=2},47047:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),this.version=n.version,i.e(1583).then(i.t.bind(i,82830,19)).then(({FlatBottomPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 3}name(){return"Flat Bottom"}hasEditableCoordinates(){return!1}addPoint(e,t){return t&&t.shift()&&2===this.points().length&&this._snapPoint45Degree(e,this.points()[this.points().length-2]),s.prototype.addPoint.call(this,e)}setLastPoint(e,t){return t&&t.shift()&&2===this.points().length&&this._snapPoint45Degree(e,this.points()[this.points().length-2]),s.prototype.setLastPoint.call(this,e)}setPoint(e,t,i){if(i&&i.shift()&&1===e){this._snapPoint45Degree(t,this.points()[0])}if(2===e)this._points[1].index=t.index;else if(3===e)return this._points[0].index=t.index,this._points[2].price=t.price,void this.normalizePoints();super.setPoint(e,t)}getPoint(e){return e<3?s.prototype.getPoint.call(this,e):3===e?{index:this._points[0].index,price:this._points[2].price}:void 0}canHasAlert(){return!0}_getAlertPlots(){var e=this._points[0],t=this._points[1],i=[];e.index<=t.index?(i.push(e),i.push(t)):(i.push(t),i.push(e));var s=this._points[2];s.time=t.time,s.index=t.index;var r,n,o,a,l={price:s.price,time:e.time,index:e.index},c=[];s.index<=l.index?(c.push(s),c.push(l)):(c.push(l),c.push(s)),i[0].price>c[0].price?(r=i,n=c):c[0].price>i[0].price||c[1].price>i[1].price?(r=c,n=i):(r=i,n=c);var h=this.properties().extendLeft.value(),d=this.properties().extendRight.value();return e.index<=t.index?(o=h,a=d):(o=d,a=h),[this._linePointsToAlertPlot(r,"Upper",o,a),this._linePointsToAlertPlot(n,"Lower",h,a)]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,14145))).GeneralTrendFiguresDefinitionsViewModel}static createProperties(e){var t=new r("linetoolflatbottom",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}n.version=1,t.LineToolFlatBottom=n},50301:(e,t,i)=>{"use strict";i.d(t,{createPropertiesObject:()=>a});var s=i(80643),r=i(34580);function n(e,t,i){var r;for(const n of Object.keys(null!==(r=e.levels)&&void 0!==r?r:{}))if(e.levels[n]&&(0,s.isSameType)(e.levels[n],t.typecheck())){let s=t.tpl();i.names.forEach((i,r)=>{s=t.fill(""+r,i,e.levels[n],s)}),e.levels[n]=s}return e}class o extends r.LevelsProperty{constructor(e,t){super(e,t,!1,{names:["width","color","visible"]},n)}}function a(e,t){return new o(e,t)}},52870:(e,t,i)=>{"use strict";i.d(t,{LineToolGannComplex:()=>d});var s=i(86441),r=i(88537),n=i(51264),o=i(89857),a=i(22423),l=i(50301),c=i(37865),h=i(22799);class d extends o.LineDataSource{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this.version=2,this._scaleRatioFormatter=new n.LimitedPrecisionNumericFormatter(7),this.version=2, -i.e(1583).then(i.bind(i,72e3)).then(({GannComplexPaneView:e})=>{this._setPaneViews([new e(this,this.model())])});const o=this.properties();this._adjustScaleRatio(o),o.subscribe(this,this._adjustScaleRatio),o.childs().scaleRatio.subscribe(this,this._correctFirstPoint),this._syncStateExclusions=["scaleRatio"],o.onRestoreFactoryDefaults().subscribe(this,this._handleRestoringFactoryDefaults),this._onTemplateApplying.subscribe(this,this._handleTemplateApplying),this._onTemplateApplied.subscribe(this,this._correctFirstPoint)}migrateVersion(e,t,i){1===e&&(this._points.length>=this.pointsCount()?setTimeout(()=>this._migratePoint()):this._timePoint.length>=this.pointsCount()&&this._pointAdded.subscribe(this,this._migratePoint))}destroy(){const e=this.properties();e.unsubscribe(this,this._adjustScaleRatio),e.childs().scaleRatio.unsubscribe(this,this._correctFirstPoint),e.onRestoreFactoryDefaults().unsubscribe(this,this._handleRestoringFactoryDefaults),this._onTemplateApplying.unsubscribe(this,this._handleTemplateApplying),this._onTemplateApplied.unsubscribe(this,this._correctFirstPoint),super.destroy()}pointsCount(){return 2}name(){return"Gann Square"}addPoint(e,t,i){this._points.length>1&&this._points.pop();const s=super.addPoint(e,t,i),n=this.priceScale();return!(0,r.ensureNotNull)(n).isLog()&&s&&this._correctFirstPoint(),s}setPoint(e,t,i){super.setPoint(e,t,i),void 0!==i&&i.shift()?this._correctPoint(e):this._correctScaleRatio()}setLastPoint(e,t){const i=this.priceScale();return(0,r.ensureNotNull)(i).isLog()||(this._points[1]=e,this._correctPoint(1)),super.setLastPoint(e,t)}isReversed(){return this.properties().childs().reverse.value()}levelsCount(){return this.properties().childs().levels.childCount()}levels(){const e=[],t=this.properties().childs(),i=t.levels.childCount();for(let s=0;se.GannComplexAndFixedDefinitionsViewModel)}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.addExclusion("scaleRatio");const t=[],i=[],s=e.childs();{const e=s.levels.childCount();for(let r=0;r0,o=s.index-r.index>0;let a=n&&!o||!n&&o?-1:1;0===e&&(a=-a),s.price=r.price+a*t*i,this._pointChanged.fire(e)}this.normalizePoints()}_correctFirstPoint(){this._correctPoint(this.isReversed()?0:1)}_handleRestoringFactoryDefaults(){this.properties().childs().scaleRatio.setValue(this._getAdjustedScaleRatio())}_handleTemplateApplying(e){""===e.scaleRatio&&(e.scaleRatio=this._getAdjustedScaleRatio())}_migratePoint(){if(this.points().length0){s=s.normalized();let e=Math.acos(s.x);return s.y>0&&(e=-e),e}return null}}},5094:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),i.e(1583).then(i.bind(i,66323)).then(({GannFanPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 2}name(){return"Gann Fan"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,73511))).GannFanDefinitionsViewModel}static createProperties(e){var t=new o("linetoolgannfan",e,!1,{range:[1,9]});return d._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e);for(var t=[],i=[],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=9,t.LineToolGannFan=d},33209:(e,t,i)=>{"use strict";i.d(t,{LineToolGannFixed:()=>l});var s=i(86441),r=i(88537),n=i(89857),o=i(37865),a=i(50301);class l extends n.LineDataSource{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),this._constructor="LineToolGannFixed",i.e(1583).then(i.bind(i,93695)).then(({GannFixedPaneView:e})=>{this._setPaneViews([new e(this,this.model())])}),this.properties().childs().reverse.subscribe(this,this._reversePoints)}pointsCount(){return 2}name(){return"Gann Square Fixed"}axisPoints(){const e=this.points(),t=this.getScreenPoints();return e.length<2||t.length<2?[]:[e[0],(0,r.ensureNotNull)(this.screenPointToPoint(t[1]))]}getScreenPoints(){const e=this.points();if(e.length<2)return[];const t=this._calcAngle();if(null===t)return[];const[i,n]=e,o=(0,r.ensureNotNull)(this.pointToScreenPoint(i)),a=(0,r.ensureNotNull)(this.pointToScreenPoint(n)),l=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),c=new s.Point(Math.cos(t),-Math.sin(t)),h=c.normalized(),d=h.x<0?-1:1,u=h.y<0?-1:1;return[o.addScaled(c,l),o.add(new s.Point(5*l*d,5*l*u))]}levelsCount(){return this.properties().childs().levels.childCount()}levels(){const e=[],t=this.properties().childs(),i=t.levels.childCount();for(let s=0;se.GannComplexAndFixedDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e);const t=[],i=[],s=e.childs();{const e=s.levels.childCount();for(let r=0;r0&&(o=-o),o}_reversePoints(){const[e,t]=this._points;this._points[0]=t,this._points[1]=e,this.normalizePoints(),this.restart()}}},97433:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(34580).LevelsProperty,n=i(37865).LineToolColorsProperty,o=[4.5,9,11.25,18,22.5,36,45],a=function(){for(var e=[],t=o.length-1,i=1,s=0,r=0;r<1e10;)r=o[s]*i,e.push(Math.round(r)),e.push(Math.ceil(-r)),s===t-1&&(i*=10),s=(s+1)%t;return e.sort((function(e,t){return et?1:0})),e}();class l extends s{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),i.e(1583).then(i.t.bind(i,50527,19)).then(({GannSquarePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}hLevelsCount(){return l.HLevelsCount}vLevelsCount(){return l.VLevelsCount}pointsCount(){return 2}name(){return"Gann Box"}_alignPriceOnPattern(e,t){var i=Math.round(1e6*(e.price-t.price))/1e6;if(0===i)return t.price;for(var s=o[0],r=o[o.length-1],n=1,a=Math.abs(i);a=0&&!(o[c]*n=0?l:-l),e}_alignTimeOnPattern(e,t){var i=e.index-t.index;if(0===i)return 0;for(var s=a.length-2;s>=0&&!(a[s]0?1:0,e.index=t.index+a[s],e}_alignPointsFixedIncrement(e,t){return this._alignTimeOnPattern(e,t),this._alignPriceOnPattern(e,t),e} -_preparePoint(e,t){return t&&t.shift()&&0!==this._points.length&&this._alignPointsFixedIncrement(e,this._points[0]),super._preparePoint(e,t)}getPoint(e){if(e<2)return super.getPoint(e);var t=null;switch(e){case 2:case 3:var i=this.points();if(i.length===this.pointsCount()){var s=i[0].index,r=i[1].price;3===e&&(s=i[1].index,r=i[0].price),t={index:s,price:r}}}return t}setPoint(e,t,i){if(i&&i.shift()){var s=e%2==0?this._points[1]:this._points[0];this._alignPointsFixedIncrement(t,s)}switch(e){case 2:this._points[0].index=t.index,this._points[1].price=t.price;break;case 3:this._points[1].index=t.index,this._points[0].price=t.price;break;default:super.setPoint(e,t,i)}}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,58026))).GannSquareDefinitionsViewModel}static createProperties(e){var t=new r("linetoolgannsquare",e,!1,{range:[1,7],prefixes:["h","v"],names:["coeff","color","visible"]});return l._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e);for(var t=[e.child("color"),e.child("fans").child("color")],i=1;i<=l.HLevelsCount;i++)t.push(e.child("hlevel"+i).child("color"));for(i=1;i<=l.VLevelsCount;i++)t.push(e.child("vlevel"+i).child("color"));e.addChild("linesColors",new n(t)),e.addExclusion("linesColors")}}l.HLevelsCount=7,l.VLevelsCount=7,t.LineToolGannSquare=l},82241:(e,t,i)=>{"use strict";i.d(t,{LineToolGhostFeed:()=>c});var s=i(88564),r=i(89857),n=i(88537),o=i(80643);class a{constructor(e,t,i){this._source=e,this._segmentIndex=t,this._bars=null!=i?i:[]}setBars(e){this._bars=e}clone(e){return new a(e,this._segmentIndex,(0,o.clone)(this._bars))}generate(){this._bars=[];const e=this._source.points(),t=e[this._segmentIndex],i=e[this._segmentIndex+1];if(!t||!i||t.index===i.index)return;const s=this._segmentIndex?t.index+1:t.index,r=Math.sign(i.index-t.index);for(let e=s;e!==i.index;e+=r)this._bars.push(this._createBar())}bars(){return this._bars}setSize(e){if(e{this._setPaneViews([new t.GhostFeedPaneView(this,e)])})}isSynchronizable(){return!1}destroy(){this.properties().onRestoreFactoryDefaults().unsubscribe(this,this._handleRestoringFactoryDefaults),super.destroy()}propertiesChanged(){super.propertiesChanged(),this._currentAverageHL===this.properties().childs().averageHL.value()&&this._currentVariance===this.properties().childs().variance.value()||this._regenerate()}pointsCount(){return-1}name(){return"Ghost Feed"}segmentBars(e){return this._segments[e].bars()}segments(){return this._segments}generateBars(e){this._segments.length<=e&&this._segments.push(new a(this,e)),this._segments[e].generate()}addPoint(e,t,i){if(this._finished)return!0;if(this._points.length>0){const i=this._points[this._points.length-1];if(!(null==t?void 0:t.isApiEvent())&&i.index===e.index){this._lastPoint=null,this.normalizePoints(),this.createServerPoints();for(let e=0;e1&&this.generateBars(this._points.length-2),s}finish(){this._finished=!0,this._lastPoint=null,this.normalizePoints(),this.createServerPoints()}setPoint(e,t,i,s){if(super.setPoint(e,t,i),e>0){const i=this.points()[e-1],s=t.index-i.index;this._segments[e-1].setSize(Math.abs(s))}if(e({bars:[...e.bars()]})),t}restoreData(e){e.segments&&(this._segments=e.segments.map((e,t)=>new a(this,t,e.bars))),this._currentAverageHL=this.properties().childs().averageHL.value(),this._currentVariance=this.properties().childs().variance.value()}onData(e){super.onData(e);if(!this.pointsProperty().childs().points.child("0"))for(let e=0;ee.clone(this))}startMoving(e,t,i,s){super.startMoving(e,t,i,s),this._preparePixelSegments()}move(e,t,i,s){super.move(e,t,i,s),this._restoreSegmentsFromPixels()}endMoving(e,t){return this._segmentsPixelsWhileMoving=null,super.endMoving(e,t)}static createProperties(e){const t=new s.DefaultProperty("linetoolghostfeed",e);return c._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,65818))).GhostFeedDefinitionsViewModel}_handleRestoringFactoryDefaults(){const e=Math.round(this._calculateATR());this.properties().childs().averageHL.setValue(e)}_regenerate(){this._currentAverageHL=this.properties().childs().averageHL.value(),this._currentVariance=this.properties().childs().variance.value(),this._segments.forEach(e=>e.generate()), -this.updateAllViews((0,l.dataSourceChangeEvent)(this.id())),this._model.updateSource(this)}_calculateATR(){const e=this._model.mainSeries(),t=[];e.bars().each((e,i)=>{const s=i[2],r=i[3];return null!=s&&null!=r&&t.push(s-r),!1});let i=0===t.length?0:t.reduce((e,t)=>e+t,0)/t.length;return i*=e.base(),i}_preparePixelSegments(){var e,t;const i=this.priceScale(),s=null!==(t=null===(e=this.ownerSource())||void 0===e?void 0:e.firstValue())&&void 0!==t?t:null;if(null===i||null===s||i.isEmpty()||!i.isLog())return;const r=this.points();this._segmentsPixelsWhileMoving=this._segments.map((e,t)=>{const n=r[t].price,o=r[t+1].price,a=i.priceToCoordinate(n,s),l=(i.priceToCoordinate(o,s)-a)/(e.bars().length-1);return{bars:e.bars().map((e,t)=>{const r=a+t*l,n=i.coordinateToPrice(r,s);return{open:i.priceToCoordinate(n+e.o,s)-r,high:i.priceToCoordinate(n+e.h,s)-r,low:i.priceToCoordinate(n+e.l,s)-r,close:i.priceToCoordinate(n+e.c,s)-r}})}})}_restoreSegmentsFromPixels(){var e,t;const i=this.priceScale(),s=null!==(t=null===(e=this.ownerSource())||void 0===e?void 0:e.firstValue())&&void 0!==t?t:null;if(null===i||null===s||null===this._segmentsPixelsWhileMoving)return;const r=this.points();this._segmentsPixelsWhileMoving.forEach((e,t)=>{const n=this._segments[t],o=r[t].price,a=r[t+1].price,l=i.priceToCoordinate(o,s),c=(i.priceToCoordinate(a,s)-l)/(e.bars.length-1),h=n.bars().map((t,r)=>{const n=e.bars[r],o=l+r*c,a=i.coordinateToPrice(o,s);return{...t,o:i.coordinateToPrice(n.open+o,s)-a,h:i.coordinateToPrice(n.high+o,s)-a,l:i.coordinateToPrice(n.low+o,s)-a,c:i.coordinateToPrice(n.close+o,s)-a}});n.setBars(h)})}}},90378:(e,t,i)=>{"use strict";i.d(t,{LineToolHeadAndShoulders:()=>o});var s=i(88564),r=i(89857),n=i(37865);class o extends r.LineDataSource{constructor(e,t,s,r){const n=t||o.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,75545)).then(t=>{this._setPaneViews([new t.LineToolHeadAndShouldersPaneView(this,e)])})}pointsCount(){return 7}name(){return"Head and Shoulders"}static createProperties(e){const t=new s.DefaultProperty("linetoolheadandshoulders",e);return o._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,93262)).then(e=>e.PatternWithBackgroundDefinitionViewModel)}static _configureProperties(e){r.LineDataSource._configureProperties(e),e.addChild("linesColors",new n.LineToolColorsProperty([e.childs().color])),e.addChild("textsColors",new n.LineToolColorsProperty([e.childs().textcolor]))}}},65649:(e,t,i)=>{"use strict";i.d(t,{LineToolHighlighter:()=>n});var s=i(88564),r=i(27258);class n extends r.LineToolBrushBase{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s),this._loadPaneViews(e)}smooth(){return this.properties().childs().smooth.value()}name(){return"Highlighter"}static createProperties(e){const t=new s.DefaultProperty("linetoolhighlighter",e);return n._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){ -return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,19461)).then(e=>e.HighlighterDefinitionsViewModel)}_loadPaneViews(e){i.e(1583).then(i.bind(i,94672)).then(t=>{this._setPaneViews([new t.HighlighterPaneView(this,e)])})}static _configureProperties(e){r.LineToolBrushBase._configureProperties(e)}}},10198:(e,t,i)=>{"use strict";i.d(t,{LineToolHorzLinePriceAxisView:()=>r});var s=i(97938);class r extends s.PriceAxisView{constructor(e){super(),this._source=e}_updateRendererData(e,t,i){e.visible=!1;const s=this._source.points(),r=this._source.priceScale();if(0===s.length||null===r||r.isEmpty())return;const n=s[0];if(!isFinite(n.price))return;const o=this._source.ownerSource(),a=null!==o?o.firstValue():null;if(null===a)return;const l=this._source.properties().linecolor.value();i.background=l,i.textColor=this.generateTextColor(l),i.coordinate=r.priceToCoordinate(n.price,a),e.text=r.formatPrice(n.price,a),e.visible=!0}}},8877:(e,t,i)=>{"use strict";i.d(t,{LineToolHorzLine:()=>l});var s=i(2015),r=i.n(s),n=i(88564),o=i(89857),a=i(10198);class l extends o.LineDataSource{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),this._priceAxisView=new a.LineToolHorzLinePriceAxisView(this),i.e(1583).then(i.bind(i,8196)).then(({HorzLinePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}state(e){const t=super.state(e);return t.points&&0!==t.points.length&&(t.points[0].offset=0),t}pointsCount(){return 1}name(){return"Horizontal Line"}priceAxisViews(e,t){return this.isSourceHidden()||t!==this.priceScale()||!this._model.selection().isSelected(this)&&!this.properties().childs().showPrice.value()||e!==this._model.paneForSource(this)?null:[this._priceAxisView]}timeAxisViews(){return null}timeAxisPoints(){return[]}updateAllViews(e){super.updateAllViews(e),this._priceAxisView.update(e)}canHasAlert(){return!0}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}denormalizeTimePoints(){this._points=[],this._timePoint.length>0&&this._points.push({price:this._timePoint[0].price,index:0})}clearData(){const e=this._points;super.clearData(),this._points=e}static createProperties(e){const t=new n.DefaultProperty("linetoolhorzline",e);return l._configureProperties(t),t}_getAlertPlots(){return[this.points()[0].price]}_pointsForPointset(){return[]}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,81204)).then(e=>e.HorizontalLineDefinitionsViewModel)}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text||"")}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(r())("")),e.addExclusion("text")}}},10471:(e,t,i)=>{"use strict";i.d(t,{LineToolHorzRay:()=>l});var s=i(88564),r=i(2015),n=i.n(r),o=i(10198),a=i(89857);class l extends a.LineDataSource{constructor(e,t,s,r){super(e,null!=t?t:l.createProperties(),s,r),this._priceAxisView=new o.LineToolHorzLinePriceAxisView(this),i.e(1583).then(i.bind(i,95325)).then(({HorzRayPaneView:e})=>{ -this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 1}name(){return"Horizontal Ray"}priceAxisViews(e,t){return this.isSourceHidden()||t!==this.priceScale()||!this._model.selection().isSelected(this)&&!this.properties().childs().showPrice.value()||e!==this._model.paneForSource(this)?null:[this._priceAxisView]}updateAllViews(e){super.updateAllViews(e),this._priceAxisView.update(e)}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}canHasAlert(){return!0}static createProperties(e){const t=new s.DefaultProperty("linetoolhorzray",e);return l._configureProperties(t),t}_getAlertPlots(){const e=this._points[0],t={index:e.index+1,price:e.price};return[this._linePointsToAlertPlot([e,t],null,!1,!0)]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,58148))).HorizontalRayDefinitionsViewModel}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text||"")}static _configureProperties(e){a.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(n())("")),e.addExclusion("text")}}},74468:(e,t,i)=>{"use strict";i.d(t,{LineToolIcon:()=>l});var s=i(88537),r=i(86441),n=i(88564),o=i(89857),a=i(37865);class l extends o.LineDataSource{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),this.version=1,document.fonts&&document.fonts.check&&document.fonts.load&&!document.fonts.check("12px FontAwesome")&&document.fonts.load("12px FontAwesome","☺").then(()=>{this._isDestroyed||e.updateSource(this)}),i.e(1583).then(i.bind(i,78583)).then(t=>{this._setPaneViews([new t.IconPaneView(this,e)])})}pointsCount(){return 1}name(){return"Icon"}hasEditableCoordinates(){return!1}getAnchorLimit(){return 80}applyTemplate(e){delete e.icon,super.applyTemplate(e)}getChangePointForSync(e){return null}setPoint(e,t,i){const n=Object.assign({},t),o=(0,s.ensureNotNull)(this.pointToScreenPoint(this.points()[0])),a=(0,s.ensureNotNull)(this.pointToScreenPoint(n)).subtract(o),l=this.properties().childs();if(0===e||1===e){const t=a.normalized();let i=Math.acos(-t.x);Math.asin(t.y)>0&&(i=2*Math.PI-i),0===e&&(i+=Math.PI),l.angle.setValue(i)}else{const t=a.add(new r.Point(15*(3===e?-1:1),0));l.size.setValue(2*Math.abs(t.x))}}getSourceIcon(){return{type:"text",text:String.fromCharCode(this.properties().childs().icon.value())}}static createProperties(e){const t=new n.DefaultProperty("linetoolicon",e);return l._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,80449)).then(e=>e.IconsDefinitionsViewModel)}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.addChild("backgroundsColors",new a.LineToolColorsProperty([e.childs().color])),e.addExclusion("angle")}}},51139:(e,t,i)=>{"use strict";i.d(t,{LineToolInfoLine:()=>n});var s=i(88564),r=i(57649);class n extends r.LineToolTrendLine{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}pointsCount(){return 2}name(){return"Info Line"} -static createProperties(e){const t=new s.DefaultProperty("linetoolinfoline",e);return n._configureProperties(t),t}static _configureProperties(e){r.LineToolTrendLine._configureProperties(e)}}},87639:(e,t,i)=>{"use strict";var s=i(34580).LevelsProperty,r=i(40100).LineToolPitchfork;class n extends r{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Inside Pitchfork"}static createProperties(e){var t=new s("linetoolinsidepitchfork",e,!1,{range:[0,8]});return n._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e)}}t.LineToolInsidePitchfork=n},44601:(e,t,i)=>{"use strict";var s;i.r(t),i.d(t,{isMtpPredictorToolName:()=>o,isStudyLineToolName:()=>a,isLineToolName:()=>l,isLineDrawnWithPressedButton:()=>c,isLineToolFinishRequiredWhenCreatedByApi:()=>h,isLineToolDrawWithoutPoints:()=>d,isImageToolName:()=>u,isTextToolName:()=>p});var r=i(72708);const n=new Set([]);function o(e){return n.has(e)}function a(e){return"LineToolRegressionTrend"===e||"LineToolVbPFixed"===e||"LineToolFixedRangeVolumeProfile"===e}function l(e){return e in(s||(s=i.t(r,2)))||a(e)}function c(e){return"LineToolBrush"===e||"LineToolHighlighter"===e}function h(e){return c(e)||"LineToolPath"===e||"LineToolPolyline"===e||"LineToolGhostFeed"===e}function d(e){return"LineToolTweet"===e||"LineToolIdea"===e||"LineToolImage"===e}function u(e){return"LineToolImage"===e}function p(e){switch(e){case"LineToolBalloon":case"LineToolText":case"LineToolTextAbsolute":case"LineToolCallout":case"LineToolNote":case"LineToolNoteAbsolute":case"LineToolSignpost":return!0}return!1}},50144:(e,t,i)=>{"use strict";i.d(t,{LineDataSourceBase:()=>B});var s=i(86441),r=i(88537),n=i(76422),o=i(98125),a=i(62443),l=i(85733),c=i(2872),h=i.n(c),d=i(2015),u=i.n(d),p=i(37865),_=i(22474),m=i(19528);class g extends(u()){constructor(e,t){super(),this._lineSource=e,this._pointIndex=t,e.pointAdded().subscribe(this,e=>{this._pointIndex===e&&this._listeners.fire(this)}),e.pointChanged().subscribe(this,e=>{this._pointIndex===e&&this._listeners.fire(this)})}value(){const e=this._lineSource.points()[this._pointIndex].price,t=(0,r.ensureNotNull)(this._lineSource.ownerSource()).formatter();if(t.parse){const i=t.format(e),s=t.parse(i);return s.res?s.value:e}return e}setValue(e){const t=this._lineSource.points()[this._pointIndex];t.price=parseFloat(""+e),this._lineSource.startChanging(this._pointIndex,t),this._lineSource.setPoint(this._pointIndex,t),this._lineSource.model().updateSource(this._lineSource),this._listeners.fire(this);const i=this._lineSource.endChanging(!0,!1);this._lineSource.syncMultichartState(i)}}var f=i(38015),v=i(29823),S=i(98619),y=i(14791),b=i(37667),w=i(52714),C=i.n(w),P=i(23653),T=i(9315),x=i(36759),I=i(52418),M=i(20838),L=i(80643),A=i(33291),E=i(79680);const k=(0,o.getLogger)("Chart.LineDataSource");class D{constructor(){this._states=[]}start(e){this._states.push(e)}finish(e){const t=(0,r.ensureDefined)(this._states.pop());return s=t,(i=e).length!==s.length?{indexesChanged:!0,pricesChanged:!0}:i.reduce((e,t,i)=>{const r=s[i] -;return e.indexesChanged=e.indexesChanged||t.index!==r.index,e.pricesChanged=e.pricesChanged||t.price!==r.price,e},{indexesChanged:!1,pricesChanged:!1});var i,s}isEmpty(){return 0===this._states.length}}let V=0;class B extends a.DataSource{constructor(e,t,i,s){if(super(s),this.version=1,this.customization={forcePriceAxisLabel:!1,disableErasing:!1,disableSave:!1,showInObjectsTree:!0},this._currentPointsetAndSymbolId=null,this._pointChanged=new(h()),this._pointAdded=new(h()),this._alertUndoMode=!1,this._priceAxisViews=[],this._timeAxisViews=[],this._timePoint=[],this._points=[],this._lastPoint=null,this._paneViews=new Map,this._normalizedPointsChanged=new(h()),this._fixedPointsChanged=new(h()),this._changeStatesStack=new D,this._startMovingPoint=null,this._currentMovingPoint=null,this._fixedPoints=[],this._isActualSymbol=!1,this._isActualInterval=!1,this._isActualCurrency=!1,this._isActualUnit=!1,this._isDestroyed=!1,this._sharingMode=new(C())(0),this._onTemplateApplying=new(h()),this._onTemplateApplied=new(h()),this._syncStateExclusions=[],this._definitionsViewModel=null,this._syncLineStyleMuted=!1,this._onIsActualIntervalChange=new(h()),this._linkKey=new(C())(null),this._serverUpdateTime=null,this._boundCalcIsActualSymbol=this.calcIsActualSymbol.bind(this),this._model=e,this._properties=t,this._localAndServerAlertsMismatch=!1,this._properties.hasChild("interval")||this._properties.addChild("interval",new(u())(e.mainSeries().interval())),this.calcIsActualSymbol(),this._properties.childs().intervalsVisibilities.listeners().subscribe(this,this.calcIsActualSymbol),this._properties.subscribe(this,()=>this.propertiesChanged()),this._createPointsProperties(),this.pointsCount()>0)for(let e=0;e{const t=!1===(0,l.hideAllDrawings)().value();e.value()?e.value()&&t&&n.emit("drawing_event",this._id,"show"):(this._model.selection().isSelected(this)&&this._model.selectionMacro(e=>{e.removeSourceFromSelection(this)}),t&&n.emit("drawing_event",this._id,"hide")),this._onSourceHiddenMayChange()}),(0,l.hideAllDrawings)().subscribe(this,this._onSourceHiddenMayChange),this._definitionsViewModel=null,this._isDestroyed=!1}destroy(){this._paneViews.forEach((e,t)=>this._destroyPanePaneViews(t)),this.stop(),null!==this._definitionsViewModel&&(this._definitionsViewModel.destroy(),this._definitionsViewModel=null),null!==this._ownerSource&&(this._ownerSource.currencyChanged().unsubscribeAll(this),this._ownerSource.unitChanged().unsubscribeAll(this),(0,E.isSymbolSource)(this._ownerSource)&&(this._ownerSource.symbolResolved().subscribe(this,this._boundCalcIsActualSymbol),this._ownerSource.isActingAsSymbolSource().unsubscribe(this._boundCalcIsActualSymbol))),this.ownerSourceChanged().unsubscribeAll(this),(0,l.hideAllDrawings)().unsubscribeAll(this),this.deleteAlert(),this._isDestroyed=!0}createPriceAxisView(e){return new _.LineToolPriceAxisView(this,{ -pointIndex:e})}model(){return this._model}linkKey(){return this._linkKey}serverUpdateTime(){return this._serverUpdateTime}setServerUpdateTime(e){this._serverUpdateTime=e}boundToSymbol(){return!0}points(){const e=[];for(let t=0;t0&&(this._points=e)}restorePoints(e,t,i){const s=this._timePoint.length>0&&!(0,L.deepEquals)(this._timePoint,e)[0];this._timePoint=(0,S.deepCopy)(e),this._points=t,i||this.denormalizeTimePoints(),s&&this._normalizedPointsChanged.fire()}restorePositionPercents(e){this._positionPercents=e}calcIsActualSymbol(){if(this._model.mainSeries().hasDelayedSymbolIntervalChange())return;const e=this.ownerSource();if(null===e)this._isActualSymbol=!1;else{const t=(0,r.ensureNotNull)(e.symbolSource());this._migrateSymbolProperty();const i=this._properties.childs().symbol,s=i.value();if(this._isActualSymbol=t.symbolSameAsCurrent(s),this._isActualSymbol){const e=t.symbol();(0,y.areEqualSymbols)(s,e)||(k.logWarn('Possible drawing "migrating" detected from "'+s+'" to "'+e+'"'),k.logWarn("Series symbolInfo: "+JSON.stringify(t.symbolInfo())),k.logWarn(""+(new Error).stack)),i.setValue(e)}}this.calcIsActualInterval(),this.calcIsActualCurrency(),this.calcIsActualUnit(),this._onSourceHiddenMayChange()}calcIsActualCurrency(){const e=this.ownerSource();if(null===e)return void(this._isActualCurrency=!1);let t=this._properties.childs().currencyId.value();if(null!==t){const i=e.symbolSource();if(null===i)return;0,this._isActualCurrency=t===(0,b.symbolCurrency)(i.symbolInfo(),void 0,!0)}else{const t=(0, -r.ensureNotNull)(e.symbolSource()).symbolInfo();this._isActualCurrency=null!==t&&(0,b.symbolCurrency)(t)===(0,b.symbolOriginalCurrency)(t)}this._onSourceHiddenMayChange()}calcIsActualUnit(){const e=this.ownerSource();if(null===e)return void(this._isActualUnit=!1);const t=this._properties.childs().unitId.value();if(null!==t)this._isActualUnit=t===(0,r.ensureNotNull)(e.symbolSource()).unit();else{const t=(0,r.ensureNotNull)(e.symbolSource()).symbolInfo(),i=this._model.unitConversionEnabled();this._isActualUnit=null!==t&&(0,b.symbolUnit)(t,i)===(0,b.symbolOriginalUnit)(t,i)}this._onSourceHiddenMayChange()}calcIsActualInterval(){const e=this._isActualInterval,t=this._properties,i=this._model.mainSeries();this._isActualInterval=(0,x.isActualInterval)(v.Interval.parse(i.interval()),t.childs().intervalsVisibilities),!this._isActualInterval&&this._model.selection().isSelected(this)&&this._model.selectionMacro(e=>e.removeSourceFromSelection(this)),this._isActualInterval!==e&&this._onIsActualIntervalChange.fire(),this._onSourceHiddenMayChange()}paneViews(e){if(this.isSourceHidden())return null;const t=this._getPaneViews(this.isMultiPaneAvailable()?e:void 0);if(null===t)return null;if(1===t.length)return[t[0]];const i=[];for(let e=t.length-1;e>=0;--e)i.push(t[e]);return i}isSavedInChart(){return!this.customization.disableSave}setSavingInChartEnabled(e){this.customization.disableSave=!e}detachAlert(){const e=this.getAlertSync();if(e&&this._alertCallbacks){const t=this._alertCallbacks;e.off("destroy",t.remove),e.off("change:hovered",t.hovered),e.off("change:selected",t.selected)}this.hasAlert.setValue(!1),this._alertId=void 0}removeAlert(){this._alertId=void 0,this.hasAlert.setValue(!1)}deleteAlert(){0}areLocalAndServerAlertsMismatch(){return this._localAndServerAlertsMismatch}showInObjectTree(){return this.customization.showInObjectsTree}setShowInObjectsTreeEnabled(e){this.customization.showInObjectsTree=e}start(){this.createServerPoints()}processHibernate(){this.isSourceHidden()?this.isStarted()&&this.stop():this.isStarted()||this.start()}onData(e){"pointset_error"!==e.method?e.params.customId===this._currentPointsetIdWithPrefix()&&this._onPointsetUpdated(e.params.plots):k.logError(`Error getting pointset: ${e.params[0]} ${e.params[1]}`)}isActualSymbol(){return this._isActualSymbol}isActualCurrency(){return this._isActualCurrency}isActualInterval(){return this._isActualInterval}isActualUnit(){return this._isActualUnit}onIsActualIntervalChange(){return this._onIsActualIntervalChange}setOwnerSource(e){null!==this._ownerSource&&(this._ownerSource.currencyChanged().unsubscribeAll(this),this._ownerSource.unitChanged().unsubscribeAll(this)),null!==this._ownerSource&&(0,E.isSymbolSource)(this._ownerSource)&&(this._ownerSource.symbolResolved().unsubscribe(this,this._boundCalcIsActualSymbol),this._ownerSource.isActingAsSymbolSource().unsubscribe(this._boundCalcIsActualSymbol)),super.setOwnerSource(e),e&&(this.setPriceScale(e.priceScale()),e.currencyChanged().subscribe(this,this.calcIsActualCurrency), -e.unitChanged().subscribe(this,this.calcIsActualUnit),this.calcIsActualSymbol(),this._migrateZOrder()),(0,E.isSymbolSource)(e)&&(e.symbolResolved().subscribe(this,this._boundCalcIsActualSymbol),e.isActingAsSymbolSource().subscribe(this._boundCalcIsActualSymbol))}dataAndViewsReady(){return this._paneViews.size>0}pointAdded(){return this._pointAdded}pointChanged(){return this._pointChanged}pointToScreenPoint(e){var t;const i=this._model.timeScale(),r=this.priceScale(),n=null===(t=this.ownerSource())||void 0===t?void 0:t.firstValue();if(!r||r.isEmpty()||i.isEmpty()||null==n)return null;const o=i.indexToCoordinate(e.index),a=r.priceToCoordinate(e.price,n);return new s.Point(o,a)}screenPointToPoint(e){var t;const i=this.priceScale(),s=null===(t=this.ownerSource())||void 0===t?void 0:t.firstValue();if(null==s||!isFinite(s)||null===i)return null;const r=this._model.timeScale().coordinateToIndex(e.x);return{price:i.coordinateToPrice(e.y,s),index:r}}addPoint(e,t,i){const s=this._preparePoint(e,t);return this._addPointIntenal(s,t,i)}propertiesChanged(e){this.calcIsActualInterval(),this.updateAllViewsAndRedraw((0,A.dataSourceChangeEvent)(this.id())),e||this._syncLineStyleIfNeeded(),void 0===this._pendingPropertyChangedEvent&&(this._pendingPropertyChangedEvent=setTimeout(()=>{this._pendingPropertyChangedEvent=void 0,n.emit("drawing_event",this._id,"properties_changed")},0))}state(e){var t,i;const s={type:this.toolname,id:this.id(),state:this.properties().state(null!==(t=this._propertiesStateExclusions())&&void 0!==t?t:void 0),points:(0,S.deepCopy)(this._timePoint),zorder:this.zorder(),ownerSource:null===(i=this.ownerSource())||void 0===i?void 0:i.id()};return this.linkKey().value()&&(s.linkKey=this.linkKey().value()),delete s.state.points,e&&(s.indexes=this._points),this.isFixed()&&(s.positionPercents=this._positionPercents||this.calcPositionPercents()),"version"in this&&1!==this.version&&(s.version=this.version),this._saveAlertIdInState()&&this.hasAlert.value()&&void 0!==this._alertId&&(s.alertId=this._alertId.toString()),s}updateAllViews(e){this._isActualSymbol&&this._isActualCurrency&&this._isActualUnit&&this._isActualInterval&&this._properties.childs().visible.value()&&(this._updateAllPaneViews(e),this._priceAxisViews.forEach(t=>t.update(e)),this._timeAxisViews.forEach(t=>t.update(e)))}updateAllViewsAndRedraw(e){this.updateAllViews(e),this._model.updateSource(this)}properties(){return this._properties}restoreExternalPoints(e,t){if(this._timePoint=(0,S.deepCopy)(e.points),t.indexesChanged){if(this.properties().childs().interval.setValue(e.interval),!this.isActualSymbol())return this._clearServerPoints(),void this._normalizedPointsChanged.fire();this.createServerPoints()}else{const t=Math.min(this._points.length,e.points.length);for(let i=0;i0&&this.normalizePoints(),!this._readyToCreatePointset())return;const e=this._pointsForPointset();if(0===e.length)return;++V,this._currentPointsetAndSymbolId={pointsetId:V,symbolId:(0,r.ensureNotNull)(this._model.mainSeries().seriesSource().symbolInstanceId())};const t=(0,T.getServerInterval)(this.properties().childs().interval.value());this._model.chartApi().createPointset(this._currentPointsetIdWithPrefix(),"turnaround",this._currentPointsetAndSymbolId.symbolId,t,e,this.onData.bind(this))}finish(){}realign(){var e;this.calcIsActualSymbol(),this.isFixed()||this.isSourceHidden()||this._model.lineBeingCreated()===this||this._model.lineBeingEdited()===this||(null===(e=this._currentPointsetAndSymbolId)||void 0===e?void 0:e.symbolId)===this._model.mainSeries().seriesSource().symbolInstanceId()||this._clearServerPoints(),this.updateAllViews((0,A.dataSourceChangeEvent)(this.id()))}stop(){this._clearServerPoints()}restart(){this.isFixed()||(this._currentPointsetAndSymbolId=null,this.createServerPoints())}isStarted(){return null!==this._currentPointsetAndSymbolId}convertYCoordinateToPriceForMoving(e,t){var i;const s=(0,r.ensureNotNull)(this.priceScale());if(s.isEmpty())return null;const n=this.ownerSource(),o=(0,r.ensure)(null===(i=n||t)||void 0===i?void 0:i.firstValue());return s.coordinateToPrice(e,o)}syncMultichartState(e){const t={points:this._timePoint,interval:this._model.mainSeries().interval()},i=this.linkKey().value();if(null!==i&&this.isSynchronizable()){const s={model:this._model,linkKey:i,symbol:this._model.mainSeries().symbol(),finalState:t,changes:e};(0,l.finishChangingLineTool)(s)}}enableCurrentIntervalVisibility(){const e=this.properties().childs().intervalsVisibilities.state();void 0!==e&&((0,x.makeIntervalsVisibilitiesVisibleAtInterval)(e,v.Interval.parse(this._model.mainSeries().interval())),this.properties().childs().intervalsVisibilities.mergeAndFire(e))}clonePositionOffset(){return this.isFixed()?{barOffset:0,xCoordOffset:20,yCoordOffset:20}:{barOffset:0,xCoordOffset:0,yCoordOffset:-40}}sharingMode(){return this._sharingMode}share(e){ -this.isSynchronizable()&&this._sharingMode.setValue(e)}syncLineStyleState(){const e=this.properties().state(this._syncStateExclusions);return delete e.interval,e.intervalsVisibilities=(0,x.mergeIntervalVisibilitiesDefaults)(e.intervalsVisibilities),e}_correctLastPoint(e){return(0,L.clone)(e)}_pointsForPointset(){return this._timePoint.map(e=>[e.time_t,e.offset])}_snapPoint45Degree(e,t,i){const s=this._model.timeScale(),n=s.indexToCoordinate(t.index),o=s.indexToCoordinate(e.index)-n,a=(0,r.ensureNotNull)(this.priceScale()),l=t.price,c=e.price,h=(0,r.ensureNotNull)((0,r.ensureNotNull)(this.ownerSource()).firstValue()),d=a.priceToCoordinate(l,h),u=a.priceToCoordinate(c,h)-d,p=Math.round(Math.atan2(o,u)/Math.PI*4);if(2===Math.abs(p))i||(e.price=l);else if(0===Math.abs(p)||4===Math.abs(p))i||(e.index=t.index);else{const t=Math.sqrt(o*o+u*u),i=o<0?-1:1,r=u<0?-1:1;let l=Math.max(Math.abs(u),Math.abs(o));l/=l*Math.sqrt(2)/t;const c=Math.round(s.coordinateToIndex(n+l*i)),p=Math.abs(s.indexToCoordinate(c)-n),_=a.coordinateToPrice(d+p*r,h);e.index=c,e.price=_}}normalizePoint(e){return{...this._model.timeScale().normalizeBarIndex(e.index),price:e.price}}normalizePoints(){this._timePoint=[];for(let e=0;ethis._destroyPanePaneViews(t)),this._model.lightUpdate()}_getPaneViews(e){return this._paneViews.get(e)||null}_updateAllPaneViews(e){this._paneViews.forEach(t=>{for(const i of t)i.update(e)})}_alignPointHorizontallyOrVertically(e){const t=(0,r.ensureNotNull)(this.pointToScreenPoint(e)),i=(0,r.ensureDefined)((0,r.ensureNotNull)(this._startMovingPoint).logical),s=(0,r.ensureDefined)((0,r.ensureNotNull)(this._startMovingPoint).screen),n=Math.abs(s.x-t.x),o=Math.abs(s.y-t.y);if(n<10&&o<10)return e;return{index:n=1){for(let t=0;t=2&&this._snapTo45DegreesAvailable()&&this._snapPoint45Degree(i,this.points()[this.points().length-2]),i}_addPointIntenal(e,t,i){this._points.push(e);const s=this._points.length===this.pointsCount();return s?(this._lastPoint=null,i||(this.normalizePoints(),this.createServerPoints())):this._lastPoint=e,this._pointAdded.fire(this._points.length-1),s}_onSourceHiddenMayChange(){this._model.invalidate(P.InvalidationMask.validateAction(()=>{this!==this._model.lineBeingCreated()&&(this._isDestroyed||this.processHibernate())}))}_saveAlertIdInState(){return!0}_onPointsetUpdated(e){if(0===e.length)return;for(let t=0;t0}_onAlertData(e){}_propertiesStateExclusions(){return null}_syncLineStyleIfNeeded(){const e=this.linkKey().value();!this._syncLineStyleMuted&&e&&(0,l.changeLineStyle)({ -linkKey:e,state:this.syncLineStyleState(),model:this._model})}_muteSyncLineStyle(){this._syncLineStyleMuted=!0}_unmuteSyncLineStyleWithoutApplyingChanges(){this.propertiesChanged(),this._syncLineStyleMuted=!1}_applyTemplateImpl(e){e.intervalsVisibilities=(0,x.mergeIntervalVisibilitiesDefaults)(e.intervalsVisibilities);const t=this.properties();t.mergePreferences(e),t.saveDefaults(),this.propertiesChanged()}_getPropertyDefinitionsViewModelClass(){return Promise.resolve(null)}static _configureProperties(e){if(B._addCollectedProperties(e),e.hasChild("symbolStateVersion")||e.addChild("symbolStateVersion",new(u())(B._initialSymbolStateVersion())),e.hasChild("zOrderVersion")||e.addChild("zOrderVersion",new(u())(B._initialZOrderVersion())),e.hasChild("visible")||e.addChild("visible",new(u())(!0)),e.hasChild("frozen")||e.addChild("frozen",new(u())(!1)),e.hasChild("symbol")||e.addChild("symbol",new(u())("")),e.hasChild("currencyId")||e.addChild("currencyId",new(u())(null)),e.hasChild("unitId")||e.addChild("unitId",new(u())(null)),e.addExclusion("symbolStateVersion"),e.addExclusion("zOrderVersion"),e.addExclusion("visible"),e.addExclusion("frozen"),e.addExclusion("symbol"),e.addExclusion("currencyId"),e.addExclusion("unitId"),e.hasChild("intervalsVisibilities")){const t=(0,L.merge)((0,L.clone)(I.intervalsVisibilitiesDefaults),e.childs().intervalsVisibilities.state());e.removeProperty("intervalsVisibilities"),e.addChild("intervalsVisibilities",new M.IntervalsVisibilitiesProperty(t))}else e.addChild("intervalsVisibilities",new M.IntervalsVisibilitiesProperty(I.intervalsVisibilitiesDefaults));e.hasChild("title")||e.addChild("title",new(u())("")),e.addExclusion("symbolInfo"),e.addExclusion("points"),e.addExclusion("interval"),e.addExclusion("title"),e.hasChild("singleChartOnly")&&e.removeProperty("singleChartOnly"),e.hasChild("font")&&e.removeProperty("font")}static _addCollectedProperties(e){e.hasChild("linewidth")&&e.addChild("linesWidths",new p.LineToolWidthsProperty([(0,r.ensureDefined)(e.child("linewidth"))])),e.hasChild("linecolor")&&e.addChild("linesColors",new p.LineToolColorsProperty([(0,r.ensureDefined)(e.child("linecolor"))])),e.hasChild("backgroundColor")&&e.addChild("backgroundsColors",new p.LineToolColorsProperty([(0,r.ensureDefined)(e.child("backgroundColor"))])),e.hasChild("textColor")&&e.addChild("textsColors",new p.LineToolColorsProperty([(0,r.ensureDefined)(e.child("textColor"))])),e.addExclusion("linesWidths"),e.addExclusion("linesColors"),e.addExclusion("backgroundsColors"),e.addExclusion("textsColors")}static _initialSymbolStateVersion(){return 1}static _initialZOrderVersion(){return 1}_destroyPanePaneViews(e){const t=this._paneViews.get(e);if(void 0!==t)for(const e of t)e.destroy&&e.destroy();void 0!==e&&e.onDestroyed().unsubscribeAll(this),this._paneViews.delete(e)}_copyPricesWithoutNormalization(){const e=Math.min(this._points.length,this._timePoint.length);for(let t=0;t{"use strict";i.d(t,{LineDataSourcePointIndexProperty:()=>n}) -;var s=i(2015),r=i.n(s);class n extends(r()){constructor(e,t){super(),this._lineSource=e,this._pointIndex=t}value(){return this._lineSource.points()[this._pointIndex].index}setValue(e){const t=this._lineSource.points()[this._pointIndex];t.index=e,this._lineSource.startChanging(this._pointIndex,t),this._setPointImpl(t),this._lineSource.model().updateSource(this._lineSource),this._listeners.fire(this);const i=this._lineSource.endChanging(!0,!1);this._lineSource.syncMultichartState(i)}_setPointImpl(e){this._lineSource.setPoint(this._pointIndex,e)}}},22474:(e,t,i)=>{"use strict";i.d(t,{LineToolPriceAxisView:()=>n});var s=i(88537),r=i(97938);class n extends r.PriceAxisView{constructor(e,t){super(),this._active=!1,this._source=e,this._data=t,this._properties=e.model().properties().childs().scalesProperties}setActive(e){this._active=e}_updateRendererData(e,t,i){e.visible=!1;const s=this._source.model();if(!s.timeScale()||s.timeScale().isEmpty())return;const r=this._source.priceScale();if(null===r||r.isEmpty())return;if(!s.selection().isSelected(this._source)&&!this._source.isForcedDrawPriceAxisLabel())return;if(null===s.timeScale().visibleBarsStrictRange())return;const n=this._source.priceAxisPoints(),o=this._data.pointIndex;if(n.length<=o)return;const a=n[o];if(!isFinite(a.price))return;const l=this._source.ownerSource(),c=null!==l?l.firstValue():null;if(null===c)return;let h=this._data.backgroundPropertyGetter?this._data.backgroundPropertyGetter():null;null===h&&(h=this._getBgColor()),i.background=h,i.borderColor="#2E84A6",i.textColor=this.generateTextColor(h),i.coordinate=r.priceToCoordinate(a.price,c),e.text=this._formatPrice(a.price,c),e.visible=!0}_getBgColor(){return this._active?this._properties.childs().axisLineToolLabelBackgroundColorActive.value():this._properties.childs().axisLineToolLabelBackgroundColorCommon.value()}_formatPrice(e,t){return(0,s.ensureNotNull)(this._source.priceScale()).formatPrice(e,t)}}},19528:(e,t,i)=>{"use strict";i.d(t,{LineDataSourceTimeAxisView:()=>r});var s=i(85578);class r extends s.TimeAxisView{constructor(e,t){super(e.model()),this._active=!1,this._source=e,this._pointIndex=t,this._properties=e.model().properties().childs().scalesProperties}setActive(e){this._active=e}_getBgColor(){return this._active?this._properties.childs().axisLineToolLabelBackgroundColorActive.value():this._properties.childs().axisLineToolLabelBackgroundColorCommon.value()}_getIndex(){if(!this._model.selection().isSelected(this._source))return null;const e=this._source.timeAxisPoints();return e.length<=this._pointIndex?null:e[this._pointIndex].index}_isVisible(){return!0}}},89857:(e,t,i)=>{"use strict";var s=i(86441).Point,r=i(22474).LineToolPriceAxisView,n=(i(85733),i(29823).Interval),o=i(98125).getLogger("Chart.LineDataSource"),a=i(67337),l=i(60870).lineToolsLocalizedNames,c=a.enabled("datasource_copypaste"),h=i(50144).LineDataSourceBase;class d extends h{isAvailableInFloatingWidget(){return!0}visibilityKeyByInterval(e){var t,i=n.parse(e);return d.IntervalsVisibilities.forEach((function(e){ -e.kind===i.kind()&&e.from<=i.multiplier()&&e.to>=i.multiplier()&&(t=e.key)})),t}priceScale(){return this._ownerSource?this._ownerSource.m_priceScale:null}symbol(){return this._properties.symbol.value()}isSavedInStudyTemplates(){return!1}fixedPoints(){var e=[];if(this._positionPercents&&!this.priceScale().isEmpty())for(var t=0;t{"use strict";i.r(t),i.d(t,{LineToolMultiplePropertyBaseImpl:()=>l,LineToolCollectedProperty:()=>c,LineToolWidthsProperty:()=>h,LineToolColorsProperty:()=>d,MultipleLineWidthsProperty:()=>p,MultipleLineColorsProperty:()=>_}) -;var s=i(98125),r=i(2872),n=i.n(r);const o=(0,s.getLogger)("Chart.LineToolCollectedProperty");class a{applyValue(e,t){e.setValue(t)}}class l{constructor(e,t){this._onChange=new(n()),this._properties=e,e.forEach(e=>e.subscribe(this,()=>{this._onChange.fire(this)})),this._showIfProperty=t}visible(){var e;return!this._showIfProperty||(null===(e=this._showIfProperty)||void 0===e?void 0:e.value())}value(){if(0===this._properties.length)return o.logError("Incorrect call, should not request value of 0 properties"),"mixed";const e=this._properties[0].value();return 1===this._properties.length||this._properties.every(t=>t.value()===e)?e:"mixed"}state(){}merge(){}destroy(){this._properties.forEach(e=>e.unsubscribeAll(this))}subscribe(e,t){this._onChange.subscribe(e,t)}unsubscribe(e,t){this._onChange.unsubscribe(e,t)}unsubscribeAll(e){this._onChange.unsubscribeAll(e)}storeStateIfUndefined(){return!0}}class c extends l{setValue(e,t,i){if("mixed"===e)return;const s=null!=i?i:new a;this._properties.forEach(t=>s.applyValue(t,e))}}class h extends c{}class d extends c{firstColor(){return this._properties[0].value()}}class u extends l{setValue(e,t,i){if("mixed"===e)return;const s=null!=i?i:new a;this._properties.forEach(t=>t.setValue(e,void 0,s))}}class p extends u{}class _ extends u{}},72708:(e,t,i)=>{"use strict";t.LineToolFibRetracement=i(44860).LineToolFibRetracement,t.LineToolFibChannel=i(48917).LineToolFibChannel,t.LineToolFibSpeedResistanceArcs=i(19857).LineToolFibSpeedResistanceArcs,t.LineToolProjection=i(35344).LineToolProjection,t.LineToolTrendBasedFibExtension=i(25861).LineToolTrendBasedFibExtension,t.LineToolElliott=i(97917).LineToolElliott,t.LineToolFibCircles=i(54502).LineToolFibCircles,t.LineToolVertLine=i(51922).LineToolVertLine,t.LineToolCrossLine=i(53193).LineToolCrossLine,t.LineToolBarsPattern=i(98802).LineToolBarsPattern,t.LineToolTrendBasedFibTime=i(6245).LineToolTrendBasedFibTime,t.LineToolFibTimeZone=i(63835).LineToolFibTimeZone,t.LineToolCircleLines=i(49802).LineToolCircleLines,t.LineToolDateRange=i(45669).LineToolDateRange,t.LineToolPriceRange=i(66602).LineToolPriceRange,t.LineToolDateAndPriceRange=i(26215).LineToolDateAndPriceRange,t.LineToolParallelChannel=i(78898).LineToolParallelChannel,t.LineToolTrendAngle=i(86225).LineToolTrendAngle,t.LineToolTrendLine=i(57649).LineToolTrendLine,t.LineToolInfoLine=i(51139).LineToolInfoLine,t.LineToolArrowMark=i(18659).LineToolArrowMark,t.LineToolExecution=i(39593).LineToolExecution,t.LineToolPitchfan=i(18977).LineToolPitchfan,t.LineToolGannSquare=i(97433).LineToolGannSquare,t.LineToolFibSpeedResistanceFan=i(70673).LineToolFibSpeedResistanceFan,t.LineToolGannComplex=i(52870).LineToolGannComplex,t.LineToolGannFixed=i(33209).LineToolGannFixed,t.LineToolGannFan=i(5094).LineToolGannFan,t.LineToolFibWedge=i(41668).LineToolFibWedge,t.LineToolPitchfork=i(40100).LineToolPitchfork,t.LineToolDisjointAngle=i(46512).LineToolDisjointChannel,t.LineToolFlatBottom=i(47047).LineToolFlatBottom,t.LineToolIcon=i(74468).LineToolIcon, -t.LineToolRotatedRectangle=i(61272).LineToolRotatedRectangle,t.LineToolFibSpiral=i(29638).LineToolFibSpiral,t.LineToolHeadAndShoulders=i(90378).LineToolHeadAndShoulders,t.LineToolTriangle=i(99092).LineToolTriangle,t.LineToolTrianglePattern=i(53403).LineToolTrianglePattern,t.LineTool5PointsPattern=i(656).LineTool5PointsPattern,t.LineToolThreeDrivers=i(6980).LineToolThreeDrivers,t.LineToolABCD=i(82203).LineToolABCD,t.LineToolPolyline=i(19085).LineToolPolyline,t.LineToolPath=i(48950).LineToolPath,t.LineToolPrediction=i(12346).LineToolPrediction,t.LineToolPriceLabel=i(3113).LineToolPriceLabel,t.LineToolArrowMarker=i(10167).LineToolArrowMarker,t.LineToolNote=i(87517).LineToolNote,t.LineToolNoteAbsolute=i(87517).LineToolNoteAbsolute,t.LineToolSignpost=i(52827).LineToolSignpost,t.LineToolBrush=i(43871).LineToolBrush,t.LineToolArc=i(17337).LineToolArc,t.LineToolCallout=i(95536).LineToolCallout,t.LineToolBalloon=i(57666).LineToolBalloon,t.LineToolText=i(74971).LineToolText,t.LineToolHorzLine=i(8877).LineToolHorzLine,t.LineToolHorzRay=i(10471).LineToolHorzRay,t.LineToolRectangle=i(20258).LineToolRectangle,t.LineToolCircle=i(2039).LineToolCircle,t.LineToolEllipse=i(38430).LineToolEllipse,t.LineToolTimeCycles=i(38513).LineToolTimeCycles,t.LineToolSineLine=i(15718).LineToolSineLine,t.LineToolGhostFeed=i(82241).LineToolGhostFeed,t.LineToolBezierQuadro=i(30899).LineToolBezierQuadro,t.LineToolBezierCubic=i(47679).LineToolBezierCubic,t.LineToolArrow=i(59358).LineToolArrow,t.LineToolRay=i(31702).LineToolRay,t.LineToolExtended=i(41239).LineToolExtended,t.LineToolSchiffPitchfork=i(98390).LineToolSchiffPitchfork,t.LineToolSchiffPitchfork2=i(98225).LineToolSchiffPitchfork2,t.LineToolInsidePitchfork=i(87639).LineToolInsidePitchfork,t.LineToolTextAbsolute=i(74971).LineToolTextAbsolute,t.LineToolArrowMarkLeft=i(18659).LineToolArrowMarkLeft,t.LineToolArrowMarkRight=i(18659).LineToolArrowMarkRight,t.LineToolArrowMarkUp=i(18659).LineToolArrowMarkUp,t.LineToolArrowMarkDown=i(18659).LineToolArrowMarkDown,t.LineToolFlagMark=i(53342).LineToolFlagMark,t.LineToolCypherPattern=i(980).LineToolCypherPattern,t.LineToolElliottImpulse=i(97917).LineToolElliottImpulse,t.LineToolElliottTriangle=i(97917).LineToolElliottTriangle,t.LineToolElliottTripleCombo=i(97917).LineToolElliottTripleCombo,t.LineToolElliottCorrection=i(97917).LineToolElliottCorrection,t.LineToolElliottDoubleCombo=i(97917).LineToolElliottDoubleCombo,t.LineToolRiskRewardLong=i(34291).LineToolRiskRewardLong,t.LineToolRiskRewardShort=i(34291).LineToolRiskRewardShort,t.LineToolPosition=i(2157).LineToolPosition,t.LineToolOrder=i(86858).LineToolOrder,t.LineToolHighlighter=i(65649).LineToolHighlighter,t.LineToolPriceNote=i(7648).LineToolPriceNote},60870:(e,t,i)=>{"use strict";i.d(t,{lineToolsLocalizedNames:()=>r});var s=i(28353);const r={LineTool5PointsPattern:(0,s.t)("XABCD Pattern"),LineToolABCD:(0,s.t)("ABCD Pattern"),LineToolArc:(0,s.t)("Arc"),LineToolArrow:(0,s.t)("Arrow"),LineToolArrowMarkDown:(0,s.t)("Arrow Mark Down"),LineToolArrowMarkLeft:(0,s.t)("Arrow Mark Left"), -LineToolArrowMarkRight:(0,s.t)("Arrow Mark Right"),LineToolArrowMarkUp:(0,s.t)("Arrow Mark Up"),LineToolBalloon:(0,s.t)("Balloon"),LineToolBarsPattern:(0,s.t)("Bars Pattern"),LineToolBezierCubic:(0,s.t)("Double Curve"),LineToolBezierQuadro:(0,s.t)("Curve"),LineToolBrush:(0,s.t)("Brush"),LineToolCallout:(0,s.t)("Callout"),LineToolCircleLines:(0,s.t)("Cyclic Lines"),LineToolCypherPattern:(0,s.t)("Cypher Pattern"),LineToolDateAndPriceRange:(0,s.t)("Date and Price Range"),LineToolDateRange:(0,s.t)("Date Range"),LineToolDisjointAngle:(0,s.t)("Disjoint Channel"),LineToolElliottCorrection:(0,s.t)("Elliott Correction Wave (ABC)"),LineToolElliottDoubleCombo:(0,s.t)("Elliott Double Combo Wave (WXY)"),LineToolElliottImpulse:(0,s.t)("Elliott Impulse Wave (12345)"),LineToolElliottTriangle:(0,s.t)("Elliott Triangle Wave (ABCDE)"),LineToolElliottTripleCombo:(0,s.t)("Elliott Triple Combo Wave (WXYXZ)"),LineToolEllipse:(0,s.t)("Ellipse"),LineToolExtended:(0,s.t)("Extended Line"),LineToolFibChannel:(0,s.t)("Fib Channel"),LineToolFibCircles:(0,s.t)("Fib Circles"),LineToolFibRetracement:(0,s.t)("Fib Retracement"),LineToolFibSpeedResistanceArcs:(0,s.t)("Fib Speed Resistance Arcs"),LineToolFibSpeedResistanceFan:(0,s.t)("Fib Speed Resistance Fan"),LineToolFibSpiral:(0,s.t)("Fib Spiral"),LineToolFibTimeZone:(0,s.t)("Fib Time Zone"),LineToolFibWedge:(0,s.t)("Fib Wedge"),LineToolFlagMark:(0,s.t)("Flag Mark"),LineToolImage:(0,s.t)("Image"),LineToolFlatBottom:(0,s.t)("Flat Top/Bottom"),LineToolAnchoredVWAP:(0,s.t)("Anchored VWAP"),LineToolGannComplex:(0,s.t)("Gann Square"),LineToolGannFixed:(0,s.t)("Gann Square Fixed"),LineToolGannFan:(0,s.t)("Gann Fan"),LineToolGannSquare:(0,s.t)("Gann Box"),LineToolHeadAndShoulders:(0,s.t)("Head and Shoulders"),LineToolHorzLine:(0,s.t)("Horizontal Line"),LineToolHorzRay:(0,s.t)("Horizontal Ray"),LineToolIcon:(0,s.t)("Icon"),LineToolInsidePitchfork:(0,s.t)("Inside Pitchfork"),LineToolNote:(0,s.t)("Note"),LineToolNoteAbsolute:(0,s.t)("Anchored Note"),LineToolSignpost:(0,s.t)("Signpost"),LineToolParallelChannel:(0,s.t)("Parallel Channel"),LineToolPitchfan:(0,s.t)("Pitchfan"),LineToolPitchfork:(0,s.t)("Pitchfork"),LineToolPolyline:(0,s.t)("Polyline"),LineToolPath:(0,s.t)("Path"),LineToolPrediction:(0,s.t)("Forecast"),LineToolPriceLabel:(0,s.t)("Price Label"),LineToolArrowMarker:(0,s.t)("Arrow Marker"),LineToolPriceRange:(0,s.t)("Price Range"),LineToolProjection:(0,s.t)("Projection"),LineToolRay:(0,s.t)("Ray"),LineToolRectangle:(0,s.t)("Rectangle"),LineToolCircle:(0,s.t)("Circle"),LineToolRegressionTrend:(0,s.t)("Regression Trend"),LineToolRiskRewardLong:(0,s.t)("Long Position"),LineToolRiskRewardShort:(0,s.t)("Short Position"),LineToolFixedRangeVolumeProfile:(0,s.t)("Fixed Range Volume Profile"),LineToolRotatedRectangle:(0,s.t)("Rotated Rectangle"),LineToolSchiffPitchfork:(0,s.t)("Modified Schiff Pitchfork"),LineToolSchiffPitchfork2:(0,s.t)("Schiff Pitchfork"),LineToolSineLine:(0,s.t)("Sine Line"),LineToolText:(0,s.t)("Text",{context:"tool"}),LineToolTextAbsolute:(0,s.t)("Anchored Text"),LineToolThreeDrivers:(0, -s.t)("Three Drives Pattern"),LineToolTimeCycles:(0,s.t)("Time Cycles"),LineToolTrendAngle:(0,s.t)("Trend Angle"),LineToolTrendBasedFibExtension:(0,s.t)("Trend-Based Fib Extension"),LineToolTrendBasedFibTime:(0,s.t)("Trend-Based Fib Time"),LineToolTrendLine:(0,s.t)("Trend Line"),LineToolInfoLine:(0,s.t)("Info Line"),LineToolTriangle:(0,s.t)("Triangle"),LineToolTrianglePattern:(0,s.t)("Triangle Pattern"),LineToolVertLine:(0,s.t)("Vertical Line"),LineToolCrossLine:(0,s.t)("Cross Line"),LineToolHighlighter:(0,s.t)("Highlighter"),LineToolPriceNote:(0,s.t)("Price Note"),LineToolVbPFixed:(0,s.t)("Volume Profile Fixed Range")};r.LineToolGhostFeed=(0,s.t)("Ghost Feed")},14291:(e,t,i)=>{"use strict";i.r(t),i.d(t,{cloneLineTool:()=>W,createLineTool:()=>E,createLineToolProperties:()=>D,createStudyLineToolProperties:()=>V,getNewToolProperties:()=>A,isLineDrawnWithPressedButton:()=>C.isLineDrawnWithPressedButton,isLineTool:()=>N,isLineToolName:()=>C.isLineToolName,isStudyLineTool:()=>R,isStudyLineToolName:()=>C.isStudyLineToolName,isTrading:()=>O,lineToolByLinkKey:()=>H,prepareLineToolPropertiesByOwnerSource:()=>k,setNewToolProperties:()=>M,supportsPhantomMode:()=>B,tryFindStudyLineToolNameByStudyId:()=>F,unsetNewToolProperties:()=>L});var s=i(88537),r=i(86441),n=i(51934),o=i(89857),a=i(72708),l=i.t(a,2),c=i(2271),h=i(88145),d=i(67072),u=i.n(d),p=i(66101),_=i(37865),m=i(80643),g=i(88564);const f=(0,h.studyIdString)("RegressionTrend","tv-basicstudies");function v(e){return void 0!==e.startPrice&&void 0!==e.endPrice}class S extends n.StudyLineDataSource{constructor(e,t,r,n,o){r=null!=r?r:(0,s.ensureNotNull)(e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:f}));super(e,r,"linreg_",null!=t?t:S.createProperties(e),n,o),this.version=2,this._trendData=null,i.e(1583).then(i.bind(i,79752)).then(e=>{this._setPaneViews([new e.RegressionTrendPaneView(this,this._model)])})}formatter(){throw new Error("This method should never be called")}pointsCount(){return 2}clearData(){this._trendData=null,super.clearData()}state(e){var t;const i=super.state(e);return e?{...i,nonseriesdata:null!==(t=this._trendData)&&void 0!==t?t:void 0}:i}restoreData(e){var t;super.restoreData(e),this._trendData=null!==(t=e.nonseriesdata)&&void 0!==t?t:null}startIndex(){if(null===this._trendData||null===this._indexes)return null;const e=this._indexes[this._trendData.startIndex];return e!==c.INVALID_TIME_POINT_INDEX?e:null}endIndex(){if(null===this._trendData||null===this._indexes)return null;const e=this._indexes[this._trendData.endIndex];return e!==c.INVALID_TIME_POINT_INDEX?e:null}baseLine(){return null===this._trendData?null:this._trendData.baseLine}downLine(){return null===this._trendData?null:this._trendData.downLine}upLine(){return null===this._trendData?null:this._trendData.upLine}pearsons(){return null===this._trendData?null:this._trendData.pearsons}recalcStudyIfNeeded(){this._onStudyInputsMayChange()}cloneable(){return!1}static createProperties(e,t){const i=u().getStudyPropertyRootNameById(f),r=(0, -s.ensureNotNull)(e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:f})),n=(0,g.createDefaultsState)(!0,i,[],e.studyVersioning());return V("LineToolRegressionTrend",r,r,(0,m.merge)((0,m.clone)(n),null!=t?t:{}),e.studyVersioning())}static createRegressionTrendPropertiesFromStudyMetaInfoAndState(e,t,i,s){const r=(0,p.prepareStudyPropertiesForLoadChart)(e,t,i,null,s);return S._configureProperties(r),r}static studyId(){return f}_studyInputs(e){(0,s.assert)(2===e.length,"all the line tool points should be defined");const[t,i]=e;if(t.index===i.index)return null;const r=this._getPointTime(t.index<=i.index?t:i,!0),n=this._getPointTime(i.index>=t.index?i:t,!0);return null===r||null===n?(this._subscribeApplyInputsOnSeriesCompleted(),null):{...this.properties().childs().inputs.state(),"first bar time":1e3*r,"last bar time":1e3*n}}_onDataUpdated(e,t,i){null!==t&&(t.indexes_replace||(this._trendData=t.data),"nochange"!==i&&(this._indexes=i),super._onDataUpdated(e,t,i))}_isReady(){return null!==this._trendData&&void 0!==this._trendData.startIndex&&void 0!==this._trendData.endIndex&&v(this._trendData.upLine)&&v(this._trendData.baseLine)&&v(this._trendData.downLine)}_updateAnchorsPrice(){if(!this._trendData||(0,m.isNaN)(this._trendData.baseLine.startPrice)||(0,m.isNaN)(this._trendData.baseLine.endPrice))return;const{startPrice:e,endPrice:t}=this._trendData.baseLine;2===this._points.length&&(this._points[0].price=(0,s.ensureDefined)(e),this._points[1].price=(0,s.ensureDefined)(t),this._timePoint[0].price=(0,s.ensureDefined)(e),this._timePoint[1].price=(0,s.ensureDefined)(t))}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(7387),i.e(8623),i.e(607)]).then(i.bind(i,96457))).RegressionTrendDefinitionsViewModel}static _configureProperties(e){n.StudyLineDataSource._configureProperties(e);const t=e.childs().styles.childs(),i=[t.upLine.childs().linewidth,t.downLine.childs().linewidth,t.baseLine.childs().linewidth];e.addChild("linesWidths",new _.LineToolWidthsProperty(i))}}var y=i(20299);const b=(0,h.studyIdString)("VbPFixed","tv-basicstudies");class w extends y.LineToolVbPFixed{constructor(e,t,i,s,r,n){const o=i||e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:b});super(e,t,o,s,r,n)}calcIsActualSymbol(){n.StudyLineDataSource.prototype.calcIsActualSymbol.apply(this)}boundToSymbol(){return!0}isSynchronizable(){return this.priceScale()===this._model.mainSeries().priceScale()}static studyId(){return b}static createProperties(e,t){const i=u().getStudyPropertyRootNameById(b),r=(0,s.ensureNotNull)(e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:b})),n=(0,g.createDefaultsState)(!0,i,[],e.studyVersioning());return V("LineToolFixedRangeVolumeProfile",r,r,(0,m.merge)((0,m.clone)(n),null!=t?t:{}),e.studyVersioning())}static createPropertiesFromStudyMetaInfoAndState(e,t,i,s){const r=(0,p.prepareStudyPropertiesForLoadChart)(e,t,i,null,s);return w._configureProperties(r),r}}var C=i(44601),P=i(2587),T=i(36759);function x(e){for(const t of Object.keys(e))TradingView[t]=e[t]}x(l),x({ -LineToolRegressionTrend:S,LineToolVbPFixed:y.LineToolVbPFixed,LineToolFixedRangeVolumeProfile:w});let I=null;function M(e,t,i){return null!==I&&I.tool===e&&I.toolData===t||(I={properties:D(e,void 0,i),tool:e,toolData:t}),I.properties}function L(){I=null}function A(e){return null!==I&&I.tool===e?I.properties:null}function E(e,t,i,r,n,o){let a;if((0,s.assert)((0,C.isLineToolName)(e),"Unknown line tool: "+e),n||i||(i=A(e)||void 0),"LineToolVbPFixed"===e)a=new y.LineToolVbPFixed(t,i,(0,s.ensureDefined)(r),t.mainSeries(),n,o);else if("LineToolFixedRangeVolumeProfile"===e)a=new w(t,i,(0,s.ensureDefined)(r),t.mainSeries(),n,o);else if("LineToolRegressionTrend"===e)a=new S(t,i,(0,s.ensureDefined)(r),n,o);else{a=new((0,s.ensureDefined)(l[e]))(t,i,n,o)}return a.toolname=e,L(),a}function k(e,t){const i=(0,s.ensureNotNull)(t.symbolSource());e.childs().symbol.setValue(i.symbol()),i.model().currencyConversionEnabled()&&e.childs().currencyId.setValue(i.currency()),i.model().unitConversionEnabled()&&e.childs().unitId.setValue(i.unit()),e.childs().symbolStateVersion.setValue(2),e.childs().zOrderVersion.setValue(2)}function D(e,t,i){if((0,s.assert)((0,C.isLineToolName)(e),e+" should be name of the line tool"),"LineToolVbPFixed"===e)return y.LineToolVbPFixed.createProperties(i,t);if("LineToolFixedRangeVolumeProfile"===e)return w.createProperties(i,t);if("LineToolRegressionTrend"===e)return S.createProperties(i,t);return(0,s.ensureDefined)(l[e]).createProperties(t)}function V(e,t,i,r,n){if((0,s.assert)((0,C.isStudyLineToolName)(e),e+" should be name of the study line tool"),"LineToolVbPFixed"===e)return y.LineToolVbPFixed.createPropertiesFromStudyMetaInfoAndState(t,i,r,n);if("LineToolFixedRangeVolumeProfile"===e)return w.createPropertiesFromStudyMetaInfoAndState(t,i,r,n);if("LineToolRegressionTrend"===e)return S.createRegressionTrendPropertiesFromStudyMetaInfoAndState(t,i,r,n);throw new Error("Property creation is not implemented for study line tool "+e)}function B(e){(0,s.assert)((0,C.isLineToolName)(e),e+" should be name of the line tool");const t=l[e];return void 0!==t&&Boolean(t.supportPhantomMode)}function N(e){return e instanceof o.LineDataSource}function R(e){return e instanceof n.StudyLineDataSource}function O(e){return e instanceof P.LineToolTrading}function F(e){let t=null;return e===S.studyId()?t="LineToolRegressionTrend":e===y.LineToolVbPFixed.studyId()?t="LineToolVbPFixed":e===w.studyId()&&(t="LineToolFixedRangeVolumeProfile"),t}function W(e,t,i,n){const o=t.toolname,a=t.properties().state();a.intervalsVisibilities=(0,T.mergeIntervalVisibilitiesDefaults)(null==a?void 0:a.intervalsVisibilities);const l=D(t.toolname,a,e);l.childs().visible.setValue(!0);const c=(0,s.ensureNotNull)(t.ownerSource()),h=E(o,e,l);void 0!==n&&h.setId(n),h.setOwnerSource(c),h.toolname=o;const d=h.clonePositionOffset(),u=t.fixedPoints();(i?u.map(e=>e.add(new r.Point(d.xCoordOffset,d.yCoordOffset))):u).forEach(e=>h.addFixedPoint(e));const p=t.normalizedPoints(),_=i?function(e,t,i){const r=(0,s.ensureNotNull)(t.priceScale()),n=(0, -s.ensureNotNull)(t.firstValue());return e.map(e=>{const t=e.price,s=r.priceToCoordinate(t,n)+i.yCoordOffset,o=r.coordinateToPrice(s,n);return{time_t:e.time_t,price:o,offset:e.offset+i.barOffset}})}(p,c,d):p,m=t.points();return h.restorePoints(_,m),h.cloneData&&h.cloneData(t),h.checkAlert&&h.checkAlert(),h}function H(e,t){var i;return null!==(i=e.dataSources().find(e=>N(e)&&e.linkKey().value()===t))&&void 0!==i?i:null}},87517:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(89857).LineDataSource,n=i(2015),o=i(88564).DefaultProperty;class a extends r{constructor(e,t,s,r){super(e,t||a.createProperties(),s,r),this.version=a.version,i.e(1583).then(i.bind(i,99578)).then(({NotePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 1}name(){return"Note"}getTooltipWidth(){return a.TOOLTIP_WIDTH}getTooltipPadding(){return a.TOOLTIP_PADDING}getTooltipLineSpacing(){return a.TOOLTIP_LINESPACING}template(){var e=r.prototype.template.call(this);return e.text=this.properties().childs().text.value(),e}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}static createProperties(e){void 0!==e&&void 0!==e.markerColor&&void 0===e.borderColor&&(e.borderColor=e.markerColor);var t=new o("linetoolnote",e);return a._configureProperties(t),t}state(e){var t=r.prototype.state.call(this,e);return e&&(t.state.fixedSize=!1),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,55510))).NoteDefinitionsViewModel}static _configureProperties(e){r._configureProperties(e),e.hasChild("text")||e.addChild("text",new n(s("Text"))),e.addExclusion("text")}}a.TOOLTIP_WIDTH=300,a.TOOLTIP_PADDING=10,a.TOOLTIP_LINESPACING=5,a.version=1;class l extends a{constructor(e,t){super(e,t||l.createProperties())}title(){return s("Anchored Note")}name(){return"Anchored Note"}isFixed(){return!0}hasEditableCoordinates(){return!1}static createProperties(e){var t=new o("linetoolnoteabsolute",e);return l._configureProperties(t),t}static _configureProperties(e){a._configureProperties(e)}}t.LineToolNote=a,t.LineToolNoteAbsolute=l},86858:(e,t,i)=>{"use strict";var s=i(2587).LineToolTrading,r=i(22474).LineToolPriceAxisView,n=i(53664),o=i(89857).LineDataSource,a=i(88564).DefaultProperty;const l=i(67337);var c=i(59555).sortSourcesPreOrdered.LineToolOrder;function h(e){return null==e?e="":e+="",e}class d{constructor(e){this._line=e,this._data={bodyText:"order",quantityText:"0"},this._editable=!0,this._cancellable=!0,this._mode="",this._direction="buy",this._active=!0}setMode(e){return this._mode=e,this._line.updateAllViewsAndRedraw(),this}setDirection(e){return this._direction=e,this._line.updateAllViewsAndRedraw(),this}setActive(e){return this._active=e,this._line.updateAllViewsAndRedraw(),this}setEditable(e){return this._editable=e,this._line.updateAllViewsAndRedraw(),this}getEditable(){return this._editable}setCancellable(e){return this._cancellable=e,this._line.updateAllViewsAndRedraw(),this}getCancellable(){return this._cancellable} -hasMoveCallback(){return this.isFunction(this._onMoveCallback)}hasModifyCallback(){return this.isFunction(this._onModifyCallback)}getPrice(){return this._line.points().length>0?this._line.points()[0].price:this._line._timePoint.length>0?this._line._timePoint[0].price:void 0}setPrice(e){if(this._line.points().length>0){var t=this._line.points()[0];t.price=e,this._line._points[0]=t,this._line.normalizePoints(),this._line.updateAllViewsAndRedraw()}return this._line._timePoint.length>0&&(this._line._timePoint[0].price=e),this}getText(){return this._data.bodyText}setText(e){return this._data.bodyText=e||"",this._line.updateAllViewsAndRedraw(),this}setTooltip(e){return this._line.properties().tooltip.setValue(h(e)),this}getTooltip(){return this._line.properties().tooltip.value()}setModifyTooltip(e){return this._line.properties().modifyTooltip.setValue(h(e)),this}getModifyTooltip(){return this._line.properties().modifyTooltip.value()}setCancelTooltip(e){return this._line.properties().cancelTooltip.setValue(h(e)),this}getCancelTooltip(){return this._line.properties().cancelTooltip.value()}getQuantity(){return this._data.quantityText}setQuantity(e){return this._data.quantityText=e||"",this._line.updateAllViewsAndRedraw(),this}getExtendLeft(){var e=this._line.properties().extendLeft.value();return"inherit"===e?this._line._model.properties().tradingProperties.extendLeft.value():e}setExtendLeft(e){return this._line.properties().extendLeft.setValue(e),this}getLineLength(){var e=this._line.properties().lineLength.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineLength.value():e}setLineLength(e){return this._line.properties().lineLength.setValue(Math.max(0,Math.min(e,100))),this}getLineColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.lineActiveBuyColor.value():e.lineInactiveBuyColor.value():this._active?e.lineActiveSellColor.value():e.lineInactiveSellColor.value()}setLineColor(e){return"buy"===this._direction?this._active?this.setLineActiveBuyColor(e):this.setLineInactiveBuyColor(e):this._active?this.setLineActiveSellColor(e):this.setLineInactiveSellColor(e),this}setLineActiveBuyColor(e){return this._line.properties().lineActiveBuyColor.setValue(e),this}setLineInactiveBuyColor(e){return this._line.properties().lineInactiveBuyColor.setValue(e),this}setLineActiveSellColor(e){return this._line.properties().lineActiveSellColor.setValue(e),this}setLineInactiveSellColor(e){return this._line.properties().lineInactiveSellColor.setValue(e),this}getLineStyle(){var e=this._line.properties().lineStyle.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineStyle.value():e}setLineStyle(e){return this._line.properties().lineStyle.setValue(e),this}getLineWidth(){var e=this._line.properties().lineWidth.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineWidth.value():e}setLineWidth(e){return this._line.properties().lineWidth.setValue(e),this}getBodyBorderColor(){var e=this._line.properties() -;return"buy"===this._direction?this._active?e.bodyBorderActiveBuyColor.value():e.bodyBorderInactiveBuyColor.value():this._active?e.bodyBorderActiveSellColor.value():e.bodyBorderInactiveSellColor.value()}setBodyBorderColor(e){return"buy"===this._direction?this._active?this.setBodyBorderActiveBuyColor(e):this.setBodyBorderInactiveBuyColor(e):this._active?this.setBodyBorderActiveSellColor(e):this.setBodyBorderInactiveSellColor(e),this}setBodyBorderActiveBuyColor(e){return this._line.properties().bodyBorderActiveBuyColor.setValue(e),this}setBodyBorderInactiveBuyColor(e){return this._line.properties().bodyBorderInactiveBuyColor.setValue(e),this}setBodyBorderActiveSellColor(e){return this._line.properties().bodyBorderActiveSellColor.setValue(e),this}setBodyBorderInactiveSellColor(e){return this._line.properties().bodyBorderInactiveSellColor.setValue(e),this}getBodyBackgroundColor(){return n.getColorFromProperties(this._line.properties().bodyBackgroundColor,this._line.properties().bodyBackgroundTransparency)}setBodyBackgroundColor(e){return n.setColorToProperties(e,this._line.properties().bodyBackgroundColor,this._line.properties().bodyBackgroundTransparency),this}getBodyTextColor(){var e=this._line.properties();return"limit"===this._mode?this._active?e.bodyTextActiveLimitColor.value():e.bodyTextInactiveLimitColor.value():"stop"===this._mode?this._active?e.bodyTextActiveStopColor.value():e.bodyTextInactiveStopColor.value():"buy"===this._direction?this._active?e.bodyTextActiveBuyColor.value():e.bodyTextInactiveBuyColor.value():this._active?e.bodyTextActiveSellColor.value():e.bodyTextInactiveSellColor.value()}setBodyTextColor(e){return"limit"===this._mode?this._active?this.setBodyTextActiveLimitColor(e):this.setBodyTextInactiveLimitColor(e):"stop"===this._mode?this._active?this.setBodyTextActiveStopColor(e):this.setBodyTextInactiveStopColor(e):"buy"===this._direction?this._active?this.setBodyTextActiveBuyColor(e):this.setBodyTextInactiveBuyColor(e):this._active?this.setBodyTextActiveSellColor(e):this.setBodyTextInactiveSellColor(e),this}setBodyTextInactiveLimitColor(e){return this._line.properties().bodyTextInactiveLimitColor.setValue(e),this}setBodyTextActiveLimitColor(e){return this._line.properties().bodyTextActiveLimitColor.setValue(e),this}setBodyTextInactiveStopColor(e){return this._line.properties().bodyTextInactiveStopColor.setValue(e),this}setBodyTextActiveStopColor(e){return this._line.properties().bodyTextActiveStopColor.setValue(e),this}setBodyTextInactiveBuyColor(e){return this._line.properties().bodyTextInactiveBuyColor.setValue(e),this}setBodyTextActiveBuyColor(e){return this._line.properties().bodyTextActiveBuyColor.setValue(e),this}setBodyTextInactiveSellColor(e){return this._line.properties().bodyTextInactiveSellColor.setValue(e),this}setBodyTextActiveSellColor(e){return this._line.properties().bodyTextActiveSellColor.setValue(e),this}getBodyFont(){ -return n.getFontFromProperties(this._line.properties().bodyFontFamily,this._line.properties().bodyFontSize,this._line.properties().bodyFontBold,this._line.properties().bodyFontItalic)}setBodyFont(e){return n.setFontToProperties(e,this._line.properties().bodyFontFamily,this._line.properties().bodyFontSize,this._line.properties().bodyFontBold,this._line.properties().bodyFontItalic),this}getQuantityBorderColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.quantityBorderActiveBuyColor.value():e.quantityBorderInactiveBuyColor.value():this._active?e.quantityBorderActiveSellColor.value():e.quantityBorderInactiveSellColor.value()}setQuantityBorderColor(e){return"buy"===this._direction?this._active?this.setQuantityBorderActiveBuyColor(e):this.setQuantityBorderInactiveBuyColor(e):this._active?this.setQuantityBorderActiveSellColor(e):this.setQuantityBorderInactiveSellColor(e),this}setQuantityBorderActiveBuyColor(e){return this._line.properties().quantityBorderActiveBuyColor.setValue(e),this}setQuantityBorderInactiveBuyColor(e){return this._line.properties().quantityBorderInactiveBuyColor.setValue(e),this}setQuantityBorderActiveSellColor(e){return this._line.properties().quantityBorderActiveSellColor.setValue(e),this}setQuantityBorderInactiveSellColor(e){return this._line.properties().quantityBorderInactiveSellColor.setValue(e),this}getQuantityBackgroundColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.quantityBackgroundActiveBuyColor.value():e.quantityBackgroundInactiveBuyColor.value():this._active?e.quantityBackgroundActiveSellColor.value():e.quantityBackgroundInactiveSellColor.value()}setQuantityBackgroundColor(e){return"buy"===this._direction?this._active?this.setQuantityBackgroundActiveBuyColor(e):this.setQuantityBackgroundInactiveBuyColor(e):this._active?this.setQuantityBackgroundActiveSellColor(e):this.setQuantityBackgroundInactiveSellColor(e),this}setQuantityBackgroundActiveBuyColor(e){return this._line.properties().quantityBackgroundActiveBuyColor.setValue(e),this}setQuantityBackgroundInactiveBuyColor(e){return this._line.properties().quantityBackgroundInactiveBuyColor.setValue(e),this}setQuantityBackgroundActiveSellColor(e){return this._line.properties().quantityBackgroundActiveSellColor.setValue(e),this}setQuantityBackgroundInactiveSellColor(e){return this._line.properties().quantityBackgroundInactiveSellColor.setValue(e),this}getQuantityTextColor(){return n.getColorFromProperties(this._line.properties().quantityTextColor,this._line.properties().quantityTextTransparency)}setQuantityTextColor(e){return n.setColorToProperties(e,this._line.properties().quantityTextColor,this._line.properties().quantityTextTransparency),this}getQuantityFont(){return n.getFontFromProperties(this._line.properties().quantityFontFamily,this._line.properties().quantityFontSize,this._line.properties().quantityFontBold,this._line.properties().quantityFontItalic)}setQuantityFont(e){ -return n.setFontToProperties(e,this._line.properties().quantityFontFamily,this._line.properties().quantityFontSize,this._line.properties().quantityFontBold,this._line.properties().quantityFontItalic),this}getCancelButtonBorderColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.cancelButtonBorderActiveBuyColor.value():e.cancelButtonBorderInactiveBuyColor.value():this._active?e.cancelButtonBorderActiveSellColor.value():e.cancelButtonBorderInactiveSellColor.value()}setCancelButtonBorderColor(e){return"buy"===this._direction?this._active?this.setCancelButtonBorderActiveBuyColor(e):this.setCancelButtonBorderInactiveBuyColor(e):this._active?this.setCancelButtonBorderActiveSellColor(e):this.setCancelButtonBorderInactiveSellColor(e),this}setCancelButtonBorderActiveBuyColor(e){return this._line.properties().cancelButtonBorderActiveBuyColor.setValue(e),this}setCancelButtonBorderInactiveBuyColor(e){return this._line.properties().cancelButtonBorderInactiveBuyColor.setValue(e),this}setCancelButtonBorderActiveSellColor(e){return this._line.properties().cancelButtonBorderActiveSellColor.setValue(e),this}setCancelButtonBorderInactiveSellColor(e){return this._line.properties().cancelButtonBorderInactiveSellColor.setValue(e),this}getCancelButtonBackgroundColor(){return n.getColorFromProperties(this._line.properties().cancelButtonBackgroundColor,this._line.properties().cancelButtonBackgroundTransparency)}setCancelButtonBackgroundColor(e){return n.setColorToProperties(e,this._line.properties().cancelButtonBackgroundColor,this._line.properties().cancelButtonBackgroundTransparency),this}getCancelButtonIconColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.cancelButtonIconActiveBuyColor.value():e.cancelButtonIconInactiveBuyColor.value():this._active?e.cancelButtonIconActiveSellColor.value():e.cancelButtonIconInactiveSellColor.value()}setCancelButtonIconColor(e){return"buy"===this._direction?this._active?this.setCancelButtonIconActiveBuyColor(e):this.setCancelButtonIconInactiveBuyColor(e):this._active?this.setCancelButtonIconActiveSellColor(e):this.setCancelButtonIconInactiveSellColor(e),this}setCancelButtonIconActiveBuyColor(e){return this._line.properties().cancelButtonIconActiveBuyColor.setValue(e),this}setCancelButtonIconInactiveBuyColor(e){return this._line.properties().cancelButtonIconInactiveBuyColor.setValue(e),this}setCancelButtonIconActiveSellColor(e){return this._line.properties().cancelButtonIconActiveSellColor.setValue(e),this}setCancelButtonIconInactiveSellColor(e){return this._line.properties().cancelButtonIconInactiveSellColor.setValue(e),this}block(){this._blocked=!0,this._line.updateAllViewsAndRedraw()}unblock(){this._blocked=!1,this._line.updateAllViewsAndRedraw()}getBlocked(){return this._blocked}isFunction(e){return"function"==typeof e}onCancel(e,t){return t?this.isFunction(t)&&(this._onCancelData=e,this._onCancelCallback=t):this.isFunction(e)&&(this._onCancelCallback=e),this}callOnCancel(){ -this.isFunction(this._onCancelCallback)&&this._onCancelCallback.call(this,this._onCancelData)}isOnCancelCallbackPresent(){return this.isFunction(this._onCancelCallback)}onModify(e,t){return t?this.isFunction(t)&&(this._onModifyData=e,this._onModifyCallback=t):this.isFunction(e)&&(this._onModifyCallback=e),this}callOnModify(){this.isFunction(this._onModifyCallback)&&this._onModifyCallback.call(this,this._onModifyData)}onMove(e,t){return t?this.isFunction(t)&&(this._onMoveData=e,this._onMoveCallback=t):this.isFunction(e)&&(this._onMoveCallback=e),this}callOnMove(){this.isFunction(this._onMoveCallback)&&this._onMoveCallback.call(this,this._onMoveData)}onContextMenu(e,t){return t?this.isFunction(t)&&(this._onContextMenuData=e,this._onContextMenuCallback=t):this.isFunction(e)&&(this._onContextMenuCallback=e),this}shouldShowContextMenu(){return this.isFunction(this._onContextMenuCallback)}callOnContextMenu(){if(this.isFunction(this._onContextMenuCallback))return this._onContextMenuCallback.call(this,this._onContextMenuData)}remove(){this._line._model.removeSource(this._line),delete this._line}}class u extends s{constructor(e,t){super(e,t||u.createProperties()),this._adapter=new d(this),this.setSelectionEnabled(!0),i.e(1583).then(i.bind(i,45175)).then(({OrderPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}zorder(){return c}isSpeciallyZOrderedSource(){return!0}setPoint(e,t,i){this._points[e]=t,this.normalizePoints()}addPoint(e,t){return this._points.push(e),this._lastPoint=null,this.normalizePoints(),this.createServerPoints(),!0}name(){return"Order"}endMoving(e){var t=this._startMovingPoint&&this._currentMovingPoint&&this._startMovingPoint.logical.price!==this._currentMovingPoint.logical.price;super.endMoving(),!e&&t&&this._adapter.callOnMove()}createPriceAxisView(e){var t={pointIndex:e,backgroundPropertyGetter:()=>this._adapter.getLineColor()};return this._priceAxisView=new r(this,t),this._priceAxisView}paneViews(){return TradingView.printing&&!l.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showOrders.value()?o.prototype.paneViews.call(this):null}priceAxisViews(e,t){return TradingView.printing&&!l.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showOrders.value()?o.prototype.priceAxisViews.call(this,e,t):null}adapter(){return this._adapter}hasContextMenu(){return this._adapter.shouldShowContextMenu()}contextMenuItems(){return this._adapter.callOnContextMenu()}movable(){return Boolean(this._adapter._onMoveCallback)}static createProperties(e){var t=new a("linetoolorder",e,!1,!1);return u._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolOrder=u},78898:(e,t,i)=>{"use strict";i.d(t,{LineToolParallelChannel:()=>c});var s=i(88537),r=i(86441),n=i(88564),o=i(85733),a=i(89857),l=i(80643);class c extends a.LineDataSource{constructor(e,t,s,r){super(e,t||c.createProperties(),s,r),this._priceAxisViews.push(this.createPriceAxisView(3)),this._coordOffsetWhileMovingOrChanging=null, -this._pendingPriceOffset=null,i.e(1583).then(i.bind(i,74143)).then(({ParallelChannelPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}paneViews(e){return null!==this._pendingPriceOffset&&this._applyPendingPriceOffset(),super.paneViews(e)}setLastPoint(e,t){t&&t.shift()&&2===this.points().length&&this._snapPoint45Degree(e,this.points()[0]);const i=(0,l.clone)(e);return super.setLastPoint(e),i}startMoving(e,t,i,s){super.startMoving(e,t,i,s),this._coordOffsetWhileMovingOrChanging=this._findPixelsHeight()}endMoving(e,t,i){return this._coordOffsetWhileMovingOrChanging=null,super.endMoving(e,t,i)}startChanging(e,t){super.startChanging(e,t),this._coordOffsetWhileMovingOrChanging=this._findPixelsHeight()}endChanging(e,t,i){return this._coordOffsetWhileMovingOrChanging=null,super.endChanging(e,t)}restoreExternalPoints(e,t,i){const s=i?e.points:this._timePoint.map((t,i)=>({price:t.price,offset:e.points[i].offset,time_t:e.points[i].time_t}));if(super.restoreExternalPoints({...e,points:s},t),t.pricesChanged&&this._points.length===s.length)for(let e=0;e=4)return;this._snapPointBeforeChange(e,t,i);const a=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),l=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1])),c=(0,s.ensureNotNull)(this.pointToScreenPoint(t)),h=(0,s.ensureNotNull)(this._coordOffsetWhileMovingOrChanging),d=(0,s.ensureNotNull)(this.priceScale()),u=(0,s.ensure)(null===(n=this.ownerSource())||void 0===n?void 0:n.firstValue());switch(e){case 0:super.setPoint(e,t,i),this._points[2].price=d.coordinateToPrice(c.y+h,u);break;case 1:super.setPoint(e,t,i);break;case 2:super.setPoint(e,t,i),this._points[0].price=d.coordinateToPrice(c.y-h,u),this._points[0].index=t.index;break;case 3:this._points[1].price=d.coordinateToPrice(c.y-h,u),this._points[1].index=t.index;break;case 4:{const e=l.subtract(a),t=(c.x-a.x)/e.x,i=a.addScaled(e,t),s=c.y-i.y;this._points[2].price=d.coordinateToPrice(a.y+s,u);break}case 5:{const e=l.subtract(a),t=(c.x-a.x)/e.x,i=a.addScaled(e,t),s=c.y-i.y;this._points[0].price=d.coordinateToPrice(a.y+s,u),this._points[1].price=d.coordinateToPrice(l.y+s,u);break}}const p=this.linkKey().value();if(p&&!r&&e<4){const e=this._points.map(e=>e.price);(0,o.changeLineStyle)({model:this._model,linkKey:p,state:{prices:e}})}}state(e){const t=a.LineDataSource.prototype.state.call(this,e);return this._pendingPriceOffset&&(t.priceOffset=this._pendingPriceOffset),t}restoreExternalState(e){const t={...e};if(t.prices&&this.isActualSymbol())for(let e=0;ee.index<=t.index?[e,t]:[t,e],s=i(t[0],t[1]),r=i(t[2],t[3]);let n,o,a,l;t[2].price{"use strict";i.d(t,{LineToolPath:()=>c});var s=i(88537),r=i(86441),n=i(88564),o=i(49094),a=i(89857),l=i(37865);class c extends a.LineDataSource{constructor(e,t,s,r){const n=t||c.createProperties();super(e,n,s,r),this._finished=!1,i.e(1583).then(i.bind(i,10155)).then(t=>{this._setPaneViews([new t.PathPaneView(this,e)])})}pointsCount(){return-1}name(){return"Path"}hasEditableCoordinates(){return!1}finish(){this._finished=!0,this._lastPoint=null,this.normalizePoints(),this.createServerPoints()}addPoint(e,t,i){var n;if(this._finished)return!0;const a=(0,s.ensureNotNull)(this.priceScale()),l=this._model.timeScale().indexToCoordinate(e.index),c=e.price,h=(0,s.ensure)(null===(n=this.ownerSource())||void 0===n?void 0:n.firstValue()),d=a.priceToCoordinate(c,h);if(this._points.length>0){const e=this._points[this._points.length-1],i=this._model.timeScale().indexToCoordinate(e.index),s=e.price,n=a.priceToCoordinate(s,h),c=new r.Point(l,d).subtract(new r.Point(i,n)).length();if(!(null==t?void 0:t.isApiEvent())&&c<(0,o.interactionTolerance)().minDistanceBetweenPoints)return this._lastPoint=null,this.normalizePoints(),this.createServerPoints(),!0}return super.addPoint(e,t,i)}static createProperties(e){const t=new n.DefaultProperty("linetoolpath",e);return c._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,4283)).then(e=>e.PathDefinitionsViewModel)}static _configureProperties(e){a.LineDataSource._configureProperties(e),e.addChild("linesWidths",new l.LineToolWidthsProperty([(0,s.ensureDefined)(e.child("lineWidth"))])),e.addChild("linesColors",new l.LineToolColorsProperty([e.childs().lineColor]))}}},18977:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),i.e(1583).then(i.bind(i,92669)).then(({PitchfanLinePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 3}name(){return"Pitchfan"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)} -async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,34879))).PitchBaseDefinitionsViewModel}static createProperties(e){var t=new o("linetoolpitchfan",e,!1,{range:[0,8]});return d._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("median").child("linewidth")],i=[e.child("median").child("color")],s=0;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=8,t.LineToolPitchfan=d},30823:(e,t,i)=>{"use strict";var s;i.d(t,{LineToolPitchforkStyle:()=>s}),function(e){e[e.Original=0]="Original",e[e.Schiff=1]="Schiff",e[e.Inside=2]="Inside",e[e.Schiff2=3]="Schiff2"}(s||(s={}))},40100:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(28296).Action,l=i(62060).ACTION_ID,c=i(30823).LineToolPitchforkStyle,h=null,d=i(37865),u=d.LineToolWidthsProperty,p=d.LineToolColorsProperty,_=new r("erase level line",s("erase level line")),m=new r("change {title} style",s("change {title} style"));class g extends n{constructor(e,t,i,s){super(e,t||g.createProperties(),i,s),this._properties.style.listeners().subscribe(this,g.prototype._recreatePaneView),this._recreatePaneView()}levelsCount(){return g.LevelsCount}additionalActions(e){for(var t=[],i=[{title:s("Original"),actionId:l.ChartLineToolPitchforkChangeTypeToOriginal},{title:s("Modified Schiff"),actionId:l.ChartLineToolPitchforkChangeTypeToModifiedSchiff},{title:s("Inside"),actionId:l.ChartLineToolPitchforkChangeTypeToInside},{title:s("Schiff"),actionId:l.ChartLineToolPitchforkChangeTypeToSchiff}],n=0;n<4;n++){var o=new a({actionId:i[n].actionId,checked:this.properties().style.value()===n,checkable:!0,label:i[n].title,payload:{target:this,value:n},onExecute:function(t){var i=t.getPayload(),s=i.target;e.setProperty(s.properties().style,i.value,m.format({title:new r(s.name(),s.title())})),s.updateAllViews(),s._model.updateSource(s)}});t.push(o)}return[t[0],t[3],t[1],t[2]]}_recreatePaneView(){if(null!==h){var e=[];this._properties.style.value()===c.Original?e=[new h.PitchforkLinePaneView(this,this._model)]:this._properties.style.value()===c.Schiff?e=[new h.SchiffPitchforkLinePaneView(this,this._model)]:this._properties.style.value()===c.Schiff2?e=[new h.SchiffPitchfork2LinePaneView(this,this._model)]:this._properties.style.value()===c.Inside&&(e=[new h.InsidePitchforkLinePaneView(this,this._model)]),this._setPaneViews(e)}else i.e(1583).then(i.bind(i,41829)).then(e=>{null===h&&(h=e),this._recreatePaneView()})}pointsCount(){return 3}name(){return"Pitchfork"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,_)}static createProperties(e){var t=new o("linetoolpitchfork",e,!1,{range:[0,8]});return g._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){ -return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,84806))).PitchForkDefinitionsViewModel}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("median").child("linewidth")],i=[e.child("median").child("color")],s=0;s<=g.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new p(i)),e.addChild("linesWidths",new u(t))}}g.LevelsCount=8,t.LineToolPitchfork=g},19085:(e,t,i)=>{"use strict";i.d(t,{LineToolPolyline:()=>l});var s=i(88537),r=i(86441),n=i(88564),o=i(49094),a=i(89857);class l extends a.LineDataSource{constructor(e,t,s,r){const n=t||l.createProperties();super(e,n,s,r),this._finished=!1,i.e(1583).then(i.bind(i,95907)).then(t=>{this._setPaneViews([new t.PolylinePaneView(this,e)])})}pointsCount(){return-1}name(){return"Polyline"}hasEditableCoordinates(){return!1}finish(){this._finished=!0,this._lastPoint=null,this.normalizePoints(),this.createServerPoints()}addPoint(e,t,i){var n;if(this._finished)return!0;const a=(0,s.ensureNotNull)(this.priceScale()),l=this._model.timeScale().indexToCoordinate(e.index),c=e.price,h=(0,s.ensure)(null===(n=this.ownerSource())||void 0===n?void 0:n.firstValue()),d=a.priceToCoordinate(c,h),u=(0,o.interactionTolerance)().minDistanceBetweenPoints;if(this._points.length>0){const e=this._points[this._points.length-1],i=this._model.timeScale().indexToCoordinate(e.index),s=e.price,n=a.priceToCoordinate(s,h),o=new r.Point(l,d).subtract(new r.Point(i,n)).length();if(!(null==t?void 0:t.isApiEvent())&&oe.PolylinesDefinitionsViewModel)}static _configureProperties(e){a.LineDataSource._configureProperties(e),e.addExclusion("filled")}}},96295:(e,t,i)=>{"use strict" -;i.d(t,{PositionAveragePriceAxisView:()=>r});var s=i(22474);class r extends s.LineToolPriceAxisView{_formatPrice(e,t){return this._source.formatter().format(e)}}},2157:(e,t,i)=>{"use strict";var s=i(2587).LineToolTrading,r=i(89857).LineDataSource,n=i(96295).PositionAveragePriceAxisView,o=i(53664),a=i(88564).DefaultProperty,l=i(97098).PriceFormatter;const c=i(67337);var h=i(59555).sortSourcesPreOrdered.LineToolPosition;function d(e){return null==e?e="":e+="",e}class u{constructor(e){this._line=e,this._data={bodyText:"position",quantityText:"0"},this._closeEnabled=!0,this._direction="buy",this._profitState="neutral"}setDirection(e){return this._direction=e,this._line.updateAllViewsAndRedraw(),this}setProfitState(e){return this._profitState=e,this._line.updateAllViewsAndRedraw(),this}getPrice(){return this._line.points().length>0?this._line.points()[0].price:this._line._timePoint.length>0?this._line._timePoint[0].price:void 0}setPrice(e){if(this._line.points().length>0){var t=this._line.points()[0];t.price=e,this._line._points[0]=t,this._line.normalizePoints(),this._line.updateAllViewsAndRedraw()}return this._line._timePoint.length>0&&(this._line._timePoint[0].price=e),this}getText(){return this._data.bodyText}setText(e){return this._data.bodyText=e||"",this._line.updateAllViewsAndRedraw(),this}setTooltip(e){return this._line.properties().tooltip.setValue(d(e)),this}getTooltip(){return this._line.properties().tooltip.value()}setProtectTooltip(e){return this._line.properties().protectTooltip.setValue(d(e)),this}getProtectTooltip(){return this._line.properties().protectTooltip.value()}setCloseTooltip(e){return this._line.properties().closeTooltip.setValue(d(e)),this}getCloseTooltip(){return this._line.properties().closeTooltip.value()}setReverseTooltip(e){return this._line.properties().reverseTooltip.setValue(d(e)),this}getReverseTooltip(){return this._line.properties().reverseTooltip.value()}getQuantity(){return this._data.quantityText}setQuantity(e){return this._data.quantityText=e||"",this._line.updateAllViewsAndRedraw(),this}getExtendLeft(){var e=this._line.properties().extendLeft.value();return"inherit"===e?this._line._model.properties().tradingProperties.extendLeft.value():e}setExtendLeft(e){return this._line.properties().extendLeft.setValue(e),this}getLineLength(){var e=this._line.properties().lineLength.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineLength.value():e}setLineLength(e){return this._line.properties().lineLength.setValue(Math.max(0,Math.min(e,100))),this}getLineColor(){var e=this._line.properties();return("buy"===this._direction?e.lineBuyColor:e.lineSellColor).value()}setLineColor(e){return"buy"===this._direction?this.setLineBuyColor(e):this.setLineSellColor(e),this}setLineBuyColor(e){return this._line.properties().lineBuyColor.setValue(e),this}setLineSellColor(e){return this._line.properties().lineSellColor.setValue(e),this}getLineStyle(){var e=this._line.properties().lineStyle.value() -;return"inherit"===e?this._line._model.properties().tradingProperties.lineStyle.value():e}setLineStyle(e){return this._line.properties().lineStyle.setValue(e),this}getLineWidth(){var e=this._line.properties().lineWidth.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineWidth.value():e}setLineWidth(e){return this._line.properties().lineWidth.setValue(e),this}getBodyBorderColor(){var e=this._line.properties();return("buy"===this._direction?e.bodyBorderBuyColor:e.bodyBorderSellColor).value()}setBodyBorderColor(e){return"buy"===this._direction?this.setBodyBorderBuyColor(e):this.setBodyBorderSellColor(e),this}setBodyBorderBuyColor(e){return this._line.properties().bodyBorderBuyColor.setValue(e),this}setBodyBorderSellColor(e){return this._line.properties().bodyBorderSellColor.setValue(e),this}getBodyBackgroundColor(){return o.getColorFromProperties(this._line.properties().bodyBackgroundColor,this._line.properties().bodyBackgroundTransparency)}setBodyBackgroundColor(e){return o.setColorToProperties(e,this._line.properties().bodyBackgroundColor,this._line.properties().bodyBackgroundTransparency),this}getBodyTextColor(){var e=this._line.properties();return("positive"===this._profitState?e.bodyTextPositiveColor:"negative"===this._profitState?e.bodyTextNegativeColor:e.bodyTextNeutralColor).value()}setBodyTextColor(e){return"positive"===this._profitState?this.setBodyTextPositiveColor(e):"negative"===this._profitState?this.setBodyTextNegativeColor(e):this.setBodyTextNeutralColor(e),this}setBodyTextPositiveColor(e){return this._line.properties().bodyTextPositiveColor.setValue(e),this}setBodyTextNegativeColor(e){return this._line.properties().bodyTextNegativeColor.setValue(e),this}setBodyTextNeutralColor(e){return this._line.properties().bodyTextNeutralColor.setValue(e),this}getBodyFont(){return o.getFontFromProperties(this._line.properties().bodyFontFamily,this._line.properties().bodyFontSize,this._line.properties().bodyFontBold,this._line.properties().bodyFontItalic)}setBodyFont(e){return o.setFontToProperties(e,this._line.properties().bodyFontFamily,this._line.properties().bodyFontSize,this._line.properties().bodyFontBold,this._line.properties().bodyFontItalic),this}getQuantityBorderColor(){var e=this._line.properties();return("buy"===this._direction?e.quantityBorderBuyColor:e.quantityBorderSellColor).value()}setQuantityBorderColor(e){return"buy"===this._direction?this.setQuantityBorderBuyColor(e):this.setQuantityBorderSellColor(e),this}setQuantityBorderBuyColor(e){return this._line.properties().quantityBorderBuyColor.setValue(e),this}setQuantityBorderSellColor(e){return this._line.properties().quantityBorderSellColor.setValue(e),this}getQuantityBackgroundColor(){var e=this._line.properties();return("buy"===this._direction?e.quantityBackgroundBuyColor:e.quantityBackgroundSellColor).value()}setQuantityBackgroundColor(e){return"buy"===this._direction?this.setQuantityBackgroundBuyColor(e):this.setQuantityBackgroundSellColor(e),this}setQuantityBackgroundBuyColor(e){ -return this._line.properties().quantityBackgroundBuyColor.setValue(e),this}setQuantityBackgroundSellColor(e){return this._line.properties().quantityBackgroundSellColor.setValue(e),this}getQuantityTextColor(){return o.getColorFromProperties(this._line.properties().quantityTextColor,this._line.properties().quantityTextTransparency)}setQuantityTextColor(e){return o.setColorToProperties(e,this._line.properties().quantityTextColor,this._line.properties().quantityTextTransparency),this}getQuantityFont(){return o.getFontFromProperties(this._line.properties().quantityFontFamily,this._line.properties().quantityFontSize,this._line.properties().quantityFontBold,this._line.properties().quantityFontItalic)}setQuantityFont(e){return o.setFontToProperties(e,this._line.properties().quantityFontFamily,this._line.properties().quantityFontSize,this._line.properties().quantityFontBold,this._line.properties().quantityFontItalic),this}getReverseButtonBorderColor(){var e=this._line.properties();return("buy"===this._direction?e.reverseButtonBorderBuyColor:e.reverseButtonBorderSellColor).value()}setReverseButtonBorderColor(e){return"buy"===this._direction?this.setReverseButtonBorderBuyColor(e):this.setReverseButtonBorderSellColor(e),this}setReverseButtonBorderBuyColor(e){return this._line.properties().reverseButtonBorderBuyColor.setValue(e),this}setReverseButtonBorderSellColor(e){return this._line.properties().reverseButtonBorderSellColor.setValue(e),this}getReverseButtonBackgroundColor(){return o.getColorFromProperties(this._line.properties().reverseButtonBackgroundColor,this._line.properties().reverseButtonBackgroundTransparency)}setReverseButtonBackgroundColor(e){return o.setColorToProperties(e,this._line.properties().reverseButtonBackgroundColor,this._line.properties().reverseButtonBackgroundTransparency),this}getReverseButtonIconColor(){var e=this._line.properties();return("buy"===this._direction?e.reverseButtonIconBuyColor:e.reverseButtonIconSellColor).value()}setReverseButtonIconColor(e){return"buy"===this._direction?this.setReverseButtonIconBuyColor(e):this.setReverseButtonIconSellColor(e),this}setReverseButtonIconBuyColor(e){return this._line.properties().reverseButtonIconBuyColor.setValue(e),this}setReverseButtonIconSellColor(e){return this._line.properties().reverseButtonIconSellColor.setValue(e),this}getCloseButtonBorderColor(){var e=this._line.properties();return("buy"===this._direction?e.closeButtonBorderBuyColor:e.closeButtonBorderSellColor).value()}setCloseButtonBorderColor(e){return"buy"===this._direction?this.setCloseButtonBorderBuyColor(e):this.setCloseButtonBorderSellColor(e),this}setCloseButtonBorderBuyColor(e){return this._line.properties().closeButtonBorderBuyColor.setValue(e),this}setCloseButtonBorderSellColor(e){return this._line.properties().closeButtonBorderSellColor.setValue(e),this}getCloseButtonBackgroundColor(){return o.getColorFromProperties(this._line.properties().closeButtonBackgroundColor,this._line.properties().closeButtonBackgroundTransparency)}setCloseButtonBackgroundColor(e){ -return o.setColorToProperties(e,this._line.properties().closeButtonBackgroundColor,this._line.properties().closeButtonBackgroundTransparency),this}getCloseButtonIconColor(){var e=this._line.properties();return("buy"===this._direction?e.closeButtonIconBuyColor:e.closeButtonIconSellColor).value()}setCloseButtonIconColor(e){return"buy"===this._direction?this.setCloseButtonIconBuyColor(e):this.setCloseButtonIconSellColor(e),this}setCloseButtonIconBuyColor(e){return this._line.properties().closeButtonIconBuyColor.setValue(e),this}setCloseButtonIconSellColor(e){return this._line.properties().closeButtonIconSellColor.setValue(e),this}block(){this._blocked=!0,this._line.updateAllViewsAndRedraw()}unblock(){this._blocked=!1,this._line.updateAllViewsAndRedraw()}isFunction(e){return"function"==typeof e}onReverse(e,t){return t?this.isFunction(t)&&(this._onReverseData=e,this._onReverseCallback=t):this.isFunction(e)&&(this._onReverseCallback=e),this}callOnReverse(){this.isFunction(this._onReverseCallback)&&this._onReverseCallback.call(this,this._onReverseData)}isOnReverseCallbackPresent(){return this.isFunction(this._onReverseCallback)}onClose(e,t){return t?this.isFunction(t)&&(this._onCloseData=e,this._onCloseCallback=t):this.isFunction(e)&&(this._onCloseCallback=e),this}setCloseEnabled(e){return this._closeEnabled===e||(this._closeEnabled=e,this._onCloseCallback&&this._line.updateAllViewsAndRedraw()),this}isCloseEnabled(){return this._closeEnabled}callOnClose(){this.isFunction(this._onCloseCallback)&&this._closeEnabled&&this._onCloseCallback.call(this,this._onCloseData)}isOnCloseCallbackPresent(){return this._closeEnabled&&this.isFunction(this._onCloseCallback)}onModify(e,t){return t?this.isFunction(t)&&(this._onModifyData=e,this._onModifyCallback=t):this.isFunction(e)&&(this._onModifyCallback=e),this}callOnModify(){this.isFunction(this._onModifyCallback)&&this._onModifyCallback.call(this,this._onModifyData)}onContextMenu(e,t){return t?this.isFunction(t)&&(this._onContextMenuData=e,this._onContextMenuCallback=t):this.isFunction(e)&&(this._onContextMenuCallback=e),this}shouldShowContextMenu(){return this.isFunction(this._onContextMenuCallback)}callOnContextMenu(){if(this.isFunction(this._onContextMenuCallback))return this._onContextMenuCallback.call(this,this._onContextMenuData)}remove(){this._line._model.removeSource(this._line),delete this._line}}class p extends s{constructor(e,t){super(e,t||p.createProperties()),this._adapter=new u(this),i.e(1583).then(i.t.bind(i,69127,19)).then(({PositionPaneView:e})=>{this._setPaneViews([new e(this,this._model)])});var s=e.mainSeries().symbolInfo(),r=null!==s?s.pricescale:100,n=null!==s&&s.fractional?s.minmov:1,o=null!==s&&s.fractional,a=null!==s?s.minmove2:void 0;this._formatter=new l(r,n,o,a)}zorder(){return h}isSpeciallyZOrderedSource(){return!0}setPoint(e,t,i){this._points[e]=t,this.normalizePoints()}addPoint(e,t){return this._points.push(e),this._lastPoint=null,this.normalizePoints(),this.createServerPoints(),!0}name(){return"Position"}createPriceAxisView(e){ -return this._priceAxisView=new n(this,{pointIndex:e,backgroundPropertyGetter:()=>this._adapter.getLineColor()}),this._priceAxisView}paneViews(){return TradingView.printing&&!c.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showPositions.value()?r.prototype.paneViews.call(this):null}priceAxisViews(e,t){return TradingView.printing&&!c.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showPositions.value()?r.prototype.priceAxisViews.call(this,e,t):null}hasContextMenu(){return this._adapter.shouldShowContextMenu()}contextMenuItems(){return this._adapter.callOnContextMenu()}formatter(){return this._formatter}static createProperties(e){var t=new a("linetoolposition",e,!1,!1);return p._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolPosition=p},19582:(e,t,i)=>{"use strict";var s,r;i.r(t),i.d(t,{AlertStatus:()=>s,Direction:()=>r}),function(e){e[e.Waiting=0]="Waiting",e[e.Success=1]="Success",e[e.Failure=2]="Failure"}(s||(s={})),function(e){e[e.Up=1]="Up",e[e.Down=2]="Down"}(r||(r={}))},12346:(e,t,i)=>{"use strict";var s=i(88537).ensureNotNull,r=i(89857).LineDataSource,n=i(88564).DefaultProperty,o=i(19582);class a extends r{constructor(e,t,s,r){super(e,t||a.createProperties(),s,r),this._predictionPaneView=null;const n=this._model.mainSeries();n.properties().interval.subscribe(this,()=>{this.setStatus(o.AlertStatus.Waiting)}),n.dataEvents().dataUpdated().subscribe(this,this.checkAlert),i.e(1583).then(i.t.bind(i,58090,19)).then(({PredictionPaneView:e})=>{this._predictionPaneView=new e(this,this._model),this._setPaneViews([this._predictionPaneView])})}destroy(){const e=this._model.mainSeries();e.properties().interval.unsubscribeAll(this),e.dataEvents().dataUpdated().unsubscribeAll(this),super.destroy()}dataAndViewsReady(){return r.prototype.dataAndViewsReady.call(this)&&this._predictionPaneView&&this._predictionPaneView.iconsReady()}isSynchronizable(){return!1}status(){return this._properties.status.value()}setStatus(e){return this._properties.status.setValue(e)}pointsCount(){return 2}name(){return"Forecast"}restorePoints(e,t,i){super.restorePoints(e,t,i),this.checkAlert()}checkAlert(){if(!this.isSourceHidden()&&!(this._points.length<2||this._model.mainSeries().bars().isEmpty())){var e=this._points[1];if(this.status())e.index>this._model.timeScale().baseIndex()&&this.setStatus(o.AlertStatus.Waiting);else{var t=this._model.mainSeries().bars().valueAt(e.index);if(null!==t){var i=this.direction();if(i===o.Direction.Up&&t[TradingView.HIGH_PLOT]>=e.price)this.setStatus(o.AlertStatus.Success);else if(i===o.Direction.Down&&t[TradingView.LOW_PLOT]<=e.price)this.setStatus(o.AlertStatus.Success);else{var r=s(this._model.mainSeries().bars().lastIndex());e.index!==r&&this.setStatus(o.AlertStatus.Failure)}}}}}addPoint(e){var t=r.prototype.addPoint.call(this,e);return t&&this.checkAlert(),t}endChanging(){super.endChanging(),this.setStatus(o.AlertStatus.Waiting),this.checkAlert()}onData(e){super.onData(e),this.checkAlert()} -endMoving(e,t,i){super.endMoving(e,t,i),this.setStatus(o.AlertStatus.Waiting),this.checkAlert()}direction(){if(this.points().length<2)return o.Direction.Up;var e=this.points()[0];return this.points()[1].price>e.price?o.Direction.Up:o.Direction.Down}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,53697))).PredictionDefinitionsViewModel}cloneable(){return!1}static createProperties(e){var t=new n("linetoolprediction",e);return a._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e),e.merge({status:o.AlertStatus.Waiting})}}t.LineToolPrediction=a},3113:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty,n=i(37865).LineToolColorsProperty;class o extends s{constructor(e,t,s,r){super(e,t||o.createProperties(),s,r),i.e(1583).then(i.t.bind(i,69741,19)).then(({PriceLabelPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 1}name(){return"Price Label"}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,61641))).PriceLabelDefinitionsViewModel}static createProperties(e){var t=new r("linetoolpricelabel",e);return o._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e),e.addChild("linesColors",new n([e.childs().borderColor])),e.addChild("textsColors",new n([e.childs().color]))}}t.LineToolPriceLabel=o},7648:(e,t,i)=>{"use strict";i.d(t,{LineToolPriceNote:()=>c});var s=i(88537),r=i(88564),n=i(2015),o=i.n(n),a=i(89857),l=i(33291);class c extends a.LineDataSource{constructor(e,t,s,r){super(e,t||c.createProperties(),s,r),this._labelMovingDelta=null,i.e(1583).then(i.bind(i,19226)).then(t=>{this._setPaneViews([new t.PriceNotePaneView(this,e)])})}pointsCount(){return 2}name(){return"Price Note"}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}startMoving(e,t,i){if(1===t){if(this.isSourceHidden())return;const i=(0,s.ensureDefined)(e.logical),r=this.points()[1];this._labelMovingDelta={index:r.index-i.index,price:r.price-i.price},this.startChanging(t,i)}else this._labelMovingDelta=null,super.startMoving(e,t,i)}move(e,t,i){if(null!==this._labelMovingDelta){const t=(0,s.ensureDefined)(e.logical),r={index:t.index+this._labelMovingDelta.index,price:t.price+this._labelMovingDelta.price};this.setPoint(1,r,i),this.updateAllViews((0,l.dataSourceChangeEvent)(this.id()))}else super.move(e,t,i)}endMoving(e,t,i){return null!==this._labelMovingDelta?(this._labelMovingDelta=null,this.endChanging(!1,e)):super.endMoving(e,t,i)}static createProperties(e){const t=new r.DefaultProperty("linetoolpricenote",e);return c._configureProperties(t),t}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,90727)).then(e=>e.PriceNoteDefinitionsViewModel)}_snapTo45DegreesAvailable(){return!0}static _configureProperties(e){ -a.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(o())("")),e.addExclusion("text"),e.hasChild("backgroundsColors")&&e.removeProperty("backgroundsColors"),e.hasChild("textsColors")&&e.removeProperty("textsColors")}}},66602:(e,t,i)=>{"use strict";i.d(t,{LineToolPriceRange:()=>p});var s=i(89857),r=i(88537),n=i(24633),o=i(45383),a=i(85402);const l={...a.nonThemedFactoryDefaultsBase,extendLeft:!1,extendRight:!1},c=a.themedFactoryDefaultsBase,h=(0,o.extractAllPropertiesKeys)((0,r.ensureDefined)(c.get(n.StdTheme.Light))),d=(0,o.extractAllPropertiesKeys)(l);class u extends o.ThemedDefaultProperty{static create(e){return new u("linetoolpricerange",()=>(0,o.factoryDefaultsForCurrentTheme)(l,c),d,h,e)}}class p extends s.LineDataSource{constructor(e,t,s,r){super(e,t||p.createProperties(),s,r),i.e(1583).then(i.bind(i,25965)).then(e=>{this._setPaneViews([new e.PriceRangePaneView(this,this._model)])})}pointsCount(){return 2}name(){return"Price Range"}static createProperties(e){const t=u.create(e);return p._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,80447))).GeneralDatePriceRangeDefinitionsViewModel}static _configureProperties(e){s.LineDataSource._configureProperties(e)}}},35344:(e,t,i)=>{"use strict";var s=i(34580).LevelsProperty,r=i(53804).LineToolFibWedgeBase,n=i(37865).LineToolColorsProperty;class o extends r{constructor(e,t,s,r){super(e,t||o.createProperties(),s,r),i.e(1583).then(i.t.bind(i,76207,19)).then(({ProjectionLinePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return 1}name(){return"Projection"}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,12590))).ProjectionDefinitionsViewModel}static createProperties(e){var t=new s("linetoolprojection",e,!1,{range:[1,1]});return o._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e),e.addChild("linesColors",new n([e.trendline.color]))}}t.LineToolProjection=o},31702:(e,t,i)=>{"use strict";var s=i(57649).LineToolTrendLine,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Ray"}static createProperties(e){var t=new r("linetoolray",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolRay=n},20258:(e,t,i)=>{"use strict";i.d(t,{LineToolRectangle:()=>h});var s=i(86441),r=i(88564),n=i(2015),o=i.n(n),a=i(89857),l=i(37865),c=i(88537);class h extends a.LineDataSource{constructor(e,t,s,r){const n=t||h.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,79090)).then(({RectanglePaneView:t})=>{const i=[new t(this,e)];this._setPaneViews(i)})}pointsCount(){return 2}textColorsProperty(){return this.properties().childs().showLabel.value()?super.textColorsProperty():null}name(){return"Rectangle"}setPoint(e,t,i){if(e<2&&super.setPoint(e,t,i),i&&i.shift()){const i=this._getAnchorPointForIndex(e) -;if(e>=4)return this._correctMiddlePoints(e,t,i),void this.normalizePoints();this._snapPoint45Degree(t,i)}switch(e){case 2:this._points[1].price=t.price,this._points[0].index=t.index;break;case 3:this._points[0].price=t.price,this._points[1].index=t.index;break;case 4:this._points[0].index=t.index;break;case 5:this._points[1].index=t.index;break;case 6:this._points[0].price=t.price;break;case 7:this._points[1].price=t.price}this.normalizePoints()}getPoint(e){return e<2?super.getPoint(e):this._getAnchorPointForIndex(e)}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}static createProperties(e){const t=new r.DefaultProperty("linetoolrectangle",e);return h._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,39457)).then(e=>e.RectangleDefinitionsViewModel)}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}_snapPoint45Degree(e,t,i){const s=this.m_priceScale,r=this.ownerSource();if(null===s||null===r)return;const n=r.firstValue();if(null===n)return;const o=this._model.timeScale(),a=(0,c.ensureNotNull)(this.pointToScreenPoint(e)),l=(0,c.ensureNotNull)(this.pointToScreenPoint(t)),h=a.x-l.x,d=a.y-l.y,u=h<0?-1:1,p=d<0?-1:1,_=Math.max(Math.abs(h),Math.abs(d)),m=Math.round(o.coordinateToIndex(l.x+_*u)),g=Math.abs(o.indexToCoordinate(m)-l.x),f=s.coordinateToPrice(l.y+g*p,n);e.index=m,e.price=f}_correctMiddlePoints(e,t,i){e<6?this._correctRightLeftMiddlePoint(e,t,i):this._correctTopBottomMiddlePoint(e,t,i)}_correctRightLeftMiddlePoint(e,t,i){const r=(0,c.ensureNotNull)(this.pointToScreenPoint(t)),n=(0,c.ensureNotNull)(this.pointToScreenPoint(i)),o=(0,c.ensureNotNull)(this.pointToScreenPoint(this._points[0])),a=(0,c.ensureNotNull)(this.pointToScreenPoint(this._points[1]));let l=r.x-n.x;if(0===l)return;const h=o.x{"use strict";i.d(t,{LineToolRiskRewardBase:()=>v});var s=i(88537),r=i(95505),n=i(71053),o=i(69927),a=i(89857),l=i(10324),c=i(41628),h=i(97938);class d extends h.PriceAxisView{constructor(e,t){super(),this._source=e,this._data=t}_updateRendererData(e,t,i){if(e.visible=!1,!this._showAxisLabel())return;const s=this._source.priceScale();if(0===this._source.points().length||null===s||s.isEmpty())return;const r=this._source.ownerSource(),n=null!==r?r.firstValue():null;if(null===n)return;const o=this._data.priceProperty.value(),a=this._data.colorProperty.value();i.background=a,i.textColor=this.generateTextColor(a),i.coordinate=s.priceToCoordinate(o,n),e.text=s.formatPrice(o,n),e.visible=!0}_showAxisLabel(){return this._source.properties().childs().showPriceLabels.value()}}var u=i(2015),p=i.n(u);class _ extends(p()){constructor(e,t){super(),this._lineSource=e,this._pointIndex=t}value(){const e=this._lineSource.points()[this._pointIndex].price;return this._formatAndParsePrice(e)}state(){return this.value()}merge(e,t){return this.setValue(e),t?[]:null}_formatAndParsePrice(e){const t=(0,s.ensureNotNull)(this._lineSource.ownerSource()).formatter();if(t.parse){const i=t.format(e),s=t.parse(i);return s.res?s.value:e}return e}}class m extends _{constructor(e){super(e,0)}setValue(e){const t=this._lineSource.points()[this._pointIndex];this._lineSource.startChanging(this._pointIndex,t),t.price=parseFloat(""+e), -this._lineSource.setPoint(this._pointIndex,t),this._lineSource.recalculate(),this._lineSource.model().updateSource(this._lineSource),this._listeners.fire(this),this._lineSource.endChanging(!1,!1),this._lineSource.syncPriceLevels()}}class g extends _{constructor(e){super(e,1)}value(){const e=this._lineSource.stopPrice();return this._formatAndParsePrice(e)}setValue(e){const t=Math.round(Math.abs(e-this._lineSource.entryPrice())*this._lineSource.model().mainSeries().base());this._lineSource.properties().childs().stopLevel.setValue(t),this._lineSource.syncPriceLevels()}}class f extends _{constructor(e){super(e,2)}value(){const e=this._lineSource.profitPrice();return this._formatAndParsePrice(e)}setValue(e){const t=Math.round(Math.abs(e-this._lineSource.entryPrice())*this._lineSource.model().mainSeries().base());this._lineSource.properties().childs().profitLevel.setValue(t),this._lineSource.syncPriceLevels()}}class v extends a.LineDataSource{constructor(e,t,n,a){if(super(e,t,n,a),this._syncStateExclusions=["points","entryPrice","stopPrice","targetPrice","stopLevel","profitLevel","riskSize","qty","amountTarget","amountStop"],!t.hasChild("stopLevel")&&!t.hasChild("profitLevel")){const i=(0,s.ensureNotNull)(e.timeScale().visibleBarsStrictRange()),r=i.firstBar(),n=i.lastBar();let a=(0,s.ensureNotNull)(e.mainSeries().priceRange(r,n));const l=e.mainSeries().priceScale();if(l.isLog()){const e=l.logicalToPrice(a.minValue()),t=l.logicalToPrice(a.maxValue());a=new o.PriceRange(e,t)}if(a&&!a.isEmpty()){const i=Math.round(.2*a.length()*e.mainSeries().base());t.merge({stopLevel:i,profitLevel:i})}}t.childs().stopLevel.listeners().subscribe(this,this.recalculate),t.childs().stopLevel.listeners().subscribe(null,()=>{this.properties().childs().stopPrice.childChanged(null)}),t.childs().profitLevel.listeners().subscribe(this,this.recalculate),t.childs().profitLevel.listeners().subscribe(null,()=>{this.properties().childs().targetPrice.childChanged(null)}),t.addChild("entryPrice",new m(this)),t.addChild("stopPrice",new g(this)),t.addChild("targetPrice",new f(this)),t.hasChild("riskSize")||t.addProperty("riskSize",0),t.hasChild("qty")||t.addProperty("qty",0),t.hasChild("amountTarget")||t.addProperty("amountTarget",t.childs().accountSize.value()),t.hasChild("amountStop")||t.addProperty("amountStop",t.childs().accountSize.value()),t.addExclusion("riskSize"),t.addExclusion("qty"),t.addExclusion("amountTarget"),t.addExclusion("amountStop"),this._riskInPercentsFormatter=new r.NumericFormatter(2),this._riskInMoneyFormatter=new r.NumericFormatter,t.childs().risk.subscribe(this,this._recalculateRiskSize),t.childs().accountSize.subscribe(this,this._recalculateRiskSize),t.childs().riskDisplayMode.subscribe(this,this._recalculateRisk),t.childs().riskDisplayMode.subscribe(this,this._recalculateRiskSize),t.childs().entryPrice.subscribe(this,this._recalculateRiskSize),t.childs().stopPrice.subscribe(this,this._recalculateRiskSize),t.childs().profitLevel.subscribe(this,this._recalculateRiskSize), -t.childs().profitLevel.subscribe(this,this.syncPriceLevels.bind(this)),t.childs().stopLevel.subscribe(this,this._recalculateRiskSize),t.childs().stopLevel.subscribe(this,this.syncPriceLevels.bind(this)),t.childs().qty.subscribe(this,this._recalculateRiskSize),e.mainSeries().dataEvents().dataUpdated().subscribe(this,this._onSeriesUpdated),this.pointAdded().subscribe(this,e=>{switch(e){case c.RiskRewardPointIndex.Entry:case c.RiskRewardPointIndex.Close:this._recalculateRiskSize(),this._recalculateQty()}}),this.pointChanged().subscribe(this,e=>{switch(e){case c.RiskRewardPointIndex.Entry:case c.RiskRewardPointIndex.Close:this._recalculateRiskSize(),this._recalculateQty()}}),t.childs().riskDisplayMode.value()===l.RiskDisplayMode.Percentage&&t.childs().risk.value()>100&&t.childs().riskDisplayMode.setValueSilently(l.RiskDisplayMode.Money),this.version=2,this._entryPriceAxisView=new d(this,{colorProperty:t.childs().linecolor,priceProperty:t.childs().entryPrice}),this._stopPriceAxisView=new d(this,{colorProperty:t.childs().stopBackground,priceProperty:t.childs().stopPrice}),this._profitPriceAxisView=new d(this,{colorProperty:t.childs().profitBackground,priceProperty:t.childs().targetPrice}),i.e(1583).then(i.bind(i,35362)).then(({RiskRewardPaneView:t})=>{const i=[new t(this,e)];this._setPaneViews(i)})}destroy(){this._model.mainSeries().dataEvents().dataUpdated().unsubscribeAll(this),super.destroy()}checkAlert(){this.recalculate()}calculatePL(e){return this.entryPrice()-e}lastBarData(){const e=this._model.mainSeries().bars().firstIndex(),t=this._model.mainSeries().bars().lastIndex();if(null===e||null===t||isNaN(e)||isNaN(t))return null;const i=this.points();if(4===i.length){const s=i[c.RiskRewardPointIndex.ActualClose];return s.indexMath.max(this._points[0].index,this._points[1].index)||this.checkAlert()}}},10324:(e,t,i)=>{"use strict";var s;i.d(t,{RiskDisplayMode:()=>s}),function(e){e.Percentage="percents",e.Money="money"}(s||(s={}))},41628:(e,t,i)=>{"use strict";var s;i.d(t,{RiskRewardPointIndex:()=>s}),function(e){e[e.Entry=0]="Entry",e[e.Close=1]="Close",e[e.ActualEntry=2]="ActualEntry",e[e.ActualClose=3]="ActualClose"}(s||(s={}))},34291:(e,t,i)=>{"use strict";var s=i(88537).ensureNotNull,r=i(89857).LineDataSource,n=i(85733),o=i(88564).DefaultProperty,a=i(41628).RiskRewardPointIndex,l=i(10324).RiskDisplayMode,c=i(79029).LineToolRiskRewardBase,h=i(80643).isNumber;class d extends c{riskFormatter(e){return e===l.Percentage?this._riskInPercentsFormatter:this._riskInMoneyFormatter}getRiskStep(e){return e===l.Percentage?.01:1}_roundValue(e){return parseFloat(e.toFixed(2))}hasEditableCoordinates(){return!1}_recalculateRisk(){ -var e=this.properties(),t=e.riskDisplayMode.value(),i=e.riskSize.value(),s=e.accountSize.value(),r=e.risk.value();r=t===l.Percentage?this._roundValue(i/s*100):this._roundValue(s/100*r),this._riskInChange=!0,e.risk.setValue(this.riskFormatter(t).format(r)),this._riskInChange=!1}_recalculateRiskSize(){if(!this._riskInChange){var e=this.properties(),t=e.risk.value(),i=e.riskDisplayMode.value(),s=e.accountSize.value();i===l.Percentage?e.riskSize.setValue(t/100*s):t>s?(e.risk.setValue(s),e.riskSize.setValue(s)):e.riskSize.setValue(t)}}migrateVersion(e,t,i){if(1===e&&this._points.length>=1){var s=[];if(s.push(this._points[0]),n={price:(n=this._points[0]).price,index:this._getClosePointIndex(n.index)},s.push(n),this._points[1]&&s.push(this._points[1]),this._points[2]&&s.push(this._points[2]),this._points=s,this._timePoint.length>=1){var r=[],n=this._timePoint[0];r.push(n);var o={price:n.price,time_t:n.time_t,offset:this._getClosePointIndex(n.offset)};r.push(o),this._timePoint[1]&&s.push(this._points[1]),this._timePoint[2]&&s.push(this._points[2]),this._timePoint=r}}}priceAxisViews(e,t){return this.isSourceHidden()||t!==this.priceScale()||this._model.paneForSource(this)!==e?null:[this._entryPriceAxisView,this._stopPriceAxisView,this._profitPriceAxisView]}updateAllViews(){this.isActualSymbol()&&this._properties.visible.value()&&(n.hideAllDrawings().value()&&this.userEditEnabled()||(super.updateAllViews(),this._entryPriceAxisView.update(),this._stopPriceAxisView.update(),this._profitPriceAxisView.update()))}restoreExternalState(e){if(h(e.entryPrice)){if(e=Object.assign({},e),!this.isActualSymbol())this._timePoint[0].price=e.entryPrice,delete e.entryPrice;this.properties().merge(e)}else super.restoreExternalState(e)}_changeEntryPoint(e){var t=this.properties().stopPrice.value(),i=this.properties().targetPrice.value(),s=1/this._model.mainSeries().base(),r=Math.min(t,i)+s,n=Math.max(t,i)-s;e.price=Math.max(r,Math.min(n,this._roundPrice(e.price))),super.setPoint(0,e),this.properties().stopPrice.setValue(t),this.properties().targetPrice.setValue(i)}setPoint(e,t,i){if(this.isActualSymbol()){switch(this._muteSyncLineStyle(),e){case 0:this._changeEntryPoint(t);break;case 2:this.properties().stopPrice.setValue(this.preparseStopPrice(t.price));break;case 3:this.properties().targetPrice.setValue(this.preparseProfitPrice(t.price));break;case 1:t.price=this._roundPrice(t.price),super.setPoint(1,t),this.recalculate()}this._unmuteSyncLineStyleWithoutApplyingChanges(),this.syncPriceLevels()}}getPoint(e){switch(e){case 0:return this._points[0];case 1:return{index:this._points[1].index,price:this._points[0].price};case 2:return{index:this._points[0].index,price:this.stopPrice()};case 3:return{index:this._points[0].index,price:this.profitPrice()}}return null}setPoints(e){this._muteSyncLineStyle(),super.setPoints(e),this.recalculate(),this._unmuteSyncLineStyleWithoutApplyingChanges(),this.syncPriceLevels()}syncPriceLevels(){if(this.linkKey().value()){var e=this.properties(),t={entryPrice:e.entryPrice.value(),stopLevel:e.stopLevel.value(), -profitLevel:e.profitLevel.value()};n.changeLineStyle({linkKey:this.linkKey().value(),state:t,model:this._model})}}pointsCount(){return 1}name(){return"Risk/Reward"}addPoint(e){e.price=this._roundPrice(e.price),super.addPoint(e,null,!0);var t={price:e.price,index:this._getClosePointIndex(e.index)};super._addPointIntenal(t,null,!0);var i=this.calculateActualEntry(e,t);i&&(super._addPointIntenal(i,null,!0),(t=this.findClosePoint(i,t))&&super._addPointIntenal(t,null,!0));return this._lastPoint=null,this.normalizePoints(),this.createServerPoints(),!0}setOwnerSource(e){super.setOwnerSource(e),this._model.mainSeries().symbolInfo()&&(this._recalculateAmount(),this._recalculateRiskSize(),this._recalculateQty())}_roundPrice(e){var t=this._model.mainSeries().base();return Math.round(e*t)/t}recalculate(){if(0!==this.points().length){var e=this.properties().targetPrice.value(),t=this.properties().stopPrice.value(),i=[this._points[0],this._points[1]],s=this.calculateActualEntry(this.points()[0],this.points()[1]);if(s){i.push(s);var r=this.findClosePoint(s,this.points()[1]);r&&i.push(r)}this._points=i,e!==this.properties().targetPrice.value()&&this.properties().targetPrice._listeners.fire(this.properties().targetPrice),t!==this.properties().stopPrice.value()&&this.properties().stopPrice._listeners.fire(this.properties().stopPrice)}}start(){super.start(),this.recalculate()}startMoving(e,t,i){e.logical.price=this._roundPrice(e.logical.price),super.startMoving(e,t,i)}move(e,t,i){e.logical.price=this._roundPrice(e.logical.price),super.move(e,t,i),this.recalculate(),this._entryPriceAxisView.update()}_correctPoints(e,t){return!!this.isActualSymbol()&&r.prototype._correctPoints.call(this,[e[0],e[1]],t)}entryPrice(){return this.points()[0].price}findClosePoint(e,t){for(var i=this._model.mainSeries().bars(),r=s(i.firstIndex()),n=Math.max(e.index,r),o=s(i.lastIndex()),a=Math.min(o,t.index),l=n;l<=a;l++){var c=i.valueAt(l);if(null!==c){var h=this.checkStopPrice(c);if(null!=h)return{index:l,price:h}}}return null}calculateActualEntry(e,t){var i=this._model.mainSeries().bars();if(i.isEmpty())return null;for(var r=s(i.firstIndex()),n=Math.max(e.index,r),o=e.price,a=s(i.lastIndex()),l=Math.min(a,t.index),c=n;c<=l;c++){var h=i.valueAt(c);if(null!==h&&h[TradingView.HIGH_PLOT]>=o&&h[TradingView.LOW_PLOT]<=o)return{index:c,price:o}}return null}axisPoints(){if(!this._points[a.ActualEntry])return[];var e=this._points[a.ActualEntry],t=null;if(4===this._points.length)t=this._points[a.ActualClose];else{var i=this.lastBarData();if(!i)return[];t={index:i.index,price:i.closePrice}}return[e,t]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,18736))).RiskRewardDefinitionsViewModel}template(){var e=this.properties(),t=r.prototype.template.call(this);return t.stopLevel=e.stopLevel.value(),t.profitLevel=e.profitLevel.value(),t}_applyTemplateImpl(e){delete e.targetPrice,delete e.stopPrice,delete e.entryPrice,super._applyTemplateImpl(e);var t=this.properties() -;void 0!==e.stopLevel&&t.stopLevel.setValue(e.stopLevel),void 0!==e.profitLevel&&t.profitLevel.setValue(e.profitLevel)}getOrderTemplate(){return null}_propertiesStateExclusions(){return["entryPrice","stopPrice","targetPrice"]}static _configureProperties(e){r._configureProperties(e),e.addExclusion("stopLevel"),e.addExclusion("profitLevel"),e.addExclusion("stopPrice"),e.addExclusion("targetPrice"),e.addExclusion("entryPrice")}_getClosePointIndex(e){var t=this._model.timeScale(),i=Math.round(t.width()/t.barSpacing());return e+Math.max(3,Math.round(.15*i))}}d.version=2;class u extends d{constructor(e,t,i,s){super(e,t||u.createProperties(),i,s);var r=this.properties();r.entryPrice.subscribe(this,this._recalculateQty),r.stopPrice.subscribe(this,this._recalculateQty),r.riskSize.subscribe(this,this._recalculateQty),r.entryPrice.subscribe(this,this._recalculateAmount),r.profitLevel.subscribe(this,this._recalculateAmount),r.stopLevel.subscribe(this,this._recalculateAmount),r.accountSize.subscribe(this,this._recalculateAmount),r.riskSize.subscribe(this,this._recalculateAmount),r.qty.subscribe(this,this._recalculateAmount)}_recalculateQty(){if(0!==this.points().length){var e=this.properties(),t=e.entryPrice.value(),i=e.stopPrice.value(),s=e.riskSize.value(),r=this._model.mainSeries().pointValue(),n=s/(Math.abs(i-t)*r);e.qty.setValue(n)}}_recalculateAmount(){if(0!==this.points().length){var e=this.properties(),t=e.accountSize.value(),i=e.entryPrice.value(),s=e.qty.value(),r=e.stopPrice.value(),n=e.targetPrice.value(),o=this._model.mainSeries().pointValue(),a=this._roundValue(t+(i-n)*s*o),l=this._roundValue(t-(r-i)*s*o);e.amountTarget.setValue(a),e.amountStop.setValue(l)}}name(){return"Risk/Reward short"}stopPrice(){return this.entryPrice()+this.properties().stopLevel.value()/this._model.mainSeries().base()}profitPrice(){return this.entryPrice()-this.properties().profitLevel.value()/this._model.mainSeries().base()}preparseStopPrice(e){e=this._roundPrice(e);var t=this.entryPrice()+1/this._model.mainSeries().base();return Math.max(e,t)}preparseProfitPrice(e){e=this._roundPrice(e);var t=this.entryPrice()-1/this._model.mainSeries().base();return Math.min(e,t)}checkStopPrice(e){var t=this.stopPrice(),i=this.profitPrice();return e[TradingView.HIGH_PLOT]>=t?this.stopPrice():e[TradingView.LOW_PLOT]<=i?this.profitPrice():null}_orderSide(){throw new Error("not supported")}static createProperties(e){var t=new o("linetoolriskrewardshort",e);return u._configureProperties(t),t}static _configureProperties(e){d._configureProperties(e)}}class p extends d{constructor(e,t,i,s){super(e,t||p.createProperties(),i,s);var r=this.properties();r.entryPrice.subscribe(this,this._recalculateQty),r.stopPrice.subscribe(this,this._recalculateQty),r.riskSize.subscribe(this,this._recalculateQty),r.entryPrice.subscribe(this,this._recalculateAmount),r.profitLevel.subscribe(this,this._recalculateAmount),r.stopLevel.subscribe(this,this._recalculateAmount),r.accountSize.subscribe(this,this._recalculateAmount),r.riskSize.subscribe(this,this._recalculateAmount), -r.qty.subscribe(this,this._recalculateAmount)}_recalculateQty(){if(0!==this.points().length){var e=this.properties(),t=e.entryPrice.value(),i=e.stopPrice.value(),s=e.riskSize.value(),r=this._model.mainSeries().pointValue(),n=s/(Math.abs(t-i)*r);e.qty.setValue(n)}}_recalculateAmount(){if(0!==this.points().length){var e=this.properties(),t=e.accountSize.value(),i=e.entryPrice.value(),s=e.qty.value(),r=e.stopPrice.value(),n=e.targetPrice.value(),o=this._model.mainSeries().pointValue(),a=this._roundValue(t+(n-i)*s*o),l=this._roundValue(t-(i-r)*s*o);e.amountTarget.setValue(a),e.amountStop.setValue(l)}}stopPrice(){return this.entryPrice()-this.properties().stopLevel.value()/this._model.mainSeries().base()}profitPrice(){return this.entryPrice()+this.properties().profitLevel.value()/this._model.mainSeries().base()}calculatePL(e){return e-this.entryPrice()}preparseStopPrice(e){e=this._roundPrice(e);var t=this.entryPrice()-1/this._model.mainSeries().base();return Math.min(e,t)}preparseProfitPrice(e){e=this._roundPrice(e);var t=this.entryPrice()+1/this._model.mainSeries().base();return Math.max(e,t)}checkStopPrice(e){var t=this.stopPrice(),i=this.profitPrice();return e[TradingView.LOW_PLOT]<=t?this.stopPrice():e[TradingView.HIGH_PLOT]>=i?this.profitPrice():null}name(){return"Risk/Reward long"}_orderSide(){throw new Error("not supported")}static createProperties(e){var t=new o("linetoolriskrewardlong",e);return p._configureProperties(t),t}static _configureProperties(e){d._configureProperties(e)}}t.LineToolRiskRewardLong=p,t.LineToolRiskRewardShort=u},61272:(e,t,i)=>{"use strict";var s=i(86441).Point,r=i(4652).distanceToLine,n=i(89857).LineDataSource,o=i(88564).DefaultProperty,a=i(37865).LineToolColorsProperty;class l extends n{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),i.e(1583).then(i.t.bind(i,33261,19)).then(({RotatedRectanglePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}startChanging(e,t){if(super.startChanging(e,t),0===e||1===e){var i=this._getPaneViews()[0],s=i._points[0],n=i._points[1],o=i._points[2];this._distance=r(s,n,o).distance}}setPoint(e,t,i){if(super.setPoint(e,t,i),0===e||1===e){var r=this._getPaneViews()[0];r.update();var n=r._points[0],o=r._points[1].subtract(n),a=new s(o.y,-o.x).normalized().scaled(this._distance),l=n.add(a),c=this.screenPointToPoint(l);this._points[2]=c}}endChanging(e,t){delete this._distance,super.endChanging(e,t)}pointsCount(){return 3}name(){return"Rotated Rectangle"}hasEditableCoordinates(){return!1}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,24965))).GeneralFiguresDefinitionsViewModel}_snapTo45DegreesAvailable(){return!0}static createProperties(e){var t=new o("linetoolrotatedrectangle",e);return l._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e),e.addChild("linesColors",new a([e.color]))}}t.LineToolRotatedRectangle=l},98390:(e,t,i)=>{"use strict";var s=i(34580).LevelsProperty,r=i(40100).LineToolPitchfork;class n extends r{constructor(e,t,i,s){ -super(e,t||n.createProperties(),i,s)}name(){return"Modified Schiff Pitchfork"}static createProperties(e){var t=new s("linetoolschiffpitchfork",e,!1,{range:[0,8]});return n._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e)}}t.LineToolSchiffPitchfork=n},98225:(e,t,i)=>{"use strict";var s=i(34580).LevelsProperty,r=i(40100).LineToolPitchfork;class n extends r{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Schiff Pitchfork"}static createProperties(e){var t=new s("linetoolschiffpitchfork2",e,!1,{range:[0,8]});return n._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e)}}t.LineToolSchiffPitchfork2=n},52827:(e,t,i)=>{"use strict";i.d(t,{LineToolSignpost:()=>f});var s=i(28353),r=i(88564),n=i(89857),o=i(2015),a=i.n(o);class l extends(a()){constructor(e){super(),this._source=e,e.pointAdded().subscribe(this,()=>this.listeners().fire(this)),e.pointChanged().subscribe(this,()=>this.listeners().fire(this))}value(){const e=this._source.properties().childs().position.value();return parseFloat(e.toFixed(2))}setValue(e){this._source.properties().childs().position.setValue(e),this._source.model().updateSource(this._source),this.listeners().fire(this),this._source.syncMultichartState({pricesChanged:!1,indexesChanged:!1})}}var c=i(38015);class h extends c.LineDataSourcePointIndexProperty{constructor(e,t){super(e,t),this._source=e}_setPointImpl(e){this._source.setPointAndChangeIndex(this._pointIndex,e)}}var d=i(37865),u=i(88537),p=i(70581),_=i(85733);class m extends n.LineDataSource{constructor(){super(...arguments),this._startMovingAnchorY=NaN}priceSource(){return this.ownerSource()}addPoint(e,t,i){return super.addPoint(this._updatePositionAndCorrectPoint(e),t,i)}setPoint(e,t,i){super.setPoint(e,this._updatePositionAndCorrectPoint(t,!this.isPhantom()&&!this._allowChangeAnchorHorizontally()),i),this._syncPosition()}setPointAndChangeIndex(e,t,i){super.setPoint(e,this._updatePositionAndCorrectPoint(t,!1),i),this._syncPosition()}startMoving(e,t,i,s){s||(this._startMovingAnchorY=(0,u.ensureNotNull)(this._anchorYCoordinate())),super.startMoving(e,t,i)}move(e,t,i,s){var r;const n=(0,u.ensureDefined)((0,u.ensureNotNull)(this.startMovingPoint()).logical),o=(0,u.ensureDefined)(e.logical);if(!s&&0===t){const e=this._points[0],t=o.index-n.index,i=(0,u.ensureNotNull)(this.priceScale()),s=(0,u.ensure)(null===(r=this.ownerSource())||void 0===r?void 0:r.firstValue()),a=i.priceToCoordinate(o.price,s)-i.priceToCoordinate(n.price,s),l=this._startMovingAnchorY+a,c=i.coordinateToPrice(l,s);this._updatePositionAndCorrectPoint({index:e.index+t,price:c})}super.move(e,t,i),s||this._syncPosition()}_allowChangeAnchorHorizontally(){return!1}_updatePositionAndCorrectPoint(e,t){t&&(e.index=this._points[0].index);const i=this.priceSource();if(null===i)return e;const s=i.priceScale(),r=i.firstValue();if(null===s||s.isEmpty()||null===r)return e;const n=s.height();let o=n/2,a=e.price>=s.coordinateToPrice(o,r)?1:-1;const l=this._model.mainSeries();if(i===l){ -const t=l.data().search(this._baseSeriesIndexForPoint(e));if(null!==t){const i=(0,p.seriesPrice)(l,t,-1),n=(0,p.seriesPrice)(l,t,1);a=e.price>=i?1:-1,o=s.priceToCoordinate(1===a?n:i,r),e.price=1===a?Math.max(n,e.price):e.price}}const c=1===(-1===a!==s.isInverted()?-1:1)?o:n-o,h=s.priceToCoordinate(e.price,r),d=Math.min(n,Math.abs(h-o)),u=Math.max(0,Math.min(100,100*d/c))*a;return this.properties().childs().position.setValue(u),e}_baseSeriesIndexForPoint(e){return e.index}_syncPosition(){const e=this.linkKey().value();if(null!==e){const t={position:this.properties().childs().position.value()};(0,_.changeLineStyle)({linkKey:e,state:t,model:this._model})}}_anchorYCoordinate(){const e=this.priceSource();if(null===e)return null;const t=e.priceScale(),i=e.firstValue();if(null===t||t.isEmpty()||null===i)return null;const s=this._model.mainSeries(),r=this.customEvent();if(null===r)return null;let n=null;if(e===s&&(n=(0,p.seriesBasePosition)(s,r)),null===n&&(n=(0,p.noDataBasePosition)(r,t,i)),null===n)return null;const o=r.position(),a=t.priceToCoordinate(n.price,i);return(0,p.positionToCoordinate)(o,t.height(),a,(0,p.positionVisualDirection)(o,t.isInverted()))}}var g=i(72077);class f extends m{constructor(e,t,s,r){super(e,null!=t?t:f.createProperties(),s,r),this._image=null,this._currentImageURL=null,this._imageReady=!1,this._updateImage(),this.properties().childs().emoji.subscribe(this,()=>this._updateImage()),i.e(1583).then(i.bind(i,74328)).then(t=>{this._setPaneViews([new t.SignpostPaneView(this,e)])})}pointsCount(){return 1}name(){return"Signpost"}customEvent(){return{index:()=>{var e,t;return null!==(t=null===(e=this.points()[0])||void 0===e?void 0:e.index)&&void 0!==t?t:null},position:()=>this.properties().childs().position.value()}}image(){return this._imageReady&&this.properties().childs().showImage.value()?this._image:null}showInObjectTree(){return!this.isPhantom()&&super.showInObjectTree()}isPhantom(){return this._model.isPhantomLine(this)}clonePositionOffset(){return{barOffset:1,xCoordOffset:0,yCoordOffset:0}}template(){const e=super.template(),t=this.properties().childs();return e.text=t.text.value(),e.position=t.position.value(),e}static createProperties(e){const t=new r.DefaultProperty("linetoolsignpost",e);return f._configureProperties(t),t.hasChild("text")||t.addChild("text",new(a())((0,s.t)("Text"))),t.hasChild("position")||t.addChild("position",new(a())(50)),t.addExclusion("text"),t.addExclusion("position"),t.addChild("backgroundsColors",new d.LineToolColorsProperty([t.childs().plateColor])),t}_createPointProperty(e){super._createPointProperty(e);const t=this._pointsProperty.childs().points[e];t.removeProperty("price"),t.removeProperty("bar"),t.addChild("price",new l(this)),t.addChild("bar",new h(this,0))}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text),this.properties().childs().position.setValue(e.position)}_getPropertyDefinitionsViewModelClass(){ -return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,30882)).then(e=>e.SignpostDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e)}_updateImage(){const e=this._imageURL();if(this._currentImageURL!==e&&(this._currentImageURL=e,this._image=null,this._imageReady=!1,null!==this._currentImageURL)){const e=new Image;this._image=e,e.onload=()=>{this._imageReady=!0,this._model.updateSource(this),e.onload=null},e.crossOrigin="anonymous",e.src=this._currentImageURL}}_imageURL(){const e=this.properties().childs().emoji.value();return(0,g.getTwemojiUrl)(e,"png")||null}}f.supportPhantomMode=!0},15718:(e,t,i)=>{"use strict";i.d(t,{LineToolSineLine:()=>n});var s=i(88564),r=i(89857);class n extends r.LineDataSource{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),i.e(1583).then(i.bind(i,85)).then(e=>{this._setPaneViews([new e.SineLinePaneView(this,this._model)])})}pointsCount(){return 2}name(){return"Sine Line"}static createProperties(e){const t=new s.DefaultProperty("linetoolsineline",e);return n._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,66819))).CyclicAndSineLinesPatternDefinitionsViewModel}static _configureProperties(e){r.LineDataSource._configureProperties(e)}}},51934:(e,t,i)=>{"use strict";i.d(t,{StudyLineDataSource:()=>v});var s=i(88537),r=i(80643),n=i(71053),o=i(89857),a=i(88564),l=i(67072),c=i.n(l),h=i(54376),d=i(33266),u=i(27982),p=i(8671),_=i(66101),m=i(10480),g=i(65862),f=i(33291);class v extends o.LineDataSource{constructor(e,t,s,r,n,o){super(e,r,n,o),this._indexes=null,this._inputs=null,this._definitionsViewModel=null,this._pointsetPoints=null,this._loadedPlots=null,this._loadedGraphics=null,this._beingCreatedPaneView=null,this._anchorsPaneView=null,this._alignerCache=null,Promise.all([i.e(1583).then(i.bind(i,15788)),i.e(1583).then(i.bind(i,77557))]).then(t=>{const{LineToolBeingCreatedPaneView:i}=t[0],{StudyLineDataSourceAnchorsPaneView:s}=t[1];this._beingCreatedPaneView=new i(this,e),this._anchorsPaneView=new s(this,this.model()),this._model.lightUpdate()}),this._metaInfo=t,this._dataSource=new u.StudyDataSource(e.chartApi(),e.mainSeries().seriesSource(),s,t),this._dataSource.dataCleared().subscribe(this,this._onDataCleared),this._dataSource.dataUpdated().subscribe(this,this._onDataUpdated)}destroy(){this._dataSource.dataUpdated().unsubscribe(this,this._onDataUpdated),this._dataSource.dataCleared().unsubscribe(this,this._onDataCleared),this._dataSource.destroy(),null!==this._definitionsViewModel&&(this._definitionsViewModel.destroy(),this._definitionsViewModel=null),this._unsubscribeApplyInputsOnSeriesCompleted(),this._isDestroyed=!0,super.destroy()}stop(){super.stop(),this._isDestroyed||(this._dataSource.stop(),this.clearData())}start(){super.start(),this._isDestroyed||null===this._inputs||this._dataSource.start()}metaInfo(){return this._metaInfo}graphicsInfo(){return this._metaInfo.graphics}series(){return this._model.mainSeries()}translatedType(){ -return this._metaInfo.description}name(){return this._metaInfo.description}studyId(){return this._metaInfo.id}setPoint(e,t,i){super.setPoint(e,this._preparePoint(t,i))}move(e){}clearData(){this._clearAllDataExceptPointsetPoints(),this._pointsetPoints=null,this.updateAllViews((0,f.dataSourceChangeEvent)(this.id()))}data(){return this.plots()}plots(){return this._loadedPlots||this._dataSource.plots()}graphics(){return this._loadedGraphics||this._dataSource.graphics()}firstValue(){return this._model.mainSeries().firstValue()}state(e){const t=super.state(e);let i;this.metaInfo()instanceof c()?i=this.metaInfo().state():(i=(0,r.clone)(this.metaInfo()),i.id=c().parseIdString(i.id+(i.version?"-"+i.version:"")).fullId);const s={...t,metaInfo:i};return e&&(s.data=this.plots().state(),s.nonseriesindexes=this._indexes,s.graphics=(0,h.saveStudyGraphics)(this.graphics())),s}restoreData(e){var t;void 0!==e.data&&(this._loadedPlots=new n.PlotList((0,p.studyPlotFunctionMap)(this._metaInfo),p.studyEmptyPlotValuePredicate),this._loadedPlots.restoreState(e.data)),this._indexes=null!==(t=e.nonseriesindexes)&&void 0!==t?t:this._indexes,this._loadedGraphics=e.graphics?(0,h.loadStudyGraphics)(e.graphics):this._loadedGraphics}getPropertyDefinitionsViewModel(){return null===this._definitionsViewModel?this._getPropertyDefinitionsViewModelClass().then(e=>null===e||this._isDestroyed?null:(null===this._definitionsViewModel&&(this._definitionsViewModel=new e(this._model.undoModel(),this)),this._definitionsViewModel)):Promise.resolve(this._definitionsViewModel)}paneViews(e){let t=[];if(this.isSourceHidden())return t;if(this._isReady()&&this._changeStatesStack.isEmpty()){const i=super.paneViews(e);null!==i&&(t=t.concat(i))}else null!==this._beingCreatedPaneView&&t.push(this._beingCreatedPaneView);return null!==this._anchorsPaneView&&t.push(this._anchorsPaneView),t}propertiesChanged(e){super.propertiesChanged(e),this._onStudyInputsMayChange()}dataAndViewsReady(){return super.dataAndViewsReady()&&this._isReady()}endChanging(e,t){const i=super.endChanging(e,t);return i.indexesChanged?this.clearData():this._updateAnchorsPrice(!0),i}moveData(e){this._dataSource.moveData(e)}restorePoints(e,t,i){super.restorePoints(e,t,i),this._updateAnchorsPrice(!0)}realign(){super.realign(),null===this._model.mainSeries().symbolInfo()&&(this._alignerCache=null)}static createPropertiesFromStudyMetaInfoAndState(e,t,i,s){const r=(0,_.prepareStudyPropertiesForLoadChart)(e,t,i,null,s);return v._configureProperties(r),r}_studyId(){return this._dataSource.studyId()}_isReady(){return!0}_updateAllPaneViews(e){var t,i;super._updateAllPaneViews(e),null===(t=this._beingCreatedPaneView)||void 0===t||t.update(),null===(i=this._anchorsPaneView)||void 0===i||i.update(e)}_getPointTime(e,t){const i=e.index,s=this._model.timeScale().indexToTimePoint(i);if(null!==s)return s;if(t||void 0===e.time)return null;const r=this._model.mainSeries().symbolInfo();if(null===r)return null;let n=this._model.properties().childs().timezone.value();"exchange"===n&&(n=r.timezone);const o=(0,m.cal_to_utc)((0, -m.get_timezone)(n),e.time);return this._getStartBarAligner()(o)/1e3}_updateAnchorsPrice(e){}_onPointsetUpdated(e){super._onPointsetUpdated(e),this._pointsetPoints=this._points.map(e=>({price:e.price,index:e.index,time:e.time})),this._onStudyInputsMayChange()}_onDataCleared(){this.updateAllViews((0,f.dataSourceChangeEvent)(this.id(),void 0,!0)),this._model.updateSource(this)}_onDataUpdated(e,t,i){var s;this._updateAnchorsPrice(),this.updateAllViews((0,f.dataSourceChangeEvent)(this.id(),null===(s=e[0])||void 0===s?void 0:s.index)),this._model.updateSource(this)}_onStudyInputsMayChange(){let e=null;if(null!==this._pointsetPoints&&this._pointsetPoints.length===this.pointsCount()&&(e=this._studyInputs(this._pointsetPoints),null===e&&(this._clearAllDataExceptPointsetPoints(),this.updateAllViews((0,f.dataSourceChangeEvent)(this.id())))),null!==e){const t=this.metaInfo().inputs.map(e=>e.id),i=Object.keys(e);for(const s of i)t.includes(s)||delete e[s]}this._areInputsEqual(this._inputs,e)||this._applyStudyInputs(e)}_preparePoint(e,t){return super._preparePoint(this._alignPointToRangeOfActualData(e),t)}_getPropertyDefinitionsViewModelClass(){return Promise.resolve(null)}_subscribeApplyInputsOnSeriesCompleted(){this._unsubscribeApplyInputsOnSeriesCompleted(),this._model.mainSeries().dataEvents().completed().subscribe(this,()=>this._onStudyInputsMayChange(),!0)}_unsubscribeApplyInputsOnSeriesCompleted(){this._model.mainSeries().dataEvents().completed().unsubscribeAll(this)}_onInputsChanged(){0}static _createPropertiesFromStudyIdAndState(e,t){const i=c().getStudyPropertyRootNameById(e),s=new a.DefaultProperty(i,t);return v._configureProperties(s),s}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.removeExclusion("intervalsVisibilities")}_areInputsEqual(e,t){return null===t?null===e:null!==e&&(0,d.areStudyInputsEqual)(this._metaInfo.inputs,e,t)}_applyStudyInputs(e){const t=this._inputs;this._inputs=e,null!==e&&(this._unsubscribeApplyInputsOnSeriesCompleted(),this._dataSource.setInputs(e),null===t&&this.isStarted()&&!this._dataSource.isStarted()&&this._dataSource.start()),this._onInputsChanged()}_clearAllDataExceptPointsetPoints(){this._inputs=null,this._dataSource.clearData(),this._loadedPlots=null,this._indexes=null,this._loadedGraphics=null}_getStartBarAligner(){const e=this._model.mainSeries().interval();return null!==this._alignerCache&&this._alignerCache.resolution===this._model.mainSeries().interval()||(this._alignerCache={resolution:e,aligner:(0,g.createTimeToBarTimeAligner)(e,(0,s.ensureNotNull)(this._model.mainSeries().symbolInfo()))}),this._alignerCache.aligner}}},74971:(e,t,i)=>{"use strict";i.d(t,{LineToolText:()=>u,LineToolTextAbsolute:()=>p});var s=i(88537),r=i(86441),n=i(28353),o=i(89857),a=i(2015),l=i.n(a),c=i(88564),h=i(37865),d=i(33291);class u extends o.LineDataSource{constructor(e,t,s,r){const n=t||u.createProperties();super(e,n,s,r),this._barSpacing=e.timeScale().barSpacing(),this._recalculatePointsOnCenter=!1,i.e(1583).then(i.bind(i,44074)).then(({TextPaneView:t})=>{ -const i=this._recalculatePointsOnCenter?(e,t)=>{this._recalculatePointsOnCenter&&this._recalculateCenterPosition(e,t)}:void 0;this._setPaneViews([new t(this,e,void 0,void 0,void 0,void 0,void 0,i)])})}centerPosition(){this._recalculatePointsOnCenter=!0}setPoint(e,t,i){const s=this.properties().childs();let r;if(1===e&&s.wordWrapWidth.value()){const e=this.model().timeScale();r=this.isFixed()?this.fixedPoints()[0].x:e.indexToCoordinate(this.points()[0].index);const i=e.indexToCoordinate(t.index)-r-~~(s.fontsize.value()/6);if(!isFinite(i))return;s.wordWrapWidth.setValue(Math.max(100,i))}}pointsCount(){return 1}name(){return"Text"}setPriceScale(e){super.setPriceScale(e),e&&e.priceRange()&&(this._priceDencity=e.height()/(0,s.ensureNotNull)(e.priceRange()).length(),this._isPriceDencityLog=e.isLog())}restoreSize(){const e=(0,s.ensureNotNull)(this.priceScale());this._barSpacing=this.model().timeScale().barSpacing(),this._priceDencity=e.height()/(0,s.ensureNotNull)(e.priceRange()).length(),this.redraw((0,d.dataSourceChangeEvent)(this.id()))}redraw(e){this.updateAllViews(e),this._model.updateSource(this)}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}state(e){const t=super.state(e);return e&&(t.state.fixedSize=!1),t}barSpacing(){return this._barSpacing}priceDencity(){return this._priceDencity}isPriceDencityLog(){return this._isPriceDencityLog}hasEditableCoordinates(){return!1}static createProperties(e){const t=new c.DefaultProperty("linetooltext",e);return u._configureProperties(t),t}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,99734)).then(e=>e.TextDefinitionsViewModel)}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(l())((0,n.t)("Text"))),e.addChild("linesColors",new h.LineToolColorsProperty([e.childs().borderColor])),e.addChild("textsColors",new h.LineToolColorsProperty([e.childs().color])),e.addExclusion("text"),e.addExclusion("linesColors"),e.addExclusion("textsColors")}_recalculateCenterPosition(e,t){const i=this.isFixed()?this.fixedPoints()[0]:(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),n=new r.Point(i.x-e/2,i.y-t/2),o=(0,s.ensureNotNull)(this.screenPointToPoint(n));this.setPoints([o]),this.normalizePoints(),this.createServerPoints(),this.redraw((0,d.dataSourceChangeEvent)(this.id()))}}class p extends u{constructor(e,t){super(e,t||p.createProperties())}name(){return"Anchored Text"}hasEditableCoordinates(){return!1}isFixed(){return!0}static createProperties(e){const t=new c.DefaultProperty("linetooltextabsolute",e);return p._configureProperties(t),t}static _configureProperties(e){u._configureProperties(e)}}},6980:(e,t,i)=>{"use strict";i.d(t,{LineToolThreeDrivers:()=>o});var s=i(88564),r=i(89857),n=i(37865);class o extends r.LineDataSource{constructor(e,t,s,r){const n=t||o.createProperties();super(e,n,s,r), -i.e(1583).then(i.bind(i,88993)).then(t=>{this._setPaneViews([new t.LineToolThreeDrivesPaneView(this,e)])})}pointsCount(){return 7}name(){return"Three Drives Pattern"}static createProperties(e){const t=new s.DefaultProperty("linetoolthreedrivers",e);return o._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,98890)).then(e=>e.PatternWithoutBackgroundDefinitionsViewModel)}static _configureProperties(e){r.LineDataSource._configureProperties(e),e.addChild("linesColors",new n.LineToolColorsProperty([e.childs().color])),e.addChild("textsColors",new n.LineToolColorsProperty([e.childs().textcolor])),e.addChild("linesWidths",new n.LineToolWidthsProperty([e.childs().linewidth])),e.hasChild("backgroundsColors")&&e.removeProperty("backgroundsColors")}}},38513:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),i.e(1583).then(i.t.bind(i,59905,19)).then(({TimeCyclesPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 2}name(){return"Time Cycles"}setPoint(e,t,i){var s=Object.assign({},t),r=this._points[0],n=this._points[1];r.price=s.price,n.price=s.price,this._points[e]=s,this.normalizePoints()}addPoint(e,t,i){var r=s.prototype.addPoint.call(this,e,t,!0);if(r){var n=this._points[0];this._points[1].price=n.price,i||(this.normalizePoints(),this.createServerPoints())}return r}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,3956))).TimeCyclesPatternDefinitionsViewModel}static createProperties(e){var t=new r("linetooltimecycles",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolTimeCycles=n},2587:(e,t,i)=>{"use strict";const s=i(89857).LineDataSource,r=i(20165).alignToStep;class n extends s{constructor(e,t){super(e,t),this.customization.forcePriceAxisLabel=!0,this.customization.disableErasing=!0,this.customization.showInObjectsTree=!1,this.setSelectionEnabled(!1)}isSynchronizable(){return!1}pointsCount(){return n.POINTS_COUNT}hasContextMenu(){return!1}state(){return null}startMoving(){s.prototype.startMoving.apply(this,arguments),this._cursorMoved=!1}endMoving(){s.prototype.endMoving.apply(this,arguments),this._cursorMoved=!1}_correctPoints(e,t){this._currentMovingPoint&&this._startMovingPoint?this._currentMovingPoint.logical.price-this._startMovingPoint.logical.price&&(this._cursorMoved=!0):this._cursorMoved=!1;for(var i=1/this.priceScale().mainSource().base(),s=0;s{"use strict";var s=i(2015),r=i(86441).Point,n=i(89857).LineDataSource,o=i(88564).DefaultProperty;class a extends s{constructor(e){super(),this._lineSource=e}value(){var e=180*this._lineSource._angle/Math.PI;return Math.round(e)}setValue(e){var t=e*Math.PI/180;this._lineSource._angle=t;var i=this._lineSource.pointToScreenPoint(this._lineSource.points()[0]),s=Math.cos(this._lineSource._angle),n=-Math.sin(this._lineSource._angle),o=new r(s,n),a=i.addScaled(o,this._lineSource._distance),l=this._lineSource.screenPointToPoint(a);this._lineSource._points[1]=l,this._lineSource._model.updateSource(this._lineSource),this._lineSource.updateAllViews(),this._lineSource._model.updateSource(this._lineSource)}}class l extends n{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),this._properties.addChild("angle",new a(this)),i.e(1583).then(i.t.bind(i,74108,19)).then(({TrendAnglePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}isSynchronizable(){return!1}pointsCount(){return 2}name(){return"Trend Angle"}_calculateAngle(){var e=this.pointToScreenPoint(this.points()[0]),t=this.pointToScreenPoint(this.points()[1]),i=t.subtract(e);i.length()>0?(i=i.normalized(),this._angle=Math.acos(i.x),i.y>0&&(this._angle=-this._angle),this._distance=t.subtract(e).length()):delete this._angle,this.properties().hasOwnProperty("angle")&&this.properties().angle.listeners().fire(this.properties().angle)}addPoint(e,t){var i=n.prototype.addPoint.call(this,e,t);return i&&this._calculateAngle(),i}setLastPoint(e,t){var i=super.setLastPoint(e,t);return this.points().length>1&&this._calculateAngle(),i}axisPoints(){if(this.points().length<2)return[];var e=[this.points()[0]],t=this.pointToScreenPoint(this.points()[0]),i=Math.cos(this._angle)*this._distance,s=-Math.sin(this._angle)*this._distance,n=t.add(new r(i,s)),o=this.screenPointToPoint(n);return e.push(o),e}setPoint(e,t,i){super.setPoint(e,t,i),this.points().length>1&&1===e&&this._calculateAngle()}restoreData(e){this._angle=e.angle,this._distance=e.distance}state(e){var t=n.prototype.state.call(this,e);return t.angle=this._angle,t.distance=this._distance,t}cloneData(e){this._angle=e._angle,this._distance=e._distance}canHasAlert(){return!0}_getAlertPlots(){return[this._linePointsToAlertPlot(this._points,null,this.properties().extendLeft.value(),this.properties().extendRight.value())]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,38909))).TrendAngleDefinitionsViewModel}_snapTo45DegreesAvailable(){return!0}static createProperties(e){var t=new o("linetooltrendangle",e);return l._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e)}}t.LineToolTrendAngle=l},25861:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line")) -;class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this.version=d.version,i.e(1583).then(i.t.bind(i,80741,19)).then(({TrendBasedFibExtensionPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 3}name(){return"Trend-Based Fib Extension"}migrateVersion(e,t,i){1===e&&this.properties().extendLines.setValue(!0)}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}static createProperties(e){var t=new o("linetooltrendbasedfibextension",e,!1,{range:[0,8]});return d._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,34670))).FibDrawingsWith24LevelsDefinitionsViewModel}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("trendline").child("linewidth"),e.child("levelsStyle").child("linewidth")],i=[e.child("trendline").child("color")],s=1;s<=d.LevelsCount;s++)i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}fibLevelsBasedOnLogScale(){return this.properties().fibLevelsBasedOnLogScale.value()&&this.priceScale().isLog()}}d.version=2,d.LevelsCount=24,t.LineToolTrendBasedFibExtension=d},6245:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this.version=d.version,i.e(1583).then(i.t.bind(i,78343,19)).then(({TrendBasedFibTimePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 3}name(){return"Trend-Based Fib Time"}migrateVersion(e,t,i){}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,42882))).TrendBasedFibTimeDefinitionsViewModel}static createProperties(e){var t=new o("linetooltrendbasedfibtime",e,!1,{range:[1,11]});return d._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("trendline").child("linewidth")],i=[e.child("trendline").child("color")],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=11,d.version=1,t.LineToolTrendBasedFibTime=d},57649:(e,t,i)=>{"use strict";var s=i(2015),r=i(89857).LineDataSource,n=i(22474).LineToolPriceAxisView,o=i(88564).DefaultProperty;class a extends r{constructor(e,t,s,r){super(e,t||a.createProperties(),s,r),this._trendLinePaneView=null,i.e(1583).then(i.t.bind(i,38743,19)).then(({TrendLinePaneView:e})=>{this._trendLinePaneView=new e(this,this._model),this._setPaneViews([this._trendLinePaneView])})}dataAndViewsReady(){ -return r.prototype.dataAndViewsReady.call(this)&&this._trendLinePaneView&&this._trendLinePaneView.iconsReady()}stop(){super.stop()}pointsCount(){return 2}name(){return"Trend Line"}canHasAlert(){return!0}showPriceLabels(){return this._properties.childs().showPriceLabels.value()}createPriceAxisView(e){return new n(this,{pointIndex:e,backgroundPropertyGetter:()=>this.showPriceLabels()?this._properties.linecolor.value():null})}isForcedDrawPriceAxisLabel(){return this.showPriceLabels()}_getAlertPlots(){return[this._linePointsToAlertPlot(this._points,null,this.properties().extendLeft.value(),this.properties().extendRight.value())]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,43266))).TrendLineDefinitionsViewModel}template(){var e=r.prototype.template.call(this);return e.text=this.properties().childs().text.value(),e}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text||"")}_snapTo45DegreesAvailable(){return!0}static createProperties(e){var t=new o("linetooltrendline",e);return a._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e),e.hasChild("text")||e.addChild("text",new s("")),e.addExclusion("text")}}t.LineToolTrendLine=a},53403:(e,t,i)=>{"use strict";i.d(t,{LineToolTrianglePattern:()=>o});var s=i(88564),r=i(89857),n=i(37865);class o extends r.LineDataSource{constructor(e,t,s,r){const n=t||o.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,51145)).then(t=>{this._setPaneViews([new t.LineToolTrianglePatternPaneView(this,e)])})}pointsCount(){return 4}name(){return"Triangle Pattern"}static createProperties(e){const t=new s.DefaultProperty("linetooltrianglepattern",e);return o._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,93262)).then(e=>e.PatternWithBackgroundDefinitionViewModel)}static _configureProperties(e){r.LineDataSource._configureProperties(e),e.addChild("linesColors",new n.LineToolColorsProperty([e.childs().color])),e.addChild("textsColors",new n.LineToolColorsProperty([e.childs().textcolor])),e.addChild("backgroundsColors",new n.LineToolColorsProperty([e.childs().backgroundColor]))}}},99092:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty,n=i(37865).LineToolColorsProperty;class o extends s{constructor(e,t,s,r){super(e,t||o.createProperties(),s,r),i.e(1583).then(i.t.bind(i,12258,19)).then(({TrianglePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 3}name(){return"Triangle"}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,24965))).GeneralFiguresDefinitionsViewModel}static createProperties(e){var t=new r("linetooltriangle",e);return o._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e),e.addChild("linesColors",new n([e.childs().color]))}}t.LineToolTriangle=o},67103:(e,t,i)=>{"use strict";i.d(t,{ -LineToolVertLineTimeAxisView:()=>r});var s=i(19528);class r extends s.LineDataSourceTimeAxisView{constructor(e){super(e,0)}_getBgColor(){return this._source.properties().linecolor.value()}_getAlwaysInViewPort(){return!1}_getIndex(){const e=this._source.points();return 0===e.length?null:e[0].index}}},51922:(e,t,i)=>{"use strict";i.d(t,{LineToolVertLine:()=>h});var s=i(88537),r=i(86441),n=i(88564),o=i(2015),a=i.n(o),l=i(89857),c=i(67103);class h extends l.LineDataSource{constructor(e,t,s,r){const n=t||h.createProperties();super(e,n,s,r),this._timeAxisView=new c.LineToolVertLineTimeAxisView(this),this._paneViewFactory=null,this.properties().childs().extendLine.subscribe(this,()=>e.lightUpdate()),i.e(1583).then(i.bind(i,68022)).then(t=>{this._paneViewFactory=i=>new t.VertLinePaneView(this,e,i),this._model.lightUpdate()})}destroy(){this.properties().childs().extendLine.unsubscribeAll(this),super.destroy()}pointsCount(){return 1}name(){return"Vertical Line"}timeAxisViews(){return this.isSourceHidden()?null:this.properties().childs().showTime.value()?[this._timeAxisView]:null}updateAllViews(e){super.updateAllViews(e),this._timeAxisView.update(e)}canHasAlert(){return!0}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}isMultiPaneAvailable(){return!0}isMultiPaneEnabled(){return this.properties().childs().extendLine.value()}paneViews(e){return e=(0,s.ensureDefined)(e),this.isMultiPaneEnabled()||this._model.paneForSource(this)===e?(null===this._getPaneViews(e)&&null!==this._paneViewFactory&&this._setPaneViews([this._paneViewFactory(e)],e,!0),super.paneViews(e)):null}priceAxisViews(){return null}priceAxisPoints(){return[]}pointToScreenPoint(e){const t=this._model.timeScale();if(t.isEmpty())return null;const i=t.indexToCoordinate(e.index);return new r.Point(i,0)}convertYCoordinateToPriceForMoving(e){return 0}static createProperties(e){null!=e&&(void 0===e.textOrientation&&(e.textOrientation="horizontal"),void 0===e.extendLine&&(e.extendLine=!1));const t=new n.DefaultProperty("linetoolvertline",e);return h._configureProperties(t),t}_getAlertPlots(){const e=this._points[0],t={index:e.index,price:e.price+1};return[this._linePointsToAlertPlot([e,t],null,!0,!0)]}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,90308)).then(e=>e.VerticalLineDefinitionsViewModel)}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text||"")}static _configureProperties(e){l.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(a())("")),e.addExclusion("text")}}},20299:(e,t,i)=>{"use strict";i.d(t,{LineToolVbPFixed:()=>f});var s=i(77973),r=i(88537),n=i(88145),o=i(67072),a=i.n(o),l=i(51934),c=i(54376),h=i(2662),d=i(33291),u=i(80643),p=i(88564),_=i(14291),m=i(66101);const g=(0,n.studyIdString)("VbPFixed","tv-volumebyprice");class f extends l.StudyLineDataSource{constructor(e,t,i,s,r,n){const o=i||e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:g -}),a=null!=t?t:f.createProperties(e);super(e,o,"vbpfixed_",a,r,n),(0,c.createGraphicsPaneViews)(this,e).then(t=>{if(s=e.mainSeries(),o.plots.length>0){const i=new h.StudyPlotPaneView(this,s,e,o.plots[0].id);t.push(i)}if(o.plots.length>1){const i=new h.StudyPlotPaneView(this,s,e,o.plots[1].id);t.push(i)}if(o.plots.length>2){const i=new h.StudyPlotPaneView(this,s,e,o.plots[2].id);t.push(i)}this._setPaneViews(t)}),this.clearData()}pointsCount(){return 2}boundToSymbol(){return!1}offset(e){return 0}getMinFirstBarIndexForPlot(){return-1/0}calcIsActualSymbol(){this._isActualSymbol=!0,this._isActualCurrency=!0,this._isActualUnit=!0,this.calcIsActualInterval()}cloneable(){return!1}isSynchronizable(){return!1}static createProperties(e,t){const i=a().getStudyPropertyRootNameById(g),s=(0,r.ensureNotNull)(e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:g})),n=(0,p.createDefaultsState)(!0,i,[],e.studyVersioning());return(0,_.createStudyLineToolProperties)("LineToolVbPFixed",s,s,(0,u.merge)((0,u.clone)(n),null!=t?t:{}),e.studyVersioning())}static createPropertiesFromStudyMetaInfoAndState(e,t,i,s){const r=(0,m.prepareStudyPropertiesForLoadChart)(e,t,i,null,s);return f._configureProperties(r),r}static studyId(){return g}_studyInputs(e){(0,r.assert)(2===e.length,"all the line tool points should be defined");const[t,i]=e,s=Math.max(t.index,i.index),n=this._model.mainSeries().bars().lastIndex(),o=this._getPointTime(t.index<=i.index?t:i,!0),a=this._getPointTime(i.index>=t.index?i:t,!0);if(null===o||null===a)return this._subscribeApplyInputsOnSeriesCompleted(),null;return{...this.properties().childs().inputs.state(),first_bar_time:1e3*o,last_bar_time:1e3*a,subscribeRealtime:n===s}}_isReady(){return!(0,c.isStudyGraphicsEmpty)(this.graphics())}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(7387),i.e(8623),i.e(607)]).then(i.bind(i,26667))).StudyLineDataSourceDefinitionsViewModel}_onDataUpdated(){this._updateAnchors(),this.updateAllViews((0,d.dataSourceChangeEvent)(this.id())),this._model.updateSource(this)}_updateAnchors(){const e=this._calculateAnchors();if(!e)return;const[{index:t,price:i},{index:s,price:r}]=e;if(this._timePoint.length&&(this._timePoint[0].price=i,this._timePoint[1].price=r),this._points.length){const e=this.model().timeScale(),n=e.indexToTimePoint(t),o=e.indexToTimePoint(t);this._points[0]={index:t,price:i,time:(0,u.isNumber)(n)?new Date(1e3*n):void 0},this._points[1]={index:s,price:r,time:(0,u.isNumber)(o)?new Date(1e3*o):void 0}}}_calculateAnchors(){let e=null,t=null,i=null,r=null;if(this.graphics().hhists().forEach(s=>{s.forEach(s=>{const{priceLow:n,priceHigh:o,firstBarTime:a,lastBarTime:l}=s;(!e||nt)&&(t=o),(!i||ar)&&(r=l)})}),!((0,s.default)(e)||(0,s.default)(t)||(0,s.default)(r)||(0,s.default)(i)))return[{price:t,index:i},{price:e,index:r}]}_updateAnchorsPrice(){const e=this._calculateAnchors();if(!e)return;const[{price:t},{price:i}]=e;this._timePoint.length&&(this._timePoint[0].price=t,this._timePoint[1].price=i), -this._points.length&&(this._points[0].price=t,this._points[1].price=i)}}},90373:(e,t,i)=>{"use strict";var s;i.d(t,{MagnetMode:()=>s}),function(e){e[e.WeakMagnet=0]="WeakMagnet",e[e.StrongMagnet=1]="StrongMagnet"}(s||(s={}))},30460:(e,t,i)=>{"use strict";i.d(t,{magnetEnabled:()=>m,magnetMode:()=>g,setIsMagnetEnabled:()=>f,setMagnetMode:()=>v});var s=i(88564),r=i(52714),n=i.n(r),o=i(90373),a=i(85733),l=i(14291),c=i(76367);const h=new(n())(!1),d=new(n())(o.MagnetMode.WeakMagnet),u=(0,c.modifierPressed)(),p=(0,c.shiftPressed)();function _(){const e=u.value();if(p.value()&&(a.isToolEditingNow.value()||a.isToolCreatingNow.value()))return void h.setValue(!1);const t=a.tool.value(),i=a.isStudyEditingNow.value()||a.isPointSelectedNow.value(),s=e&&((0,l.isLineToolName)(t)||a.isToolEditingNow.value()||(0,a.toolIsMeasure)(t)||i),r=(0,a.properties)().childs().magnet.value();d.setValue(!r&&s?o.MagnetMode.StrongMagnet:(0,a.properties)().childs().magnetMode.value()),h.setValue(s?!r:r)}function m(){return h}function g(){return d}function f(e){(0,s.saveDefaultProperties)(!0),(0,a.properties)().childs().magnet.setValue(e),(0,s.saveDefaultProperties)(!1)}function v(e){(0,s.saveDefaultProperties)(!0),(0,a.properties)().childs().magnetMode.setValue(e),(0,a.properties)().childs().magnet.setValue(!0),(0,s.saveDefaultProperties)(!1)}(0,a.runOnDrawingStateReady)(()=>{(0,a.properties)().childs().magnet.subscribe(null,_),(0,a.properties)().childs().magnetMode.subscribe(null,_),u.subscribe(_),p.subscribe(_),a.tool.subscribe(_),a.isToolEditingNow.subscribe(_),_()})},32050:(e,t,i)=>{"use strict";i.d(t,{MainSeriesScaleRatioProperty:()=>n});var s=i(2872),r=i.n(s);class n{constructor(e){this._changed=new(r()),this._model=e}getStepChangeValue(){return.1}getMinValue(){return 1e-7}getMaxValue(){return 99999999}value(){return this._model.mainSeriesScaleRatio()}setValue(e,t){(e!==this.value()||t)&&(this._model.setMainSeriesScaleRatio(e),this._onChanged())}state(){return null}clone(){return new n(this._model)}listeners(){return this._changed}subscribe(e,t){this._changed.subscribe(e,t)}unsubscribe(e,t){this._changed.unsubscribe(e,t)}unsubscribeAll(e){this._changed.unsubscribeAll(e)}storeStateIfUndefined(){return!0}_onChanged(){this._changed.fire(this)}}},33291:(e,t,i)=>{"use strict";function s(e,t,i){return{type:"data-source-change",dataSourceId:e,firstUpdatedTimePointIndex:t,clearData:i}}i.r(t),i.d(t,{dataSourceChangeEvent:()=>s,globalChangeEvent:()=>n,viewportChangeEvent:()=>a,selectionChangeEvent:()=>c});const r={type:"global-change"};function n(){return r}const o={type:"viewport-change"};function a(){return o}const l={type:"selection-change"};function c(){return l}},51344:(e,t,i)=>{"use strict";i.d(t,{ensureTimePointIndexIndex:()=>n,unpackNonSeriesData:()=>o});var s=i(6617),r=i(88537);function n(e){if(e<0)throw new Error("TimePointIndexIndex should be non-negative integer");return e}async function o(e){if(""===e)return null;const t=JSON.parse(e);if(!(0,s.isObject)(t)||"function"==typeof t)throw new Error("Non-object content in the non-series envelope") -;if((0,s.hasProperty)(t,"indexes_replace"))return{indexes_replace:!0};const i={indexes_replace:!1};if((0,s.hasProperty)(t,"offsets")&&(i.offsets=t.offsets),(0,s.hasProperty)(t,"isUpdate")){if("boolean"!=typeof t.isUpdate)throw new Error('Invalid type of "isUpdate" field');i.isUpdate=t.isUpdate}return(0,s.hasProperty)(t,"data")&&(i.data=t.data),(0,s.hasProperty)(t,"graphicsCmds")&&(i.graphicsCmds=function(e){if(!(0,s.isObject)(e))throw new Error("Graphics commands should be wrapped in an object");if((0,s.hasProperty)(e,"create"),(0,s.hasProperty)(e,"erase")){const t=e.erase;(0,r.assert)(Array.isArray(t),"Collection of erase commands should be array");for(const e of t){if(!(0,s.isObject)(e)||!(0,s.hasProperty)(e,"action"))throw new Error("Command should be an object with 'action' property");(0,r.assert)("all"===e.action||"one"===e.action,"Erase command action should be 'all' or 'one'")}}return e}(t.graphicsCmds)),i}},57626:(e,t,i)=>{"use strict";i.d(t,{notAvailable:()=>r});var s=i(28353);const r=i(67337).enabled("use_na_string_for_not_available_values")?(0,s.t)("n/a"):"∅"},56589:(e,t,i)=>{"use strict";var s;i.d(t,{PaneCursorType:()=>s}),function(e){e[e.Default=0]="Default",e[e.Pointer=1]="Pointer",e[e.Eraser=2]="Eraser",e[e.Dot=3]="Dot",e[e.Grabbing=4]="Grabbing",e[e.ZoomIn=5]="ZoomIn",e[e.VerticalResize=6]="VerticalResize",e[e.HorizontalResize=7]="HorizontalResize",e[e.DiagonalNeSwResize=8]="DiagonalNeSwResize",e[e.DiagonalNwSeResize=9]="DiagonalNwSeResize"}(s||(s={}))},28978:(e,t,i)=>{"use strict";i.d(t,{PanePriceAxisView:()=>n});var s=i(76818);class r{constructor(e){this._priceAxisViewRenderer=null,this._rendererOptions=null,this._align="right",this._width=0,this._height=0,this._textWidthCache=e}setParams(e,t,i,s,r){this._priceAxisViewRenderer=e,this._rendererOptions=t,this._width=i,this._height=s,this._align=r}draw(e,t){null!==this._rendererOptions&&null!==this._priceAxisViewRenderer&&this._priceAxisViewRenderer.draw(e,this._rendererOptions,this._textWidthCache,this._width,this._height,this._align,t.pixelRatio)}hitTest(e){var t,i;return void 0===(null===(t=this._priceAxisViewRenderer)||void 0===t?void 0:t.hitTest)?null:null===(i=this._priceAxisViewRenderer)||void 0===i?void 0:i.hitTest(e,this._width,this._align)}}class n{constructor(e,t,i){this._renderer=null,this._invalidated=!0,this._priceAxisView=e,this._textWidthCache=new s.TextWidthCache(100),this._dataSource=t,this._chartModel=i,this._fontSize=-1,this._panePriceAxisViewRenderer=new r(this._textWidthCache)}update(e){this._invalidated=!0}renderer(e,t){return this._invalidated&&this._updateImpl(e,t),this._renderer}_updateImpl(e,t){this._renderer=null;const i=this._chartModel.crossHairSource(),s=this._dataSource===i?i.pane:this._chartModel.paneForSource(this._dataSource);if(null===s)return;const r=this._priceScale();if(null===r)return;let n=s.priceScalePosition(r);if("overlay"===n&&(n=s.priceScalePosition(s.defaultPriceScale())),"overlay"===n)return;const o=this._chartModel.priceAxisRendererOptions();o.fontSize!==this._fontSize&&(this._fontSize=o.fontSize, -this._textWidthCache.reset()),this._panePriceAxisViewRenderer.setParams(this._priceAxisView.paneRenderer(),o,t,e,n),this._renderer=this._panePriceAxisViewRenderer,this._invalidated=!1}_priceScale(){return this._dataSource.priceScale()}}},84705:(e,t,i)=>{"use strict";i.d(t,{PaneRendererArea:()=>a});var s=i(88537),r=i(46214),n=i(29892),o=i(49094);class a extends r.PaneRendererLine{constructor(e){e.forceLineColor=!1,super(e)}draw(e,t){var i,r,a,l,c;const h=this._data;if(0===h.items.length)return;let d=null!==(r=null===(i=this._data.visibleItemsRange)||void 0===i?void 0:i.startItemIndex)&&void 0!==r?r:0,u=(null!==(l=null===(a=this._data.visibleItemsRange)||void 0===a?void 0:a.endItemIndex)&&void 0!==l?l:this._data.items.length)-1;for(;d=0&&!(0,o.coordinateIsValid)(h.items[u].y);)u--;if(d>u)return;e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.lineCap="butt",e.strokeStyle=h.lineColor,e.lineWidth=h.lineWidth,(0,n.setLineStyle)(e,h.lineStyle),e.lineWidth=1;const p={},_=h.items;for(let e=d;e<=u;e++){const t=_[e];let i;if(i=t.style?t.style.color:h.lineColor,e{"use strict";i.d(t,{CompositeRenderer:()=>s});class s{constructor(){this._renderers=[],this._globalAlpha=1}setGlobalAlpha(e){this._globalAlpha=e}append(e){this._renderers.push(e)}insert(e,t){this._renderers.splice(t,0,e)}clear(){this._renderers.length=0}isEmpty(){return 0===this._renderers.length}draw(e,t){for(let i=0;i=0;s--){const r=this._renderers[s].hitTest(e,t);null!==r&&(null===i||r.result()>i.result())&&(i=r)}return i}doesIntersectWithBox(e){return this._renderers.some(t=>!!t.doesIntersectWithBox&&t.doesIntersectWithBox(e))}}},42759:(e,t,i)=>{"use strict";i.d(t,{clearRectWithGradient:()=>o,fillRectInnerBorder:()=>a,drawHorizontalLine:()=>l,drawVerticalLine:()=>c,drawRoundRect:()=>d,drawRoundRectWithInnerBorder:()=>u,fillRectWithBorder:()=>p,createCircle:()=>_});var s=i(86441),r=i(29892),n=i(95936);function o(e,t,i,s,r,n,o){e.save(), -e.globalCompositeOperation="copy";const a=e.createLinearGradient(0,0,0,r);a.addColorStop(0,n),a.addColorStop(1,o),e.fillStyle=a,e.fillRect(t,i,s,r),e.restore()}function a(e,t,i,s,r,n){e.fillRect(t+n,i,s-2*n,n),e.fillRect(t+n,i+r-n,s-2*n,n),e.fillRect(t,i,n,r),e.fillRect(t+s-n,i,n,r)}function l(e,t,i,s){e.beginPath();const r=e.lineWidth%2?.5:0;e.moveTo(i,t+r),e.lineTo(s,t+r),e.stroke()}function c(e,t,i,s){e.beginPath();const r=e.lineWidth%2?.5:0;e.moveTo(t+r,i),e.lineTo(t+r,s),e.stroke()}function h(e,t){return Array.isArray(e)?e.map(e=>0===e?e:e+t):e+t}function d(e,t,i,s,r,n,o){let a,l,c,h;if(Array.isArray(n))if(2===n.length){const e=Math.max(0,n[0]),t=Math.max(0,n[1]);a=e,l=e,c=t,h=t}else{if(4!==n.length)throw new Error("Wrong border radius - it should be like css border radius");a=Math.max(0,n[0]),l=Math.max(0,n[1]),c=Math.max(0,n[2]),h=Math.max(0,n[3])}else{const e=Math.max(0,n);a=e,l=e,c=e,h=e}o||e.beginPath(),e.moveTo(t+a,i),e.lineTo(t+s-l,i),0!==l&&e.arcTo(t+s,i,t+s,i+l,l),e.lineTo(t+s,i+r-c),0!==c&&e.arcTo(t+s,i+r,t+s-c,i+r,c),e.lineTo(t+h,i+r),0!==h&&e.arcTo(t,i+r,t,i+r-h,h),e.lineTo(t,i+a),0!==a&&e.arcTo(t,i,t+a,i,a)}function u(e,t,i,s,o,a,l=0,c=0,u="",p=n.LineStyle.Solid){if(e.save(),!c||!u||u===a)return d(e,t,i,s,o,l),e.fillStyle=a,e.fill(),void e.restore();const _=c/2;if("transparent"!==a){const r="transparent"!==u&&p!==n.LineStyle.Solid;d(e,r?t:t+c,r?i:i+c,r?s:s-2*c,r?o:o-2*c,r?l:h(l,-c)),e.fillStyle=a,e.fill()}if("transparent"!==u){d(e,t+_,i+_,s-c,o-c,h(l,-_)),e.lineWidth=c,e.strokeStyle=u,(0,r.setLineStyle)(e,p),e.closePath(),e.stroke()}e.restore()}function p(e,t,i,n,o,a,l,c,h,d,u,p,_,m,g){const f=d?0:t,v=u?_:n;if(void 0!==a&&(e.fillStyle=a,e.fillRect(f,i,v-f+m,o-i)),void 0!==l&&c>0){if(e.beginPath(),(0,r.setLineStyle)(e,h),void 0!==g){const t=g.map(e=>e*c);(0,r.setLineDash)(e,t)}let a=(0,s.point)(0,0),d=(0,s.point)(0,0),u=(0,s.point)(0,0),_=(0,s.point)(0,0);switch(p){case"outer":{const e=.5*c;u=(0,s.point)(0,e),_=(0,s.point)(0,e),a=(0,s.point)(e,-c),d=(0,s.point)(e,-c);break}case"center":{const e=c%2?.5:0,t=c%2?.5:m;u=(0,s.point)(.5*c-e,-e),_=(0,s.point)(t+.5*c,-e),a=(0,s.point)(-e,e+.5*c),d=(0,s.point)(t,e+.5*c);break}case"inner":{const e=.5*c;u=(0,s.point)(0,-e),_=(0,s.point)(1,-e),a=(0,s.point)(-e,c),d=(0,s.point)(1-e,c);break}}e.lineWidth=c,e.strokeStyle=l,e.moveTo(f-u.x,i-u.y),e.lineTo(v+_.x,i-_.y),e.moveTo(n+d.x,i+d.y),e.lineTo(n+d.x,o-d.y),e.moveTo(f-u.x,o+u.y),e.lineTo(v+_.x,o+_.y),e.moveTo(t-a.x,i+a.y),e.lineTo(t-a.x,o-a.y),e.stroke()}}function _(e,t,i,s){e.beginPath(),e.arc(t,i,s,0,2*Math.PI,!1),e.closePath()}},49094:(e,t,i)=>{"use strict";i.d(t,{extendAndClipLineSegment:()=>h,getArrowPoints:()=>d,optimalBarWidth:()=>u,optimalCandlestickWidth:()=>p,optimalHiLoWidth:()=>_,interactionTolerance:()=>m,coordinateIsValid:()=>g,setValidLineStyle:()=>f,fillScaledRadius:()=>v,strokeScaledRadius:()=>S});var s=i(86441),r=i(5531),n=i(71413),o=i(80643),a=i(29892);const l={line:13,minDistanceBetweenPoints:10,series:14,curve:10,anchor:13,esd:4},c={line:3,minDistanceBetweenPoints:5,series:2,curve:3,anchor:2, -esd:0};function h(e,t,i,n,o,a){if((0,s.equalPoints)(e,t))return null;const l=new s.Point(0,0),c=new s.Point(i,n);if(o){if(a){const i=(0,r.intersectLineAndBox)((0,s.lineThroughPoints)(e,t),(0,s.box)(l,c));return Array.isArray(i)?i:null}{const i=(0,r.intersectRayAndBox)(t,e,(0,s.box)(l,c));return null===i||(0,s.equalPoints)(t,i)?null:(0,s.lineSegment)(t,i)}}if(a){const i=(0,r.intersectRayAndBox)(e,t,(0,s.box)(l,c));return null===i||(0,s.equalPoints)(e,i)?null:(0,s.lineSegment)(e,i)}{const i=(0,r.intersectLineSegmentAndBox)((0,s.lineSegment)(e,t),(0,s.box)(l,c));return Array.isArray(i)?i:null}}function d(e,t,i,s){const r=.5*i,n=Math.sqrt(2),o=t.subtract(e),a=o.normalized();let l=5*i;s&&(l=Math.min(l,.35*o.length()));const c=1*r;if(l*n*.2<=c)return[];const h=a.scaled(l),d=t.subtract(h),u=a.transposed(),p=1*l,_=u.scaled(p),m=d.add(_),g=d.subtract(_),f=m.subtract(t).normalized().scaled(c),v=g.subtract(t).normalized().scaled(c),S=t.add(f),y=t.add(v),b=r*(n-1),w=u.scaled(b),C=Math.min(l-1*r/n,r*n*1),P=a.scaled(C),T=t.subtract(w),x=t.add(w),I=t.subtract(P);return[[m,S],[g,y],[T,I.subtract(w)],[x,I.add(w)]]}function u(e,t){return t=t||1,Math.floor(.3*e*t)}function p(e,t){if(e>=2.5&&e<=4)return Math.floor(3*t);const i=1-.2*Math.atan(Math.max(4,e)-4)/(.5*Math.PI),s=Math.floor(e*i*t),r=Math.floor(e*t),n=Math.min(s,r);return Math.max(Math.floor(t),n)}function _(e){return.4*e}function m(){return(0,n.lastMouseOrTouchEventInfo)().isTouch?l:c}function g(e){return null!=e&&!(0,o.isNaN)(e)}function f(e,t){void 0!==t&&(0,a.setLineStyle)(e,t)}function v(e,t){const i=Math.max(1,Math.floor(t))%2?.5:0;return Math.round(e*t)+i}function S(e,t,i){const s=Math.max(1,Math.floor(t))%2?.5:0;return Math.round(e*t)+(s!==i%2?.5:0)}},40254:(e,t,i)=>{"use strict";i.d(t,{HorizontalLineRenderer:()=>a});var s=i(84346),r=i(29892),n=i(42759),o=i(49094);class a{constructor(){this._data=null,this._hitTest=new s.HitTestResult(s.HitTestResult.REGULAR)}setData(e){this._data=e}setHitTest(e){this._hitTest=e}hitTest(e){if(null===this._data||!1===this._data.visible||null===this._hitTest)return null;const t=(0,o.interactionTolerance)().line,i=Math.abs(e.y-this._data.y)<=t+this._data.linewidth/2,s=void 0===this._data.left||this._data.left-e.x<=t,r=void 0===this._data.right||e.x-this._data.right<=t;return i&&s&&r?this._hitTest:null}draw(e,t){if(null===this._data)return;if(!1===this._data.visible)return;if(this._data.y<-this._data.linewidth/2||this._data.y>t.cssHeight+this._data.linewidth/2)return;const i=t.pixelRatio;e.lineCap="butt",e.strokeStyle=this._data.color,e.lineWidth=Math.max(1,Math.floor(this._data.linewidth*i)),void 0!==this._data.linestyle&&(0,r.setLineStyle)(e,this._data.linestyle);const s=void 0!==this._data.left?Math.max(this._data.left,0):0,o=void 0!==this._data.right?Math.min(this._data.right,t.cssWidth):t.cssWidth,a=Math.round(this._data.y*i),l=Math.floor(s*i),c=Math.ceil(o*i);(0,n.drawHorizontalLine)(e,a,l,c)}}},15712:(e,t,i)=>{"use strict";function s(e,t){return e.pixelRatio===t.pixelRatio}i.d(t,{areEqualPaneRenderParams:()=>s})},49612:(e,t,i)=>{ -"use strict";var s;i.d(t,{LineEnd:()=>s}),function(e){e[e.Normal=0]="Normal",e[e.Arrow=1]="Arrow",e[e.Circle=2]="Circle"}(s||(s={}))},46214:(e,t,i)=>{"use strict";i.d(t,{PaneRendererLine:()=>l});var s=i(86441),r=i(4652),n=i(84346),o=i(29892),a=i(49094);class l{constructor(e){this._data=e}hitTest(e,t){var i,o,l,c;const h=(0,a.interactionTolerance)().series+this._data.lineWidth/2;let d=null!==(o=null===(i=this._data.visibleItemsRange)||void 0===i?void 0:i.startItemIndex)&&void 0!==o?o:0,u=(null!==(c=null===(l=this._data.visibleItemsRange)||void 0===l?void 0:l.endItemIndex)&&void 0!==c?c:this._data.items.length)-1;for(;u-d>2;){const t=Math.round((u+d)/2);this._data.items[t].x<=e.x?d=t:u=t}d=Math.max(1,d-1),u=Math.min(this._data.items.length-1,u+1);for(let t=d;t<=u;++t){const i=this._data.items[t-1],o=this._data.items[t],a=i.x,l=o.x;if((0,r.distanceToSegment)(new s.Point(a,i.y),new s.Point(l,o.y),new s.Point(e.x,e.y)).distance<=h)return this._data.hittest?this._data.hittest:new n.HitTestResult(n.HitTestResult.REGULAR)}return null}draw(e,t){e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.lineCap="square",e.lineJoin="round",e.strokeStyle=this._data.lineColor,e.fillStyle=this._data.lineColor,e.lineWidth=this._data.lineWidth,(0,o.setLineStyle)(e,this._data.lineStyle),(0,a.setValidLineStyle)(e,this._data.lineStyle),this._data.simpleMode?this._drawSimpleMode(e,t.pixelRatio):this._drawLines(e),e.restore()}_drawSimpleMode(e,t){var i,s,r,n;if(e.beginPath(),this._walkLine(e,this._data.items,!1,NaN),e.stroke(),this._data.withMarkers){e.save(),e.scale(1/t,1/t);const o=Math.max(1,Math.floor(t))%2/2,a=(this._data.lineWidth+2)*t+o,l=2*Math.PI;e.beginPath();const c=null!==(s=null===(i=this._data.visibleItemsRange)||void 0===i?void 0:i.startItemIndex)&&void 0!==s?s:0;for(let i=(null!==(n=null===(r=this._data.visibleItemsRange)||void 0===r?void 0:r.endItemIndex)&&void 0!==n?n:this._data.items.length)-1+1;i-- >=c;){const s=this._data.items[i];if(s){const i=Math.round(s.x*t)+o,r=s.y*t;e.moveTo(i,r),e.arc(i,r,a,0,l)}}e.fill(),e.restore()}}_walkLine(e,t,i,s,r){var n,o,l,c;if(!t)return;const h=.25*this._data.barSpacing;let d,u,p,_,m;const g=a.coordinateIsValid,f=r?0:null!==(o=null===(n=this._data.visibleItemsRange)||void 0===n?void 0:n.startItemIndex)&&void 0!==o?o:0,v=r?t.length-1:Math.min((null!==(c=null===(l=this._data.visibleItemsRange)||void 0===l?void 0:l.endItemIndex)&&void 0!==c?c:t.length)-1,t.length-1);for(let e=f;e<=v;e++){const i=t[e];if(g(i.y)){u=i,d=e;break}}if(void 0!==d&&void 0!==u)for(let r=d;r<=v;r++){_=t[r],m=t[r+1]||{};const n=Math.round(_.x);if(g(_.y))if(p&&g(p.y))e.lineTo(n,_.y),i&&!g(m.y)&&e.lineTo(n,s);else if(m&&g(m.y))i?(r!==d&&e.lineTo(n,s),e.lineTo(n,_.y)):e.moveTo(n,_.y);else if(i){if(0===r)continue;r!==d&&e.lineTo(n-h,s),e.lineTo(n-h,_.y),e.lineTo(n+h,_.y),e.lineTo(n+h,s)}else e.moveTo(n-h,_.y),e.lineTo(n+h,_.y);p=_}}_drawLines(e){var t,i,s,r;if(!this._data.items.length)return;let n,o,l;const c=.25*this._data.barSpacing,h=a.coordinateIsValid;e.beginPath() -;const d=null!==(i=null===(t=this._data.visibleItemsRange)||void 0===t?void 0:t.startItemIndex)&&void 0!==i?i:0,u=(null!==(r=null===(s=this._data.visibleItemsRange)||void 0===s?void 0:s.endItemIndex)&&void 0!==r?r:this._data.items.length)-1,p=this._data.items[d];p&&e.moveTo(p.x,p.y);let _,m=e.strokeStyle,g=e.lineWidth;for(let t=d+1;t<=u;++t){let i,s,r;n=this._data.items[t-1],o=this._data.items[t],l=this._data.items[t+1],o.style&&!this._data.forceLineColor?(i=o.style.color,s=o.style.width,r=o.style.style):(i=this._data.lineColor,s=this._data.lineWidth,r=this._data.lineStyle),this._data.ignorePaletteLineWidth&&(s=this._data.lineWidth);(i!==m||s!==g||r!==_)&&(m=i,g=s,_=r,e.stroke(),e.beginPath(),e.strokeStyle=i,e.lineWidth=s,(0,a.setValidLineStyle)(e,r),e.moveTo(n.x,n.y)),f=n,S=l,h((v=o).y)&&(h(f.y)?e.lineTo(v.x,v.y):S&&h(S.y)?e.moveTo(v.x,v.y):(e.moveTo(v.x-c,v.y),e.lineTo(v.x+c,v.y)))}var f,v,S;e.stroke()}}},55776:(e,t,i)=>{"use strict";i.d(t,{RectangleRenderer:()=>d});var s=i(88537),r=i(86441),n=i(34026),o=i(4652),a=i(84346),l=i(68906),c=i(43891),h=i(42759);class d{constructor(e,t,i){this._data=null,this._hitTestResult=e||new a.HitTestResult(a.HitTestResult.MOVEPOINT),this._backHitTestResult=t||new a.HitTestResult(a.HitTestResult.MOVEPOINT_BACKGROUND),this._forceOverrideTransparency=Boolean(i)}setData(e){this._data=e}hitTest(e,t){if(null===this._data||this._data.points.length<2||this._data.nohittest)return null;const[i,s]=this._getPointsInPhysicalSpace(t),n=new r.Point(s.x,i.y),a=new r.Point(i.x,s.y),l=new r.Point(e.x*t.pixelRatio,e.y*t.pixelRatio),c=this._extendAndHitTestLineSegment(l,i,n,t);if(null!==c)return c;const h=this._extendAndHitTestLineSegment(l,a,s,t);if(null!==h)return h;let d=(0,o.distanceToSegment)(n,s,l);return d.distance<=3?this._hitTestResult:(d=(0,o.distanceToSegment)(i,a,l),d.distance<=3?this._hitTestResult:this._data.fillBackground?this._hitTestBackground(l,i,s,t):null)}getColor(){const e=(0,s.ensure)(this._data);return void 0===e.transparency?e.backcolor:(0,l.generateColor)(e.backcolor,e.transparency,this._forceOverrideTransparency)}draw(e,t){if(null===this._data||this._data.points.length<2||this._data.linewidth<=0&&!this._data.fillBackground)return;e.save();const[i,s]=this._getPointsInPhysicalSpace(t),r=this._data.linewidth?Math.max(1,Math.floor(this._data.linewidth*t.pixelRatio)):0,n=this._data.fillBackground?this.getColor():void 0,o=Math.max(1,Math.floor(t.pixelRatio));(0,h.fillRectWithBorder)(e,i.x,i.y,s.x,s.y,n,this._data.color,r,c.LINESTYLE_SOLID,this._data.extendLeft,this._data.extendRight,"center",t.physicalWidth,this._data.includeRightEdge&&1===o?1:0),e.restore()}_getPointsInPhysicalSpace(e,t=0){const i=(0,s.ensureNotNull)(this._data),[n,o]=i.points,a=e.pixelRatio,l=Math.min(n.x,o.x),c=Math.max(n.x,o.x),h=Math.min(n.y,o.y),d=Math.max(n.y,o.y),u=Math.round(l*a)+t,p=Math.round(c*a)+t,_=Math.round(h*a)+t,m=Math.round(d*a)+t;return[new r.Point(u,_),new r.Point(p,m)]}_extendAndHitTestLineSegment(e,t,i,s){const r=this._extendAndClipLineSegment(t,i,s);if(null!==r){if((0, -o.distanceToSegment)(r[0],r[1],e).distance<=3)return this._hitTestResult}return null}_extendAndClipLineSegment(e,t,i){const n=(0,s.ensureNotNull)(this._data);if((0,r.equalPoints)(e,t)&&!n.extendLeft&&!n.extendRight)return null;const o=i.physicalWidth,a=Math.min(e.x,t.x),l=Math.max(e.x,t.x),c=n.extendLeft?0:Math.max(a,0),h=n.extendRight?o:Math.min(l,o);return c>h||h<=0||c>=o?null:[new r.Point(c,e.y),new r.Point(h,t.y)]}_hitTestBackground(e,t,i,s){const o=this._extendAndClipLineSegment(t,i,s);return null!==o&&(0,n.pointInBox)(e,(0,r.box)(o[0],o[1]))?this._backHitTestResult:null}}},16282:(e,t,i)=>{"use strict";i.d(t,{ScaledPaneRenderer:()=>s,ScaledPaneRendererWrapper:()=>r});class s{draw(e,t){e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.translate(.5,.5),this._drawImpl(e,{...t,pixelRatio:1}),e.restore()}drawBackground(e,t){e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.translate(.5,.5),this._drawBackgroundImpl(e,{...t,pixelRatio:1}),e.restore()}_drawBackgroundImpl(e,t){}}class r{constructor(e){this._base=e}hitTest(e,t){return this._base.hitTest(e,t)}draw(e,t){e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.translate(.5,.5),this._base.draw(e,{...t,pixelRatio:1}),e.restore()}drawBackground(e,t){e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.translate(.5,.5),this._base.drawBackground&&this._base.drawBackground(e,{...t,pixelRatio:1}),e.restore()}}},13632:(e,t,i)=>{"use strict";var s;i.d(t,{StatsPosition:()=>s}),function(e){e[e.Left=0]="Left",e[e.Center=1]="Center",e[e.Right=2]="Right"}(s||(s={}))},28113:(e,t,i)=>{"use strict";i.d(t,{StepLineDecoration:()=>s,PaneRendererStepLine:()=>g});var s,r=i(4652),n=i(84346),o=i(86441),a=i(29892),l=i(55257),c=i(49094),h=i(42759),d=i(68906);!function(e){e[e.None=0]="None",e[e.Diamonds=1]="Diamonds"}(s||(s={}));class u{initialize(e,t,i,s){var r,n,o,l;const c=e.lineStyle;t.lineCap="butt",t.lineJoin="round";const h=Math.max(Math.floor(null!==(n=null===(r=s.style)||void 0===r?void 0:r.width)&&void 0!==n?n:e.lineWidth*i.pixelRatio));void 0!==c&&(0,a.setLineStyle)(t,c);const d=h%2?.5:0;t.moveTo(Math.round(s.x*i.pixelRatio)+d,Math.round(s.y*i.pixelRatio)+d),t.strokeStyle=null!==(l=null===(o=s.style)||void 0===o?void 0:o.color)&&void 0!==l?l:e.lineColor,t.lineWidth=h}finishFragment(e){e.stroke()}hitTest(e,t,i,s,n){var a,l;const h=Math.round((i.x+s.x)/2),d=new o.Point(h,i.y),u=new o.Point(h,s.y),p=null!==(l=null===(a=i.style)||void 0===a?void 0:a.width)&&void 0!==l?l:e.lineWidth,_=(0,c.interactionTolerance)().series+p/2;return Math.min((0,r.distanceToSegment)(i,d,n).distance,(0,r.distanceToSegment)(d,u,n).distance,(0,r.distanceToSegment)(u,s,n).distance)<=_}applyColor(e,t){e.strokeStyle=t}applyLineWidth(e,t){e.lineWidth=t}drawItem(e,t,i,s){e.lineTo(i.x,i.y),void 0!==s&&(e.lineTo(s.x,i.y),e.lineTo(s.x,s.y))}}class p{constructor(){this._lineWidth=1}initialize(e,t,i,s){var r,n,o,a;this.applyColor(t,null!==(n=null===(r=s.style)||void 0===r?void 0:r.color)&&void 0!==n?n:e.lineColor), -this._lineWidth=Math.max(Math.floor(null!==(a=null===(o=s.style)||void 0===o?void 0:o.width)&&void 0!==a?a:e.lineWidth*i.pixelRatio))}finishFragment(e){e.fill()}drawItem(e,t,i,s,r){if(r&&void 0!==s&&!Number.isNaN(s.y)){e.save(),e.translate(s.x,s.y),e.rotate(Math.PI/4);const i=this._scaleByLineWidth(this._lineWidth);e.scale(i,i),this._drawItemRotatedAndTranslated(e,t),e.restore()}}applyLineWidth(e,t){this._lineWidth=t}hitTest(e,t,i,s,r){var n,a;if(!s.valIsNotSameAsPrev)return!1;const l=Math.round((i.x+s.x)/2),c=new o.Point(l,s.y),h=r.subtract(c),d=Math.max(Math.floor(null!==(a=null===(n=i.style)||void 0===n?void 0:n.width)&&void 0!==a?a:e.lineWidth*t.pixelRatio));return this._hitTestTranslated(h,d)}_scaleByLineWidth(e){return Math.sqrt(e)}}class _ extends p{applyColor(e,t){e.fillStyle=t}_hitTestTranslated(e,t){return Math.abs(e.x)+Math.abs(e.y)<8*this._scaleByLineWidth(t)/2}_drawItemRotatedAndTranslated(e,t){(0,h.drawRoundRect)(e,-4,-4,8,8,2,!0)}}class m extends p{applyColor(e,t){e.fillStyle=(0,d.applyTransparency)(t,85)}_hitTestTranslated(e,t){return Math.abs(e.x)+Math.abs(e.y)<21*this._scaleByLineWidth(t)/2}_drawItemRotatedAndTranslated(e,t){(0,h.drawRoundRect)(e,-10.5,-10.5,21,21,5,!0)}}class g{constructor(e){this._data=null,this._data=null!=e?e:null}setData(e){this._data=e}hitTest(e,t){var i;const r=this._data;if(null===r||0===r.items.length)return null;const o=r.items,a=(0,l.lowerbound)(o,e,(e,t)=>e.x<=t.x),c=Math.max(0,a-1),h=Math.min(o.length-1,a+1),d=function(e){switch(e){case s.Diamonds:return[new u,new m];default:return[new u]}}(null===(i=this._data)||void 0===i?void 0:i.decoration);for(let i=c;ii.hitTest(r,t,s,a,e)))return new n.HitTestResult(n.HitTestResult.REGULAR)}return null}draw(e,t){if(null===this._data||0===this._data.items.length)return;e.save();(function(e){switch(e){case s.Diamonds:return[new u,new _,new m];default:return[new u]}})(this._data.decoration).forEach(i=>this._drawImpl(e,t,i)),e.restore()}_drawImpl(e,t,i){var s,r,n,a,l,c,h,d,u,p,_,m,g,f,v,S;if(null===this._data||0===this._data.items.length)return;const{lineWidth:y,lineColor:b,items:w}=this._data,C=t.pixelRatio;let P=Math.max(Math.floor(null!==(r=null===(s=w[0].style)||void 0===s?void 0:s.width)&&void 0!==r?r:y*C)),T=P%2?.5:0;i.initialize(this._data,e,t,w[0]);const x=null!==(a=null===(n=this._data.visibleItemsRange)||void 0===n?void 0:n.startItemIndex)&&void 0!==a?a:0,I=null!==(c=null===(l=this._data.visibleItemsRange)||void 0===l?void 0:l.endItemIndex)&&void 0!==c?c:w.length;if(!(I<=x)){e.beginPath(),i.applyColor(e,null!==(d=null===(h=w[x].style)||void 0===h?void 0:h.color)&&void 0!==d?d:b);for(let s=x;s{"use strict";i.d(t,{calculateLabelPosition:()=>p,wordWrap:()=>g,TextRenderer:()=>M});var s=i(86441),r=i(88537),n=i(34026),o=i(62820),a=i(84346),l=i(42759),c=i(29892),h=i(80643),d=i(93435),u=i(43891);function p(e,t,i,r,n){const o=.5*(t.x+i.x);let a=i.y;return t.y>i.y?(a-=e.height/2+r.y,a=Math.max(e.height/2,a)):(a+=e.height/2+r.y,a=Math.min(n-e.height/2,a)),new s.Point(o,a)}let _;function m(){const e=document.createElement("canvas");e.width=0,e.height=0,_=(0,r.ensureNotNull)(e.getContext("2d"))}function g(e,t,i){_||m(),i=(0,h.isString)(i)?parseInt(i):i,e+="";const s=!(0,h.isNumber)(i)||!isFinite(i)||i<=0?e.split(/\r\n|\r|\n|$/):e.split(/[^\S\r\n]*(?:\r\n|\r|\n|$)/);if(s[s.length-1]||s.pop(),!(0,h.isNumber)(i)||!isFinite(i)||i<=0)return s;_.font=t;const r=[];for(let e=0;e0&&_.measureText(o.slice(0,3*--e-1).join("")).width>i;);if(e>0)r.push(o.slice(0,3*e-1).join("")),o.splice(0,3*e);else{const e=o[0]+(o[1]||"");if(a=1===a?1:~~(i/_.measureText(e).width*e.length),_.measureText(e.substring(0,a)).width<=i)for(;_.measureText(e.substring(0,a+1)).width<=i;)a++;else for(;a>1&&_.measureText(e.substring(0,--a)).width>i;);a<1&&(a=1),r.push(e.substring(0,a)),o[0]=e.substring(a),o[1]=""}if(_.measureText(o.join("")).width<=i){r.push(o.join(""));break}}}return r}function f(e,t,i){if(0===i)return e.clone();const r=(e.x-t.x)*Math.cos(i)-(e.y-t.y)*Math.sin(i)+t.x,n=(e.x-t.x)*Math.sin(i)+(e.y-t.y)*Math.cos(i)+t.y;return new s.Point(r,n)}function v(e,t){const i=Math.round(t+2*C(e)+2*b(e));return i%2?i-1:i}function S(e,t){return T(e)*t+P(e)*(t-1)+2*w(e)+2*y(e)}function y(e){return void 0!==e.boxPaddingVert?e.boxPaddingVert*I(e):void 0!==e.boxPadding?e.boxPadding*I(e):T(e)/3}function b(e){return void 0!==e.boxPaddingHorz?e.boxPaddingHorz*I(e):void 0!==e.boxPadding?e.boxPadding*I(e):T(e)/3}function w(e){return(e.backgroundVertInflate||0)*I(e)}function C(e){return(e.backgroundHorzInflate||0)*I(e)}function P(e){return(e.padding||0)*I(e)}function T(e){return Math.ceil(x(e)*I(e))}function x(e){return e.fontsize||e.fontSize||30}function I(e){const t=Math.min(1,Math.max(.2,Math.min(e.scaleX||1,e.scaleY||1)));if(1===t)return t;const i=x(e);return Math.ceil(t*i)/i}class M{constructor(e,t){this._data=null,this._internalData=null, -this._boxSize=null,this._polygonPoints=null,this._linesInfo=null,this._fontInfo=null,this._hittest=t||new a.HitTestResult(a.HitTestResult.MOVEPOINT,{areaName:a.AreaName.Text}),void 0!==e&&this.setData(e)}setData(e){e.horzTextAlign||(e.horzTextAlign=e.horzAlign),function(e,t){if(null===e||null===t)return null===e==(null===t);if(void 0===e.points!=(void 0===t.points))return!1;if(void 0!==e.points&&void 0!==t.points){if(e.points.length!==t.points.length)return!1;for(let r=0;re){const i=(0,s.box)(new s.Point(0,0),new s.Point(e,t));return this._getPolygonPoints().every(e=>!(0,n.pointInBox)(e,i))}return!1}setPoints(e,t){(0,r.ensureNotNull)(this._data).points=e,this._hittest=t||new a.HitTestResult(a.HitTestResult.MOVEPOINT)}fontStyle(e){return null===this._data?"":this._getFontInfo().fontStyle}wordWrap(e,t,i){return g(e,i||this.fontStyle(),t)}draw(e,t){if(null===this._data||void 0===this._data.points||0===this._data.points.length)return;if(this.isOutOfScreen(t.cssWidth,t.cssHeight))return;const i=t.pixelRatio,s=this._getInternalData(),r=this._getRotationPoint().scaled(i);e.save(),e.translate(r.x,r.y),e.rotate(this._data.angle||0),e.translate(-r.x,-r.y);const n=this._getFontInfo().fontSize -;e.textBaseline=s.textBaseLine,e.textAlign=s.textAlign,e.font=this.fontStyle();const{scaledLeft:o,scaledRight:a,scaledTop:h,scaledBottom:p}=function(e,t){const i=Math.round(e.boxLeft*t),s=Math.round(e.boxTop*t);return{scaledLeft:i,scaledRight:i+Math.round(e.boxWidth*t),scaledTop:s,scaledBottom:s+Math.round(e.boxHeight*t)}}(s,i);if(this._data.backgroundColor||this._data.borderColor||this._data.highlightBorder&&this._data.wordWrapWidth){const t=this._data.borderWidth||Math.max(n/12,1),s=Math.round(t*i),r=s/2;let d=!1;if(this._data.boxShadow){e.save();const{shadowColor:t,shadowBlur:i,shadowOffsetX:s=0,shadowOffsetY:r=0}=this._data.boxShadow;e.shadowColor=t,e.shadowBlur=i,e.shadowOffsetX=s,e.shadowOffsetY=r,d=!0}if(this._data.backgroundRoundRect)this._data.backgroundColor&&((0,l.drawRoundRect)(e,o,h,a-o,p-h,this._data.backgroundRoundRect*i),e.fillStyle=this._data.backgroundColor,e.fill(),d&&(e.restore(),d=!1)),this._data.borderColor&&((0,l.drawRoundRect)(e,o-r,h-r,a-o+s,p-h+s,this._data.backgroundRoundRect*i+s),e.strokeStyle=this._data.borderColor,e.lineWidth=s,e.stroke(),d&&(e.restore(),d=!1));else if(this._data.backgroundColor&&(e.fillStyle=this._data.backgroundColor,e.fillRect(o,h,a-o,p-h),d&&(e.restore(),d=!1)),this._data.borderColor||this._data.highlightBorder){let t;this._data.borderColor?(e.strokeStyle=this._data.borderColor,t=s):(e.strokeStyle=this._data.color,(0,c.setLineStyle)(e,u.LINESTYLE_DASHED),t=Math.max(1,Math.floor(i))),e.lineWidth=t,e.beginPath(),e.moveTo(o-t/2,h-t/2),e.lineTo(o-t/2,p+t/2),e.lineTo(a+t/2,p+t/2),e.lineTo(a+t/2,h-t/2),e.lineTo(o-t/2,h-t/2),e.stroke(),d&&e.restore()}}e.fillStyle=this._data.color;const _=(o+Math.round(s.textStart*i))/i,m=.05*n;let g=(h+Math.round((s.textTop+m)*i))/i;const f=P(this._data),v=this._getLinesInfo();for(const t of v.lines)(0,d.drawScaled)(e,i,()=>e.fillText(t,_,g)),g+=n+f;e.restore()}_getLinesMaxWidth(e){if(_||m(),_.textBaseline="alphabetic",_.font=this.fontStyle(),null!==this._data&&this._data.wordWrapWidth&&!this._data.forceCalculateMaxLineWidth)return this._data.wordWrapWidth*I(this._data);let t=0;for(const i of e)t=Math.max(t,_.measureText(i).width);return t}_getInternalData(){if(null!==this._internalData)return this._internalData;const e=(0,r.ensureNotNull)(this._data),t=this._getBoxSize(),i=t.boxWidth,s=t.boxHeight,n=(0,r.ensureDefined)(e.points)[0];let a=n.y;switch(e.vertAlign){case"bottom":a-=s+e.offsetY;break;case"middle":a-=s/2;break;case"top":a+=e.offsetY}let l=n.x;const c=b(e),h=y(e),d=C(e)+c;let u;const p=a+(w(e)+h)+T(e)/2;let _;switch(e.horzAlign){case"left":l+=e.offsetX;break;case"center":l-=i/2;break;case"right":l-=i+e.offsetX}switch((0,r.ensureDefined)(e.horzTextAlign)){case"left":_="start",u=l+d,(0,o.isRtl)()&&(e.forceTextAlign?_="left":(u=l+i-d,_="right"));break;case"center":_="center",u=l+i/2;break;case"right":_="end",u=l+i-d,(0,o.isRtl)()&&e.forceTextAlign&&(_="right")}return this._internalData={boxLeft:l,boxTop:a,boxWidth:i,boxHeight:s,textStart:u-l,textTop:p-a,textAlign:_,textBaseLine:"middle"},this._internalData}_getLinesInfo(){ -if(null===this._linesInfo){const e=(0,r.ensureNotNull)(this._data);let t=this.wordWrap(e.text,e.wordWrapWidth);if(void 0!==e.maxHeight){const i=function(e){const t=(0,r.ensureDefined)(e.maxHeight),i=T(e),s=P(e);return Math.floor((t+s)/(i+s))}(e);t.length>i&&(t=t.slice(0,i))}this._linesInfo={linesMaxWidth:this._getLinesMaxWidth(t),lines:t}}return this._linesInfo}_getFontInfo(){if(null===this._fontInfo){const e=(0,r.ensureNotNull)(this._data),t=T(e),i=(e.bold?"bold ":"")+(e.italic?"italic ":"")+t+"px "+e.font;this._fontInfo={fontStyle:i,fontSize:t}}return this._fontInfo}_getBoxSize(){if(null===this._boxSize){const e=this._getLinesInfo(),t=(0,r.ensureNotNull)(this._data);this._boxSize={boxWidth:v(t,e.linesMaxWidth),boxHeight:S(t,e.lines.length)}}return this._boxSize}_getPolygonPoints(){if(null!==this._polygonPoints)return this._polygonPoints;if(null===this._data)return[];const e=this._data.angle||0,{boxLeft:t,boxTop:i,boxWidth:r,boxHeight:n}=this._getInternalData(),o=this._getRotationPoint();return this._polygonPoints=[f(new s.Point(t,i),o,e),f(new s.Point(t+r,i),o,e),f(new s.Point(t+r,i+n),o,e),f(new s.Point(t,i+n),o,e)],this._polygonPoints}_getRotationPoint(){const{boxLeft:e,boxTop:t,boxWidth:i,boxHeight:n}=this._getInternalData(),{horzAlign:o,vertAlign:a}=(0,r.ensureNotNull)(this._data);let l,c;switch(o){case"center":l=e+i/2;break;case"left":l=e;break;case"right":l=e+i}switch(a){case"middle":c=t+n/2;break;case"top":c=t;break;case"bottom":c=t+n}return new s.Point(l,c)}}},63300:(e,t,i)=>{"use strict";i.d(t,{drawArrow:()=>d,TrendLineRenderer:()=>u});var s=i(88537),r=i(4652),n=i(49612),o=i(84346),a=i(29892),l=i(49094),c=i(42759);function h(e,t,i,s,r){t.save(),t.fillStyle="#000000",t.beginPath(),t.arc(e.x*r,e.y*r,i*r,0,2*Math.PI,!1),t.fill(),s.strokeWidth&&(t.lineWidth=s.strokeWidth,t.stroke()),t.restore()}function d(e,t,i,s,r,n=!1){if(t.subtract(e).length()<1)return;const o=(0,l.getArrowPoints)(e,t,s,n);for(let e=0;e0&&(l[0].x===l[1].x?(0,c.drawVerticalLine)(e,Math.round(l[0].x*s),l[0].y*s,l[1].y*s):l[0].y===l[1].y?(0,c.drawHorizontalLine)(e,Math.round(l[0].y*s),l[0].x*s,l[1].x*s):(0,a.drawLine)(e,l[0].x*s,l[0].y*s,l[1].x*s,l[1].y*s)),i.overlayLineEndings&&this._drawEnds(e,o,i.linewidth,s)}hitTest(e,t){const i=this._data;if(null===i)return null;if("points"in i&&i.points.length<2)return null;const s=(0, -l.interactionTolerance)().line,n=i.points[0],o=i.points[1],a=this._extendAndClipLineSegment(n,o,t);if(null!==a){if((0,r.distanceToSegment)(a[0],a[1],e).distance<=s)return this._hittest}return null}_extendAndClipLineSegment(e,t,i){const r=(0,s.ensureNotNull)(this._data);return(0,l.extendAndClipLineSegment)(e,t,i.cssWidth,i.cssHeight,r.extendleft,r.extendright)}_drawEnds(e,t,i,r){const o=t[0],a=t[1],l=(0,s.ensureNotNull)(this._data);switch(l.leftend){case n.LineEnd.Arrow:d(a,o,e,i,r);break;case n.LineEnd.Circle:h(o,e,i,(0,s.ensureDefined)(l.endstyle),r)}switch(l.rightend){case n.LineEnd.Arrow:d(o,a,e,i,r);break;case n.LineEnd.Circle:h(a,e,i,(0,s.ensureDefined)(l.endstyle),r)}}}},44349:(e,t,i)=>{"use strict";i.d(t,{VerticalLineRenderer:()=>a});var s=i(84346),r=i(29892),n=i(42759),o=i(49094);class a{constructor(){this._data=null,this._hitTest=new s.HitTestResult(s.HitTestResult.MOVEPOINT)}setData(e){this._data=e}setHitTest(e){this._hitTest=e}hitTest(e){if(null===this._data||null===this._hitTest)return null;const t=(0,o.interactionTolerance)().line,i=Math.abs(e.x-this._data.x)<=t+this._data.linewidth/2,s=void 0===this._data.top||this._data.top-e.y<=t,r=void 0===this._data.bottom||e.y-this._data.bottom<=t;return i&&s&&r?this._hitTest:null}draw(e,t){if(null===this._data)return;if(this._data.linewidth<=0)return;if(this._data.x<-this._data.linewidth/2||this._data.x>t.cssWidth+this._data.linewidth/2)return;const i=t.pixelRatio;e.lineCap="butt",e.strokeStyle=this._data.color,e.lineWidth=Math.max(1,Math.floor(this._data.linewidth*i)),void 0!==this._data.linestyle&&(0,r.setLineStyle)(e,this._data.linestyle);const s=void 0!==this._data.top?Math.max(this._data.top,0):0,o=void 0!==this._data.bottom?Math.min(this._data.bottom,t.cssHeight):t.cssHeight,a=Math.round(this._data.x*i),l=Math.floor(s*i),c=Math.ceil(o*i);(0,n.drawVerticalLine)(e,a,l,c)}}},59555:(e,t,i)=>{"use strict";i.d(t,{sortSourcesPreOrdered:()=>s,sortSources:()=>r});const s={ChartEventsSource:10000001,Dividends:10000002,Splits:10000003,Earnings:10000004,RollDates:10000005,LineToolOrder:10000006,LineToolPosition:10000007,LineToolExecution:10000008,AlertLabel:10000009};function r(e){return[...e].sort((e,t)=>e.zorder()-t.zorder())}},71053:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PlotRowSearchMode:()=>a,PlotList:()=>h,mergeMinMax:()=>d,mergePlotRows:()=>u});var s=i(88537),r=i(55257),n=i(2271);const o=(0,i(98125).getLogger)("Chart.PlotList");var a;!function(e){e[e.NearestLeft=-1]="NearestLeft",e[e.Exact=0]="Exact",e[e.NearestRight=1]="NearestRight"}(a||(a={}));function l(e){return e.index}function c(e){return e.value[0]}class h{constructor(e=null,t=null){this._items=[],this._start=0,this._end=0,this._shareRead=!1,this._minMaxCache=new Map,this._rowSearchCacheByIndex=new Map,this._rowSearchCacheByIndexWithoutEmptyValues=new Map,this._rowSearchCacheByTime=new Map,this._rowSearchCacheByTimeWithoutEmptyValues=new Map,this._plotFunctions=e||new Map,this._emptyValuePredicate=t}clear(){this._items=[],this._start=0,this._end=0,this._shareRead=!1,this._minMaxCache.clear(), -this._invalidateSearchCaches()}first(){return this.size()>0?this._items[this._start]:null}last(){return this.size()>0?this._items[this._end-1]:null}firstIndex(){return this.size()>0?this._indexAt(this._start):null}lastIndex(){return this.size()>0?this._indexAt(this._end-1):null}size(){return this._end-this._start}isEmpty(){return 0===this.size()}contains(e){return null!==this.search(e,a.Exact)}valueAt(e){const t=this.search(e);return null!==t?t.value:null}add(e,t){if(this._shareRead)return o.logDebug("add: readonly collection modification attempt"),!1;const i={index:e,value:t},s=this._nonCachedSearch(e,a.Exact,l);return this._invalidateSearchCaches(),null===s?(this._items.splice(this._lowerbound(e,l),0,i),this._start=0,this._end=this._items.length,!0):(this._items[s]=i,!1)}search(e,t=a.Exact,i){return this._searchImpl(e,t,this._rowSearchCacheByIndex,this._rowSearchCacheByIndexWithoutEmptyValues,l,i)}searchByTime(e,t=a.Exact,i){return this._searchImpl(e,t,this._rowSearchCacheByTime,this._rowSearchCacheByTimeWithoutEmptyValues,c,i)}fold(e,t){let i=t;for(let t=this._start;t=i;--t){const i=this._indexAt(t),s=this._valueAt(t);if(e(i,s))return{index:i,value:s}}return null}each(e){for(let t=this._start;t!1,next:()=>{throw new Error("Invalid operation")}};let r=i-1;return{hasNext:()=>r(r+=1,this._items[r])}}minMaxOnRangeCached(e,t,i){if(this.isEmpty())return null;let s=null;for(const r of i){s=d(s,this._minMaxOnRangeCachedImpl(e-r.offset,t-r.offset,r.name))}return s}minMaxOnRange(e,t,i){if(this.isEmpty())return null;let s=null;for(const r of i){s=d(s,this._minMaxOnRange(e-r.offset,t-r.offset,r.name))}return s}merge(e){return this._shareRead?(o.logDebug("merge: readonly collection modification attempt"),null):0===e.length?null:this.isEmpty()||e[e.length-1].indexthis._items[this._items.length-1].index?this._append(e):1===e.length&&e[0].index===this._items[this._items.length-1].index?(this._updateLast(e[0]),e[0]):this._merge(e)}addTail(e,t=!1){let i=0;t&&this._end-this._start>0&&(i=1,this._items[this._end-this._start-1].value=e[0].value);for(let t=i;tvoid 0!==e).sort((e,t)=>e.index-t.index),this._invalidateSearchCaches(),this._minMaxCache.clear(),this._start=0,this._end=this._items.length}remove(e){if(this._shareRead)return o.logDebug("remove: readonly collection modification attempt"),null;const t=this._nonCachedSearch(e,a.NearestRight,l);if(null===t)return null;const i=this._items.splice(t);return this._end=this._items.length,this._minMaxCache.clear(),this._invalidateSearchCaches(),i.length>0?i[0]:null}state(){return{start:this._start,end:this._end,data:this._items,shareread:this._shareRead}}restoreState(e){e?(this._start=e.start,this._end=e.end,this._shareRead=e.shareread,this._items=e.data,this._minMaxCache.clear(),this._invalidateSearchCaches()):this.clear()}_indexAt(e){return this._items[e].index}_valueAt(e){return this._items[e].value}_length(){return this._items.length}_searchImpl(e,t,i,s,r,n){const o=void 0!==n?i:s,a=void 0!==n?1e4*(t+1)+n:t;let l=o.get(e);if(void 0!==l){const e=l.get(a);if(void 0!==e)return e}const c=this._nonCachedSearch(e,t,r,n);if(null===c)return null;const h={index:this._indexAt(c),value:this._valueAt(c)};return void 0===l&&(l=new Map,o.set(e,l)),l.set(a,h),h}_nonCachedSearch(e,t,i,s){const r=this._lowerbound(e,i),n=r===this._end||e!==i(this._items[r]);if(n&&t!==a.Exact)switch(t){case a.NearestLeft:return this._searchNearestLeft(r,s);case a.NearestRight:return this._searchNearestRight(r,s);default:throw new TypeError("Unknown search mode")}if(void 0===s||n||t===a.Exact)return n?null:r;switch(t){case a.NearestLeft:return this._nonEmptyNearestLeft(r,s);case a.NearestRight:return this._nonEmptyNearestRight(r,s);default:throw new TypeError("Unknown search mode")}}_nonEmptyNearestRight(e,t){const i=(0,s.ensure)(this._emptyValuePredicate),r=(0,s.ensure)(t);for(;e=this._start&&i(this._valueAt(e),r);)e-=1;return et(e)t.index>e,this._start,this._end)} -_plotMinMax(e,t,i){let s=null;const r=this._plotFunctions.get(i);if(void 0===r)throw new Error(`Plot "${i}" is not registered`);for(let i=e;is.max&&(s.max=e)))}return s}_invalidateCacheForRow(e){const t=Math.floor(e.index/30);this._minMaxCache.forEach(e=>e.delete(t))}_prepend(e){return(0,s.assert)(!this._shareRead,"collection should not be readonly"),(0,s.assert)(0!==e.length,"plotRows should not be empty"),this._invalidateSearchCaches(),this._minMaxCache.clear(),this._items=e.concat(this._items),this._start=0,this._end=this._items.length,e[0]}_append(e){return(0,s.assert)(!this._shareRead,"collection should not be readonly"),(0,s.assert)(0!==e.length,"plotRows should not be empty"),this._invalidateSearchCaches(),this._minMaxCache.clear(),this._items=this._items.concat(e),this._start=0,this._end=this._items.length,e[0]}_updateLast(e){(0,s.assert)(!this.isEmpty(),"plot list should not be empty");const t=this._items[this._end-1];(0,s.assert)(t.index===e.index,"last row index should match new row index"),this._invalidateCacheForRow(e),this._invalidateSearchCaches(),this._items[this._end-1]=e}_merge(e){return(0,s.assert)(0!==e.length,"plot rows should not be empty"),this._invalidateSearchCaches(),this._minMaxCache.clear(),this._items=u(this._items,e),this._start=0,this._end=this._items.length,e[0]}_minMaxOnRangeCachedImpl(e,t,i){if(this.isEmpty())return null;let r=null;const n=(0,s.ensureNotNull)(this.firstIndex()),o=(0,s.ensureNotNull)(this.lastIndex()),a=Math.max(e,n),l=Math.min(t,o),c=30*Math.ceil(a/30),h=Math.max(c,30*Math.floor(l/30));r=d(r,this._minMaxOnRange(a,Math.min(c,t,l),i));let u=this._minMaxCache.get(i);void 0===u&&(u=new Map,this._minMaxCache.set(i,u));for(let e=Math.max(c+1,a);et[o].index?o++:(n++,o++,r--);return r}(e,t),s=new Array(i);let r=0,n=0;const o=e.length,a=t.length;let l=0;for(;rt[n].index?(s[l]=t[n],n++):(s[l]=t[n],r++,n++),l++;for(;r{"use strict";i.d(t,{PriceAxisView:()=>p});var s=i(86441),r=i(34026),n=i(71413),o=i(68906),a=i(62820),l=i(93435),c=i(84346),h=i(42759),d=i(56589);class u{constructor(e,t){this.setData(e,t)}setData(e,t){ -this._data=e,this._commonData=t}draw(e,t,i,s,r,n,c){var d,u,p;const _=this._data;if(!_.visible||this._isOutOfScreen(t,r))return;const m=this._commonData,g=void 0!==_.labelIcon,f=_.ignoreOffset?0:t.offsetSize,v=t.borderSize,S=t.paddingTop+m.additionalPaddingTop,y=t.paddingBottom+m.additionalPaddingBottom,b=t.paddingInner,w=t.paddingOuter,C=t.fontSize;let P=_.text,T=_.textColor||m.textColor,x=_.secondLine||"",I=m.secondLineTextColor||T,M=_.thirdLine||"";const L=m.thirdLineTextColor||T;0===x.length&&(x=M,I=L,M=""),0===P.length&&(P=x,T=I,x=M,I=L,M=""),e.save(),e.font=t.font;const A=i.yMidCorrection(e,P)*c,E=Math.ceil(i.measureText(e,P)),k=C+S+y,D=Boolean(x),V=Boolean(M),B=D?Math.ceil(i.measureText(e,x)):0,N=V?Math.ceil(i.measureText(e,M)):0,R=v+b+w+E+f,O=B>0?v+b+w+B+f:0,F=N>0?v+b+w+N+f:0,W=Math.max(R,O,F),H=Math.max(1,Math.floor(c));let z=Math.round(k*c);z%2!=H%2&&(z+=1);const U=Math.round((C+t.lineSpacing)*c),j=Math.round(2*(C+t.lineSpacing)*c),G=Math.max(1,Math.floor(v*c)),q=_.separatorVisible?G:0,Y=_.borderVisible?G:0,K=g?z:Math.round(W*c),$=Math.round(f*c),X=Math.ceil(s*c),Z=Math.ceil(b*c),J=Math.round((null!==(d=m.fixedCoordinate)&&void 0!==d?d:m.coordinate)*c)-Math.floor(.5*c),Q=Math.floor(J+H/2-z/2),ee=Q+z,te="right"===n,ie=te?X-q:q,se=X;let re,ne=ie;const oe=(0,o.resetTransparency)(null!==(u=_.backgroung)&&void 0!==u?u:m.background);e.fillStyle=oe;const ae=2*c;if(e.textAlign=te?"right":"left",e.textBaseline="middle",te?(ne=ie-K,re=ie-$-Z-1):(ne=ie+K,re=ie+$+Z),P||g){const i=V?z+j:D?z+U:z;if(((t,s,r)=>{te?(0,h.drawRoundRectWithInnerBorder)(e,ne,Q,K,i,t,[ae,0,0,ae],Y,s,r):(0,h.drawRoundRectWithInnerBorder)(e,ie,Q,K,i,t,[0,ae,ae,0],Y,s,r)})(oe,null!==(p=m.borderColor)&&void 0!==p?p:oe,m.borderStyle),_.separatorVisible&&(e.fillStyle=t.paneBackgroundColor,e.fillRect(te?se-q:0,Q,q,ee-Q)),g){switch(_.labelIcon){case 0:this._drawPlusIcon(e,ie,ne,Q,J,ee,H);break;case 1:this._drawClockIcon(e,ie,ne,J,H,c)}return void e.restore()}e.save(),e.translate(re,(Q+ee)/2+A),(0,l.drawScaled)(e,c,()=>{e.fillStyle=T,e.fillText(P,0,0)}),e.restore()}D&&(e.fillStyle=I,e.save(),e.translate(re,(Q+ee)/2+A+U),(0,l.drawScaled)(e,c,()=>{e.fillText((0,a.startWithLTR)(x),0,0)}),e.restore()),V&&(e.fillStyle=L,e.save(),e.translate(re,(Q+ee)/2+A+j),(0,l.drawScaled)(e,c,()=>{e.fillText((0,a.startWithLTR)(M),0,0)}),e.restore()),e.restore()}height(e){const t=this._lines();return this._data.visible&&0!==t?t*e.fontSize+(t-1)*e.lineSpacing+e.paddingTop+this._commonData.additionalPaddingTop+e.paddingBottom+this._commonData.additionalPaddingBottom:0}hitTest(e){const t=this._data.hitTestData;if(void 0===t||!this._data.visible)return null;const i=(0,n.lastMouseOrTouchEventInfo)().isTouch?10:0,o=(0,s.box)(new s.Point(t.xl-i,t.y-i),new s.Point(t.xl+t.containerWidth+i,t.y+t.containerHeight+i)),a=t.left&&(0,r.pointInBox)(e,o),l=(0,s.box)(new s.Point(t.xr-i,t.y-i),new s.Point(t.xr+t.containerWidth+i,t.y+t.containerHeight+i)),h=t.right&&(0,r.pointInBox)(e,l);if(a||h){const i=a?"left":"right";return new c.HitTestResult(c.HitTestResult.CUSTOM,{ -cursorType:d.PaneCursorType.Default,clickHandler:void 0===t.clickHandler?void 0:t.clickHandler.bind(this,e,i),tapHandler:void 0===t.clickHandler?void 0:t.clickHandler.bind(this,e,i),tooltip:t.tooltip})}return null}_drawPlusIcon(e,t,i,s,r,n,o){e.fillStyle=this._commonData.textColor,e.strokeStyle=this._commonData.textColor,e.lineWidth=o;const a=Math.abs(t-i);let l=Math.round(.35*a);l%2!=o%2&&(l+=1);let c=Math.round(.65*a);c%2!=o%2&&(c+=1);const h=Math.floor((a-l)/2),d=Math.min(t,i),u=d+Math.floor(a/2-o/2);e.fillRect(d+h,r,l,o),e.fillRect(u,s+h,o,l),e.beginPath(),e.arc(u+o/2,r+o/2,c/2,0,2*Math.PI,!1),e.stroke()}_drawClockIcon(e,t,i,s,r,n){e.fillStyle=this._commonData.textColor,e.lineWidth=r;const o=Math.abs(t-i);let a=Math.round(.35*o);a%2!=r%2&&(a+=1);let l=Math.round(.65*o);l%2!=r%2&&(l+=1);const c=Math.min(t,i)+Math.floor(o/2-r/2);e.save(),e.translate(c+r/2-l/2,s+r/2-l/2),e.scale(n,n);const h=new Path2D("M7.5 0.8a1 1 0 0 0 0 13.4 1 1 0 0 0 0-13.4zm0 1a1 1 0 0 1 0 11 1 1 0 0 1 0-11zm-.97-.25A3.5 3.5 0 0 0 3.5 0 3.5 3.5 0 0 0 0 3.5a3.5 3.5 0 0 0 1.75 3.03l.5-.86A2.5 2.5 0 0 1 1 3.5 2.5 2.5 0 0 1 3.5 1a2.5 2.5 0 0 1 2.17 1.25zm6.72 4.78A3.5 3.5 0 0 0 15 3.5 3.5 3.5 0 0 0 11.5 0a3.5 3.5 0 0 0-3.03 1.75l.86.5A2.5 2.5 0 0 1 11.5 1 2.5 2.5 0 0 1 14 3.5a2.5 2.5 0 0 1-1.25 2.17zM7 5h1v5H7zm3 2v1H5V7z");e.fill(h),e.restore()}_lines(){const e=this._data;return(e.text?1:0)+(e.secondLine?1:0)+(e.thirdLine?1:0)}_isOutOfScreen(e,t){var i;const s=this._commonData,r=null!==(i=s.fixedCoordinate)&&void 0!==i?i:s.coordinate,n=this.height(e),o=n/this._lines();return r-o/2-3>t||r+(n-o/2)+3<0}}class p{constructor(e){this._commonRendererData={coordinate:0,textColor:"#FFF",background:"#000",additionalPaddingBottom:0,additionalPaddingTop:0},this._axisRendererData={text:"",visible:!1,separatorVisible:!1,borderVisible:!1,ignoreOffset:!1},this._paneRendererData={text:"",visible:!1,separatorVisible:!0,borderVisible:!1,ignoreOffset:!0},this._invalidated=!0,this._axisRenderer=new(e||u)(this._axisRendererData,this._commonRendererData),this._paneRenderer=new(e||u)(this._paneRendererData,this._commonRendererData)}text(){return this._updateRendererDataIfNeeded(),this._axisRendererData.text}secondLineText(){return this._updateRendererDataIfNeeded(),this._axisRendererData.secondLine}thirdLineText(){return this._updateRendererDataIfNeeded(),this._axisRendererData.thirdLine}background(){return this._updateRendererDataIfNeeded(),this._commonRendererData.background}color(){return this._updateRendererDataIfNeeded(),this.generateTextColor(this.background())}generateTextColor(e){return(0,o.colorFromBackground)(e)}coordinate(){return this._updateRendererDataIfNeeded(),this._commonRendererData.coordinate}floatCoordinate(){var e;return this._updateRendererDataIfNeeded(),null!==(e=this._commonRendererData.floatCoordinate)&&void 0!==e?e:this._commonRendererData.coordinate}update(e){this._invalidated=!0}height(e){return this._updateRendererDataIfNeeded(),Math.max(this._axisRenderer.height(e),this._paneRenderer.height(e))}getFixedCoordinate(){ -return this._commonRendererData.fixedCoordinate||0}setFixedCoordinate(e){this._commonRendererData.fixedCoordinate=e}isVisible(){return this._updateRendererDataIfNeeded(),this._axisRendererData.visible||this._paneRendererData.visible}isAxisLabelVisible(){return this._updateRendererDataIfNeeded(),this._axisRendererData.visible}isPaneLabelVisible(){return this._updateRendererDataIfNeeded(),this._paneRendererData.visible}renderer(){return this._updateRendererDataIfNeeded(),this._axisRenderer}paneRenderer(){return this._updateRendererDataIfNeeded(),this._paneRenderer}setPaneRendererLabelIcon(e){this._paneRendererData.labelIcon=e}setPaneLabelVisible(e){this._paneRendererData.visible=e,this._invalidated=!0}ignoreAlignment(){return!1}_updateRendererDataIfNeeded(){this._invalidated&&(this._commonRendererData.fixedCoordinate=void 0,this._updateRendererData(this._axisRendererData,this._paneRendererData,this._commonRendererData),this._invalidated=!1)}}},22932:(e,t,i)=>{"use strict";i.d(t,{isPriceDataSource:()=>a,PriceDataSource:()=>l});var s=i(62443),r=i(2872),n=i.n(r),o=i(79680);function a(e){return e instanceof l}class l extends s.DataSource{constructor(e,t){super(t),this._formatterChanged=new(n()),this._priceStepChanged=new(n()),this._currencyChanged=new(n()),this._unitChanged=new(n()),this._priceRangeReadyChanged=new(n()),this._priceStep=null,this._priceRangeReady=!0,this._model=e}barColorer(){return null}base(){return 0}model(){return this._model}currencyChanged(){return this._currencyChanged}isCurrencySource(){return!0}unitChanged(){return this._unitChanged}isUnitSource(){return!0}priceRange(e,t){return null}isDraggable(){return!0}priceLineColor(e){return e}formatterChanged(){return this._formatterChanged}priceStep(e){return this._priceStep}priceStepChanged(){return this._priceStepChanged}isIncludedInAutoScale(){return!0}correctScaleMargins(e){return e}priceRangeReady(){return this._priceRangeReady}priceRangeReadyChanged(){return this._priceRangeReadyChanged}disablePriceRangeReady(){const e=this.priceScale();null===e||e.isAutoScale()||e.mainSource()!==this||(this._priceRangeReady=!1,e.recalculatePriceRangeOnce()),this._priceRangeReadyChanged.fire(!1)}statusView(){return null}legendView(){return null}marketStatusModel(){return null}dataUpdatedModeModel(){return null}dataProblemModel(){return null}_enablePriceRangeReady(){this._priceRangeReady=!0,this._priceRangeReadyChanged.fire(!0)}_onSourceCurrencyChanged(){(0,o.isActingAsSymbolSource)(this)||this._currencyChanged.fire()}_onSourceUnitChanged(){(0,o.isActingAsSymbolSource)(this)||this._unitChanged.fire()}_onSourcePriceRangeReadyChanged(e){(0,o.isActingAsSymbolSource)(this)||e||this.disablePriceRangeReady()}}},55057:(e,t,i)=>{"use strict";i.d(t,{PriceLineAxisView:()=>c,SeriesPriceLineAxisView:()=>h,StudyPriceLineAxisView:()=>d});var s=i(97938),r=i(88537),n=i(29892),o=i(43891),a=i(42759);class l{constructor(e,t){this.setData(e,t)}setData(e,t){this._data=e,this._commonData=t}draw(e,t,i,s,l,c,h){var d;if(!this._data.visible)return -;const u=null!==(d=this._commonData.fixedCoordinate)&&void 0!==d?d:this._commonData.coordinate;e.lineWidth=Math.max(1,Math.floor((0,r.ensureDefined)(this._data.linewidth)*h)),e.lineCap="butt",(0,n.setLineStyle)(e,void 0===this._data.linestyle?o.LINESTYLE_DOTTED:this._data.linestyle),e.strokeStyle=this._commonData.textColor,(0,a.drawHorizontalLine)(e,Math.round(u*h),0,Math.ceil(s*h))}height(e){return 0}}class c extends s.PriceAxisView{constructor(e){super(e||l)}ignoreAlignment(){return!0}_updateRendererData(e,t,i){if(t.visible=!1,e.visible=!1,!this._isVisible())return;const s=this._value();s.noData||(i.background="",i.textColor=this._priceLineColor(s.color),i.coordinate=s.coordinate,i.floatCoordinate=s.floatCoordinate,e.linewidth=this._lineWidth(),e.linestyle=this._lineStyle(),e.backgroundAreaVisible=this._backgroundAreaVisible(),e.backgroundAreaColor=this._backgroundAreaColor(),e.backgroundAreaHeight=this._backgroundAreaHeight(),e.visible=!0)}_lineStyle(){return o.LINESTYLE_DOTTED}_backgroundAreaVisible(){return!1}_backgroundAreaColor(){return""}_backgroundAreaHeight(){return 0}}class h extends c{constructor(e){super(),this._series=e}_value(){return this._series.lastValueData(void 0,!0)}_priceLineColor(e){return this._series.priceLineColor(e)}_lineWidth(){return this._series.properties().childs().priceLineWidth.value()}_isVisible(){const e=this._series.model().properties().childs().scalesProperties.childs().showSeriesLastValue.value();return this._series.properties().childs().showPriceLine.value()&&e}}class d extends c{constructor(e,t){super(),this._study=e,this._plotname=t}_value(){return this._study.lastValueData(this._plotname,!0)}_lineWidth(){return this._study.properties().styles[this._plotname].linewidth.value()}_lineStyle(){return o.LINESTYLE_DOTTED}_priceLineColor(e){return e}_isVisible(){const e=this._study.model().properties().childs().scalesProperties.childs().showStudyLastValue.value();return this._study.properties().styles[this._plotname].trackPrice.value()&&e}}},27402:(e,t,i)=>{"use strict";i.d(t,{PriceScaleBase:()=>L});var s=i(88537),r=i(80643),n=i(2872),o=i.n(n),a=i(55257),l=i(69927),c=i(74477),h=i(56972),d=i(22932),u=i(2015),p=i.n(u),_=i(81851),m=i(79680),g=i(37667),f=i(79222),v=i(59555),S=i(64514);class y{constructor(e,t){if(this._base=e,this._integralDividers=t,(0,S.isBaseDecimal)(this._base))this._fractionalDividers=[2,2.5,2];else{this._fractionalDividers=[];for(let e=this._base;1!==e;){if(e%2==0)this._fractionalDividers.push(2),e/=2;else{if(e%5!=0)throw new Error("unexpected base");this._fractionalDividers.push(2),this._fractionalDividers.push(2.5),e/=5}if(this._fractionalDividers.length>100)throw new Error("something wrong with base")}}}tickSpan(e,t,i){const s=0===this._base?0:1/this._base;let r=Math.pow(10,Math.max(0,Math.ceil((0,S.log10)(e-t)))),n=0,o=this._integralDividers[0];for(;;){const e=(0,S.greaterOrEqual)(r,s,1e-14)&&r>s+1e-14,t=(0,S.greaterOrEqual)(r,i*o,1e-14),a=(0,S.greaterOrEqual)(r,1,1e-14);if(!(e&&t&&a))break;r/=o,o=this._integralDividers[++n%this._integralDividers.length]} -if(r<=s+1e-14&&(r=s),r=Math.max(1,r),this._fractionalDividers.length>0&&(0,S.equal)(r,1,1e-14))for(n=0,o=this._fractionalDividers[0];(0,S.greaterOrEqual)(r,i*o,1e-14)&&r>s+1e-14;)r/=o,o=this._fractionalDividers[++n%this._fractionalDividers.length];return r}}class b{constructor(e,t,i,s){this._marks=null,this._priceScale=e,this._base=t,this._coordinateToLogicalFunc=i,this._logicalToCoordinateFunc=s}base(){return this._base}setBase(e){if(e<0)throw new Error("base < 0");this._base=e}tickSpan(e,t,i=0){if(ei&&(l=c);const h=o.tickSpan(e,t,r);h>i&&(l=Math.min(l,h));const d=a.tickSpan(e,t,r);return d>i&&(l=Math.min(l,d)),l>0?l:e-t}rebuildTickMarks(){this._marks=null}marks(){return null===this._marks&&(this._marks=this._rebuildTickMarksImpl()),this._marks}_fontHeight(){return this._priceScale.fontSize()}_tickMarkHeight(){return Math.ceil(2.5*this._fontHeight())}_rebuildTickMarksImpl(){const e=this._priceScale,t=[],i=e.mainSource();if(e.isEmpty()||null===i)return t;let s=i.firstValue();null===s&&(s=0);const r=e.height(),n=this._coordinateToLogicalFunc(r-1,s),o=this._coordinateToLogicalFunc(0,s),a=Math.max(n,o),l=Math.min(n,o);if(a===l)return t;let c=this.tickSpan(a,l),h=a%c;h+=h<0?c:0;const d=a>=l?1:-1;let u=null;const p=e.formatter();let _=NaN;for(let i=a-h;i>l;i-=c){i===_&&(c=this.tickSpan(a,l,c)),_=i;const r=this._logicalToCoordinateFunc(i,s);null!==u&&Math.abs(r-u)t!==e&&(0,d.isPriceDataSource)(t)&&!((0,_.isStudy)(t)&&t.isLinkedToSeries()))}updateAllViews(e){const t=this._getSourcesToUpdateViews();for(const i of t)i.updateAllViews(e)}logFormula(){return this._logFormula}state(){var e;const t=this._properties.childs();return{id:this._id,m_priceRange:(null===(e=this.priceRange())||void 0===e?void 0:e.serialize())||null,m_isAutoScale:this.isAutoScale(),m_isPercentage:t.percentage.value(),m_isIndexedTo100:t.indexedTo100.value(),m_isLog:t.log.value(),m_isLockScale:this.isLockScale(),m_isInverted:this.isInverted(),m_height:this.m_height,m_topMargin:this._margins.top,m_bottomMargin:this._margins.bottom,alignLabels:t.alignLabels.value(),logFormula:(0,r.clone)(this._logFormula)}}restoreState(e){let t=e.m_priceRange;if(void 0===t)throw new TypeError("invalid state");if(void 0===e.m_isAutoScale)throw new TypeError("invalid state");void 0!==e.id&&(this._id=e.id);const i={autoScale:e.m_isAutoScale} -;void 0!==e.m_isPercentage&&(i.percentage=e.m_isPercentage),void 0!==e.m_isIndexedTo100&&(i.indexedTo100=e.m_isIndexedTo100),void 0!==e.m_isLog&&(i.log=e.m_isLog),void 0!==e.m_isLockScale&&(i.lockScale=e.m_isLockScale),void 0!==e.m_isInverted&&this._properties.childs().isInverted.setValue(e.m_isInverted),void 0!==e.m_height&&this.setHeight(Math.max(0,e.m_height)),this.setMode(i),t?(t instanceof l.PriceRange||(t=new l.PriceRange(t)),this.setPriceRange(t,!0)):this.m_priceRange=null,e.logFormula&&(this._logFormula=e.logFormula),void 0!==e.m_topMargin&&(this._margins.top=e.m_topMargin),void 0!==e.m_bottomMargin&&(this._margins.bottom=e.m_bottomMargin),void 0!==e.alignLabels&&this._properties.childs().alignLabels.setValue(e.alignLabels),this._mainSource=null,this._scaleSeriesOnly=!1}priceToLogical(e){return this.isLog()&&e?(0,c.toLog)(e,this._logFormula):e}logicalToPrice(e){return this.isLog()?(0,c.fromLog)(e,this._logFormula):e}priceToCoordinate(e,t){const i=this._priceToPercentOrIndexedTo100IfNeeded(e,t);return this._logicalToCoordinate(i)}coordinateToPrice(e,t){let i=this._coordinateToLogical(e);return this.isPercentage()?i=(0,c.fromPercent)(i,t):this.isIndexedTo100()&&(i=(0,c.fromIndexedTo100)(i,t)),i}mainSource(){if(null!==this._mainSource)return this._mainSource;let e;for(const t of this.m_dataSources){if(t instanceof h.Series){e=t;break}!e&&(0,d.isPriceDataSource)(t)&&(e=t)}return this._mainSource=e||null,this._correctedMarginsCache=null,this._mainSource}pricesArrayToCoordinates(e,t,i){this._makeSureItIsValid();const r=this.bottomPixelMargin(),n=(0,s.ensureNotNull)(this.priceRange()),o=n.minValue(),a=n.maxValue(),l=this.internalHeight()-1,h=this.isInverted(),d=l/(a-o);void 0===i&&(i=e.length);const u=this.isPercentage(),p=this.isIndexedTo100(),_=this.isLog(),m=this.m_height;let g,f;for(let s=0;se?(0,c.toLog)(e,this._logFormula):e),0===r.length)return -;const d="open"in r[0],u="close"in r[0];if(null!==h)for(let e=0;ethis._currencyCache=null),e.unitChanged().subscribe(this,()=>this._unitCache=null),(0,m.isSymbolSource)(e)&&(this._seriesLikeSources.push(e),e.symbolResolved().subscribe(this,()=>{this._currencyCache=null,this._unitCache=null}),e.isActingAsSymbolSource().subscribe(this._boundOnSourceIsActingAsSymbolSourceChanged),e instanceof h.Series))){const t=e.properties();this._hasSeries||(t.childs().lockScale&&(this.setMode({lockScale:t.childs().lockScale.value()}),t.removeProperty("lockScale")),t.childs().pnfStyle.child("lockScale")&&t.childs().pnfStyle.removeProperty("lockScale")),this._hasSeries=!0}e.properties().visible.listeners().subscribe(this,this._dropScaleCache),(0,_.isStudy)(e)&&(e.onIsActualIntervalChange().subscribe(this,this._dropScaleCache),e.onHibernationStateChange().subscribe(this,this._dropScaleCache),0===this._studiesCount&&(0, -C.hideAllIndicators)().subscribe(this,this._dropScaleCache),this._studiesCount++),(0,w.isLineTool)(e)&&(0===this._drawingCount&&(0,C.hideAllDrawings)().subscribe(this,this._dropScaleCache),this._drawingCount++),this.m_dataSources.push(e),this._mainSource=null,this._correctedMarginsCache=null,this._sourcesToUpdateViews=null,this._dropScaleCache(),this.updateFormatter(),this._initScaleProperties(),this.invalidateSourcesCache()}}removeDataSource(e){const t=this.m_dataSources.indexOf(e);if((0,s.assert)(-1!==t,"Source is not attached to scale"),e.properties().visible.listeners().unsubscribe(this,this._dropScaleCache),this.m_dataSources.splice(t,1),(0,d.isPriceDataSource)(e)){const t=this._priceDataSources.indexOf(e);if((0,s.assert)(-1!==t,"Source is not found"),this._priceDataSources.splice(t,1),(0,m.isSymbolSource)(e)){const t=this._seriesLikeSources.indexOf(e);(0,s.assert)(-1!==t,"Source is not found"),this._seriesLikeSources.splice(t,1),e.symbolResolved().unsubscribeAll(this),e.isActingAsSymbolSource().unsubscribe(this._boundOnSourceIsActingAsSymbolSourceChanged),e instanceof h.Series&&(this._hasSeries=!1)}e.currencyChanged().unsubscribeAll(this),e.unitChanged().unsubscribeAll(this)}this.mainSource()||this.setMode({autoScale:!0}),(0,_.isStudy)(e)&&(e.onIsActualIntervalChange().unsubscribe(this,this._dropScaleCache),e.onHibernationStateChange().unsubscribe(this,this._dropScaleCache),this._studiesCount--,0===this._studiesCount&&(0,C.hideAllIndicators)().unsubscribe(this,this._dropScaleCache)),(0,w.isLineTool)(e)&&(this._drawingCount--,0===this._drawingCount&&(0,C.hideAllDrawings)().unsubscribe(this,this._dropScaleCache)),this._mainSource=null,this._correctedMarginsCache=null,this._sourcesForAutoscale=null,this._sourcesToUpdateViews=null,this.updateFormatter(),this.invalidateSourcesCache(),0===this.m_dataSources.length&&this._lastSourceRemoved.fire(),this._currencyCache=null,this._unitCache=null}currency(e){if(null!==this._currencyCache&&e.size()===this._currencyCache.availableCurrenciesCount)return this._currencyCache.value;let t;const i=new Set,r=new Set,n=new Set,o=new Map;let a,l=0===this._seriesLikeSources.length,c=!0,h=0,d=0;const u=this._seriesLikeSources.filter(m.isActingAsSymbolSource);for(const d of u){if(!d.isVisible())continue;const u=d.symbolInfo();if(null===u){t=null;break}const p=(0,g.symbolOriginalCurrency)(u);if(null===p){t=null;break}o.set(p,(0,s.ensureNotNull)((0,g.symbolOriginalCurrency)(u,!0)));const _=d.currency();if(null===_){t=null;break}o.set(_,(0,s.ensureNotNull)((0,g.symbolCurrency)(u,!0)));const m=(0,g.symbolBaseCurrency)(u);null!==m&&r.add(m),c=c&&p===_,n.add(_),i.add(p),void 0===a?a=_:null!==a&&a!==_&&(a=null),l||e.convertible(_)&&(0,g.symbolCurrencyConvertible)(u)||(l=!0),h+=1}if(null!==t)for(const i of this._priceDataSources){if(u.includes(i))continue;const r=i;if(!r.isCurrencySource()||!r.isVisible())continue;const c=r.currency();if(null===c){t=null;break}n.add(c),d+=1;const h=(0,s.ensureNotNull)(r.symbolSource()),p=r.currencySourceSymbolInfo();if(null===p){t=null;break} -if(l||e.convertible(c)&&(0,g.symbolCurrencyConvertible)(p)||(l=!0),o.set(c,(0,s.ensureNotNull)((0,g.symbolCurrency)(p,!0))),u.includes(h)||(l=!0),void 0===a)a=c;else if(null!==a&&a!==c){a=null;break}}return void 0===t&&(t=0===h&&0===d?null:{readOnly:l,selectedCurrency:a||null,currencies:n,originalCurrencies:i,baseCurrencies:r,symbolSourceCount:h,allCurrenciesAreOriginal:c,displayedValues:o}),this._currencyCache={value:t,availableCurrenciesCount:e.size()},t}unit(e){if(null!==this._unitCache&&e.size()===this._unitCache.availableUnitsCount)return this._unitCache.value;let t;const i=new Set,r=new Set,n=new Map,o=new Map;let l,c=0===this._seriesLikeSources.length?new Set:e.allGroups(),h=!0,d=0,u=0;const p=this._seriesLikeSources.filter(m.isActingAsSymbolSource);for(const s of p){if(!s.isVisible())continue;const u=s.symbolInfo();if(null===u){t=null;break}const p=(0,g.symbolOriginalUnit)(u,s.model().unitConversionEnabled());if(null===p){t=null;break}n.set(p,e.name(p)),o.set(p,e.description(p));const _=s.unit();if(null===_){t=null;break}if(n.set(_,e.name(_)),o.set(_,e.description(_)),h=h&&p===_,r.add(_),i.add(p),void 0===l?l=_:null!==l&&l!==_&&(l=null),c.size>0){const t=(0,f.unitConvertibleGroups)(u,_,e);c=(0,a.intersect)(c,new Set(t))}d+=1}if(null!==t)for(const i of this._priceDataSources){if(p.includes(i))continue;const h=i;if(!h.isUnitSource()||!h.isVisible())continue;const d=h.unit();if(null===d){t=null;break}r.add(d),u+=1;const _=(0,s.ensureNotNull)(h.symbolSource()),m=_.symbolInfo();if(null===m){t=null;break}if(c.size>0){const t=(0,f.unitConvertibleGroups)(m,d,e);c=(0,a.intersect)(c,new Set(t))}if(n.set(d,e.name(d)),o.set(d,e.description(d)),p.includes(_)||(c=new Set),void 0===l)l=d;else if(null!==l&&l!==d){l=null;break}}if(void 0===t)if(0===d&&0===u)t=null;else{t={availableGroups:c,selectedUnit:l||null,units:r,originalUnits:i,symbolSourceCount:d,allUnitsAreOriginal:h,names:n,descriptions:o}}return this._unitCache={value:t,availableUnitsCount:e.size()},t}setMargins(e){if(!(0,r.isNumber)(e.top)||!(0,r.isNumber)(e.bottom))throw new TypeError("invalid margin");if(e.top<0||e.top>30||e.bottom<0||e.bottom>30)throw new RangeError("invalid margin");this._margins.top===e.top&&this._margins.bottom===e.bottom||(this._margins=e,this._correctedMarginsCache=null,this._invalidateInternalHeightCache(),this._marksCache=null)}topMargin(){return this._correctedMargins().top}bottomMargin(){return this._correctedMargins().bottom}invalidateMargins(){this._correctedMarginsCache=null}topPixelMargin(){return this.isInverted()?this.bottomMargin()*this.height()+this._bottomPixelMargin:this.topMargin()*this.height()+this._topPixelMargin}bottomPixelMargin(){return this.isInverted()?this.topMargin()*this.height()+this._topPixelMargin:this.bottomMargin()*this.height()+this._bottomPixelMargin}marks(){return this._makeSureItIsValid(),null===this._marksCache&&(this._markBuilder.rebuildTickMarks(),this._marksCache=this._markBuilder.marks(),this._onMarksChanged.fire()),this._marksCache}onMarksChanged(){return this._onMarksChanged}priceRangeInPrice(){ -if(this.isEmpty())return null;const e=this.mainSource();if(null===e)return null;const t=(0,s.ensureNotNull)(e.firstValue()),i=this.height();return{from:this.coordinateToPrice(i-1,t),to:this.coordinateToPrice(0,t)}}setPriceRangeInPrice(e){if(this.isPercentage()||this.isIndexedTo100())return;const t=this.isInverted(),i=t?this.bottomMargin():this.topMargin(),s=t?this.topMargin():this.bottomMargin(),r=this.isLog();let n=r?(0,c.toLog)(e.from,this._logFormula):e.from,o=r?(0,c.toLog)(e.to,this._logFormula):e.to;const a=o-n;n+=s*a,o-=i*a,this.setMode({autoScale:!1}),this.setPriceRange(new l.PriceRange(n,o)),this._marksCache=null,this._onMarksChanged.fire()}hasMainSeries(){return this._hasSeries}getStudies(){return this.dataSources().filter(_.isStudy)}lastSourceRemoved(){return this._lastSourceRemoved}sourcesForAutoscale(){return this._mainSource&&this._scaleSeriesOnly!==this._scalesProperties.childs().scaleSeriesOnly.value()&&(this._sourcesForAutoscale=null),this._sourcesForAutoscale||(this._sourcesForAutoscale=this._recalculateSourcesForAutoscale()),this._sourcesForAutoscale}recalculatePriceRange(e){this._invalidatedForRange={visibleBars:e,isValid:!1}}internalHeightChanged(){return this._internalHeightChanged}orderedSources(){if(this._cachedOrderedSoruces)return this._cachedOrderedSoruces;let e=this.m_dataSources.slice();return e=(0,v.sortSources)(e),this._cachedOrderedSoruces=e,this._cachedOrderedSoruces}invalidateSourcesCache(){this._cachedOrderedSoruces=null,this._sourcesToUpdateViews=null}startScale(e){var t,i;this.isEmpty()||this.isPercentage()||this.isIndexedTo100()||null!==this._scaleStartPoint||null!==this._priceRangeSnapshot||(this._scaleStartPoint=this.m_height-e,this._priceRangeSnapshot=null!==(i=null===(t=this.priceRange())||void 0===t?void 0:t.clone())&&void 0!==i?i:null)}scaleTo(e){if(this.isPercentage()||this.isIndexedTo100()||null===this._scaleStartPoint)return;this.setMode({autoScale:!1}),(e=this.m_height-e)<0&&(e=0);let t=(this._scaleStartPoint+.2*(this.m_height-1))/(e+.2*(this.m_height-1));const i=(0,s.ensureNotNull)(this._priceRangeSnapshot).clone();t=Math.max(t,.1),i.scaleAroundCenter(t),this.setPriceRange(i)}endScale(){this.isPercentage()||this.isIndexedTo100()||null!==this._scaleStartPoint&&(this._scaleStartPoint=null,this._priceRangeSnapshot=null)}startTwoPointsScale(e,t){if(this.isEmpty()||this.isPercentage()||this.isIndexedTo100()||null!==this._twoPointsScaleStartPosition)return;const i=Math.min(e,t),s=Math.max(e,t);this._twoPointsScaleStartPosition={topLogical:this._coordinateToLogical(i),bottomLogical:this._coordinateToLogical(s)}}twoPointsScale(e,t){if(this.isPercentage()||this.isIndexedTo100()||null===this._twoPointsScaleStartPosition)return;this.setMode({autoScale:!1});const i=Math.min(e,t),s=Math.max(e,t),{topLogical:r,bottomLogical:n}=this._twoPointsScaleStartPosition,o=this.bottomPixelMargin(),a=this.internalHeight()-1,c=(this._invertedCoordinate(i)-o)/a,h=(n-r)/((this._invertedCoordinate(s)-o)/a-c),d=r-h*c,u=d+h -;this.setPriceRange(new l.PriceRange(this.priceToLogical(d),this.priceToLogical(u)))}endTwoPointsScale(){this._twoPointsScaleStartPosition=null}startScroll(e){var t,i;this.isAutoScale()||null===this._scrollStartPoint&&null===this._priceRangeSnapshot&&(this.isEmpty()||(this._scrollStartPoint=e,this._priceRangeSnapshot=null!==(i=null===(t=this.priceRange())||void 0===t?void 0:t.clone())&&void 0!==i?i:null))}scrollTo(e){if(this.isAutoScale())return;if(null===this._scrollStartPoint||null===this._priceRangeSnapshot)return;const t=this.priceRange();if(null===t)return;let i=e-this._scrollStartPoint;this.isInverted()&&(i*=-1);const s=i*(t.length()/(this.internalHeight()-1)),r=this._priceRangeSnapshot.clone();r.shift(s),this.setPriceRange(r,!0),this._marksCache=null}endScroll(){this.isAutoScale()||null!==this._scrollStartPoint&&(this._scrollStartPoint=null,this._priceRangeSnapshot=null)}_recalculateSourcesForAutoscale(){this._mainSource&&(this._scaleSeriesOnly=this._scalesProperties.childs().scaleSeriesOnly.value());const e=this._scaleSeriesOnly&&this._hasSeries;return this.m_dataSources.filter(t=>!!(t.properties().visible.value()||t instanceof h.Series)&&(e?t instanceof h.Series:(0,_.isStudy)(t)?!t.isSourceHidden()&&t.isIncludedInAutoScale():t.isIncludedInAutoScale()))}_updateAutoScaleDisabledProperty(e){const t=this._properties.childs(),i=t.indexedTo100.value()||t.percentage.value()||t.lockScale.value();e?t.autoScaleDisabled.setValueSilently(i):t.autoScaleDisabled.setValue(i)}_setAutoScaleValueWithDependentProperties(e){const t=this._properties.childs();t.autoScale.setValueSilently(e),e&&(t.percentage.setValueSilently(!1),t.indexedTo100.setValueSilently(!1),t.lockScale.setValueSilently(!1),t.logDisabled.setValueSilently(!1)),this._updateAutoScaleDisabledProperty(!0)}_setLockScaleValueWithDependentProperties(e){const t=this._properties.childs();t.lockScale.setValueSilently(e),e&&(t.autoScale.setValueSilently(!1),t.percentage.setValueSilently(!1),t.indexedTo100.setValueSilently(!1),t.log.setValueSilently(!1)),t.percentageDisabled.setValueSilently(e),t.logDisabled.setValueSilently(e),this._updateAutoScaleDisabledProperty(!0)}_setPercentageValueWithDependentProperties(e){const t=this._properties.childs();t.percentage.setValueSilently(e),e&&(t.autoScale.setValueSilently(!0),t.log.setValueSilently(!1),t.lockScale.setValueSilently(!1),t.indexedTo100.setValueSilently(!1)),this._updateAutoScaleDisabledProperty(!0)}_setIndexedTo100ValueWithDependentProperties(e){const t=this._properties.childs();t.indexedTo100.setValueSilently(e),e&&(t.autoScale.setValueSilently(!0),t.log.setValueSilently(!1),t.lockScale.setValueSilently(!1),t.percentage.setValueSilently(!1)),this._updateAutoScaleDisabledProperty(!0)}_setLogValueWithDependentProperties(e){const t=this._properties.childs();t.log.setValueSilently(e),e&&(t.lockScale.setValueSilently(!1),t.percentage.setValueSilently(!1),t.indexedTo100.setValueSilently(!1)),this._updateAutoScaleDisabledProperty(!0)}_recalculatePriceRangeImpl(){const e=this._invalidatedForRange.visibleBars -;if(null===e)return;let t=null;const i=this.sourcesForAutoscale(),s=this.isPercentage(),r=this.isIndexedTo100();let n=0,o=0;for(const a of i){if(!a.properties().visible.value())continue;const i=a.firstValue();if(null===i||s&&0===i)continue;const l=e.firstBar(),h=e.lastBar(),d=a.autoScaleInfo(l,h);let u=d.range;u&&(s?u=(0,c.toPercentRange)(u,i):r&&(u=(0,c.toIndexedTo100Range)(u,i)),t=null===t?u:t.merge(u)),void 0!==d.topPixelMargin&&(n=Math.max(n,d.topPixelMargin)),void 0!==d.bottomPixelMargin&&(o=Math.max(o,d.bottomPixelMargin))}if((Math.abs(n-this._topPixelMargin)>0||Math.abs(o-this._bottomPixelMargin)>0)&&(this._bottomPixelMargin=o,this._topPixelMargin=n,this._marksCache=null,this._invalidateInternalHeightCache()),t){if(t.minValue()===t.maxValue()&&(t=new l.PriceRange(t.minValue()-.5,t.maxValue()+.5)),this.isLog()){const e=this._convertPriceRangeFromLog(t),i=(0,c.logFormulaForPriceRange)(e);if(!(0,c.logFormulasAreSame)(i,this._logFormula)){const s=this._priceRangeSnapshot?this._convertPriceRangeFromLog(this._priceRangeSnapshot):null;this._logFormula=i,t=this._convertPriceRangeToLog(e),s&&(this._priceRangeSnapshot=this._convertPriceRangeToLog(s))}}this.setPriceRange(t)}else this.m_priceRange||(this.setPriceRange(new l.PriceRange(-.5,.5)),this._logFormula=(0,c.logFormulaForPriceRange)(null));this._invalidatedForRange.isValid=!0;const a=this.mainSource();null!==a&&this._recalculatePriceRangeOnce&&(this._recalculatePriceRangeOnce=!a.priceRangeReady())}_makeSureItIsValid(){this._invalidatedForRange.isValid||(this._invalidatedForRange.isValid=!0,this._recalculatePriceRangeImpl())}_invalidateInternalHeightCache(){this._internalHeightCache=null,this._internalHeightChanged.fire()}_coordinateToLogical(e){if(this._makeSureItIsValid(),this.isEmpty())return 0;const t=this._invertedCoordinate(e),i=(0,s.ensureNotNull)(this.priceRange()),r=i.minValue()+(i.maxValue()-i.minValue())*((t-this.bottomPixelMargin())/(this.internalHeight()-1));return this.logicalToPrice(r)}_logicalToCoordinate(e){if(this._makeSureItIsValid(),this.isEmpty())return 0;e=this.priceToLogical(e);const t=(0,s.ensureNotNull)(this.priceRange()),i=this.bottomPixelMargin()+(this.internalHeight()-1)*(e-t.minValue())/(t.maxValue()-t.minValue());return this._invertedCoordinate(i)}_dropScaleCache(){this._sourcesForAutoscale=null,this._currencyCache=null,this._unitCache=null}_invertedCoordinate(e){return this.isInverted()?e:this.height()-1-e}_initScaleProperties(){const e=this.isLockScale(),t=this.properties().childs();e&&(t.percentage.setValue(!1),t.indexedTo100.setValue(!1),t.log.setValue(!1),t.autoScale.setValue(!1)),t.percentageDisabled.setValue(e),t.logDisabled.setValue(e),this._updateAutoScaleDisabledProperty(!1),t.percentage.value()&&(t.log.setValue(!1),t.indexedTo100.setValue(!1)),t.indexedTo100.value()&&(t.log.setValue(!1),t.percentage.setValue(!1))}_correctedMargins(){if(null===this._correctedMarginsCache){const e=this.mainSource();this._correctedMarginsCache=null!==e?e.correctScaleMargins(this._margins):this._margins}return this._correctedMarginsCache} -_getSourcesToUpdateViews(){return this._sourcesToUpdateViews||(this._sourcesToUpdateViews=this.m_dataSources.filter(e=>!(0,w.isLineTool)(e)||e.isActualSymbol()&&e.isActualCurrency())),this._sourcesToUpdateViews}_mainSourceFormatter(){const e=this.mainSource();return(null==e?void 0:e.formatter())||I}_priceToPercentOrIndexedTo100IfNeeded(e,t){return this.isPercentage()?(0,c.toPercent)(e,t):this.isIndexedTo100()?(0,c.toIndexedTo100)(e,t):e}_onSourceIsActingAsSymbolSourceChanged(){this._dropScaleCache()}}},3825:(e,t,i)=>{"use strict";var s;i.d(t,{PriceAxisLastValueMode:()=>s}),function(e){e[e.LastPriceAndPercentageValue=0]="LastPriceAndPercentageValue",e[e.LastValueAccordingToScale=1]="LastValueAccordingToScale"}(s||(s={}))},74477:(e,t,i)=>{"use strict";i.r(t),i.d(t,{fromPercent:()=>o,toPercent:()=>a,toPercentRange:()=>l,fromIndexedTo100:()=>c,toIndexedTo100:()=>h,toIndexedTo100Range:()=>d,toLog:()=>u,fromLog:()=>p,logFormulaForPriceRange:()=>_,logFormulasAreSame:()=>m,getCurrentModePriceText:()=>g,getOppositeModePriceText:()=>f});var s=i(69927),r=i(64514);const n={logicalOffset:4,coordOffset:1e-4};function o(e,t){return t<0&&(e=-e),e/100*t+t}function a(e,t){const i=100*(e-t)/(t||1);return t<0?-i:i}function l(e,t){const i=a(e.minValue(),t),r=a(e.maxValue(),t);return new s.PriceRange(i,r)}function c(e,t){return t<0&&(e=-e),(e-=100)/100*t+t}function h(e,t){const i=100*(e-t)/t+100;return t<0?-i:i}function d(e,t){const i=h(e.minValue(),t),r=h(e.maxValue(),t);return new s.PriceRange(i,r)}function u(e,t){const i=Math.abs(e);if(i<1e-15)return 0;const s=(0,r.log10)(i+t.coordOffset)+t.logicalOffset;return e<0?-s:s}function p(e,t){const i=Math.abs(e);if(i<1e-15)return 0;const s=Math.pow(10,i-t.logicalOffset)-t.coordOffset;return e<0?-s:s}function _(e){if(null===e)return n;const t=Math.abs(e.maxValue()-e.minValue());if(t>=1||t<1e-15)return n;const i=Math.ceil(Math.abs(Math.log10(t))),s=n.logicalOffset+i;return{logicalOffset:s,coordOffset:1/Math.pow(10,s)}}function m(e,t){return e.logicalOffset===t.logicalOffset&&e.coordOffset===t.coordOffset}function g(e,t){return e.isPercentage()?t.formattedPricePercentage:e.isIndexedTo100()?t.formattedPriceIndexedTo100:t.formattedPriceAbsolute}function f(e,t){return e.isPercentage()||e.isIndexedTo100()?t.formattedPriceAbsolute:t.formattedPricePercentage}},69927:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PriceRange:()=>n});var s=i(80643);const r=(0,i(98125).getLogger)("Chart.PriceRange");class n{constructor(e,t){if(null!==e&&"object"==typeof e){const t=e;this._minValue=t.m_minValue,this._maxValue=t.m_maxValue}else{const i=e;this._minValue=i,void 0!==t&&(this._maxValue=t)}}equals(e){return this._minValue===e._minValue&&this._maxValue===e._maxValue}clone(){return new n(this._minValue,this._maxValue)}minValue(){return this._minValue}setMinValue(e){this._minValue=e}maxValue(){return this._maxValue}setMaxValue(e){this._maxValue=e}length(){return this._maxValue-this._minValue}isEmpty(){return this._maxValue===this._minValue||this._maxValue!=this._maxValue||this._minValue!=this._minValue}serialize(){return{ -m_maxValue:this._maxValue,m_minValue:this._minValue}}state(){return{max:this._maxValue,min:this._minValue}}merge(e){return new n(Math.min(this.minValue(),e.minValue()),Math.max(this.maxValue(),e.maxValue()))}apply(e,t){this._minValue=Math.min(this._minValue,e),this._maxValue=Math.max(this._maxValue,t)}set(e,t){this._minValue=e,this._maxValue=t}scaleAroundCenter(e){if(!(0,s.isNumber)(e))return void r.logDebug("PriceRange.scaleAroundCenter: invalid coeff");if(0===this._maxValue-this._minValue)return;const t=.5*(this._maxValue+this._minValue);let i=this._maxValue-t,n=this._minValue-t;i*=e,n*=e,this._maxValue=t+i,this._minValue=t+n}shift(e){(0,s.isNumber)(e)?(this._maxValue+=e,this._minValue+=e):r.logDebug("PriceRange.shift: invalid coeff")}containsStrictly(e){return e.minValue()>this._minValue&&e.maxValue(){"use strict";var s=i(2872),r=i(27402).PriceScaleBase,n=i(69927).PriceRange,o=i(9423).randomHash,a=i(74477),l=a.fromLog,c=a.toLog;class h extends r{constructor(e,t){super(t),this._scalesProperties=e;var i=this;this._modeChanged=new s,this._properties.isInverted.listeners().subscribe(this,h.prototype._onIsInvertedChanged),this._properties.listeners().subscribe(null,(function(){if(i.mainSource()&&i.mainSource().model()){var e=i.mainSource().model().paneForSource(i.mainSource());i.mainSource().model().updatePane(e)}})),this._scalesProperties.listeners().subscribe(this,(function(){this._marksCache=null})),this.setId(o())}_convertPriceRangeFromLog(e){if(null===e)return null;var t=l(e.minValue(),this._logFormula),i=l(e.maxValue(),this._logFormula);return new n(t,i)}_convertPriceRangeToLog(e){if(null===e)return null;var t=c(e.minValue(),this._logFormula),i=c(e.maxValue(),this._logFormula);return new n(t,i)}_canConvertPriceRangeFromLog(e){if(null===e)return!1;var t=l(e.minValue(),this._logFormula),i=l(e.maxValue(),this._logFormula);return isFinite(t)&&isFinite(i)}mode(){return{autoScale:this._properties.autoScale.value(),lockScale:this._properties.lockScale.value(),percentage:this._properties.percentage.value(),indexedTo100:this._properties.indexedTo100.value(),log:this._properties.log.value()}}setMode(e){var t={},i=this.mode(),s=this._properties.state(),r=null;void 0!==e.autoScale&&e.autoScale!==s.autoScale&&(t.autoScale=e.autoScale,this._setAutoScaleValueWithDependentProperties(e.autoScale)),void 0!==e.lockScale&&e.lockScale!==s.lockScale&&(t.lockScale=e.lockScale,this._setLockScaleValueWithDependentProperties(e.lockScale)),void 0!==e.percentage&&e.percentage!==s.percentage&&(t.percentage=e.percentage,this._setPercentageValueWithDependentProperties(e.percentage),this._invalidatedForRange.isValid=!1),void 0!==e.indexedTo100&&e.indexedTo100!==s.indexedTo100&&(t.indexedTo100=e.indexedTo100,this._setIndexedTo100ValueWithDependentProperties(e.indexedTo100),this._invalidatedForRange.isValid=!1),void 0!==e.log&&e.log!==s.log&&(t.log=e.log,this._setLogValueWithDependentProperties(e.log)), -s.log&&!this._properties.log.value()&&(this._canConvertPriceRangeFromLog(this.m_priceRange)?null!==(r=this._convertPriceRangeFromLog(this.m_priceRange))&&this.setPriceRange(r):this.properties().autoScale.setValue(!0)),!s.log&&this._properties.log.value()&&null!==(r=this._convertPriceRangeToLog(this.m_priceRange))&&this.setPriceRange(r),s.autoScale!==this._properties.autoScale.value()&&this._properties.autoScale.listeners().fire(this._properties.autoScale),s.autoScaleDisabled!==this._properties.autoScaleDisabled.value()&&this._properties.autoScaleDisabled.listeners().fire(this._properties.autoScaleDisabled),s.lockScale!==this._properties.lockScale.value()&&this._properties.lockScale.listeners().fire(this._properties.lockScale),s.percentage!==this._properties.percentage.value()&&(this._properties.percentage.listeners().fire(this._properties.percentage),this.updateFormatter()),s.indexedTo100!==this._properties.indexedTo100.value()&&(this._properties.indexedTo100.listeners().fire(this._properties.indexedTo100),this.updateFormatter()),s.percentageDisabled!==this._properties.percentageDisabled.value()&&this._properties.percentageDisabled.listeners().fire(this._properties.percentageDisabled),s.log!==this._properties.log.value()&&this._properties.log.listeners().fire(this._properties.log),s.logDisabled!==this._properties.logDisabled.value()&&this._properties.logDisabled.listeners().fire(this._properties.logDisabled),void 0===t.log&&void 0===t.percentage&&void 0===t.lockScale&&void 0===t.autoScale&&void 0===t.indexedTo100||this._modeChanged.fire(i,this.mode())}modeChanged(){return this._modeChanged}fontSize(){return this._scalesProperties.fontSize.value()}isEmpty(){return this._makeSureItIsValid(),0===this.m_height||!this.m_priceRange||this.m_priceRange.isEmpty()}_onIsInvertedChanged(){this._marksCache=null,this._markBuilder.rebuildTickMarks()}}t.PriceScale=h},32255:(e,t,i)=>{"use strict";i.d(t,{createPrimitiveProperty:()=>n});var s=i(2015),r=i.n(s);function n(e){return new(r())(e)}},45383:(e,t,i)=>{"use strict";i.d(t,{extractAllPropertiesKeys:()=>v,factoryDefaultsForCurrentTheme:()=>y,ThemedDefaultProperty:()=>w});var s=i(58121),r=i(99094),n=i(16230),o=i(98279),a=i(38651),l=i(88537),c=i(56840),h=i(98619),d=i(45345),u=i(26843),p=i(2015),_=i.n(p),m=i(59803),g=i(2872),f=i.n(g);function v(e){return new Set(Object.keys(e))}function S(e,t){const i={};for(const s of Object.keys(e))t.has(s)&&(i[s]=e[s]);return i}function y(e,t){var i;const r=null!==(i=d.watchedTheme.value())&&void 0!==i?i:u.StdTheme.Light,n=(0,h.deepCopy)(e);return(0,s.default)(n,(0,l.ensureDefined)(t.get(r))),n}function b(e,t){const i=(0,r.default)(e,(e,i,s)=>{if(void 0===t[s])return e;if(!(0,n.default)(i,t[s]))if((0,o.default)(i)&&(0,o.default)(t[s])){const r=b(i,t[s]);void 0!==r&&(e[s]=r)}else e[s]=i;return e},{});return(0,a.default)(i)?void 0:i}class w extends(_()){constructor(e,t,i,r,n){super(function(e,t,i){var r;const n=t(),o=(0,h.deepCopy)(null!==(r=c.getJSON(e,null))&&void 0!==r?r:{});return(0,s.default)(n,o),(0,s.default)(n,null!=i?i:{}),n}(e,t,n)), -this._applyingThemeInProcess=!1,this._restoreFactoryDefaultsEvent=new(f()),this._defaultName=e,this._defaultsSupplier=t,this._notThemedDefaultsKeys=i,this._themedDefaultsKeys=r}restoreFactoryDefaults(){const e=this._defaultsSupplier();this.mergeAndFire(e),this.saveDefaults(),this._restoreFactoryDefaultsEvent.fire()}addExclusion(){}preferences(){const e=new Set([...this._themedDefaultsKeys,...this._notThemedDefaultsKeys]);return S(this.state(),e)}mergePreferences(e){const t=new Set([...this._themedDefaultsKeys,...this._notThemedDefaultsKeys]);this.mergeAndFire(S(e,t))}childChanged(e){super.childChanged(e),this._applyingThemeInProcess||this.saveDefaults()}saveDefaults(){const e=this.state(),t=this._defaultsSupplier();let i=b(S(e,this._notThemedDefaultsKeys),S(t,this._notThemedDefaultsKeys));const r=S(t,this._themedDefaultsKeys),n=S(e,this._themedDefaultsKeys),o=b(n,r);(0,a.default)(o)||(i=null!=i?i:{},(0,s.default)(i,n)),(0,m.saveDefaults)(this._defaultName,i)}}},65576:(e,t,i)=>{"use strict";i.d(t,{convertPropertyToWatchedValue:()=>n});var s=i(52714),r=i.n(s);function n(e){const t=new(r())(e.value());let i=!1;e.subscribe(t,()=>{i||(i=!0,t.setValue(e.value()),i=!1)});const s=()=>{i||(i=!0,e.setValue(t.value()),i=!1)};return t.subscribe(s),t.spawn(()=>{e.unsubscribeAll(t),t.unsubscribe(s)})}},81465:(e,t,i)=>{"use strict";i.d(t,{combineProperty:()=>o,createWVFromGetterAndSubscription:()=>s.createWVFromGetterAndSubscription,createWVFromProperty:()=>r});var s=i(38021);i(3763);function r(e){return(0,s.createWVFromGetterAndSubscription)(()=>e.value(),e)}i(2015);var n=i(32255);function o(e,...t){const i=()=>e(...t.map(e=>e.value())),s=(0,n.createPrimitiveProperty)(i()),r=()=>s.setValue(i()),o={};for(const e of t)e.subscribe(o,r);return s.destroy=()=>{t.forEach(e=>e.unsubscribeAll(o))},s}},38021:(e,t,i)=>{"use strict";i.d(t,{createWVFromGetterAndSubscription:()=>n});var s=i(52714),r=i.n(s);function n(e,t){const i=new(r())(e()),s={};t.subscribe(s,()=>{i.setValue(e())});return i.readonly().spawn(()=>t.unsubscribeAll(s))}},3763:(e,t,i)=>{"use strict";i.d(t,{createWVFromGetterAndSubscriptions:()=>n});var s=i(52714),r=i.n(s);function n(e,t){const i=new(r())(e()),s={};t.forEach(t=>t.subscribe(s,()=>{i.setValue(e())}));return i.readonly().spawn(()=>t.forEach(e=>e.unsubscribeAll(s)))}},2015:(e,t,i)=>{"use strict";var s=i(2872),r=i(80643).isFunction;function n(e){if(this._listeners=new s,this._childs=[],this._muteChildChanges=!1,void 0!==e)if(this.isPrimitiveType(e))this._value=e;else for(var t in e)this.addProperty(t,e[t])}n.prototype.merge=function(e,t){var i=null;if(t)var s=(i=[]).length;if(void 0===e)return i;if(this.isPrimitiveType(e))return t&&this._value!==e&&i.push(this),this._value=e,i;if(Array.isArray(e))for(var r=0;rs&&i.push(this),i}, -n.prototype.mergeAndFire=function(e){var t=this.merge(e,!0);this._muteChildChanges=!0,t.forEach((function(e){e._muteChildChanges=!0})),t.forEach((function(e){e._muteChildChanges=!1,e.listeners().fire(e)})),this._muteChildChanges=!1,t.length>0&&this.listeners().fire(this)},n.prototype.state=function(e){var t=r(this.value)?this.value():void 0;void 0===t&&(t={});for(var i=0;i=0},n.prototype.addChild=function(e,t){this[e]&&this[e].unsubscribe(this,this.childChanged),this[e]=t,-1===this._childs.indexOf(e)&&this._childs.push(e),t.subscribe(this,this.childChanged)},n.prototype.childChanged=function(e,t){this._muteChildChanges||this.listeners().fire(this)},n.prototype.subscribe=function(e,t){this.listeners().subscribe(e,t,!1)},n.prototype.unsubscribe=function(e,t){this.listeners().unsubscribe(e,t)},n.prototype.unsubscribeAll=function(e){this.listeners().unsubscribeAll(e)},n.prototype.childs=function(){return this},e.exports=n},90810:(e,t,i)=>{"use strict";i.d(t,{QuotesProvider:()=>a});var s=i(39138),r=i(2872),n=i.n(r),o=i(9423);class a{constructor(e="full"){this._quotes=null,this._quoteSessionSymbol=null,this._quoteSessionClientId="",this._quotesUpdate=new(n()),this._quoteSymbolChanged=new(n()),this._multiplexerType=e}setQuotesSessionSymbol(e){this._quoteSessionSymbol!==e&&(this._quoteSessionClientId||(this._quoteSessionClientId="series-"+(0,o.guid)()),this._unsubscribeQuoteSession(),e&&this._subscribeQuoteSession(e),this._quoteSymbolChanged.fire())}quotesUpdate(){return this._quotesUpdate}quoteSymbolChanged(){return this._quoteSymbolChanged}quotes(){return this._quotes}destroy(){this._unsubscribeQuoteSession()}_onUpdate(e,t){this._quotes=e&&e.values||null,t&&t.values&&this._quotesUpdate.fire(e,t)} -_subscribeQuoteSession(e){this._quoteSessionSymbol=e,(0,s.getQuoteSessionInstance)(this._multiplexerType).subscribe(this._quoteSessionClientId,this._quoteSessionSymbol,this._onUpdate.bind(this))}_unsubscribeQuoteSession(){this._quoteSessionSymbol&&((0,s.getQuoteSessionInstance)(this._multiplexerType).unsubscribe(this._quoteSessionClientId,this._quoteSessionSymbol),this._quoteSessionSymbol=null,this._quotes=null)}}},64237:(e,t,i)=>{"use strict";i.d(t,{rangesAreEqual:()=>n});var s=i(73383),r=i(29823);function n(e,t){return!!r.Interval.isEqual(e.res,t.res)&&(0,s.areEqualTimeFrames)(e.val,t.val)}},9315:(e,t,i)=>{"use strict";i.r(t),i.d(t,{normalizeIntervalString:()=>_,isAvailable:()=>m,setLastUsedResolution:()=>g,getRangeResolution:()=>f,getTimeBasedResolution:()=>v,getDefaultResolution:()=>S,getResolutionByChartStyle:()=>y,getServerInterval:()=>b,isResolutionMultiplierValid:()=>w,getMaxResolutionValue:()=>P,getResolutionsFromSettings:()=>T,convertResolutionsFromSettings:()=>x,mergeResolutions:()=>I,sortResolutions:()=>M,getCustomResolutions:()=>E,getTranslatedResolution:()=>k,getTranslatedResolutionModel:()=>D,isSecondsEnabled:()=>B,isTicksEnabled:()=>N});var s=i(28353),r=i(29823),n=i(37667),o=i(56840),a=i(82992),l=i(96397),c=i(80643),h=i(67337);const d={[r.ResolutionKind.Ticks]:1,[r.ResolutionKind.Seconds]:60,[r.ResolutionKind.Minutes]:1440,[r.SpecialResolutionKind.Hours]:24,[r.ResolutionKind.Days]:365,[r.ResolutionKind.Weeks]:52,[r.ResolutionKind.Months]:12,[r.ResolutionKind.Range]:1e6,[r.ResolutionKind.Invalid]:NaN},u={[r.ResolutionKind.Ticks]:0,[r.ResolutionKind.Seconds]:1,[r.ResolutionKind.Minutes]:2,[r.SpecialResolutionKind.Hours]:3,[r.ResolutionKind.Days]:4,[r.ResolutionKind.Weeks]:5,[r.ResolutionKind.Months]:6,[r.ResolutionKind.Range]:7,[r.ResolutionKind.Invalid]:8},p={[r.ResolutionKind.Invalid]:"",[r.ResolutionKind.Ticks]:(0,s.t)("T",{context:"interval_short"}),[r.ResolutionKind.Seconds]:(0,s.t)("s",{context:"interval_short"}),[r.ResolutionKind.Minutes]:(0,s.t)("m",{context:"interval_short"}),[r.SpecialResolutionKind.Hours]:(0,s.t)("h",{context:"interval_short"}),[r.ResolutionKind.Days]:(0,s.t)("D",{context:"interval_short"}),[r.ResolutionKind.Weeks]:(0,s.t)("W",{context:"interval_short"}),[r.ResolutionKind.Months]:(0,s.t)("M",{context:"interval_short"}),[r.ResolutionKind.Range]:(0,s.t)("R",{context:"interval_short"})};function _(e){return r.Interval.parse(e).value()}function m(e){const t=r.Interval.parse(e);if(!B()&&t.isSeconds())return!1;if(!N()&&t.isTicks())return!1;const i=t.value(),s=a.linking.supportedResolutions.value();return void 0!==s?void 0!==s.find(e=>_(e)===i):t.isSeconds()?Boolean(a.linking.seconds.value()):t.isTicks()?Boolean(a.linking.ticks.value()):t.isIntraday()?Boolean(a.linking.intraday.value()):t.isDWM()}function g(e){r.Interval.isValid(e)&&(r.Interval.isRange(e)?o.setValue("chart.lastUsedRangeResolution",e):o.setValue("chart.lastUsedTimeBasedResolution",e))}function f(e){const t=o.getValue("chart.lastUsedRangeResolution");if(void 0!==t&&r.Interval.isRange(t))return t;let i="100R" -;for(const t of e){const e=r.Interval.parse(t);if(e.isRange()){const t=e.value();if("100R"===t)return t;i=t}}return i}function v(e){const t=o.getValue("chart.lastUsedTimeBasedResolution");if(void 0!==t&&r.Interval.isTimeBased(t))return t;let i="1D";for(const t of e){const e=r.Interval.parse(t);if(e.isTimeBased()){const t=e.value();if("1D"===t)return t;i=t}}return i}function S(e){return e?"100R":"1D"}function y(e,t,i){const s=n.isRangeStyle(e),o=r.Interval.isRange(t);return!s&&o?v(i):s&&!o?f(i):t}function b(e){return r.Interval.isRange(e)?"1":e}function w(e){const{interval:t,guiResolutionKind:i}=r.Interval.parseExt(e);if(!t.isValid())return!1;return(i===r.SpecialResolutionKind.Hours?t.multiplier()/60:t.multiplier())<=C(i)}function C(e){const t=d[e];return Number.isNaN(t)?1:t}function P(e){return C(r.Interval.parseExt(e).guiResolutionKind)}function T(e){const t=x(o.getJSON(e,[]));return(0,l.uniq)(t.filter(w).map(_))}function x(e){return Array.isArray(e)?e:Object.keys(e).map(r.Interval.normalize).filter(c.notNull)}function I(...e){let t=[].concat(...e);return t=(0,l.uniq)(t.filter(w).map(_)),M(t)}function M(e){return e.sort(A)}function L(e){const t=r.Interval.parse(e),i=t.multiplier()||1;return t.isMinuteHours()?[r.SpecialResolutionKind.Hours,i/60]:[t.kind(),i]}function A(e,t){const[i,s]=L(e),[r,n]=L(t);return i!==r?u[i]-u[r]:s-n}function E(){return[]}function k(e){const{multiplier:t,shortKind:i}=D(e);return`${t}${i}`}function D(e,t){const i=r.Interval.parse(e);let s=i.multiplier(),n=i.kind();if(!i.isValid()){if(t)return null;throw new TypeError("Can't translate invalid interval")}return i.isMinuteHours()&&(s=Math.floor(s/60),n=r.SpecialResolutionKind.Hours),{multiplier:s.toString(),shortKind:V(n),hint:`${s} ${V(n,s)}`,mayOmitMultiplier:i.isDWM()&&1===s,mayOmitShortKind:i.isMinutes()&&!i.isMinuteHours()}}function V(e,t){if(!t)return p[e];switch(e){case r.ResolutionKind.Ticks:return(0,s.t)("tick",{plural:"ticks",count:t});case r.ResolutionKind.Days:return(0,s.t)("day",{plural:"days",count:t});case r.ResolutionKind.Weeks:return(0,s.t)("week",{plural:"weeks",count:t});case r.ResolutionKind.Months:return(0,s.t)("month",{plural:"months",count:t});case r.ResolutionKind.Seconds:return(0,s.t)("second",{plural:"seconds",count:t});case r.ResolutionKind.Minutes:return(0,s.t)("minute",{plural:"minutes",count:t});case r.SpecialResolutionKind.Hours:return(0,s.t)("hour",{plural:"hours",count:t});case r.ResolutionKind.Range:return(0,s.t)("range",{plural:"ranges",count:t});default:return e}}function B(){return h.enabled("seconds_resolution")}function N(){return h.enabled("tick_resolution")}},22423:(e,t,i)=>{"use strict";i.d(t,{scaleRatio:()=>r,priceRangeByScaleRatio:()=>n,barSpacingByScaleRatio:()=>o});var s=i(69927);function r(e,t){if(t.isLog()||e.isEmpty()||t.isEmpty())return null;const i=function(e){if(e.isEmpty())return null;const t=e.priceRange();if(null===t)return null;const i=t.length();return e.internalHeight()/i}(t);if(null===i)return null;return e.getValidBarSpacing()/Math.max(1e-10,i)}function n(e,t,i){ -if(e.isLog()||null===i||e.isEmpty())return null;const r=e.priceRange();if(null===r||r.isEmpty())return null;const n=e.internalHeight()/(t/i),o=r.length();if(n===o)return r;const a=(n-o)/2;return new s.PriceRange(r.minValue()-a,r.maxValue()+a)}function o(e,t){if(e.isLog()||null===t||e.isEmpty())return null;const i=e.priceRange();if(null===i)return null;const s=i.length();return e.internalHeight()/s*t}},74325:(e,t,i)=>{"use strict";i.d(t,{createPriceScaleSelectionStrategy:()=>l,allPriceScaleSelectionStrategyInfo:()=>c});var s=i(88537),r=i(28353),n=i(81851);class o{constructor(e){this._priceScalesLimit=8,this._metaInfo=e}metaInfo(){return this._metaInfo}findSuitableScale(e,t,i,s){if(void 0!==s)return this._tryToGetDesiredPriceScale(e,t,s,i);if((0,n.isStudy)(t)){const s=t.metaInfo();if("Volume"===s.shortId&&e.containsMainSeries())return e.createPriceScaleAtPosition("overlay");const r=t.desiredPriceScalePosition();if(null!==r)return this._tryToGetDesiredPriceScale(e,t,r,i);if(void 0!==i&&((0,n.isStudy)(i)||e.isMainPane())&&s.is_price_study)return this._getPriceScaleTheSameAsForSource(i,e)}let r=!1;if((0,n.isStudy)(t)){const i=t.metaInfo().groupingKey;if(void 0!==i){const t=e.model().findNonOverlayStudyWithGroupingKey(i,e);if(null!==t)return this._getPriceScaleTheSameAsForSource(t.study,t.pane)}r=Boolean(t.metaInfo().is_price_study)}else t===e.model().mainSeries()&&(r=!0);if(r){const t=this._findFirstScaleForPriceStudy(e);if(null!==t)return t}return this.createNewPriceScaleIfPossible(e)}canCreateNewPriceScale(e){return e.leftPriceScales().length+e.rightPriceScales().lengthi&&this._priceScaleIsPrice(e.rightPriceScales()[i],t))return e.rightPriceScales()[i];if(e.leftPriceScales().length>i&&this._priceScaleIsPrice(e.leftPriceScales()[i],t))return e.leftPriceScales()[i]}return null}_targetPriceScaleIndex(e,t){if(e.mainSource()===t.mainSeries())return 0}_tryToGetDesiredPriceScale(e,t,i,r){switch(i){case"left":return this.canCreateNewPriceScale(e)?e.createPriceScaleAtPosition("left"):e.createPriceScaleAtPosition("overlay");case"right":return this.canCreateNewPriceScale(e)?e.createPriceScaleAtPosition("right"):e.createPriceScaleAtPosition("overlay");case"as-series":return void 0!==r?(0,s.ensureNotNull)(r.priceScale()):e.isMainPane()?(0,s.ensureNotNull)((0,s.ensureNotNull)(e.mainDataSource()).priceScale()):this.createNewPriceScaleIfPossible(e);case"overlay":return e.createPriceScaleAtPosition("overlay")}}}const a=[{name:"left",title:(0,r.t)("Stack on the left"),ctor:class extends o{constructor(e){super(e)}apply(e){const t=e.model() -;e.rightPriceScales().slice(0).forEach(i=>e.movePriceScale(i,"left",this._targetPriceScaleIndex(i,t)))}createNewPriceScaleIfPossible(e){return this.canCreateNewPriceScale(e)?e.createPriceScaleAtPosition("left"):e.createPriceScaleAtPosition("overlay")}}},{name:"right",title:(0,r.t)("Stack on the right"),ctor:class extends o{constructor(e){super(e)}apply(e){const t=e.model();e.leftPriceScales().slice(0).forEach(i=>e.movePriceScale(i,"right",this._targetPriceScaleIndex(i,t)))}createNewPriceScaleIfPossible(e){return this.canCreateNewPriceScale(e)?e.createPriceScaleAtPosition("right"):e.createPriceScaleAtPosition("overlay")}}},{name:"auto",title:(0,r.t)("Auto"),ctor:class extends o{constructor(e){super(e)}apply(e){if(e.containsMainSeries()){const t=(0,s.ensureNotNull)((0,s.ensureNotNull)(e.mainDataSource()).priceScale());e.movePriceScale(t,"right",0)}const t=e.model();for(;e.leftPriceScales().length>e.rightPriceScales().length;){const i=e.leftPriceScales()[e.leftPriceScales().length-1];e.movePriceScale(i,"right",this._targetPriceScaleIndex(i,t))}for(;e.rightPriceScales().length-e.leftPriceScales().length>1;){const i=e.rightPriceScales()[e.rightPriceScales().length-1];e.movePriceScale(i,"left",this._targetPriceScaleIndex(i,t))}}createNewPriceScaleIfPossible(e){if(!this.canCreateNewPriceScale(e))return e.createPriceScaleAtPosition("overlay");const t=e.leftPriceScales().lengtht.name===e));return new t.ctor(t)}function c(){return a}},85847:(e,t,i)=>{"use strict";i.d(t,{SelectionIndexes:()=>r});var s=i(88537);class r{constructor(e){this._baseIndex=null,this._offsetInBar=null,this._offsetInTime=null,this._barsBetweenPoints=null,this._timescale=e}indexes(){const e=this._timescale.visibleBarsStrictRange();if(null===e)return[];const t=e.firstBar(),i=e.lastBar();if(null===this._offsetInTime||null===this._barsBetweenPoints){const e=this._timescale.barSpacing();this._barsBetweenPoints=Math.floor(120/e),this._offsetInBar=i%this._barsBetweenPoints,this._offsetInTime=this._timescale.indexToTimePoint(this._offsetInBar),this._baseIndex=this._timescale.baseIndex()}const r=this._timescale.baseIndex();this._baseIndex!==r&&(this._baseIndex=r,this._offsetInBar=(0,s.ensureNotNull)(this._timescale.timePointToIndex(this._offsetInTime)));const n=(0,s.ensureNotNull)(this._offsetInBar),o=[];let a=Math.floor((t-n)/this._barsBetweenPoints);const l=Math.floor((i-n)/this._barsBetweenPoints);for(;a<=l;a++)o.push(n+a*this._barsBetweenPoints);return o}clear(){this._offsetInBar=null,this._offsetInTime=null,this._baseIndex=null,this._barsBetweenPoints=null}}},41892:(e,t,i)=>{"use strict";i.d(t,{SelectionRenderer:()=>l});var s=i(34026),r=i(45112),n=i(84346),o=i(56589);const a=r.colorsPalette["color-tv-blue-600"];class l{constructor(e){this._data=e||null}setData(e){this._data=e}draw(e,t){if(null===this._data||!this._data.visible)return;const i=t.pixelRatio;e.strokeStyle=void 0!==this._data.color?this._data.color:a, -e.lineCap="butt";const s=Math.max(1,Math.floor(i));e.lineWidth=s;const r=this._data.vertOffset||0;for(let t=0;t(0,s.pointInBox)(t,e))}_drawMarker(e,t,i,s,r){let n=Math.round(3.5*r*2);n%2!=s%2&&(n+=1);let o=Math.round(n+2*(.5*s+.75*r));o%2!=s%2&&(o+=1);const a=Math.round(t.x*r),l=Math.round((t.y+i)*r),c=s%2/2;e.beginPath(),e.arc(a+c,l+c,o/2,0,2*Math.PI,!0),e.closePath(),e.fill(),e.beginPath(),e.arc(a+c,l+c,n/2,0,2*Math.PI,!0),e.closePath(),e.stroke()}}},10590:(e,t,i)=>{"use strict";i.d(t,{SeriesBase:()=>Ht});var s=i(88537),r=i(49483),n=i(51768),o=i(76422),a=i(98125),l=i(22932),c=i(63948),h=i(71053),d=i(2015),u=i.n(d),p=i(37667),_=i(28930),m=i(97098),g=i(16654),f=i(45058),v=i(28353),S=i(67337),y=i(1570),b=i(50338),w=i(35218);function C(e){const t="QUANDL"===(e=e||{}).exchange,i={title:"",description:"",interval:"",exchange:"",provider:"",chartStyle:"",sessionDescription:""};let s="";if(e.description&&t)if(2===e.description.split("/").length)s=e.description.split("/")[1];else{e.description.split("'").filter(e=>e.length).forEach(e=>{let t=[];t=e&&("/"===e[0]||/\d+\/\(?/.test(e))?[e]:e.split("/").filter(e=>e.length),s+=t[2===t.length?1:0]})}else s=e.description?e.description:e.symbol;if(e.ticker?(i.title=e.ticker,i.description=P(s)):i.title=P(s),e.interval&&(i.interval=(0,w.translatedIntervalString)(e.interval)),t&&e.description){const t=/[\w_]+\/[\w_]+/.exec(e.description);t&&t[0]?i.provider=P(t[0].split("/")[0]):i.provider=P(e.description.split("/")[0])}return e.exchange&&(i.exchange=P(e.exchange)),i.chartStyle=P(function(e){return e.inputs,8===e.style?(0,v.t)("Heikin Ashi"):""}(e)),e.branding&&!s.toUpperCase().includes("TradingView".toUpperCase())&&(i.branding="TradingView"),e.sessionDescription&&(i.sessionDescription=P(e.sessionDescription)),i}function P(e){return e.replace(/'/g,"")}const T=(0,v.t)("Symbol Error"),x=S.enabled("hide_unresolved_symbols_in_legend");class I extends b.StatusProviderBase{constructor(e,t,i,s){super(t),this._series=e,this._statusViewProperties=i,this._options=s||{}}text(){return function(e){const t=C(e);return(e.ticker?t.description:t.title)+(t.interval?", "+t.interval:"")+function(e,t=", "){return(e.provider?`${t}${e.provider}`:"")+(e.exchange?`${t}${e.exchange}`:"")+(e.chartStyle?`${t}${e.chartStyle}`:"")+(e.branding?`${t}${e.branding}`:"")+(e.sessionDescription?`${t}${e.sessionDescription}`:"")}(t)}(this._getTitleGenerationOptions())}getSplitTitle(){ -return C(this._getTitleGenerationOptions())}bold(){return!1}size(){return this._statusViewProperties.childs().fontSize.value()+"px"}errorStatus(){const e=this._series.seriesErrorMessage();return null!==e?{error:e,title:T}:null}_getTitleGenerationOptions(){const e=this._series.symbolInfo(),t=this._statusViewProperties.childs(),i=this._series.symbolTextSourceProxyProperty().value();let s;return t.showExchange.value()&&e&&(s=(0,p.isEconomicSymbol)(e)&&e.source?e.source:e.exchange),{description:"ticker"===i?e&&e.name||void 0:(0,y.getTranslatedSymbolDescription)({pro_name:e&&e.pro_name||void 0,short_name:e&&e.name||void 0,description:e&&e.description||void 0,short_description:e&&e.short_description||void 0,local_description:e&&e.local_description||void 0,language:e&&e.language||void 0}),exchange:s,symbol:x&&null===e?"":this._series.symbol(),interval:t.showInterval.value()&&!this._options.hideResolution?this._series.interval():void 0,style:this._series.properties().childs().style.value(),inputs:this._series.getInputsProperties().state(),boxSize:this._series.data().boxSize,reversalAmount:this._series.data().reversalAmount,ticker:"ticker-and-description"===i?e&&e.name||void 0:"",branding:this._options.branding}}}class M extends f.StatusView{constructor(e,t,i,s){super(new I(e,t,i,s)),this._invalidated=!0,this._series=e,this._series.onRestarted().subscribe(this,this.update),this._series.dataEvents().symbolResolved().subscribe(this,this.update),this._series.dataEvents().completed().subscribe(this,this.update),this._series.boxSizeValue().subscribe(this.update.bind(this)),i.childs().symbolTextSource.listeners().subscribe(this,this.update)}getSeriesPrecision(){let e=4;const t=this._series.symbolInfo();return t&&t.pricescale&&(e=Math.round(Math.log(t.pricescale)/Math.log(10))),e}round(e){const t=this.getSeriesPrecision(),i=Math.round(e*Math.pow(10,t))/Math.pow(10,t);return i?i.toString():""}update(){this._invalidated=!0}text(){return this._updateImpl(),super.text()}color(){return this._updateImpl(),super.color()}bold(){return this._updateImpl(),super.bold()}size(){return this._updateImpl(),super.size()}getSplitTitle(){return this._updateImpl(),this._statusProvider.getSplitTitle()}_updateImpl(){this._invalidated&&(this._bold=this._statusProvider.bold(),this._size=this._statusProvider.size(),this._text=this._statusProvider.text(),this._invalidated=!1)}}var L=i(14445),A=i(85733),E=i(83393),k=i(14291);const D=r.CheckMobile.any(),V=S.enabled("hide_resolution_in_legend");class B extends L.DataWindowView{constructor(e,t){super(),this._invalidated=!0,this._series=e,this._model=t,this._valuesProvider=this._createValuesProvider(e,t),this._items=this._valuesProvider.getItems().map(e=>new L.DataWindowItem(e.title,"",e.unimportant)),this.update()}update(){this._invalidated=!0}items(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._items}series(){return this._series}_updateImpl(){const e=this._series.symbolInfo();if(e){const t=[e.name];V||t.push((0,w.translatedIntervalString)(this._series.interval())),(0, -p.isEconomicSymbol)(e)&&e.source?t.push(e.source):t.push((0,r.onWidget)()||"forex"===e.type?e.exchange:e.listed_exchange),this._header=t.join(", "),this._title=e.description}else this._header=this._series.symbol();const t=this._model.crossHairSource().appliedIndex(),i=this._valuesProvider.getValues(t);for(let e=0;ee||t||i,i.showBarChange,i.showSeriesOHLC,i.showVolume),this._visibilityProperty.subscribe(this,this.update)}areValuesVisible(){return this._visibilityProperty.value()}additional(){return null}marketTitle(){const e=this._series.marketStatusModel().status().value();return this._showLastPriceAndChangeOnly()&&("pre_market"===e||"post_market"===e)?F+":":""}destroy(){this._backgroundColorSpawn.destroy(),this._visibilityProperty.destroy()}_createValuesProvider(e,t){return new R(e,t)}}var H=i(52714),z=i.n(H),U=i(90388),j=i(10480);function G(){const e=window.ChartApiInstance.serverTimeOffset();return Date.now()/1e3+e}function q(e,t,i){return e<=i?t<=i?1/0:t/1e3:Math.min(e,t)/1e3}class Y{constructor(e,t){ -this._marketStatus=new(z())(null),this._lastMarketStatus=null,this._sessionsSpec=null,this._nextSessionEdgeInternal=null,this._nextSessionEdge=new(z())(null),this._recalcNextSessionEdgeTimerId=null,this._quotesProvider=e,e.quotesUpdate().subscribe(this,this._update.bind(this)),e.quoteSymbolChanged().subscribe(this,()=>{this._nextSessionEdgeInternal=null,this._recalculateNextSessionEdge()}),this._resetSubscription=t,this._resetSubscription.subscribe(this,this._resetStatus)}destroy(){this._quotesProvider.quotesUpdate().unsubscribeAll(this),this._quotesProvider.quoteSymbolChanged().unsubscribeAll(this),this._resetSubscription.unsubscribeAll(this),null!==this._recalcNextSessionEdgeTimerId&&clearTimeout(this._recalcNextSessionEdgeTimerId)}setSymbolInfo(e){var t,i,s,r,n;if(this._nextSessionEdgeInternal=null,null===e)return void(this._sessionsSpec=null);const o=new U.SessionSpec(e.timezone,null!==(t=e.session_display)&&void 0!==t?t:e.session,e.session_holidays,e.corrections);let a,l;const c=null===(i=e.subsessions)||void 0===i?void 0:i.find(e=>"premarket"===e.id),h=null===(s=e.subsessions)||void 0===s?void 0:s.find(e=>"postmarket"===e.id);void 0!==c&&(a=new U.SessionSpec(e.timezone,null!==(r=c["session-display"])&&void 0!==r?r:c.session,e.session_holidays,c["session-correction"])),void 0!==h&&(l=new U.SessionSpec(e.timezone,null!==(n=h["session-display"])&&void 0!==n?n:h.session,e.session_holidays,h["session-correction"])),this._sessionsSpec={general:o,preMarket:a,postMarket:l},this._recalculateNextSessionEdge()}status(){return this._marketStatus}nextSessionEdge(){return this._nextSessionEdge}_resetStatus(){this._marketStatus.setValue(null)}_update(e){void 0!==e&&void 0!==e.values.current_session&&(this._lastMarketStatus=e.values.current_session),null!==this._lastMarketStatus?this._marketStatus.setValue(this._lastMarketStatus):this._resetStatus()}_getNextSessionEdgeInternal(){var e;if(null===this._sessionsSpec||"24x7"===this._sessionsSpec.general.spec())return null;const t=1e3*G();if(null===this._nextSessionEdgeInternal||(null!==(e=this._nextSessionEdgeInternal.timestamp)&&void 0!==e?e:1/0)<=t/1e3){const{general:e,preMarket:i,postMarket:s}=this._sessionsSpec,r=(0,j.get_timezone)(e.timezone()),n=(0,j.utc_to_cal)(r,t),o=q((0,j.cal_to_utc)(r,e.alignToNearestSessionStart(n,1)),(0,j.cal_to_utc)(r,e.alignToNearestSessionEnd(n,1)),t),a=q(void 0!==i?(0,j.cal_to_utc)(r,i.alignToNearestSessionStart(n,1)):1/0,void 0!==i?(0,j.cal_to_utc)(r,i.alignToNearestSessionEnd(n,1)):1/0,t),l=q(void 0!==s?(0,j.cal_to_utc)(r,s.alignToNearestSessionStart(n,1)):1/0,void 0!==s?(0,j.cal_to_utc)(r,s.alignToNearestSessionEnd(n,1)):1/0,t),c=Math.min(o,a,l);c===1/0&&(this._nextSessionEdgeInternal={timestamp:null}),this._nextSessionEdgeInternal=c===l?{timestamp:c,status:"post_market"}:c===a?{timestamp:c,status:"pre_market"}:{timestamp:c}}return this._nextSessionEdgeInternal}_recalculateNextSessionEdge(){const e=this._getNextSessionEdgeInternal();if(null===e||null===e.timestamp)return void this._nextSessionEdge.setValue(null);const t={status:e.status, -remainingSeconds:Math.max(0,e.timestamp-G())};if(null===this._recalcNextSessionEdgeTimerId){let e=Math.ceil(t.remainingSeconds%60);0===e&&(e+=60),this._recalcNextSessionEdgeTimerId=setTimeout(()=>this._recalculateNextSessionEdgeByTimer(),1e3*e)}this._nextSessionEdge.setValue(t)}_recalculateNextSessionEdgeByTimer(){this._recalcNextSessionEdgeTimerId=null,this._recalculateNextSessionEdge()}}var K=i(8175),$=i(29823),X=i(69177),Z=i(11075),J=i(9423);let Q=0;class ee{constructor(e,t){this._extrapolatedData=[],this._cacheForFuture=!1,this._modelId=Q++,this._builderCache=null,this._uniqueId=(0,J.randomHashN)(6),this._resolution=t,this._symbolInfo=e,this._valid=Boolean(e.timezone)&&Boolean(e.session),this._session=new X.SessionInfo(e.timezone,e.session,e.session_holidays,e.corrections)}syncSourceTarget(){return{uniqueId:this._uniqueId,resolution:this._resolution,symbolInfo:this._symbolInfo,session:this._session.state()}}getSymbolInfo(){return this._symbolInfo}getSession(){return this._session}getResolution(){return this._resolution}uniqueId(){return this._modelId}distance(e,t){if(!this.isValid())return{success:!1};if(e>t)return{success:!1};if(e===t)return{success:!0,result:0};let i=this._extrapolatedData.length,s=0!==i?this._extrapolatedData[0]:null,r=null!==s?this._extrapolatedData[i-1]:null;const n=er){const s=(0,Z.extrapolateBarsFrontToTime)(this._barBuilder(),r||1e3*e,1e3*t,2e3,!0);this._extrapolatedData=this._extrapolatedData.concat(s.times),i=this._extrapolatedData.length,this._cacheForFuture=n}if(r=this._extrapolatedData[i-1],r<1e3*t)return{success:!1};const o=this._extrapolatedData.indexOf(1e3*t);return-1===o?{success:!1}:{success:!0,result:o}}projectTime(e,t){if(!this.isValid())return e;let i=this._extrapolatedData.length,s=i>0?this._extrapolatedData[0]:null,r=null!==s?this._extrapolatedData[i-1]:null;const n=t>=0;1e3*e===s&&this._cacheForFuture===n||(this._extrapolatedData=[1e3*e],i=1,s=null,r=null);const o=Math.abs(t);if(null===s||o>=i){const s=(0,Z.extrapolateBarsFrontByCount)(this._barBuilder(),r||1e3*e,Math.sign(t)*(o-i+1),!0);this._extrapolatedData=this._extrapolatedData.concat(s.times),i=this._extrapolatedData.length,this._cacheForFuture=n}return i0?le(e):function(e,t){return se().hasEodSymbols(e.full_name)||t===g.STATUS_EOD}(e,t)?(i.push("EOD"),i):i;var s}class he{constructor(e,t,i){this._dataUpdatedModeStatus=new(z())(null),this._symbolInfo=(0,te.createWVFromGetterAndSubscription)(e.getter,e.onChange),this._status=(0,te.createWVFromGetterAndSubscription)(t.getter,t.onChange),this._symbolInfo.subscribe(this._update.bind(this)),this._status.subscribe(this._update.bind(this)),this._resetSubscription=i,this._resetSubscription.subscribe(this,this._resetStatus)}destroy(){this._symbolInfo.destroy(),this._status.destroy(),this._resetSubscription.unsubscribeAll(this)}status(){return this._dataUpdatedModeStatus.readonly()}symbolName(){const e=this._symbolInfo.value();return null!==e?e.name:""}time(){const e=this._symbolInfo.value(),t=null!==e&&e.delay&&e.delay>0?e.delay:900;return Math.round(t/60)}listedExchange(){const e=this._symbolInfo.value();return null!==e?e.listed_exchange:""}async description(){const e=this._symbolInfo.value();if(null===e)return"";let t={};try{t=(0,s.ensureNotNull)(await async function(e){return null}())}catch(e){ae.logWarn("Cannot get exchange "+(0,oe.errorToString)(e))}return t.description||e.listed_exchange}exchange(){const e=this._symbolInfo.value();return null!==e?e.exchange:""}proName(){const e=this._symbolInfo.value();return null!==e?e.pro_name:""}firstReplacedByBatsExchange(){const e=this._symbolInfo.value();return e&&null}_resetStatus(){this._dataUpdatedModeStatus.setValue(null)}_update(){const e=this._symbolInfo.value();if(null===e)return void this._dataUpdatedModeStatus.setValue(null);const t=this._status.value();if("string"==typeof t)return void this._dataUpdatedModeStatus.setValue(null);if(t===g.STATUS_LOADING||t===g.STATUS_RESOLVING)return;const i=ce(e,t);0!==i.length?this._dataUpdatedModeStatus.setValue(i):this._dataUpdatedModeStatus.setValue(null)}}var de=i(40144),ue=i(80643);class pe{constructor(e,t){this._dataProblem=new de.WatchedObject(null),this._quotesProvider=e,this._quotesProvider.quotesUpdate().subscribe(this,this._update.bind(this)),this._resetSubscription=t,this._resetSubscription.subscribe(this,this._resetStatus)}destroy(){this._quotesProvider.quotesUpdate().unsubscribeAll(this),this._resetSubscription.unsubscribeAll(this)}status(){return this._dataProblem}_resetStatus(){this._dataProblem.setValue(null)}_update(e){void 0===e.values||void 0===e.values.data_problem?this._resetStatus():this._dataProblem.setValue((0,ue.clone)(e.values.data_problem))}}var _e=i(90810),me=i(68906),ge=i(97938),fe=i(3825);function ve(e){return e<10?"0"+e:e.toString()}var Se=i(74477),ye=i(33291);const be=[0,1,2,3,9,8,10],we=S.enabled("force_exchange_as_title"),Ce={alwaysShowGlobalLast:!1,visibleOnHistoryOnly:!1,showCountdown:!0,showSymbolLabel:!0};class Pe extends ge.PriceAxisView{constructor(e,t,i){super(),this._previousCountdown="",this._source=e,this._model=t,this._options={...Ce,...i}}updateCountdown(){this._countdownText()!==this._previousCountdown&&(this.update((0, -ye.dataSourceChangeEvent)(this._source.id())),this._model.updateSourcePriceScale(this._source))}_getSource(){return this._source}_getModel(){return this._model}_isCountdownEnabled(){return this._options.showCountdown}_countdownText(){const e=$.Interval.parse(this._source.interval());if(e.isDWM()||e.isTicks()||e.isSeconds()&&1===e.multiplier())return"";const t=this._source.data().bars().last();if(null===t)return"";const i=1e3*(0,s.ensure)(t.value[0]),r=$.Interval.parse(this._source.interval()).inMilliseconds(),n=i.valueOf()+r;let o=Math.round((n-this._currentTime())/1e3);if(o<=0)return"";o=Math.min(o,r/1e3);let a=null;o>=3600&&(a=ve(Math.floor(o/3600))),o%=3600;const l=ve(Math.floor(o/60));o%=60;const c=ve(Math.floor(o));return null!==a?`${a}:${l}:${c}`:`${l}:${c}`}_updateRendererData(e,t,i){if(e.visible=!1,t.visible=!1,!this._source.isVisible())return;const s=this._source.properties().childs();if(12===s.style.value())return;const r=this._model.timeScale().visibleBarsStrictRange(),n=this._source.data().last();if(null===r||null===n)return;if(this._options.visibleOnHistoryOnly&&r.contains(n.index))return;const o=this._model.properties().childs().scalesProperties.childs();let a=o.showSeriesLastValue.value(),l=this._isCountdownEnabled()&&-1!==be.indexOf(s.style.value())&&s.showCountdown.value()&&(this._options.alwaysShowGlobalLast||r.contains(n.index)),c=this._options.showSymbolLabel&&o.showSymbolLabels.value();const h=o.seriesLastValueMode.value()===fe.PriceAxisLastValueMode.LastPriceAndPercentageValue,d=this._source.lastValueData(void 0,this._options.alwaysShowGlobalLast);if(d.noData)return;const u=8===s.style.value();if((a||l||c)&&u&&s.haStyle.childs().showRealLastPrice.value()){const e=this._source.lastValueData(void 0,!1),t=this._source.lastValueData(void 0,!0);e.noData||t.noData||e.index!==t.index||(a=!1,l=!1,c=!1)}if(i.background=this._source.priceLineColor(d.color),i.coordinate=d.coordinate,i.floatCoordinate=d.floatCoordinate,a||l){const t=this._axisFirstLineText(d,a);e.text=t,i.textColor=this.generateTextColor(i.background),e.textColor=i.textColor;const s=a&&h?(0,Se.getOppositeModePriceText)(this._source.priceScale(),d):"";e.secondLine=s,i.secondLineTextColor=i.textColor;const r=l?this._countdownText():"";this._previousCountdown=r,e.thirdLine=r,i.thirdLineTextColor=(0,me.generateColor)(i.textColor,25),0===t.length&&0===s.length&&0===r.length||(e.visible=!0)}c&&(t.text=this._paneText(c),t.visible=t.text.length>0)}_paneText(e){let t="";const i=this._source.symbolInfo();return we?t=(0,p.displayedSymbolExchange)(i):e&&(t=(0,p.displayedSymbolName)(i)),t}_axisFirstLineText(e,t){return t?(0,Se.getCurrentModePriceText)(this._source.priceScale(),e):""}_currentTime(){return Date.now()+1e3*this._source.serverTimeOffset()}}var Te=i(55057);class xe extends Pe{lastPrice(){return this._getSource().data().lastProjectionPrice}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const r=this._getModel(),n=this._getSource(),o=n.priceScale(),a=r.timeScale(),l=this.lastPrice();if(a.isEmpty()||o.isEmpty()||void 0===l)return -;const c=a.visibleBarsStrictRange();if(null===c)return;const d=c.firstBar(),u=c.lastBar(),p=n.data(),_=p.search(u,h.PlotRowSearchMode.NearestLeft);if(null===_)return;const m=n.nearestIndex(d,h.PlotRowSearchMode.NearestRight);if(void 0===m)return;const g=n.model().properties().childs().scalesProperties.childs(),f=(0,s.ensureNotNull)(p.valueAt(m))[4];let v=i.background,S=g.showSeriesLastValue.value(),y=!1,b=!1,w=!1;const C=n.lastValueData(4,!1),P=n.properties().childs();if(8===P.style.value()&&P.haStyle.childs().showRealLastPrice.value()){const e=n.lastValueData(4,!0);if(e.noData||e.color===i.background||(v=e.color),!e.noData&&!C.noData){const t=e.index===C.index;y=t&&g.showSymbolLabels.value(),b=g.seriesLastValueMode.value()===fe.PriceAxisLastValueMode.LastPriceAndPercentageValue,S=S&&t,w=t&&this._isCountdownEnabled()&&P.showCountdown.value()}}else{v=n.barColorer().barStyle(_.index,!0).barColor}if(i.background=v,i.textColor=this.generateTextColor(v),i.secondLineTextColor=i.textColor,i.thirdLineTextColor=(0,me.generateColor)(i.textColor,25),i.coordinate=o.priceToCoordinate(l,f),e.visible=S||w,!C.noData){const i=n.priceScale().isPercentage();C.formattedPriceAbsolute=o.formatPriceAbsolute(l),C.formattedPricePercentage=o.formatPricePercentage(l,f,!0),C.text=i?C.formattedPricePercentage:C.formattedPriceAbsolute,e.text=this._axisFirstLineText(C,S),e.secondLine=S&&b?i?C.formattedPriceAbsolute:C.formattedPricePercentage:"",e.thirdLine=w?this._countdownText():"",t.text=this._paneText(y)}t.visible=y}}var Ie=i(28978),Me=i(22221),Le=i(45112),Ae=i(43891);const Ee={light:{lineStyle:Ae.LINESTYLE_DOTTED,lineWidth:1,textColor:Le.colorsPalette["color-cold-gray-900"],backgroundColor:Le.colorsPalette["color-tv-blue-50"],lineColor:Le.colorsPalette["color-cold-gray-500"]},dark:{lineStyle:Ae.LINESTYLE_DOTTED,lineWidth:1,textColor:Le.colorsPalette["color-white"],backgroundColor:Le.colorsPalette["color-tv-blue-a800"],lineColor:Le.colorsPalette["color-cold-gray-500"]}};function ke(e){return e?Ee.dark:Ee.light}class De extends Me.HorizontalLinePaneView{constructor(e,t,i){super(),this._model=e,this._isVisible=t.lineVisible,this._lineColor=t.lineColor,this._lineWidth=t.lineWidth,this._getValue=i}_updateImpl(){const e=this._lineRendererData;if(e.visible=!1,!this._isVisible.value())return;const t=this._model.mainSeries(),i=t.priceScale(),s=t.firstValue(),r=this._getValue();if(null===s||null===r)return;const n=ke(this._model.isDark()),o=this._lineColor.value()?this._lineColor.value():n.lineColor,a=this._lineWidth.value()?this._lineWidth.value():n.lineWidth;e.visible=!0,e.y=i.priceToCoordinate(r,s),e.linestyle=n.lineStyle,e.linewidth=a,e.color=o}}class Ve extends ge.PriceAxisView{constructor(e,t,i,s){super(),this._model=e,this._label=t,this._isVisible=i,this._getValue=s}_updateRendererData(e,t,i){if(e.visible=!1,t.visible=!1,!this._isVisible.value())return;const s=this._model.mainSeries(),r=s.priceScale(),n=s.firstValue(),o=this._getValue();if(null===n||null===o)return;const a=ke(this._model.isDark());e.visible=!0,t.visible=!0, -e.text=r.formatPriceAbsolute(o),t.text=this._label,i.coordinate=r.priceToCoordinate(o,n),i.background=a.backgroundColor,i.textColor=a.textColor}}class Be extends Te.PriceLineAxisView{constructor(e,t,i){super(),this._model=e,this._isLineVisible=t,this._getValue=i}_isVisible(){return this._isLineVisible.value()}_lineWidth(){return ke(this._model.isDark()).lineWidth}_lineStyle(){return ke(this._model.isDark()).lineStyle}_priceLineColor(e){return ke(this._model.isDark()).lineColor}_value(){const e=this._model.mainSeries(),t=e.priceScale(),i=e.firstValue(),s=this._getValue();if(null===i||null===s)return{noData:!0};const r=t.priceToCoordinate(s,i);return{noData:!1,floatCoordinate:r,coordinate:r,color:"",formattedPricePercentage:"",formattedPriceAbsolute:"",formattedPriceIndexedTo100:"",text:"",index:0}}}const Ne=(0,v.t)("High"),Re=(0,v.t)("Low");function Oe(e,t,i,s){const r=new De(e,i,s),n=new Ve(e,i.label,i.labelVisible,s);return{paneView:r,panePriceAxisView:new Ie.PanePriceAxisView(n,t,e),priceAxisView:n,priceLineAxisView:new Be(e,i.lineVisible,s)}}const Fe={light:{lineStyle:Ae.LINESTYLE_DOTTED,lineWidth:1,textColor:(0,Le.getHexColorByName)("color-cold-gray-900"),backgroundColor:(0,Le.getHexColorByName)("color-tv-blue-50"),lineColor:(0,Le.getHexColorByName)("color-cold-gray-500")},dark:{lineStyle:Ae.LINESTYLE_DOTTED,lineWidth:1,textColor:(0,Le.getHexColorByName)("color-white"),backgroundColor:(0,Le.getHexColorByName)("color-tv-blue-a800"),lineColor:(0,Le.getHexColorByName)("color-cold-gray-500")}};function We(e){return e?Fe.dark:Fe.light}class He extends Me.HorizontalLinePaneView{constructor(e,t,i){super(),this._model=e,this._isVisible=t.lineVisible,this._lineColor=t.lineColor,this._lineWidth=t.lineWidth,this._getValue=i}_updateImpl(){const e=this._lineRendererData;if(e.visible=!1,!this._isVisible.value())return;const t=this._model.mainSeries(),i=t.priceScale(),s=t.firstValue(),r=this._getValue();if(null===s||null===r)return;const n=We(this._model.isDark()),o=this._lineColor.value()?this._lineColor.value():n.lineColor,a=this._lineWidth.value()?this._lineWidth.value():n.lineWidth;e.visible=!0,e.y=i.priceToCoordinate(r,s),e.linestyle=n.lineStyle,e.linewidth=a,e.color=o}}class ze extends ge.PriceAxisView{constructor(e,t,i,s){super(),this._model=e,this._label=t,this._isVisible=i,this._getValue=s}_updateRendererData(e,t,i){if(e.visible=!1,t.visible=!1,!this._isVisible.value())return;const s=this._model.mainSeries(),r=s.priceScale(),n=s.firstValue(),o=this._getValue();if(null===n||null===o)return;const a=We(this._model.isDark());e.visible=!0,t.visible=!0,e.text=r.formatPriceAbsolute(o),t.text=this._label,i.coordinate=r.priceToCoordinate(o,n),i.background=a.backgroundColor,i.textColor=a.textColor}}class Ue extends Te.PriceLineAxisView{constructor(e,t,i){super(),this._model=e,this._isLineVisible=t,this._getValue=i}_isVisible(){return this._isLineVisible.value()}_lineWidth(){return We(this._model.isDark()).lineWidth}_lineStyle(){return We(this._model.isDark()).lineStyle}_priceLineColor(e){return We(this._model.isDark()).lineColor -}_value(){const e=this._model.mainSeries(),t=e.priceScale(),i=e.firstValue(),s=this._getValue();if(null===i||null===s)return{noData:!0};const r=t.priceToCoordinate(s,i);return{noData:!1,floatCoordinate:r,coordinate:r,color:"",formattedPricePercentage:"",formattedPriceAbsolute:"",formattedPriceIndexedTo100:"",text:"",index:0}}}const je=(0,v.t)("Avg");function Ge(e,t,i,s){const r=i.childs(),n=function(e,t,i,s){const r=new He(e,i,s),n=new ze(e,i.label,i.labelVisible,s),o=new Ie.PanePriceAxisView(n,t,e),a=new Ue(e,i.lineVisible,s);return{paneView:r,panePriceAxisView:o,priceAxisView:n,priceLineAxisView:a}}(e,t,{label:je,labelVisible:r.averageClosePriceLabelVisible,lineVisible:r.averageClosePriceLineVisible,lineColor:r.averagePriceLineColor,lineWidth:r.averagePriceLineWidth},()=>s(0));return{paneViews:[n.paneView],panePriceAxisViews:[n.panePriceAxisView],priceAxisViews:[n.priceAxisView],priceLineAxisViews:[n.priceLineAxisView]}}var qe=i(2872),Ye=i.n(qe),Ke=i(14791),$e=i(86441);class Xe{constructor(){this._data=null}setData(e){this._data=e}data(){return this._data}draw(e,t){const i=this._data;if(null===i)return;const s=t.pixelRatio;e.save();const r=Math.max(1,Math.floor(s)),n=r%2/2,o=Math.round(i.center.x*s)+n,a=i.center.y*s;e.fillStyle=i.seriesLineColor,e.beginPath();const l=Math.max(2,1.5*i.seriesLineWidth)*s;e.arc(o,a,l,0,2*Math.PI,!1),e.fill(),e.fillStyle=i.fillColor,e.beginPath(),e.arc(o,a,i.radius*s,0,2*Math.PI,!1),e.fill(),e.lineWidth=r,e.strokeStyle=i.strokeColor,e.beginPath(),e.arc(o,a,i.radius*s+r/2,0,2*Math.PI,!1),e.stroke(),e.restore()}hitTest(e,t){return null}}function Ze(e){return e}const Je=[{start:0,end:.25,startRadius:4,endRadius:10,startFillAlpha:.25,endFillAlpha:0,startStrokeAlpha:.4,endStrokeAlpha:.8,easing:Ze},{start:.25,end:.525,startRadius:10,endRadius:14,startFillAlpha:0,endFillAlpha:0,startStrokeAlpha:.8,endStrokeAlpha:0,easing:Ze},{start:.525,end:1,startRadius:14,endRadius:14,startFillAlpha:0,endFillAlpha:0,startStrokeAlpha:0,endStrokeAlpha:0,easing:Ze}];function Qe(e,t,i,s){const r=i+(s-i)*t;return(0,me.applyTransparency)(e,(0,me.alphaToTransparency)(r))}function et(e,t){const i=e%2600/2600;let s;for(const e of Je)if(i>=e.start&&i<=e.end){s=e;break}if(void 0===s)throw new Error("Last price animation internal logic error");const r=s.easing((i-s.start)/(s.end-s.start));return{fillColor:Qe(t,r,s.startFillAlpha,s.endFillAlpha),strokeColor:Qe(t,r,s.startStrokeAlpha,s.endStrokeAlpha),radius:(n=r,o=s.startRadius,a=s.endRadius,o+(a-o)*n)};var n,o,a}class tt{constructor(e){this._renderer=new Xe,this._invalidated=!0,this._stageInvalidated=!0,this._startTime=performance.now(),this._endTime=this._startTime-1,this._series=e}update(e){if(this._invalidated=!0,"data-source-change"===e.type&&e.dataSourceId===this._series.id()||"viewport-change"===e.type||"global-change"===e.type){const e=performance.now(),t=this._endTime-e;if(t>0)return void(t<650&&(this._endTime+=2600));this._startTime=e,this._endTime=e+2600}}invalidateStage(){this._stageInvalidated=!0}animationActive(){return performance.now()<=this._endTime} -stopAnimation(){this._endTime=this._startTime-1}renderer(e,t){return this._invalidated?(this._updateImpl(e,t),this._invalidated=!1,this._stageInvalidated=!1):this._stageInvalidated&&(this._updateRendererDataStage(),this._stageInvalidated=!1),this._renderer}_updateImpl(e,t){this._renderer.setData(null);const i=this._series.model().timeScale(),s=i.visibleBarsStrictRange(),r=this._series.firstValue(),n=this._series.lastValueData(void 0,!0,!0);if(null===s||null===r||void 0===n.index||void 0===n.price||!s.contains(n.index))return;const o=new $e.Point(i.indexToCoordinate(n.index),this._series.priceScale().priceToCoordinate(n.price,r)),a=n.color,l=this._series.properties().childs();let c;switch(this._series.style()){case 3:c=l.areaStyle.childs().linewidth.value();break;case 10:const t=l.baselineStyle,i=Math.round(e*(Math.abs(100-t.childs().baseLevelPercentage.value())/100));c=o.y<=i?t.childs().topLineWidth.value():t.childs().bottomLineWidth.value();break;default:c=l.lineStyle.childs().linewidth.value()}const h=et(this._duration(),a);this._renderer.setData({seriesLineColor:a,seriesLineWidth:c,fillColor:h.fillColor,strokeColor:h.strokeColor,radius:h.radius,center:o})}_updateRendererDataStage(){const e=this._renderer.data();if(null!==e){const t=et(this._duration(),e.seriesLineColor);e.fillColor=t.fillColor,e.strokeColor=t.strokeColor,e.radius=t.radius}}_duration(){return this.animationActive()?performance.now()-this._startTime:2599}}var it=i(23653),st=i(59100),rt=i(95836),nt=i(9315),ot=i(38712);class at extends ot.SeriesHorizontalLinePaneView{constructor(e){super(e),this._lineRendererData.linestyle=Ae.LINESTYLE_DOTTED}_updateImpl(){this._lineRendererData.visible=!1;const e=this._series.properties().childs();if(!e.showPriceLine.value())return;if(12===e.style.value())return;const t=this._series.lastValueData(void 0,!0);t.noData||(this._lineRendererData.visible=!0,this._lineRendererData.y=t.coordinate,this._lineRendererData.color=this._series.priceLineColor(t.color),this._lineRendererData.linewidth=e.priceLineWidth.value())}}var lt=i(42169),ct=i(52640),ht=i(55257),dt=i(49094),ut=i(84346),pt=i(16282);class _t extends pt.ScaledPaneRenderer{constructor(){super(...arguments),this._data=null,this._barWidth=null}setData(e){this._data=e,this._barWidth=Math.max(1,Math.round((0,dt.optimalHiLoWidth)(e.barSpacing)))}hitTest(e){if(null===this._data||null===this._barWidth)return null;const t=this._data.bars,i=.5*this._data.barSpacing;if(0===t.length)return null;if(e.xt[t.length-1].time+i)return null;const s=t[(0,ht.lowerbound)(t,e.x-i,(e,t)=>e.times.time+i)return null;const r=(0,dt.interactionTolerance)().series+this._barWidth/2,n=Math.min(s.high,s.low),o=Math.max(s.high,s.low),a=this._data.fontSize;return n-r-a<=e.y&&e.y<=n+r||o-r<=e.y&&e.y<=o+r+a?new ut.HitTestResult(ut.HitTestResult.REGULAR):null}_drawImpl(e){if(null===this._data||null===this._barWidth)return;e.save(),e.translate(.5,.5),e.textAlign="center",e.fillStyle=this._data.labelColor,e.font=(0, -ct.makeFont)(this._data.fontSize,this._data.font);const t=this._data.bars,i=this._data.inverted;for(let s=0;se.highLabelWidth<=n&&e.lowLabelWidth<=n),a={bars:this._bars,wickVisible:!1,bodyVisible:r.drawBody.value(),barSpacing:n,borderVisible:r.showBorders.value(),barWidth:(0,dt.optimalHiLoWidth)(n),font:St.CHART_FONT_FAMILY,fontSize:r.fontSize.value(),labelColor:r.labelColor.value(),inverted:s.isInverted(),labelsPadding:3},l=new gt.CompositeRenderer;return this._candlesRenderer.setData(a),l.append(this._candlesRenderer),o&&(this._labelsRenderer.setData(a),l.append(this._labelsRenderer)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&l.append(new ft.SelectionRenderer(this._selectionData)),l}topPixelMargin(){return this._margin()}bottomPixelMargin(){return this._margin()}_margin(){const e=this._source.properties().childs().hiloStyle.childs();return e.showLabels.value()?e.fontSize.value()+6:0}_barUpdater(e,t,i,s){const r=i[2],n=i[3];if(!bt(r)||!bt(n))return!1;if(s.high=s.open=r,s.low=s.close=n,t){const t=s;t.highLabel=e.format(r),t.highLabelWidth=this._getLabelWidth(t.highLabel),t.lowLabel=e.format(n),t.lowLabelWidth=this._getLabelWidth(t.lowLabel)}return!0}_needLabels(){const e=this._model.timeScale().barSpacing();return this._source.properties().childs().hiloStyle.childs().showLabels.value()&&e>5}_getLabelWidth(e){return this._widthsCache.measureText(this._context,e)}}var Ct=i(81688),Pt=i(59153),Tt=i(66919),xt=i(85224),It=i(33837),Mt=i(34041);class Lt extends yt.SeriesBarCandlesPaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.priceScale();if(!i)return null;const s=this._source.properties().childs().haStyle.childs(),r=this._model.timeScale().barSpacing(),n={bars:this._bars,barSpacing:r,bodyVisible:s.drawBody.value(),borderVisible:s.drawBorder.value(),borderColor:s.borderColor.value(), -wickColor:s.wickColor.value(),barWidth:(0,dt.optimalBarWidth)(r),wickVisible:s.drawWick.value(),isPriceScaleInverted:i.isInverted()},o=new gt.CompositeRenderer;return o.append(new mt.PaneRendererCandles(n)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&o.append(new ft.SelectionRenderer(this._selectionData)),o}}var At=i(30076),Et=i(35251),kt=i(69147);const Dt=S.enabled("price_scale_always_last_bar_value"),Vt=S.enabled("display_data_mode"),Bt=(r.CheckMobile.any(),!S.enabled("hide_series_legend_item")),Nt=S.enabled("hide_price_scale_global_last_bar_value"),Rt=S.enabled("show_average_close_price_line_and_label"),Ot=(0,a.getLogger)("Chart.Series"),Ft=S.enabled("pre_post_market_sessions"),Wt={countdownEnabled:!0,lastPriceAnimationEnabled:!0};class Ht extends l.PriceDataSource{constructor(e,t,i,r){super(e,"_seriesId"),this.chartWidgetInitialized=new(Ye()),this.requestingIntradayWhenNotSupported=new(Ye()),this.requestingResolutionWhenNotSupported=new(Ye()),this.requestingStyleIsNotSupported=new(Ye()),this.requestingStyleSupportRecovered=new(Ye()),this._paneView=null,this._futureBarsPaneView=null,this._projectionBarsPaneView=null,this._waterlineView=null,this._priceLineView=null,this._gotoDateView=null,this._baseHorizontalLineView=null,this._priceStep=null,this._symbolInfo=null,this._prevSymbolInfo=null,this._isPrePostMarketPricesAvailableProperty=new(u())(!1),this._isBackAdjustmentForbiddenProperty=new(u())(!0),this._isSettlementAsCloseForbiddenProperty=new(u())(!0),this._highLowPriceCache=new Map,this._averagePriceCache=new Map,this._prevClosePriceAxisView=null,this._priceScaleChanged=new(Ye()),this._priceScaleAboutToBeChanged=new(Ye()),this._onRestarted=new(Ye()),this._onStatusChanged=new(Ye()),this._extendedHoursChanged=new(Ye()),this._tagsChanged=new(Ye()),this._intervalChanged=new(Ye()),this._sessionIdChanged=new(Ye()),this._currency=null,this._unit=null,this._requestMoreDataAvailable=!0,this._lineStyleLastPriceCirclePaneView=new tt(this),this._prevClosePriceLineView=null,this._dataPoweredBy=null,this._loading=!0,this._seriesLoaded=!1,this._status=0,this._symbolResolvingActive=new(z())(!1),this._predictBars=0,this._syncModel=null,this._data=null,this._endOfDataType=null,this._haStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(8,!0))},this._renkoStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(4,!0))},this._pbStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(7,!0))},this._kagiStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(5,!0))},this._pnfStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(6,!0))},this._rangeStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(11,!0))},this._boxSizeValue=new(z()),this._base=100,this._pointValue=1,this._formattingDeps=null,this._formatter=new m.PriceFormatter(this._base),this._ignoreMinMoveFormatter=new m.PriceFormatter(this._base),this._ignoreMinMovePriceStep=null,this._lastBarCloseTime=null,this._onSessionIdPropertyChangedBound=this._onSessionIdPropertyChanged.bind(this), -this._ignoreSessionIdProxyPropertyChanges=!1,this._textSourceIsAlwaysTickerRestrictionEnabled=!1,this._lastPriceAnimationActive=!1,this._currentSession="out_of_session",this._onStyleChanged=new(Ye()),this._preventRestartOnChartStyleChange=!1,this._intervalObj=null,this._obsoleteZOrder=0,this._seriesErrorMessage=null,this._seriesAlwaysFalseHibernatedVW=new(z())(!1),this._styleToRecover=null,this._isActingAsSymbolSource=new(z())(!0),this._seriesSource=new st.SeriesDataSource(e.chartApi(),"s",r);const n=this._seriesSource.dataEvents();n.symbolResolved().subscribe(this,this._onSymbolResolved),n.symbolError().subscribe(this,this._onSymbolError),n.seriesTimeFrame().subscribe(this,this._onSeriesTimeFrame),n.seriesError().subscribe(this,this._onSeriesError),n.loading().subscribe(this,this._onSeriesLoading),n.completed().subscribe(this,this._onSeriesCompleted),n.dataUpdated().subscribe(this,this._onDataUpdated),n.barReceived().subscribe(this,this._onBarReceived),this._quotesProvider=new _e.QuotesProvider,this._quotesProvider.quotesUpdate().subscribe(this,this._onQuotesUpdate);const o=t.childs();if(t.hasChild("extendedHours")){(0,s.ensureDefined)(o.extendedHours).value()&&!t.hasChild("sessionId")&&t.addChild("sessionId",new(u())("extended")),t.removeProperty("extendedHours")}t.hasChild("sessionId")||t.addChild("sessionId",new(u())(_.SubsessionId.Regular)),this._setProperties(t),this._sessionIdProxyProperty=new(u())(o.sessionId.value()),o.sessionId.subscribe(this,()=>this._updateSessionIdProxyProperty()),this._sessionIdProxyProperty.subscribe(this,this._onSessionIdProxyPropertyChanged),this._symbolTextSourceProxyProperty=new(u()),this._recalcSymbolTextSourceProxyProperty(),o.statusViewStyle.childs().symbolTextSource.subscribe(this,this._recalcSymbolTextSourceProxyProperty),this._symbolTextSourceProxyProperty.subscribe(this,()=>e.lightUpdate()),this._options=(0,ue.merge)((0,ue.clone)(Wt),i),this._prevChartStyle=o.style.value(),this._priceAxisView=new Pe(this,e,{alwaysShowGlobalLast:!Nt,showCountdown:i.countdownEnabled});let a=null;Dt||Nt||(a=new Pe(this,e,{visibleOnHistoryOnly:!0,showSymbolLabel:!1,showCountdown:!1,alwaysShowGlobalLast:!1})),this._priceLinePriceAxisView=new Te.SeriesPriceLineAxisView(this),this._priceLineAxisViews=[this._priceLinePriceAxisView];const l=new xe(this,e,{showCountdown:i.countdownEnabled});this._priceAxisViews=[this._priceAxisView,l],null!==a&&this._priceAxisViews.push(a),this._panePriceAxisView=new Ie.PanePriceAxisView(this._priceAxisView,this,e),this._historyPricePanePriceAxisView=null!==a?new Ie.PanePriceAxisView(a,this,e):null,this._projectionPriceAxisView=new Ie.PanePriceAxisView(l,this,e),this._labelPaneViews=[this._panePriceAxisView,this._projectionPriceAxisView],null!==this._historyPricePanePriceAxisView&&this._labelPaneViews.push(this._historyPricePanePriceAxisView),this._highLowAvgPaneViews=[],this._averagePaneViews=[],Rt&&this._createAverageViews(),this._createHighLowAvgViews(),this._subscribeRestartToSessionIdChange(),o.visible.subscribe(this,this._updateLastPriceAnimationActive), -this._updateLastPriceAnimationActive(),this._dataWindowView=new B(this,e),this._legendView=new W(this,e);const c={branding:!1};this._statusView=new M(this,this._model.properties().childs().scalesProperties.childs().textColor,o.statusViewStyle,c),this._marketStatusModel=new Y(this._quotesProvider,o.symbol.listeners()),this._dataUpdatedModeModel=Vt?new he({getter:this.symbolInfo.bind(this),onChange:n.symbolResolved()},{getter:this.status.bind(this),onChange:this._onStatusChanged},o.symbol.listeners()):null,this._dataProblemModel=new pe(this._quotesProvider,o.symbol.listeners()),this._symbolResolvingActive.subscribe(()=>e.realignLineTools()),this._intervalChanged.subscribe(this,()=>e.realignLineTools())}supportsPressedChunks(){return!0}pressedChunks(e,t){return this.data().pressedChunks(e,t)}seriesErrorMessage(){return this._seriesErrorMessage}destroy(){this._quotesProvider.quotesUpdate().unsubscribeAll(this),this._quotesProvider.destroy(),this._model.timeScale().visibleBarsStrictRangeChanged().unsubscribeAll(this),this._unsubscribeRestartToSessionIdChange()}isActingAsSymbolSource(){return this._isActingAsSymbolSource.readonly()}createPaneView(){this._paneView=null,this._projectionBarsPaneView=null,this._waterlineView=null,this._priceLineView=this.hasClosePrice()?new at(this):null;const e=this._properties.childs().style.value();switch(e){case 0:this._paneView=new Tt.SeriesBarsPaneView(this,this._model);break;case 1:this._paneView=new xt.SeriesCandlesPaneView(this,this._model);break;case 2:this._paneView=new It.SeriesLinePaneView(this,this._model);break;case 3:this._paneView=new Mt.SeriesAreaPaneView(this,this._model);break;case 8:this._paneView=new Lt(this,this._model);break;case 9:this._paneView=new At.SeriesHollowCandlesPaneView(this,this._model);break;case 13:this._paneView=new Pt.SeriesColumnsPaneView(this,this._model);break;case 10:{this._paneView=new Et.SeriesBaselinePaneView(this,this._model);const e=this._properties.childs().baselineStyle.childs();this._waterlineView=new lt.SeriesWaterlinePaneView({paneHeight:()=>this.priceScale().height(),color:()=>e.baselineColor.value(),baseLevelPercentage:()=>e.baseLevelPercentage.value()});break}case 12:this._paneView=new wt(this,this._model)}if(null===this._paneView)throw Error("Unknown chart style assigned: "+e)}properties(){return this._properties}zorder(){return 0}quotesProvider(){return this._quotesProvider}currentSession(){return this._currentSession}getRealVisibleRange(){const e=this.model().timeScale().visibleBarsStrictRange();if(null===e)return null;const t=this.data().search(e.firstBar(),h.PlotRowSearchMode.NearestRight),i=this.data().search(e.lastBar(),h.PlotRowSearchMode.NearestLeft);return null===t||null===i?null:new Ct.BarsRange(t.index,i.index)}syncModel(){if(!this._syncModel){const e=this.symbolInfo(),t=this.interval();if(!e||!t)return null;this._syncModel=new ee(e,t)}return this._syncModel}labelPaneViews(){return this._labelPaneViews}topPaneViews(){if(this._lastPriceAnimationActive){const e=this._lineStyleLastPriceCirclePaneView -;return e.animationActive()&&setTimeout(()=>this._model.invalidate(it.InvalidationMask.cursor()),0),e.invalidateStage(),[e]}return null}priceAxisViews(e,t){return e.findTargetPriceAxisViews(this,t,this._priceAxisViews,this._priceLineAxisViews)}clearHighLowPriceCache(){this._highLowPriceCache.clear()}clearAveragePriceCache(){this._averagePriceCache.clear()}priceScaleChanged(){return this._priceScaleChanged}priceScaleAboutToBeChanged(){return this._priceScaleAboutToBeChanged}disconnect(){this._seriesSource.stop(),this.m_symbol=void 0,this._predictBars=0,this._status=0,this._model.isSnapshot()||(this._prevSymbolInfo=null,this._symbolInfo=null)}isStatusBad(){return 12===this.status()||4===this.status()||10===this.status()}isStatusError(){return 12===this.status()}actualSymbol(){return(0,p.actualSymbol)(this.symbolInfo(),this.symbol())}proSymbol(){return(0,p.proSymbol)(this.symbolInfo(),this.symbol())}onStyleChanged(){return this._onStyleChanged}style(){return this.properties().childs().style.value()}setStyle(e){this.setSymbolParams({style:e})}symbolSameAsCurrent(e){return(0,Ke.symbolSameAsCurrent)(e,this.m_symbol,this.symbolInfo())}status(){return this._status}symbolInfo(){return this._symbolInfo}symbolResolved(){return this.dataEvents().symbolResolved()}symbolResolvingActive(){return this._symbolResolvingActive}symbolHibernated(){return this._seriesAlwaysFalseHibernatedVW}formatter(e=!0){return e?this._formatter:this._ignoreMinMoveFormatter}priceStep(e=!0){return e?this._priceStep:this._ignoreMinMovePriceStep}bars(){return this.data().bars()}nsBars(){return this.data().nsBars()}interval(){return this.properties().childs().interval.value()}setInterval(e){this.setSymbolParams({interval:e})}intervalObj(){const e=this.interval();if(null!==this._intervalObj&&this._intervalObj.resolutionString===e)return this._intervalObj.interval;const t=$.Interval.parse(e);return this._intervalObj={resolutionString:e,interval:t},t}prevClose(){const e=this.priceScale();if(e.isEmpty()||this.data().isEmpty())return null;const t=this.quotes(),i=this.firstValue();if(null===t||null===i)return null;const s=t.prev_close_price;return void 0===s?null:{coordinate:e.priceToCoordinate(s,i),floatCoordinate:e.priceToCoordinate(s,i),formattedPricePercentage:e.formatPricePercentage(s,i,!0),formattedPriceAbsolute:e.formatPriceAbsolute(s),formattedPriceIndexedTo100:e.formatPriceIndexedTo100(s,i)}}hasClosePrice(){return 12!==this.properties().childs().style.value()}lastValueData(e,t,i){const s={noData:!0},r=this.priceScale();if(this.model().timeScale().isEmpty()||r.isEmpty()||this.data().isEmpty())return s;const n=this.model().timeScale().visibleBarsStrictRange(),o=this.firstValue();if(null===n||null===o)return s;let a,l;if(t){const e=this.data().bars().last();if(null===e)return s;a=e.value,l=e.index}else{const e=this.data().bars().search(n.lastBar(),h.PlotRowSearchMode.NearestLeft);if(null===e)return s;a=e.value,l=e.index}const c=void 0!==e?a[e]:this._barFunction(a),d=this.barColorer().barStyle(l,!1),u=r.priceToCoordinate(c,o),p={ -...r.getFormattedValues(c,o,!0),noData:!1,color:d.barColor,floatCoordinate:u,coordinate:u,index:l};return i&&(p.price=c),p}isDWM(){return this.intervalObj().isDWM()}data(){var e;return null!==(e=this._data)&&void 0!==e?e:this._seriesSource.data()}clearData(){(0,s.assert)(null===this._data,"Cannot clear loaded data"),this._seriesSource.clearData()}nearestValue(e,t,i){const s=this.nearestData(e,i);return s?s.value[t]:void 0}onIntervalChanged(){return this._intervalChanged}onStatusChanged(){return this._onStatusChanged}onRestarted(){return this._onRestarted}onExtendedHoursChanged(){return this._extendedHoursChanged}sessionId(){return this.properties().childs().sessionId.value()}sessionIdChanged(){return this._sessionIdChanged}autoScaleInfo(e,t){const i=this.priceRange(e,t);if(null===this._paneView)return{range:i};const s=this._paneView;return{range:i,topPixelMargin:s.topPixelMargin?s.topPixelMargin():void 0,bottomPixelMargin:s.bottomPixelMargin?s.bottomPixelMargin():void 0}}onChartStyleChanged(){var e;this._updateBarFunction(),!this._preventRestartOnChartStyleChange&&this.isNeedRestart()&&(this.data().clear(),this.model().timeScale().scrollToRealtime(!1),this.restart());const t=this.properties();this._prevChartStyle=t.childs().style.value(),this._onStyleChanged.fire(t.childs().style.value()),this.invalidateBarStylesCache(),this._updateLastPriceAnimationActive(),(null===(e=this._styleToRecover)||void 0===e?void 0:e.originalStyle)!==this.style()&&(this._styleToRecover=null)}setChartStyleWithIntervalIfNeeded(e,t){const i=this.interval(),s=null!=t?t:(0,nt.getResolutionByChartStyle)(e,i,this._model.defaultResolutions()),r=$.Interval.isEqual(s,i);this.setSymbolParams({interval:r?void 0:s,style:e})}styleStudyInfos(){return{haStyle:this._haStyle,renkoStyle:this._renkoStyle,pbStyle:this._pbStyle,kagiStyle:this._kagiStyle,pnfStyle:this._pnfStyle,rangeStyle:this._rangeStyle}}sessionIdProxyProperty(){return this._sessionIdProxyProperty}symbolTextSourceProxyProperty(){return this._symbolTextSourceProxyProperty}setTextSourceIsAlwaysTickerRestrictionEnabled(e){this._textSourceIsAlwaysTickerRestrictionEnabled=e,this._recalcSymbolTextSourceProxyProperty()}isPrePostMarketPricesAvailableProperty(){return this._isPrePostMarketPricesAvailableProperty}isSettlementAsCloseForbiddenProperty(){return this._isSettlementAsCloseForbiddenProperty}isBackAdjustmentForbiddenProperty(){return this._isBackAdjustmentForbiddenProperty}dataWindowView(){return this._dataWindowView}statusView(){return Bt?this._statusView:null}legendView(){return this._legendView}marketStatusModel(){return this._marketStatusModel}dataUpdatedModeModel(){return this._dataUpdatedModeModel}dataProblemModel(){return this._dataProblemModel}quotes(){return this.data().isEmpty()?null:this._quotesProvider.quotes()}base(){return this._base}pointValue(){return this._pointValue}barCloseTime(){return this._lastBarCloseTime}priceSource(){let e=null;const t=this._properties.childs();switch(t.style.value()){case 2:e=t.lineStyle.childs().priceSource.value();break;case 3: -e=t.areaStyle.childs().priceSource.value();break;case 10:e=t.baselineStyle.childs().priceSource.value();break;case 13:e=t.columnStyle.childs().priceSource.value()}return e}updateAllViews(e){var t,i,s,r,n,o,a;null===(t=this._paneView)||void 0===t||t.update(e),this._dataWindowView.update(),this._legendView.update(),this._statusView.update(),this._averagePaneViews.forEach(t=>t.update(e)),this._highLowAvgPaneViews.forEach(t=>t.update(e)),this._labelPaneViews.forEach(t=>t.update(e)),this._priceAxisViews.forEach(t=>t.update(e)),this._priceLineAxisViews.forEach(t=>t.update(e)),null===(i=this._futureBarsPaneView)||void 0===i||i.update(e),null===(s=this._projectionBarsPaneView)||void 0===s||s.update(e),null===(r=this._waterlineView)||void 0===r||r.update(e),null===(n=this._priceLineView)||void 0===n||n.update(e),null===(o=this._gotoDateView)||void 0===o||o.update(e),null===(a=this._baseHorizontalLineView)||void 0===a||a.update(e);const l=this._model.activeStrategySource().value();null==l||l.updateAllViews(e),this._lineStyleLastPriceCirclePaneView.update(e)}barFunction(){return this._barFunction}setSymbolParams(e){const{symbol:t,interval:i,currency:s,unit:r,style:n}=e,o=this.properties().childs(),a=void 0!==t&&t!==o.symbol.value(),l=void 0!==s&&s!==o.currencyId.value(),c=void 0!==r&&r!==o.unitId.value(),h=void 0!==i&&i!==o.interval.value(),d=void 0!==n&&n!==o.style.value();a&&o.symbol.setValueSilently(t),l&&o.currencyId.setValueSilently(s),c&&o.unitId.setValueSilently(r),h&&o.interval.setValueSilently(i),d&&o.style.setValueSilently(n),a&&o.symbol.listeners().fire(o.symbol),l&&o.currencyId.listeners().fire(o.currencyId),c&&o.unitId.listeners().fire(o.unitId),h&&o.interval.listeners().fire(o.interval),d&&(a||l||c||h?(this._preventRestartOnChartStyleChange=!0,o.style.listeners().fire(o.style),this._preventRestartOnChartStyleChange=!1):o.style.listeners().fire(o.style))}setSymbol(e){this.setSymbolParams({symbol:e})}currency(){return this.properties().childs().currencyId.value()||null}setCurrency(e){this.setSymbolParams({currency:e})}isConvertedToOtherCurrency(){return(0,p.isConvertedToOtherCurrency)(this.symbolInfo())}unit(){return this.properties().childs().unitId.value()||null}setUnit(e){this.setSymbolParams({unit:e})}isConvertedToOtherUnit(){return(0,p.isConvertedToOtherUnit)(this.symbolInfo(),this._model.unitConversionEnabled())}symbolSource(){return this}title(){return this.symbolTitle()}name(){return this.symbolTitle()}symbolTitle(e,t,i="exchange"){let s=this.properties().childs().symbol.value();const r=this.symbolInfo();if(null!==r){const{type:t}=r;s=(0,p.symbolTitle)(r,e,"forex"===t?"exchange":i)}return t?s:`${s}, ${(0,w.translatedIntervalString)(this.properties().childs().interval.value())}`}setObsoleteZOrder(e){this._obsoleteZOrder=e}obsoleteZOrder(){return this._obsoleteZOrder}valuesProvider(){return new R(this,this.model())}statusProvider(e){return new I(this,this._model.properties().childs().scalesProperties.childs().textColor,this.properties().childs().statusViewStyle,e)}open(e){const t=this.data().valueAt(e) -;return t&&t[1]}high(e){const t=this.data().valueAt(e);return t&&t[2]}low(e){const t=this.data().valueAt(e);return t&&t[3]}close(e){const t=this.data().valueAt(e);return t&&t[4]}moveItem(e,t,i){if(10===this.style()&&0===t){const t=this.priceScale(),i=this.properties().childs().baselineStyle,s=t.height(),r=100-e.y/s*100,n=r<0?0:Math.round(10*r)/10;i.childs().baseLevelPercentage.setValue(Math.max(Math.min(n,100),0))}}requestMoreDataAvailable(){return this._requestMoreDataAvailable}endOfData(){return null!==this._endOfDataType}dataPoweredBy(){return null}boxSizeValue(){return this._boxSizeValue}isUserDeletable(){return!1}changeSymbol(){this.setSymbolIntervalCurrencyDelayed(),this.model().checkLineToolSelection()}changeInterval(){this.setSymbolIntervalCurrencyDelayed()}changeTimeFrame(){(0,n.trackEvent)("GUI","Change timeframe")}onTagsChanged(){return this._tagsChanged}state(e){const t=this.obsoleteZOrder();let i={type:"MainSeries",id:this.id(),zorder:t,haStyle:this._haStyle,renkoStyle:this._renkoStyle,pbStyle:this._pbStyle,kagiStyle:this._kagiStyle,pnfStyle:this._pnfStyle,rangeStyle:this._rangeStyle};const s=this.properties().state();return this._symbolInfo&&(this._symbolInfo.ticker&&(s.symbol=this._symbolInfo.ticker),i.formattingDeps={format:this._symbolInfo.format,pricescale:this._symbolInfo.pricescale,minmov:this._symbolInfo.minmov,fractional:this._symbolInfo.fractional,minmove2:this._symbolInfo.minmove2}),this._model.unitConversionEnabled()||(s.unitId=null),i.state=s,e&&(i={...i,bars:this._barsState(this.bars()),nsBars:this._barsState(this.nsBars()),symbolInfo:this._symbolInfo,rtPrice:this.data().lastProjectionPrice,boxSize:this.data().boxSize,reversalAmount:this.data().reversalAmount}),i}restoreState(e,t){if(t&&this._setStatus(5),!this._model.unitConversionEnabled()&&e.state&&delete e.state.unitId,this._properties.mergeAndFire(e.state),this._properties.hasChild("esdBreaksStyle")&&this._properties.removeProperty("esdBreaksStyle"),this._prevChartStyle=this.properties().childs().style.value(),this.createPaneView(),t){const t=e;this.restoreData(t.bars,t.nsBars,t.symbolInfo,t.rtPrice,t.boxSize,t.reversalAmount)}e.formattingDeps&&(this._formattingDeps=e.formattingDeps,this._recreatePriceFormattingDependencies())}restoreData(e,t,i,s,r,n){this._status=5,this._data=new c.SeriesData,this._data.bars().restoreState(e),this._data.nsBars().restoreState(t),this._updateSymbolInfo(i,!1),this._data.lastProjectionPrice=s,this._data.boxSize=r;const o=this.properties().childs();r||(6===o.style.value()?this._data.boxSize=o.pnfStyle.childs().inputs.childs().boxSize.value():4===o.style.value()&&(this._data.boxSize=o.renkoStyle.childs().inputs.childs().boxSize.value())),this._data.reversalAmount=n,n||5===o.style.value()&&(this._data.reversalAmount=o.kagiStyle.childs().inputs.childs().reversalAmount.value()),this._loading=!1}_barsState(e){const t=e.state();return t.data.forEach(e=>e.value.splice(7,1)),t}_updateBarFunction(){if(12===this.properties().childs().style.value())this._barFunction=(0,c.barFunction)("low");else{ -const e=this.priceSource()||"close";this._barFunction=(0,c.barFunction)(e)}}_setProperties(e){e.hasChild("timeframe")||e.merge({timeframe:""}),e.hasChild("shortName")||e.merge({shortName:""}),e.hasChild("currencyId")||e.addChild("currencyId",new(u())(null)),e.hasChild("unitId")||e.addChild("unitId",new(u())(null)),this._properties=e;const t=e.childs();t.symbol.listeners().subscribe(this,this.changeSymbol),t.interval.listeners().subscribe(this,this.changeInterval),t.currencyId.listeners().subscribe(this,this._changeCurrency),t.unitId.listeners().subscribe(this,this._changeUnit),t.timeframe.listeners().subscribe(this,this.changeTimeFrame),e.subscribe(this,this._onPropertiesChanged)}_updateSessionIdProxyProperty(e){const t=this._properties.childs().sessionId.value();let i=t;if(e){const e=this.symbolInfo();null!==e&&(i=e.subsession_id||t)}this._ignoreSessionIdProxyPropertyChanges=!0,this._sessionIdProxyProperty.setValue(i),this._ignoreSessionIdProxyPropertyChanges=!1}_onSessionIdProxyPropertyChanged(){this._ignoreSessionIdProxyPropertyChanges||this._properties.childs().sessionId.setValue(this._sessionIdProxyProperty.value()),this._updateLastPriceAnimationActive()}_onSymbolResolved(e){var t;const i=this.properties().childs();S.enabled("charting_library_single_symbol_request")||(this.m_symbol=null!==(t=(0,p.extractSymbolNameFromSymbolInfo)(e,(0,p.symbolForApi)(e,i.symbol.value())))&&void 0!==t?t:i.symbol.value()),this._seriesErrorMessage=null,this._updateSymbolInfo(e,!1),this._model.updateSource(this),this._model.onWidget()||((0,n.trackEvent)("Symbol",e.listed_exchange,e.name),(0,n.trackEvent)("Symbol Type",e.type,e.listed_exchange));const s=e.minmov/e.pricescale;4===i.style.value()&&i.renkoStyle.childs().inputs.childs().boxSize.value()s(0)),o=Oe(e,t,{label:Re,labelVisible:r.highLowPriceLabelsVisible,lineVisible:r.highLowPriceLinesVisible,lineColor:r.highLowPriceLinesColor,lineWidth:r.highLowPriceLinesWidth},()=>s(1));return{paneViews:[n.paneView,o.paneView],panePriceAxisViews:[n.panePriceAxisView,o.panePriceAxisView],priceAxisViews:[n.priceAxisView,o.priceAxisView],priceLineAxisViews:[n.priceLineAxisView,o.priceLineAxisView]} -}(this._model,this,e,t);this._highLowAvgPaneViews.push(...i.paneViews),this._labelPaneViews.push(...i.panePriceAxisViews),this._priceAxisViews.push(...i.priceAxisViews),this._priceLineAxisViews.push(...i.priceLineAxisViews)}_createAverageViews(){const e=this.properties().childs().highLowAvgPrice,t=this._getAveragePrice.bind(this),i=Ge(this._model,this,e,t);this._averagePaneViews.push(...i.paneViews),this._labelPaneViews.push(...i.panePriceAxisViews),this._priceAxisViews.push(...i.priceAxisViews),this._priceLineAxisViews.push(...i.priceLineAxisViews)}_getHighLowPrice(e){if(!this._highLowPriceCache.has(e)){const e=this._model.timeScale().visibleBarsStrictRange();if(null===e)return null;const t=function(e,t,i){return e.minMaxOnRangeCached(t,i,[{name:"low",offset:0},{name:"high",offset:0}])}(this._model.mainSeries().bars(),e.firstBar(),e.lastBar());if(null===t)return null;this._highLowPriceCache.set(1,t.min),this._highLowPriceCache.set(0,t.max)}return this._highLowPriceCache.get(e)}_getAveragePrice(e){if(!this._averagePriceCache.has(e)){const e=this._model.timeScale().visibleBarsStrictRange();if(null===e)return null;const t=function(e,t,i){0;const s=(0,c.barFunction)("close");let r=0,n=0;for(let o=t;o<=i;o++){const t=e.valueAt(o);null!==t&&(r+=s(t),n++)}return n?r/n:null}(this._model.mainSeries().bars(),e.firstBar(),e.lastBar());if(null===t)return null;this._averagePriceCache.set(0,t)}return this._averagePriceCache.get(e)}_onSessionIdPropertyChanged(){this._sessionIdChanged.fire(),this.isDWM()||(this.restart(),this._updateLastPriceAnimationActive())}_subscribeRestartToSessionIdChange(){this.properties().childs().sessionId.subscribe(this,this._onSessionIdPropertyChangedBound)}_unsubscribeRestartToSessionIdChange(){this.properties().childs().sessionId.unsubscribe(this,this._onSessionIdPropertyChangedBound)}_updateLastPriceAnimationActive(){if(!this._options.lastPriceAnimationEnabled)return;const e=this._lastPriceAnimationActive,t=this.properties().childs(),i=t.style.value();if(this._model.isSnapshot()||!t.visible.value()||3!==i&&10!==i&&2!==i)this._lastPriceAnimationActive=!1;else{const e=this.currentSession(),t=!(0,p.isRegularSessionId)(this.sessionIdProxyProperty().value())&&!this.isDWM();this._lastPriceAnimationActive="market"===e||t&&("pre_market"===e||"post_market"===e)}this._lastPriceAnimationActive&&e!==this._lastPriceAnimationActive&&this.model().invalidate(it.InvalidationMask.cursor())}_onPropertiesChanged(e){const t=this._properties.childs();e!==t.symbol&&e!==t.interval&&e!==t.timeframe&&(this._tagsChanged.fire(),this.createPaneView(),this.updateAllViews((0,ye.dataSourceChangeEvent)(this._id)),this.model().updateSource(this),(0,o.emit)("series_properties_changed",this._id))}_recalcSymbolTextSourceProxyProperty(){this._textSourceIsAlwaysTickerRestrictionEnabled?this._symbolTextSourceProxyProperty.setValue("ticker"):this._symbolTextSourceProxyProperty.setValue(this._properties.childs().statusViewStyle.childs().symbolTextSource.value())}}},16654:(e,t,i)=>{"use strict";i.r(t),i.d(t,{STATUS_OFFLINE:()=>s, -STATUS_RESOLVING:()=>r,STATUS_LOADING:()=>n,STATUS_READY:()=>o,STATUS_INVALID_SYMBOL:()=>a,STATUS_SNAPSHOT:()=>l,STATUS_EOD:()=>c,STATUS_PULSE:()=>h,STATUS_DELAYED:()=>d,STATUS_DELAYED_STREAMING:()=>u,STATUS_NO_BARS:()=>p,STATUS_REPLAY:()=>_,STATUS_ERROR:()=>m,SERIES_STATUS_TEXT:()=>g,STYLE_LINE_TYPE_MARKERS:()=>f,STYLE_LINE_TYPE_STEP:()=>v,STYLE_LINE_TYPE_SIMPLE:()=>S,STYLE_BARS:()=>y,STYLE_CANDLES:()=>b,STYLE_LINE:()=>w,STYLE_AREA:()=>C,STYLE_RENKO:()=>P,STYLE_KAGI:()=>T,STYLE_PNF:()=>x,STYLE_PB:()=>I,STYLE_HEIKEN_ASHI:()=>M,STYLE_HOLLOW_CANDLES:()=>L,STYLE_BASELINE:()=>A,STYLE_RANGE:()=>E,STYLE_HILO:()=>k,STYLE_COLUMNS:()=>D,STYLE_SHORT_NAMES:()=>V,SYMBOL_STRING_DATA:()=>B});const s=0,r=1,n=2,o=3,a=4,l=5,c=6,h=7,d=8,u=9,p=10,_=11,m=12,g={[s]:"connecting",[r]:"loading",[n]:"loading",[o]:"realtime",[a]:"invalid",[l]:"snapshot",[c]:"endofday",[h]:"endofday",[d]:"delayed",[u]:"delayed_streaming",[p]:"forbidden",[_]:"replay",[m]:"error"},f=0,v=1,S=2,y=0,b=1,w=2,C=3,P=4,T=5,x=6,I=7,M=8,L=9,A=10,E=11,k=12,D=13,V={0:"bar",1:"candle",9:"hollowCandle",2:"line",3:"area",4:"renko",7:"pb",5:"kagi",6:"pnf",8:"ha",10:"baseline",11:"range",12:"hilo",13:"column"},B={4:{type:"BarSetRenko@tv-prostudies",basicStudyVersion:40},7:{type:"BarSetPriceBreak@tv-prostudies",basicStudyVersion:34},5:{type:"BarSetKagi@tv-prostudies",basicStudyVersion:34},6:{type:"BarSetPnF@tv-prostudies",basicStudyVersion:34},8:{type:"BarSetHeikenAshi@tv-basicstudies",basicStudyVersion:60},11:{type:"BarSetRange@tv-basicstudies",basicStudyVersion:72}}},63948:(e,t,i)=>{"use strict";i.d(t,{seriesPlotFunctionMap:()=>c,barFunction:()=>h,SeriesData:()=>p});var s,r=i(88537),n=i(71053),o=i(55257);!function(e){e[e.FromLeft=-1]="FromLeft",e[e.FromRight=1]="FromRight"}(s||(s={}));const a={open:e=>e[1],high:e=>e[2],low:e=>e[3],close:e=>e[4],hl2:e=>(e[2]+e[3])/2,hlc3:e=>(e[2]+e[3]+e[4])/3,ohlc4:e=>(e[1]+e[2]+e[3]+e[4])/4},l=["open","high","low","close","hl2","hlc3","ohlc4"];function c(){const e=new Map;return l.forEach((t,i)=>{e.set(t,h(t))}),e}function h(e){return a[e]}function d(e,t){return null==e[t]}const u=[{barsToMerge:10,forBarspacingLargerThen:.03},{barsToMerge:30,forBarspacingLargerThen:.01},{barsToMerge:100,forBarspacingLargerThen:.003},{barsToMerge:500,forBarspacingLargerThen:0}];class p{constructor(){this._pressedChunks={chunks:new Map,priceSource:"uninitialized"},this.m_bars=new n.PlotList(c(),d),this.m_nsBars=new n.PlotList(c(),d),this._clearPressedChunks()}bars(){return this.m_bars}nsBars(){return this.m_nsBars}pressedChunks(e,t){if(t!==this._pressedChunks.priceSource){this._pressedChunks.priceSource=t;const e=this.m_bars.first();e&&(this._clearPressedChunks(),this._rebuildPressedChunks(e))}const i=(0,r.ensureDefined)(u.find(t=>t.forBarspacingLargerThen<=e));return(0,r.ensureDefined)(this._pressedChunks.chunks.get(i.barsToMerge))}mergeRegularBars(e){const t=this.m_bars.size(),i=this.m_bars.merge(e) -;return i&&"uninitialized"!==this._pressedChunks.priceSource&&(t===this.m_bars.size()&&i.index===this.m_bars.lastIndex()?this._updateLatestChunks():this._rebuildPressedChunks(i)),i}size(){return this.m_bars.size()+this.m_nsBars.size()}each(e){this.m_bars.each(e),this.m_nsBars.each(e)}clear(){this.m_bars.clear(),this.m_nsBars.clear(),this.lastProjectionPrice=void 0,this._clearPressedChunks()}isEmpty(){return this.m_bars.isEmpty()&&this.m_nsBars.isEmpty()}first(){return this.m_bars.isEmpty()?this.m_nsBars.first():this.m_bars.first()}last(){return this.m_nsBars.isEmpty()?this.m_bars.last():this.m_nsBars.last()}search(e,t){return this.nsBars().isEmpty()?this.bars().search(e,t):this.bars().isEmpty()||(0,r.ensureNotNull)(this.nsBars().firstIndex())<=e?this.nsBars().search(e,t):this.bars().search(e,t)}valueAt(e){const t=this.search(e);return null!==t?t.value:null}plotValueToTimePointIndex(e,t,i){if(i===s.FromRight){const i=(i,s)=>{const r=s[t];return null!=r&&e>=r},s=this.m_bars.findLast(i);if(null!==s)return s.index;const r=this.m_nsBars.findLast(i);return null!==r?r.index:this.m_bars.firstIndex()}if(i===s.FromLeft){const i=(i,s)=>{const r=s[t];return null!=r&&e<=r},s=this.m_bars.findFirst(i);if(null!==s)return s.index;const r=this.m_nsBars.findFirst(i);return null!==r?r.index:this.m_bars.lastIndex()}throw new Error("plotValueToTimePointIndex: unsupported search mode")}moveData(e){this.m_bars.move(e),this.m_nsBars.move(e),this.m_bars.size()>0&&this._rebuildPressedChunks((0,r.ensureNotNull)(this.m_bars.first()))}_rebuildPressedChunks(e){const t=this._pressedChunks.priceSource;if("uninitialized"===t)return;const i=e.index,s=a[t],n=(e,t,i)=>{let r=null;for(;e.hasNext();){const n=e.next(),o=s(n.value);r&&n.index-r.startTime>=i.barsToMerge&&(t.push(r),r=null),r?(r.endTime=n.index,r.high=Math.max(r.high,o),r.low=Math.min(r.low,o),r.close=o):r={startTime:n.index,endTime:n.index,open:o,high:o,low:o,close:o}}r&&t.push(r)};u.forEach(e=>{const t=(0,r.ensureDefined)(this._pressedChunks.chunks.get(e.barsToMerge)),s=(0,o.lowerbound)(t,i,(e,t)=>e.endTime0){const i=t[0].startTime-1,s=(0,r.ensureNotNull)(this.m_bars.firstIndex()),o=this.m_bars.rangeIterator(s,i),a=[];n(o,a,e);const l=a.concat(t);this._pressedChunks.chunks.set(e.barsToMerge,l)}else{const i=(0,r.ensureNotNull)(this.m_bars.lastIndex());t.splice(s);let o=(0,r.ensureNotNull)(this.m_bars.firstIndex());t.length&&(o=t[t.length-1].endTime+1);const a=this.m_bars.rangeIterator(o,i);n(a,t,e)}})}_updateLatestChunks(){const e=(0,r.ensureNotNull)(this.m_bars.lastIndex());u.forEach(t=>{const i=(0,r.ensureDefined)(this._pressedChunks.chunks.get(t.barsToMerge)),s=this.m_bars.rangeIterator(e,e).next(),n=s.value[4],o=i[i.length-1];o.high=Math.max(o.high,n),o.low=Math.min(o.low,n),o.close=n,o.endTime=s.index})}_clearPressedChunks(){u.forEach(e=>this._pressedChunks.chunks.set(e.barsToMerge,[]))}}},34081:(e,t,i)=>{"use strict";i.d(t,{SeriesTimeRangeVolumeCalculator:()=>s});class s{constructor(e){this._value=null,this._series=e, -this._series.dataEvents().dataUpdated().subscribe(this,this._onSeriesUpdated)}destroy(){this._series.dataEvents().dataUpdated().unsubscribeAll(this)}volume(e,t){if(null!==this._value&&this._value.from===e&&this._value.to===t)return this._value.value;let i=0;const s=this._series.data().bars(),r=s.firstIndex(),n=s.lastIndex();if(null!==r&&en&&t>n)i=NaN;else{const s=this._series.data().bars().rangeIterator(Math.min(e,t),Math.max(e,t));for(;s.hasNext();){const e=s.next().value[5];if(void 0===e){i=NaN;break}i+=e}}return this._value={from:e,to:t,value:i},i}_onSeriesUpdated(e,t){if(null===this._value)return;if(t)return void(this._value=null);const i=this._series.data().bars().lastIndex();(null===i||i<=this._value.to)&&(this._value=null)}}},37667:(e,t,i)=>{"use strict";i.r(t),i.d(t,{isRequiringRestartSeriesStyles:()=>y,isRangeBasedStyle:()=>b,isRangeStyle:()=>w,isTimeBasedStyle:()=>C,isValidStyle:()=>P,isSingleValueBasedStyle:()=>T,setLastUsedStyle:()=>x,getLastUsedStyle:()=>I,getLastUsedSingleValueBasedStyle:()=>M,getDefaultStyle:()=>L,getChartStyleByResolution:()=>A,chartStyleStudyId:()=>E,preparePriceAxisProperties:()=>k,hasProjection:()=>V,isPriceSourceStyle:()=>B,getSeriesPriceFormattingState:()=>N,createSeriesFormatter:()=>R,symbolCurrencyConvertible:()=>O,symbolCurrency:()=>F,symbolOriginalCurrency:()=>W,symbolBaseCurrency:()=>H,isConvertedToOtherCurrency:()=>z,symbolUnitConvertible:()=>U,symbolUnit:()=>j,symbolOriginalUnit:()=>G,isConvertedToOtherUnit:()=>q,symbolUnitConvertibleGroupsIfExist:()=>Y,symbolCurrentContract:()=>K,symbolHasPreOrPostMarket:()=>$,symbolHasSeveralSessions:()=>X,symbolHasEconomicEvents:()=>Z,extractSymbolNameFromSymbolInfo:()=>J,symbolTitle:()=>Q,displayedSymbolName:()=>ee,displayedSymbolExchange:()=>te,actualSymbol:()=>ie,proSymbol:()=>se,symbolForApi:()=>re,isRegularSessionId:()=>ne,isCloseBasedSymbol:()=>oe,isMeasureUnitSymbol:()=>ae,measureUnitId:()=>le,hasVolume:()=>ce,isEconomicSymbol:()=>he,getStudySymbolExchange:()=>de,isFutureContinuousSymbolWithBackajustment:()=>ue,isCryptoSymbol:()=>pe});var s=i(56840),r=i(16654),n=i(29823),o=i(97098),a=i(67337),l=i(88537),c=i(67802),h=i(26811);const d=a.enabled("pay_attention_to_ticker_not_symbol"),u=a.enabled("uppercase_instrument_names"),p=a.enabled("charting_library_single_symbol_request"),_=a.enabled("use_ticker_on_symbol_info_update"),m=a.enabled("hide_object_tree_and_price_scale_exchange_label"),g=[4,5,6,7,8],f=[4,5,6,7,11],v=[0,1,9,2,3,10,8,13],S=[2,10,3,13];function y(e){return-1!==g.indexOf(e)}function b(e){return-1!==f.indexOf(e)}function w(e){return 11===e}function C(e){return-1!==v.indexOf(e)}function P(e){return b(e)||C(e)}function T(e){switch(e){case 3:case 10:case 2:case 13:return!0;default:return!1}}function x(e,t){P(e)&&(11!==e&&s.setValue("chart.lastUsedStyle",e),oe(t)&&T(e)&&s.setValue("chart.lastUsedSingleValueBasedStyle",e))}function I(){const e=s.getInt("chart.lastUsedStyle");return void 0===e?1:e}function M(){const e=s.getInt("chart.lastUsedSingleValueBasedStyle");return void 0===e?2:e}function L(e){ -return e?11:1}function A(e,t){const i=w(t),s=n.Interval.isRange(e);return!i&&s?L(!0):i&&!s?L(!1):t}function E(e,t){const i=r.SYMBOL_STRING_DATA[e];return void 0===i?null:t?`${i.type}-${i.basicStudyVersion}`:i.type}function k(e){const t=e.priceAxisProperties,i=t.lockScale.value(),s=6===e.style.value();(s||i)&&(t.log.setValue(!1),t.percentage.setValue(!1)),t.logDisabled.setValue(!(!s&&!i)),t.percentageDisabled.setValue(!(!s&&!i))}const D=[4,7,5,6];function V(e){return-1!==D.indexOf(e)}function B(e){return S.includes(e)}function N(e,t="default",i=!1){let s,r,n=100,o=1;if("default"===t)null!=e&&(n=e.pricescale,o=e.minmov,s=e.fractional,r=e.minmove2);else{let e=t.split(",");3!==e.length&&(e=["100","1","false"]),n=parseInt(e[0]),o=parseInt(e[1]),s="true"===e[2]}return i&&(o=1),{priceScale:n,minMove:o,fractional:s,minMove2:r}}function R(e,t,i=!1){if("default"===t&&null!=e){const t=e.formatter||e.format;if("volume"===t)return new c.VolumeFormatter(2);if("percent"===t)return new h.PercentageFormatter(e.pricescale)}const{priceScale:s,minMove:r,fractional:n,minMove2:a}=N(e,t,i);return new o.PriceFormatter(s,r,n,a)}function O(e){return null!==e&&"spread"!==e.type}function F(e,t,i){if(null===e)return null;const s=!t||i?e.currency_id:e.currency_code;return void 0===s||""===s?null:s}function W(e,t){const i=t?e.original_currency_code:e.original_currency_id;return null!=i?i:F(e,t)}function H(e){return e.base_currency_id||null}function z(e){return!(null===e||!O(e))&&(void 0!==e.original_currency_id&&e.original_currency_id!==e.currency_id)}function U(e,t){return t&&null!==e&&"spread"!==e.type}function j(e,t){if(null===e||!t)return null;const i=e.unit_id;return void 0===i||""===i?null:i}function G(e,t){return t?e.original_unit_id||j(e,t):null}function q(e,t){return!(null===e||!U(e,t))&&(void 0!==e.original_unit_id&&e.original_unit_id!==e.unit_id)}function Y(e,t){return null!==e&&U(e,t)?e.unit_conversion_types||null:[]}function K(e){return"futures"===e.type&&e.front_contract||null}function $(e){return null!==e&&void 0!==e.subsessions&&e.subsessions.some(e=>"premarket"===e.id||"postmarket"===e.id)}function X(e){return null!==e&&void 0!==e.subsessions&&e.subsessions.filter(e=>!e.private).length>1}function Z(e){return null!==e&&("forex"===e.type||"cfd"===e.type||pe(e))}function J(e,t){let i=e&&(e.pro_name||e.full_name||e.name);return p&&t?i=t:_&&e&&e.ticker&&(i=e.ticker),u&&i&&(i=i.toUpperCase()),i}function Q(e,t,i="exchange"){return t||m?e.name:`${e.name}, ${e[i]}`}function ee(e){let t=e&&(K(e)||e.name)||"";return t.length>40&&(t=t.substring(0,37)+"..."),t.trim()}function te(e){const t=e?e.exchange:"";return u?t.toUpperCase():t}function ie(e,t){return null!==e?e.full_name:t}function se(e,t){return null!==e?e.pro_name:t}function re(e,t){return d&&e?(0,l.ensureDefined)(e.ticker):ie(e,t)}function ne(e){return"regular"===e||"us_regular"===e}function oe(e){return"c"===(null==e?void 0:e.visible_plots_set)}function ae(e){return null!==e&&("unit"===e.measure&&null!==le(e))}function le(e){var t -;return null!==(t=null==e?void 0:e.value_unit_id)&&void 0!==t?t:null}function ce(e){return void 0!==e.visible_plots_set?"ohlcv"===e.visible_plots_set:!e.has_no_volume}function he(e){return null!==e&&"economic"===e.type}function de(e){return he(e)&&e.source?e.source:e.exchange&&0!==e.exchange.length?e.exchange:void 0}function ue(e){var t;return null!==e&&"futures"===e.type&&Boolean(e.has_backadjustment&&(null===(t=e.typespecs)||void 0===t?void 0:t.includes("continuous")))}function pe(e){var t;return(null===(t=e.typespecs)||void 0===t?void 0:t.includes("crypto"))||"crypto"===e.type||"bitcoin"===e.type}},56972:(e,t,i)=>{"use strict";var s=i(2872),r=i(2015),n=i(69927).PriceRange;TradingView.DEFAULT_BAR_COUNT=300,TradingView.TIME_PLOT=0,TradingView.OPEN_PLOT=1,TradingView.HIGH_PLOT=2,TradingView.LOW_PLOT=3,TradingView.CLOSE_PLOT=4,TradingView.ADT_PLOT=6,TradingView.STYLE_PLOT=7;var o=i(88537).ensureNotNull,a=i(10590).SeriesBase,l=i(67337);const{dataSourceChangeEvent:c}=i(33291);var h=i(33981).SeriesBarColorer,d=i(71053),u=d.PlotRowSearchMode,p=d.mergeMinMax,_=(i(51768).trackEvent,i(98125).getLogger("Chart.Series")),m=i(16654),g=i(37667),f=i(9315).getServerInterval,v=i(29823).Interval,S=i(73532).SeriesHorizontalBaseLinePaneView,y=i(15840).deepExtend,b=i(19234).encodeExtendedSymbolOrGetSimpleSymbolString,w=i(76422),C=i(73383).TIMEFRAMETYPE,P=i(23653).InvalidationMask,T=i(37667).isSingleValueBasedStyle;const x=l.enabled("pre_post_market_sessions");class I extends a{constructor(e,t,i,r){t.removeProperty("currencyId"),super(e,t,i,r),this._symbolIntervalChanged=new s,this.requestingIntradayWhenNotSupported=new s,this.requestingResolutionWhenNotSupported=new s,this._onInReplayStateChanged=new s,this._replayExitedDueUnsupportedInterval=new s,this._replayExitedDueUnavailableForUserInterval=new s,this._onTimeFrameApplied=new s,this._chartApi=e._chartApi,this.createPaneView(),this._replaySubscriber=null,this._isReplayResolutionAvailableForUser=null,this._properties.addExclusion&&(this._properties.addExclusion("visible"),this._properties.addExclusion("currencyId")),this._futureBarsPaneView=null,this.properties().minTick.listeners().subscribe(this,I.prototype._recreateFormatter);var n=this;this.properties().minTick.listeners().subscribe(null,(function(){n._model.fullUpdate()})),this._priceLineView=null,this._baseHorizontalLineView=new S(this),this._gotoDateResultCleared=!1,this._gotoDateView=null,this.bindStyleChange(),this.bindJapChartsInputs(),this._createIsDWMProperty(),this._symbolIntervalChanged.subscribe(this,this._checkInterval),this.properties().showCountdown.listeners().subscribe(this,I.prototype._onChangeShowCountdown),this._onChangeShowCountdown(this.properties().showCountdown),this._recreatePriceFormattingDependencies(),this.properties().lineStyle.priceSource.listeners().subscribe(this,this._updateBarFunction),this.properties().areaStyle.priceSource.listeners().subscribe(this,this._updateBarFunction),this.properties().baselineStyle.priceSource.listeners().subscribe(this,this._updateBarFunction), -this.properties().columnStyle.priceSource.listeners().subscribe(this,this._updateBarFunction),this._updateBarFunction()}isLoading(){return this._loading}isSymbolInvalid(){return this._status===I.STATUS_INVALID_SYMBOL}styleStudyInfo(e){return this.styleStudyInfos()[e]}priceLineColor(e){return this.properties().priceLineColor.value()||e}serverTimeOffset(){return this._chartApi.serverTimeOffset()}_onChangeShowCountdown(e){var t=this;e.value()?this._countdownUpdateTimer=this._model.setInterval((function(){t._priceAxisView.updateCountdown()}),500):(this._model.clearInterval(this._countdownUpdateTimer),delete this._countdownUpdateTimer)}_createIsDWMProperty(){this._isDWMProperty=new r(this.isDWM()),this._onRestarted.subscribe(this,(function(){this._isDWMProperty.setValue(this.isDWM())}))}isDWMProperty(){return this._isDWMProperty}fixLastBar(e){0}isPulse(){return this._symbolInfo&&this._symbolInfo.resolutions.length>0}onSymbolIntervalChanged(){return this._symbolIntervalChanged}_clearStylePlot(e,t){if(0!==e.size()){var i=t||o(e.firstIndex()),s=o(e.lastIndex())+1;e.range(i,s).each((function(e,t){t[TradingView.STYLE_PLOT]=null}))}}invalidateBarStylesCache(e){_.logDebug("Invalidate style cache starting from "+e),this._clearStylePlot(this.bars(),e),this._clearStylePlot(this.nsBars())}invalidateBarColorerCache(){delete this._barColorerCache,this.invalidateBarStylesCache()}barColorer(){if(this._barColorerCache)return this._barColorerCache;for(var e=null,t=this._model.dataSources(),i=t.length-1;i>=0;i--){var s=t[i];if(s.metaInfo&&TradingView.isInherited(s.constructor,TradingView.Study)&&s.hasBarColorer()&&!s.isSourceHidden()){var r=s.barColorer();null===e?e=r:e.pushBackBarColorer(r)}}return null===e?e=new h(this):e.pushBackBarColorer(new h(this)),this._barColorerCache=e,this._barColorerCache}alertCreationAvailable(){const e=this.symbolInfo();return this.hasStateForAlert()&&e&&!g.isEconomicSymbol(e)}hasStateForAlert(){return!1}stateForAlert(){throw new Error("Not implemented")}idForAlert(){return a.prototype.idForAlert.call(this)}seriesSource(){return this._seriesSource}_onSeriesTimeFrame(e,t,i,s,r){var n=T(this.style())?e+.5:e,o=t;if(void 0===r)null!==i&&i.type!==C.PeriodBack||(o+=this._model.studyAwareDefaultRightOffset());else if(r.applyDefaultRightMargin)o+=this._model.studyAwareDefaultRightOffset();else if(r.percentRightMargin){var a=t-n+1,l=Math.max(0,Math.min(.99,r.percentRightMargin/100));o+=l*a/(1-l)}this._model.setTimeViewport(n,o)}_onSeriesError(e){this._loading=!1;var t=e.error;if(e.ctx){var i={};Object.entries(e.ctx).forEach((function(e,t){i[e]=t.toString()})),t=t.format(i)}l.enabled("charting_library_debug_mode")&&_.logNormal("Error reason: "+t),this._seriesErrorMessage=t;const s="unknown_symbol"!==t?I.STATUS_ERROR:l.enabled("no_bars_status")&&this._symbolInfo?I.STATUS_NO_BARS:I.STATUS_INVALID_SYMBOL;this._setStatus(s),this._seriesLoaded=!0,this._enablePriceRangeReady()}_onSeriesCompleted(e,t,i){if(this._setSymbolIntervalDelay){ -if(this._willSymbolIntervalCurrencyChanged())return void _.logNormal("command comes during symbol/interval changing");_.logNormal("series_completed comes when symbol interval delay present but symbol/interval should not be changed")}this._loading=!1,this._seriesErrorMessage=null;var s=e;switch("pulsed"===s&&(s="delayed"),s){case"streaming":this._setStatus(I.STATUS_READY);break;case"endofday":this._setStatus(I.STATUS_EOD);break;case"delayed":this._setStatus(I.STATUS_DELAYED);break;case"pulsed":this._setStatus(I.STATUS_PULSE);break;case"replay":this._setStatus(I.STATUS_REPLAY)}s.match(/delayed_streaming/)&&this._setStatus(I.STATUS_DELAYED_STREAMING),this._endOfDataType=void 0!==i?i.data_completed:null;var r=this._model.paneForSource(this);r.recalculatePriceScale(this.priceScale(),c(this.id()));var n=P.full();null!==this._model.appliedTimeFrame().value()&&n.lockVisibleTimeRangeOnResize(),this._model.invalidate(n),this.model().recalcVisibleRangeStudies(!0),this.model().recalcStudyBasedLineTools(),!this.m_priceScale.isLockScale()||this.model().timeScale().isEmpty()||this._seriesLoaded||(this.model().timeScale()._correctOffset(),this.model().timeScale().correctBarSpacing(),this.model().resetPriceScale(r,this.priceScale())),this._seriesLoaded=!0,this._enablePriceRangeReady()}_onBarReceived(e){this.model().recalcVisibleRangeStudies(!0)}isStarted(){return this._seriesSource.isStarted()}restart(){if(this._status!==I.STATUS_SNAPSHOT){this._loading=!0,this._onRestarted.fire(),this._setStatus(I.STATUS_RESOLVING),this._updateSymbolInfo(null,!0);var e=this._properties.interval.value();this._checkIntervalWillChanged(e)&&this._notifyIntervalChanged(e);var t=null;this._pendingTimeRange&&(t=this._pendingTimeRange,delete this._pendingTimeRange),this._onBeforeModifySeries(this.getSymbolString(),e),this._onTimeFrameApplied.fire(t),e=f(e),this._data=null,this._seriesSource.modifySeries(this._getResolvingSymbolObject(),e,t),this._seriesSource.isStarted()||this._seriesSource.start(),this.m_symbol=this._properties.symbol.value(),this._currency=this._properties.currencyId.value(),this._unit=this._properties.unitId.value(),this.m_interval=this._properties.interval.value()}}hasDelayedSymbolIntervalChange(){return!!this._setSymbolIntervalDelay}setSymbolIntervalCurrencyDelayed(){this._willSymbolIntervalCurrencyChanged()&&(this._setSymbolIntervalDelay&&(_.logNormal("Clear timeout to change symbol/interval #"+this._setSymbolIntervalDelay),clearTimeout(this._setSymbolIntervalDelay)),this._setSymbolIntervalDelay=setTimeout(function(){const e=this._properties;_.logNormal("Timeout #"+this._setSymbolIntervalDelay+' fired, new symbol will be "'+e.symbol.value()+'"'),delete this._setSymbolIntervalDelay,this._setSymbolInterval(e.symbol.value(),e.interval.value(),e.currencyId.value(),e.unitId.value())}.bind(this),30),_.logNormal("Started timeout #"+this._setSymbolIntervalDelay+' to change symbol/interval from "'+this.m_symbol+'" to "'+this._properties.symbol.value()+'"'))}rerequestData(){ -this._setSymbolInterval(this.m_symbol,this.m_interval,this._currency,this._unit,!0)}_notifyIntervalChanged(e){var t={timeframe:this._pendingTimeRange};this._intervalChanged.fire(e,t),this._pendingTimeRange=t.timeframe}_setSymbolInterval(e,t,i,s,r){this.clearGotoDateResult(),v.isRange(t)&&this._properties.rangeStyle.inputs.range.setValue(v.parse(t).multiplier());var n=this._checkSymbolWillChanged(e),o=this._checkIntervalWillChanged(t),a=this._checkCurrencyWillChanged(i),l=this._checkUnitWillChanged(s);if(n||o||a||l||r)if(this._syncModel=null,this.m_symbol=e,this.m_interval=t,this._currency=i,this._unit=s,this._status!==I.STATUS_SNAPSHOT&&(!this._seriesSource.isStarted()||n||a||l)&&this._updateSymbolInfo(null,!n&&(a||l)),this._status!==I.STATUS_SNAPSHOT){this._loading=!0,this._setStatus(I.STATUS_RESOLVING),x&&this._updateIsPrePostMarketPricesForbiddenProperty(),this._symbolIntervalChanged.fire(),o&&this._notifyIntervalChanged(this.m_interval),this._onRestarted.fire(),this._seriesLoaded=!1,this._lineStyleLastPriceCirclePaneView.stopAnimation();var c=null;this._pendingTimeRange&&(c=this._pendingTimeRange,delete this._pendingTimeRange),this._onTimeFrameApplied.fire(c),this._onBeforeModifySeries(this.getSymbolString(),t),this._data=null,this._seriesSource.modifySeries(this._getResolvingSymbolObject(),f(t),c,r),this._seriesSource.isStarted()||(this._predictBars=0,this._seriesSource.start()),(n||a||l)&&this.disablePriceRangeReady()}else this._model.realignLineTools();else this._model.realignLineTools()}setDefaultTimeframe(e){this._pendingTimeRange=e}symbol(){return this.properties().symbol.value()}hl2(e){return(this.high(e)+this.low(e))/2}hlc3(e){return(this.high(e)+this.low(e)+this.close(e))/3}ohlc4(e){return(this.open(e)+this.high(e)+this.low(e)+this.close(e))/4}priceRange(e,t){if(!TradingView.isInteger(e))return _.logDebug("Series.priceRange: incorrect startBar"),null;if(!TradingView.isInteger(t))return _.logDebug("Series.priceRange: incorrect endBar"),null;if(this.data().isEmpty())return null;if(this.m_priceScale.isLockScale()){var i=this._model.mainSeriesScaleRatio();if(null!==i){var s=this.priceScale().internalHeight()/(this.model().timeScale().barSpacing()/i),r=this.data().search(t,u.NearestLeft),o=(r.value[TradingView.HIGH_PLOT]+r.value[TradingView.LOW_PLOT])/2;return new n(o-.5*s,o+.5*s)}}var a=this.priceSource();if(null!==a)var l=this.data().bars().minMaxOnRangeCached(e,t,[{name:a,offset:0}]),c=this.data().nsBars().minMaxOnRangeCached(e,t,[{name:a,offset:0}]);else l=this.data().bars().minMaxOnRangeCached(e,t,[{name:"low",offset:0},{name:"high",offset:0}]),c=this.data().nsBars().minMaxOnRange(e,t,[{name:"low",offset:0},{name:"high",offset:0}]);var h=null!==(l=p(l,c))?l.min===l.max?new n(l.min-.5,l.max+.5):new n(l.min,l.max):new n(-.5,.5);return this.priceScale().isLog()?new n(this.priceScale().priceToLogical(h.minValue()),this.priceScale().priceToLogical(h.maxValue())):h}nearestData(e,t){if(TradingView.isInteger(e)){var i=this.data().search(e,t);return null!==i?i:void 0} -_.logDebug("Series.nearestData: incorrect logicalPoint")}nearestIndex(e,t){var i=this.nearestData(e,t);return i?i.index:void 0}paneViews(){if(!this.properties().visible.value())return null;var e=[this._baseHorizontalLineView,this._paneView];return this._futureBarsPaneView&&e.push(this._futureBarsPaneView),this._projectionBarsPaneView&&e.push(this._projectionBarsPaneView),null!==this._waterlineView&&e.push(this._waterlineView),null!==this._priceLineView&&e.push(this._priceLineView),null!==this._gotoDateView&&e.push(this._gotoDateView),e.push(...this._highLowAvgPaneViews),e.push(...this._averagePaneViews),e}purgeSymbolInfo(){this._symbolInfo=null}requestMoreData(e){if((this._status===I.STATUS_READY||this._status===I.STATUS_PULSE||this._status===I.STATUS_DELAYED||this._status===I.STATUS_DELAYED_STREAMING||this._status===I.STATUS_EOD||this._status===I.STATUS_REPLAY)&&!this._model.timeScale().isEmpty()){var t=this._model.timeScale().visibleBarsStrictRange();if(null!==t&&0!==this.bars().size()){var i=t.lastBar()-o(this.data().last()).index;if(this._predictBars{this._gotoDateResultCleared||(this._gotoDateView=new t(this,e),this._model.updateSource(this))})}clearGotoDateResult(e){this._gotoDateView=null,this._gotoDateResultCleared=!0}getSourceIcon(){return{ -type:"loadSvg",svgId:"series."+this.properties().style.value()}}isStyleSupported(e){return!0}isIntervalSupported(e){return!0}isStyleSupportedForReplay(e){return g.isTimeBasedStyle(e)}isInReplay(){return null!==this._replaySubscriber}onTimeFrameApplied(){return this._onTimeFrameApplied}onInReplayStateChanged(){throw new Error("Not implemented")}replayExitedDueUnsupportedInterval(){throw new Error("Not implemented")}replayExitedDueUnavailableForUserInterval(){throw new Error("Not implemented")}switchToReplay(e,t){throw new Error("Not implemented")}switchToRealtime(){throw new Error("Not implemented")}_removeReplaySubscriber(){throw new Error("Not implemented")}_onBeforeModifySeries(e,t){0}destroy(){this._replayExitedDueUnsupportedInterval.destroy(),this._replayExitedDueUnavailableForUserInterval.destroy(),this._quotesProvider.quotesUpdate().unsubscribeAll(this),this._quotesProvider.destroy(),this.clearGotoDateResult(),this._legendView.destroy(),this._marketStatusModel.destroy(),null!==this._dataUpdatedModeModel&&this._dataUpdatedModeModel.destroy(),this._dataProblemModel.destroy(),this._paneView&&this._paneView.destroy&&this._paneView.destroy(),this._onTimeFrameApplied.destroy(),this._seriesSource.destroy(),super.destroy()}dataEvents(){return this._seriesSource.dataEvents()}moveData(e){return this._seriesSource.moveData(e)}}Object.assign(I,m),TradingView.Series=I,t.Series=I,t.isSeries=function(e){return e instanceof I}},34041:(e,t,i)=>{"use strict";i.d(t,{SeriesAreaPaneView:()=>l});var s=i(68906),r=i(84705),n=i(94804),o=i(41892),a=i(83150);class l extends a.SeriesSingleLinePaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.priceScale();if(!i)return null;const a=this._source.properties().childs().areaStyle.childs(),l=a.transparency.value(),c={simpleMode:!1,barSpacing:this._model.timeScale().barSpacing(),items:this._items,lineColor:a.linecolor.value(),lineStyle:a.linestyle.value(),lineWidth:a.linewidth.value(),isSeries:!0,withMarkers:!1,bottom:i.height(),color1:(0,s.generateColor)(a.color1.value(),l),color2:(0,s.generateColor)(a.color2.value(),l)},h=new n.CompositeRenderer;return h.append(new r.PaneRendererArea(c)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&h.append(new o.SelectionRenderer(this._selectionData)),h}}},89128:(e,t,i)=>{"use strict";function s(e,t){return 100*(t-e)/Math.abs(e||1)}i.d(t,{barPercentChange:()=>s})},71263:(e,t,i)=>{"use strict";i.d(t,{PaneRendererBars:()=>n});var s=i(49094),r=i(52403);class n extends r.PaneRendererSeriesBase{constructor(e){super(),this._bars=e.bars,this._barSpacing=e.barSpacing,this._dontDrawOpen=e.dontDrawOpen,this._thinBars=e.thinBars}draw(e,t){e.save();const i=t.pixelRatio;if(this._barWidth=this._calcBarWidth(i),this._barWidth>=2){Math.max(1,Math.floor(i))%2!=this._barWidth%2&&this._barWidth--}this._barLineWidth=this._thinBars?Math.min(this._barWidth,Math.floor(i)):this._barWidth;let s=null -;const r=this._barLineWidth<=this._barWidth&&this._barSpacing>=Math.floor(1.5*t.pixelRatio);for(const t of this._bars){s!==t.color&&(e.fillStyle=t.color,s=t.color);const n=Math.floor(.5*this._barLineWidth),o=Math.round(t.time*i),a=o-n,l=this._barLineWidth,c=a+l-1,h=Math.min(t.high,t.low),d=Math.max(t.high,t.low),u=Math.round(h*i)-n,p=Math.round(d*i)+n,_=Math.max(p-u,this._barLineWidth);e.fillRect(a,u,l,_);const m=Math.ceil(1.5*this._barWidth);if(r){const s=o-m,r=o+m,h=Math.min(a-s,r-c);if(!this._dontDrawOpen){let r=Math.max(u,Math.round(t.open*i)-n),o=r+l-1;o>u+_-1&&(o=u+_-1,r=o-l+1),e.fillRect(s,r,h,o-r+1)}let d=Math.max(u,Math.round(t.close*i)-n),p=d+l-1;p>u+_-1&&(p=u+_-1,d=p-l+1),e.fillRect(c+1,d,h,p-d+1)}}e.restore()}_getTolerance(){const e=this._calcBarWidth(1),t=this._thinBars?Math.min(e,1):e;return(0,s.interactionTolerance)().series+t/2}_getBarSpacing(){return this._barSpacing}_calcBarWidth(e){const t=Math.floor(e);return Math.max(t,Math.floor((0,s.optimalBarWidth)(this._barSpacing,e)))}}},66919:(e,t,i)=>{"use strict";i.d(t,{SeriesBarsPaneView:()=>a});var s=i(94804),r=i(41892),n=i(79035),o=i(71263);class a extends n.SeriesBarCandlesPaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.properties().childs(),n={bars:this._bars,barSpacing:this._model.timeScale().barSpacing(),dontDrawOpen:i.barStyle.childs().dontDrawOpen.value(),thinBars:11===i.style.value()?i.rangeStyle.childs().thinBars.value():i.barStyle.childs().thinBars.value()},a=new s.CompositeRenderer;return a.append(new o.PaneRendererBars(n)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&a.append(new r.SelectionRenderer(this._selectionData)),a}}},35251:(e,t,i)=>{"use strict";i.d(t,{SeriesBaselinePaneView:()=>m});var s=i(68906),r=i(94804),n=i(86441),o=i(5531),a=i(4652),l=i(49094),c=i(55257),h=i(16282),d=i(84346);class u extends h.ScaledPaneRenderer{constructor(){super(...arguments),this._data=null}setData(e){this._data=e}hitTest(e){if(null===this._data)return null;const{items:t,topLineWidth:i,bottomLineWidth:s}=this._data,r=(0,l.interactionTolerance)().series+(i+s)/4,o=(0,c.lowerbound)(t,e,(e,t)=>e.x<=t.x),h=Math.max(1,o-1),u=Math.min(t.length-1,o+1);for(let i=h;i<=u;++i){const s=t[i-1],o=t[i],{distance:l}=(0,a.distanceToSegment)(new n.Point(s.x,s.y),new n.Point(o.x,o.y),new n.Point(e.x,e.y));if(l<=r)return new d.HitTestResult(d.HitTestResult.REGULAR)}return null}_drawImpl(e){if(null===this._data)return;const{items:t,baseLevelCoordinate:i,bottom:s,bottomFillColor1:r,bottomFillColor2:a,topFillColor1:c,topFillColor2:h,topLineColor:d,bottomLineColor:u,topLineWidth:p,bottomLineWidth:_}=this._data;if(!function(e){if(0===e.length)return!1;const t=e.findIndex(e=>(0,l.coordinateIsValid)(e.y));if(-1===t)return!1;let i=e.length-1;for(;i>t&&!(0,l.coordinateIsValid)(e[i].y);)i--;return!(t>i)}(t))return;const{topItems:m,bottomItems:g}=function(e,t){const i=[],s=[];let r=null;for(let a=0;a=t&&s.push(c),r=c;else{if(null===r)continue;c=r}if((0,l.coordinateIsValid)(h.y)&&(c.y>t&&h.yt))if(Math.abs(c.x-h.x)<1){const e=new n.Point(c.x,t);i.push(e),s.push(e)}else{const e=(0,o.intersectLineSegments)(c,h,new n.Point(c.x,t),new n.Point(h.x,t));if(null!==e){const t=c.add(h.subtract(c).scaled(e));i.push(t),s.push(t)}}}return{topItems:i,bottomItems:s}}(t,i);e.lineCap="round",e.lineJoin="round",0!==m.length&&(e.beginPath(),e.moveTo(m[0].x,i),this._makeLine(e,m,!0,0),e.closePath(),e.fillStyle=this._makeLinearGradient(e,c,h,i-s,i),e.fill(),e.beginPath(),this._makeLine(e,m,!1,0),e.lineWidth=p,e.strokeStyle=d,e.stroke()),0!==g.length&&(e.beginPath(),e.moveTo(g[0].x,i),this._makeLine(e,g,!0,1),e.closePath(),e.fillStyle=this._makeLinearGradient(e,r,a,i,i+s),e.fill(),e.beginPath(),this._makeLine(e,g,!1,1),e.lineWidth=_,e.strokeStyle=u,e.stroke())}_makeLine(e,t,i,s){if(null===this._data)return;const r=t.findIndex(e=>(0,l.coordinateIsValid)(e.y));if(-1===r)return;const{barSpacing:n,baseLevelCoordinate:o}=this._data,a=.25*n;let c;const h=t.length;for(let n=r;n=o&&h.y>=o){e.moveTo(h.x,h.y);continue}}else if(c&&c.y<=o&&h.y<=o){e.moveTo(h.x,h.y);continue}if(c&&(0,l.coordinateIsValid)(c.y))e.lineTo(h.x,h.y),i&&!(0,l.coordinateIsValid)(d.y)&&e.lineTo(h.x,o);else if(d&&(0,l.coordinateIsValid)(d.y))i?(n!==r&&e.lineTo(h.x,o),e.lineTo(h.x,h.y)):e.moveTo(h.x,h.y);else if(i){if(0===n)continue;n!==r&&e.lineTo(h.x-a,o),e.lineTo(h.x-a,h.y),e.lineTo(h.x+a,h.y),e.lineTo(h.x+a,o)}else e.moveTo(h.x-a,h.y),e.lineTo(h.x+a,h.y);c=h}}}_makeLinearGradient(e,t,i,s,r){const n=e.createLinearGradient(0,s,0,r);return n.addColorStop(0,t),n.addColorStop(1,i),n}}var p=i(41892),_=i(83150);class m extends _.SeriesSingleLinePaneView{constructor(){super(...arguments),this._renderer=new u,this._topFillColor1="",this._topFillColor2="",this._bottomFillColor1="",this._bottomFillColor2="",this._topLineColor="",this._bottomLineColor="",this._topLineWidth=0,this._bottomLineWidth=0,this._barSpacing=0,this._bottom=0,this._baseLevelCoordinate=0}renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._renderer.setData({items:this._items,topFillColor1:this._topFillColor1,topFillColor2:this._topFillColor2,bottomFillColor1:this._bottomFillColor1,bottomFillColor2:this._bottomFillColor2,topLineColor:this._topLineColor,bottomLineColor:this._bottomLineColor,topLineWidth:this._topLineWidth,bottomLineWidth:this._bottomLineWidth,barSpacing:this._barSpacing,baseLevelCoordinate:this._baseLevelCoordinate,bottom:this._bottom});const i=new r.CompositeRenderer;return i.append(this._renderer),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&i.append(new p.SelectionRenderer(this._selectionData)),i}_updateImpl(){super._updateImpl();const e=this._source.priceScale();if(!e)return;const t=this._source.properties().childs().baselineStyle.childs(),i=t.transparency.value() -;this._topFillColor1=(0,s.generateColor)(t.topFillColor1.value(),i),this._topFillColor2=(0,s.generateColor)(t.topFillColor2.value(),i),this._bottomFillColor1=(0,s.generateColor)(t.bottomFillColor1.value(),i),this._bottomFillColor2=(0,s.generateColor)(t.bottomFillColor2.value(),i),this._topLineColor=t.topLineColor.value(),this._bottomLineColor=t.bottomLineColor.value(),this._topLineWidth=t.topLineWidth.value(),this._bottomLineWidth=t.bottomLineWidth.value(),this._barSpacing=this._model.timeScale().barSpacing(),this._bottom=e.height(),this._baseLevelCoordinate=Math.round(this._bottom*(Math.abs(100-t.baseLevelPercentage.value())/100))}}},42169:(e,t,i)=>{"use strict";i.d(t,{SeriesWaterlinePaneView:()=>a});var s=i(22221),r=i(56589),n=i(84346),o=i(43891);class a extends s.HorizontalLinePaneView{constructor(e){super(),this._getters=e;const t={cursorType:r.PaneCursorType.VerticalResize,activeItem:0,areaName:n.AreaName.SourceItemMove};this._lineRenderer.setHitTest(new n.HitTestResult(n.HitTestResult.MOVEPOINT,t)),this._lineRendererData.visible=!0,this._lineRendererData.linestyle=o.LINESTYLE_SPARSE_DOTTED}_updateImpl(){const{baseLevelPercentage:e,paneHeight:t,color:i}=this._getters,s=Math.abs(100-e());this._lineRendererData.y=Math.round(t()*(s/100)),this._lineRendererData.color=i()}}},52403:(e,t,i)=>{"use strict";i.d(t,{PaneRendererSeriesBase:()=>r});var s=i(84346);class r{constructor(){this._bars=[]}hitTest(e){const t=this._bars,i=this._getBarSpacing(),s=i/2;if(0===t.length)return null;const r=this._getTolerance(),n=t[0],o=t[t.length-1];if(e.xo.time+s+r)return null;let a=0,l=t.length-1,c=-1;for(;a<=l;){const i=Math.floor((a+l)/2),h=t[i];let d=s;if(h!==n&&h!==o||(d+=r),Math.abs(h.time-e.x)<=d){c=i;break}e.x-h.time>s?a=i+1:l=i-1}if(-1!==c){const n=Math.ceil(r/i);if(0!==n){const i=Math.max(0,c-n),o=Math.min(t.length-1,c+n);for(let n=i;n<=o;n++)if(Math.abs(e.x-t[n].time)<=s+r&&this._isPointAtBar(t[n],e.y,r))return this._getHitTest()}else if(this._isPointAtBar(t[c],e.y,r))return this._getHitTest()}return null}_getHitTest(){return new s.HitTestResult(s.HitTestResult.REGULAR)}_isPointAtBar(e,t,i){const s=Math.min(e.high,e.low),r=Math.max(e.high,e.low);return s-i<=t&&t<=r+i}}},48998:(e,t,i)=>{"use strict";i.d(t,{PaneRendererCandles:()=>l});var s=i(88537),r=i(84346),n=i(42759),o=i(49094),a=i(52403);class l extends a.PaneRendererSeriesBase{constructor(e){super(),this._barSpacing=1,this._barWidth=1,this._borderVisible=!1,this._barBorderWidth=1,this._wickVisible=!1,this._bodyVisible=!0,this._borderColor=void 0,this._wickColor=void 0,this._hittest=void 0,this._isPriceScaleInverted=!1,e&&this.setData(e)}setData(e){this._bars=e.bars,this._barSpacing=e.barSpacing,this._borderVisible=e.borderVisible,this._bodyVisible=e.bodyVisible,this._wickVisible=e.wickVisible,this._borderColor=e.borderColor,this._wickColor=e.wickColor,this._hittest=e.hittest,this._isPriceScaleInverted=e.isPriceScaleInverted}hitTest(e){return this._wickVisible||this._borderVisible||this._bodyVisible?super.hitTest(e):null}draw(e,t){ -if(0===this._bars.length)return;const i=t.pixelRatio;if(this._barWidth=(0,o.optimalCandlestickWidth)(this._barSpacing,i),this._barWidth>=2){Math.floor(i)%2!=this._barWidth%2&&this._barWidth--}this._wickVisible&&this._drawWicks(e,i),this._borderVisible&&this._drawBorder(e,i),this._bodyVisible&&this._drawCandles(e,i)}_getTolerance(){return(0,o.interactionTolerance)().series+this._barBorderWidth/2}_getBarSpacing(){return this._barSpacing}_getHitTest(){return this._hittest||new r.HitTestResult(r.HitTestResult.REGULAR)}_isPointAtBar(e,t,i){const s=this._bodyVisible||this._borderVisible,r=this._wickVisible;if(!s&&!r)return!1;if(s){const s=r?Math.min(e.high,e.low):Math.min(e.open,e.close),n=r?Math.max(e.high,e.low):Math.max(e.open,e.close);return s-i<=t&&t<=n+i}{const s=Math.min(e.open,e.close),r=Math.max(e.open,e.close);return e.high-i<=t&&t<=s+i||r-i<=t&&t<=e.low+i}}_drawWicks(e,t){const i=this._bars;let r="",n=Math.min(Math.floor(t),Math.floor(this._barSpacing*t));n=Math.max(Math.floor(t),Math.min(n,this._barWidth));const o=Math.floor(.5*n);let a=null;for(const l of i){const i=l.wickColor?l.wickColor:(0,s.ensureDefined)(this._wickColor);i!==r&&(e.fillStyle=i,r=i);let c=Math.round(Math.min(l.open,l.close)*t),h=Math.round(Math.max(l.open,l.close)*t);this._isPriceScaleInverted&&([h,c]=[c,h]);const d=Math.round(l.high*t),u=Math.round(l.low*t);let p=Math.round(t*l.time)-o;const _=p+n-1;null!==a&&(p=Math.max(a+1,p),p=Math.min(p,_));const m=_-p+1;e.fillRect(p,d,m,c-d),e.fillRect(p,h+1,m,u-h-1),a=_}}_calculateBorderWidth(e){let t=Math.floor(1*e);this._barWidth<=2*t&&(t=Math.floor(.5*(this._barWidth-1)));const i=Math.max(Math.floor(e),t);return this._barWidth<=2*i?Math.max(Math.floor(e),Math.floor(1*e)):i}_drawBorder(e,t){let i="";const r=this._calculateBorderWidth(t);let o=null;for(const a of this._bars){if(a.borderColor!==i&&(e.fillStyle=a.borderColor?a.borderColor:(0,s.ensureDefined)(this._borderColor),i=a.borderColor),this._bodyVisible&&a.hollow)continue;let l=Math.round(a.time*t)-Math.floor(.5*this._barWidth);const c=l+this._barWidth-1,h=Math.round(Math.min(a.open,a.close)*t),d=Math.round(Math.max(a.open,a.close)*t);if(null!==o&&(l=Math.max(o+1,l),l=Math.min(l,c)),this._barSpacing*t>2*r)(0,n.fillRectInnerBorder)(e,l,h,c-l+1,d-h+1,r);else{const t=c-l+1;e.fillRect(l,h,t,d-h+1)}o=c}}_drawCandles(e,t){let i="";const s=this._calculateBorderWidth(t);for(const r of this._bars){if(this._borderVisible&&this._barWidth<=2*s&&!r.hollow)continue;let o=Math.round(Math.min(r.open,r.close)*t),a=Math.round(Math.max(r.open,r.close)*t),l=Math.round(r.time*t)-Math.floor(.5*this._barWidth),c=l+this._barWidth-1;if(r.color!==i){const t=r.color;e.fillStyle=t,i=t}if(r.hollow)e.fillStyle=r.color,(0,n.fillRectInnerBorder)(e,l,o,c-l+1,a-o+1,s);else{if(this._borderVisible&&(l+=s,o+=s,c-=s,a-=s),o>a)continue;e.fillRect(l,o,c-l+1,a-o+1)}}}}},85224:(e,t,i)=>{"use strict";i.d(t,{SeriesCandlesPaneView:()=>l});var s=i(94804),r=i(49094),n=i(41892),o=i(79035),a=i(48998);class l extends o.SeriesBarCandlesPaneView{renderer(e,t){ -this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.priceScale();if(!i)return null;const o=this._source.properties().childs().candleStyle.childs(),l=this._model.timeScale().barSpacing(),c={bars:this._bars,barSpacing:l,bodyVisible:o.drawBody.value(),borderVisible:o.drawBorder.value(),borderColor:o.borderColor.value(),wickColor:o.wickColor.value(),barWidth:(0,r.optimalBarWidth)(l),wickVisible:o.drawWick.value(),isPriceScaleInverted:i.isInverted()},h=new s.CompositeRenderer;return h.append(new a.PaneRendererCandles(c)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&h.append(new n.SelectionRenderer(this._selectionData)),h}}},59153:(e,t,i)=>{"use strict";i.d(t,{SeriesColumnsPaneView:()=>p});var s=i(88537),r=i(86441),n=i(67337),o=i(3308),a=i(84346),l=i(94804),c=i(71053),h=i(85847),d=i(41892),u=i(68617);class p{constructor(e,t){this._items=[],this._invalidated=!0,this._isMarkersEnabled=(0,n.enabled)("source_selection_markers"),this._selectionData=null,this._histogramBase=0,this._source=e,this._model=t,this._selectionIndexer=new h.SelectionIndexes(t.timeScale())}update(){this._invalidated=!0}renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i={barSpacing:this._model.timeScale().barSpacing(),items:this._items,lineColor:"",histogramBase:this._histogramBase},s=new l.CompositeRenderer;return s.append(new u.PaneRendererColumns(i)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&s.append(new d.SelectionRenderer(this._selectionData)),s}_updateImpl(){this._items=[];const e=this._model.timeScale(),t=this._source.priceScale();if(e.isEmpty()||!t||t.isEmpty())return;const i=e.visibleBarsStrictRange();if(null===i)return;if(0===this._source.bars().size())return;const n=this._source.nearestIndex(i.firstBar(),c.PlotRowSearchMode.NearestRight),l=this._source.nearestIndex(i.lastBar(),c.PlotRowSearchMode.NearestLeft);if(void 0===n||void 0===l)return;const h=this._source.bars().range(n,l),d=this._source.barColorer(),u={},p=this._source.barFunction(),_=h.reduce((e,t,s)=>{var n;const a=p(s);if(!(0,o.default)(a))return e;u.value=s;const l=null!==(n=s[7])&&void 0!==n?n:d.barStyle(t,!1,u),c=new r.Point(t,a);return c.style=l,c.timePointIndex=t,this._items.push(c),u.previousValue=s,i.contains(t)&&null!=e?e:a},null);if(null!==_)if(t.pointsArrayToCoordinates(this._items,_),e.timedValuesToCoordinates(this._items),this._histogramBase=t.isInverted()?0:t.height(),this._model.selection().isSelected(this._source)){const i=this._selectionIndexer.indexes();this._selectionData={points:[],bgColors:[],visible:!0,barSpacing:e.barSpacing(),hittestResult:a.HitTestResult.REGULAR};const n=(0,s.ensureNotNull)(this._model.paneForSource(this._source)).height();this._selectionData.hittestResult=a.HitTestResult.REGULAR;for(let s=0;s{"use strict";i.d(t,{SeriesHollowCandlesPaneView:()=>l});var s=i(94804),r=i(49094),n=i(41892),o=i(48998),a=i(79035);class l extends a.SeriesBarCandlesPaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.priceScale();if(!i)return null;const a=this._source.properties().childs().hollowCandleStyle.childs(),l=this._model.timeScale().barSpacing(),c={bars:this._bars,barSpacing:l,bodyVisible:a.drawBody.value(),borderVisible:a.drawBorder.value(),borderColor:a.borderColor.value(),wickColor:a.wickColor.value(),barWidth:(0,r.optimalBarWidth)(l),wickVisible:a.drawWick.value(),isPriceScaleInverted:i.isInverted()},h=new s.CompositeRenderer;return h.append(new o.PaneRendererCandles(c)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&h.append(new n.SelectionRenderer(this._selectionData)),h}}},33837:(e,t,i)=>{"use strict";i.d(t,{SeriesLinePaneView:()=>h});var s=i(84346),r=i(94804),n=i(46214),o=i(28113),a=i(41892),l=i(16654),c=i(83150);class h extends c.SeriesSingleLinePaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.properties().childs().lineStyle.childs(),c={barSpacing:this._model.timeScale().barSpacing(),items:this._items,lineColor:i.color.value(),lineStyle:i.linestyle.value(),withMarkers:i.styleType.value()===l.STYLE_LINE_TYPE_MARKERS,lineWidth:i.linewidth.value(),simpleMode:!0,hitTestResult:s.HitTestResult.REGULAR};let h,d;if(h=i.styleType.value()===l.STYLE_LINE_TYPE_STEP?new o.PaneRendererStepLine(c):new n.PaneRendererLine(c),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData){const e=new r.CompositeRenderer;e.append(h),e.append(new a.SelectionRenderer(this._selectionData)),d=e}else d=h;return d}}},79035:(e,t,i)=>{"use strict";i.d(t,{SeriesBarCandlesPaneView:()=>c});var s=i(86441),r=i(67337),n=i(85847),o=i(71053),a=i(84346);function l(e,t){const i=e[1],s=e[2],r=e[3],n=e[4];return void 0!==i&&void 0!==s&&void 0!==r&&void 0!==n&&null!==i&&null!==s&&null!==r&&null!==n&&(t.open=i,t.high=s,t.low=r,t.close=n,!0)}class c{constructor(e,t){this._bars=[],this._invalidated=!0,this._isMarkersEnabled=(0,r.enabled)("source_selection_markers"),this._selectionData=null,this._source=e,this._model=t,this._selectionIndexer=new n.SelectionIndexes(t.timeScale())}items(){return this._bars}update(){this._invalidated=!0}_updateImpl(e){const t=null!=e?e:l,i=this._model.timeScale(),r=this._source.priceScale();if(this._bars=[],i.isEmpty()||!r||r.isEmpty())return;const n=i.visibleBarsStrictRange();if(null===n)return;if(0===this._source.bars().size())return;let c=this._source.nearestIndex(n.firstBar(),o.PlotRowSearchMode.NearestRight);const h=this._source.nearestIndex(n.lastBar(),o.PlotRowSearchMode.NearestLeft);if(void 0===c||void 0===h)return;for(;c<=h;c++){ -if(null!==this._source.bars().valueAt(c))break}if(c>h)return;const d=this._source.bars().range(c,h),u=this._source.barColorer(),p={};if(d.each((e,i)=>{var s;const r={time:Math.round(e),exactTime:Math.round(e),open:NaN,high:NaN,low:NaN,close:NaN,color:""};if(!t(i,r))return!1;p.value=i;const n=null!==(s=i[7])&&void 0!==s?s:u.barStyle(e,!1,p);return i[7]=n,p.previousValue=i,r.color=n.barColor,r.borderColor=n.barBorderColor,r.wickColor=n.barWickColor,r.hollow=n.isBarHollow,this._bars.push(r),!1}),0===this._bars.length)return;const _=this._source.firstValue();if(null!==_)if(r.barPricesToCoordinates(this._bars,_),i.barIndexesToCoordinates(this._bars),this._model.selection().isSelected(this._source)){const e=this._selectionIndexer.indexes();this._selectionData={points:[],bgColors:[],visible:!0,hittestResult:a.HitTestResult.REGULAR,barSpacing:i.barSpacing()};const t=this._model.paneForSource(this._source);if(!t)return;const n=t.height();for(let t=0;t{"use strict";i.d(t,{SeriesDataSource:()=>S});var s=i(88537),r=i(80643),n=i(19234),o=i(29823),a=i(63948),l=i(51344),c=i(95836),h=i(2872),d=i.n(h);class u{constructor(){this._modified=new(d()),this._loading=new(d()),this._completed=new(d()),this._error=new(d()),this._symbolError=new(d()),this._symbolResolved=new(d()),this._seriesError=new(d()),this._symbolNotPermitted=new(d()),this._symbolInvalid=new(d()),this._symbolGroupNotPermitted=new(d()),this._chartTypeNotPermitted=new(d()),this._intradaySpreadNotPermitted=new(d()),this._intradayExchangeNotPermitted=new(d()),this._customIntervalNotPermitted=new(d()),this._secondsIntervalNotPermitted=new(d()),this._tickMarksRangeChanged=new(d()),this._barReceived=new(d()),this._seriesTimeFrame=new(d()),this._dataUpdated=new(d())}destroy(){this._modified.destroy(),this._loading.destroy(),this._completed.destroy(),this._error.destroy(),this._symbolError.destroy(),this._symbolResolved.destroy(),this._seriesError.destroy(),this._symbolInvalid.destroy(),this._symbolNotPermitted.destroy(),this._symbolGroupNotPermitted.destroy(),this._chartTypeNotPermitted.destroy(),this._intradaySpreadNotPermitted.destroy(),this._intradayExchangeNotPermitted.destroy(),this._customIntervalNotPermitted.destroy(),this._secondsIntervalNotPermitted.destroy(),this._tickMarksRangeChanged.destroy(),this._barReceived.destroy(),this._seriesTimeFrame.destroy(),this._dataUpdated.destroy()}modified(){return this._modified}loading(){return this._loading}completed(){return this._completed}error(){return this._error}symbolError(){return this._symbolError}symbolResolved(){return this._symbolResolved}seriesError(){return this._seriesError}symbolInvalid(){return this._symbolInvalid} -symbolNotPermitted(){return this._symbolNotPermitted}symbolGroupNotPermitted(){return this._symbolGroupNotPermitted}chartTypeNotPermitted(){return this._chartTypeNotPermitted}intradaySpreadNotPermitted(){return this._intradaySpreadNotPermitted}intradayExchangeNotPermitted(){return this._intradayExchangeNotPermitted}customIntervalNotPermitted(){return this._customIntervalNotPermitted}secondsIntervalNotPermitted(){return this._secondsIntervalNotPermitted}tickMarksRangeChanged(){return this._tickMarksRangeChanged}barReceived(){return this._barReceived}seriesTimeFrame(){return this._seriesTimeFrame}dataUpdated(){return this._dataUpdated}fireCompleted(e,t,i){this._completed.fire(e,t,i)}fireModified(){this._modified.fire()}fireLoading(e){this._loading.fire(e)}fireError(){this._error.fire()}fireSymbolError(e){this._symbolError.fire(e),this.fireError()}fireSymbolResolved(e){this._symbolResolved.fire(e)}fireSeriesError(e){this._seriesError.fire(e),this.fireError()}fireSymbolInvalid(){this._symbolInvalid.fire()}fireSymbolNotPermitted(e){this._symbolNotPermitted.fire(e)}fireSymbolGroupNotPermitted(e){this._symbolGroupNotPermitted.fire(e)}fireChartTypeNotPermitted(e){this._chartTypeNotPermitted.fire(e),this.fireError()}fireIntradaySpreadNotPermitted(){this._intradaySpreadNotPermitted.fire(),this.fireError()}fireIntradayExchangeNotPermitted(){this._intradayExchangeNotPermitted.fire(),this.fireError()}fireCustomIntervalNotPermitted(){this._customIntervalNotPermitted.fire(),this.fireError()}fireSecondsIntervalNotPermitted(){this._secondsIntervalNotPermitted.fire(),this.fireError()}fireTickMarksRangeChanged(e){this._tickMarksRangeChanged.fire(e)}fireBarReceived(e){this._barReceived.fire(e)}fireSeriesTimeFrame(e,t,i,s,r){this._seriesTimeFrame.fire(e,t,i,s,r)}fireDataUpdated(e,t,i){this._dataUpdated.fire(e,t,i)}}var p=i(98125),_=i(37667);const m=(0,p.getLogger)("Chart.SeriesDataSource");var g;!function(e){e[e.Idle=0]="Idle",e[e.AwaitingConnection=1]="AwaitingConnection",e[e.AwaitingFirstDataUpdate=2]="AwaitingFirstDataUpdate",e[e.Active=3]="Active"}(g||(g={}));let f=1;let v=1;class S{constructor(e,t,i,r){var n;this._symbol=null,this._resolvedSymbolName=null,this._instanceId=null,this._symbolInstanceId=null,this._resolution=null,this._timeFrame=null,this._data=new a.SeriesData,this._dataEvents=new u,this._status=g.Idle,this._turnaroundCounter=1,this._boundOnGatewayIsConnectedChanged=this._onGatewayIsConnectedChanged.bind(this),this._ongoingDataUpdate=Promise.resolve(),this._gateway=e,this._turnaroundPrefix=t,this._createSeriesParams=(n=null!=i?i:{count:300}).startDate?n.endDate||n.count?n.endDate?["from_to",n.startDate,n.endDate]:["bar_count",n.startDate,(0,s.ensure)(n.count)]:["from_to",n.startDate]:n.count||300,this._timeFrame=r||null,this._gateway.isConnected().subscribe(this._boundOnGatewayIsConnectedChanged)}destroy(){this.stop(),this._gateway.isConnected().unsubscribe(this._boundOnGatewayIsConnectedChanged)}modifySeries(e,t,i=null,n=!1){ -n&&(m.logNormal("Due to force flag clearing symbol & resolution to force re-requesting data."),this._symbol=null,this._resolution=null);const a=this._symbol,l=this._resolution;if(this._symbol=e,this._resolution=t,null===this._instanceId)return void(this._timeFrame=i);const c=!(0,r.deepEquals)(a,e)[0]||null!==this._resolvedSymbolName&&this._resolvedSymbolName!==this._getSymbolNameString(e),h=null===l||!o.Interval.isEqual(l,t);(c||h||null!==i)&&(this._timeFrame=null,(c||h)&&this._turnaroundCounter++,c&&this._resolveSymbol(),this._gateway.modifySeries(this._instanceId,this.turnaround(),(0,s.ensureNotNull)(this._symbolInstanceId),this._resolution,i,this._onMessage.bind(this)),this._dataEvents.fireModified())}requestMoreData(e){null!==this._instanceId&&this._gateway.requestMoreData(this._instanceId,e,this._onMessage.bind(this))}requestMoreTickmarks(e){null!==this._instanceId&&this._gateway.requestMoreTickmarks(this._instanceId,e,this._onMessage.bind(this))}isStarted(){return this._status!==g.Idle}isActive(){return this._status===g.Active}resolution(){return this._resolution}start(){this.isStarted()?m.logNormal("start: data source is already started, nothing to do"):((0,s.assert)(null!==this._symbol,"symbol must be set before start"),(0,s.assert)(null!==this._resolution,"resolution must be set before start"),this._gateway.isConnected().value()?this._createSeries():this._changeStatusTo(g.AwaitingConnection))}stop(){this.isStarted()?(null!==this._instanceId&&(this._gateway.removeSeries(this._instanceId),this._instanceId=null),this._changeStatusTo(g.Idle)):m.logNormal("stop: data source is already stopped, nothing to do")}instanceId(){return this._instanceId}data(){return this._data}clearData(){this.isStarted()?this._enqueueUpdate(()=>this._clearDataImpl()):this._clearDataImpl()}dataEvents(){return this._dataEvents}turnaround(){return`${this._turnaroundPrefix}${this._turnaroundCounter}`}symbolInstanceId(){return this._symbolInstanceId}symbol(){return this._symbol}moveData(e){this._enqueueUpdate(()=>this._data.moveData(e))}_resolveSymbol(){null!==this._symbol&&(this._symbolInstanceId=this._gateway.resolveSymbol("sds_sym_"+f++,(0,n.encodeExtendedSymbolOrGetSimpleSymbolString)(this._symbol),this._onMessage.bind(this)))}_clearDataImpl(){this._data.clear()}_changeStatusTo(e){(0,s.assert)(this._status!==e,"Source and destination status should be distinct"),m.logNormal(`Status changed from ${g[this._status]} to ${g[e]}`),this._status=e}_createSeries(){(0,s.assert)(this._status!==g.Active,'Status should not be "Active" when creating a study'),this._instanceId="sds_"+v++,this._resolveSymbol(),this._gateway.createSeries(this._instanceId,this.turnaround(),(0,s.ensureNotNull)(this._symbolInstanceId),(0,s.ensureNotNull)(this._resolution),this._createSeriesParams,this._timeFrame,this._onMessage.bind(this)),this._timeFrame=null,this._changeStatusTo(g.AwaitingFirstDataUpdate)}_onGatewayIsConnectedChanged(e){e?this._onGatewayConnected():this._onGatewayDisconnected()}_onGatewayConnected(){ -this._status===g.AwaitingConnection&&this._createSeries()}_onGatewayDisconnected(){this._status!==g.Idle&&this._status!==g.AwaitingConnection&&(this._instanceId=null,this._changeStatusTo(g.AwaitingConnection)),this._turnaroundCounter=1}_onMessage(e){this._enqueueUpdate(()=>this._onMessageImpl(e))}async _onMessageImpl(e){switch(e.method){case"symbol_resolved":{const[t,i]=e.params;if(t!==this._symbolInstanceId){m.logNormal(`Resolve for old symbol, expected: ${this._symbolInstanceId}, actual ${e.params[0]}`);break}this._onSymbolResolved(i);break}case"symbol_error":if(e.params[0]!==this._symbolInstanceId){m.logNormal(`Symbol error for old symbol, expected: ${this._symbolInstanceId}, actual ${e.params[0]}`);break}this._onSymbolError(e);break;case"series_timeframe":{const[t,i,s,r,n,o,a]=e.params;if(!this._checkTurnaround(t,i)){m.logNormal(`Time frame for old data, expected: ${this._symbolInstanceId} (${this.turnaround()}), actual ${t} (${i})`);break}this._onSeriesTimeFrame(s,r,n,o,a);break}case"series_error":{const[t,i]=e.params;if(!this._checkTurnaround(t,i)){m.logNormal(`Series error for old data, expected: ${this._symbolInstanceId} (${this.turnaround()}), actual ${t} (${i})`);break}this._onSeriesError(e.params[2]);break}case"series_loading":{const[t,i]=e.params;if(!this._checkTurnaround(t,i))break;this._onSeriesLoading(e.time);break}case"series_completed":{const[t,i,s,r]=e.params;if(!this._checkTurnaround(t,s)){m.logNormal(`Series completed for old data, expected: ${this._symbolInstanceId} (${this.turnaround()}), actual ${t} (${s})`);break}this._onSeriesCompleted(i,e.time,r);break}case"data_update":if(!this._checkTurnaround(e.params.customId,e.params.turnaround)){m.logNormal(`Data update for old data, expected: ${this._symbolInstanceId} (${this.turnaround()}), actual ${e.params.customId} (${e.params.turnaround})`);break}await this._onDataUpdate(e.params.plots,e.params.nonseries,e.params.lastBar);break;case"clear_data":if(e.params.turnaround!==this.turnaround()){m.logNormal(`Clear data for old data, expected: ${this.turnaround()}, actual ${e.params.turnaround}`);break}this._clearDataImpl(),this._dataEvents.fireDataUpdated(void 0,!1,null)}}_onSeriesError(e){let t,i;if("string"==typeof e)i={error:e},t=e;else if(i=e,e.ctx){const i={};Object.entries(e.ctx).forEach(([e,t])=>{i[e]=t.toString()}),t=e.error.format(i)}else t=e.error;if(t.startsWith("study_not_auth:")){const e=t.split(":",2)[1].split("@",2)[0];["BarSetRenko","BarSetPriceBreak","BarSetKagi","BarSetPnF"].includes(e)?this._dataEvents.fireChartTypeNotPermitted(e):"BarSetSpread"===e?this._dataEvents.fireIntradaySpreadNotPermitted():"BarSetRange"===e&&this._dataEvents.fireCustomIntervalNotPermitted()}else"resolution_not_entitled"===t?this._dataEvents.fireIntradayExchangeNotPermitted():"custom_resolution"===t?this._dataEvents.fireCustomIntervalNotPermitted():"seconds_not_entitled"===t&&this._dataEvents.fireSecondsIntervalNotPermitted();this._dataEvents.fireSeriesError(i)}_onSeriesTimeFrame(e,t,i,s,r){this._dataEvents.fireSeriesTimeFrame(e,t,i,null==s||s,r)} -_onSymbolError(e){if(e.params[1]===c.permissionDenied)switch(e.params[2]){case c.SymbolErrorPermissionDeniedReason.Symbol:this._dataEvents.fireSymbolNotPermitted(e.params[3]);break;case c.SymbolErrorPermissionDeniedReason.GroupPermission:this._dataEvents.fireSymbolGroupNotPermitted(e.params[3]);break;default:this._dataEvents.fireSymbolNotPermitted(e.params[2])}else e.params[1]===c.invalidSymbol&&this._dataEvents.fireSymbolInvalid();this._dataEvents.fireSymbolError(e.params[1])}_onSymbolResolved(e){this._resolvedSymbolName=(0,_.symbolForApi)(e,this._getSymbolNameString((0,s.ensureNotNull)(this._symbol))),this._dataEvents.fireSymbolResolved(e)}_getSymbolNameString(e){return"string"==typeof e.symbol?e.symbol:e.symbol.symbol}async _onDataUpdate(e,t,i){this._onDataUnpacked(e,i,await async function(e){if(void 0===e)return{projectionPlots:[],boxSize:null};if(""===e.d||"nochange"===e.indexes)return null;const t=await(0,l.unpackNonSeriesData)(e.d);if(null===t||t.indexes_replace)return null;const i=e.indexes,{bars:s,price:r,boxSize:n,reversalAmount:o}=t.data,a=(s||[]).map(e=>{let t;return"factor"in e?t=e.factor:"additionalPrice"in e&&(t=e.additionalPrice),{index:i[e.time],value:[0,e.open,e.high,e.low,e.close,e.volume,t,void 0]}});return{lastPrice:r,projectionPlots:a,reversalAmount:o,boxSize:n}}(t))}_enqueueUpdate(e){return this._ongoingDataUpdate=this._ongoingDataUpdate.then(e,e),this._ongoingDataUpdate}_onDataUnpacked(e,t,i){if(this._status===g.Idle)return;this._status===g.AwaitingFirstDataUpdate&&(this._changeStatusTo(g.Active),this._clearDataImpl());const s=this._data.bars().size(),r=this._data.bars().firstIndex(),n=this._data.mergeRegularBars(e);null!==i&&(this._data.nsBars().clear(),this._data.nsBars().merge(i.projectionPlots),this._data.lastProjectionPrice=i.lastPrice,null!==i.boxSize&&(this._data.boxSize=i.boxSize),this._data.reversalAmount=i.reversalAmount);const o=null===r||null!==n&&n.index{"use strict";i.d(t,{SeriesHorizontalBaseLinePaneView:()=>r});var s=i(38712);class r extends s.SeriesHorizontalLinePaneView{constructor(e){super(e)}_updateImpl(){this._lineRendererData.visible=!1;const e=this._series.priceScale().mode();if(!e.percentage&&!e.indexedTo100)return;const t=this._series.firstValue();null!==t&&(this._lineRendererData.visible=!0,this._lineRendererData.y=this._series.priceScale().priceToCoordinate(t,t),this._lineRendererData.color=this._series.properties().childs().baseLineColor.value())}}},38712:(e,t,i)=>{"use strict";i.d(t,{SeriesHorizontalLinePaneView:()=>r});var s=i(22221);class r extends s.HorizontalLinePaneView{constructor(e){super(),this._series=e,this._model=e.model()}}},83150:(e,t,i)=>{"use strict";i.d(t,{SeriesSingleLinePaneView:()=>d}) -;var s=i(3308),r=i(86441),n=i(88537),o=i(67337),a=i(85847),l=i(71053),c=i(84346),h=i(55257);class d{constructor(e,t){this._items=[],this._invalidated=!0,this._isMarkersEnabled=(0,o.enabled)("source_selection_markers"),this._selectionData=null,this._source=e,this._model=t,this._selectionIndexer=new a.SelectionIndexes(t.timeScale())}update(){this._invalidated=!0}_updateImpl(){var e,t;this._items=[];const i=this._model.timeScale(),o=this._source.priceScale();if(i.isEmpty()||!o||o.isEmpty())return;const a=i.visibleBarsStrictRange();if(null===a)return;if(0===this._source.bars().size())return;const d=null!==(e=this._source.nearestIndex(a.firstBar()-1,l.PlotRowSearchMode.NearestLeft))&&void 0!==e?e:a.firstBar()-1,u=null!==(t=this._source.nearestIndex(a.lastBar()+1,l.PlotRowSearchMode.NearestRight))&&void 0!==t?t:a.lastBar()+1,p=this._source.barFunction();let _=null;const m=this._model.timeScale().barSpacing();if(m<.1&&this._source.supportsPressedChunks()){_=this._source.firstValue();const e=this._source.pressedChunks(m,(0,n.ensureNotNull)(this._source.priceSource())),t=(0,h.lowerbound)(e,d,(e,t)=>e.startTimee.endTime{const i=new r.Point(t.startTime,e);this._items.push(i)})}}else{_=this._source.bars().range(d,u).reduce((e,t,i)=>{const n=p(i);if(!(0,s.default)(n))return e;const o=new r.Point(t,n);return this._items.push(o),a.contains(t)?null!=e?e:n:e},null)}if(null!==_)if(o.pointsArrayToCoordinates(this._items,_),i.timedValuesToCoordinates(this._items),this._model.selection().isSelected(this._source)){const e=this._selectionIndexer.indexes();this._selectionData={points:[],bgColors:[],visible:!0,barSpacing:i.barSpacing(),hittestResult:c.HitTestResult.REGULAR};const t=(0,n.ensureNotNull)(this._model.paneForSource(this._source)).height();this._selectionData.hittestResult=c.HitTestResult.REGULAR;for(let s=0;s{"use strict";i.d(t,{calculateColor:()=>P,SeriesValuesProvider:()=>T});var s=i(88537),r=i(93751),n=i(24377),o=i(28353),a=i(49483),l=(i(67337),i(68906)),c=i(62820),h=i(71053),d=i(14291),u=i(85733),p=i(26811),_=i(67802),m=i(33981),g=i(89128),f=i(88129),v=i(57626);const S=a.CheckMobile.any(),y=S&&!0,b=new p.PercentageFormatter,w=new _.VolumeFormatter(2),C=`${v.notAvailable} (${v.notAvailable}%)`;function P(e,t){const i=(0,n.parseRgb)(t),s=(0,n.parseRgb)(e);return(0,n.distanceRgb)(i,s)<70?(0,n.rgbToHexString)((0,n.invertRgb)(i)):t}class T{constructor(e,t){this._series=e,this._model=t,this._emptyValues=[{title:(0,o.t)("Open"),visible:!1,value:"",index:0,id:""},{title:(0,o.t)("High"),visible:!1,value:"",index:1,id:""},{title:(0,o.t)("Low"),visible:!1,value:"",index:2, -id:""},{title:(0,o.t)("Close"),visible:!1,value:"",index:3,id:""},{title:"",visible:!1,value:"",index:4,id:""},{title:"",visible:!1,value:"",index:5,id:""},{title:(0,o.t)("Change"),visible:!1,value:"",index:6,id:""},{title:(0,o.t)("Vol"),visible:!1,value:"",index:7,id:""}]}getItems(){return this._emptyValues}getValues(e){const t=this._showLastPriceAndChangeOnly(),i=this._emptyValues.map(e=>({...e,visible:!t}));i[0].value=v.notAvailable,i[1].value=v.notAvailable,i[2].value=v.notAvailable,i[3].value=v.notAvailable,i[6].value=C,i[7].value=v.notAvailable,i[5].visible=!1;const n=i[4];if(n.value=v.notAvailable,n.visible=!1,this._model.timeScale().isEmpty()||0===this._series.bars().size()||this._series.priceScale().isEmpty())return i;(0,r.isNumber)(e)||(e=(0,s.ensureNotNull)(this._series.data().last()).index);const o=this._series.nearestIndex(e,h.PlotRowSearchMode.NearestLeft);if(void 0===o)return i;const a=this._series.data().valueAt(o),d=this._model.backgroundTopColor().value();if(null===a)return i;const u=a[1],p=a[2],_=a[3],g=a[4],{values:S}=this._changesData(g,o,t),T=(0,f.getPriceValueFormatterForSource)(this._series);if((0,f.shouldBeFormattedAsPercent)(this._series)||(0,f.shouldBeFormattedAsIndexedTo100)(this._series))i[6].value="";else if(void 0!==S){const e=this._series.formatter();i[6].value=(0,c.forceLTRStr)(`${e.format(S.change,!0)} (${b.format(S.percentChange,!0)})`)}if(t)i[5].value=null==g?v.notAvailable:T(g),i[5].visible=!0,i[6].visible=!0;else{i[0].value=null==u?v.notAvailable:T(u),i[1].value=null==p?v.notAvailable:T(p),i[2].value=null==_?v.notAvailable:T(_),i[3].value=null==g?v.notAvailable:T(g),i[4].value=T(this._series.barFunction()(a));const e=a[5];(0,r.isNumber)(e)?i[7].value=w.format(e):i[7].visible=!1}let x=null;if(t&&!y)x=void 0===S||S.change>=0?m.SeriesBarColorer.upColor(this._series.properties()):m.SeriesBarColorer.downColor(this._series.properties());else{const e=this._series.barColorer().barStyle(o,!1);x=P(d,null!=e.barBorderColor?e.barBorderColor:e.barColor)}x=(0,l.resetTransparency)(P(d,x));for(const e of i)e.color=x;return i}_showLastPriceAndChangeOnly(){return S&&(null===this._model.crossHairSource().pane||(0,d.isLineToolName)(u.tool.value())||null!==this._model.lineBeingEdited())}_changesData(e,t,i){var s;if(i&&!y){const e=this._series.quotes();if(null!==e)return{values:{change:e.change,percentChange:e.change_percent}}}else{const i=this._series.data().search(t-1,h.PlotRowSearchMode.NearestLeft),r=null!==(s=null==i?void 0:i.value[4])&&void 0!==s?s:null;if(null!==r&&null!=e)return{values:{change:e-r,percentChange:(0,g.barPercentChange)(r,e)}}}return{}}}},47484:(e,t,i)=>{"use strict";i.d(t,{sessionsPreferencesDefault:()=>r});var s=i(45112);const r={graphics:{backgrounds:{outOfSession:{color:s.colorsPalette["color-tv-blue-500"],transparency:92,visible:!1},preMarket:{color:"#FF9800",transparency:92,visible:!1},postMarket:{color:s.colorsPalette["color-tv-blue-500"],transparency:92,visible:!1}},vertlines:{sessBreaks:{color:"#4985e7",style:2,visible:!1,width:1}}}}},50338:(e,t,i)=>{"use strict";i.d(t,{ -StatusProviderBase:()=>s});class s{constructor(e){this._colorProperty=e}size(){return"13px"}bold(){return!1}color(){return this._colorProperty.value()}}},45058:(e,t,i)=>{"use strict";i.d(t,{StatusView:()=>s});class s{constructor(e){this._text="",this._color="",this._size="13px",this._bold=!1,this._statusProvider=e}text(){return this._text}getSplitTitle(){return[this._text]}color(){return this._statusProvider.color()}bold(){return this._bold}size(){return this._size}}},245:(e,t,i)=>{"use strict";var s;i.d(t,{StoriesTimeLineItemType:()=>s}),function(e){e[e.Image=0]="Image",e[e.Emoji=1]="Emoji"}(s||(s={}))},70581:(e,t,i)=>{"use strict";i.d(t,{seriesPrice:()=>n,positionVisualDirection:()=>a,positionToCoordinate:()=>l,noDataBasePosition:()=>c,seriesBasePosition:()=>h,getNoDataPosition:()=>d,getSeriesPosition:()=>u});var s=i(88537),r=i(71053);function n(e,t,i){const s=e.barFunction();switch(e.style()){case 3:case 10:case 2:return s(t.value);default:return t.value[-1===i?3:2]}}function o(e){return e>=0?1:-1}function a(e,t){return-1===o(e)!==t?-1:1}function l(e,t,i,s){const r=Math.min(t,Math.max(0,1===s?i:t-i));return i-s*Math.abs(r*e/100)}function c(e,t,i){const s=e.index();return null===s?null:{index:s,price:t.coordinateToPrice(t.height()/2,i)}}function h(e,t){const i=e.data().bars(),s=i.first(),a=i.last();if(null===s||null===a)return null;let l;const c=t.index();if(null===c){if(void 0===t.time)return null;const e=t.time(),n=s.value[0],o=a.value[0];if(eo)return null;l=i.searchByTime(e,r.PlotRowSearchMode.NearestRight,4)}else l=i.search(c);return null===l?null:{index:l.index,price:n(e,l,o(t.position()))}}function d(e,t,i){const s=c(e,t,i);if(null===s)return null;const r=a(e.position(),t.isInverted());return{index:s.index,price:s.price,poleStartY:t.height(),visualDirection:1,positionPointDirection:r,startsOnSeriesData:!1}}function u(e,t,i=!0){const r=h(e,t),n=e.priceScale(),o=(0,s.ensureNotNull)(e.firstValue());if(null===r)return d(t,n,o);let l=0;const c=e.properties().childs(),u=e.model().timeScale(),p=n.priceToCoordinate(r.price,o);if(i)switch(e.style()){case 3:l=c.areaStyle.childs().linewidth.value()/2;break;case 2:l=c.lineStyle.childs().linewidth.value()/2;break;case 10:const e=Math.abs(100-c.baselineStyle.childs().baseLevelPercentage.value());l=n.height()*e/100>p?c.baselineStyle.childs().topLineWidth.value()/2:c.baselineStyle.childs().bottomLineWidth.value()/2;break;case 1:case 9:case 8:case 12:l=3;break;case 0:l=c.barStyle.childs().thinBars.value()?3:Math.max(3,.25*u.barSpacing());break;case 11:l=c.rangeStyle.childs().thinBars.value()?3:Math.max(3,.25*u.barSpacing());break;case 4:case 7:l=3;break;case 5:l=Math.max(4,.25*u.barSpacing());break;case 6:l=Math.max(5,.25*u.barSpacing())}const _=a(t.position(),n.isInverted()),m=p-_*l;return{index:r.index,price:r.price,poleStartY:m,visualDirection:_,positionPointDirection:_,startsOnSeriesData:!0}}},26582:(e,t,i)=>{"use strict";i.d(t,{materializeBackground:()=>o,dematerializeBackground:()=>a});var s=i(88537),r=i(2271),n=i(51344);function o(e,t){ -if(e.start>=t.length||e.stop>=t.length)return null;const i=t[e.start],n=t[e.stop];return n===r.INVALID_TIME_POINT_INDEX?null:((0,s.assert)(i===r.INVALID_TIME_POINT_INDEX||i<=n,"start should not exceed stop"),{start:i===r.INVALID_TIME_POINT_INDEX?null:i,stop:n})}function a(e,t,i){return{id:t,start:(0,n.ensureTimePointIndexIndex)(i.indexOf(null!==e.start?e.start:r.INVALID_TIME_POINT_INDEX)),stop:(0,n.ensureTimePointIndexIndex)(i.indexOf(e.stop))}}},54376:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LiveStudyGraphics:()=>o.LiveStudyGraphics,StaticStudyGraphics:()=>n.StaticStudyGraphics,createGraphicsPaneViews:()=>u,createGraphicsPriceAxisViews:()=>_,emptyStudyGraphics:()=>n.emptyStudyGraphics,isStudyGraphicsEmpty:()=>r.isStudyGraphicsEmpty,loadStudyGraphics:()=>n.loadStudyGraphics,saveStudyGraphics:()=>n.saveStudyGraphics});var s=i(98125),r=i(82065),n=i(81064),o=i(75871),a=i(97938);class l extends a.PriceAxisView{constructor(e,t){super(),this._source=e,this._data=t}_updateRendererData(e,t,i){e.visible=!1;const s=this._source.priceScale(),r=this._source.properties().visible.value();if(!s||s.isEmpty()||!r)return;const n=this._source.properties().graphics[this._data.lineType][this._data.styleId];if(!(n.visible&&n.visible.value()&&n.showPrice&&n.showPrice.value()&&this._isLabelVisibleAccordinglyToProperties()))return;const o=this._source.firstValue();if(null===o)return;const a=this._data.line.level,l=n.color.value();i.background=l,i.textColor=this.generateTextColor(l),i.coordinate=s.priceToCoordinate(a,o),e.text=s.formatPrice(a,o,!0),e.visible=!0}_isLabelVisibleAccordinglyToProperties(){return!!this._source.model().properties().childs().scalesProperties.childs().showStudyLastValue.value()&&this._source.properties().showLabelsOnPriceScale.value()}}const c=(0,s.getLogger)("Chart.StudyGraphics"),h=new Set(["dwgtablecells"]);async function d(e,t,s,r){switch(e){case"hhists":return new((await i.e(507).then(i.bind(i,93742))).HHistPaneView)(t,s,r);case"horizlines":return new((await i.e(507).then(i.bind(i,22107))).HorizLinePaneView)(t,s,r);case"vertlines":return new((await i.e(507).then(i.bind(i,59778))).VertLinePaneView)(t,s,r);case"polygons":return new((await i.e(507).then(i.bind(i,54077))).PolygonPaneView)(t,s,r);case"backgrounds":return new((await i.e(507).then(i.bind(i,72984))).BackgroundPaneView)(t,s,r)}return null}async function u(e,t,i){const s=[],r=Object.keys(e.graphicsInfo());r.sort((e,t)=>p(e)-p(t));for(const n of r){const r=await d(n,e,t,i);null!==r?s.push(r):h.has(n)||c.logWarn(n+" is not supported by this build of graphics subsystem, skipping")}return s}function p(e){switch(e){case"polygons":return-100;case"trendchannels":return-90;default:return 0}}function _(e){const t=Object.keys(e.graphicsInfo()),i=[];for(const s of t)switch(s){case"hlines":e.graphics().hlines().forEach((t,r)=>{t.forEach(t=>{void 0!==t.level&&i.push(new l(e,{line:{level:t.level},styleId:r,lineType:s}))})});break;case"horizlines":e.graphics().horizlines().forEach((t,r)=>{t.forEach(t=>{void 0!==t.level&&i.push(new l(e,{line:{level:t.level},styleId:r, -lineType:s}))})})}return i}},95018:(e,t,i)=>{"use strict";i.d(t,{HHistDirection:()=>s,HHistLocation:()=>r,HHistVolumeMode:()=>n,materializeHHist:()=>c,dematerializeHHist:()=>h});var s,r,n,o=i(88537),a=i(2271),l=i(51344);function c(e,t){if(e.firstBarTime>=t.length||e.lastBarTime>=t.length)return null;const i=t[e.firstBarTime],s=t[e.lastBarTime];return i===a.INVALID_TIME_POINT_INDEX||s===a.INVALID_TIME_POINT_INDEX?null:((0,o.assert)(i<=s,"firstBarTime should not exceed lastBarTime"),(0,o.assert)(e.priceLow<=e.priceHigh,"priceLow should not exceed priceHigh"),{firstBarTime:i,lastBarTime:s,rate:e.rate,priceHigh:e.priceHigh,priceLow:e.priceLow})}function h(e,t,i){const s=(0,l.ensureTimePointIndexIndex)(i.indexOf(e.firstBarTime)),r=(0,l.ensureTimePointIndexIndex)(i.indexOf(e.lastBarTime));return{id:t,...e,firstBarTime:s,lastBarTime:r}}!function(e){e.LeftToRight="left_to_right",e.RightToLeft="right_to_left"}(s||(s={})),function(e){e.Relative="relative",e.Absolute="absolute"}(r||(r={})),function(e){e.UpDown="Up/Down",e.Total="Total",e.Delta="Delta"}(n||(n={}))},15513:(e,t,i)=>{"use strict";i.d(t,{materializeHorizLine:()=>o,dematerializeHorizLine:()=>a});var s=i(88537),r=i(2271),n=i(51344);function o(e,t){if(e.startIndex>=t.length||e.endIndex>=t.length)return null;const i=t[e.startIndex],n=t[e.endIndex];return i===r.INVALID_TIME_POINT_INDEX||n===r.INVALID_TIME_POINT_INDEX?null:((0,s.assert)(i<=n,"startIndex should not exceed endIndex"),{startIndex:i,endIndex:n,level:e.level,extendLeft:e.extendLeft,extendRight:e.extendRight})}function a(e,t,i){const s=(0,n.ensureTimePointIndexIndex)(i.indexOf(e.startIndex)),r=(0,n.ensureTimePointIndexIndex)(i.indexOf(e.endIndex));return{id:t,...e,startIndex:s,endIndex:r}}},75871:(e,t,i)=>{"use strict";i.d(t,{LiveStudyGraphics:()=>d});var s=i(88537),r=i(95018),n=i(15513),o=i(57987),a=i(39834),l=i(26582),c=i(82065),h=i(81064);class d{constructor(){this._indexes=[],this._horizlines=new Map,this._vertlines=new Map,this._lines=new Map,this._hlines=new Map,this._textmarks=new Map,this._shapemarks=new Map,this._backgrounds=new Map,this._polygons=new Map,this._trendchannels=new Map,this._hhists=new Map,this._dwglabels=new Map,this._dwgboxes=new Map,this._dwglines=new Map,this._dwgtables=new Map,this._dwgtablecells=new Map,this._dwglinefills=new Map,this._hhistsByTimePointIndex=new Map}horizlines(){return this._horizlines}vertlines(){return this._vertlines}lines(){return this._lines}hlines(){return this._hlines}textmarks(){return this._textmarks}shapemarks(){return this._shapemarks}backgrounds(){return this._backgrounds}polygons(){return this._polygons}trendchannels(){return this._trendchannels}hhists(){return this._hhists}dwglabels(){return this._dwglabels}dwglines(){return this._dwglines}dwgboxes(){return this._dwgboxes}dwgtables(){return this._dwgtables}dwgtablecells(){return this._dwgtablecells}dwglinefills(){return this._dwglinefills}hhistsByTimePointIndex(){return this._hhistsByTimePointIndex}clear(){this._indexes=[],this._clearPrimitives()}extract(){const e=e=>e.extract(),t={ -indexes:this._indexes,horizlines:p(this._horizlines,e),vertlines:p(this._vertlines,e),lines:p(this._lines,e),hlines:p(this._hlines,e),textmarks:p(this._textmarks,e),shapemarks:p(this._shapemarks,e),backgrounds:p(this._backgrounds,e),polygons:p(this._polygons,e),trendchannels:p(this._trendchannels,e),hhists:p(this._hhists,e),dwglabels:p(this._dwglabels,e),dwglines:p(this._dwglines,e),dwgboxes:p(this._dwgboxes,e),dwgtables:p(this._dwgtables,e),dwgtablecells:p(this._dwgtablecells,e),dwglinefills:p(this._dwglinefills,e)};return this._hhistsByTimePointIndex=new Map,new h.StaticStudyGraphics("data",t)}replaceIndexesTo(e){this._indexes=e;const t=e=>e.replaceIndexesTo(this._indexes);this._horizlines.forEach(t),this._vertlines.forEach(t),this._lines.forEach(t),this._hlines.forEach(t),this._textmarks.forEach(t),this._shapemarks.forEach(t),this._backgrounds.forEach(t),this._polygons.forEach(t),this._trendchannels.forEach(t),this._hhists.forEach(t),this._dwglabels.forEach(t),this._dwgboxes.forEach(t),this._dwglines.forEach(t),this._dwgtables.forEach(t),this._dwgtablecells.forEach(t),this._dwglinefills.forEach(t),this._hhistsByTimePointIndex=(0,c.splitHHistsByTimePointIndex)(this._hhists)}processCommands(e,t){void 0!==e.erase&&this._processEraseCommands(e.erase),void 0!==e.create&&this._processCreateCommands(e.create,t)}_processCreateCommands(e,t){for(const i in e){if(!e.hasOwnProperty(i))continue;const c=i;switch((0,s.assert)(c in t,`There is a '${c}' in study response, but it doesn't present in graphics info!`),c){case"hhists":_(this._hhists,e[c],t[c],this._indexes,r.materializeHHist);break;case"horizlines":_(this._horizlines,e[c],t[c],this._indexes,n.materializeHorizLine);break;case"vertlines":_(this._vertlines,e[c],t[c],this._indexes,o.materializeVertLine);break;case"polygons":_(this._polygons,e[c],t[c],this._indexes,a.materializePolygon);break;case"backgrounds":_(this._backgrounds,e[c],t[c],this._indexes,l.materializeBackground)}}this._hhistsByTimePointIndex=(0,c.splitHHistsByTimePointIndex)(this._hhists)}_processEraseCommands(e){for(const t of e)if("all"===t.action)this._clearPrimitives();else{const e=e=>e.deleteById(t.id);switch(t.type){case"horizlines":this._horizlines.forEach(e);break;case"vertlines":this._vertlines.forEach(e);break;case"lines":this._lines.forEach(e);break;case"hlines":this._hlines.forEach(e);break;case"textmarks":this._textmarks.forEach(e);break;case"shapemarks":this._shapemarks.forEach(e);break;case"backgrounds":this._backgrounds.forEach(e);break;case"polygons":this._polygons.forEach(e);break;case"trendchannels":this._trendchannels.forEach(e);break;case"hhists":this._hhists.forEach(e);break;case"dwglabels":this._dwglabels.forEach(e);break;case"dwglines":this._dwglines.forEach(e);break;case"dwgboxes":this._dwgboxes.forEach(e);break;case"dwgtables":this._dwgtables.forEach(e);break;case"dwgtablecells":this._dwgtablecells.forEach(e);break;case"dwglinefills":this._dwglinefills.forEach(e)}}this._hhistsByTimePointIndex=(0,c.splitHHistsByTimePointIndex)(this._hhists)}_clearPrimitives(){ -this._horizlines.clear(),this._vertlines.clear(),this._lines.clear(),this._hlines.clear(),this._textmarks.clear(),this._shapemarks.clear(),this._backgrounds.clear(),this._polygons.clear(),this._trendchannels.clear(),this._hhists.clear(),this._dwglabels.clear(),this._dwgboxes.clear(),this._dwglines.clear(),this._dwgtables.clear(),this._dwgtablecells.clear(),this._dwglinefills.clear(),this._hhistsByTimePointIndex=new Map}}class u{constructor(e,t){this._primitivesDataById=new Map,this._primitiveById=new Map,this._materializePrimitive=e,this._indexes=t}forEach(e,t){this._primitiveById.forEach(i=>{e.call(t,i,i,this)})}has(e){let t=!1;return this._primitiveById.forEach(i=>{t=t||i===e}),t}get size(){return this._primitiveById.size}[Symbol.iterator](){throw new Error("Not implemented")}entries(){throw new Error("Not implemented")}keys(){throw new Error("Not implemented")}values(){throw new Error("Not implemented")}hasId(e){return this._primitiveById.has(e)}addData(e){this._primitivesDataById.set(e.id,e),this._tryMaterialize(e)}deleteById(e){this._primitiveById.delete(e),this._primitivesDataById.delete(e)}clear(){this._primitivesDataById.clear(),this._primitiveById.clear()}replaceIndexesTo(e){this._indexes=e,this._primitiveById.clear(),this._primitivesDataById.forEach(this._tryMaterialize,this)}extract(){const e=new Set(this._primitivesDataById.values());return this._primitivesDataById=new Map,this._primitiveById.clear(),e}_tryMaterialize(e){const t=this._materializePrimitive(e,this._indexes);null!==t&&((0,s.assert)(!this._primitiveById.has(e.id),"primitive with specified id should not exist"),this._primitiveById.set(e.id,t))}}function p(e,t){const i=new Map;return e.forEach((e,s)=>i.set(s,t(e))),i}function _(e,t,i,r,n){if(void 0!==t)for(const o of t){const t=o.styleId;void 0!==i&&(0,s.assert)(t in i,"Every style used by graphics primitive should be declared in study metainfo");let a=e.get(t);void 0===a&&(a=new u(n,r),e.set(t,a)),o.data.forEach(a.addData.bind(a))}}},39834:(e,t,i)=>{"use strict";i.d(t,{materializePolygon:()=>n,dematerializePolygon:()=>o});var s=i(2271),r=i(51344);function n(e,t){for(const i of e.points){if(i.index>=t.length)return null;if(t[i.index]===s.INVALID_TIME_POINT_INDEX)return null}return{points:e.points.map(e=>({index:t[e.index],offset:e.offset,level:e.level}))}}function o(e,t,i){return{id:t,points:e.points.map(e=>({...e,index:(0,r.ensureTimePointIndexIndex)(i.indexOf(e.index))}))}}},81064:(e,t,i)=>{"use strict";i.d(t,{StaticStudyGraphics:()=>h,emptyStudyGraphics:()=>_,loadStudyGraphics:()=>m,saveStudyGraphics:()=>g});var s=i(2271),r=i(15513),n=i(57987),o=i(95018),a=i(39834),l=i(26582),c=i(82065);class h{constructor(e,t){if(this._indexes=[],this._horizlines=new Map,this._vertlines=new Map,this._lines=new Map,this._hlines=new Map,this._textmarks=new Map,this._shapemarks=new Map,this._backgrounds=new Map,this._polygons=new Map,this._trendchannels=new Map,this._hhists=new Map,this._dwglabels=new Map,this._dwglines=new Map,this._dwgboxes=new Map,this._dwgtables=new Map,this._dwgtablecells=new Map, -this._dwglinefills=new Map,"data"===e){const e=t;this._indexes=e.indexes,this._vertlines=d(e.vertlines,this._indexes,n.materializeVertLine),this._horizlines=d(e.horizlines,this._indexes,r.materializeHorizLine),this._polygons=d(e.polygons,this._indexes,a.materializePolygon),this._hhists=d(e.hhists,this._indexes,o.materializeHHist),this._backgrounds=d(e.backgrounds,this._indexes,l.materializeBackground)}else if("state"===e){const e=t;this._indexes=e.indexes||[],this._vertlines=u(e.vertlines,this._indexes,n.materializeVertLine),this._horizlines=u(e.horizlines,this._indexes,r.materializeHorizLine),this._polygons=u(e.polygons,this._indexes,a.materializePolygon),this._hhists=u(e.hhists,this._indexes,o.materializeHHist),this._backgrounds=u(e.backgrounds,this._indexes,l.materializeBackground)}this._hhistsByTimePointIndex=(0,c.splitHHistsByTimePointIndex)(this._hhists)}horizlines(){return this._horizlines}vertlines(){return this._vertlines}lines(){return this._lines}hlines(){return this._hlines}textmarks(){return this._textmarks}shapemarks(){return this._shapemarks}backgrounds(){return this._backgrounds}polygons(){return this._polygons}trendchannels(){return this._trendchannels}hhists(){return this._hhists}dwglabels(){return this._dwglabels}dwglines(){return this._dwglines}dwgboxes(){return this._dwgboxes}dwgtables(){return this._dwgtables}dwgtablecells(){return this._dwgtablecells}dwglinefills(){return this._dwglinefills}hhistsByTimePointIndex(){return this._hhistsByTimePointIndex}}function d(e,t,i){const s=new Map;return e.forEach((e,r)=>{const n=s.get(r)||new Set;e.forEach(e=>{const s=i(e,t);null!==s&&n.add(s)}),s.set(r,n)}),s}function u(e,t,i){const s=new Map;if(void 0===e)return s;for(const r of e){const e=r.styleId,n=s.get(e)||new Set;r.data.forEach(e=>{const s=i(e,t);null!==s&&n.add(s)}),s.set(e,n)}return s}function p(e,t,i,s){const r=[];return e.forEach((e,n)=>{e.forEach(e=>{!function(e,t,i){let s=null;for(const i of e)i.styleId===t&&(s=i);null===s&&(s={styleId:t,data:[]},e.push(s)),s.data.push(i)}(r,n,s(e,t(e),i))})}),r.length>0?r:void 0}function _(){return new h}function m(e){return new h("state",e)}function g(e){const t=function(e){const t=new Set;e.horizlines().forEach((e,i)=>{e.forEach(e=>{t.add(e.startIndex),t.add(e.endIndex)})}),e.vertlines().forEach((e,i)=>{e.forEach(e=>{t.add(e.index)})}),e.lines().forEach((e,i)=>{e.forEach(e=>{t.add(e.startIndex),t.add(e.endIndex)})}),e.textmarks().forEach((e,i)=>{e.forEach(e=>{t.add(e.time)})}),e.shapemarks().forEach((e,i)=>{e.forEach(e=>{t.add(e.time)})}),e.backgrounds().forEach((e,i)=>{e.forEach(e=>{t.add(null!==e.start?e.start:s.INVALID_TIME_POINT_INDEX),t.add(e.stop)})}),e.polygons().forEach((e,i)=>{e.forEach(e=>{e.points.forEach(e=>{t.add(e.index)})})}),e.trendchannels().forEach((e,i)=>{e.forEach(e=>{t.add(e.startIndex),t.add(e.endIndex)})}),e.hhists().forEach((e,i)=>{e.forEach(e=>{t.add(e.firstBarTime),t.add(e.lastBarTime)})}),e.dwglabels().forEach((e,i)=>{e.forEach(e=>{t.add(e.x)})}),e.dwglines().forEach((e,i)=>{e.forEach(e=>{var i,r -;t.add(null!==(i=e.x1)&&void 0!==i?i:s.INVALID_TIME_POINT_INDEX),t.add(null!==(r=e.x2)&&void 0!==r?r:s.INVALID_TIME_POINT_INDEX)})}),e.dwgboxes().forEach((e,i)=>{e.forEach(e=>{var i,r;t.add(null!==(i=e.left)&&void 0!==i?i:s.INVALID_TIME_POINT_INDEX),t.add(null!==(r=e.right)&&void 0!==r?r:s.INVALID_TIME_POINT_INDEX)})});const i=Array.from(t);return i.sort((e,t)=>e-t),i}(e),i={indexes:t};let c=0;const h=()=>++c;return i.vertlines=p(e.vertlines(),h,t,n.dematerializeVertLine),i.horizlines=p(e.horizlines(),h,t,r.dematerializeHorizLine),i.polygons=p(e.polygons(),h,t,a.dematerializePolygon),i.hhists=p(e.hhists(),h,t,o.dematerializeHHist),i.backgrounds=p(e.backgrounds(),h,t,l.dematerializeBackground),i}},95936:(e,t,i)=>{"use strict";var s,r,n,o;i.d(t,{MarkLocation:()=>s,HAlign:()=>r,LineStyle:()=>o}),function(e){e.AboveBar="AboveBar",e.BelowBar="BelowBar",e.Top="Top",e.Bottom="Bottom",e.Right="Right",e.Left="Left",e.Absolute="Absolute",e.AbsoluteUp="AbsoluteUp",e.AbsoluteDown="AbsoluteDown"}(s||(s={})),function(e){e.Left="left",e.Center="center",e.Right="right"}(r||(r={})),function(e){e.Top="top",e.Middle="middle",e.Bottom="bottom"}(n||(n={})),function(e){e[e.Solid=0]="Solid",e[e.Dotted=1]="Dotted",e[e.Dashed=2]="Dashed"}(o||(o={}))},82065:(e,t,i)=>{"use strict";i.d(t,{isStudyGraphicsEmpty:()=>r,splitHHistsByTimePointIndex:()=>n});const s=["horizlines","vertlines","lines","hlines","textmarks","shapemarks","backgrounds","polygons","trendchannels","hhists","dwglabels","dwglines","dwgboxes","dwgtables","dwgtablecells","dwglinefills"];function r(e){return!s.some(t=>e[t]().size>0)}function n(e){const t=new Map;return e.forEach((e,i)=>{e.forEach(e=>{const s={...e,styleId:i},r=e.firstBarTime;let n=t.get(r);void 0===n&&(n=new Set,t.set(r,n)),n.add(s)})}),t}},57987:(e,t,i)=>{"use strict";i.d(t,{materializeVertLine:()=>n,dematerializeVertLine:()=>o});var s=i(2271),r=i(51344);function n(e,t){if(e.index>=t.length)return null;const i=t[e.index];return i===s.INVALID_TIME_POINT_INDEX?null:{startPrice:e.startPrice,endPrice:e.endPrice,index:i,extendTop:e.extendTop,extendBottom:e.extendBottom}}function o(e,t,i){const s=(0,r.ensureTimePointIndexIndex)(i.indexOf(e.index));return{id:t,...e,index:s}}},99682:(e,t,i)=>{"use strict";i.d(t,{HHistBasedValuesProvider:()=>_});var s=i(93751),r=i(88537),n=i(49483),o=i(71053),a=i(85733),l=i(67802),c=i(95018),h=i(44601),d=i(57626);function u(e,t="",i=""){return{id:t,index:e,title:i,value:"",visible:!1}}const p=n.CheckMobile.any();class _{constructor(e,t){this._emptyValues=[],this._study=e,this._model=t,void 0!==this._study.metaInfo().graphics.hhists&&this._emptyValues.push(u(0),u(1),u(2))}getItems(){return this._emptyValues}getValues(e){const t=this._emptyValues.map(e=>({...e}));t.forEach(e=>{e.visible=this._study.isVisible(),e.value=d.notAvailable});const i=this._study.properties().child("inputs").child("volume").value();switch(i){case c.HHistVolumeMode.UpDown:t[0].title="Up",t[1].title="Down",t[2].title="Total";break;case c.HHistVolumeMode.Total:t[0].title="Total",t[1].visible=!1,t[2].visible=!1;break -;case c.HHistVolumeMode.Delta:t[0].title="Delta",t[1].title="Max(Up, Down)",t[2].title="Total"}const n=this._study.priceScale(),a=this._model.timeScale();if(null===n||n.isEmpty()||a.isEmpty()||this._hideValues())return t;if(null===e||!isFinite(e)){const i=this._study.data().last();if(null===i)return t;e=i.index}const h=this._model.crossHairSource(),u=h.price;if(!isFinite(h.y)&&null===(e=function(e,t){var i;const s=null===(i=e.visibleBarsStrictRange())||void 0===i?void 0:i.lastBar();if(!s)return null;const r=t.data().search(s,o.PlotRowSearchMode.NearestLeft);return r?r.index:null}(this._model.timeScale(),this._model.mainSeries())))return t;const p=function(e,t,i,s){if(0===e.size)return null;if(!i){const e=(0,r.ensureNotNull)(s.data().valueAt(t));i=s.barFunction()(e)}const n=function(e,t){let i=null;return e.forEach((e,s)=>{s<=t&&(null===i||s>i)&&(i=s)}),i}(e,t);if(null===n)return null;const o=e.get(n);if(!o||0===o.size)return null;return function(e,t){let i=null;return e.forEach(e=>{e.priceLow<=t&&t{e.value="0"}),t;const _=this._study.metaInfo().graphics.hhists;if(void 0===_)return t;if(void 0===_[p.styleId])return t;const m=this._study.properties().child("graphics").child("hhists").child(p.styleId),g=new l.VolumeFormatter,f=e=>(0,s.isNumber)(e)?g.format(e):"";if(i!==c.HHistVolumeMode.Delta){if(p.rate.forEach((e,i)=>{t[i].value=f(e),t[i].color=m.colors[i].value()}),i===c.HHistVolumeMode.UpDown){const e=p.rate[0]+p.rate[1];t[2].value=f(e),t[2].color=m.valuesColor.value()}}else{const e=p.rate[0]>p.rate[1]?0:1,i=m.colors[e].value(),s=p.rate[0]+p.rate[1];[2*p.rate[e]-s,p.rate[e],s].forEach((e,s)=>{t[s].value=f(e),t[s].color=i})}return t}_hideValues(){return p&&(null===this._model.crossHairSource().pane||(0,h.isLineToolName)(a.tool.value())||null!==this._model.lineBeingEdited())}}},72857:(e,t,i)=>{"use strict";i.d(t,{makeNextSymbolId:()=>r,makeNextStudyId:()=>o});let s=0;function r(){return s++,"ss_"+s}let n=0;function o(){return n++,"st"+n}},5402:(e,t,i)=>{"use strict";i.d(t,{migrateMetaInfoAndPropState:()=>_});var s=i(88537),r=i(67072),n=i.n(r),o=i(80643);const a=["Moving Average@tv-basicstudies","Moving Average Exponential@tv-basicstudies"];class l{targetMetaInfoVersion(){return 53}migrateMetaInfo(e){const t=e;e._metainfoVersion=53,a.includes(t.id)}migratePropState(e){var t,i,s;a.includes(e.id)&&(e.inputs.length=null!==(t=e.inputs.length)&&void 0!==t?t:e.inputs.in_0,e.inputs.source=null!==(i=e.inputs.source)&&void 0!==i?i:e.inputs.in_1,e.inputs.offset=null!==(s=e.inputs.offset)&&void 0!==s?s:e.inputs.in_2,delete e.inputs.in_0,delete e.inputs.in_1,delete e.inputs.in_2,e.plots[1]={id:"smoothedMA",type:"line"},e.styles.smoothedMA={display:0,linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:0,color:"#0496ff",histogramBase:0,joinPoints:!1,title:"Smoothed MA"})}}const c=["Volume@tv-basicstudies"];class h{targetMetaInfoVersion(){return 53}migrateMetaInfo(e){const t=e -;e._metainfoVersion=53,c.includes(t.id)}migratePropState(e){var t;c.includes(e.id)&&(e.inputs.maLength=null!==(t=e.inputs.length)&&void 0!==t?t:e.inputs.maLength,delete e.inputs.length,delete e.inputs.offset,delete e.inputs.source,e.plots[1]={id:"smoothedMA",type:"line"},e.styles.smoothedMA={display:0,linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:0,color:"#0496ff",histogramBase:0,joinPoints:!1,title:"Smoothed MA"})}}const d=["Relative Strength Index@tv-basicstudies","Commodity Channel Index@tv-basicstudies","On Balance Volume@tv-basicstudies"];class u{targetMetaInfoVersion(){return 53}migrateMetaInfo(e){const t=e;e._metainfoVersion=53,d.includes(t.id)}migratePropState(e){d.includes(e.id)&&(e.plots[1]={id:"smoothedMA",type:"line"},e.styles.smoothedMA={display:0,linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:0,color:"#0496ff",histogramBase:0,joinPoints:!1,title:"Smoothed MA"})}}const p=[new class{targetMetaInfoVersion(){return 47}migrateMetaInfo(e){const t=e,i=e;if(i._metainfoVersion=47,!t.defaults||void 0===t.defaults.precision)return void(i.format={type:"inherit"});const s=t.defaults&&t.defaults.precision,r=(0,o.isNumber)(s)?s:parseInt(s);0===r?i.format={type:"volume"}:isFinite(r)?i.format={type:"price",precision:r}:i.format={type:"inherit"},delete t.defaults.precision}migratePropState(e){}},new class{targetMetaInfoVersion(){return 50}migrateMetaInfo(e){const t=e,i=e;if(i._metainfoVersion=50,void 0===t.defaults||void 0===t.defaults.ohlcPlots||void 0===t.ohlcPlots)return;const r=t.ohlcPlots,n=t.defaults.ohlcPlots,o=(0,s.ensureDefined)((0,s.ensureDefined)(i.defaults).ohlcPlots);for(const e of Object.keys(n)){const t=n[e];if("ohlc_candles"===t.plottype){let i=!1;const s=r[e];void 0!==s&&(i=!!s.drawBorder,delete s.drawBorder),o[e]={borderColor:"#000000",drawBorder:i,...t}}}}migratePropState(e){}}];function _(e,t){const i=n().versionOf(e),r=e;void 0===r._serverMetaInfoVersion&&(r._serverMetaInfoVersion=i),p.forEach(r=>{i<0||i>=r.targetMetaInfoVersion()||(r.migrateMetaInfo(e),void 0!==t&&r.migratePropState(t),(0,s.assert)(e._metainfoVersion===r.targetMetaInfoVersion()))})}p.push(new l),p.push(new h),p.push(new u),p.sort((function(e,t){return e.targetMetaInfoVersion()-t.targetMetaInfoVersion()}))},13672:(e,t,i)=>{"use strict";i.d(t,{NonSeriesStudy:()=>n});var s=i(88537),r=i(66101);class n extends r.Study{clearData(){this._customData=null,this._indexes=null}restoreData(e,t,i){super.restoreData(e),this._customData=t,this._indexes=i}state(e){const t=super.state(e);return e&&(t.nonSeriesData=this._customData,t.indexes=this._indexes),t}customData(){return this._customData}_setPaneViews(e){this._paneViews=e,this.model().lightUpdate()}_onDataUpdated(e,t,i){null!==t&&(t.indexes_replace?((0,s.assert)("nochange"!==i),this._indexes=i):(this._customData=t.data,"nochange"!==i&&(this._indexes=i))),super._onDataUpdated(e,t,i)}}},52457:(e,t,i)=>{"use strict";i.d(t,{OverlayLegendValuesProvider:()=>C}) -;var s=i(37667),r=i(93751),n=i(28353),o=i(49483),a=i(68906),l=i(62820),c=i(26811),h=i(83393),d=i(71053),u=i(14291),p=i(85733),_=i(89128),m=i(33981),g=i(88129),f=i(57626);const v=o.CheckMobile.any(),S=v&&!0,y=new c.PercentageFormatter,b=f.notAvailable,w=`${b} (${b}%)`;class C extends class{constructor(e,t){this._study=e,this._model=t,this._emptyValues=[{title:(0,n.t)("Open"),visible:!1,value:"",index:0,id:""},{title:(0,n.t)("High"),visible:!1,value:"",index:1,id:""},{title:(0,n.t)("Low"),visible:!1,value:"",index:2,id:""},{title:(0,n.t)("Close"),visible:!1,value:"",index:3,id:""},{title:"",visible:!1,value:"",index:4,id:""},{title:"",visible:!1,value:"",index:5,id:""},{title:(0,n.t)("Change"),visible:!1,value:"",index:6,id:""}]}getItems(){return this._emptyValues}getValues(e){const t=this._emptyValues.map(e=>({...e}));if(this._model.timeScale().isEmpty())return t;if(0===this._study.data().size())return t;const i=this._showLastPriceAndChangeOnly();if((0,r.isNumber)(e)||(i?e=this._study.data().lastIndex():(e=this._model.crossHairSource().appliedIndex(),(0,r.isNumber)(e)||(e=this._study.data().lastIndex()))),null===e||!(0,r.isNumber)(e))return t;const s=this._study.data().search(e,d.PlotRowSearchMode.NearestLeft,1),n=this._model.backgroundTopColor().value();if(null===s)return t;const o=s.index,c=s.value,u=c[1],p=c[2],_=c[3],f=c[4];t[0].value=b,t[1].value=b,t[2].value=b,t[3].value=b,t[6].value=w;for(const e of t)e.visible=!i;const v=t[4];v.visible=!1;const{values:C}=this._changesData(f,u,o,i),P=(0,g.getPriceValueFormatterForSource)(this._study);if((0,g.shouldBeFormattedAsPercent)(this._study)||(0,g.shouldBeFormattedAsIndexedTo100)(this._study))t[6].value="";else if(void 0!==C){const e=this._study.formatter();t[6].value=(0,l.forceLTRStr)(`${e.format(C.change,!0)} (${y.format(C.percentChange,!0)})`)}i?(t[5].value=null==f?b:P(f),t[5].visible=!0,t[6].visible=!0):(t[0].value=null==u?b:P(u),t[1].value=null==p?b:P(p),t[2].value=null==_?b:P(_),t[3].value=null==f?b:P(f),v.value=P(this._study.barFunction()(c)),t[5].visible=!1);let T=null;if(i&&!S)T=void 0===C||C.change>=0?m.SeriesBarColorer.upColor(this._study.properties()):m.SeriesBarColorer.downColor(this._study.properties());else{const e=this._study.barColorer().barStyle(o,!1),t=null!=e.barBorderColor?e.barBorderColor:e.barColor;T=(0,h.calculateColor)(n,t)}T=(0,a.resetTransparency)((0,h.calculateColor)(n,T));for(const e of t)e.color=T;return t}_showLastPriceAndChangeOnly(){return v&&(null===this._model.crossHairSource().pane||(0,u.isLineToolName)(p.tool.value())||null!==this._model.lineBeingEdited())}_changesData(e,t,i,s){var r;if(s&&!S){const e=this._study.quotes();if(null!==e)return{values:{change:e.change,percentChange:e.change_percent},priceDirection:{basedOnCurrentBar:e.change>=0?0:1,basedOnPrevClose:e.change>=0?0:1}}}else{const s=this._study.data().search(i-1,d.PlotRowSearchMode.NearestLeft,1),n=null!==(r=null==s?void 0:s.value[4])&&void 0!==r?r:null;if(null!==n&&null!=e&&null!=t)return{values:{change:e-n,percentChange:(0,_.barPercentChange)(n,e)},priceDirection:{ -basedOnCurrentBar:e>=t?0:1,basedOnPrevClose:e>=n?0:1}}}return null==e||null==t?{}:{priceDirection:{basedOnCurrentBar:e>=t?0:1,basedOnPrevClose:e>=t?0:1}}}}{constructor(e,t){super(e,t);const i=t.properties().childs().paneProperties.childs().legendProperties.childs();this._showBarChange=i.showBarChange,this._showSeriesOHLC=i.showSeriesOHLC,this._seriesStyle=e.properties().childs().style}getValues(e){const t=super.getValues(e);if(!this._showLastPriceAndChangeOnly()){const e=(0,s.isPriceSourceStyle)(this._seriesStyle.value()),i=this._showSeriesOHLC.value(),r=i&&!e,n=i&&e;t[0].visible=r,t[1].visible=r,t[2].visible=r,t[3].visible=r,t[6].visible=this._showBarChange.value(),t[4].visible=n}return t}}},79284:(e,t,i)=>{"use strict";i.d(t,{OverlayStatusProvider:()=>r});var s=i(40529);class r extends s.StudyStatusProvider{getSplitTitle(){return this._source.titleInParts(!0,void 0,!1,!1)}text(){return this._source.isActualInterval()?this._source.isFailed()?`${this._source.title(!0,void 0,!1,!1)}: ${this.sourceStatusText()}`:`${this._source.title(!0,void 0,!1,!1)} ${this.sourceStatusText()}`:this._source.title(!0,void 0,!1,!1)}}},28283:(e,t,i)=>{"use strict";i.d(t,{PivotPointsStandardLastPricesView:()=>o});var s=i(71053);const r=["p","s1","r1","s2","r2","s3","r3","s4","r4","s5","r5"],n={P:"P",S1:"S1/R1",S2:"S2/R2",S3:"S3/R3",S4:"S4/R4",S5:"S5/R5",R1:"S1/R1",R2:"S2/R2",R3:"S3/R3",R4:"S4/R4",R5:"S5/R5"};class o{constructor(e){this._visiblePivots=new Set,this._invidated=!0,this._prices=[],this._source=e}visiblePivots(){return this._visiblePivots}update(){this._invidated=!0}prices(){return this._invidated&&(this._updateImpl(),this._invidated=!1),this._prices}_updateImpl(){this._visiblePivots.clear();const e=this._source.model(),t=this._source.priceScale();if(null===t)return;if(e.timeScale().isEmpty()||t.isEmpty())return;const i=e.timeScale().visibleBarsStrictRange();if(null===i)return;if(!this._source.customData()||!this._source.customData().pivots)return;const o=e.mainSeries().bars().search(i.lastBar(),s.PlotRowSearchMode.NearestLeft);if(null===o)return;const a=o.index,l=this._source.customData().pivots,c=this._source.indexes(),h=this._source.properties(),d=this._source.firstValue();for(let e=0;e=a||o)){this._visiblePivots.add(l[e]),this._prices=[];for(let i=0;i{"use strict";i.d(t,{PaneRendererStandardPivotLabel:()=>r});var s=i(84346);class r{constructor(e,t,i){this._drawRects=[],this._cacheProvider=e,this._point=t,this._label=i}draw(e,t){const i=this._cacheProvider(t);e.save(),e.setTransform(1,0,0,1,0,0);const s=t.pixelRatio;this._drawRects=[];const r=t=>{const r=i.labelRectByIndex(t),n={left:Math.round(this._point.x-r.width+o), -top:Math.round(this._point.y-r.height/2),width:r.width,height:r.height};return e.drawImage(i.canvas(),Math.round(r.left*s),Math.round(r.top*s),r.width*s,r.height*s,Math.round(n.left*s),Math.round(n.top*s),n.width*s,n.height*s),this._drawRects.push(n),r.width},n=this._label.split("/");let o=0;for(let e=0;e0&&(o+=r(t+11)/2),o+=r(t)/2}e.restore()}hitTest(e){for(const t of this._drawRects)if(e.x>=t.left&&e.x<=t.left+t.width&&e.y>=t.top&&e.y<=t.top+t.height)return new s.HitTestResult(s.HitTestResult.REGULAR);return null}}},66632:(e,t,i)=>{"use strict";i.d(t,{StandardPivotPointsImageCache:()=>n});var s=i(93435),r=i(88537);class n{constructor(e,t,i,r){this._priceAxisFontSize=11,this._prices=[],this._labelWidth=0,this._paneRenderParams=e,this._recreateCanvasAndContext(new s.Size(0,0)),this.reset({font:t,fontSize:i,backColors:r})}destroy(){delete this._canvas,delete this._cache}canvas(){return this._canvas}reset(e){this._renderParams=e,this._prices=[],this._cache.font=e.fontSize+"px "+e.font,this._labelWidth=["P","S1","R1","S2","R2","S3","R3","S4","R4","S5","R5","/"].reduce((e,t)=>{const i=this._cache.measureText(t).width;return Math.max(i,e)},0)}rowHeight(){return this._priceAxisFontSize+4}labelRectByIndex(e){return{left:0,top:Math.round(this._topByIndex(e)),width:Math.round(this._labelWidth+4),height:Math.round(this._renderParams.fontSize+8)}}setPrices(e){let t=!1;const i=(e,t)=>{const i=void 0===e,s=void 0===t;return(!i&&!s||i===s)&&(0,r.ensureDefined)(e).formatted===(0,r.ensureDefined)(t).formatted};if(e.length!==this._prices.length)t=!0;else for(let s=0;s{this._cache.translate(.5,.5),this._cache.font=this._renderParams.fontSize+"px "+this._renderParams.font,this._cache.textBaseline="middle";for(let e=0;e{"use strict";i.d(t,{StandardPivotPointsPriceAxisView:()=>n});var s=i(97938);const r=["P","S1","R1","S2","R2","S3","R3","S4","R4","S5","R5"];class n extends s.PriceAxisView{constructor(e,t){super(), -this._source=e,this._data=t;const i=t.name;this._completeName="P"===i.toUpperCase()?"P":`S${i[1]}/R${i[1]}`}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const s=this._source.properties();if(!s.visible.value())return;const n=this._completeName,o=s.levelsStyle.visibility;if(!o[n]||!o[n].value())return;const a=this._source.model().timeScale(),l=this._source.priceScale();if(a.isEmpty()||null===a.visibleBarsStrictRange()||null!==l&&l.isEmpty())return;const c=this._source.customData();if(!c||!c.pivots)return;const h=this._source.pricesView().prices()[r.indexOf(this._data.name.toUpperCase())];if(!h)return;i.background=h.color,i.textColor=this.generateTextColor(h.color),i.coordinate=h.coordinate,i.floatCoordinate=h.floatCoordinate;const d=this._source.model().properties().childs().scalesProperties.childs();d.showStudyLastValue.value()&&(e.text=h.formatted,e.visible=!0),d.showStudyPlotLabels.value()&&(t.text=this._source.priceLabelText(this._data.name),t.visible=!0)}}},46319:(e,t,i)=>{"use strict";var s=i(69927).PriceRange,r=i(86441).Point,n=i(190).StudyStatusView,o=i(26179).StudyDataWindowView,a=i(13672).NonSeriesStudy,l=i(37157).StandardPivotPointsPriceAxisView,c=i(28978).PanePriceAxisView,h=i(84346).HitTestResult,d=i(94804).CompositeRenderer,u=i(15712).areEqualPaneRenderParams,p=i(66632).StandardPivotPointsImageCache,_=i(28283).PivotPointsStandardLastPricesView,m=i(19722).PaneRendererStandardPivotLabel,g=i(40254).HorizontalLineRenderer,f=i(22799);class v{constructor(e,t){this._model=e,this._source=t,this._pivots=[],this._textCache={}}setCache(e){this._cache=e}priceAxisViews(e,t){return this._priceAxisViews}mergeLabel(e,t,i){var s=""+t;void 0===e[s]?(e[s]={},e[s].text=i,e[s].ids=[this.complete(i)]):(e[s].text+="/"+i,e[s].ids.push(this.complete(i)))}complete(e){return"P"===e?e:"S"+e[1]+"/R"+e[1]}update(){this._invalidated=!0}_updateImpl(){if(this._source.pricesView().prices(),this._pivots=[],this._source.customData()&&this._source.customData().pivots&&this._source.properties().visible.value()){var e=this._source.customData().pivots,t=this._source._indexes,i=this._model.timeScale(),s=this._source.priceScale();if(s&&!s.isEmpty()&&!i.isEmpty()&&e){var r=i.visibleBarsStrictRange(),n=r.firstBar(),o=r.lastBar();if(this._source.ownerSource())for(var a=this._source.ownerSource().firstValue(),l=0;lo)){var d={},u=this._source.properties().levelsStyle.visibility;u.P.value()&&this.mergeLabel(d,e[l].p,"P"),u["S1/R1"].value()&&(this.mergeLabel(d,e[l].s1,"S1"),this.mergeLabel(d,e[l].r1,"R1")),u["S2/R2"].value()&&(this.mergeLabel(d,e[l].s2,"S2"),this.mergeLabel(d,e[l].r2,"R2")),u["S3/R3"].value()&&(this.mergeLabel(d,e[l].s3,"S3"),this.mergeLabel(d,e[l].r3,"R3")),u["S4/R4"].value()&&(this.mergeLabel(d,e[l].s4,"S4"),this.mergeLabel(d,e[l].r4,"R4")),u["S5/R5"].value()&&(this.mergeLabel(d,e[l].s5,"S5"),this.mergeLabel(d,e[l].r5,"R5"));var p=i.indexToCoordinate(c),_=i.indexToCoordinate(h);for(var m in d){var g=parseFloat(m),f=s.priceToCoordinate(g,a) -;this._pivots.push({x1:p,x2:_,y:f,label:d[m].text,labelIds:d[m].ids,src:e[l]})}}}}}}renderer(){this._invalidated&&(this._updateImpl(),this._invalidated=!1);for(var e=new d,t=this._source.properties().levelsStyle.colors,i=this._source.properties().levelsStyle.widths,s=this._source.visiblePivots(),n=0;nt)){var l=[],c=this._properties.levelsStyle.visibility;c.P.value()&&l.push(i[o].p),c["S1/R1"].value()&&l.push(i[o].s1,i[o].r1),c["S2/R2"].value()&&l.push(i[o].s2,i[o].r2),c["S3/R3"].value()&&l.push(i[o].s3,i[o].r3),c["S4/R4"].value()&&l.push(i[o].s4,i[o].r4),c["S5/R5"].value()&&l.push(i[o].s5,i[o].r5);for(var h=0;h{"use strict";function s(e){e.lineWidth=void 0,e.lineStyle=void 0;for(let t=0;ts,createEmptyStyle:()=>r})},68617:(e,t,i)=>{"use strict";i.d(t,{PaneRendererColumns:()=>r});var s=i(84346);class r{constructor(e){this._data=null,this._precalculatedCache=[],this.setData(e)}setData(e){this._data=e,this._precalculatedCache=[]}draw(e,t){var i,s,r,n;if(null===this._data||0===this._data.items.length)return;const o=t.pixelRatio;this._precalculatedCache.length||this._fillPrecalculatedCache(o);const a=Math.max(1,Math.floor(o)),l=Math.round(this._data.histogramBase*o)-Math.floor(a/2),c=l+a,h=this._data.lineColor,d=null!==(s=null===(i=this._data.visibleItemsRange)||void 0===i?void 0:i.startItemIndex)&&void 0!==s?s:0,u=(null!==(n=null===(r=this._data.visibleItemsRange)||void 0===r?void 0:r.endItemIndex)&&void 0!==n?n:this._data.items.length)-1;for(let t=d;t<=u;t++){const i=this._data.items[t],s=this._precalculatedCache[t-d],r=Math.round(i.y*o),n=i.style?i.style.color:h;let u,p;e.fillStyle=n,r<=l?(u=r,p=c):(u=l,p=r-Math.floor(a/2)+a),e.fillRect(s.left,u,s.right-s.left+1,p-u)}}hitTest(e){if(null===this._data)return null;const t=.5*this._data.barSpacing,i=e.x-t,r=e.x+t;for(const t of this._data.items){const n=t.x;if(n>=i&&n<=r){const i=t.y;if(e.y>=Math.min(i,this._data.histogramBase)&&e.y<=Math.max(i,this._data.histogramBase))return new s.HitTestResult(s.HitTestResult.REGULAR)}} -return null}_fillPrecalculatedCache(e){var t,i,s,r;if(null===this._data||0===this._data.items.length)return void(this._precalculatedCache=[]);const n=Math.ceil(this._data.barSpacing*e)<=1?0:Math.max(1,Math.floor(e)),o=Math.round(this._data.barSpacing*e)-n,a=null!==(i=null===(t=this._data.visibleItemsRange)||void 0===t?void 0:t.startItemIndex)&&void 0!==i?i:0,l=(null!==(r=null===(s=this._data.visibleItemsRange)||void 0===s?void 0:s.endItemIndex)&&void 0!==r?r:this._data.items.length)-1,c=l-a+1;if(c<=0)return void(this._precalculatedCache=[]);this._precalculatedCache=new Array(c);for(let t=a;t<=l;t++){const i=this._data.items[t],s=Math.round(i.x*e);let r,n;if(o%2){const e=(o-1)/2;r=s-e,n=s+e}else{const e=o/2;r=s-e,n=s+e-1}this._precalculatedCache[t-a]={left:r,right:n,roundedCenter:s,center:i.x*e,time:i.timePointIndex}}for(let e=a+1;e<=l;e++){const t=this._precalculatedCache[e-a],i=this._precalculatedCache[e-a-1];t.time===i.time+1&&(t.left-i.right!==n+1&&(i.roundedCenter>i.center?i.right=t.left-n-1:t.left=i.right+n+1))}let h=Math.ceil(this._data.barSpacing*e);for(let e=a+1;e<=l;e++){const t=this._precalculatedCache[e-a];t.right0&&h<4)for(let e=a+1;e<=l;e++){const t=this._precalculatedCache[e-a];t.right-t.left+1>h&&(t.roundedCenter>t.center?t.right-=1:t.left+=1)}}}},2662:(e,t,i)=>{"use strict";i.d(t,{StudyPlotPaneView:()=>V});var s=i(88537),r=i(86441),n=i(24377),o=i(67337),a=i(64514),l=i(80643),c=i(68906),h=i(98619);function d(e,t){const i=new Map;return function(...s){const r=""+(t?t.apply(null,s):s[0]);if(!i.has(r)){const t=e.apply(this,s);return i.set(r,t),t}return i.get(r)}}var u=i(84346),p=i(84705),_=i(94804),m=i(46214),g=i(28113),f=i(85847),v=i(41892),S=i(31175),y=i(49094),b=i(49483);class w{constructor(e){this._data=e}draw(e,t){var i,s,r,n;const o=this._data,a=t.pixelRatio,c=Math.max(1,Math.floor(a))%2?.5:0,h=o.vertOffset||0,d=o.lineColor||o.color,u=o.lineWidth||o.height/2;let p="",_=!1;const m=null!==(s=null===(i=o.visibleItemsRange)||void 0===i?void 0:i.startItemIndex)&&void 0!==s?s:0,g=null!==(n=null===(r=o.visibleItemsRange)||void 0===r?void 0:r.endItemIndex)&&void 0!==n?n:o.items.length;for(let t=m;t{const t=(0,n.rgbToHsl)((0,n.parseRgb)(e)),i=t[0]+.05;return t[0]=i-Math.floor(i),(0,n.rgbToHexString)((0,n.hslToRgb)(t))},k=d(E);function D(e,t){if(null===e)return t;const i=e.firstIndex,s=t.firstIndex,r=e.clearData||t.clearData;return{firstIndex:r||void 0===i||void 0===s?void 0:Math.min(i,s),clearData:r}}class V{constructor(e,t,i,s){this._histogramBase=null,this._items=[],this._selectionData=null,this._lineColor="", -this._lineWidth=1,this._color1="",this._color2="",this._dataInvalidated=null,this._viewportInvalidated=!1,this._renderer=new _.CompositeRenderer,this._isMarkersEnabled=o.enabled("source_selection_markers"),this._study=e,this._series=t,this._model=i,this._plotName=s,this._plotIndex=e.metaInfo().plots.findIndex(e=>e.id===s),this._colorProvider=(0,M.createStudyPlotColorProvider)(e.metaInfo(),e.properties(),s),this._selectionIndexer=new f.SelectionIndexes(i.timeScale())}items(){return this._items}update(e){if("global-change"===e.type)return this._dataInvalidated=D(this._dataInvalidated,{}),void(this._viewportInvalidated=!0);if("data-source-change"!==e.type)this._viewportInvalidated=!0;else{if(e.dataSourceId===this._study.id()){const t=D(this._dataInvalidated,{firstIndex:e.firstUpdatedTimePointIndex,clearData:e.clearData});this._dataInvalidated=t}}}renderer(){return this._dataInvalidated?this._updateImplFull(this._viewportInvalidated)&&(this._dataInvalidated=null):this._viewportInvalidated&&this._updateImplLight(),this._viewportInvalidated=!1,this._renderer}_getTranspValue(){const e=this._study.properties(),t=e.styles[this._plotName];let i=0;const s=this._study.metaInfo();return"Volume@tv-basicstudies"===s.id&&s.version<=46&&"transparency"in e?(i=e.transparency.value(),i=(0,l.isNumber)(i)?i:0,i):(t.transparency&&(i=t.transparency.value(),i=(0,l.isNumber)(i)?i:0),i)}_updateImplFull(e){var t,i,n,o;const l=this._study.properties().styles[this._plotName];if(this._renderer.clear(),(null===(t=this._dataInvalidated)||void 0===t?void 0:t.clearData)&&(this._items=[]),!l.visible.value())return!1;if(!this._study.priceScale())return!1;const h=this._study.firstValue();if(null===h)return!1;const d=this._study.priceScale();if(null===d)return!1;this._histogramBase=null;const u=this._study.data(),p=u.size();if(0===p)return!1;const _=this._study.offset(this._plotName);let m=null===(i=this._dataInvalidated)||void 0===i?void 0:i.firstIndex;const g=l.plottype.value(),f=[I.LineStudyPlotStyle.Line,I.LineStudyPlotStyle.Area,I.LineStudyPlotStyle.Circles,I.LineStudyPlotStyle.Cross].indexOf(g)>=0;if(p!==this._items.length){const e=void 0!==m?m+_:void 0;if(void 0===e||0===this._items.length||e<(0,s.ensureDefined)(this._items[0].timePointIndex))this._items=[],u.each((e,t)=>{const i=t[this._plotIndex+1];if(f&&null==i||e<=-1e6)return!1;const s=new r.Point(NaN,NaN);return s.origPrices=new r.Point(NaN,NaN),s.timePointIndex=e+_,this._items.push(s),!1}),m=this._items.length?(0,s.ensureDefined)(this._items[0].timePointIndex)-_:void 0;else{const e=this._items[this._items.length-1].timePointIndex,t=(0,s.ensureDefined)(e)-_,i=(0,s.ensureNotNull)(u.lastIndex())+1,n=u.rangeIterator(t+1,i);for(;n.hasNext();){const e=n.next(),t=e.value[this._plotIndex+1],i=null==t;if(f&&i||e.index<-1e6)continue;const s=new r.Point(NaN,NaN);s.origPrices=new r.Point(NaN,NaN),s.timePointIndex=e.index+_,this._items.push(s)}}}let v=NaN,y=NaN;const b=new Map,w=(e,t)=>{let i=b.get(e);void 0===i&&(i=new Map,b.set(e,i));let s=i.get(t);if(void 0===s){ -const r=!this._plotName||"vol"!==this._plotName;s=(0,c.generateColor)(e,t,r),i.set(t,s)}return s},C=(0,S.createEmptyStyle)(),P=(0,a.clamp)(this._getTranspValue(),0,100),T=this._model.timeScale().visibleBarsStrictRange();if(null===T)return!1;const{startBar:x,endBar:M}=this._calculateStartEnd(T);if(null===x||null===M||0===this._items.length)return!1;const A=null!=m?m:(0,s.ensureNotNull)(u.firstIndex()),E=u.rangeIterator(A,(0,s.ensureNotNull)(u.lastIndex())+1),k=(0,L.lowerbound)(this._items,A+_,(e,t)=>e.timePointIndex0){const e=this._items[D-1].timePointIndex,i=new r.Point(t-1,NaN);i.origPrices=new r.Point(t-1,NaN),i.timePointIndex=e,De.timePointIndexe.timePointIndexe.timePointIndexe.timePointIndex0?(s-=n,r+=n):(s+=n,r-=n);const o=this._study.getMinFirstBarIndexForPlot(this._plotName)+n+1;return o>r+1?{startBar:null,endBar:null}:(s=Math.max(o,s),{startBar:s,endBar:r})}_createRenderer(e,t){var i;this._renderer.clear();const r=this._study.properties().styles[this._plotName],n=r,o=(0,a.clamp)(this._getTranspValue(),0,100);this._lineColor=(0,c.generateColor)(n.color.value(),o),this._lineWidth=n.linewidth.value();let d=n.color.value();const u=this._colorProvider.getDefaultPlotPointStyle();u&&(d=u.colors[0],this._lineWidth=null!==(i=u.lineWidth)&&void 0!==i?i:this._lineWidth,this._lineColor=d?(0,c.generateColor)(d,o):this._lineColor),this._color2=(0,c.generateColor)(d,o);const _=this._study.metaInfo().isRGB?E(d):k(d);this._color1=(0,c.generateColor)(_,o);const f={};f.barSpacing=this._model.timeScale().barSpacing(),f.items=this._items,f.histogramBase=this._histogramBase?this._histogramBase:(0,s.ensureNotNull)(this._study.priceScale()).height(),f.lineIndex=0,f.lineStyle=r.linestyle.value(),f.lineColor=this._lineColor,f.lineWidth=this._lineWidth,f.lineWidth=(0,l.isNumber)(f.lineWidth)?f.lineWidth:1,f.color1=this._color1,f.color2=this._color2,f.bottom=f.histogramBase,f.visibleItemsRange={startItemIndex:e,endItemIndex:t},f.simpleMode=this._colorProvider.singleColor();const S=this._renderer,y=!!r.joinPoints&&r.joinPoints.value();switch(r.plottype.value()){case I.LineStudyPlotStyle.Line:case I.LineStudyPlotStyle.LineWithBreaks:S.append(new m.PaneRendererLine(f));break;case I.LineStudyPlotStyle.Area:case I.LineStudyPlotStyle.AreaWithBreaks:S.append(new p.PaneRendererArea(f));break;case I.LineStudyPlotStyle.Histogram:S.append(new x(f));break;case I.LineStudyPlotStyle.Columns:S.append(new C.PaneRendererColumns(f));break;case I.LineStudyPlotStyle.Cross:if(S.append(new T(f)),y){const e=(0,h.deepCopy)(f);e.lineWidth=1,e.forceLineWidth=!0,S.append(new m.PaneRendererLine(e))}break;case I.LineStudyPlotStyle.Circles:if(S.append(new w(f)),y){const e=(0,h.deepCopy)(f);e.lineWidth=1,e.ignorePaletteLineWidth=!0,S.append(new m.PaneRendererLine(e))}break;case I.LineStudyPlotStyle.StepLine:case I.LineStudyPlotStyle.StepLineWithDiamonds:{f.decoration=n.plottype.value()===I.LineStudyPlotStyle.StepLineWithDiamonds?g.StepLineDecoration.Diamonds:g.StepLineDecoration.None;const e=new g.PaneRendererStepLine;e.setData(f),S.append(e);break}default: -S.append(new m.PaneRendererLine(f))}this._model.selection().isSelected(this._study)&&this._isMarkersEnabled&&this._selectionData&&S.append(new v.SelectionRenderer(this._selectionData))}_createSelection(e){const t=this._study.priceScale();if(null!==t)if(this._model.selection().isSelected(this._study)){const i=this._selectionIndexer.indexes();this._selectionData={points:[],bgColors:[],visible:!0,hittestResult:u.HitTestResult.REGULAR,barSpacing:this._model.timeScale().barSpacing()};const n=(0,s.ensureNotNull)(this._model.paneForSource(this._study)).height(),o=this._study.offset(this._plotName);for(let s=0;s{"use strict";i.d(t,{createStudyPlotColorProvider:()=>p});var s=i(50993),r=i(88537),n=i(31175);const o=new Map([[0,"color"],[2,"textColor"],[3,"borderColor"],[4,"wickColor"],[5,"colorup"],[6,"colordown"]]);class a{constructor(e){this._plotStyle=e}getPlotPointStyle(e,t){const i=t?(0,n.clearStyle)(t):(0,n.createEmptyStyle)();return o.forEach((e,t)=>{this._plotStyle[e]&&(i.colors[t]=this._plotStyle[e].value())}),i.lineWidth=this._plotStyle.linewidth?this._plotStyle.linewidth.value():void 0,i.lineStyle=this._plotStyle.linestyle?this._plotStyle.linestyle.value():void 0,i}isColorDefined(){return!0}singleColor(){return!0}getDefaultPlotPointStyle(){return null}}const l=[0,1,2,3,4,5,6];class c{constructor(e,t,i,s){this._palettesColors=new Map,this._defaultPlotColors=new Map,this._indexes=s;const n=t.styles[i];if(n)for(const[e,t]of o)this._defaultPlotColors.set(e,n[t]);const a=(0,r.ensureDefined)(e.palettes),l=e.plots;s.forEach((e,i)=>{const s=l[e];if(s&&"palette"in s){const e=a[s.palette],r=t.palettes[s.palette];if(e&&r){const{valToIndex:t}=e,{colors:s}=r,n={...s};t&&Object.keys(t).forEach(e=>{const i=t[e];void 0!==i&&(n[e]=s[i])}),this._palettesColors.set(i,n)}}})}getPlotPointStyle(e,t){const i=t?(0,n.clearStyle)(t):(0,n.createEmptyStyle)();return l.forEach(t=>{var s,n;if(this._palettesColors.has(t)){const n=e[(0,r.ensureDefined)(this._indexes.get(t))+1];if("number"==typeof n){const e=null===(s=this._palettesColors.get(t))||void 0===s?void 0:s[n];0===t&&e&&(i.lineWidth=e.width.value(),i.lineStyle=e.style.value()),i.colors[t]=null==e?void 0:e.color.value()}else i.colors[t]="transparent"}else i.colors[t]=null===(n=this._defaultPlotColors.get(t))||void 0===n?void 0:n.value()}),i}getDefaultPlotPointStyle(){var e;const t=null===(e=this._palettesColors.get(0))||void 0===e?void 0:e[0];if(void 0!==t){return{colors:[t.color.value(),void 0,void 0,void 0,void 0,void 0,void 0],lineStyle:void 0,lineWidth:t.width.value()}}return null}isColorDefined(){return!!this._palettesColors.size}singleColor(){return!1}}var h=i(68906) -;class d{constructor(e){this._indexes=e}getPlotPointStyle(e,t){const i=t?(0,n.clearStyle)(t):(0,n.createEmptyStyle)();return this._indexes.forEach((t,s)=>{const r=e[t+1];if(null!=r){const e=(0,h.rgbaFromInteger)(r);i.colors[s]=e}else i.colors[s]="transparent"}),i}isColorDefined(){return!0}singleColor(){return!1}getDefaultPlotPointStyle(){return null}}const u=new Map([[0,function(e,t){const i=(0,s.isColorerPlot)(t)||(0,s.isOhlcColorerPlot)(t);return"target"in t&&t.target===e&&i}],[2,function(e,t){const i=(0,s.isTextColorerPlot)(t);return"target"in t&&t.target===e&&i}],[1,function(e,t){return(0,s.isBgColorerPlot)(t)&&t.id===e}],[3,function(e,t){const i=(0,s.isCandleBorderColorerPlot)(t);return"target"in t&&t.target===e&&i}],[4,function(e,t){const i=(0,s.isCandleWickColorerPlot)(t);return"target"in t&&t.target===e&&i}],[5,function(e,t){const i=(0,s.isUpColorerPlot)(t);return"target"in t&&t.target===e&&i}],[6,function(e,t){const i=(0,s.isDownColorerPlot)(t);return"target"in t&&t.target===e&&i}]]);function p(e,t,i){const{colorers:s}=function(e,t){const i=e.plots,s=i.findIndex(e=>e.id===t),r=new Map;return i.forEach((e,i)=>{u.forEach((s,n)=>{s(t,e)&&r.set(n,i)})}),{plotIndex:-1===s?null:s,colorers:r}}(e,i);if(s.size)return e.isRGB?new d(s):new c(e,t,i,s);{const e=t.ohlcPlots;if(e&&e[i])return new a(e[i]);const s=t.styles[i];return new a(s)}}},50993:(e,t,i)=>{"use strict";var s,r;function n(e){return"line"===e.type}function o(e){return"shapes"===e.type}function a(e){return"chars"===e.type}function l(e){return"arrows"===e.type}function c(e){return"dataoffset"===e.type}function h(e){return"ohlc_open"===e.type}function d(e){return"ohlc_high"===e.type}function u(e){return"ohlc_low"===e.type}function p(e){return"ohlc_close"===e.type}function _(e){return h(e)||d(e)||u(e)||p(e)}function m(e){return"colorer"===e.type}function g(e){return"bar_colorer"===e.type}function f(e){return"bg_colorer"===e.type}function v(e){return"text_colorer"===e.type}function S(e){return"ohlc_colorer"===e.type}function y(e){return"wick_colorer"===e.type}function b(e){return"border_colorer"===e.type}function w(e){return"up_colorer"===e.type}function C(e){return"down_colorer"===e.type}function P(e){return"alertcondition"===e.type}function T(e){return"Plot"!==e}function x(e){return"ohlc_bars"===e.plottype}function I(e){return"ohlc_candles"===e.plottype}function M(e){return m(e)||g(e)||f(e)||c(e)||S(e)||P(e)||w(e)||C(e)||b(e)||y(e)||v(e)}function L(e){return m(e)||v(e)||g(e)||c(e)||S(e)||y(e)||b(e)||w(e)||C(e)||P(e)}i.r(t),i.d(t,{LineStudyPlotStyle:()=>s,isLinePlot:()=>n,isShapesPlot:()=>o,isCharsPlot:()=>a,isArrowsPlot:()=>l,isDataOffsetPlot:()=>c,isOhlcOpenPlot:()=>h,isOhlcHighPlot:()=>d,isOhlcLowPlot:()=>u,isOhlcClosePlot:()=>p,isOhlcPlot:()=>_,isColorerPlot:()=>m,isBarColorerPlot:()=>g,isBgColorerPlot:()=>f,isTextColorerPlot:()=>v,isOhlcColorerPlot:()=>S,isCandleWickColorerPlot:()=>y,isCandleBorderColorerPlot:()=>b,isUpColorerPlot:()=>w,isDownColorerPlot:()=>C,isAlertConditionPlot:()=>P,isPlotTitleDefined:()=>T,isOhlcPlotStyleBars:()=>x, -isOhlcPlotStyleCandles:()=>I,PlotSymbolSize:()=>r,isPlotWithTechnicalValues:()=>M,isNonVisualPlot:()=>L}),function(e){e[e.Line=0]="Line",e[e.Histogram=1]="Histogram",e[e.Cross=3]="Cross",e[e.Area=4]="Area",e[e.Columns=5]="Columns",e[e.Circles=6]="Circles",e[e.LineWithBreaks=7]="LineWithBreaks",e[e.AreaWithBreaks=8]="AreaWithBreaks",e[e.StepLine=9]="StepLine",e[e.StepLineWithDiamonds=10]="StepLineWithDiamonds"}(s||(s={})),function(e){e.Auto="auto",e.Tiny="tiny",e.Small="small",e.Normal="normal",e.Large="large",e.Huge="huge"}(r||(r={}))},81851:(e,t,i)=>{"use strict";i.r(t),i.d(t,{createStudy:()=>B,isESDOrRollDatesStudy:()=>k,isESDStudy:()=>A,isFundamentalStudy:()=>L,isFundamentalStudyMetaInfo:()=>D,isRollDatesStudy:()=>E,isStudy:()=>x,isStudyStrategy:()=>I,isStudyStub:()=>M,studyColorRotationMode:()=>N,useSameColorRotationComparator:()=>O});var s=i(67337),r=i(67072),n=i.n(r),o=i(66101),a=i(46319),l=i(9771),c=i(55153),h=i(67509),d=i(25270);const u=s.enabled("hide_main_series_symbol_from_indicator_legend");class p extends o.Study{constructor(e,t,i,s){super(e,t,i,s),this.properties().styles.vol_ma.visible.listeners().subscribe(this,()=>this.invalidateTitleCache())}base(){return 1}destroy(){this.properties().styles.vol_ma.visible.listeners().unsubscribeAll(this),super.destroy()}_titleInputs(){const e={symbolsForDisplay:!0,skipHiddenInputs:!0,fakeInputsForDisplay:!0,asObject:!1,skipOptionalEmptySymbolInputs:u};return this.properties().styles.vol_ma.visible.value()?this.inputs(e):this.inputs({...e,skippedInputs:["length"]})}}var _=i(88537),m=i(52714),g=i.n(m),f=i(2015),v=i.n(f),S=i(37667),y=i(14791);class b extends o.Study{constructor(e,t,i,s){super(e,function(e){return e.hasChild("currencyId")||e.addChild("currencyId",new(v())(null)),e.hasChild("unitId")||e.addChild("unitId",new(v())(null)),e.addExclusion("currencyId"),e.addExclusion("unitId"),e}(t),i,s),this._isActingAsSymbolSource=new(g())(!1),this._symbolHibernated=new(g())(!1),this._symbolResolvingActive=new(g())(!1),this._realignToolsLastParams=null,this._onIsActingAsSymbolSourceChanged=()=>{this._realignLineToolsIfParamsChanged()},this._recalculateIsActingAsSymbolSource(),this._isActingAsSymbolSource.subscribe(this._onIsActingAsSymbolSourceChanged);const r=this.properties().childs().inputs.childs().symbol;this._previousSymbolInputValue=r.value()}destroy(){this._isActingAsSymbolSource.unsubscribe(this._onIsActingAsSymbolSourceChanged),super.destroy()}isActingAsSymbolSource(){return this._isActingAsSymbolSource.readonly()}properties(){return this._properties}symbol(){return this._isActingAsSymbolSource.value()?this.properties().childs().inputs.childs().symbol.value():this.symbolSource().symbol()}interval(){return this.model().mainSeries().interval()}style(){return(0,_.ensureNotNull)(this.parentSource().symbolSource()).style()}currency(){return this._isActingAsSymbolSource.value()?this.properties().childs().currencyId.value()||null:this.symbolSource().currency()}unit(){ -return this._isActingAsSymbolSource.value()?this.properties().childs().unitId.value()||null:this.symbolSource().unit()}setSymbolParams(e){this._setSymbolParamsInternal(e)}setSymbol(e){this.setSymbolParams({symbol:e})}symbolInfo(){if(!this._isActingAsSymbolSource.value())return super.symbolSource().symbolInfo();if(void 0===this._resolvedSymbols)return null;const e=this.symbol(),t=this._getSymbolForResolve(e);return this._resolvedSymbols[t]||null}symbolSource(){return this._isActingAsSymbolSource.value()?this:super.symbolSource()}symbolResolved(){return this.symbolsResolved()}symbolResolvingActive(){return this._symbolResolvingActive}symbolHibernated(){return this._symbolHibernated}isVisible(){const e=super.isVisible();return this._symbolHibernated.setValue(!e),e}symbolSameAsCurrent(e){return(0,y.symbolSameAsCurrent)(e,this.symbol(),this.symbolInfo())}setCurrency(e){this.setSymbolParams({currency:e})}isConvertedToOtherCurrency(){return(0,S.isConvertedToOtherCurrency)(this.symbolInfo())}setUnit(e){this.setSymbolParams({unit:e})}isConvertedToOtherUnit(){return(0,S.isConvertedToOtherUnit)(this.symbolInfo(),this._model.unitConversionEnabled())}setInterval(e){}setStyle(e){}symbolTitle(e,t){return this.title(!0,{},!1,e)}measureUnitId(){return(0,S.measureUnitId)(this.symbolInfo())}bars(){return super.data()}_onPropertiesChanged(){this._recalculateIsActingAsSymbolSource(),super._onPropertiesChanged(),this._realignLineToolsIfParamsChanged()}_tryChangeInputs(){var e;const t=this._resolvedSymbolsByInput[this.symbol()]||null;(0,y.symbolSameAsCurrent)(this._previousSymbolInputValue,this.symbol(),t)||this._setSymbolParamsInternal({currency:null,unit:null}),super._tryChangeInputs(),this._formatter=null,null===(e=this.priceScale())||void 0===e||e.updateFormatter(),this._previousSymbolInputValue=this.properties().childs().inputs.childs().symbol.value()}_getSymbolObject(e){const t={symbol:e},i=this.currency();null!==i&&(t["currency-id"]=i);const s=this.unit();return this._model.unitConversionEnabled()&&null!==s&&(t["unit-id"]=s),t}_getSymbolForApi(e){return(0,S.symbolForApi)(this._resolvedSymbolsByInput[e]||null,e)}_onSymbolResolved(e,t,i){super._onSymbolResolved(e,t,i),this._recreatePriceFormattingDependencies();const s=t===this.symbol()?(0,S.extractSymbolNameFromSymbolInfo)(i,this.symbol()):null;null!==s&&(this._previousSymbolInputValue=s);const r=(0,S.symbolCurrency)(i),n=(0,S.symbolUnit)(i,this._model.unitConversionEnabled());this._setSymbolParamsInternal({symbol:null!=s?s:void 0,currency:r,unit:n},i),this._symbolResolvingActive.setValue(!1)}_onSymbolResolvingStart(){super._onSymbolResolvingStart(),this._symbolResolvingActive.setValue(!0)}_onSymbolError(){super._onSymbolError(),this._symbolResolvingActive.setValue(!1)}_onCurrencyMayChange(){this.isActingAsSymbolSource()?super._onCurrencyMayChange():this._onCurrencyChanged()}_recalculateIsActingAsSymbolSource(){var e,t;const i=null!==(t=""!==(null===(e=this._currencySourceSymbolInputProperty)||void 0===e?void 0:e.value()))&&void 0!==t&&t;this._isActingAsSymbolSource.setValue(i)} -_setSymbolParamsInternal(e,t){const{symbol:i,currency:s,unit:r}=e,n=this.properties().childs(),o=n.inputs.childs().symbol.value(),a=n.currencyId.value(),l=n.unitId.value();if(void 0!==i&&i!==o&&n.inputs.childs().symbol.setValueSilently(i),void 0!==s&&s!==a&&n.currencyId.setValueSilently(s),void 0!==r&&r!==l&&n.unitId.setValueSilently(r),t)this._resolvedSymbolsByInput[this.symbol()]=t,this._resolvedSymbols[this._getSymbolForResolve(this.symbol())]=t,this._realignToolsLastParams=null;else{const e=this.symbolInfo();null!==e&&(n.currencyId.setValueSilently((0,S.symbolCurrency)(e)),n.unitId.setValueSilently((0,S.symbolUnit)(e,this._model.unitConversionEnabled())))}n.inputs.childs().symbol.value()!==o&&n.inputs.childs().symbol.listeners().fire(n.inputs.childs().symbol),n.currencyId.value()!==a&&n.currencyId.listeners().fire(n.currencyId),n.unitId.value()!==l&&n.unitId.listeners().fire(n.unitId),this._realignLineToolsIfParamsChanged()}_realignLineToolsIfParamsChanged(){const e=this.symbol(),t=this.interval(),i=this.currency(),s=this.unit();null!==this._realignToolsLastParams&&this._realignToolsLastParams.symbol===e&&this._realignToolsLastParams.interval===t&&this._realignToolsLastParams.currency===i&&this._realignToolsLastParams.unit===s||(this._model.realignLineTools(this),this._realignToolsLastParams={symbol:e,interval:t,currency:i,unit:s})}}var w=i(69927);class C extends o.Study{priceRange(e,t){let i=!1;this.graphics().hhists().forEach((e,t)=>{i=i||this.properties().child("graphics").child("hhists").child(t).child("showValues").value()});const s=function(e,t,i,s){let r=null;return e.forEach((e,s)=>{e.forEach(e=>{e.firstBarTime<=i&&e.lastBarTime>=t&&(null===r?r={low:{l:e.priceLow,h:e.priceHigh},high:{h:e.priceHigh}}:(e.priceLow{"use strict";i.d(t,{StudyColorRotatorFactory:()=>h});var s=i(45112),r=i(24377),n=i(68906),o=i(81851);const a=["color-sky-blue-400","color-banana-yellow-700","color-deep-blue-500","color-grapes-purple-a700","color-iguana-green-500","color-minty-green-a700","color-ripe-red-a200","color-berry-pink-200","color-tv-blue-a100","color-tan-orange-a200","color-sky-blue-a400","color-deep-blue-a100","color-grapes-purple-400","color-iguana-green-a700","color-minty-green-200","color-ripe-red-200","color-berry-pink-a200","color-ripe-red-500","color-grapes-purple-500","color-deep-blue-400","color-tv-blue-a200","color-sky-blue-500","color-iguana-green-400","color-minty-green-400","color-banana-yellow-600","color-tan-orange-500","color-berry-pink-400","color-ripe-red-300","color-grapes-purple-300","color-deep-blue-300","color-tv-blue-300","color-sky-blue-300","color-iguana-green-300","color-minty-green-300","color-banana-yellow-400","color-tan-orange-300","color-berry-pink-300","color-tan-orange-a700"];class l{constructor(e){this._offset=0,this._offset=e}getColor(e){if(0===this._offset)return e;const t=a[(this._offset-1)%a.length],i=s.colorsPalette[t],o=(0,n.isHexColor)(e)?1:(0,r.parseRgba)(e)[3];return(0,n.generateColor)(i,(0,n.alphaToTransparency)(o))}}class c{constructor(e,t){this._offset=e,this._modelStartOffset=t}getColor(e){if((0,n.isHexColor)(e)){const t=(0,r.parseRgb)(e);return(0,r.rgbToHexString)((0,r.shiftRgb)(t,this._offset,this._modelStartOffset))}{const t=(0,r.parseRgba)(e);return(0,r.rgbaToString)((0,r.shiftRgba)(t,this._offset,this._modelStartOffset))}}}class h{constructor(e){this._chartModel=e}getColorRotator(e){const t=(0,o.studyColorRotationMode)(e);if(null===t)return null;const i=this._calcDefaultColorsOffset(e);switch(t){case"loop":return new l(i);case"shift":{const e=this._chartModel.getStudyShiftColorStartOffset();return new c(i,e)}}}_calcDefaultColorsOffset(e){let t=0;const i=(0,o.useSameColorRotationComparator)(e);return this._chartModel.dataSources().filter(o.isStudy).forEach(s=>{i(e,s.metaInfo())&&t++}),t}}},27982:(e,t,i)=>{"use strict";i.d(t,{StudyDataSource:()=>_});var s,r=i(88537),n=i(2872),o=i.n(n),a=i(71053),l=i(51344),c=i(72857),h=i(8671),d=i(75871);!function(e){e[e.Undefined=0]="Undefined",e[e.Loading=1]="Loading",e[e.Completed=2]="Completed",e[e.Error=3]="Error"}(s||(s={}));const u=(0,i(98125).getLogger)("Chart.StudyDataSource");var p;!function(e){e[e.Idle=0]="Idle",e[e.AwaitingConnection=1]="AwaitingConnection", -e[e.AwaitingParent=2]="AwaitingParent",e[e.AwaitingFirstDataUpdate=3]="AwaitingFirstDataUpdate",e[e.Active=4]="Active"}(p||(p={}));class _{constructor(e,t,i,r){this._inputs=null,this._status=p.Idle,this._studyId=null,this._turnaroundCounter=1,this._studyStatus={type:s.Undefined},this._studyStatusChanged=new(o()),this._graphics=new d.LiveStudyGraphics,this._dataCleared=new(o()),this._dataUpdated=new(o()),this._boundOnGatewayIsConnectedChanged=this._onGatewayIsConnectedChanged.bind(this),this._ongoingDataUpdate=Promise.resolve(),this._gateway=e,this._metaInfo=r,this._seriesSource=t,this._turnaroundPrefix=i,this._plots=new a.PlotList((0,h.studyPlotFunctionMap)(r),h.studyEmptyPlotValuePredicate),this._gateway.isConnected().subscribe(this._boundOnGatewayIsConnectedChanged)}destroy(){this.stop(),this._gateway.isConnected().unsubscribe(this._boundOnGatewayIsConnectedChanged),this._dataUpdated.destroy(),this._dataCleared.destroy(),this._studyStatusChanged.destroy()}metaInfo(){return this._metaInfo}inputs(){return this._inputs}setInputs(e){this._inputs=e,null!==this._studyId&&(this._turnaroundCounter++,this._onStudyStatusChangedTo({type:s.Undefined}),this._gateway.modifyStudy(this._studyId,this._turnaround(),e,this._onMessage.bind(this)),this._status===p.Active&&this._changeStatusTo(p.AwaitingFirstDataUpdate))}isStarted(){return this._status!==p.Idle}isActive(){return this._status===p.Active}start(){this.isStarted()?u.logNormal("start: data source is already started, nothing to do"):((0,r.assert)(null!==this._inputs,"Inputs should be defined when starting a study data source"),this._gateway.isConnected().value()?this._createStudy():this._changeStatusTo(p.AwaitingConnection))}stop(){this.isStarted()?(null!==this._studyId&&(this._gateway.removeStudy(this._studyId),this._studyId=null,this._onStudyStatusChangedTo({type:s.Undefined})),this._changeStatusTo(p.Idle)):u.logNormal("stop: data source is already stopped, nothing to do")}studyId(){return this._studyId}studyStatus(){return this._studyStatus}studyStatusChanged(){return this._studyStatusChanged}plots(){return this._plots}graphics(){return this._graphics}clearData(){this._plots.clear(),this._graphics.clear(),this._dataCleared.fire()}stopAndStealData(){(0,r.assert)(this._status===p.Active,"Couldn't steal data from non-active data source"),this.stop();const e=this._plots,t=this._graphics.extract();return this._plots=new a.PlotList((0,h.studyPlotFunctionMap)(this._metaInfo),h.studyEmptyPlotValuePredicate),{plots:e,graphics:t}}dataCleared(){return this._dataCleared}dataUpdated(){return this._dataUpdated}moveData(e){this._ongoingDataUpdate=this._ongoingDataUpdate.then(()=>{this._plots.move(e)})}pendingUpdatesReady(){return this._ongoingDataUpdate}_changeStatusTo(e){(0,r.assert)(this._status!==e,"Source and destination status should be distinct"),u.logNormal(`Status changed from ${p[this._status]} to ${p[e]}`),this._status=e}_createStudy(){const e=this._seriesSource.instanceId();null!==e?this._createStudyUsingParentId(e):(this._changeStatusTo(p.AwaitingParent), -this._seriesSource.dataEvents().completed().subscribe(this,this._onSeriesCompleted,!0))}_createStudyUsingParentId(e){(0,r.assert)(this._status!==p.Active,'Status should not be "Active" when creating a study'),(0,r.assert)(this._studyStatus.type===s.Undefined,'Study status should be "Undefined" when creating a study'),(0,r.assert)(null===this._studyId,"Study id should be empty when creating a study"),this._studyId=(0,c.makeNextStudyId)(),this._gateway.createStudy(this._studyId,this._turnaround(),e,this._metaInfo.fullId+("tv-basicstudies"===this._metaInfo.packageId?"":"!"),(0,r.ensureNotNull)(this._inputs),this._onMessage.bind(this)),this._changeStatusTo(p.AwaitingFirstDataUpdate)}_onGatewayIsConnectedChanged(e){e?this._onGatewayConnected():this._onGatewayDisconnected()}_onGatewayConnected(){this._status===p.AwaitingConnection&&this._createStudy()}_onGatewayDisconnected(){this._status!==p.Idle&&this._status!==p.AwaitingConnection&&(this._studyId=null,this._changeStatusTo(p.AwaitingConnection),this._studyStatus.type!==s.Undefined&&this._onStudyStatusChangedTo({type:s.Undefined})),this._turnaroundCounter=1}_onSeriesCompleted(){this._status===p.AwaitingParent&&this._createStudyUsingParentId((0,r.ensure)(this._seriesSource.instanceId()))}_onStudyStatusChangedTo(e){const t=this._studyStatus;this._studyStatus=e,u.logNormal(`Study status type changed from ${s[t.type]} to ${s[e.type]}`),this._studyStatusChanged.fire(t,e)}_onMessage(e){if("data_update"===e.method){const{customId:t,turnaround:i,plots:s,nonseries:n}=e.params;t===this._studyId&&this._checkTurnaround(i)&&this._onDataUpdate(s,(0,r.ensureDefined)(n))}else if("study_loading"===e.method){const[t,i,s]=e.params;t===this._studyId&&this._checkTurnaround(i)&&this._onStudyLoading(s)}else if("study_completed"===e.method){const[t,i,s]=e.params;t===this._studyId&&this._checkTurnaround(i)&&this._onStudyCompleted(s)}else if("study_error"===e.method){const[t,i,s,r,n]=e.params;t===this._studyId&&this._checkTurnaround(i)&&this._onStudyError(s,r,n)}else"clear_data"===e.method&&this._checkTurnaround(e.params.turnaround)&&this.clearData()}_onDataUpdate(e,t){const i=(0,l.unpackNonSeriesData)(t.d);return this._ongoingDataUpdate=this._ongoingDataUpdate.then(()=>i,()=>i).then(this._onDataUnpacked.bind(this,e,t.indexes)),this._ongoingDataUpdate}_onDataUnpacked(e,t,i){this._status!==p.Idle&&(this._status===p.AwaitingFirstDataUpdate&&(this._changeStatusTo(p.Active),this.clearData()),this._mergePlots(e),null!==i&&(i.indexes_replace?((0,r.assert)("nochange"!==t),this._graphics.replaceIndexesTo(t)):("nochange"!==t&&this._graphics.replaceIndexesTo(t),void 0!==i.graphicsCmds&&this._graphics.processCommands(i.graphicsCmds,this._metaInfo.graphics))),this._dataUpdated.fire(e,i,t))}_onStudyLoading(e){this._onStudyStatusChangedTo({type:s.Loading,startTime:Date.now()})}_onStudyError(e,t,i){this.clearData();const r="string"==typeof e?{error:e.split(":",2)[0]}:e;this._onStudyStatusChangedTo({type:s.Error,errorDescription:r})}_onStudyCompleted(e){this._onStudyStatusChangedTo({type:s.Completed})} -_mergePlots(e){this._plots.merge(e)}_turnaround(){return`${this._turnaroundPrefix}${this._turnaroundCounter}`}_checkTurnaround(e){const t=this._turnaround();return e===t||e===this._seriesSource.turnaround()||e===`${this._seriesSource.turnaround()}_${t}`}}},26179:(e,t,i)=>{"use strict";i.d(t,{StudyDataWindowView:()=>o});var s=i(14445),r=i(89027),n=i(99682);class o extends s.DataWindowView{constructor(e,t){super(),this._invalidated=!0,this._study=e,this._model=t,this._valueProvider=this._createValuesProvider(e,t),this._items=this._valueProvider.getItems().map(e=>new s.DataWindowItem(e.title,"")),this.update()}update(){this._invalidated=!0}items(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._items}study(){return this._study}_updateImpl(){this._header=this._study.title(!0),this._title=this._study.title();const e=this._valueProvider.getValues(this._currentIndex());for(let t=0;t{"use strict";function s(e){const t=new Map;return e.plots.forEach((e,i)=>{t.set(e.id,e=>e[i+1])}),t}function r(e,t){return null==e[t]}i.d(t,{studyPlotFunctionMap:()=>s,studyEmptyPlotValuePredicate:()=>r})},88145:(e,t,i)=>{"use strict";function s(e,t){return`${e}@${t}`}function r(e){return e.replace(/(@[^-]+-[^-]+).*$/,"$1")}i.d(t,{studyIdString:()=>s,extractStudyId:()=>r})},33266:(e,t,i)=>{"use strict";function s(e){return["text","integer","float","price","session","resolution"].includes(e.type)&&e.hasOwnProperty("options")}function r(e,t,i){for(const s of e)if(t[s.id]!==i[s.id])return!1;return!0}function n(e){return("time"===e.type||"price"===e.type)&&!0!==e.isHidden}function o(e){return[]}i.d(t,{isStudyInputOptionsInfo:()=>s,areStudyInputsEqual:()=>r,isTimeOrPriceNotHiddenInput:()=>n,editableStudyInputs:()=>o})},90998:(e,t,i)=>{"use strict";i.d(t,{StudyInserter:()=>a});var s,r=i(67072),n=i.n(r);!function(e){e.StudyCannotBeChild="cannot_be_child",e.StubWasRemoved="stub_was_removed",e.CannotGetMetainfo="cannot_get_metainfo",e.Cancelled="cancelled",e.Unknown="unknown"}(s||(s={}));const o=(0,i(98125).getLogger)("Chart.Studies.StudyInserter");class a{constructor(e,t,i){this._parentSource=void 0,this._propsState=void 0,this._preferredPriceScale=void 0,this._allowChangeCurrency=!1,this._allowChangeUnit=!1,this._paneSize=void 0,this._forceOverlay=!1,this._studyMetaInfoRepository=t,this._inserterImpl=i,this._studyDescriptor=e}setParentSource(e){this._parentSource=e||void 0}setPaneSize(e){this._paneSize=e}setPreferredPriceScale(e){this._preferredPriceScale=e}setAllowChangeCurrency(e){this._allowChangeCurrency=e}setAllowChangeUnit(e){this._allowChangeUnit=e}setForceOverlay(e){ -this._forceOverlay=e}setPropertiesState(e){this._propsState=e}setTargetPriceScaleMode(e){this._targetPriceScaleMode=e}async insert(e,t){const i=void 0!==(r=this._inserterImpl).createStub&&void 0!==r.removeStub?this._inserterImpl.createStub():null;var r;let n,a=!0;try{n=await this._studyMetaInfoRepository.findById(this._studyDescriptor)}catch(e){return o.logWarn("Cannot get study "+JSON.stringify(this._studyDescriptor)),Promise.reject(s.CannotGetMetainfo)}finally{null!==i&&(a=this._inserterImpl.removeStub(i))}if(!a)return Promise.reject(s.StubWasRemoved);if(void 0!==t&&t.cancelled)return Promise.reject(s.Cancelled);if(!this._canApplyStudyToParent(n))return Promise.reject(s.StudyCannotBeChild);const l={...n.defaults.inputs};let c={};if(void 0!==e){const t=await e(l,n.inputs,n);c=t.inputs,void 0===this._parentSource&&t.parentSource&&(this._parentSource=t.parentSource)}if(void 0!==t&&t.cancelled)return Promise.reject(s.Cancelled);const h=this._insertStudy(n,c);return null===h?Promise.reject(s.Unknown):h}_insertStudy(e,t){return this._inserterImpl.createStudy(e,t,null,this._propsState,this._forceOverlay,this._parentSource,this._preferredPriceScale,this._allowChangeCurrency,this._allowChangeUnit,this._paneSize,this._targetPriceScaleMode)}_canApplyStudyToParent(e){return void 0===this._parentSource||n().canBeChild(e)}}},22458:(e,t,i)=>{"use strict";i.d(t,{StudyLegendValuesProvider:()=>n});var s=i(89027),r=i(99682);class n{constructor(e,t){this._study=e,this._model=t,this._showStudyValues=t.properties().childs().paneProperties.childs().legendProperties.childs().showStudyValues,void 0!==e.metaInfo().graphics.hhists?this._valuesProvider=new r.HHistBasedValuesProvider(e,t):this._valuesProvider=new s.StudyValuesProvider(e,t)}getItems(){return this._valuesProvider.getItems()}getValues(e){const t=this._valuesProvider.getValues(e),i=this._study.properties(),s=this._showStudyValues.value()&&i.showLegendValues.value();for(const e of t)e.visible=e.visible&&s;return t}}},43181:(e,t,i)=>{"use strict";i.d(t,{StudyMetaInfoRepository:()=>h});var s=i(28353),r=i(88537),n=i(67072),o=i.n(n),a=i(5402),l=i(15625);const c=(0,i(98125).getLogger)("Chart.Studies.StudyMetaInfoRepository",{color:"#606"});class h{constructor(e){this._nextRequestNumber=1,this._rawStudiesMetaInfo=[],this._isReady=!1,this._metaInfoQueryQueue=[],this._javaMetaInfoQueryQueue=[],this._javaStudiesMetaInfo=[],this._pineMetaInfoCache=[],this._studiesMigrations=[],this._gateway=e}requestMetaInfo(){this._requestStarted();const e=this._makeNextRequestId();return c.logNormal("Requesting metainfo #"+e),new Promise(t=>{c.logNormal("Requesting studies metadata #"+e),this._gateway.requestMetadata(e,i=>{c.logNormal(`Requesting studies metadata #${e} finished`);const s=i.params[1].metainfo.slice();this._processLibraryMetaInfo(s),this._requestFinished(),t()})})}findById(e){if(!this._isReady)return this._enqueueMetaInfoQuery(e);const t=this._findStudyMetaInfo(e) -;return null!==t?Promise.resolve(t):"pine"===e.type?this._compilePine(e):Promise.reject(`unexpected study id=${e.studyId} with type=${e.type}`)}findByIdSync(e){return this._findStudyMetaInfo(e)}isReady(){return this._isReady}findAllJavaStudies(){return this._isReady?Promise.resolve(this._javaStudiesMetaInfo):this._enqueueJavaMetaInfoQuery()}getInternalMetaInfoArray(){return this._javaStudiesMetaInfo}getMigrations(){return this._studiesMigrations}addPineMetaInfo(e){return u(this._pineMetaInfoCache,e)}_processMigrations(e){throw new Error("not implemented")}_processSiteMetaInfo(e,t){throw new Error("not implemented")}_processLibraryMetaInfo(e){for(const t of e)d(t),u(this._javaStudiesMetaInfo,t);this._javaStudiesMetaInfo=this._javaStudiesMetaInfo.sort((e,t)=>{const i=e.description_localized||e.description,s=t.description_localized||t.description;return i>s?1:i{this._metaInfoQueryQueue.push({studyDescriptor:e,resolver:t})})}_enqueueJavaMetaInfoQuery(){return new Promise(e=>{this._javaMetaInfoQueryQueue.push({resolver:e})})}_processPendingMetaInfoQueries(){for(;this._metaInfoQueryQueue.length;){const e=this._metaInfoQueryQueue.shift();this.findById(e.studyDescriptor).then(e.resolver)}}_processPendingFullMetaInfoQueries(){for(;this._javaMetaInfoQueryQueue.length;){this._javaMetaInfoQueryQueue.shift().resolver(this._javaStudiesMetaInfo)}}_findStudyMetaInfo(e){return"java"===e.type?this._javaStudiesMetaInfo.find(t=>t.id===e.studyId)||null:this._pineMetaInfoCache.find(t=>t.scriptIdPart===e.pineId&&(void 0===e.pineVersion||(0,r.ensureDefined)(t.pine).version===e.pineVersion))||null}_makeNextRequestId(){return"metadata_"+this._nextRequestNumber++}_compilePine(e){throw new Error("unsupported")}}function d(e){e.description_localized=(0,s.t)(e.description,{context:"study"})}function u(e,t){const i=new(o())(t);(0,a.migrateMetaInfoAndPropState)(i);let s=!0;const r=e.findIndex(e=>e.id===i.id);if(-1===r)e.push(i);else{const t=e[r],n=void 0!==t.pine?l.Version.parse(t.pine.version):null,o=void 0!==i.pine?l.Version.parse(i.pine.version):null;null===o||null===n||o.isGreaterOrEqual(n)?(t.removeDefaults(),e[r]=i):s=!1}return s&&i.createDefaults(),i}},45090:(e,t,i)=>{"use strict";i.d(t,{StudyStatusProviderBase:()=>c});var s=i(50338),r=i(13933),n=i(28353);const o={NONE:"Default"},a=(0,n.t)("No volume data"),l=new Map;class c extends s.StatusProviderBase{constructor(e,t){super(t),this._source=e}getSplitTitle(){return this._source.titleInParts(!0,o,void 0,!1)}text(){ -return this._source.isActualInterval()?this._source.isFailed()?`${this._source.title(!0,o,void 0,!1)}: ${this.sourceStatusText()}`:`${this._source.title(!0,o,void 0,!1)} ${this.sourceStatusText()}`:this._source.title(!0,o,void 0,!1)}sourceStatusText(){return(0,r.convertStudyStatusToString)(this._source.status(),!0)}sourceStatusSolutionId(){const e=this._source.status();if(e.type===r.StudyStatusType.Error)return e.errorDescription.solution_id?e.errorDescription.solution_id:function(e){for(const t of Array.from(l.keys()))if(e.includes(t))return l.get(t)}(e.errorDescription.error)}errorStatus(){if(!this._source.isActualInterval()||this._source.isSymbolInvalid())return null;return this._source.status().type===r.StudyStatusType.Error?{error:this.sourceStatusText(),solutionId:this.sourceStatusSolutionId(),title:this.sourceStatusTitle()}:null}sourceStatusTitle(){const e=this._source.status();if(e.type===r.StudyStatusType.Error)return-1!==e.errorDescription.error.toLowerCase().indexOf("the data vendor doesn't provide volume data for this symbol.")?a:void 0}}},40529:(e,t,i)=>{"use strict";i.d(t,{StudyStatusProvider:()=>n});var s=i(28353),r=(i(13933),i(45090));(0,s.t)("Fundamental studies are no longer available on charts");class n extends r.StudyStatusProviderBase{constructor(e,t){super(e,t),this._study=e}color(){return this._study.isFailed()||this._study.metaInfo&&this._study.metaInfo().isTVScriptStub?"#ff0000":super.color()}sourceStatusText(){this._study.status();return super.sourceStatusText()}}},190:(e,t,i)=>{"use strict";i.d(t,{StudyStatusView:()=>r});var s=i(45058);class r extends s.StatusView{constructor(e){super(e.statusProvider())}color(){return this._statusProvider.color()}getSplitTitle(){return this._statusProvider.getSplitTitle()}update(){this._text=this._statusProvider.text()}}},13933:(e,t,i)=>{"use strict";i.r(t),i.d(t,{StudyStatusType:()=>n,convertStudyStatusToString:()=>o});var s=i(28353);const r=(0,s.t)("loading...");var n;function o(e,t){if(e.type===n.Loading)return t?r:"loading...";if(e.type===n.Error){const i=e.errorDescription,r=t?(0,s.t)(i.error):i.error;if(i.ctx){const e={};return Object.entries(i.ctx).forEach(([t,i])=>{e[t]=i.toString()}),r.format(e)}return r}return""}!function(e){e[e.Undefined=0]="Undefined",e[e.Loading=1]="Loading",e[e.Completed=2]="Completed",e[e.Error=3]="Error"}(n||(n={}))},25270:(e,t,i)=>{"use strict";i.d(t,{StudyStub:()=>m});var s=i(190),r=i(22932),n=i(97098),o=i(2872),a=i.n(o),l=i(2015),c=i.n(l),h=i(45090);class d extends h.StudyStatusProviderBase{text(){return this._source.isActualInterval()?`${this._source.title()} ${this.sourceStatusText()}`:this._source.title()}}var u=i(13933);class p{getItems(){return[]}getValues(e){return[]}}const _=new(a());class m extends r.PriceDataSource{constructor(e,t,i){super(e),this._priceStep=.01,this._status={type:u.StudyStatusType.Undefined},this._statusChanged=new(a()),this._formatter=new n.PriceFormatter(100),this._origState=t,this._title=i;this._properties=new(c())({visible:!0}),this._statusView=new s.StudyStatusView(this)}properties(){ -return this._properties}statusView(){return this._statusView}legendView(){return null}state(e){return this._origState}setStatus(e){this._status=e,this._statusChanged.fire()}formatter(){return this._formatter}name(){return this._title}title(){return this._title}titleInParts(){return[this._title]}isFailed(){return this._status.type===u.StudyStatusType.Error}isLoading(){return this._status.type===u.StudyStatusType.Loading}setFailed(e){this.setStatus({type:u.StudyStatusType.Error,errorDescription:{error:e}}),this._model.updateSource(this)}isSymbolInvalid(){return!1}isActualInterval(){return!0}onIsActualIntervalChange(){return _}start(){}status(){return this._status}onStatusChanged(){return this._statusChanged}firstValue(){return null}currency(){return null}sessionId(){return this._model.mainSeries().sessionId()}sessionIdChanged(){return this._model.mainSeries().sessionIdChanged()}unit(){return null}symbolSource(){return this._model.mainSeries()}valuesProvider(){return new p}statusProvider(e){return new d(this,this._model.properties().childs().scalesProperties.childs().textColor)}}},89027:(e,t,i)=>{"use strict";i.d(t,{StudyValuesProvider:()=>g});var s=i(93751),r=i(49483),n=i(68906),o=i(67337),a=i(71053),l=i(14291),c=i(85733),h=i(50993),d=i(99220),u=i(88129),p=i(57626);const _=r.CheckMobile.any(),m=o.enabled("hide_last_na_study_output");class g{constructor(e,t){this._emptyValues=[],this._colorProviders=new Map,this._study=e,this._model=t;const i=this._study.metaInfo().plots;i&&i.forEach((e,t)=>{if((0,h.isPlotWithTechnicalValues)(e))return;const i=e.id;this._emptyValues.push(function(e,t="",i=""){return{id:t,index:e,title:i,value:"",visible:!1}}(t,i,this._study.guiPlotName(i)));const s=(0,h.isOhlcPlot)(e)?e.target:i;this._colorProviders.set(s,(0,d.createStudyPlotColorProvider)(this._study.metaInfo(),this._study.properties(),s))})}getItems(){return this._emptyValues}getValues(e){const t=this._emptyValues.map(e=>({...e}));let i=null;const r=this._study.data().lastIndex();if(null!==r)for(const e of t){if(!this._study.properties().styles[e.id].visible.value())continue;const t=this._study.nearestIndex(r,a.PlotRowSearchMode.NearestLeft,e.index+1);if(void 0===t)continue;const s=t+this._study.offset(e.id);i=null!==i?Math.max(s,i):s}(null===e||null!==i&&e>i)&&(e=i);const o=this._hideValues(),l=this._study.isVisible()&&!o?p.notAvailable:"";for(const e of t)e.value=l;if(o)return t;m&&t.length&&(t[t.length-1].value="");const c=this._study.priceScale();if(!this._study.isVisible()||null===e||null===c||c.isEmpty()||this._model.timeScale().isEmpty())return t;const d=this._study.metaInfo().plots,_=(0,u.getPriceValueFormatterForSource)(this._study),g={};for(const i of t){let t=i.id;const o=this._study.properties().styles[t].visible.value();if(i.visible=o,!o)continue;const l=i.index,c=e-this._study.offset(t),u=null!==r&&c>r?a.PlotRowSearchMode.NearestLeft:a.PlotRowSearchMode.Exact,p=this._study.nearestIndex(c,u);if(void 0===p)continue;let m=g[t];if(void 0===m&&(m=this._study.getMinFirstBarIndexForPlot(t),Number.isFinite(m)&&(g[t]=m)), -m>p)continue;const f=this._study.data().last(),v=this._study.data().valueAt(p)||(null!==f?f.value:null);if(null===v)continue;const S=v[l+1];if(!(0,s.isNumber)(S))continue;const y=S>0;i.value=_(S);const b=this._study.properties().styles[t];let w=b.color.value();const C=d[l];(0,h.isOhlcPlot)(C)?(t=C.target||t,w=this._study.properties().ohlcPlots[t].color.value()):(0,h.isArrowsPlot)(C)&&(w=y?b.colorup.value():b.colordown.value());let P=w;const T=this._colorProviders.get(t),x=T&&T.getPlotPointStyle(v);x&&((0,h.isArrowsPlot)(C)?(y&&void 0!==x.colors[5]&&(P=x.colors[5]),y||void 0===x.colors[6]||(P=x.colors[6])):void 0!==x.colors[0]&&(P=x.colors[0])),"transparent"===P&&(P=w),P=(0,n.resetTransparency)(P),i.color=P}return t}_hideValues(){return _&&(null===this._model.crossHairSource().pane||(0,l.isLineToolName)(c.tool.value())||null!==this._model.lineBeingEdited())}}},69774:(e,t,i)=>{"use strict";i.d(t,{StudyBase:()=>gt});var s=i(16230),r=i(88537),n=i(28353),o=i(98125),a=i(49483),l=i(2872),c=i.n(l),h=i(51344),d=i(22932),u=i(69927),p=i(71053),_=i(67072),m=i.n(_),g=i(54376),f=i(95936),v=i(26179),S=i(22458);class y extends v.StudyDataWindowView{constructor(e,t){super(e,t),this._showStudyValues=t.properties().childs().paneProperties.childs().legendProperties.childs().showStudyValues,this._showStudyValues.subscribe(this,this.update),this._study.properties().showLegendValues.subscribe(this,this.update)}areValuesVisible(){return this._showStudyValues.value()}additional(){return null}destroy(){this._showStudyValues.unsubscribeAll(this),this._study.properties().showLegendValues.unsubscribeAll(this)}_createValuesProvider(e,t){return new S.StudyLegendValuesProvider(e,t)}}var b=i(85733),w=i(190),C=i(19234),P=i(72857),T=i(95836),x=i(40529),I=i(80643),M=i(95505),L=i(50993),A=(i(33266),i(67337)),E=i(86441),k=i(68906),D=i(94804);class V{constructor(e){this._data=e}draw(e,t){}drawBackground(e,t){e.save();const i=this._data,s=t.pixelRatio;let r=null;const n=Math.round(this._data.w*s);for(let t=0;t0){i.items[t-1].index===o.index-1&&null!==r&&(l=r+1)}const c=a+n,h=c-l+1;e.fillRect(l,Math.round(i.y*s),h,Math.round(i.h*s)),r=c}e.restore()}hitTest(e){return null}}var B=i(99220);class N{constructor(e,t,i,s){this._items=[],this._invalidated=!0,this._isMarkersEnabled=A.enabled("source_selection_markers"),this._study=e,this._series=t,this._model=i,this._plotName=s;const n=this._study.metaInfo().plots;for(let e=0;e0?(i-=n,s+=n):(i+=n,s-=n);const o=this._study.getMinFirstBarIndexForPlot(this._plotName);if(o>s)return;i=Math.max(o,i);const a=this._study.data().rangeIterator(i,s);for(;a.hasNext();){const e=a.next();let i=e.index;const s=e.value;i+=n;const o=new E.Point(Math.floor(i)-.5,NaN);let l=(0,I.isNumber)(t)?t:50;l=Math.min(l,100),l=Math.max(l,0);const c=this._colorProvider.getPlotPointStyle(s);void 0!==c.colors[1]&&(o.color=(0,k.generateColor)((0,r.ensureDefined)(c.colors[1]),l)),o.index=i,this._items.push(o)}this._model.timeScale().timedValuesToCoordinates(this._items)}}var R,O,F=i(11372),W=i(41892),H=i(56138),z=i(64514),U=i(84346),j=i(85847),G=i(63948),q=i(31175),Y=i(34026),K=i(40236),$=i(52640),X=i(93435);!function(e){e.Left="left",e.Right="right",e.Center="center"}(R||(R={})),function(e){e.Top="top",e.Bottom="bottom",e.Middle="middle"}(O||(O={}));const Z=(0,X.createDisconnectedCanvas)(document,new X.Size(0,0),1);class J{constructor(e,t,i,s,n,o="center",a=0){this._lines=e.split(/[^\S\r\n]*(?:\r\n|\r|\n)/),this._font=function(e,t,i,s){return(0,$.makeFont)(s,i,`${e?"bold ":""}${t?"italic ":""}`)}(t,i,s,n),this._fontSize=n,this._verticalPadding=~~(n/6),this._textAlign=o,this._lineSpacing=a;const l=(0,r.ensureNotNull)(Z.getContext("2d"));l.font=this._font,l.textBaseline="top";let c=0;for(let e=0;e{for(const t of this._lines)e.fillText(t,l,c),c+=this._fontSize,c+=this._lineSpacing}),e.restore()}}class Q extends K.AbstractMapContainer{constructor(e){super(),this._maxSize=e,this._keysQueue=[]}get(e){const{fontSize:t,text:i,align:s,lineSpacing:r=0}=e;if(!i||!t||!s)return null;const n=(0,K.getDefault3)(this._map,r,s,t,new Map);let o=n.get(i);return void 0!==o||(this._size>=this._maxSize?this._deleteFirstKey():++this._size,this._keysQueue.push([t,s,r,i]),o=new J(i,e.bold,e.italic,e.font,t,s,r),n.set(i,o)),o}_deleteFirstKey(){const e=this._keysQueue.shift(),[t,i,s,n]=e,o=(0,r.ensureDefined)(this._map.get(s)),a=(0,r.ensureDefined)(o.get(i)),l=(0,r.ensureDefined)(a.get(t));l.delete(n),0===l.size&&a.delete(t),0===a.size&&o.delete(i),0===o.size&&this._map.delete(s)}}var ee=i(22799);class te{constructor(e,t={skipRenderingOptimizations:!1}){this._items=[],this._barSpacing=0,this._vertOffset=0,this._textCache=t.textCache||new Q(5e3),this._drawOperation=t.skipRenderingOptimizations?this._drawWithoutOptimizations.bind(this):this._drawWithOptimizations.bind(this),null!==e&&this.setData(e)}draw(e,t){this._preDrawInit(),this._drawOperation(e,t)}hitTest(e){const t=U.HitTestResult.REGULAR;let i=null;for(const s of this._items){if(!s)continue;const r=this._calcBoundingBox(s);if(r&&(0,Y.pointInBox)(e,r)){const e={tooltip:this._getTooltip(s,r)};i=new U.HitTestResult(t,e)}}return i}setData(e){this._height=void 0!==e.height?e.height:e.width,this._width=void 0!==e.width?e.width:e.height,this._color=e.color,this._borderColor=e.borderColor,this._vertOffset=e.vertOffset||0,e.text&&(this._text=e.text,this._fontSize=e.fontSize,this._lineSpacing=e.lineSpacing,this._textColor=e.textColor,this._textAlign=e.textAlign||"center"),void 0!==e.items&&void 0!==e.barSpacing&&this.setItems(e.items,e.barSpacing)}setItems(e,t){this._setBaseData(e,t)}_calcBoundingBox(e){const t=e.vertOffset,i=this._getTextCache(e);if(!i)return;const s=i.textImageWidth,r=i.textImageHeight,n=s/2,o=e.y+t+e.textVertOffset,a=t>0?0:-r,l=t>0?r:0,c=new E.Point(e.x-n,o+a),h=new E.Point(e.x+n,o+l);return(0,E.box)(c,h)}_unionBox(e,t){const i=Math.min(e.min.x,t.min.x),s=Math.max(e.max.x,t.max.x),r=Math.min(e.min.y,t.min.y),n=Math.max(e.max.y,t.max.y),o=new E.Point(i,r),a=new E.Point(s,n);return(0,E.box)(o,a)}_getTooltip(e,t){if(e.tooltip)return{content:{type:"text",data:e.tooltip},tooltipDelay:200,extendMargin:!0,rect:{x:t.min.x,y:t.min.y,w:Math.abs(t.max.x-t.min.x),h:Math.abs(t.max.y-t.min.y)}}}_setBaseData(e,t){this._items.length=0,this._barSpacing=t;for(const t of e){const e=void 0===t.width?(0,r.ensureDefined)(this._width):t.width,i=void 0===t.height?(0,r.ensureDefined)(this._height):t.height,s=void 0===t.vertOffset?this._vertOffset:t.vertOffset,n=s>0?i:-i;this._items.push({width:e,height:i,vertOffset:s,textVertOffset:n,shapeWidth:0,shapeHeight:0,stepX:0,stepY:0,...t})}}_drawItemText(e,t,i){const s=this._getTextCache(i);if(null===s)return -;const r=i.x,n=i.vertOffset,o=i.y+n+i.textVertOffset;let a;a=i.style&&void 0!==i.style.textColor?i.style.textColor:this._textColor,s.paintTo(e,t,a,r,o,R.Center,n>0?O.Top:O.Bottom)}_drawWithOptimizations(e,t){let i,s,r=null,n=!1;for(const o of this._items)o.style&&void 0!==o.style.color?(i=o.style.color||"rgba(0, 0, 0, 0)",s=o.style.borderColor||"rgba(0, 0, 0, 0)"):(i=this._color,s=this._borderColor),(r!==i||a.isSafari)&&(r=i,n&&this._endPath(e),this._startPath(e,t,i,s)),this._drawItemShape(e,t,o),n=!0;n&&this._endPath(e);for(const i of this._items)this._drawItemText(e,t,i)}_drawWithoutOptimizations(e,t){let i,s;for(const n of this._items){const o=(0,r.ensureDefined)(n.style);i=o.color||"rgba(0, 0, 0, 0)",s=o.borderColor||"rgba(0, 0, 0, 0)",this._startPath(e,t,i,s),this._drawItemShape(e,t,n),this._endPath(e),this._drawItemText(e,t,n)}}_drawItemShape(e,t,i){(0,X.drawScaled)(e,t.pixelRatio,()=>this._drawItemShapeUsingCSSPixels(e,i))}_drawItemShapeUsingCSSPixels(e,t){}_preDrawInit(){}_startPath(e,t,i,s){}_endPath(e){}_getTextCache(e){var t;const i=e.text||this._text,s=e.fontSize||this._fontSize,r=null!==(t=e.lineSpacing)&&void 0!==t?t:this._lineSpacing,n=e.textAlign||this._textAlign;return this._textCache.get({text:i,bold:!1,italic:!1,font:ee.CHART_FONT_FAMILY,fontSize:s,lineSpacing:r,align:n})}}class ie extends te{_startPath(e,t,i,s){e.beginPath(),e.lineWidth=this._lineWidth(t),e.lineCap="butt",e.strokeStyle=i}_endPath(e){e.stroke()}_lineWidth(e){return Math.max(1,Math.floor(2*e.pixelRatio))}}class se extends te{_startPath(e,t,i,s){e.beginPath(),e.lineWidth=this._lineWidth(t),e.lineCap="butt",e.fillStyle=i,e.strokeStyle=s}_endPath(e){e.fill(),e.stroke()}_lineWidth(e){return Math.max(1,Math.floor(e.pixelRatio))}}class re extends se{constructor(){super(...arguments),this._sign=0,this._thinArrow=!1,this._thinArrowLineWidth=0,this._headHeight=0,this._arrowWidth=0}setItems(e,t){this._setBaseData(e,t)}_drawItemShape(e,t,i){const s=t.pixelRatio,r=this._lineWidth(t)%2?.5:0,n=this._sign,o=this._arrowWidth,a=this._headHeight,l=Math.abs(i.height),c=Math.round(i.x*s)+r,h=i.vertOffset,d=Math.round((i.y+h+n*l/2)*s)+r,u=(0,z.ceiledEven)(o*s),p=u/2,_=Math.round(l*s),m=Math.round(a*s);e.translate(c,d),this._thinArrow?(e.moveTo(0,0),e.lineTo(-p,-p*n),e.moveTo(0,0),e.lineTo(p,-p*n),e.moveTo(0,0),e.lineTo(0,-_*n),e.moveTo(-p,-_*n),e.lineTo(p,-_*n)):(e.moveTo(0,0),_=0?e.vertOffset:e.vertOffset-e.shapeHeight}}),he.set("PaneRendererLabelDown",class extends oe{_calcBoundingBox(e){const t=e.x-e.shapeWidth/2,i=e.x+e.shapeWidth/2,s=e.y-e.shapeHeight+e.vertOffset,r=e.y+e.vertOffset,n=new E.Point(t,s),o=new E.Point(i,r);return(0,E.box)(n,o)}_drawItemShape(e,t,i){const s=t.pixelRatio,r=this._lineWidth(t)%2?.5:0,n=Math.max(1,Math.floor(s))%2?.5:0,o=this._getArrowSize(i);let a=Math.round(o*s);(n+a)%1!=r%1&&(a+=.5);let l=Math.round(i.shapeWidth/2*s);(n+l)%1!=r%1&&(l+=.5);const c=Math.round(i.x*s)+n,h=Math.round((i.y+i.vertOffset)*s)+r,d=c+a,u=Math.round((i.y+i.vertOffset-o)*s)+r,p=c-a,_=c+l,m=Math.round((i.y+i.vertOffset-i.shapeHeight)*s)+r,g=c-l -;e.moveTo(d,u),e.lineTo(c,h),e.lineTo(p,u),i.shapeWidth<=2*o?(e.lineTo(g,u),this._drawCorner(e,g,m,le.leftUp,s),this._drawCorner(e,_,m,le.rightUp,s),e.lineTo(_,u)):(this._drawCorner(e,g,u,le.leftDown,s),this._drawCorner(e,g,m,le.leftUp,s),this._drawCorner(e,_,m,le.rightUp,s),this._drawCorner(e,_,u,le.rightDown,s)),e.lineTo(d,u)}_getVerticalTextOffset(e){return-e.shapeHeight/2-this._getArrowSize(e)/2}_calcVertOffset(e){return Math.sign(e.vertOffset)<=0?e.vertOffset:e.vertOffset+e.shapeHeight}}),he.set("PaneRendererSquare",class extends se{_drawItemShape(e,t,i){const s=t.pixelRatio,r=Math.max(1,Math.floor(s))%2?.5:0,n=this._lineWidth(t)%2?.5:0;let o=Math.round(i.height/2*s);(r+o)%1!=n%1&&(o+=.5);const a=Math.round(i.x*s)+r,l=Math.round((i.y+i.vertOffset)*s)+r,c=a-o,h=l-o,d=a+o,u=l+o;e.rect(c,h,d-c,u-h)}_calcBoundingBox(e){const t=e.height,i=Math.round(t/2),s=e.x-i,r=e.vertOffset,n=e.y+r-i,o=s,a=s+t,l=n,c=n+t,h=new E.Point(o,l),d=new E.Point(a,c);let u=(0,E.box)(h,d);const p=super._calcBoundingBox(e);return p&&(u=this._unionBox(u,p)),u}}),he.set("PaneRendererTriangleApexUp",class extends ce{_drawItemShape(e,t,i){const s=i.width,r=i.height,n=Math.round(r/3),o=i.vertOffset-2*n,a=t.pixelRatio,l=this._lineWidth(t)%2?.5:0,c=Math.max(1,Math.floor(a)),h=c%2?.5:0;let d=Math.round(s*a);d%2!=c%2&&(d+=1);const u=Math.round(i.x*a)+h,p=Math.round((i.y+o)*a),_=u+d/2,m=Math.round((i.y+o+r)*a)+l,g=u-d/2;e.moveTo(u,p),e.lineTo(_,m),e.lineTo(g,m),e.lineTo(u,p)}}),he.set("PaneRendererTriangleApexDown",class extends ce{_drawItemShape(e,t,i){const s=i.width,r=i.height,n=Math.round(r/3),o=i.vertOffset-n,a=t.pixelRatio,l=this._lineWidth(t)%2?.5:0,c=Math.max(1,Math.floor(a)),h=c%2?.5:0;let d=Math.round(s*a);d%2!=c%2&&(d+=1);const u=Math.round(i.x*a)+h,p=Math.round((i.y+o)*a)+l,_=u+d/2,m=Math.round((i.y+o+r)*a),g=u-d/2;e.moveTo(g,p),e.lineTo(_,p),e.lineTo(u,m),e.lineTo(g,p)}}),he.set("PaneRendererXCross",class extends ie{_drawItemShapeUsingCSSPixels(e,t){const i=t.width,s=t.height,r=t.x-i/2,n=t.vertOffset,o=t.y-s/2+n;e.moveTo(r,o),e.lineTo(r+i,o+s),e.moveTo(r,o+s),e.lineTo(r+i,o)}_calcBoundingBox(e){const t=e.width,i=e.height,s=e.x-t/2,r=e.vertOffset,n=e.y-i/2+r,o=s,a=s+t,l=n,c=n+i,h=new E.Point(o,l),d=new E.Point(a,c);let u=(0,E.box)(h,d);const p=super._calcBoundingBox(e);return p&&(u=this._unionBox(u,p)),u}});class de{constructor(e,t,i,s){this._items=[],this._invalidated=!1,this._renderer=null,this._isMarkersEnabled=A.enabled("source_selection_markers"),this._selectionData=null,this._plotIndex=null,this._topCoord=0,this._bottomCoord=0,this._study=e,this._series=t,this._model=i,this._plotName=s;const r=e.metaInfo().plots;for(let e=0;e0?(s-=o,n+=o):(s+=o,n-=o);const a=this._study.getMinFirstBarIndexForPlot(this._plotName);if(a>n)return;s=Math.max(a,s);const l=this._study.data(),c=this._study.firstValue();if(null===c)return;const h=l.rangeIterator(s,n),d=this._getTranspValue();let u=[];const _=this._model.selection().isSelected(this._study);_?(u=this._selectionIndexer.indexes(),this._selectionData={points:[],hittestResult:U.HitTestResult.REGULAR,vertOffset:0,bgColors:[],barSpacing:e.barSpacing(),visible:!0}):(this._selectionIndexer.clear(),this._selectionData=null);const m=this._series.properties().childs().style.value(),g=2===m?"lineStyle":3===m?"areaStyle":null;let f,v;g?(f=this._series.properties().childs()[g].childs().priceSource.value(),v=f):(f="high",v="low");const S=t.isInverted(),y=t.coordinateToPrice(t.height()*t.topMargin(),c),b=t.coordinateToPrice(t.height()*(1-t.bottomMargin()),c);this._topCoord=S?b:y,this._bottomCoord=S?y:b;const w=(0,r.ensureNotNull)(this._model.paneForSource(this._study)).height(),C=this._study.properties().styles[this._plotName],P=C.color.value(),T=C.textColor?C.textColor.value():void 0,x=P,I=P,M=void 0===T?void 0:T,L=(0,r.ensureNotNull)(this._plotIndex),A=(0,q.createEmptyStyle)();for(;h.hasNext();){const e=h.next(),t=e.index,i=e.value,s=Math.floor(t+o),r=i[L+1];if(null==r)continue;const n=this._createItem(s,r,f,v);if(null!==n){if(this._colorProvider.isColorDefined()){n.style={color:x,borderColor:I,textColor:M};const e=this._colorProvider.getPlotPointStyle(i,A);this._fillItemWithPointStyle(n,e,d)}_&&-1!==u.indexOf(t)&&null!==this._selectionData&&(this._selectionData.points.push(n),this._selectionData.bgColors.push(this._model.backgroundColorAtYPercentFromTop(n.y/w))),this._items.push(n)}}this._convertItemsToCoordinates()}_fillItemWithPointStyle(e,t,i){const s=(0,r.ensureDefined)(e.style);if(void 0!==t.colors[0]){s.color=(0,k.generateColor)((0,r.ensureDefined)(t.colors[0]),i);const e=i>9?i-10:0;s.borderColor=(0,k.generateColor)(s.color,e)}void 0!==t.colors[2]&&(s.textColor=(0,k.generateColor)((0,r.ensureDefined)(t.colors[2]),i))}_updateRenderer(e){this._updateImpl() -;const t=this._model.timeScale(),i={},s=this._getTranspValue(),r=t.barSpacing(),n=this._calculateShapeHeight(r),o=this._study.properties().styles[this._plotName].location.value(),a=this._calculateVerticalOffset(o,n+n/2);i.barSpacing=r,i.items=this._items,i.color=(0,k.generateColor)(this._study.properties().styles[this._plotName].color.value(),s),i.height=n,i.vertOffset=a;const l=this._study.properties().styles[this._plotName].plottype.value(),c=H.plotShapesData[l],h=new D.CompositeRenderer;c&&h.append(this._createRenderer(c.paneRendererClass,i)),this._model.selection().isSelected(this._study)&&this._isMarkersEnabled&&null!==this._selectionData&&(this._selectionData.vertOffset=a,h.append(new W.SelectionRenderer(this._selectionData))),this._renderer=h}_createRenderer(e,t){const i=he.get(e);return new((0,r.ensureDefined)(i))(t)}_getSeriesVal(e,t){const i=(0,G.barFunction)(e),s=this._series.data().valueAt(t);return null===s?null:i(s)}_getTranspValue(){let e=0;this._study.properties().transparency&&(e=this._study.properties().transparency.value(),e=(0,I.isNumber)(e)?e:50);const t=this._study.properties().styles[this._plotName];return t.transparency&&(e=t.transparency.value(),e=(0,I.isNumber)(e)?e:50),(0,z.clamp)(e,0,100)}_createItem(e,t,i,s){const n=this._study.properties().styles[this._plotName].location.value();if((null===t||0===t)&&n!==f.MarkLocation.Absolute)return null;let o;switch(n){case f.MarkLocation.AboveBar:const a=this._getSeriesVal(i,e);if(null===a)return null;o=a;break;case f.MarkLocation.BelowBar:const l=this._getSeriesVal(s,e);if(null===l)return null;o=l;break;case f.MarkLocation.Top:o=this._topCoord;break;case f.MarkLocation.Bottom:o=this._bottomCoord;break;case f.MarkLocation.Absolute:o=(0,r.ensureNotNull)(t);break;default:throw new Error("Bad value: "+n)}return new E.Point(e,o)}_convertItemsToCoordinates(){const e=this._model.timeScale(),t=this._study.priceScale();e.timedValuesToCoordinates(this._items);const i=(0,r.ensureNotNull)(this._study.firstValue());(0,r.ensureNotNull)(t).pointsArrayToCoordinates(this._items,i)}_calculateVerticalOffset(e,t){let i=0;switch(e){case f.MarkLocation.AboveBar:case f.MarkLocation.Bottom:i=-t;break;case f.MarkLocation.BelowBar:case f.MarkLocation.Top:i=t}return(0,r.ensureNotNull)(this._study.priceScale()).isInverted()&&(i*=-1),i}_calculateShapeHeight(e,t){let i=e;switch(t){case L.PlotSymbolSize.Tiny:i=.3*e;break;case L.PlotSymbolSize.Small:i=.6*e;break;case L.PlotSymbolSize.Normal:i=e;break;case L.PlotSymbolSize.Large:i=1.5*e;break;case L.PlotSymbolSize.Huge:i=2*e}return i}}class ue extends de{renderer(){const e=this._study.properties().styles[this._plotName];return e.visible&&e.visible.value()&&this._scalesReady()?(this._invalidated&&(this._updateRenderer(e),this._invalidated=!1),this._renderer):null}_updateRenderer(e){this._updateImpl();const t=this._model.timeScale(),i={},s=this._getTranspValue(),r=t.barSpacing();let n;if(e.size){const t=e.size.value();n=this._calculateShapeHeight(25,t)}else n=Math.round(r/2);n=Math.max(n,1);const o=e.location.value(),a=(0, -k.generateColor)(e.color.value(),s),l=s>19?s-10:0,c=this._calculateVerticalOffset(o,Math.round(1.5*n));i.barSpacing=r,i.items=this.items(),i.color=a,i.borderColor=(0,k.generateColor)(e.color.value(),l),i.height=n,i.vertOffset=c;const h=e.plottype.value(),d=H.plotShapesData[h],u=new D.CompositeRenderer,p=e.text?e.text.value():void 0;if(void 0!==p&&""!==p.trim()){let t=p.trim().replace(/\\n/gm,"\n");t=(0,F.cleanButAmpersand)(t,!0),i.text=t,i.fontSize=12;const r=e.textColor?e.textColor.value():void 0;i.textColor=r?(0,k.generateColor)(r,s):a}u.append(super._createRenderer(d.paneRendererClass,i)),this._model.selection().isSelected(this._study)&&this._isMarkersEnabled&&null!==this._selectionData&&(this._selectionData.vertOffset=c,u.append(new W.SelectionRenderer(this._selectionData))),this._renderer=u}}var pe=i(87795),_e=i.n(pe),me=i(49094);class ge extends te{constructor(e,t){super(null,t),this._fontSizeEnsured=0,this._ch="",this._fontFamily=ee.CHART_FONT_FAMILY,this._charCache=null,null!==e&&this.setData(e)}setData(e){super.setData(e),this._fontSizeEnsured=(0,r.ensureDefined)(this._height);const t=e.char.slice(0,40);this._ch=_e()(t)[0]||" ",this._fontFamily=e.fontFamily||ee.CHART_FONT_FAMILY}hitTest(e){const t=(0,me.interactionTolerance)().series+this._fontSizeEnsured/2;for(const i of this._items){if(new E.Point(i.x,i.y+i.vertOffset).subtract(e).length()<=t)return new U.HitTestResult(U.HitTestResult.REGULAR)}return null}_drawItemShape(e,t,i){const s=i.x,r=i.vertOffset>0?1:-1,n=i.y+i.vertOffset-r*Math.round(this._fontSizeEnsured/2);let o;o=i.style&&void 0!==i.style.color?i.style.color:this._color;const a=this._textImageCache(),l=t.pixelRatio;if(this._fontSizeEnsured<=4/l){e.save();const t=Math.max(1,Math.floor(l));let r=Math.max(1,Math.floor(a.textImageWidth*l));r%2!=t%2&&(r+=r>1?-1:1);const c=Math.round(n*l)+(i.vertOffset>=0?0:-r);return e.fillStyle=o,e.fillRect(Math.round(s*l)+(l%2?.5:0)-r/2,c,r,r),void e.restore()}a.paintTo(e,t,o,s,n,R.Center,i.vertOffset>0?O.Top:O.Bottom)}_startPath(e,t,i,s){}_endPath(e){}_textImageCache(){return null!==this._charCache&&this._charCache.fontFamily===this._fontFamily&&this._charCache.fontSize===this._fontSizeEnsured||(this._charCache={fontSize:this._fontSizeEnsured,fontFamily:this._fontFamily,cache:new J(this._ch,!1,!1,this._fontFamily,this._fontSizeEnsured,"center",0)}),this._charCache.cache}}class fe extends de{constructor(){super(...arguments),this._compositeRenderer=new D.CompositeRenderer,this._charRenderer=new ge(null)}renderer(){const e=this._study.properties().styles[this._plotName];return e.visible&&e.visible.value()&&this._scalesReady()?(this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._compositeRenderer):null}_updateImpl(){if(this._compositeRenderer.clear(),super._updateImpl(),0===this._items.length)return;const e=this._getTranspValue(),t=this._model.timeScale().barSpacing();let i;const s=this._study.properties().styles[this._plotName];if(s.size){const e=s.size.value();i=this._calculateShapeHeight(50,e)}else i=Math.round(t);const r=s.location.value(),n=(0, -k.generateColor)(s.color.value(),e),o=this._calculateVerticalOffset(r,i),a={items:this.items(),barSpacing:t,char:s.char.value(),height:i,vertOffset:o,color:n},l=s.text?s.text.value():void 0;if(void 0!==l&&""!==l.trim()){let t=l.trim().replace(/\\n/gm,"\n");t=(0,F.cleanButAmpersand)(t,!0),a.text=t,a.fontSize=12;const i=s.textColor?s.textColor.value():void 0;a.textColor=i?(0,k.generateColor)(i,e):n}this._charRenderer.setData(a),this._compositeRenderer.append(this._charRenderer),this._model.selection().isSelected(this._study)&&this._isMarkersEnabled&&null!==this._selectionData&&(this._selectionData.vertOffset=o,this._compositeRenderer.append(new W.SelectionRenderer(this._selectionData)))}}var ve=i(24377);class Se extends E.Point{constructor(e,t,i,s){super(e,t),this.height=i,this.isUp=s,this.style={}}}function ye(e){return Math.round(e/4)}function be(e){return Math.round(e/2)}class we{constructor(e){this._data=e}draw(e,t){var i;const s=t.pixelRatio,r=this._data,n=be(r.barSpacing),o=ye(r.barSpacing),a=n<4,l=Math.max(n/2,1),c=(0,z.ceiledEven)(n*s),h=c/2,d=Math.round(n*s);e.lineCap="butt",e.lineWidth=Math.max(1,Math.floor(s));const u=e.lineWidth%2?.5:0;for(const t of r.items){const n=t.isUp?-1:1,p=Math.round(Math.abs(t.height)*s),_=Math.round(t.x*s)+u,m=Math.round((t.y-n*o)*s)+u;e.beginPath(),e.translate(_,m);const g=null!==(i=t.style&&t.style.color)&&void 0!==i?i:t.isUp?r.colorup:r.colordown;a?(e.moveTo(0,0),e.lineTo(-h,-h*n),e.moveTo(0,0),e.lineTo(h,-h*n),e.moveTo(0,0),e.lineTo(0,-p*n),e.moveTo(-h,-p*n),e.lineTo(h,-p*n),e.lineWidth=l,e.strokeStyle=g,e.stroke()):(e.moveTo(0,0),pthis._maxAbsValue&&(this._maxAbsValue=Math.abs(t));const r=t>0;let n;if(r){const t=this._getSeriesVal(s,e);if(null===t)return null;n=t}else{const t=this._getSeriesVal(i,e);if(null===t)return null;n=t}return new Se(e,n,t,r)}_convertItemsToCoordinates(){const e=this._model.timeScale(),t=(0,r.ensureNotNull)(this._study.priceScale());e.timedValuesToCoordinates(this._items),t.pointsArrayToCoordinates(this._items,(0,r.ensureNotNull)(this._study.firstValue()));let i=Math.abs(this._study.properties().styles[this._plotName].minHeight.value()),s=Math.abs(this._study.properties().styles[this._plotName].maxHeight.value());if(i>s){const e=i;i=s,s=e}const n=(s-i)/this._maxAbsValue,o=this._items;for(let e=0;es)return;i=Math.max(n,i);const o=this._study.data(),a=this._study.firstValue();if(null===a)return;const l=o.rangeIterator(i,s),c=this._study.properties().ohlcPlots[this._plotName],h=new Map,d=(e,t)=>{const i=e+"@"+t;if(!h.has(i)){const s=(0,k.generateColor)(e,t);return h.set(i,s),s}return h.get(i)},u=(0,q.createEmptyStyle)();for(;l.hasNext();){const e=l.next();let t=e.index;const i=e.value;t=Math.floor(t);let s=!0;const n=new Map;for(let e=1;e<=4;++e){const t=this._ohlcPlotIndexes.get(e);if(void 0===t){s=!1;break}const r=i[t+1];if(null==r){s=!1;break}n.set(e,r)}if(!s)continue;const o=(0,r.ensureDefined)(n.get(1)),a=(0,r.ensureDefined)(n.get(4)),h=(0,r.ensureDefined)(n.get(2)),p=(0,r.ensureDefined)(n.get(3)),_=Math.max(o,h,p,a),m=Math.min(o,h,p,a);let g=(0,r.ensureDefined)(d(c.color.value(),0));const f=this._colorProvider.getPlotPointStyle(i,u);void 0!==f.colors[0]&&(g=(0,r.ensureDefined)(f.colors[0]));const v={time:Math.round(t),exactTime:t,open:o,high:_,low:m,close:a,color:g,wickColor:f.colors[4],borderColor:f.colors[3],hollow:null};this._bars.push(v)}if(e.barPricesToCoordinates(this._bars,a),this._model.timeScale().barIndexesToCoordinates(this._bars),this._model.selection().isSelected(this._study)){const t=this._selectionIndexer.indexes();this._selectionData={points:[],hittestResult:U.HitTestResult.REGULAR,bgColors:[],visible:!0,barSpacing:this._model.timeScale().barSpacing()};const i=(0,r.ensureNotNull)(this._model.paneForSource(this._study)).height(),s=(0,r.ensureDefined)(this._ohlcPlotIndexes.get(4));for(let r=0;rthis._actualLength?this._items[this._actualLength]:null;return null!==e&&Boolean(e.invalidateCache)&&e.invalidateCache(),e}invalidateCache(){this._invalidations+=1,3e3===this._invalidations&&(this._items.splice(this._actualLength),this._invalidations=0),this._actualLength=0}at(e){return this._items[e]}data(){return this._items}length(){return this._actualLength}}class Re{constructor(){this._map=new Map,this._usedKeys=new Set,this._invalidations=0}invalidateCache(){this._invalidations+=1,50===this._invalidations&&(this._deleteUnused(),this._invalidations=0),this._usedKeys.clear(),this._map.forEach((e,t)=>e.invalidateCache())}get(e){const t=this._map.get(e);return void 0!==t&&this._usedKeys.add(e),t}set(e,t){this._usedKeys.add(e),this._map.set(e,t)}forEach(e){this._map.forEach((t,i)=>{this._usedKeys.has(i)&&e(t,i)})}delete(e){const t=this._map.get(e);void 0!==t&&t.invalidateCache(),this._usedKeys.delete(e)}_deleteUnused(){const e=[];this._map.forEach((t,i)=>{this._usedKeys.has(i)||e.push(i)});for(const t of e)this._map.delete(t)}}class Oe extends Ne{constructor(){super(),this.points1=new Ne,this.points2=new Ne,this.push(this.points1),this.push(this.points2)}addPoints1Point(e,t){let i=this.points1.newItem();null!==i?(i.x=e,i.y=t):i={x:e,y:t},this.points1.push(i)}addPoints2Point(e,t){let i=this.points2.newItem();null!==i?(i.x=e,i.y=t):i={x:e,y:t},this.points2.push(i)}invalidateCache(){this.points1.invalidateCache(),this.points2.invalidateCache()}}class Fe extends Be.ScaledPaneRenderer{constructor(){super(...arguments),this._data=null}setData(e){this._data=e}hitTest(e,t){return null}_drawImpl(e,t){if(null===this._data)return -;const i=.25*this._data.barSpacing,s=this._data.transparency;this._data.colorAreas.forEach((t,r)=>{e.beginPath();for(let s=0;s=0;t--)e.lineTo(r.points2.at(t).x,r.points2.at(t).y)}else{const t=r.points2.at(0).x,s=r.points2.at(0).y;e.lineTo(n+i,o),e.lineTo(t+i,s),e.lineTo(t-i,s),e.lineTo(n-i,o)}}e.closePath(),e.fillStyle=(0,k.generateColor)(r,s),e.fill()})}}var We=i(81688);class He extends Ne{constructor(){super(...arguments),this._startIndex=0}setStartIndex(e){this._startIndex=e}at(e){const t=e-this._startIndex;for(;t>=this._actualLength;){if(this._items.length<=t)this._items.push({plot1Value:void 0,plot2Value:void 0,colorIndex:void 0});else{const e=this._items[this._actualLength];e.plot1Value=void 0,e.plot2Value=void 0,e.colorIndex=void 0}this._actualLength+=1}return this._items[t]}}class ze{constructor(e,t,i=!1){this._isHlineFill=!1,this._bandAKey=null,this._bandBKey=null,this._colorPlotIndex=null,this._colorValues=[],this._colors=new Ne,this._areaRenderer=new Fe,this._invalidated=!0,this._plIndex1=null,this._plIndex2=null,this._level1=0,this._level2=0,this._studyValuesCache=new He,this._points1=new Ne,this._points2=new Ne,this._timePoints=new Ne,this._colorAreas=new Re,this._source=e,this._model=t,this._fillGaps=i}update(){this._invalidated=!0}renderer(e,t){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._areaRenderer}_correctVisibleRange(e){const t=this._source.data(),i=t.search(e.firstBar(),p.PlotRowSearchMode.NearestLeft,this._plotIndex1()),s=t.search(e.firstBar(),p.PlotRowSearchMode.NearestLeft,this._plotIndex2()),r=t.search(e.lastBar(),p.PlotRowSearchMode.NearestRight,this._plotIndex1()),n=t.search(e.lastBar(),p.PlotRowSearchMode.NearestRight,this._plotIndex2()),o=null!==i?i.index:e.firstBar(),a=null!==s?s.index:e.firstBar(),l=null!==r?r.index:e.lastBar(),c=null!==n?n.index:e.lastBar();return[Math.min(o,a),Math.max(l,c)]}_plotNames(){return this._source.metaInfo().plots.map(e=>e.id)}_plotIndex1(){return null===this._plIndex1&&(this._plIndex1=this._plotNames().indexOf(this._plotAId())+1),this._plIndex1}_plotIndex2(){return null===this._plIndex2&&(this._plIndex2=this._plotNames().indexOf(this._plotBId())+1),this._plIndex2}_updateImpl(){var e,t,i;if(this._areaRenderer.setData(null),!this._visible())return;const s=this._source.priceScale(),n=this._model,o=n.timeScale();if(!s||s.isEmpty()||o.isEmpty())return;if(n.mainSeries().bars().isEmpty())return;const a=this._source.firstValue();if(null===a)return;if(this._isHlineFill){const e=this._source.properties().bands[(0,r.ensureNotNull)(this._bandAKey)],t=this._source.properties().bands[(0,r.ensureNotNull)(this._bandBKey)];this._level1=s.priceToCoordinate(e.value.value(),a),this._level2=s.priceToCoordinate(t.value.value(),a)} -const l=o.visibleBarsStrictRange();if(null===l)return;this._timePoints.invalidateCache(),this._points1.invalidateCache(),this._points2.invalidateCache(),null===(e=this._colors)||void 0===e||e.invalidateCache(),this._colorAreas.invalidateCache();const[c,h]=this._correctVisibleRange(l),d=this._isPerBarColoringSupported()?this._colors:null,u=this._source.offset(this._plotAId()),p=this._source.offset(this._plotBId()),_=Math.min(u,p),m=Math.max(u,p),g=this._plotIndex1(),f=this._plotIndex2(),v=this._source.data();if(v.isEmpty())return;let S,y;const b=(0,r.ensureNotNull)(v.firstIndex()),w=(0,r.ensureNotNull)(v.lastIndex()),C=b-Math.max(0,-_),P=w+Math.max(0,m),T=Math.max(c-1,C),x=Math.min(h+1,P),M=this._studyValuesCache;M.invalidateCache();const L=T-m,A=v.rangeIterator(L,x-_),E=Math.max(l.firstBar()-1,Math.min(L-m-1,L-1+_));M.setStartIndex(E);const k=new We.BarsRange(l.firstBar()-1,l.lastBar()+1);for(;A.hasNext();){const e=A.next(),t=e.index,i=e.value,s=i[g],n=i[f],o=t+u,a=t+p;if(o===a&&k.contains(o)){const e=M.at(o);e.plot1Value=s,e.plot2Value=n}else{if(k.contains(o)){M.at(o).plot1Value=s}if(k.contains(a)){M.at(a).plot2Value=n}}if(null!==d){const e=t-1+_;if(l.contains(e)){const t=i[(0,r.ensureNotNull)(this._colorPlotIndex)+1];M.at(e).colorIndex=t}}}const D=this._timePoints,V=this._points1,B=this._points2;let N=null;const R=E+M.length();for(let e=E;e<=R;e++){if(!this._fillGaps&&(null===S||null===y)){const t=e-1;D.push(t),V.push(NaN),B.push(NaN),null==d||d.push(null)}const s=M.at(e);if(null!==d){const e=s.colorIndex;N=null==e?null:this._getColorByPlotValue(e)}if(this._isHlineFill){D.push(e),null!==d&&d.push(N);continue}const r=null!==(t=s.plot1Value)&&void 0!==t?t:null,n=null!==(i=s.plot2Value)&&void 0!==i?i:null;(null!==r||null!==n||Number.isFinite(S)||Number.isFinite(y))&&(S=r,y=n,V.push(r),B.push(n),D.push(e),null!==d&&d.push(N))}s.pricesArrayToCoordinates(V.data(),a,V.length()),s.pricesArrayToCoordinates(B.data(),a,B.length()),o.indexesToCoordinates(D.data(),D.length());const O=this._transparency();let F=(0,I.isNumber)(O)?O:50;F=Math.min(F,100),F=Math.max(F,0);const W={barSpacing:this._model.timeScale().barSpacing(),transparency:F,colorAreas:this._getFilledAreas(D,V,B,d)};this._areaRenderer.setData(W)}_getFilledAreas(e,t,i,s){const r=this._isHlineFill;if(!r&&(0===t.length()||0===i.length()))return new Re;const n=this._colorAreas;let o=null,a=null;const l=this._color();for(let c=0;c{null===this._bandAKey&&i.id===e&&(this._bandAKey=s),null===this._bandBKey&&i.id===t&&(this._bandBKey=s)})}}var Xe=i(13933),Ze=i(36759),Je=i(23653),Qe=i(33291),et=i(52714),tt=i.n(et),it=i(37667),st=i(8175),rt=i(97098),nt=i(67802),ot=i(26811),at=i(69147);const lt=(0,o.getLogger)("Chart.Study"),ct=(0,n.t)("Invalid Symbol");const ht={symbolsForDisplay:!1,symbolsForChartApi:!0,skipHiddenInputs:!1,skipFakeInputs:!1,skipBooleanInputs:A.enabled("dont_show_boolean_study_arguments"),asObject:!0,skippedGroups:[],skippedInputs:[],noExchanges:!1,noResolution:!1,keepOptionalSymbolsEmpty:!1,skipColorInputs:!1,skipTimeInputs:!1,skipOptionalEmptySymbolInputs:!1,skipTextareaInputs:!0,priceInputsForDisplay:!1},dt=A.enabled("study_symbol_ticker_description"),ut=A.enabled("hide_main_series_symbol_from_indicator_legend");function pt(e,t){const i=e.plots[t];if(!i||!(0,L.isOhlcPlot)(i))return!1 -;const s=i.target,r=e.defaults.styles&&e.defaults.styles[s],n=e.defaults.ohlcPlots&&e.defaults.ohlcPlots[s],o=e.ohlcPlots&&e.ohlcPlots[s];return r&&(0,L.isOhlcPlotStyleBars)(r)||n&&(0,L.isOhlcPlotStyleBars)(n)||!!o&&(0,L.isOhlcPlotStyleBars)(o)}function _t(e,t){const i=e.plots[t];if(!i||!(0,L.isOhlcPlot)(i))return!1;const s=i.target,r=e.defaults.styles&&e.defaults.styles[s],n=e.defaults.ohlcPlots&&e.defaults.ohlcPlots[s],o=e.ohlcPlots&&e.ohlcPlots[s];return r&&(0,L.isOhlcPlotStyleCandles)(r)||n&&(0,L.isOhlcPlotStyleCandles)(n)||!!o&&(0,L.isOhlcPlotStyleCandles)(o)}function mt(e,t){(0,r.assert)(void 0!==e,"zOrder must be defined"),(0,r.assert)(!t.has(e),"zOrder must be unique")}class gt extends d.PriceDataSource{constructor(e,t,i,s){super(e),this.onStart=new(c()),this._onHibernationStateChange=new(c()),this._symbolsResolved=new(c()),this._statusChanged=new(c()),this._paneViews=[],this._legendView=null,this._priceAxisViews=[],this._inputsAnchorsPaneView=null,this._inputsLinesPaneView=null,this._inputsTimeAxisPaneViews=[],this._inputsPriceAxisPaneViews=[],this._resolvedSymbols={},this._resolvedSymbolsByInput={},this._source=null,this._isChildStudy=!1,this._status={type:Xe.StudyStatusType.Undefined},this._wasCompletedBefore=!1,this._studyId=null,this._isSubscribedToSessionId=!1,this._titleStrCache={},this._titleInPartsCache={},this._children=[],this._numericFormatter=new M.NumericFormatter,this._priceAxisViewsBase=[],this._priceLinesAxisViews=[],this._labelPaneViews=[],this._ownFirstValue=null,this._plotOffsets={},this._formatter=null,this._ongoingDataUpdate=Promise.resolve(),this._studyModified=!1,this._isDestroyed=!1,this._graphics=new g.LiveStudyGraphics,this._tagsChanged=new(c()),this._currencySourceSymbolInputProperty=null,this._pendingResolveSymbols=new Map,this._onIsActualIntervalChange=new(c()),this._lastNonEmptyPlotRowCache={},this._startMovingPoint=null,this._processHibernateBound=this.processHibernate.bind(this,1),this._maxOffset=new(tt())(0),this._currencySourceSymbolInfo=null,this._chartApi=e.chartApi(),this._properties=t,this._metaInfo=s,this._series=this._model.mainSeries(),this._series.onIntervalChanged().subscribe(this,this._calcIsActualInterval),this._showStudyArgumentsProperty=e.properties().childs().paneProperties.childs().legendProperties.childs().showStudyArguments,e.collapsed().subscribe(this._processHibernateBound),i instanceof gt&&(this._source=i,this._isChildStudy=!0,this._source.setChild(this));const r=this.parentSource();r.currencyChanged().subscribe(this,this._onSourceCurrencyChanged),r.unitChanged().subscribe(this,this._onSourceUnitChanged),r.priceRangeReadyChanged().subscribe(this,this._onSourcePriceRangeReadyChanged),r.formatterChanged().subscribe(this,this._onSourceFormatterChanged),r.priceStepChanged().subscribe(this,this._onSourcePriceStepChanged),dt&&this._model.mainSeries().properties().childs().statusViewStyle.childs().symbolTextSource.listeners().subscribe(this,()=>{this.invalidateTitleCache(!0)}),this._properties.subscribe(this,this._onPropertiesChanged), -this._properties.visible.subscribe(this,this._visibleChanged),this._properties.visible.subscribe(this,this.processHibernate),this._properties.intervalsVisibilities.subscribe(this,this._calcIsActualInterval),this._properties.inputs.listeners().subscribe(this,this._updateMaxOffsetValue),void 0!==this._properties.offsets&&this._properties.offsets.listeners().subscribe(this,this._updateMaxOffsetValue),void 0!==this._properties.offset&&this._properties.offset.listeners().subscribe(this,this._updateMaxOffsetValue),this._initializeCurrencySource(),b.hideAllIndicators().subscribe(this,this._visibleChanged);for(let e=0;e=0?e:0}}return this._isChildStudy&&m().patchChildStudyMetaInfoState(l),l}restoreData(e){var t,i;this._invalidateLastNonEmptyPlotRowCache(),this.data().restoreState(e),this._resolvedSymbols=null!==(t=e.symbols)&&void 0!==t?t:{},this._graphics=e.graphics?(0,g.loadStudyGraphics)(e.graphics):(0,g.emptyStudyGraphics)(),this._postProcessGraphics(),this._plotOffsets=null!==(i=e.plotOffsets)&&void 0!==i?i:{},this._setStatus({type:Xe.StudyStatusType.Completed},!0)}hasStateForAlert(){return!1}stateForAlert(){throw new Error("Not implemented")}hasBarColorer(){return(0,r.ensureNotNull)(this._metaInfo).plots.some(L.isBarColorerPlot)}disconnect(){this._studyId=null,this._model.isSnapshot()||(this._resolvedSymbols={},this._resolvedSymbolsByInput={})}isChildStudy(){return this._isChildStudy}hasChildren(){return this._children.length>0}isActualInterval(){return this._isActualInterval}onIsActualIntervalChange(){return this._onIsActualIntervalChange}isVisible(){if(this._model.collapsed().value()||!this.properties().visible.value()||!this.isActualInterval())return!1;const e=this.metaInfo();if(e.plots.length>0)return!0;for(const t of Object.keys(e.graphics))for(const i of Object.keys(e.graphics[t])){const e=this.properties().graphics[t][i];if(!e.visible||e.visible.value())return!0}return!(!e.isTVScriptStrategy&&!e.hasAlertFunction)}inputs(e){const t=(0,I.merge)((0,I.clone)(ht),e||{});return t.skipOptionalEmptySymbolInputs&&(t.keepOptionalSymbolsEmpty=!0),this._buildInputs(t)}metaInfo(){return this._metaInfo}status(){return this._status}name(e){return e?this.metaInfo().shortDescription||this._properties.shortDescription&&this._properties.shortDescription.value()||"Study":this.metaInfo().description||this._properties.description&&this._properties.description.value()||"Study"}title(e,t,i,s){i=void 0===i?!this._showStudyArgumentsProperty.value():i;const r=JSON.stringify([e,t,i,s]);if(this._titleStrCache[r])return this._titleStrCache[r] -;if(this._titleInPartsCache[r])return this._joinTitlesParts(this._titleInPartsCache[r]);const n=this._title(e,t,i,s);return this._titleStrCache[r]=n,n}titleInParts(e,t,i,s){i=void 0===i?!this._showStudyArgumentsProperty.value():i;const r=JSON.stringify([e,t,i,s]);if(this._titleInPartsCache[r])return this._titleInPartsCache[r];const n=this._titleInParts(e,t,i,s);return this._titleInPartsCache[r]=n,n}invalidateTitleCache(e){if(this._titleStrCache={},this._titleInPartsCache={},!0===e&&this._children)for(let t=0;tt.update(e)),this._labelPaneViews.forEach(t=>t.update(e)),null===(t=this._dataWindowView)||void 0===t||t.update(),null===(i=this._legendView)||void 0===i||i.update(),null===(s=this._statusView)||void 0===s||s.update(),this._priceAxisViews.forEach(t=>t.update(e)),this._priceLinesAxisViews.forEach(t=>t.update(e)),null===(r=this._inputsLinesPaneView)||void 0===r||r.update(e),null===(n=this._inputsAnchorsPaneView)||void 0===n||n.update(e), -this._inputsTimeAxisPaneViews.forEach(t=>t.update(e)),this._inputsPriceAxisPaneViews.forEach(t=>t.update(e))}isPine(){return void 0!==this._metaInfo.pine}isStandardPine(){return this.isPine()&&m().isStandardPine(this._metaInfo.id)}isLinkedToSeries(){return!0===this._metaInfo.linkedToSeries}defaultPlotIdForAlert(){return this._metaInfo.plots.length?this._metaInfo.plots[0].id:null}resolvedSymbolInfoBySymbol(e){return this._resolvedSymbols&&e&&this._resolvedSymbols[this._getSymbolForResolve(e)]||null}currency(){if(null!==this._currencySourceSymbolInfo)return(0,it.symbolCurrency)(this._currencySourceSymbolInfo);const e=this.metaInfo();return Boolean(e)&&e.is_price_study?this.parentSource().currency():null}currencySourceSymbolInfo(){var e,t,i;return null!==(e=this._currencySourceSymbolInfo)&&void 0!==e?e:null!==(i=null===(t=this.symbolSource())||void 0===t?void 0:t.symbolInfo())&&void 0!==i?i:null}unit(){const e=this.metaInfo();return Boolean(e)&&e.is_price_study?this.parentSource().unit():null}dataWindowView(){return this._dataWindowView}statusView(){return this._statusView}legendView(){return this._legendView}inputsForAlertState(){return this.inputs()}sessionId(){return this.parentSource().sessionId()}sessionIdChanged(){return this.parentSource().sessionIdChanged()}getSymbolString(e){return""===e?"":(0,C.encodeExtendedSymbolOrGetSimpleSymbolString)(this._getSymbolObject(e))}onStatusChanged(){return this._statusChanged}symbolsResolved(){return this._symbolsResolved}onHibernationStateChange(){return this._onHibernationStateChange}valuesProvider(){return new S.StudyLegendValuesProvider(this,this.model())}statusProvider(e){return new x.StudyStatusProvider(this,this._model.properties().childs().scalesProperties.childs().textColor)}correctScaleMargins(e){if("Volume"===this.metaInfo().shortId){const t=this.model().paneForSource(this);return null!==t&&t.isOverlay(this)&&t.containsMainSeries()?{top:.75,bottom:0}:{top:e.top,bottom:0}}return e}canBeHiddenByGlobalFlag(){return!0}isSourceHidden(){return!this.isVisible()||this.canBeHiddenByGlobalFlag()&&b.hideAllIndicators().value()}paneViews(e){if(this.isSourceHidden()||!e.hasPriceDataSource(this))return null;const t=[];return!this._startMovingPoint&&this._wasCompletedBefore&&t.push(...this._paneViews),this._inputsLinesPaneView&&(this._startMovingPoint||this._model.selection().isSelected(this))&&t.push(this._inputsLinesPaneView),this._inputsAnchorsPaneView&&t.push(this._inputsAnchorsPaneView),t}timeAxisViews(){return this._model.selection().isSelected(this)?this._inputsTimeAxisPaneViews:null}priceAxisViews(e,t){if(this.properties().oldShowLastValue&&!this.properties().oldShowLastValue.value())return null;let i=this._priceAxisViews.slice();return this._model.selection().isSelected(this)&&(i=i.concat(this._inputsPriceAxisPaneViews)),e.findTargetPriceAxisViews(this,t,i,this._priceLinesAxisViews)}movable(){return null!==this._inputsAnchorsPaneView}startMoving(e,t,i,s){this._startMovingPoint=e,this.stop()}move(e,t,i,s){if(void 0!==e.logical&&null!==this._startMovingPoint){ -if(Array.isArray(t)){const i=t;this._updateInputValue(e.logical,i[0]),this._updateInputValue(e.logical,i[1])}else this._updateInputValue(e.logical,t);this.updateAllViews((0,Qe.dataSourceChangeEvent)(this.id()))}}endMoving(e,t){return this._startMovingPoint=null,this.start(),{indexesChanged:!1,pricesChanged:!1}}clearData(){var e;this._invalidateLastNonEmptyPlotRowCache(),this.data().clear(),this._graphics instanceof g.LiveStudyGraphics&&(null===(e=this._graphics)||void 0===e||e.clear()),this._plotOffsets={},this.hasBarColorer()&&this._model.mainSeries().invalidateBarStylesCache(),this.updateAllViews((0,Qe.dataSourceChangeEvent)(this.id(),void 0,!0))}convertYCoordinateToPriceForMoving(e,t){const i=this.priceScale();if(!t||!i||i.isEmpty())return null;const s=t.firstValue();return null===s?null:i.coordinateToPrice(e,s)}processHibernate(e){const t=this.isVisible();if(!this.isStarted()&&t&&(this._isChildStudy&&(0,r.ensureNotNull)(this._source).processHibernate(),this.start(void 0,void 0,e),this._onHibernationStateChange.fire(!1)),this.isHibernationAllowed()&&this.isStarted()&&!t){for(const e of this._children)e.processHibernate();this.stop(void 0,e),this._onHibernationStateChange.fire(!0)}}isHibernationAllowed(){return!this.metaInfo().historyCalculationMayChange&&(!this.hasChildren()||!!this._model.collapsed().value()&&this._children.every(e=>e.isHibernationAllowed()))}recalculate(){const e=this._model.paneForSource(this);this._model.recalculatePane(e,(0,Qe.dataSourceChangeEvent)(this.id())),this._model.updateSource(this)}maxOffset(){return this._maxOffset}_transformData(e){}_updateMaxOffsetValue(){let e=-1/0;for(const t of this._metaInfo.plots)e=Math.max(this.offset(t.id),e);this._maxOffset.setValue(e)}_rightOffsetToUnixTime(e){if(this._series.bars().size()>=e){const t=(0,r.ensureNotNull)(this._series.bars().lastIndex())-e;return(0,r.ensureNotNull)(this._series.bars().valueAt(t))[0]}return null}_invalidateLastNonEmptyPlotRowCache(){this._lastNonEmptyPlotRowCache={}}_collectDepsForAlert(){throw new Error("Not implemented")}isHibernated(){return!this.isVisible()&&!this.isStarted()}_createViews(){var e,t;this._priceAxisViewsBase=[],this._priceLinesAxisViews=[],this._paneViews=[],this._labelPaneViews=[];const i=new Set,s=this.metaInfo(),n=Boolean(s.usePlotsZOrder),o=new Map;if(s.plots)for(let t=0;t{const i=this._properties.bands[t];if(i&&i.visible.value()){const t=new qe(i,this),s=n?(0,r.ensureDefined)(e.zorder):o.size;mt(s,o),o.set(s,{paneViews:[t]})}}),this._properties.bandsBackground&&((0,r.assert)(!n,"'usePlotsZOrder' flag does not supported"),o.set(o.size,{paneViews:[new Ke(this)]}));const a=this._paneViews;(0,g.createGraphicsPaneViews)(this,this.model()).then(e=>{for(let t=0;ts.plots.some(t=>(0,L.isColorerPlot)(t)&&t.target===e);if(this._properties.filledAreas&&s.filledAreas)for(let e=0;ee-t);for(let e=0;e0){const t=this.barColorer().firstColoredBar(e[0].index);this._model.mainSeries().invalidateBarStylesCache(t)}null!==t&&this._postProcessGraphics();const r=this._model.paneForSource(this);this._model.recalculatePane(r,(0,Qe.dataSourceChangeEvent)(this.id(),null!=s?s:void 0)),this._updateSources()}_updateSources(){this._model.updateSource(this),this.hasBarColorer()&&this._model.updateSource(this._model.mainSeries())}_titleInputs(e,t){return this.inputs(this._titleInputsOptions(e,t))}_titleInputsOptions(e,t){return{symbolsForDisplay:!0,skipHiddenInputs:!0,skipFakeInputs:!1,fakeInputsForDisplay:!0,asObject:!1,skippedGroups:[],noExchanges:e,noResolution:t,skipColorInputs:!0,skipTimeInputs:!0,priceInputsForDisplay:!0,skipOptionalEmptySymbolInputs:ut}}_subscribeToSessionId(){!this._isSubscribedToSessionId&&this.hasSymbolInputs()&&(this.sessionIdChanged().subscribe(this,this._onSessionIdChanged),this._isSubscribedToSessionId=!0)}_unsubscribeToSessionId(){this._isSubscribedToSessionId&&(this.sessionIdChanged().unsubscribe(this,this._onSessionIdChanged),this._isSubscribedToSessionId=!1)}_onSessionIdChanged(){this.restart(!0)}_title(e,t,i,s){const r=this._titleInParts(e,t,i,s);return this._joinTitlesParts(r)}_formatterByMetaInfo(){var e,t;const i=this.metaInfo().format;if("inherit"===i.type)return null;const s=this.series().symbolInfo(),r=(0,I.isNumber)(i.precision)?Math.pow(10,i.precision):void 0;{const s=null!==(t=null===(e=null===at.customFormatters||void 0===at.customFormatters?void 0:at.customFormatters.studyFormatterFactory)||void 0===e?void 0:e.call(at.customFormatters,i,this.symbolSource().symbolInfo()))&&void 0!==t?t:null;if(null!==s)return s}switch(i.type){case"price":return new rt.PriceFormatter(r);case"volume":{let e=i.precision;return void 0===e&&(e=s&&(0,I.isNumber)(s.volume_precision)?s.volume_precision:0),new nt.VolumeFormatter(e)}case"percent":return new ot.PercentageFormatter(r);default:return lt.logWarn("Unsupported format type: "+i.type),null}}_postProcessPriceRange(e){if(e&&e.minValue()===e.maxValue()&&!this.metaInfo().is_price_study){const t=.005*e.minValue();e=new u.PriceRange(e.minValue()-t,e.maxValue()+t)}const t=this.priceScale() -;return t&&t.isLog()&&e?new u.PriceRange(t.priceToLogical(e.minValue()),t.priceToLogical(e.maxValue())):e}_joinTitlesParts(e){const t=e[1]?e[1].join(", "):"";return e[0]+(t.length>0?" ("+t+")":"")}_titleInParts(e,t,i,s){var r;const o=this.name(e);t=t||{};const a=[(0,n.t)(o,{context:"study"})];let l=[];if(!i){const i=this._getMTFResolutionInputTitle();null!==i&&i.length>0&&a.push(i);const n=this.metaInfo(),o=this._titleInputs(s,!0)||[];if(o.length>0){const i={};if(this._isChildStudy)for(let t=0;t=0&&this._source){const t=this._source.metaInfo(),n=this._source.title(e,{},!0,s);if(1===t.plots.length)i[l]=n;else{const e=l.split("$")[1],s=null===(r=t.plots[parseInt(e)])||void 0===r?void 0:r.id,o=t.styles&&t.styles[s],a=o&&o.title||s;i[l]=n+": "+a}}break}l=o.map(e=>{let s=(0,I.isNumber)(e)?this._numericFormatter.format(e):i&&i[e.toString()]||e.toString();return t&&t[s.toString()]&&(s=t[s.toString()]),s})}}return[a.join(" · "),l]}_getMTFResolutionInputTitle(){const e=this.metaInfo();for(let t=0;t"line"===e.type)}_hasAlertConditions(){if(this.metaInfo().plots.some(L.isAlertConditionPlot))return!0;const e=this.stateForAlert();return Boolean(e.alerts&&e.alerts.conditions)}_hasAlertFunction(){const e=this.metaInfo();return Boolean(e.hasAlertFunction)}_onDataUpdate(e,t){this._studyModified&&(this.clearData(),this._studyModified=!1);const i=(0,h.unpackNonSeriesData)(t.d);return this._ongoingDataUpdate=this._ongoingDataUpdate.then(()=>i,()=>i).then(this._onDataUnpacked.bind(this,e,t.indexes)),this._ongoingDataUpdate}_mergeData(e){var t,i;return this._invalidateLastNonEmptyPlotRowCache(),null!==(i=null===(t=this.data().merge(e))||void 0===t?void 0:t.index)&&void 0!==i?i:null}_getSymbolForResolve(e){return this.getSymbolString(this._getSymbolForApi(e))}_allSymbolsAreResolved(){const e=this.metaInfo(),t=[];let i=!1;for(let s=0;sthis._symbolsResolved.fire()):e}return Promise.all(t).catch(e=>(this._setStatus({type:Xe.StudyStatusType.Error,errorDescription:{error:ct}}),this.stop(!0),this._model.updateSource(this),Promise.reject("Invalid symbol, "+e))).then(()=>{null!==this._studyId&&this.stop(!0),this.start(!0),this._symbolsResolved.fire(),this._recheckLineToolsActuality()})}_getSymbolForApi(e){return e}_resolveSymbol(e,t){if(""===e)return Promise.resolve();let i=this._pendingResolveSymbols.get(e);return void 0!==i||(i=new Promise((i,s)=>{ -this._onSymbolResolvingStart(),this._chartApi.resolveSymbol((0,P.makeNextSymbolId)(),e,r=>{switch(this._pendingResolveSymbols.delete(e),r.method){case"symbol_resolved":this._setStatus({type:Xe.StudyStatusType.Undefined}),this._resolvedSymbols[e]=r.params[1],this._resolvedSymbolsByInput[t]=r.params[1],this._onSymbolResolved(e,t,r.params[1]),this.invalidateTitleCache(!0),i();break;case"symbol_error":if(this._setStatus({type:Xe.StudyStatusType.Error,errorDescription:{error:r.params[1]}}),this._onSymbolError(),r.params[1]===T.permissionDenied&&r.params[2])switch(r.params[2]){case T.SymbolErrorPermissionDeniedReason.Symbol:if(r.params[3])return void this._resolveSymbol(r.params[3],t).then(i);break;default:return void this._resolveSymbol(r.params[2],t).then(i)}0,s()}})}),this._pendingResolveSymbols.set(e,i)),i}_recheckLineToolsActuality(){const e=this._model.paneForSource(this);null!==e&&e.sourcesByGroup().lineSourcesForAllSymbols().forEach(e=>{e.ownerSource()===this&&e.calcIsActualSymbol()})}_getSymbolObject(e){const t={symbol:e},i=this.currency();return null!==this._currencySourceSymbolInputProperty&&null!==this._currencySourceSymbolInfo&&this._getSymbolForApi(this._currencySourceSymbolInputProperty.value())===e&&(t["currency-id"]=i),t.session=this.sessionId(),t}_onSymbolResolved(e,t,i){this._onCurrencyMayChange()}_onSymbolResolvingStart(){}_onSymbolError(){}_setStatus(e,t){var i;this._status=e,e.type===Xe.StudyStatusType.Completed?this._wasCompletedBefore=!0:e.type!==Xe.StudyStatusType.Error&&e.type!==Xe.StudyStatusType.Undefined||(this._wasCompletedBefore=!1),t||(null===(i=this._statusView)||void 0===i||i.update(),this._model.updateSource(this),this._statusChanged.fire(e))}_bandsFirstValue(e){const t=this._metaInfo;if(!t.bands)return null;for(let i=0;ivoid 0!==i[e],1e3),null===i?null:(this._lastNonEmptyPlotRowCache[e]=i,i)}_onCurrencyChanged(){"alwaysOff"!==(0,st.currencyUnitVisibilityProperty)().value()&&this._model.fullUpdate(),this.isStarted()&&this._tryChangeInputs(),this._currencyChanged.fire()}_tryChangeInputs(){const e=(0,r.ensureDefined)((0,I.clone)(this._inputs));this.isStarted()&&this._chartApi.isConnected().value()?this._allInputsAreValid()?this._allSymbolsAreResolved().then(()=>{const t=this.inputs({keepOptionalSymbolsEmpty:!0}),i=JSON.stringify(t)!==JSON.stringify(this._inputs);this._isStopped()?i&&this.disablePriceRangeReady():i&&(this._changeInputsImpl(t,e),this._inputs=t)}).catch(e=>{lt.logError("ERROR: "+this._debugId()+" _tryChangeInputs: cannot modify study, "+e)}):this.stop():(this.stop(!0),this.start(!0)),this._tagsChanged.fire()}_debugId(){const e=[];return this._studyId&&e.push(this._studyId),e.push(this._metaInfo.fullId),e.push(this._metaInfo.description),JSON.stringify({study:e})}_onCurrencyMayChange(){if(null!==this._currencySourceSymbolInputProperty){const e=this.currency();this._updateCurrencySourceSymbolInfo(),e!==this.currency()&&this._onCurrencyChanged()}}_isStopped(){return!this.isStarted()}_onDataUnpacked(e,t,i){if(this._isDestroyed)return;"nochange"!==t&&this._processPlotOffsets(i),this._transformData(e);const s=this._mergeData(e);null!==i&&(i.indexes_replace?((0,r.assert)("nochange"!==t),this._graphics.replaceIndexesTo(t)):("nochange"!==t&&this._graphics.replaceIndexesTo(t),void 0!==i.graphicsCmds&&this._graphics.processCommands(i.graphicsCmds,this._metaInfo.graphics))),this._onDataUpdated(e,i,t,s),this.priceRangeReady()||this._enablePriceRangeReady()}_processPlotOffsets(e){if(e&&e.indexes_replace)return;const t=this._plotOffsets;this._plotOffsets=e&&e.offsets||{},(0,s.default)(t,this._plotOffsets)||this.updateAllViews((0,Qe.dataSourceChangeEvent)(this.id(),void 0,!0)),this._updateMaxOffsetValue()}_applyPlotToPrecalculatedAutoscaleInfo(e,t,i,s){const r=s.id,n=this.properties().styles[r],o=(0,L.isShapesPlot)(s)||(0,L.isCharsPlot)(s);i.useMainSeriesRange=i.useMainSeriesRange||(0,L.isArrowsPlot)(s);let a=(0,L.isLinePlot)(s)||(0,L.isOhlcPlot)(s);if(o){const e=n.location.value(),t=[f.MarkLocation.Absolute,f.MarkLocation.Top,f.MarkLocation.Bottom].indexOf(e)<0;i.useMainSeriesRange=i.useMainSeriesRange||o&&t,a=a||e===f.MarkLocation.Absolute}if(!a)return i;const l={name:r,offset:this.offset(r)},c=n.plottype.value();if(!this.properties().skipHistogramBaseOnAutoScale&&[L.LineStudyPlotStyle.Histogram,L.LineStudyPlotStyle.Columns,L.LineStudyPlotStyle.Area].indexOf(c)>=0){const s=n.histogramBase.value(),r=this.data().minMaxOnRangeCached(e,t,[l]);return(0,I.isNumber)(s)&&null!==r&&(i.baseValueMinMax=(0,p.mergeMinMax)(i.baseValueMinMax,{min:s,max:s}),i.baseValueMinMax=(0,p.mergeMinMax)(i.baseValueMinMax,r)),i} -return i.fields.push(l),i}_fillPrecalculatedAutoscaleInfo(e,t){return this._metaInfo.plots.filter(e=>!(0,L.isPlotWithTechnicalValues)(e)).filter(e=>{const t=e.id;let i;if((0,L.isOhlcPlot)(e)){const t=e.target;i=this.properties().ohlcPlots[t]}else i=this.properties().styles[t];return i.visible.value()}).reduce((i,s)=>this._applyPlotToPrecalculatedAutoscaleInfo(e,t,i,s),{fields:[],useMainSeriesRange:!1,baseValueMinMax:null})}_buildInputs(e){(0,r.assert)(!!e,"options not set");let t={};try{t=this._prepareInputs(e)}catch(e){lt.logWarn("Failed to prepare study inputs: "+e)}if(e.asObject){const e={};return Object.keys(t).forEach(i=>{null!=t[i]&&(e[i]=t[i])}),e}{const e=[];return Object.keys(t).forEach(i=>{null!=t[i]&&e.push(t[i])}),e}}_prepareInput(e,t){const i=this._prepareInputValue(e,t);return!e.isFake||t.fakeInputsForDisplay||t.onlyAtomValues?i:{v:i,f:!0,t:e.type}}_plotsForAlert(){return[]}_dependenciesForAlerts(){throw new Error("Not implemented")}_calcIsActualInterval(){const e=this._isActualInterval;this._isActualInterval=(0,Ze.isActualInterval)(this._series.intervalObj(),this.properties().intervalsVisibilities),e!==this._isActualInterval&&(this._onIsActualIntervalChange.fire(),this._visibleChanged(),this.processHibernate())}_visibleChanged(){this._series.invalidateBarColorerCache()}_getNonPriceParent(){const e=this.source();if(e instanceof gt){const t=e.metaInfo();return t.is_price_study&&"Compare@tv-basicstudies"!==t.id?e._getNonPriceParent():e}return null}_updateInputValue(e,t){const i=this._properties.inputs;if(i[t.id])if("price"===t.type)i[t.id].setValue(e.price);else if("time"===t.type){const s=this._model.timeScale().indexToTimePoint(e.index);null!==s&&i[t.id].setValue(1e3*s)}}_initializeStudyInputsPaneViews(){}_updateCurrencySourceSymbolInfo(){var e;null!==this._currencySourceSymbolInputProperty&&(this._currencySourceSymbolInfo=null!==(e=this._resolvedSymbolsByInput[this._currencySourceSymbolInputProperty.value()])&&void 0!==e?e:null)}_initializeCurrencySource(){var e,t;const i=this.metaInfo(),s="symbolInputSymbolSource"===(null===(e=i.symbolSource)||void 0===e?void 0:e.type)&&(null===(t=i.symbolSource)||void 0===t?void 0:t.inputId),r=i.inputs.find(e=>e.id===s),n="symbol"===(null==r?void 0:r.type);if("string"==typeof s&&n&&i.is_price_study){const e=this._properties.inputs[s];null!=e&&(e.subscribe(this,this._onCurrencyMayChange),this._currencySourceSymbolInputProperty=e)}}}},55153:(e,t,i)=>{"use strict";i.d(t,{StudyCompare:()=>N});var s=i(88537),r=i(8175),n=i(66101),o=i(37667),a=i(2015),l=i.n(a),c=i(67337),h=i(3825),d=i(97938),u=i(74477);const p=c.enabled("force_exchange_as_title");class _ extends d.PriceAxisView{constructor(e,t){super(),this._studyCompare=e,this._data=t}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const s=this._studyCompare.priceScale(),r=this._studyCompare.lastValueData(this._data.plotIndex,!1);if(r.noData||null===s||s.isEmpty())return;i.background=r.color,i.textColor=this.generateTextColor(r.color),i.coordinate=r.coordinate,i.floatCoordinate=r.floatCoordinate -;const n=this._studyCompare.model().properties().childs().scalesProperties.childs();n.showSeriesLastValue.value()&&(e.text=(0,u.getCurrentModePriceText)(s,r),n.seriesLastValueMode.value()!==h.PriceAxisLastValueMode.LastPriceAndPercentageValue?e.secondLine="":e.secondLine=(0,u.getOppositeModePriceText)(s,r),e.visible=!0),t.text="",n.showSymbolLabels.value()&&(t.text=this._paneText(),t.visible=t.text.length>0)}_paneText(){let e="";const t=this._studyCompare.symbolInfo();return p?e=(0,o.displayedSymbolExchange)(t):this._studyCompare.model().properties().childs().scalesProperties.childs().showSymbolLabels.value()&&(e=(0,o.displayedSymbolName)(t)),e}}i(28353);var m=i(26179),g=i(44601),f=i(85733),v=i(49483),S=i(80643),y=i(89027);class b extends y.StudyValuesProvider{constructor(e,t){super(e,t),this._emptyValues[0].title=e.guiPlotName("")}_hideValues(){return!1}}const w=v.CheckMobile.any();class C extends m.StudyDataWindowView{constructor(e,t){super(e,t),this._studyCompare=e}_hideValues(){return!1}_createValuesProvider(e,t){return new b(e,t)}_currentIndex(){const e=this._model.crossHairSource().lockedIndex;let t;return w&&(null===this._model.crossHairSource().pane&&void 0===e||(0,g.isLineToolName)(f.tool.value())||null!==this._model.lineBeingEdited())?t=this._study.data().lastIndex():(t=this._model.crossHairSource().appliedIndex(),(0,S.isNumber)(t)||(t=this._study.data().lastIndex())),t}}class P extends C{constructor(e,t){super(e,t),this._additional=null,this._showSeriesOHLC=t.properties().childs().paneProperties.childs().legendProperties.childs().showSeriesOHLC,this._showSeriesOHLC.subscribe(this,this.update)}areValuesVisible(){return this._showSeriesOHLC.value()}destroy(){this._showSeriesOHLC.unsubscribeAll(this)}additional(){return this._additional}_updateImpl(){super._updateImpl()}}var T=i(190),x=i(40529);class I extends x.StudyStatusProvider{getSplitTitle(){return this._source.titleInParts(!0,void 0,!1,!1)}text(){return this._source.isActualInterval()?this._source.isFailed()?`${this._source.title(!0,void 0,!1,!1)}: ${this.sourceStatusText()}`:`${this._source.title(!0,void 0,!1,!1)} ${this.sourceStatusText()}`:this._source.title(!0,void 0,!1,!1)}}var M=i(14791),L=i(52714),A=i.n(L);const E=c.enabled("study_overlay_compare_legend_option"),k=c.enabled("force_exchange_as_title"),D=c.enabled("uppercase_instrument_names"),V=!c.enabled("hide_study_compare_legend_item"),B=c.enabled("hide_unresolved_symbols_in_legend");class N extends n.Study{constructor(e,t,i,s){super(e,function(e){return e.hasChild("currencyId")||e.addChild("currencyId",new(l())(null)),e.hasChild("unitId")||e.addChild("unitId",new(l())(null)),e.addExclusion("currencyId"),e.addExclusion("unitId"),e}(t),i,s),this._isActingAsSymbolSource=new(A())(!0),this._realignToolsLastParams=null,this.properties().childs().minTick.subscribe(null,()=>this._recreatePriceFormattingDependencies()),this.properties().childs().minTick.subscribe(null,()=>this._model.fullUpdate()),this.properties().childs().currencyId.subscribe(this,this._onCurrencyChanged), -this.properties().childs().unitId.subscribe(this,this._onUnitChanged),this.properties().merge({skipHistogramBaseOnAutoScale:!0}),this._symbolResolvingActive=new(A())(!1),this._symbolHibernated=new(A())(!1),e.mainSeries().onIntervalChanged().subscribe(this,()=>e.realignLineTools(this))}destroy(){this._model.mainSeries().onIntervalChanged().unsubscribeAll(this),super.destroy()}properties(){return super.properties()}isActingAsSymbolSource(){return this._isActingAsSymbolSource.readonly()}createPriceAxisView(e){return new _(this,{plotIndex:"compare"})}setSymbolParams(e){this._setSymbolCurrencyUnitInternal(e)}symbol(){return this._properties.inputs.symbol.value()}setSymbol(e){this.setSymbolParams({symbol:e})}symbolInfo(){if(!this._resolvedSymbols)return null;const e=this._properties.inputs.symbol.value();if(!e)return null;let t;return t=this._resolvedSymbols[this._getSymbolForResolve(e)]||null,t}symbolResolved(){return this.symbolsResolved()}symbolResolvingActive(){return this._symbolResolvingActive}symbolHibernated(){return this._symbolHibernated}isVisible(){const e=super.isVisible();return this._symbolHibernated.setValue(!e),e}symbolSameAsCurrent(e){return(0,M.symbolSameAsCurrent)(e,this.symbol(),this.symbolInfo())}currency(){return this._properties.currencyId.value()||null}setCurrency(e){this.setSymbolParams({currency:e})}isConvertedToOtherCurrency(){return(0,o.isConvertedToOtherCurrency)(this.symbolInfo())}unit(){return this._properties.unitId.value()||null}setUnit(e){this.setSymbolParams({unit:e})}isConvertedToOtherUnit(){return(0,o.isConvertedToOtherUnit)(this.symbolInfo(),this._model.unitConversionEnabled())}style(){return 2}setStyle(e){}interval(){return this._model.mainSeries().interval()}setInterval(e){}symbolSource(){return this}state(e,t){const i=super.state(e,t);return this._model.unitConversionEnabled()||delete i.state.unitId,e&&((0,s.ensureDefined)(i.data).symbols={___snapshot:this.symbolInfo()||void 0}),i}symbolTitle(e,t){return this.title(!0,{},!1,e)}titleInParts(e,t,i,s){const r=this._titleInParts(e,t,i,s).join(", ");return[D?r.toUpperCase():r]}tags(){const e=this.symbol();return e?[e]:[]}statusView(){return V?super.statusView():null}guiPlotName(e){return this.properties().childs().inputs.childs().symbol.value()}canOverrideMinTick(){return!0}canBeHiddenByGlobalFlag(){return!1}valuesProvider(){return new b(this,this.model())}statusProvider(e){return new I(this,this._model.properties().childs().scalesProperties.childs().textColor)}_createViews(){this._legendView||(this._legendView=new P(this,this._model)),this._dataWindowView||(this._dataWindowView=new C(this,this._model)),this._statusView||(this._statusView=new T.StudyStatusView(this)),super._createViews()}_showLastValueOnPriceScale(){return this._model.properties().childs().scalesProperties.childs().showSeriesLastValue.value()}_onUnitChanged(){"alwaysOff"!==(0,r.currencyUnitVisibilityProperty)().value()&&this._model.fullUpdate(),this._model.unitConversionEnabled()&&this.isStarted()&&this._tryChangeInputs(),this._unitChanged.fire()}_getSymbolObject(e){ -const t=super._getSymbolObject(e),i=this.currency();null!==i&&(t["currency-id"]=i);const s=this.unit();return this._model.unitConversionEnabled()&&null!==s&&(t["unit-id"]=s),t}_getSymbolForApi(e){return(0,o.symbolForApi)(this._resolvedSymbolsByInput[e]||null,e)}_onSymbolResolvingStart(){super._onSymbolResolvingStart(),this._symbolResolvingActive.setValue(!0)}_onSymbolError(){super._onSymbolError(),this._symbolResolvingActive.setValue(!1)}_onSymbolResolved(e,t,i){super._onSymbolResolved(e,t,i),this._recreatePriceFormattingDependencies();const s=t===this.symbol()?(0,o.extractSymbolNameFromSymbolInfo)(i,this.symbol()):null,r=(0,o.symbolCurrency)(i),n=(0,o.symbolUnit)(i,this._model.unitConversionEnabled());this._setSymbolCurrencyUnitInternal({symbol:null!=s?s:void 0,currency:r,unit:n},i),this._symbolResolvingActive.setValue(!1)}_changeInputsImpl(e,t){super._changeInputsImpl(e,t),this._realignLineToolsIfParamsChanged()}_createStudyOnServer(){super._createStudyOnServer(),this._realignLineToolsIfParamsChanged()}_tryCreateFormatter(){const e=this.symbolInfo();return(0,o.createSeriesFormatter)(e,this.properties().childs().minTick.value())}_titleInParts(e,t,i,s){const r=this.symbolInfo();let n;if(r){const e=(0,o.getStudySymbolExchange)(r);if(k&&e)n=e;else if(n=r.name,E)switch(this._model.mainSeries().symbolTextSourceProxyProperty().value()){case"description":n=r.description;break;case"ticker-and-description":n=`${r.name}, ${r.description}`}else if(e&&!s)return[n,[e]]}else n=B?"":this.properties().childs().inputs.childs().symbol.value();return[n]}_setSymbolCurrencyUnitInternal(e,t){const{symbol:i,currency:s,unit:r}=e,n=this.properties().childs(),a=n.inputs.childs().symbol.value(),l=n.currencyId.value(),c=n.unitId.value();if(void 0!==i&&i!==a&&n.inputs.childs().symbol.setValueSilently(i),void 0!==s&&s!==l&&n.currencyId.setValueSilently(s),void 0!==r&&r!==c&&n.unitId.setValueSilently(r),t)this._resolvedSymbolsByInput[this.symbol()]=t,this._resolvedSymbols[this._getSymbolForResolve(this.symbol())]=t,this._realignToolsLastParams=null;else{const e=this.symbolInfo();null!==e&&(n.currencyId.setValueSilently((0,o.symbolCurrency)(e)),n.unitId.setValueSilently((0,o.symbolUnit)(e,this._model.unitConversionEnabled())))}n.inputs.childs().symbol.value()!==a&&n.inputs.childs().symbol.listeners().fire(n.inputs.childs().symbol),n.currencyId.value()!==l&&n.currencyId.listeners().fire(n.currencyId),n.unitId.value()!==c&&n.unitId.listeners().fire(n.unitId),this._realignLineToolsIfParamsChanged()}_realignLineToolsIfParamsChanged(){const e=this.symbol(),t=this.interval(),i=this.currency(),s=this.unit();null!==this._realignToolsLastParams&&this._realignToolsLastParams.symbol===e&&this._realignToolsLastParams.interval===t&&this._realignToolsLastParams.currency===i&&this._realignToolsLastParams.unit===s||(this._model.realignLineTools(this),this._realignToolsLastParams={symbol:e,interval:t,currency:i,unit:s})}}},82927:(e,t,i)=>{"use strict";i.d(t,{StudyOverlayBase:()=>le}) -;var s=i(88537),r=i(49483),n=i(98125),o=i(66101),a=i(8175),l=i(63948),c=i(37667),h=i(2015),d=i.n(h),u=i(19234),p=i(67337),_=i(90810),m=i(14791),g=i(59100),f=i(9315),v=i(71053),S=i(80643),y=i(69927),b=i(52714),w=i.n(b),C=i(33291),P=i(190),T=i(42169),x=i(97938),I=i(3825),M=i(74477);const L=p.enabled("force_exchange_as_title");class A extends x.PriceAxisView{constructor(e){super(),this._source=e}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const s=this._source.lastValueData("close",!1);if(s.noData)return;const r=this._source.model(),n=this._source.priceScale();if(null===n)return;if(!r.isPriceScaleVisible(n))return;i.background=s.color,i.textColor=this.generateTextColor(s.color),i.coordinate=s.coordinate,i.floatCoordinate=s.floatCoordinate;const o=this._source.model().properties().childs().scalesProperties.childs();o.showSeriesLastValue.value()&&(e.text=(0,M.getCurrentModePriceText)(n,s),o.seriesLastValueMode.value()!==I.PriceAxisLastValueMode.LastPriceAndPercentageValue?e.secondLine="":e.secondLine=(0,M.getOppositeModePriceText)(n,s),e.visible=!0),t.text="",o.showSymbolLabels.value()&&(t.text=this._paneText(),t.visible=t.text.length>0)}_paneText(){let e="";const t=this._source.symbolInfo();return L?e=(0,c.displayedSymbolExchange)(t):this._source.model().properties().childs().scalesProperties.childs().showSymbolLabels.value()&&(e=(0,c.displayedSymbolName)(t)),e}}var E=i(55057);class k extends E.PriceLineAxisView{constructor(e){super(),this._study=e}_value(){return this._study.lastValueData("",!0)}_priceLineColor(e){return e}_lineWidth(){return 1}_isVisible(){const e=this._study.model().properties().childs().scalesProperties.childs().showSeriesLastValue.value();return this._study.properties().childs().showPriceLine.value()&&e}}var D=i(43891),V=i(40254);class B{constructor(e){this._lineRenderer=new V.HorizontalLineRenderer,this._visible=!1,this._source=e}update(){if(this._visible=!1,!this._source.properties().childs().showPriceLine.value())return;const e=this._source.lastValueData("",!0);e.noData||(this._visible=!0,this._lineRenderer.setData({y:e.coordinate,color:e.color,linewidth:1,linestyle:D.LINESTYLE_DOTTED,visible:this._visible}))}renderer(){return this._visible?this._lineRenderer:null}}var N=i(93751),R=i(14445),O=i(44601),F=i(85733),W=i(22458);const H=r.CheckMobile.any();class z extends R.DataWindowView{constructor(e,t){super(),this._invalidated=!0,this._study=e,this._model=t,this._valueProvider=this._createValuesProvider(e,t),this._items=this._valueProvider.getItems().map(e=>new R.DataWindowItem(e.title,"")),this.update()}items(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._items}update(){this._invalidated=!0}study(){return this._study}_updateImpl(){this._header=this._study.title();let e;this._showLastPriceAndChangeOnly()?e=this._study.data().lastIndex():(e=this._model.crossHairSource().appliedIndex(),(0,N.isNumber)(e)||(e=this._study.data().lastIndex()));const t=this._valueProvider.getValues(e);for(let e=0;ee||t,i.showBarChange,i.showSeriesOHLC),this._visibilityProperty.subscribe(this,this.update)}areValuesVisible(){return this._visibilityProperty.value()}additional(){return this._additional}destroy(){this._backgroundColorSpawn.destroy(),this._visibilityProperty.destroy()}_updateImpl(){super._updateImpl()}_createValuesProvider(e,t){return new U.OverlayLegendValuesProvider(e,t)}}var q=i(28978),Y=i(66919),K=i(85224),$=i(33837),X=i(34041),Z=i(35251),J=i(30076),Q=i(59153);const ee=r.CheckMobile.any()&&!1,te=p.enabled("uppercase_instrument_names"),ie=p.enabled("study_overlay_compare_legend_option"),se=p.enabled("secondary_series_extend_time_scale"),re=p.enabled("hide_unresolved_symbols_in_legend"),ne=!p.enabled("hide_study_overlay_legend_item"),oe=(0,n.getLogger)("Chart.StudyOverlay");function ae(e,t){return null==e[t]}class le extends o.Study{constructor(e,t,i,s){super(e,function(e){return e.hasChild("currencyId")||e.addChild("currencyId",new(d())(null)),e.hasChild("unitId")||e.addChild("unitId",new(d())(null)),e.addExclusion("currencyId"),e.addExclusion("unitId"),e}(t),i,s),this._quotesProvider=new _.QuotesProvider,this._seriesSource=null,this._symbolResolvingActive=new(w())(!1),this._symbolHibernated=new(w())(!1),this._styleToRecover=null,this._isActingAsSymbolSource=new(w())(!0),this._realignToolsLastParams=null,this.m_data=new v.PlotList((0,l.seriesPlotFunctionMap)(),ae),ee&&this._quotesProvider.quotesUpdate().subscribe(this,this._onQuotesUpdate);const r=this.properties().childs();r.currencyId.subscribe(this,this._onCurrencyChanged),r.unitId.subscribe(this,this._onUnitChanged),r.allowExtendTimeScale.subscribe(this,this._onAllowExtendTimeScaleChanged),this._onAllowExtendTimeScaleChanged(),r.style.subscribe(this,this._onChartStyleChanged),r.lineStyle.childs().priceSource.subscribe(this,this._updateBarFunction),r.areaStyle.childs().priceSource.subscribe(this,this._updateBarFunction),r.baselineStyle.childs().priceSource.subscribe(this,this._updateBarFunction),r.columnStyle.childs().priceSource.subscribe(this,this._updateBarFunction),this._updateBarFunction(),this._formatter=null,e.mainSeries().onIntervalChanged().subscribe(this,()=>e.realignLineTools(this))}destroy(){this._model.mainSeries().onIntervalChanged().unsubscribeAll(this),super.destroy()}isActingAsSymbolSource(){return this._isActingAsSymbolSource.readonly()}properties(){return this._properties}setSymbolParams(e){ -this._setSymbolParamsInternal(e)}symbol(){return this.properties().childs().inputs.childs().symbol.value()}setSymbol(e){this.setSymbolParams({symbol:e})}symbolInfo(){if(!this._resolvedSymbols)return null;const e=this._properties.inputs.symbol.value();if(!e)return null;let t;return t=this._resolvedSymbols[this._getSymbolForResolve(e)]||null,t}supportsPressedChunks(){return!1}pressedChunks(e,t){throw new Error("Pressed chunks are not supported")}data(){return null===this._seriesSource?super.data():this._seriesSource.data().bars()}symbolResolved(){return this.symbolsResolved()}symbolResolvingActive(){return this._symbolResolvingActive}symbolHibernated(){return this._symbolHibernated}isVisible(){const e=super.isVisible();return this._symbolHibernated.setValue(!e),e}symbolSameAsCurrent(e){return(0,m.symbolSameAsCurrent)(e,this.symbol(),this.symbolInfo())}priceSource(){switch(this._properties.style.value()){case 2:return this._properties.lineStyle.priceSource.value();case 3:return this._properties.areaStyle.priceSource.value();case 10:return this._properties.baselineStyle.priceSource.value();case 13:return this._properties.columnStyle.priceSource.value()}return null}barFunction(){return this._barFunction}quotes(){return this._quotesProvider.quotes()}currency(){return this._properties.currencyId.value()||null}setCurrency(e){this.setSymbolParams({currency:e})}isConvertedToOtherCurrency(){return(0,c.isConvertedToOtherCurrency)(this.symbolInfo())}unit(){return this._properties.unitId.value()||null}setUnit(e){this.setSymbolParams({unit:e})}isConvertedToOtherUnit(){return(0,c.isConvertedToOtherUnit)(this.symbolInfo(),this._model.unitConversionEnabled())}style(){return this.properties().childs().style.value()}setStyle(e){this.setSymbolParams({style:e})}interval(){return this._model.mainSeries().interval()}setInterval(e){}symbolSource(){return this}state(e,t){const i=super.state(e,t);return this._model.unitConversionEnabled()||delete i.state.unitId,e&&((0,s.ensureDefined)(i.data).symbols={___snapshot:this.symbolInfo()||void 0}),i}symbolTitle(e,t){return this.title(!0,{},!1,e)}title(e,t,i,s){const r=this._titleInParts(e,t,i,s).join(", ");return te?r.toUpperCase():r}titleInParts(e,t,i,s){const r=this._titleInParts(e,t,i,s).join(", ");return[te?r.toUpperCase():r]}isStarted(){return null===this._seriesSource?super.isStarted():this._seriesSource.isStarted()}sourceId(){return null===this._seriesSource?super.sourceId():(0,s.ensureNotNull)(this._seriesSource.instanceId())}moveData(e){null===this._seriesSource?super.moveData(e):this._seriesSource.moveData(e)}firstValue(){const e=this._model.timeScale().visibleBarsStrictRange();if(null===e)return null;const t=e.firstBar();if(0===this.data().size())return this._ownFirstValue;const i=this.data().search(t,v.PlotRowSearchMode.NearestRight,1);return this._ownFirstValue=null!==i?this._barFunction(i.value):null,this._ownFirstValue}lastValueData(e,t,i){const s={noData:!0},r=this.priceScale();if(this._model.timeScale().isEmpty()||null===r||r.isEmpty()||this.data().isEmpty())return s -;const n=this._model.timeScale().visibleBarsStrictRange();if(null===n)return s;const o=this.properties().childs();if(!o.visible.value())return s;const a=this.nearestIndex(n.lastBar(),v.PlotRowSearchMode.NearestLeft,1);if(void 0===a)return s;const l=this.firstValue();if(null===l)return s;const c=this._lastNonEmptyPlotRow(4),h=null!==c&&n.contains(c.index),d=null!==c?c.value:null,u=t||h?d:this.data().valueAt(a);if(null===u)return s;const p=this._barFunction(u);if(!(0,S.isNumber)(p))return s;const _=r.priceToCoordinate(p,l);let m;switch(o.style.value()){case 0:m=u[1]<=u[4]?o.barStyle.childs().upColor.value():o.barStyle.childs().downColor.value();break;case 1:case 9:m=u[1]<=u[4]?o.candleStyle.childs().upColor.value():o.candleStyle.childs().downColor.value();break;case 13:m=u[1]<=u[4]?o.columnStyle.childs().upColor.value():o.columnStyle.childs().downColor.value();break;case 2:m=o.lineStyle.childs().color.value();break;case 3:m=o.areaStyle.childs().color1.value();break;case 10:{const e=o.baselineStyle.childs();m=_(0,s.ensureNotNull)(this.priceScale()).height(),color:()=>e.baselineColor.value(),baseLevelPercentage:()=>e.baseLevelPercentage.value()});break}}r&&this._paneViews.push(r),null!==i&&this._paneViews.push(i),this._paneViews.push(new B(this)),this._dataWindowView||(this._dataWindowView=new z(this,this._model)),this._legendView||(this._legendView=new G(this,this._model)),this._statusView||(this._statusView=new P.StudyStatusView(this)),this._priceAxisViews=[...this._priceAxisViewsBase],this._labelPaneViews.push(new q.PanePriceAxisView(e,this,this._model))}_createStudyOnServer(){null===this._seriesSource?super._createStudyOnServer():this._modifyStudyOnServer((0,s.ensureDefined)(this._inputs)),this._realignLineToolsIfParamsChanged()}_modifyStudyOnServer(e){null===this._seriesSource?super._modifyStudyOnServer(e):(this._seriesSource.modifySeries((0,u.decodeExtendedSymbol)(e.symbol),(0, -f.getServerInterval)(this._series.properties().childs().interval.value())),this._seriesSource.isStarted()||this._seriesSource.start())}_stopStudyOnServer(){null===this._seriesSource?super._stopStudyOnServer():this._seriesSource.stop()}_titleInParts(e,t,i,s){const r=this.symbolInfo();let n;if(r){if(n=r.name,ie)switch(this._model.mainSeries().symbolTextSourceProxyProperty().value()){case"description":n=r.description;break;case"ticker-and-description":n=`${r.name}, ${r.description}`}const e=!s&&(0,c.getStudySymbolExchange)(r);if(e)return[n,[e]]}else n=re?"":this.properties().childs().inputs.childs().symbol.value();return[n]}_onAllowExtendTimeScaleChanged(){const e=this.isStarted();if(e&&this.stop(!0),se&&this.properties().childs().allowExtendTimeScale.value()){this._seriesSource=new g.SeriesDataSource(this._model.chartApi(),"st_o_");const e=this._seriesSource.dataEvents();e.seriesError().subscribe(this,e=>{this._onStudyError(this._convertSeriesErrorToStudy(e))}),e.loading().subscribe(this,this._onStudyLoading),e.completed().subscribe(this,(e,t)=>{this._onStudyCompleted(t)}),e.dataUpdated().subscribe(this,()=>{this._studyModified=!1;const e=this._model.paneForSource(this);this._model.recalculatePane(e,(0,C.dataSourceChangeEvent)(this.id())),this._updateSources(),this.priceRangeReady()||this._enablePriceRangeReady()})}else{if(null!==this._seriesSource){const e=this._seriesSource.dataEvents();e.seriesError().unsubscribeAll(this),e.loading().unsubscribeAll(this),e.completed().unsubscribeAll(this),e.dataUpdated().unsubscribeAll(this),this._seriesSource.destroy()}this._seriesSource=null}e&&this.start(!0)}_convertSeriesErrorToStudy(e){return{error:e.error,ctx:e.ctx,solution_id:e.solution_id}}_setSymbolParamsInternal(e,t){const{symbol:i,currency:s,unit:r,style:n}=e,o=this.properties().childs(),a=o.inputs.childs().symbol.value(),l=o.currencyId.value(),h=o.unitId.value(),d=o.style.value();if(void 0!==i&&i!==a&&o.inputs.childs().symbol.setValueSilently(i),void 0!==s&&s!==l&&o.currencyId.setValueSilently(s),void 0!==r&&r!==h&&o.unitId.setValueSilently(r),void 0!==n&&o.style.setValueSilently(n),t)this._resolvedSymbolsByInput[this.symbol()]=t,this._resolvedSymbols[this._getSymbolForResolve(this.symbol())]=t,this._realignToolsLastParams=null;else{const e=this.symbolInfo();null!==e&&(o.currencyId.setValueSilently((0,c.symbolCurrency)(e)),o.unitId.setValueSilently((0,c.symbolUnit)(e,this._model.unitConversionEnabled())))}o.inputs.childs().symbol.value()!==a&&o.inputs.childs().symbol.listeners().fire(o.inputs.childs().symbol),o.currencyId.value()!==l&&o.currencyId.listeners().fire(o.currencyId),o.unitId.value()!==h&&o.unitId.listeners().fire(o.unitId),o.style.value()!==d&&o.style.listeners().fire(o.style),this._checkStyle(),this._realignLineToolsIfParamsChanged()}_updateBarFunction(){var e;const t=null!==(e=this.priceSource())&&void 0!==e?e:"close";this._barFunction=(0,l.barFunction)(t)}_onChartStyleChanged(){var e;this._updateBarFunction(), -(null===(e=this._styleToRecover)||void 0===e?void 0:e.originalStyle)!==this.style()&&(this._styleToRecover=null)}_checkStyle(){const e=this.style();(0,c.isCloseBasedSymbol)(this.symbolInfo())?(0,c.isSingleValueBasedStyle)(e)||(this.setStyle(2),this._styleToRecover={correctedStyle:this.style(),originalStyle:e}):null!==this._styleToRecover&&(this.setStyle(this._styleToRecover.originalStyle),this._styleToRecover=null)}_realignLineToolsIfParamsChanged(){const e=this.symbol(),t=this.interval(),i=this.currency(),s=this.unit();null!==this._realignToolsLastParams&&this._realignToolsLastParams.symbol===e&&this._realignToolsLastParams.interval===t&&this._realignToolsLastParams.currency===i&&this._realignToolsLastParams.unit===s||(this._model.realignLineTools(this),this._realignToolsLastParams={symbol:e,interval:t,currency:i,unit:s})}}},41855:(e,t,i)=>{"use strict";i.d(t,{StudyPriceAxisView:()=>r});var s=i(97938);class r extends s.PriceAxisView{constructor(e,t){super(),this._model=e.model(),this._source=e,this._data=t}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const s=this._source.model(),r=this._source.priceScale();if(null===r)return;if(!s.isPriceScaleVisible(r))return;const n=this._source.lastValueData(this._data.plotIndex,!1);if(n.noData)return;i.background=n.color;let o=n.color;"transparent"===o&&(o=this._model.properties().childs().scalesProperties.childs().backgroundColor.value()),i.textColor=this.generateTextColor(o),i.coordinate=n.coordinate,i.floatCoordinate=n.floatCoordinate,this._showAxisLabel()&&(e.text=n.text,e.visible=!0),this._updatePaneRendererData(t)}_showPaneLabel(){return!!this._model.properties().childs().scalesProperties.childs().showStudyPlotLabels.value()&&this._source.properties().showLabelsOnPriceScale.value()}_showAxisLabel(){return!!this._model.properties().childs().scalesProperties.childs().showStudyLastValue.value()&&this._source.properties().showLabelsOnPriceScale.value()}_updatePaneRendererData(e){e.text="",this._showPaneLabel()&&(e.text=this._source.priceLabelText(this._data.plotIndex),e.visible=!0)}}},59572:(e,t,i)=>{"use strict";i.d(t,{applyOverridesToStudy:()=>c,applyOverridesToStudyDefaults:()=>h});var s=i(88537),r=i(50993);const n=(0,i(98125).getLogger)("Chart.Model.StudyPropertiesOverrider");var o,a;function l(e,t,i,s){const r=i.split(".");if(0===r.length||0===r[0].length)return;const l=function(e){const t=e.split(":");return{name:t[0],type:2===t.length?t[1]:null}}(r[0]),c=l.name,h=l.type,d=null!==h,u=!d||"band"===h,p=!d||"area"===h,_=!d||"input"===h,m=!d||"plot"===h?a.getPlotIdByTitle(e,c):null,g=u?a.getBandIndexByName(e,c):null,f=p?a.getFilledAreaIdByTitle(e,c):null,v=_?a.getInputByName(e,c):null,S=t.hasOwnProperty(c);if((null!==m?1:0)+(null!==g?1:0)+(null!==f?1:0)+(null!==v?1:0)+(S?1:0)>1)return void n.logWarn(`Study '${e.description}' has ambiguous identifier '${c}'`);const y=r[1];if(null!==m){if(1===r.length)return void n.logWarn(`Path of sub-property of '${c}' plot for study '${e.description}' must be not empty`);const i=r.slice(1);o.applyPlotProperty(e,t,m,i,s) -}else if(null!==v)o.applyInputValue(t,v,s);else if(null!==g){if(void 0===y)return void n.logWarn(`Property name of '${c}' band for study '${e.description}' must be set`);o.applyBandProperty(t,g,y,s)}else if(null!==f){if(void 0===y)return void n.logWarn(`Property name of '${c}' area for study '${e.description}' must be set`);o.applyFilledAreaProperty(t,f,y,s)}else S?o.setRootProperty(t,r,s):n.logWarn(`Study '${e.description}' has no plot or input '${c}'`)}function c(e,t){const i=e.properties(),s=i.state();for(const i in t)t.hasOwnProperty(i)&&l(e.metaInfo(),s,i,t[i]);i.mergeAndFire(s)}function h(e,t,i){for(const s in e){if(!e.hasOwnProperty(s))continue;const r=s.indexOf(".");if(-1===r)continue;const o=s.substring(0,r),c=a.getMetaInfoByDescription(t,o);if(null===c){n.logWarn("There is no such study "+o);continue}const h=i(c);null!==h?l(c,h,s.substring(r+1),e[s]):n.logWarn("Cannot apply overrides for study "+o)}}!function(e){const t={line:r.LineStudyPlotStyle.Line,histogram:r.LineStudyPlotStyle.Histogram,cross:r.LineStudyPlotStyle.Cross,area:r.LineStudyPlotStyle.Area,columns:r.LineStudyPlotStyle.Columns,circles:r.LineStudyPlotStyle.Circles,line_with_breaks:r.LineStudyPlotStyle.LineWithBreaks,area_with_breaks:r.LineStudyPlotStyle.AreaWithBreaks};e.applyPlotProperty=function(e,i,o,a,l){if(void 0===i.styles)return void n.logWarn("Study does not have styles");const c=a[0];if("color"===c){return void function(e,t,i,r,o){if(void 0!==e.styles)if(null===t&&!isNaN(r)&&r>0)n.logWarn("Study plot does not have color #"+r);else{if(0===r||isNaN(r)){(0,s.ensureDefined)(e.styles[i]).color=String(o),r=0}null!==t&&((0,s.ensureDefined)(t.colors[r]).color=String(o))}else n.logWarn("Study does not have styles")}(i,function(e,t,i){if(void 0===e.plots)return null;for(const s of e.plots){if(!(0,r.isColorerPlot)(s)||void 0===t.palettes)continue;const e=t.palettes[s.palette];if(s.target===i&&void 0!==e)return e}return null}(e,i,o),o,a.length>1?parseInt(a[1]):NaN,l)}const h=i.styles[o];if(void 0!==h&&h.hasOwnProperty(c)){if("plottype"===c){const e=t[String(l)];if(void 0===e)return void n.logWarn("Unsupported plot type for plot: "+l);l=e}h[c]=l}else n.logWarn(`Study plot does not have property '${c}'`)},e.applyBandProperty=function(e,i,s,r){if(void 0===e.bands)return void n.logWarn("Study does not have bands");const o=e.bands[i];if(void 0!==o&&o.hasOwnProperty(s)){if("plottype"===s){const e=t[String(r)];if(void 0===e)return void n.logWarn("Unsupported plot type for band: "+r);r=e}o[s]=r}else n.logWarn(`Study band does not have property '${s}'`)},e.applyFilledAreaProperty=function(e,t,i,s){if(void 0===e.filledAreasStyle)return void n.logWarn("Study does not have areas");const r=e.filledAreasStyle[t];void 0!==r&&r.hasOwnProperty(i)?r[i]=s:n.logWarn(`Study area does not have property '${i}'`)},e.applyInputValue=function(e,t,i){void 0!==e.inputs&&e.inputs.hasOwnProperty(t)?e.inputs[t]=i:n.logWarn(`Study does not have input '${t}'`)},e.setRootProperty=function(e,t,i){if(0===t.length)return;let s=e;for(const e of t.slice(0,-1)){ -if(null==s||!s.hasOwnProperty(e))break;s=s[e]}const r=t[t.length-1];null!=s&&s.hasOwnProperty(r)?s[r]=i:n.logWarn("Study does not have property "+t.join("."))}}(o||(o={})),function(e){e.getInputByName=function(e,t){if(void 0===e.inputs)return null;t=t.toLowerCase();for(const i of e.inputs)if(i.name.toLowerCase()===t)return i.id;return null},e.getPlotIdByTitle=function(e,t){if(void 0===e.styles)return null;t=t.toLowerCase();for(const i in e.styles){const s=e.styles[i];if((void 0!==s&&void 0!==s.title?s.title:i).toLowerCase()===t)return i}return null},e.getFilledAreaIdByTitle=function(e,t){if(void 0===e.filledAreas)return null;t=t.toLowerCase();for(const i of e.filledAreas)if(i.title.toLowerCase()===t)return i.id;return null},e.getBandIndexByName=function(e,t){if(void 0===e.bands)return null;t=t.toLowerCase();for(let i=0;i{"use strict";var s=i(2015),r=i(2872),n=i(88537).assert,o=i(37667).symbolTitle,a=i(33981).StudyBarColorer,l=i(41855).StudyPriceAxisView,c=i(54376).createGraphicsPriceAxisViews,h=i(84801).ChartApiInterface,d=i(88564).DefaultProperty,u=i(97098).PriceFormatter,p=i(71053).PlotList,_=i(67072),m=i(76422),g=i(50993),f=g.LineStudyPlotStyle,v=i(55057).StudyPriceLineAxisView,S=i(8671).studyPlotFunctionMap,y=i(8671).studyEmptyPlotValuePredicate,b=i(72857).makeNextStudyId,w=i(67337),C=i(69774).StudyBase,P=i(13933);const{dataSourceChangeEvent:T}=i(33291);var x=i(20838).IntervalsVisibilitiesProperty,I=P.StudyStatusType,M=i(68906).colorToInteger,L=i(52418).intervalsVisibilitiesDefaults,A=i(98125).getLogger("Chart.Study"),E=w.enabled("datasource_copypaste"),k=w.enabled("study_symbol_ticker_description"),D=w.enabled("hide_unresolved_symbols_in_legend");function V(e,t,i){var s=new d(t,i,!0);s.removeProperty("intervalsVisibilities"),s.addChild("intervalsVisibilities",new x(i&&i.intervalsVisibilities)),s.addExclusion("visible"),s.addExclusion("precision"),s.addExclusion("minTick"),s.addExclusion("intervalsVisibilities");for(var r=0;r=0?c:l}return l}if(this._metaInfo.isTVScript||this._metaInfo.pine){if("text"===i)return this._metaInfo.defaults.inputs.text;if("pineId"===i)return this._metaInfo.scriptIdPart;if("pineVersion"===i)return this._metaInfo.pine?this._metaInfo.pine.version:"-1";if("color"===e.type&&this._metaInfo.isRGB){var h=this._properties.inputs[i].value();return M(h)}if("price"===e.type){var d=this._properties.inputs[i].value();return t.priceInputsForDisplay?this.formatter().format(d):d}return this._properties.inputs[i].value()}return this._properties.inputs[i].value()}_rebindToSource(e,t){var i=this.parentSource();if(this._isChildStudy){var s;this._source.unsetChild(this);var r=null;if(e===this._model.mainSeries())this._source=null,this._isChildStudy=!1,this._ownerSource=null,s=this._series.seriesSource().instanceId(),r=h.REBIND_STUDY_CHILD_TO_STANDALONE;else{if(!(e instanceof R))return A.logError("Unable to rebind study to source of this type"),!1;this._ownerSource=e,this._source=e,s=this._source.sourceId(),this._source.setChild(this),this._source.isHibernated()&&this._source.start()}this._incrementTurnaround(),this.disablePriceRangeReady(),this._chartApi.rebindStudy(this._studyId,this._turnaround,s,this._studyName,t,this._handler,r)}else{if(!(e instanceof R))return A.logError("Unable to rebind study to source of this type"),!1;var n=e.isHibernated();n&&e.start();var o=!1;if(this._canCreateStudyWithRebindType(h.REBIND_STUDY_STANDALONE_TO_CHILD)&&(this._incrementTurnaround(),this.disablePriceRangeReady(),o=this._chartApi.rebindStudy(this._studyId,this._turnaround,e.sourceId(),this._studyName,t,this._handler,h.REBIND_STUDY_STANDALONE_TO_CHILD)),!o)return n&&e.stop(),!1;this._isChildStudy=!0,this._ownerSource=e,this._source=e,this._source.setChild(this),this._childStudyByRebind.fire()}var a=this.m_priceScale,l=e.priceScale();if(a!==l){var c=this._model.paneForSource(this),d=this._model.paneForSource(e);c===d&&d.move(this,l,!0)}const u=this.parentSource();return i.formatterChanged().unsubscribe(this,this._onSourceFormatterChanged),u.formatterChanged().subscribe(this,this._onSourceFormatterChanged),i.priceStepChanged().unsubscribe(this,this._onSourcePriceStepChanged),u.priceStepChanged().subscribe(this,this._onSourcePriceStepChanged),i.currencyChanged().unsubscribeAll(this),u.currencyChanged().subscribe(this,this._onSourceCurrencyChanged),i.unitChanged().unsubscribeAll(this),u.unitChanged().subscribe(this,this._onSourceUnitChanged),i.priceRangeReadyChanged().unsubscribeAll(this),u.priceRangeReadyChanged().subscribe(this,this._onSourcePriceRangeReadyChanged),this._recreatePriceFormattingDependencies(),!0}childStudyByRebind(){return this._childStudyByRebind} -_changeInputsImpl(e,t){var i=this.source(),s=this._properties.inputs&&this._properties.inputs.state(),r=_.getSourceIdByInputs(this._metaInfo.inputs,s),n=!0;if(r)if("high"===r||"open"===r||"low"===r||"close"===r||"hl2"===r||"ohl3"===r||"ohlc4"===r)i=this._model.mainSeries();else for(var o=this._model.dataSources().filter((function(e){return e instanceof R&&e.canHaveChildren()})),a=0;a=0&&(e="_v"+this._metaInfo.pine.version),{symbol:this.series().actualSymbol(),resolution:this.series().interval(),study:this._metaInfo.shortId+e}}_sendTelemetryReport(e,t,i){void 0===i&&(i=this._getTelemetryAdditionalData());var s=Object.assign(t,{additional:i});(void 0).sendChartReport(e,s)}_sendTelemetryCounter(e,t){this._sendTelemetryReport(e,{count:1},t)}onAboutToBeDestroyed(){return this._aboutToBeDestroyed}destroy(){this._aboutToBeDestroyed.fire(),this._isDestroyed=!0,null!==this._definitionsViewModel&&(this._definitionsViewModel.destroy(),this._definitionsViewModel=null),this._properties.precision.listeners().unsubscribe(this,this._precisionChanged),this._showStudyArgumentsProperty.listeners().unsubscribe(this,this.invalidateTitleCache),this._properties.description.listeners().unsubscribe(this,this.invalidateTitleCache),this._properties.shortDescription&&this._properties.shortDescription.listeners().unsubscribe(this,this.invalidateTitleCache),this._model.mainSeries().dataEvents().symbolResolved().unsubscribeAll(this), -this.hasBarColorer()&&this._properties.visible.listeners().unsubscribe(this._model.mainSeries(),this._model.mainSeries().invalidateBarStylesCache),this._model.mainSeries().dataEvents().symbolResolved().unsubscribe(this,this._recreatePriceFormattingDependencies),void 0!==this._properties.offsets&&this._properties.offsets.listeners().unsubscribe(this,this._updateMaxOffsetValue),void 0!==this._properties.offset&&this._properties.offset.listeners().unsubscribe(this,this._updateMaxOffsetValue),super.destroy()}desiredPriceScalePosition(){return this.metaInfo().isTVScriptStub?"overlay":this.metaInfo().linkedToSeries?"as-series":void 0===this.metaInfo().priceScale?null:["right","left","overlay"][this.metaInfo().priceScale]}guiPlotName(e){var t=this.properties().styles;return t&&t[e]&&t[e].title?t[e].title.value():this.title()}formatterChanged(){return this._formatterChanged}copiable(){return E&&!this.isChildStudy()}setPriceScale(e){super.setPriceScale(e),m.emit("study_event",this.id(),"price_scale_changed")}getStudyName(){return this._studyName}}TradingView.Study=R,t.Study=R,t.prepareStudyProperties=function(e,t,r,o,a){return function(e,t,r,o,a,l){var c=function(e,t,r,o){var a=i(31752);if(_.versionOf(e)<1)throw new Error("This function cannot work with metainfo of the old format version. Required format version >= 1");var l=TradingView.clone(defaults("study"));B(l,e);var c=_.getStudyPropertyRootName(e),h=TradingView.clone(defaults(c,o));h.intervalsVisibilities=TradingView.clone(L),("Overlay"===e.shortId||"Compare"===e.shortId)&&(h.currencyId=null,h.unitId=null);e.isTVScript&&e.TVScriptSourceCode!==h.TVScriptSourceCode&&(h=TradingView.clone(TradingView.factoryDefaults(c,o)));TradingView.merge(l,h),t&&(n(!(t instanceof s),"propsState should not be an instance of Property"),TradingView.merge(l,t));var d=TradingView.clone(e),u={};a.mergeInputsObjPart(u,d.defaults.inputs),a.mergeInputsObjPart(u,l.inputs),l.inputs=u,delete d.inputs,delete d.defaults.inputs;var p={};if(TradingView.merge(p,d.defaults),TradingView.merge(p,TradingView.factoryDefaults(c)),TradingView.merge(p,l),TradingView.merge(p,d),delete p.defaults,l=p,null!==r){var m=r.model().studiesColorRotatorFactory().getColorRotator(e);null!==m&&("Overlay@tv-basicstudies"===e.id?l.lineStyle.color=m.getColor(l.lineStyle.color,e):TradingView.merge(l,function(e,t){for(var i in e.styles){var s=e.styles[i].color;s&&(e.styles[i].color=t.getColor(s))}return e}(l,m)))}t&&TradingView.merge(l.styles,t.styles);return l}(e,t,r,o),h=_.getSourceInputIds(e);if(h.length>0){var d=h[0];l instanceof R?c.inputs[d]="{pid}$0":void 0!==c.inputs[d]&&-1!==c.inputs[d].indexOf("$")&&(c.inputs[d]="close")}return V(e,a,c)}(e,t,r,o,_.getStudyPropertyRootName(e),a)},t.prepareStudyPropertiesForLoadChart=function(e,t,s,r,n,o){return function(e,t,s,r,n,o,a){var l=function(e,t,s,r,n,o){var a=i(31752);e.version&&s.version&&e.version!==s.version&&A.logWarn("Serialized metaInfo version "+e.version+" is not equal to the saved state version "+s.version);var l=TradingView.clone(defaults("study")) -;l.intervalsVisibilities=TradingView.clone(L),TradingView.merge(l,TradingView.factoryDefaults(_.getStudyPropertyRootName(e))),B(l,e),TradingView.merge(l,s),l=n.updateStudyState(l,e,t),void 0!==o&&(l=o(s,l,e,t));var c=TradingView.clone(t||e);if(c&&_.versionOf(c)>=1){var h={};a.mergeInputsObjPart(h,(c.defaults||{}).inputs),a.mergeInputsObjPart(h,l.inputs),l.inputs=h,delete c.inputs,c.defaults&&delete c.defaults.inputs;var d={};TradingView.merge(d,c.defaults),TradingView.merge(d,TradingView.factoryDefaults(_.getStudyPropertyRootName(c))),TradingView.merge(d,l),delete c.defaults,TradingView.merge(d,c),l=d}return l}(e,t,s,0,n,a);return V(t||e,o,l)}(e,t,s,0,n,_.getStudyPropertyRootName(e),o)}},56138:(e,t,i)=>{"use strict";i.d(t,{plotShapesData:()=>r});var s=i(28353);const r={shape_arrow_down:{guiName:(0,s.t)("Arrow Down"),id:"shape_arrow_down",paneRendererClass:"PaneRendererArrowDown",pineName:"shape.arrowdown",icon:"arrow_down"},shape_arrow_up:{guiName:(0,s.t)("Arrow Up"),id:"shape_arrow_up",paneRendererClass:"PaneRendererArrowUp",pineName:"shape.arrowup",icon:"arrow_up"},shape_circle:{guiName:(0,s.t)("Circle"),id:"shape_circle",paneRendererClass:"PaneRendererCircleShape",pineName:"shape.circle",icon:"circle"},shape_cross:{guiName:(0,s.t)("Cross"),id:"shape_cross",paneRendererClass:"PaneRendererCrossShape",pineName:"shape.cross",icon:"cross"},shape_diamond:{guiName:(0,s.t)("Diamond"),id:"shape_diamond",paneRendererClass:"PaneRendererDiamond",pineName:"shape.diamond",icon:"diamond"},shape_flag:{guiName:(0,s.t)("Flag"),id:"shape_flag",paneRendererClass:"PaneRendererFlagShape",pineName:"shape.flag",icon:"flag"},shape_label_down:{guiName:(0,s.t)("Label Down"),id:"shape_label_down",paneRendererClass:"PaneRendererLabelDown",pineName:"shape.labeldown",icon:"label_down"},shape_label_up:{guiName:(0,s.t)("Label Up"),id:"shape_label_up",paneRendererClass:"PaneRendererLabelUp",pineName:"shape.labelup",icon:"label_up"},shape_square:{guiName:(0,s.t)("Square"),id:"shape_square",paneRendererClass:"PaneRendererSquare",pineName:"shape.square",icon:"square"},shape_triangle_down:{guiName:(0,s.t)("Triangle Down"),id:"shape_triangle_down",paneRendererClass:"PaneRendererTriangleApexDown",pineName:"shape.triangledown",icon:"triangle_down"},shape_triangle_up:{guiName:(0,s.t)("Triangle Up"),id:"shape_triangle_up",paneRendererClass:"PaneRendererTriangleApexUp",pineName:"shape.triangleup",icon:"triangle_up"},shape_xcross:{guiName:(0,s.t)("X Cross"),id:"shape_xcross",paneRendererClass:"PaneRendererXCross",pineName:"shape.xcross",icon:"x_cross"}}},27306:(e,t,i)=>{"use strict";var s=i(15625).Version,r=i(98125).getLogger("Chart.StudyMigration");function n(e){this._studyId=e,this._maxToVers=s.ZERO,this._maxFromVers=s.ZERO,this._migrs=[]}n.prototype.addMigration=function(e,t,i){var r=s.parse(e),n=s.parse(t);r.isGreater(this._maxFromVers)&&(this._maxFromVers=r),n.isGreater(this._maxToVers)&&(this._maxToVers=n),this._migrs.push({fromVers:r,toVers:n,rules:i})},n.prototype.updateInputs=function(e,t,i){if(!i)return i -;for(var s=TradingView.clone(i),n=e;n.isLess(t);){var o=this._findMigration(n);if(null==o)break;if(r.logNormal("Migrating study inputs from "+o.fromVers+" to "+o.toVers+" version, studyId: "+this._studyId+", migration: "+JSON.stringify(o)+", inputs: "+JSON.stringify(i)),s=this._applyMigration(s,o),!n.isLess(o.toVers))throw new Error("Problems in study migration process... Possible infinite cycle has been detected and stopped.");n=o.toVers}return n>e&&r.logNormal("Study inputs migration is done, studyId: "+this._studyId+", inputs: "+JSON.stringify(s)),s},n.prototype._findMigration=function(e){for(var t=-1,i=this._maxFromVers,s=0;s=0||t.indexOf(e)>=0},n._applyInputChangedMinMaxRule=function(e,t){if("adjustValIfNeeded"!==t.action)throw new Error("Unknown action "+t.action+" for rule with type "+t.type);var i=e[t.inputId];return it.maxVal&&(e[t.inputId]=t.maxVal),r.logNormal("Input "+t.inputId+"="+i+" adjusted to value "+e[t.inputId]),e},n._applyInputChangedOptionsRule=function(e,t){if(!(["text"].indexOf(t.inputType)>=0&&"resetToDefValIfNeeded"===t.action))throw new Error("Unexpected rule.inputType="+t.inputType+" in rule.action="+t.action);var i=e[t.inputId];return t.options.indexOf(i)<0&&(e[t.inputId]=t.defVal,r.logNormal("Input "+t.inputId+"="+i+" reset to default value "+t.defVal)),e},e.exports=n}, -9771:(e,t,i)=>{"use strict";var s=i(66101).Study,r=i(52457).OverlayLegendValuesProvider,n=i(79284).OverlayStatusProvider,o=i(33981).SeriesBarColorer,a=i(82927).StudyOverlayBase;t.study_Overlay=class extends a{constructor(e,t,i,s){super(e,t,i,s),this._paneView=null;var r=this;this.properties().minTick.listeners().subscribe(null,(function(){r._recreatePriceFormattingDependencies(),r.updateAllViews(),r._model.fullUpdate()}))}_showLastValueOnPriceScale(){return this._model.properties().scalesProperties.showSeriesLastValue.value()}barColorer(){return new o(this)}_tryChangeInputs(){s.prototype._tryChangeInputs.call(this),this.m_formatter=null,this.priceScale().updateFormatter()}_onQuotesUpdate(e,t){!this._legendView||void 0===t.values.change&&void 0===t.values.change_percent||(this._legendView.update(),this._model.updateSource(this))}destroy(){this._quotesProvider.quotesUpdate().unsubscribeAll(this),this._quotesProvider.destroy(),super.destroy()}tags(){var e=[],t=this.symbolInfo();return t?e.push(t.name):this._properties.inputs.symbol.value()&&e.push(this._properties.inputs.symbol.value()),e}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(7387),i.e(8623),i.e(607)]).then(i.bind(i,55976))).StudyOverlayDefinitionsViewModel}defaultPlotIdForAlert(){return""}changeStyles(){this.data().each((function(e,t){t[TradingView.STYLE_PLOT]=null})),s.prototype.changeStyles.call(this)}valuesProvider(){return new r(this,this.model())}statusProvider(e){return new n(this,this.model())}}},67509:(e,t,i)=>{"use strict";var s=i(88537).assert,r=i(80643).clone,n=i(66101).Study,o=i(71053).PlotList,a=i(8671).studyPlotFunctionMap,l=i(8671).studyEmptyPlotValuePredicate;class c{constructor(e,t,i){this._strategyPlotIndex=e,this._targetPlotIndex=t,this._startIndex=i}rebuildData(e){var t=this._targetPlotIndex+1,i=this._strategyPlotIndex+1,s=null,r=null;e.range(this._startIndex||e.firstIndex(),e.lastIndex()).each((function(n,o){var a=o[t],l=o[i]?Math.round(o[i]):null;if(o[t]=null,o[i]=null,!l||l>0)return!1;var c=n+l,h={pointIndex:c,value:a};if(r){if(r.pointIndex!==h.pointIndex){c>=0&&(e.valueAt(c)[t]=a);var d=!1;s&&(d=s.value<=r.value&&r.value<=a||s.value>=r.value&&r.value>=a),d?r.pointIndex>=0&&(e.valueAt(r.pointIndex)[t]=null):s=r,r=h}}else r=h;return!1}))}}t.study_ScriptWithDataOffset=class extends n{constructor(e,t,i,s){super(e,t,i,s),this._underlyingData=new o(a(s),l)}clearData(){super.clearData(),this._underlyingData.clear()}_mergeData(e){this._invalidateLastNonEmptyPlotRowCache();var t=this._underlyingData.firstIndex();this._underlyingData.merge(e),t!==this._underlyingData.firstIndex()&&(this.m_data=new o(a(this._metaInfo),l));var i=this.m_data.lastIndex();this._underlyingData.range(i,this._underlyingData.lastIndex()).each(function(e,t){return this.m_data.add(e,r(t)),!1}.bind(this)),this._plotsForStrategyProcessing().forEach((function(e){new c(e.strategyIndex,e.targetIndex,i).rebuildData(this.m_data)}),this)}_plotsForStrategyProcessing(){var e=[];return this._metaInfo.plots.forEach((function(t,i){ -if("dataoffset"===t.type){var r=this._metaInfo.plots.findIndex((function(e){return e.id===t.target}));s(r>=0,"target plot not found for strategy plot "+t.id);var n={strategyIndex:i,targetIndex:r};e.push(n)}}),this),e}}},31752:(e,t,i)=>{"use strict";var s=i(88537).assert,r=i(15625).Version,n=i(98125).getLogger("Chart.Study.Versioning"),o=i(76861),a=i(67072),l=i(14905).extractPineId,c=i(5402).migrateMetaInfoAndPropState;function h(e,t){if(!e)throw new Error("No studies metainfo");var s=i(27306);if(this._studiesMetainfo=e,!t)throw new Error("No studies migrations");this._studiesMigrations=t,this._migrations={};for(var r=0;r=22)return t;for(var i={},s=0,r=0;;){var n=t[r];if(void 0===n)break;var o=t[n.id];n.isFake&&(n.id="in_"+s++),i[r]=n,i[n.id]=o,r++}return i}]}h.prototype.updateMetaInfo=function(e){if(!e)return e;s(!e.isTVScript,"This method should update only built-in java indicators metaInfo. For Pine indicators use updateMetaInfoAsync");for(var t=null,i=this._studiesMetainfo,r=0;r=12&&l<=26){var c={};for(o=0;o=12&&c<=26){var d=r.columns;r.columns=[];for(var u=0;ut&&n.logWarn("Bad integer input max value in metaInfo id="+e.id+" title="+e.description))}},h._fixInputsMaxValue=function(e,t){if(!TradingView.isAbsent(t)){var i=h.INPUT_MAX_VALUE;if(t.inputs)for(var s=0;si&&(a.max=i))}if(e&&e.inputs){var r=h.splitInputs(e.inputs),n=r.arr;for(var o in n){var a;"integer"===(a=n[o]).type&&(a.max&&a.max>i&&(a.max=i))}e.inputs=TradingView.merge(r.obj,r.arr)}}},h.prototype.patchPropsStateAndMetaInfo=function(e,t,i){"Script$BOOKER"!==t.productId||t.alerts||delete e.alerts,h._fixInputsOrder(e,t),h._fixInputsMaxValue(e,t);var s=h.splitInputs(e.inputs);e.inputs=s.obj;var r=a.versionOf(t);ri&&(i=r))}e[i+1]=t},h.splitInputs=function(e){var t={},i={};for(var s in e)isNumber(parseInt(s,10))?t[s]=e[s]:i[s]=e[s];return{arr:t,obj:i}},h.findInputKeyById=function(e,t){var i=null;for(var s in e)if(isNumber(parseInt(s,10))&&e[s].id===t){i=s;break}return i},h.getInputKeyById=function(e,t){var i=h.findInputKeyById(e,t);if(!i)throw new Error("Cannot find input with id: "+t);return i},e.exports=h},14791:(e,t,i)=>{"use strict";i.d(t,{areEqualSymbols:()=>r,symbolSameAsCurrent:()=>o});const s=i(67337).enabled("uppercase_instrument_names");function r(e,t){return void 0===e?void 0===t:void 0!==t&&(s?e.toUpperCase()===t.toUpperCase():e===t)}function n(e,t){return e.some(e=>r(t,e))}function o(e,t,i){if(r(t,e))return!0;if(i){if(r(i.full_name,e)||r(i.pro_name,e))return!0;if(r(i.ticker,e))return!0;if(i.aliases&&n(i.aliases,e))return!0;if(i.alternatives&&n(i.alternatives,e))return!0;if(0===e.indexOf("FRA:")&&r(i.pro_name,e.replace("FRA:","FWB:")))return!0}return!1}},76818:(e,t,i)=>{"use strict";i.d(t,{TextWidthCache:()=>s});class s{constructor(e=150){this._actualSize=0,this._usageTick=1,this._oldestTick=1,this._tick2Labels=new Map,this._cache=new Map,this._maxSize=e}reset(){this._actualSize=0,this._cache.clear(),this._usageTick=1,this._oldestTick=1,this._tick2Labels.clear()}measureText(e,t){return this.getMetrics(e,t).width}yMidCorrection(e,t){ -const i=this.getMetrics(e,t);return"actualBoundingBoxAscent"in i&&"actualBoundingBoxDescent"in i?(i.actualBoundingBoxAscent-i.actualBoundingBoxDescent)/2:0}getMetrics(e,t){const i=this._cache.get(t);if(void 0!==i)return i.metrics;if(this._actualSize===this._maxSize){const e=this._tick2Labels.get(this._oldestTick);this._tick2Labels.delete(this._oldestTick),this._cache.delete(e),this._oldestTick++,this._actualSize--}e.save(),e.textBaseline="middle";const s=e.measureText(t);return e.restore(),0===s.width&&t.length||(this._cache.set(t,{metrics:s,tick:this._usageTick}),this._tick2Labels.set(this._usageTick,t),this._actualSize++,this._usageTick++),s}}},5231:(e,t,i)=>{"use strict";var s=i(2872);function r(){this._marksByIndex=new Map,this._marksBySpan=[],this.changed=new s,this.minIndex=void 0,this.maxIndex=void 0}r.prototype.reset=function(){this._resetImpl(),this.changed.fire()},r.prototype._resetImpl=function(){this._marksByIndex=new Map,this._marksBySpan=[],this.minIndex=void 0,this.maxIndex=void 0,this._cache=void 0},r.prototype.merge=function(e){if(0!==e.length){var t=e[0].index,i=e[e.length-1].index;t<=this.minIndex&&i>=this.maxIndex&&this._resetImpl();for(var s=this._marksBySpan,r=new Set,n=0;n=this.maxIndex&&this.maxIndex--,this.maxIndex2;){if(1e3*this._marksByIndex.get(t).time===e)return t;if(1e3*this._marksByIndex.get(i).time===e)return i;var s=Math.round((t+i)/2);1e3*this._marksByIndex.get(s).time>e?i=s:t=s}return t},r.prototype.build=function(e,t){var i=Math.ceil(t/e);if(this._maxbar===i&&this._cache)return this._cache;this._maxbar=i;for(var s=[],r=this._marksBySpan.length;r--;)if(this._marksBySpan[r]){var n=s;s=[];for(var o=n.length,a=0,l=this._marksBySpan[r],c=l.length,h=1/0,d=-1/0,u=0;u=i&&_-d>=i&&(s.push(p),d=_)}for(;a{"use strict";i.d(t,{TimeAxisView:()=>o});var s=i(68906),r=i(93435);class n{constructor(){this._data=null}setData(e){this._data=e}draw(e,t,i){if(null===this._data||!this._data.visible||0===this._data.text.length)return;const s=this._data;e.font=t.font;const n=Math.round(t.widthCache.measureText(e,s.text));if(n<=0)return;e.save();const o=t.paddingHorizontal,a=n+2*o,l=a/2;let c=s.coordinate,h=Math.floor(c-l)+.5;if(s.alwaysInViewPort){const e=s.width;h<0?(c+=Math.abs(0-h),h=Math.floor(c-l)+.5):h+a>e&&(c-=Math.abs(e-(h+a)),h=Math.floor(c-l)+.5)}const d=h+a,u=Math.ceil(0+t.borderSize+t.offsetSize+t.paddingTop+t.fontSize+t.paddingBottom);e.fillStyle=s.background;const p=Math.round(h*i),_=Math.round(0*i),m=Math.round(d*i),g=Math.round(u*i),f=Math.round(2*i);e.beginPath(),e.moveTo(p,_),e.lineTo(p,g-f),e.arcTo(p,g,p+f,g,f),e.lineTo(m-f,g),e.arcTo(m,g,m,g-f,f),e.lineTo(m,_),e.fill();const v=0+t.borderSize+t.offsetSize+t.paddingTop+t.fontSize/2;e.textAlign="left",e.textBaseline="middle",e.fillStyle=s.color;const S=t.widthCache.yMidCorrection(e,"Apr0");e.translate((h+o)*i,(v+S)*i),(0,r.drawScaled)(e,i,()=>e.fillText(s.text,0,0)),e.restore()}}class o{constructor(e){this._renderer=new n,this._rendererData={background:"",color:"",coordinate:0,text:"",visible:!1,width:0,alwaysInViewPort:!0},this._invalidated=!0,this._model=e,this._renderer.setData(this._rendererData)}update(){this._invalidated=!0}renderer(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._renderer}coordinate(){return this._rendererData.coordinate}_getAlwaysInViewPort(){return!0}_updateImpl(){const e=this._rendererData;if(e.visible=!1,this._model.timeScale().isEmpty()||!this._isVisible())return;const t=this._getIndex();if(null===t)return;e.visible=!0,e.width=this._model.timeScale().width(),e.background=this._getBgColor(), -e.color=(0,s.colorFromBackground)(e.background),e.coordinate=this._model.timeScale().indexToCoordinate(t),e.alwaysInViewPort=this._getAlwaysInViewPort();const i=this._model.timeScale().indexToUserTime(t);e.text=null!==i?this._model.dateTimeFormatter().format(i):"",this._invalidated=!1}}},2271:(e,t,i)=>{"use strict";i.d(t,{INVALID_TIME_POINT_INDEX:()=>s});const s=-2e6},5816:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MINUTE_SPAN:()=>s,HOUR_SPAN:()=>r,DAY_SPAN:()=>n,WEEK_SPAN:()=>o,MONTH_SPAN:()=>a,YEAR_SPAN:()=>l,DEFAULT_BAR_SPACING:()=>c});const s=20,r=30,n=40,o=50,a=60,l=70,c=6},23075:(e,t,i)=>{"use strict";i.d(t,{trackDrawingCreated:()=>r,trackDrawingPasted:()=>n,trackDrawingCloned:()=>o,trackChartStyleChanged:()=>a});i(88537),i(16654);function s(e,t){0}function r(e){s()}function n(e){s()}function o(e){s()}function a(e){0}},35218:(e,t,i)=>{"use strict";i.d(t,{translatedIntervalString:()=>r});i(28353);var s=i(9315);function r(e){const t=(0,s.getTranslatedResolutionModel)(e,!0);return null===t?e:t.multiplier+(t.mayOmitShortKind?"":t.shortKind)}},17691:(e,t,i)=>{"use strict";i.d(t,{ApplyLineToolTemplateUndoCommand:()=>r});var s=i(35762);class r extends s.UndoCommand{constructor(e,t,i){super(i),this._source=e,this._newState=t,this._oldState=e.properties().state()}redo(){this._source.applyTemplate(this._newState)}undo(){this._source.applyTemplate(this._oldState)}}},79495:(e,t,i)=>{"use strict";i.d(t,{ExcludeLineToolsFromGroupUndoCommand:()=>l});var s=i(88537),r=(i(94419),i(28353)),n=i(24980),o=i(35762);const a=new n.TranslatedString("exclude line tools from group {group}",(0,r.t)("exclude line tools from group {group}"));class l extends o.UndoCommand{constructor(e,t,i){super(a.format({group:t.name()})),this._model=e,this._groupId=t.id,this._groupName=t.name(),this._lineToolsIds=i.map(e=>e.id())}redo(){const e=(0,s.ensureNotNull)(this._model.lineToolsGroupModel().groupForId(this._groupId)),t=this._lineToolsIds.map(e=>this._model.dataSourceForId(e));e.excludeLineTools(t),0===e.lineTools().length&&this._model.lineToolsGroupModel().removeGroup(e)}undo(){const e=this._lineToolsIds.map(e=>this._model.dataSourceForId(e)),t=this._model.lineToolsGroupModel().groupForId(this._groupId);null!==t?t.addLineTools(e):this._model.lineToolsGroupModel().createGroup(e,this._groupName,this._groupId)}}},8597:(e,t,i)=>{"use strict";i.d(t,{MergeUpUndoCommand:()=>o,MergeDownUndoCommand:()=>a,MergeToTargetPane:()=>l});var s=i(88537),r=i(21749);class n extends r.MoveSourceUndoCommand{constructor(e,t,i){super(e,t,i),this._restorePane=!1}redo(){const e=this._chartModel.panes().length,t=this._chartModel.panes()[this._targetPaneIndex()],i=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId)),r=(0,s.ensureNotNull)(this._chartModel.paneForSource(i)),n=this._chartModel.children(i,!0);r.bulkActionMacro(()=>{n.forEach(e=>this._chartModel.detachSource(e)),this._restorePane=this._chartModel.detachSource(i)}) -;const o="overlay"===this._initialPriceScalePosition?this._initialPriceScalePosition:void 0,a=t.findSuitableScale(i,void 0,o),l=0===a.dataSources().length;if(t.bulkActionMacro(()=>{t.addDataSource(i,a,!1),n.forEach(e=>t.addDataSource(e,a,!1))}),i===this._chartModel.mainSeries()){const e=t.priceScalePosition(a);t.movePriceScale(a,e,0)}if(l){(0,s.ensureNotNull)(i.priceScale()).restoreState(this._newPriceScaleState(t.isOverlay(i)))}this._chartModel.fullUpdate(),e!==this._chartModel.panes().length&&this._chartModel.setShouldBeSavedEvenIfHidden(!0)}undo(){let e;e=this._restorePane?this._chartModel.createPane(this._initialPaneIndex):this._chartModel.panes()[this._initialPaneIndex];const t=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId)),i=(0,s.ensureNotNull)(this._chartModel.paneForSource(t)),r=this._chartModel.children(t,!0);i.bulkActionMacro(()=>{r.forEach(e=>this._chartModel.detachSource(e)),this._chartModel.detachSource(t)});let n=e.getPriceScaleById(this._initialPriceScaleId);null===n&&(n=e.createPriceScaleAtPosition(this._initialPriceScalePosition,this._initialPriceScaleIndex)),e.bulkActionMacro(()=>{e.addDataSource(t,n,!0),r.forEach(t=>e.addDataSource(t,n,!1))}),(0,s.ensureNotNull)(t.priceScale()).restoreState(this._originalPriceScaleState()),this._chartModel.fullUpdate()}}class o extends n{constructor(e,t,i){super(e,t,i)}_targetPaneIndex(){return this._initialPaneIndex-1}}class a extends n{constructor(e,t,i){super(e,t,i)}_targetPaneIndex(){return this._initialPaneIndex+1}}class l extends n{constructor(e,t,i,s){super(e,t,s),this._targetPane=i}_targetPaneIndex(){return this._targetPane}}},21749:(e,t,i)=>{"use strict";i.d(t,{MoveSourceUndoCommand:()=>n});var s=i(88537),r=i(35762);class n extends r.UndoCommand{constructor(e,t,i){super(i),this._chartModel=e,this._sourceId=t.id();const r=(0,s.ensureNotNull)(t.priceScale());this._initialPriceScaleId=r.id(),this._initialPriceScaleState=(0,s.ensureNotNull)(t.priceScale()).state();const n=(0,s.ensureNotNull)(e.paneForSource(t));this._initialPriceScalePosition=n.priceScalePosition(r),this._initialPriceScaleIndex=n.priceScaleIndex(r,this._initialPriceScalePosition),this._initialPaneIndex=e.panes().indexOf(n)}_newPriceScaleState(e){const t={...this._initialPriceScaleState};return delete t.m_isLockScale,delete t.id,delete t.m_topMargin,delete t.m_bottomMargin,t}_originalPriceScaleState(){return this._initialPriceScaleState}}},27579:(e,t,i)=>{"use strict";i.d(t,{MoveToNewPriceScaleUndoCommand:()=>o,MoveToExistingPriceScaleUndoCommand:()=>a});var s=i(88537),r=i(21749);class n extends r.MoveSourceUndoCommand{constructor(e,t,i,s){super(e,t,s),this._sourcePaneRemoved=!1,this._targetPaneIndex=e.panes().indexOf(i)}redo(){const e=this._chartModel.panes()[this._initialPaneIndex],t=this._chartModel.panes()[this._targetPaneIndex],i=e!==t,r=this._targetPriceScale(t),n=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId)),o=this._chartModel.children(n,!0);for(const e of o)i?(this._chartModel.detachSource(e),t.addDataSource(e,r,!1)):t.move(e,r) -;i?(this._sourcePaneRemoved=this._chartModel.detachSource(n),t.addDataSource(n,r,!1)):t.move(n,r);const a=t.priceScalePosition(r);t.movePriceScale(r,a,this._targetPriceScaleIndex(n)),this._chartModel.fullUpdate()}undo(){this._sourcePaneRemoved&&this._chartModel.createPane(this._initialPaneIndex);const e=this._chartModel.panes()[this._initialPaneIndex],t=e!==this._chartModel.panes()[this._targetPaneIndex],i=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId));let r=e.getPriceScaleById(this._initialPriceScaleId);null===r&&(r=e.createPriceScaleAtPosition(this._initialPriceScalePosition,this._initialPriceScaleIndex));const n=this._chartModel.children(i,!0);for(const i of n)t?(this._chartModel.detachSource(i),e.addDataSource(i,r,!1)):e.move(i,r);t?(this._chartModel.detachSource(i),e.addDataSource(i,r,!1)):e.move(i,r),(0,s.ensureNotNull)(i.priceScale()).restoreState(this._originalPriceScaleState()),this._chartModel.fullUpdate()}}class o extends n{constructor(e,t,i,s,r){super(e,t,i,r),this._targetPriceScalePosition=s}_targetPriceScale(e){const t=e.createPriceScaleAtPosition(this._targetPriceScalePosition);return t.restoreState(this._newPriceScaleState("overlay"===this._targetPriceScalePosition)),t}_targetPriceScaleIndex(e){return e===this._chartModel.mainSeries()?0:void 0}}class a extends n{constructor(e,t,i,s,r){super(e,t,i,r),this._targetPriceScaleId=s.id()}_targetPriceScale(e){return(0,s.ensureNotNull)(e.getPriceScaleById(this._targetPriceScaleId))}_targetPriceScaleIndex(e){}}},69746:(e,t,i)=>{"use strict";i.d(t,{PriceScaleChangeUndoCommand:()=>h});var s=i(88537),r=i(28353),n=i(24980),o=i(98125),a=i(35762);const l=(0,o.getLogger)("Chart.ChartUndoModel"),c=new n.TranslatedString("scale price",(0,r.t)("scale price"));class h extends a.UndoCommand{constructor(e,t,i,s,r){super(c,!1),this._newPriceScaleState=null,this._model=e,this._paneIndex=e.panes().indexOf(t),this._priceScaleId=i.id(),this._state=s,this._timestamp=r?performance.now():null}undo(){if(null!==this._newPriceScaleState)return void l.logDebug("PriceScaleChangeUndoCommand.undo: Command is already undone");const[e,t]=this._paneAndScale();this._newPriceScaleState=t.state(),this._model.restorePriceScaleState(e,t,this._state)}redo(){if(null===this._newPriceScaleState)return void l.logDebug("PriceScaleChangeUndoCommand.redo: Command is not undone");const[e,t]=this._paneAndScale();this._model.restorePriceScaleState(e,t,this._newPriceScaleState),this._newPriceScaleState=null}canMerge(e){return e instanceof h&&null!==this._timestamp&&null!==e._timestamp&&null===this._newPriceScaleState&&e._model===this._model&&e._paneIndex===this._paneIndex&&e._priceScaleId===this._priceScaleId&&Math.abs(e._timestamp-this._timestamp)<1e3}merge(e){this._timestamp=e._timestamp}_paneAndScale(){const e=this._model.panes()[this._paneIndex],t=(0,s.ensureNotNull)(e.getPriceScaleById(this._priceScaleId));return[e,t]}}},65284:(e,t,i)=>{"use strict";i.d(t,{RemoveSourcesCommand:()=>m}) -;var s=i(88537),r=i(28353),n=i(24980),o=i(35762),a=i(14291),l=i(98125),c=i(52546),h=i(81851),d=i(79495);class u extends o.UndoCommand{constructor({title:e,chartModel:t,lineDataSourceIds:i}){super(e),this._excludeLineToolsFromGroupUndoCommands=[],this._undoState=[],this._chartModel=t,this._lineDataSourceIds=i}redo(){const e=this._lineDataSourceIds.map(e=>(0,s.ensureNotNull)(this._chartModel.dataSourceForId(e)));this._groupLineToolsByGroups(e).forEach((e,t)=>{const i=new d.ExcludeLineToolsFromGroupUndoCommand(this._chartModel,t,e);i.redo(),this._excludeLineToolsFromGroupUndoCommands.push(i)}),e.forEach(e=>{this._undoState.push({state:e.state(!1),paneIndex:this._chartModel.panes().indexOf((0,s.ensureNotNull)(this._chartModel.paneForSource(e))),sharingMode:e.sharingMode().value()}),this._chartModel.removeSource(e)})}undo(){var e;for(let t=this._undoState.shift();t;t=this._undoState.shift())null===(e=this._chartModel.restoreSource(!1,t.paneIndex,null,t.state,null))||void 0===e||e.share(t.sharingMode);this._excludeLineToolsFromGroupUndoCommands.forEach(e=>e.undo())}_groupLineToolsByGroups(e){const t=this._chartModel.lineToolsGroupModel();return e.reduce((e,i)=>{const s=t.groupForLineTool(i);if(null!==s){const t=e.get(s)||[];t.push(i),e.set(s,t)}return e},new Map)}}const p=(0,l.getLogger)("Chart.RemoveSourcesCommand"),_=new n.TranslatedString("remove line data sources",(0,r.t)("remove line data sources"));class m extends o.UndoCommand{constructor(e,t,i){super(i),this._removeLineDataSourcesUndoCommand=null,this._initialPriceScaleMode=null;const[r,n]=(0,c.closeSourcesSet)(e,t).reduce((e,t)=>((0,a.isLineTool)(t)?e[1].push(t.id()):e[0].push(t.id()),e),[[],[]]);this._chartModel=e,this._sourceIds=r,this._lineDataSourceIds=n,this._sourceStates=[],this._paneIndexes=[],this._priceScalePositionIds=[],this._paneStates=[],this._restorePanes=[];const o=t[0];1===t.length&&(0,h.isStudy)(o)&&(this._initialPriceScaleMode=(0,s.ensureNotNull)(o.priceScale()).mode())}removedIds(){return[...this._sourceIds,...this._lineDataSourceIds]}redo(){this._chartModel.panes().length;const e=this._sourceIds.map(e=>(0,s.ensureNotNull)(this._chartModel.dataSourceForId(e)));this._sourceStates=e.map(e=>(0,s.ensureNotNull)(e.state(!1)));const t=e.map(e=>(0,s.ensureNotNull)(this._chartModel.paneForSource(e)));this._paneIndexes=t.map(e=>this._chartModel.panes().indexOf(e)),this._lineDataSourceIds.length>0&&(this._removeLineDataSourcesUndoCommand=new u({title:_,chartModel:this._chartModel,lineDataSourceIds:this._lineDataSourceIds}),this._removeLineDataSourcesUndoCommand.redo()),this._priceScalePositionIds=e.map((e,i)=>{const s=e.priceScale();if(null===s)return null;const r=t[i].priceScalePosition(s);return{id:s.id(),position:r,priceScaleIndex:t[i].priceScaleIndex(s,r)}});const i=new Set;e.forEach((e,t)=>{i.add(this._paneIndexes[t])}),this._paneStates=e.map((e,s)=>{const r=this._paneIndexes[s];return i.has(r)?t[s].state(!1,!0):null}),this._restorePanes=e.map(e=>this._chartModel.removeSource(e))}undo(){const e=[];for(let t=this._sourceStates.length-1;t>=0;t--){ -const i=this._chartModel.restoreSource(this._restorePanes[t],this._paneIndexes[t],this._paneStates[t],this._sourceStates[t],this._priceScalePositionIds[t]);i&&e.push(i)}e.some((t,i)=>t.id()!==this._sourceIds[e.length-i-1])&&p.logError("Source was restored improperly - source ids does not match"),null!==this._initialPriceScaleMode&&(0,s.ensureNotNull)(e[0].priceScale()).setMode(this._initialPriceScaleMode),this._removeLineDataSourcesUndoCommand&&this._removeLineDataSourcesUndoCommand.undo()}}},91794:(e,t,i)=>{"use strict";i.d(t,{RestoreDefaultsPreferencesUndoCommand:()=>p});var s=i(88537),r=i(28353),n=i(24980),o=i(35762),a=i(67396),l=i(21761),c=i(13647),h=i(92033),d=i(76166);const u=new n.TranslatedString("apply all chart properties",(0,r.t)("apply all chart properties"));class p extends o.UndoCommand{constructor(e){super(u),this._trading=null,this._oldShowSellBuyButtons=null,this._oldNoConfirmEnabled=null,this._oldShowOnlyRejectionNotifications=null,this._oldShowPricesWithZeroVolume=null,this._oldShowPricesWithSpread=null,this._oldOrderExecutedSoundEnabled=null,this._prevWatermarkPreferences=null,this._model=e,this._trading=(0,h.tradingService)(),null!==this._trading&&(this._oldShowSellBuyButtons=this._trading.showSellBuyButtons.value(),this._oldNoConfirmEnabled=this._trading.noConfirmEnabled.value(),this._oldShowOnlyRejectionNotifications=this._trading.showOnlyRejectionNotifications.value(),this._oldShowPricesWithZeroVolume=this._trading.showPricesWith().zeroVolume.value(),this._oldShowPricesWithSpread=this._trading.showPricesWith().spread.value(),this._oldOrderExecutedSoundEnabled=this._trading.orderExecutedSoundParams.enabled.value()),this._defaultsPreferences=(0,a.defaultsPreferencesByWhiteList)(this._model,this._model.mainSeries()),this._oldPreferences=e.preferences(),this._prevDateFormat=l.dateFormatProperty.value(),this._prevAddPlusButton=d.addPlusButtonProperty.value(),this._prevShowOpenMarkerStatus=c.showMarketOpenStatusProperty.value();const t=this._model.watermarkSource();null!==t&&(this._prevWatermarkPreferences=t.properties().state())}redo(){null!==this._trading&&(this._trading.showSellBuyButtons.setValue(!0),this._trading.noConfirmEnabled.setValue(!1),this._trading.showOnlyRejectionNotifications.setValue(!1),this._trading.showPricesWith().zeroVolume.setValue(!0),this._trading.showPricesWith().spread.setValue(!0),this._trading.orderExecutedSoundParams.enabled.setValue(!1)),this._model.applyPreferences(this._defaultsPreferences),this._model.mainSeries().onChartStyleChanged(),this._model.updateScales(),(0,l.restoreDateFormatSettingsValue)(),(0,d.restoreAddPlusButtonSettingsValue)(),(0,c.restoreShowMarketOpenStatusProperty)();const e=this._model.watermarkSource();null!==e&&e.restorePropertiesDefaults()}undo(){null!==this._trading&&(this._trading.showSellBuyButtons.setValue((0,s.ensureNotNull)(this._oldShowSellBuyButtons)),this._trading.noConfirmEnabled.setValue((0,s.ensureNotNull)(this._oldNoConfirmEnabled)),this._trading.showOnlyRejectionNotifications.setValue((0, -s.ensureNotNull)(this._oldShowOnlyRejectionNotifications)),this._trading.showPricesWith().zeroVolume.setValue((0,s.ensureNotNull)(this._oldShowPricesWithZeroVolume)),this._trading.showPricesWith().spread.setValue((0,s.ensureNotNull)(this._oldShowPricesWithSpread)),this._trading.orderExecutedSoundParams.enabled.setValue((0,s.ensureNotNull)(this._oldOrderExecutedSoundEnabled))),this._model.applyPreferences(this._oldPreferences),this._model.mainSeries().onChartStyleChanged(),this._model.updateScales(),l.dateFormatProperty.setValue(this._prevDateFormat),c.showMarketOpenStatusProperty.setValue(this._prevShowOpenMarkerStatus),d.addPlusButtonProperty.setValue(this._prevAddPlusButton);const e=this._model.watermarkSource();null!==e&&null!==this._prevWatermarkPreferences&&e.properties().mergeAndFire(this._prevWatermarkPreferences)}}},97401:(e,t,i)=>{"use strict";i.d(t,{SetPriceScaleCurrencyUndoCommand:()=>o});var s=i(88537),r=i(35762),n=i(37667);class o extends r.UndoCommand{constructor(e,t,i,r){super(r),this._newSourcesCurrencies=new Map,this._oldSourcesCurrencies=new Map,this._showFade=!1,this._chartWidget=i;const o=i.model().mainSeries();for(const i of e.seriesLikeSources()){if(!i.isVisible()||!i.isActingAsSymbolSource().value())continue;const e=t||(0,n.symbolOriginalCurrency)((0,s.ensureNotNull)(i.symbolInfo()));this._newSourcesCurrencies.set(i.id(),e),this._oldSourcesCurrencies.set(i.id(),i.currency()),this._showFade=this._showFade||i===o&&i.currency()!==e}}redo(){this._applyCurrencies(this._newSourcesCurrencies)}undo(){this._applyCurrencies(this._oldSourcesCurrencies)}_applyCurrencies(e){this._showFade&&this._chartWidget.screen.show();const t=this._chartWidget.model().model();e.forEach((e,i)=>{(0,s.ensureNotNull)(t.dataSourceForId(i)).setCurrency(e)}),this._chartWidget.model().selectionMacro(e=>{e.clearSelection()})}}},59836:(e,t,i)=>{"use strict";i.d(t,{SetPriceScaleModeCommand:()=>o});var s=i(88564),r=i(35762),n=i(33291);class o extends r.UndoCommand{constructor(e,t,i,s){super(i),this._newMode=e,this._priceScaleId=t.id(),this._model=s,this._oldMode=t.mode()}redo(){this._applyMode(this._newMode)}undo(){this._applyMode(this._oldMode)}_applyMode(e){const t=this._findPriceScaleById();null!==t&&((0,s.saveDefaultProperties)(!0),t.setMode(e),(0,s.saveDefaultProperties)(!1),this._model&&(this._model.recalculateAllPanes((0,n.viewportChangeEvent)()),this._model.lightUpdate()))}_findPriceScaleById(){const e=this._model.panes();for(let t=0;t{"use strict";i.d(t,{SetPriceScaleSelectionStrategyCommand:()=>a});var s=i(88537),r=i(35762),n=i(74325);class o{constructor(e){this._leftScales=e.leftPriceScales().map(e=>e.id()),this._rightScales=e.rightPriceScales().map(e=>e.id())}restorePane(e){this._leftScales.reverse().map(t=>(0,s.ensureNotNull)(e.getPriceScaleById(t))).forEach(t=>e.movePriceScale(t,"left")),this._rightScales.reverse().map(t=>(0, -s.ensureNotNull)(e.getPriceScaleById(t))).forEach(t=>e.movePriceScale(t,"right"))}}class a extends r.UndoCommand{constructor(e,t,i){super(i),this._chartModel=e,this._targetStrategy=(0,n.createPriceScaleSelectionStrategy)(t),this._initialState=e.panes().map(e=>new o(e))}redo(){this._chartModel.panes().forEach(e=>e.setPriceScaleSelectionStrategy(this._targetStrategy)),this._chartModel.fullUpdate()}undo(){const e=this._chartModel.panes();for(let t=0;t{"use strict";i.d(t,{SetPriceScaleUnitUndoCommand:()=>o});var s=i(88537),r=i(35762),n=i(37667);class o extends r.UndoCommand{constructor(e,t,i,r){super(r),this._newSourcesUnits=new Map,this._oldSourcesUnits=new Map,this._showFade=!1,this._chartWidget=i;const o=i.model().mainSeries();for(const i of e.seriesLikeSources()){if(!i.isVisible()||!i.isActingAsSymbolSource().value())continue;const e=t||(0,n.symbolOriginalUnit)((0,s.ensureNotNull)(i.symbolInfo()),this._chartWidget.model().model().unitConversionEnabled());this._newSourcesUnits.set(i.id(),e),this._oldSourcesUnits.set(i.id(),i.unit()),this._showFade=this._showFade||i===o&&i.unit()!==e}}redo(){this._applyUnits(this._newSourcesUnits)}undo(){this._applyUnits(this._oldSourcesUnits)}_applyUnits(e){this._showFade&&this._chartWidget.screen.show();const t=this._chartWidget.model().model();e.forEach((e,i)=>{(0,s.ensureNotNull)(t.dataSourceForId(i)).setUnit(e)}),this._chartWidget.model().selectionMacro(e=>{e.clearSelection()})}}},870:(e,t,i)=>{"use strict";i.d(t,{SetScaleRatioPropertiesCommand:()=>o});var s=i(35762),r=i(88564),n=i(33291);class o extends s.UndoCommand{constructor(e,t,i,s){super(i),this._property=e,this._newValue=t,this._model=s,this._priceScale=this._model.mainSeries().priceScale(),this._oldValue=this._property.value(),this._oldMode=this._priceScale.mode()}redo(){this._oldValue=this._property.value(),this._oldMode=this._priceScale.mode(),(0,r.saveDefaultProperties)(!0),this._priceScale.setMode({autoScale:!1,percentage:!1,log:!1}),this._property.setValue(this._newValue),(0,r.saveDefaultProperties)(!1),this._model.recalculateAllPanes((0,n.viewportChangeEvent)()),this._model.lightUpdate()}undo(){(0,r.saveDefaultProperties)(!0),this._property.setValue(this._oldValue),this._priceScale.setMode(this._oldMode),(0,r.saveDefaultProperties)(!1),this._model.recalculateAllPanes((0,n.viewportChangeEvent)()),this._model.lightUpdate()}}},52546:(e,t,i)=>{"use strict";function s(e,t){const i=new Set,s=t=>{e.children(t,!1).forEach(e=>{i.has(e)||(i.add(e),s(e))})};return t.forEach(s),t.filter(e=>!i.has(e)).map(t=>function e(t,i){let s=[];const r=t.children(i,!1);for(let i=0;ie.concat(t),[])}i.d(t,{closeSourcesSet:()=>s})},13339:(e,t,i)=>{"use strict";i.d(t,{TimeScaleChangeUndoCommand:()=>o});var s=i(98125),r=i(35762);const n=(0,s.getLogger)("Chart.ChartUndoModel");class o extends r.UndoCommand{constructor(e,t,i){super(i,!1), -this._newRightOffsetAndBarSpacing=null,this.setCustomFlag("doesnt_affect_save",!0),this._model=e,this._rightOffsetAndBarSpacing=t}undo(){if(null!==this._newRightOffsetAndBarSpacing)return void n.logDebug("TimeScaleChangeUndoCommand.undo: Command is already undone");const e=this._model.timeScale();this._newRightOffsetAndBarSpacing={barSpacing:e.barSpacing(),rightOffset:e.rightOffset()},e.setBarSpacing(this._rightOffsetAndBarSpacing.barSpacing),e.setRightOffset(this._rightOffsetAndBarSpacing.rightOffset),this._model.lightUpdate()}redo(){if(null===this._newRightOffsetAndBarSpacing)return void n.logDebug("TimeScaleChangeUndoCommand.redo: Command is not undone");const e=this._model.timeScale();e.setBarSpacing(this._newRightOffsetAndBarSpacing.barSpacing),e.setRightOffset(this._newRightOffsetAndBarSpacing.rightOffset),this._model.lightUpdate(),this._newRightOffsetAndBarSpacing=null}}},35762:(e,t,i)=>{"use strict";i.d(t,{UndoCommand:()=>r});var s=i(24980);class r{constructor(e,t=!0){this._customFlags={},this._text=e||new s.TranslatedString("",""),this._executeOnPush=t}text(){return this._text}executeOnPush(){return this._executeOnPush}customFlag(e){return this._customFlags[e]}setCustomFlag(e,t){this._customFlags[e]=t}canMerge(e){return!1}merge(e){throw new Error("Should be re-implemented in child classes")}}},52940:(e,t,i)=>{"use strict";i.d(t,{createUndoHistory:()=>u});var s=i(88537),r=i(44556),n=i(16757),o=i(35762);class a extends o.UndoCommand{constructor(e,t,i){super(i),this._wv=e,this._newValue=t,this._oldValue=e.value()}redo(){this._wv.setValue(this._newValue)}undo(){this._wv.setValue(this._oldValue)}}var l=i(98125),c=i(2872),h=i.n(c);const d=(0,l.getLogger)("Common.UndoHistory");function u(){const e=[],t=new r.UndoStack,i=new r.UndoStack,o=new(h());function l(s){if(e.length>0)e[e.length-1].addCommand(s);else{i.clear();const e=t.head(),r=e&&e.text().originalText();e&&e.canMerge(s)?e.merge(s):t.push(s);const n=s.text().originalText();""!==n&&n!==r&&d.logNormal("DO: "+n)}s.executeOnPush()&&s.redo(),e.length||o.fire(c())}function c(){const e=t.head(),s=i.head();return{enableUndo:!t.isEmpty(),undoText:void 0===e?void 0:e.text().translatedText(),enableRedo:!i.isEmpty(),redoText:void 0===s?void 0:s.text().translatedText()}}return{beginUndoMacro:function(t){const i=new n.UndoMacroCommand(t);return e.push(i),i},clearStack:function(){t.clear(),i.clear(),o.fire(c())},createUndoCheckpoint:function(){return{lastActualCommand:t.isEmpty()?null:t.head()}},endUndoMacro:function(){const t=(0,s.ensureDefined)(e.pop());t.isEmpty()||l(t)},pushUndoCommand:l,redo:function(){if(i.isEmpty())return!1;const e=i.pop();return!!e&&(e.redo(),t.push(e),d.logNormal("REDO: "+e.text().originalText()),o.fire(c()),!0)},redoStack:function(){return i},setWatchedValue:function(e,t,i,s){if(e.value()!==t){const r=new a(e,t,i);r.setCustomFlag("doesnt_affect_save",!!s),l(r),r.redo()}},undo:function(){if(t.isEmpty())return!1;const e=t.pop();return!!e&&(e.undo(),i.push(e),d.logNormal("UNDO: "+e.text().originalText()),o.fire(c()),!0)},undoStack:function(){ -return t},undoToCheckpoint:function(e){for(;!t.isEmpty()&&e.lastActualCommand!==t.head();)t.pop().undo();i.clear(),o.fire(c())},state:c,onChange:function(){return o}}}},16757:(e,t,i)=>{"use strict";i.d(t,{UndoMacroCommand:()=>r});var s=i(35762);class r extends s.UndoCommand{constructor(e){super(e,!1),this._subcommands=[]}addCommand(e){this._subcommands.push(e)}isEmpty(){return 0===this._subcommands.length}redo(){for(let e=0;e=0;e--)this._subcommands[e].undo()}commands(){return this._subcommands}}},44556:(e,t,i)=>{"use strict";i.d(t,{UndoStack:()=>a});var s=i(35762),r=i(2872),n=i.n(r);const o=(0,i(98125).getLogger)("Common.UndoStack");class a{constructor(){this._commands=[],this._onChange=new(n())}onChange(){return this._onChange}isEmpty(){return 0===this._commands.length}clear(){this.isEmpty()||(this._commands.length=0,this._onChange.fire())}push(e){if(!(e instanceof s.UndoCommand))throw new TypeError("argument must be an instance of UndoCommand");this._commands.push(e),this._onChange.fire(e)}pop(){if(this.isEmpty())return void o.logDebug("pop: undo stack is empty");const e=this._commands.pop();return this._onChange.fire(e),e}head(){if(!this.isEmpty())return this._commands[this._commands.length-1]}}},36551:(e,t,i)=>{"use strict";i.d(t,{UnmergeDownUndoCommand:()=>o,UnmergeUpUndoCommand:()=>a,UnmergeToNewBottomPane:()=>l});var s=i(88537),r=i(21749);class n extends r.MoveSourceUndoCommand{constructor(e,t,i){super(e,t,i)}redo(){const e=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId)),t=(0,s.ensureNotNull)(this._chartModel.paneForSource(e)),i=this._chartModel.children(e,!0);t.bulkActionMacro(()=>{i.forEach(e=>this._chartModel.detachSource(e)),this._chartModel.detachSource(e)});const r=this._chartModel.createPane(this.targetPaneIndex()),n=r.findSuitableScale(e);r.bulkActionMacro(()=>{r.addDataSource(e,n,!1),i.forEach(e=>r.addDataSource(e,n,!1))}),(0,s.ensureNotNull)(e.priceScale()).restoreState(this._newPriceScaleState(r.isOverlay(e))),this._chartModel.fullUpdate(),this._chartModel.setShouldBeSavedEvenIfHidden(!0)}undo(){const e=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId)),t=(0,s.ensureNotNull)(this._chartModel.paneForSource(e)),i=this._chartModel.children(e,!0);t.bulkActionMacro(()=>{i.forEach(e=>this._chartModel.detachSource(e));const t=this._chartModel.detachSource(e);(0,s.assert)(t,"Undo of detaching must remove pane")});const r=this._chartModel.panes()[this._initialPaneIndex];let n=r.getPriceScaleById(this._initialPriceScaleId);null===n&&(n=r.createPriceScaleAtPosition(this._initialPriceScalePosition,this._initialPriceScaleIndex)),r.bulkActionMacro(()=>{r.addDataSource(e,n,!0),i.forEach(e=>r.addDataSource(e,n,!1))}),(0,s.ensureNotNull)(e.priceScale()).restoreState(this._originalPriceScaleState()),this._chartModel.fullUpdate()}}class o extends n{constructor(e,t,i){super(e,t,i)}targetPaneIndex(){return this._initialPaneIndex+1}}class a extends n{constructor(e,t,i){ -super(e,t,i)}targetPaneIndex(){return this._initialPaneIndex}}class l extends n{constructor(e,t,i){super(e,t,i)}targetPaneIndex(){return this._chartModel.panes().length}}},79222:(e,t,i)=>{"use strict";i.d(t,{unitConvertibleGroups:()=>n,sourceNewUnitOnPinningToPriceScale:()=>o});var s=i(79680),r=i(37667);function n(e,t,i){const s=(0,r.symbolUnitConvertibleGroupsIfExist)(e,!0);if(null!==s)return s;const n=i.unitGroupById(t);return null===n?[]:[n]}function o(e,t,i,r){let o=null;if(i.unitConversionEnabled()&&(0,s.isSymbolSource)(e)){const s=i.availableUnits(),a=t.unit(s),l=e.unit(),c=null===l?[]:n(e.symbolInfo(),l,s);null!==a&&null!==a.selectedUnit&&!a.allUnitsAreOriginal&&a.selectedUnit!==l&&(r&&null===l||null!==l&&s.convertible(l,c))&&(o=a.selectedUnit)}return o}},10133:(e,t,i)=>{"use strict";i.d(t,{createVisibilityController:()=>l});var s=i(28353),r=i(32563),n=i(32255),o=i(56840);function a(e){return"alwaysOn"===e||"alwaysOff"===e?e:"visibleOnMouseOver"}function l(e,t){let i,l;function c(){if(!i){i=(0,n.createPrimitiveProperty)();let s=o.getValue(e);void 0===s&&void 0!==t&&(s=o.getValue(t)),i.setValue(a(s)),i.subscribe(i,t=>{o.setValue(e,a(t.value()))})}return i}return{property:c,availableValues:function(){return[{id:"visibleOnMouseOver",value:"visibleOnMouseOver",title:(0,s.t)("Visible on mouse over")},{id:"alwaysOn",value:"alwaysOn",title:(0,s.t)("Always visible")},{id:"alwaysOff",value:"alwaysOff",title:(0,s.t)("Always invisible")}]},actualBehavior:function(){if(!l){l=(0,n.createPrimitiveProperty)();const e=c(),t=()=>{let t=e.value();"alwaysOn"!==t&&"alwaysOff"!==t&&(t=r.mobiletouch?"alwaysOn":"visibleOnMouseOver"),l&&l.setValue(t)};e.subscribe(l,t),t()}return l}}}},62587:(e,t,i)=>{"use strict";i.r(t),i.d(t,{watermarkProperty:()=>h,restoreWatermarkPropertyDefaults:()=>d});var s=i(24377),r=i(56840),n=i(2015),o=i.n(n);const a={visibility:!1,color:"rgba(80, 83, 94, 0.25)"};function l(){const e=r.getJSON("symbolWatermark");let t=Object.assign({},a,e);if(void 0===e){if(void 0!==r.getJSON("chartproperties")){const e=r.getJSON("chartproperties").symbolWatermarkProperties;if(void 0!==e){const i=(0,s.tryParseRgba)(e.color);t=Object.assign(t,e),null!==i&&(0!==i[3]?t.visibility=!0:(i[3]=.25,t.color=(0,s.rgbaToString)(i)))}}delete t.transparency}return t}let c=null;function h(){return null===c&&(c=new(o())(l()),r.onSync.subscribe(null,()=>{null!==c&&c.mergeAndFire(l())}),c.listeners().subscribe(null,()=>{null!==c&&r.setJSON("symbolWatermark",c.state())})),c}function d(){null!==c&&c.mergeAndFire(a)}},39094:(e,t,i)=>{"use strict";var s=i(35218).translatedIntervalString,r=i(1570).getTranslatedSymbolDescription,n=i(22799).CHART_FONT_FAMILY,o=i(62587),a=o.watermarkProperty,l=o.restoreWatermarkPropertyDefaults,c=i(93435).drawScaled,h=i(59803).applyDefaultsOverrides,d=i(59803).applyPropertiesOverrides;t.Watermark=function(e,t){var i={},o=a();function u(e,t){var s=e.font;return i.hasOwnProperty(s)||(i[s]={}),i[s].hasOwnProperty(t)||(i[s][t]=e.measureText(t).width),i[s][t]}h(o,void 0,!1,"symbolWatermarkProperties"), -o.listeners().subscribe(this,(function(){e.updateSource(this)})),this.destroy=function(){o.listeners().unsubscribeAll(this)},this.properties=function(){return o},this.restorePropertiesDefaults=function(){l()},this.applyOverrides=function(e){d(o,void 0,!1,e,"symbolWatermarkProperties")};var p={renderer:function(e,i){return{draw:function(a,l){c(a,l.pixelRatio,(function(){var l=t.symbolInfo();a.fillStyle=o.color.value();var c,h=l.name;/QUANDL/.test(l.exchange)&&((c=h.split(/\//)).length&&(h=c[c.length-1]));for(var d={description:l.description,short_description:l.short_description,pro_name:l.pro_name,short_name:l.name,local_description:l.local_description,language:l.language},p=[{text:h?h+", "+s(t.interval()):"",font:"96px "+n,lineHeight:117,vertOffset:0},{text:r(d)||"",font:"48px "+n,lineHeight:58,vertOffset:5}],_=0,m=0;mi?i/g:1,_+=v.lineHeight*v.zoom}}var f=Math.max((e-_)/2,0);for(m=0;m{"use strict";i.d(t,{reorderDataSourcesStateZOrder:()=>S,newLineToolZOrder:()=>w,newStudyZOrder:()=>C,moveAfterSource:()=>E,moveBeforeSource:()=>k});var s=i(14291),r=i(81851),n=i(56972),o=i(50669),a=i(55257);function l(e){return(0,s.isLineTool)(e)&&!e.isSpeciallyZOrderedSource()}function c(e){return(0,r.isStudy)(e)&&!e.isSpeciallyZOrderedSource()}function h(e,t){return e.zorder-t.zorder}function d(e,t){(0,o.isMainSeriesState)(e)?e.zorder=0:e.zorder=t}function u(e,t){e.setZorder(t)}function p(e){return e.zorder()}function _(e){return Math.round(1e3*e)/1e3}function m(e,t){const i=Math.max(e,t),s=Math.min(e,t);return Math.max(0,Math.ceil(i)-Math.floor(s)-1)}function g(e,t,i){let s=0;const r=(n=t,o=e,Math.abs(1e3*o-1e3*n)/1e3);var n,o,a;return r>i?(e=Math.trunc(e),s=Math.floor(r/(i+1))):(a=r/(i+1),s=Math.floor(1e3*a)/1e3),{startZOrder:e,zOrderStep:s}}function f(e,t,i,s){let r=e.length,n=t;for(let t=e.length-1;t>=-1;t--)if(-1===t||s(e[t])){const s=t;let o=T(n);if(r-1===s)s>=0&&i(e[s],o);else{const t=m(r,s);let a=0;for(;0===a;){const e=g(n,o,t);n=e.startZOrder,a=e.zOrderStep,0===a&&(o-=1e4,0===o&&(o-=1e4))}let l=r-1;for(;l>s;){const t=_(n-a);i(e[l],t),n=t,l--}s>=0&&i(e[s],o)}n=o,r=s}}function v(e,t,i,s){let r=-1,n=t;for(let t=0;t<=e.length;t++)if(t===e.length||s(e[t])){const s=t;let o=P(n);if(r+1===s)s<=e.length-1&&i(e[s],o);else{const t=m(r,s);let a=0;for(;0===a;){const e=g(n,o,t);n=e.startZOrder,a=e.zOrderStep,0===a&&(o+=1e4,0===o&&(o+=1e4))}let l=r+1;for(;l<=s-1;){const t=_(n+a);i(e[l],t),n=t,l++}s<=e.length-1&&i(e[s],o)}n=o,r=s}}function S(e){!function(e,t,i,s,r,n){let o=null;const a=[];for(const r of e)t(r)?(a.push(r),o=r):(i(r)||s(r))&&a.push(r);a.sort(n),null!==o&&r(o,0);const l=null===o?-1:a.indexOf(o);-1!==l?(f(a.slice(0,l),0,r,i), -v(a.slice(l+1),0,r,i)):v(a,0,r,i)}(e,o.isMainSeriesState,o.isStudyState,o.isLineToolState,d,h)}function y(e,t){const i=Math.floor(e/1e4);let s=t.get(i);return void 0===s&&(s=[],t.set(i,s)),s}function b(e,t,i,s,r,n){let o=-1/0,a=1/0,l=-1/0,c=0;const h=new Map;for(let s=0;sr(e)-r(t));let p=T(r(u[0]));const m=P(p),f=g(p,m,u.length+1).zOrderStep;return 0!==f?(u.forEach(e=>{const t=_(p+f);s(e,t),p=t}),_(p+f)):_(m+5e3)}function w(e,t){return b(e,l,c,u,p,t)}function C(e){let t=-1e4;for(const i of e)c(i)&&(t=Math.min(t,i.zorder()-1e4));return 0===t?-1e4:t}function P(e){const t=1e4*Math.ceil(e/1e4);return t===e?t+1e4:t}function T(e){const t=1e4*Math.floor(e/1e4);return t===e?t-1e4:t}function x(e,t,i,s,r,n,o){const l=t.length,{newItems:c,movedItemsStartIndex:h}=i>0?(0,a.moveAfter)(e,t,i-1):(0,a.moveBefore)(e,t,0);let d=!1;for(let t=h;tr(e))?function(e,t,i,s,r,n){let o,a,l=-1,c=-1;0===i?(c=I(e,i+t,s),a=n(e[c])):i+t===e.length?(l=M(e,i-1,s),o=n(e[l])):(l=M(e,i-1,s),o=n(e[l]),c=I(e,i+t,s),a=n(e[c]));if((void 0===o||o<0)&&void 0!==a&&a<=0)f(e.slice(0,c),a,r,s);else if((void 0===a||a>0)&&void 0!==o&&o>=0)v(e.slice(l+1),o,r,s);else{const n=i+t,o=e.length-i;n0)&&void 0!==a&&a>=0){c=a;const e=void 0!==l?l:P(a),s=g(c,e,t);c=s.startZOrder,p=s.zOrderStep,d=i,u=d+t,h=1}if(0!==p)for(;d!==u;){const t=_(c+h*p);n(e[d],t),c=t,d+=h}else{const t=e.findIndex(e=>r(e));-1!==t?(f(e.slice(0,t),0,n,s),v(e.slice(t+1),0,n,s)):v(e,0,n,s)}}(c,l,h,r,s,n,o)}function I(e,t,i){for(;t=0&&i(e[t]);)t--;return Math.max(0,t)}function L(e,t,i,s,r,n,o){const a=e.indexOf(i)+1;x(e,t,a,s,r,n,o)}function A(e,t,i,s,r,n,o){const a=e.indexOf(i);x(e,t,a,s,r,n,o)}function E(e,t,i){L(e,t,i,n.isSeries,c,u,p)}function k(e,t,i){A(e,t,i,n.isSeries,c,u,p)}},89453:(e,t,i)=>{"use strict";i.d(t,{setSymbolSearchCompleteOverrideFunction:()=>r,getSymbolSearchCompleteOverrideFunction:()=>n});let s=e=>Promise.resolve(e);function r(e){s=e}function n(){return s}},67072:(e,t,i)=>{"use strict";e=i.nmd(e);var s=i(2015),r=i(98125).getLogger("Chart.Study.MetaInfo"),n=i(59572).applyOverridesToStudyDefaults,o={};function a(e){ -TradingView.merge(this,{palettes:{},inputs:[],plots:[],graphics:{},defaults:{}}),TradingView.merge(this,e);var t=e.fullId||e.id;TradingView.merge(this,a.parseIdString(t))}a.VERSION_STUDY_ARG_SOURCE=41,a.METAINFO_FORMAT_VERSION_SOS_V2=42,a.VERSION_PINE_PROTECT_TV_4164=43,a.CURRENT_METAINFO_FORMAT_VERSION=52,a.VERSION_NEW_STUDY_PRECISION_FORMAT=46,a.CHILD_STUDY_ALLOWED_PLOT_TYPES=["line"],a.canPlotBeSourceOfChildStudy=function(e){return a.CHILD_STUDY_ALLOWED_PLOT_TYPES.includes(e)},a.CHILD_STUDY_EXCLUDE_IDS=["CorrelationCoefficient@tv-basicstudies","Correlation - Log@tv-basicstudies-1"],a.CHILD_STUDY_PARENT_EXCLUDE_IDS=[],a.FilledArea={},a.FilledArea.TYPE_PLOTS="plot_plot",a.FilledArea.TYPE_HLINES="hline_hline",a.versionOf=function(e){var t="_metainfoVersion"in e&&isNumber(e._metainfoVersion)?e._metainfoVersion:0;return t<0&&r.logError("Metainfo format version cannot be negative: "+t),t},a.parseIdString=function(e){var t={};if(-1===e.indexOf("@"))t.shortId=e,t.packageId="tv-basicstudies",t.id=e+"@"+t.packageId,t.version=1;else{var i=e.split("@");t.shortId=i[0];var s=i[1].split("-");if(3===s.length)t.packageId=s.slice(0,2).join("-"),t.id=t.shortId+"@"+t.packageId,t.version=s[2];else if(1===s.length&&"decisionbar"===s[0])t.packageId="les-"+s[0],t.id=t.shortId+"@"+t.packageId,t.version=1;else{if(1!==s.length)throw new Error("unexpected study id:"+e);t.packageId="tv-"+s[0],t.id=t.shortId+"@"+t.packageId,t.version=1}}if(t.fullId=t.id+"-"+t.version,"tv-scripting"===t.packageId){var r=t.shortId;if(0===r.indexOf("Script$")||0===r.indexOf("StrategyScript$")){var n=r.indexOf("_");t.productId=n>=0?r.substring(0,n):t.packageId}else t.productId=t.packageId}else t.productId=t.packageId;return t},a.getPackageName=function(e){return(/^[^@]+@([^-]+-[^-]+)/.exec(e||"")||[0,"tv-basicstudies"])[1]},a.cutDollarHash=function(e){var t=e.indexOf("$"),i=e.indexOf("@");return-1===t?e:e.substring(0,t)+(i>=0?e.substring(i):"")},a.hasUserIdSuffix=function(e){return/^USER;[\d\w]+;\d+$/.test(e)},a.isStandardPine=function(e){return/^(Strategy)?Script\$STD;.*@tv-scripting$/.test(e)},a.getSourceIdByInputs=function(e,t){if(!Array.isArray(e)||!t)return null;for(var i=0;i0){var l=o.replace(/^[^\$]+/,t);i.inputs[n.id].setValue(l)}}}},a.patchChildStudyMetaInfoState=function(e){e.state&&function e(t){if("object"==typeof t)for(var i in t)"string"==typeof t[i]&&/^[^\$]+\$\d+$/.test(t[i])?t[i]=t[i].replace(/^[^\$]+/,"{pid}"):e(t[i])}(e.state.inputs),e.state.isChildStudy=!0},a.getStudyIdWithLatestVersion=function(e){const t=a.cutDollarHash(e.id);let i=t -;return t.indexOf("@tv-scripting")>=0?i+="-101!":i+="-"+e.version,i},a.prototype.parseValue=function(e,t){return"bool"===e?TradingView.parseBool(t):t},a.prototype.defaultInputs=function(){for(var e=[],t=0;t0?e[0].id:null},a.prototype.createDefaults=function(){if(this.defaults){var e=TradingView.clone(this.defaults);e.precision="default";var t=a.getStudyPropertyRootName(this);defaults.create(t,e)}},a.prototype.removeDefaults=function(){defaults.remove(a.getStudyPropertyRootName(this))},a.findStudyMetaInfoByDescription=function(e,t){if(e){for(var i=0;i{"use strict";window.TradingView=window.TradingView||{},window.requireAll=function(e){return e.keys().map(e)},i(28353),i(32563).setClasses(),i(9196),i(56186).install(),i(49483),i(80643),i(29892),i(94419),i(11417),i(11372),i(37562),i(56840)},97881:(e,t,i)=>{"use strict";var s=i(28353).t;i(70606);var r=i(88537).assert;i(96488),i(59803),i(87980);const n=i(67337);JSON.parse(urlParams.disabledFeatures).forEach((function(e){n.setEnabled(e,!1)})),JSON.parse(urlParams.enabledFeatures).forEach((function(e){n.setEnabled(e,!0)})),function(){window.__settingsOverrides=window.parent[window.urlParams.uid].settingsOverrides||{};var e=window.parent[window.urlParams.uid].settingsAdapter;null!=e?(TVSettings.setSettingsAdapter(e),TVSettings.sync()):n.enabled("use_localstorage_for_settings")&&TVSettings.sync()}();var o=i(22799).setChartFontFamily;window.urlParams.customFontFamily&&o(window.urlParams.customFontFamily);var a=i(84120).RestrictedToolsetBootloader,l=i(9753).HeaderToolbarBootloader,c=i(84746).DrawingToolbarBootloader,h=i(85593).isDrawingToolbarVisible;(0,i(32563).setClasses)();var d=i(6087),u=i(45345).setTheme,p=i(33225),_=i(17437),m=i(25760),g=i(47193).migrateShortcut,f=i(76900).ChartSaver,v=i(41051).SaveChartService,S=i(86879).LoadChartService,y=i(46723).StudyTemplates,b=i(22668).FavoriteStudyTemplateService,w=i(82992).linking,C=i(76422),P=i(97098).formatterOptions,T=i(69147).customFormatters,x=i(34615).StudyMarket,I=i(21097).TVXWindowEvents,M=i(81836).createDeferredPromise,L=i(15840).deepExtend,A=i(9423).randomHash,E=i(65576).convertPropertyToWatchedValue,k=i(95707).property,D=i(62428).property,V=i(21761).dateFormatProperty,B=i(43370).default,N=i(29823).Interval,R=i(89356).Root,O=i(28325).ChartPage,F=i(39138).destroyQuoteSessions,W=i(73383).TIMEFRAMETYPE,H=new O(new R(window).allocate()),z=H.allocate({areaName:"center"}),U=(window.parent[urlParams.uid].brokerFactory,Boolean(!1)),j=i(54427).CHART_WIDGET_COLLECTION_SERVICE,G=i(16216);i(65235);var q=i(43425),Y=i(12409).createFavoriteDrawingToolbar,K=i(77317).setupChartEventHint,$=i(81602).setupChartScreenshotHint,X=i(87983),Z=i(67072),J=i(28399);i(27595),i(15495);var Q=i(78136).setSearchRequestDelay,ee=i(16654),te=i(216),ie=i(17937).addBrandingSource,se=i(13221).setAdditionalSymbolInfoFields,re=i(89453).setSymbolSearchCompleteOverrideFunction,ne=i(52741).DropdownApi,oe=i(97056).ContextMenuManager;const ae=new AbortController;var le=window.parent[urlParams.uid].getCustomIndicators,ce=M(),he=M(),de=n.enabled("left_toolbar");if(void 0!==window.parent[urlParams.uid].contextMenu){var ue=window.parent[urlParams.uid].contextMenu;void 0!==ue.items_processor&&oe.setCustomItemsProcessor(ue.items_processor),void 0!==ue.renderer_factory&&oe.setCustomRendererFactory(ue.renderer_factory)} -if(Promise.all([ce.promise,he.promise]).then((function(){window.ChartApiInstance.start()})),"function"==typeof le){var pe=le(te);pe&&pe.then?pe.then((function(e){if(!Array.isArray(e))return console.warn("custom_indicators_getter should be a function that returns a Promise object which result is an array of custom indicators"),void ce.resolve();JSServer.studyLibrary.push.apply(JSServer.studyLibrary,e),ce.resolve(),console.log("{0} custom indicators loaded.".format(e.length))})).catch((function(e){console.warn("Error loading custom indicators "+e),ce.resolve()})):(console.warn("custom_indicators_getter should be a function that returns a Promise object"),ce.resolve())}else ce.resolve();window.widgetReady=function(e){C.subscribe("onChartReady",e)};var _e=urlParams.theme&&urlParams.theme.toLowerCase();function me(e){window.__defaultsOverrides=window.__defaultsOverrides||{},L(window.__defaultsOverrides,e),void 0!==TradingView.defaultProperties&&void 0!==TradingView.defaultProperties.chartproperties&&(window.applyDefaultsOverrides(TradingView.defaultProperties.chartproperties),window.applyDefaultOverridesToLinetools())}!function(e){d.themes[e]&&u(e)}(_e),window.applyStudiesOverrides=function(e){e&&(window.chartWidgetCollection?window.chartWidgetCollection.applyStudiesOverrides(e):Z.mergeDefaultsOverrides(e))},window.applyOverrides=function(e){me(e),window.chartWidgetCollection&&window.chartWidgetCollection.applyOverrides(e)},window.doWhenApiIsReady=function(e){window.tradingViewApi?e():he.promise.then(e)},window.applyTradingCustomization=function(e){for(var t in e.order)TradingView.defaultProperties.linetoolorder[t]=e.order[t];for(var t in e.position)TradingView.defaultProperties.linetoolposition[t]=e.position[t]},window.changeTheme=function(e,t){var i=d.themes[e.toLowerCase()];return i?window.tradingViewApi.themes().setStdTheme(i.name,!0,t&&t.disableUndo):Promise.resolve()},window.getTheme=function(){return window.tradingViewApi.themes().getCurrentThemeName()},window.is_authenticated=!1;JSON.parse(window.urlParams.brokerConfig);s("charts by TradingView"),s("powered by TradingView"),s("by TradingView");var ge=null,fe=M(),ve=null,Se=function(){if(n.setEnabled("charting_library_debug_mode","true"===urlParams.debug),n.setEnabled("chart_property_page_trading",!1),n.enabled("remove_library_container_border")){var e=document.querySelector("#library-container");null!==e&&(e.style.border="0px",e.style.padding="1px")}n.enabled("no_min_chart_width")&&(window.document.body.style.minWidth="0px"),null!=urlParams.studiesOverrides&&Z.mergeDefaultsOverrides(JSON.parse(urlParams.studiesOverrides)),r(void 0===TradingView.defaultProperties,"Default properties are inited before applying overrides"),me(JSON.parse(urlParams.overrides)),urlParams.numeric_formatting=urlParams.numeric_formatting&&JSON.parse(urlParams.numeric_formatting),urlParams.numeric_formatting&&"string"==typeof urlParams.numeric_formatting.decimal_sign&&(P.decimalSign=urlParams.numeric_formatting.decimal_sign[0]), -window.ChartApiInstance=new X(window.parent[urlParams.uid].datafeed),window.parent[urlParams.uid].customFormatters&&(window.parent[urlParams.uid].customFormatters.timeFormatter&&(T.timeFormatter=window.parent[urlParams.uid].customFormatters.timeFormatter),window.parent[urlParams.uid].customFormatters.dateFormatter&&(T.dateFormatter=window.parent[urlParams.uid].customFormatters.dateFormatter),window.parent[urlParams.uid].customFormatters.tickMarkFormatter&&(T.tickMarkFormatter=window.parent[urlParams.uid].customFormatters.tickMarkFormatter),window.parent[urlParams.uid].customFormatters.priceFormatterFactory&&(T.priceFormatterFactory=window.parent[urlParams.uid].customFormatters.priceFormatterFactory),window.parent[urlParams.uid].customFormatters.studyFormatterFactory&&(T.studyFormatterFactory=window.parent[urlParams.uid].customFormatters.studyFormatterFactory)),window.ChartApiInstance.setStudiesAccessController(window.ChartApiInstance.createStudiesAccessController(urlParams.studiesAccess));var t=urlParams.chartContent?JSON.parse(urlParams.chartContent).json:void 0,o=urlParams.chartContentExtendedData?JSON.parse(urlParams.chartContentExtendedData):t?t.extendedData:void 0,u=urlParams.interval||"D",_=function(e){var t=/(\d+)(\w+)/;return e.map((function(e){var i=t.exec(e.text),r=i[2].toLowerCase(),n=parseInt(i[1]),o="y"===r?12*n+"M":n+r,a=N.parse(e.resolution);return{text:s(e.title)||n+s(r,{context:"dates",count:n}),description:e.description||"",value:{value:o.toUpperCase(),type:W.PeriodBack},targetResolution:a.value(),requiresIntraday:a.isIntraday()}}))}(JSON.parse(urlParams.timeFrames)),m={resizerBridge:z,padding:n.enabled("border_around_the_chart")?2:0,content:t,widgetOptions:{addToWatchlistEnabled:!1,hideIdeas:!0,addVolume:window.ChartApiInstance.studiesAccessController.isToolEnabled("Volume"),muteSessionErrors:!0,timezone:urlParams.timezone,defSymbol:urlParams.symbol,defInterval:u,compareSymbols:urlParams.compareSymbols&&JSON.parse(urlParams.compareSymbols),defTimeframe:window.parent[urlParams.uid].timeframe,paneContextMenuEnabled:n.enabled("pane_context_menu"),paneContextMenu:{mainSeriesTrade:U},priceScaleContextMenuEnabled:n.enabled("scales_context_menu"),currencyConversionEnabled:n.enabled("pricescale_currency"),unitConversionEnabled:n.enabled("pricescale_unit"),legendWidgetEnabled:n.enabled("legend_widget"),legendWidget:{contextMenu:{settings:n.enabled("show_chart_property_page"),showOpenMarketStatus:n.enabled("display_market_status")}},sourceStatusesWidget:{errorSolution:!1},marketStatusWidgetEnabled:n.enabled("display_market_status"),chartWarningWidget:{subscriptionFullInfo:!1},timeScaleWidget:{contextMenuEnabled:n.enabled("scales_context_menu"),timezoneMenuEnabled:n.enabled("timezone_menu"),priceAxisLabelsOptions:{showLabels:n.enabled("main_series_scale_menu")}},timeScale:{preserveBarSpacing:!1,lockVisibleTimeRangeOnResize:n.enabled("lock_visible_time_range_on_resize"),rightBarStaysOnScroll:n.enabled("right_bar_stays_on_scroll"), -minBarSpacing:urlParams.time_scale&&JSON.parse(urlParams.time_scale).min_bar_spacing},goToDateEnabled:n.enabled("go_to_date"),crossHair:{menuEnabled:n.enabled("chart_crosshair_menu")},handleScale:{mouseWheel:n.enabled("mouse_wheel_scale"),pinch:n.enabled("pinch_scale"),axisPressedMouseMove:{time:n.enabled("axis_pressed_mouse_move_scale"),price:n.enabled("axis_pressed_mouse_move_scale")}},handleScroll:{mouseWheel:n.enabled("mouse_wheel_scroll"),pressedMouseMove:n.enabled("pressed_mouse_move_scroll"),horzTouchDrag:n.enabled("horz_touch_drag_scroll"),vertTouchDrag:n.enabled("vert_touch_drag_scroll")},shiftVisibleRangeOnNewBar:n.enabled("shift_visible_range_on_new_bar"),croppedTickMarks:n.enabled("cropped_tick_marks"),countdownEnabled:n.enabled("countdown"),indicatorsDialogShortcutEnabled:n.enabled("insert_indicator_dialog_shortcut")},seriesControlBarEnabled:n.enabled("timeframes_toolbar"),seriesControlBar:{timeFramesWidgetEnabled:!0,timeFramesWidget:{goToDateEnabled:n.enabled("go_to_date"),availableTimeFrames:function(e,t){return e?t!==ee.STATUS_DELAYED&&t!==ee.STATUS_DELAYED_STREAMING&&t!==ee.STATUS_READY?[]:_.filter((function(t){return!(t.requiresIntraday&&!e.has_intraday)&&!(e.supported_resolutions&&!e.supported_resolutions.includes(t.targetResolution))})):[]}},timeWidgetEnabled:!0,timeWidget:{timezoneMenuEnabled:n.enabled("timezone_menu")},adjustForDividendsButtonEnabled:!1,sessionIdButtonEnabled:n.enabled("pre_post_market_sessions"),backAdjustmentButtonEnabled:!1,settlementAsCloseButtonEnabled:!1,percentageScaleButtonEnabled:!0,logScaleButtonEnabled:!0,autoScaleButtonEnabled:!0,fullscreenButtonEnabled:!0,mobileChangeLayoutEnabled:!1},globalEvents:!0,snapshotUrl:urlParams.snapshotUrl,mobileForceChartMaximizeEnabled:!1,saveChartEnabled:n.enabled("save_shortcut")};de&&(Y(),m.widgetOptions.isDrawingToolbarVisible=h),o&&(m.metaInfo={id:o.uid,name:o.name,description:o.description,uid:o.uid,username:"",tags:""}),window.parent[urlParams.uid].additionalSymbolInfoFields&&se(window.parent[urlParams.uid].additionalSymbolInfoFields),window.parent[urlParams.uid].symbolSearchComplete&&re(window.parent[urlParams.uid].symbolSearchComplete);var g=window.chartWidgetCollection=new q(m);let M=!1;g.onAboutToBeDestroyed.subscribe(null,()=>{M=!0},!0),ie(g),window.studyMarket=new x(g),void 0!==G&&G.registerService(j,g),g.activeChartWidget.subscribe((function(e){C.emit("activeChartChanged",g.getAll().indexOf(e))})),window.saver=new f(g);var L=new v(g,window.saver),A=new S(g);window.chartWidget=g.activeChartWidget.value(),window.pro=new TradingView.Pro;var E=function(e){if(!n.enabled("header_widget"))return null;var t=H.allocate({areaName:"top"}),s=new(0,i(68425).ChartChangesWatcher)(e.chartWidgetCollection.undoHistory,e.chartWidgetCollection.lineToolsSynchronizerHasChanges,window.saver,C),r=JSON.parse(urlParams.favorites);r.intervals=r.intervals.map((function(e){var t=""+e;return t.match(/1[DWMYdwmy]/)&&(t=t.slice(1)),t}));var o=null;n.enabled("study_templates")&&(o=new b(I,TVSettings),ve=new y({ -chartWidgetCollection:e.chartWidgetCollection,favoriteStudyTemplatesService:o}));var c=void 0,h=urlParams.header_widget_buttons_mode;"fullsize"===h&&(c=["full"]);"compact"===h&&(c=["small"]);return new l(new a,{chartSaver:window.saver,chartApiInstance:ChartApiInstance,chartWidgetCollection:e.chartWidgetCollection,defaultFavoriteStyles:r.chartTypes,defaultFavoriteIntervals:r.intervals,hideStudyTemplates:!0,resizerBridge:t,studyMarket:window.studyMarket,studyTemplates:ve,favoriteStudyTemplatesService:o,allowedModes:c,saveChartService:e.saveChartService,loadChartService:e.loadChartService,chartChangesWatcher:s,onClick:Me,snapshotUrl:e.snapshotUrl})}({chartWidgetCollection:g,saveChartService:L,loadChartService:A,snapshotUrl:urlParams.snapshotUrl});null!==E?E.load().then((function(e){ge=e.getComponent(),fe.resolve()})):(fe.promise.catch((function(){})),fe.reject("header widget is not loaded"));var k=function(e){if(de){var t=urlParams.toolbarbg&&/^[0-9a-f]+$/i.test(urlParams.toolbarbg)?String(urlParams.toolbarbg):void 0;if(t){var i=document.createElement("style");i.textContent="body,.chart-controls-bar,#footer-chart-panel{background-color:#"+t+" !important}",document.head.appendChild(i)}return new c({bgColor:t,chartWidgetCollection:e,drawingsAccess:urlParams.drawingsAccess?JSON.parse(urlParams.drawingsAccess):void 0,resizerBridge:H.allocate({areaName:"left"}),onClick:Me})}return null}(g),D=null;window.tradingViewApi=new J({chartWidgetCollection:g,chartApiInstance:window.ChartApiInstance,saveChartService:L,loadChartService:A});if(w.bindToChartWidgetCollection(g),TradingView.isNaN(urlParams.studyCountLimit)||(TradingView.STUDY_COUNT_LIMIT=Math.max(2,+urlParams.studyCountLimit)),!TradingView.isNaN(urlParams.ssreqdelay)){var V=Math.max(0,+urlParams.ssreqdelay);Q(V)}window.ChartApiInstance.connect(),Promise.all([i.e(5514),i.e(9129),i.e(2e3),i.e(6363),i.e(3466),i.e(7836),i.e(8463),i.e(3921),i.e(7427),i.e(1112),i.e(6909),i.e(5998),i.e(6416),i.e(7419),i.e(3520),i.e(9042),i.e(323),i.e(2849),i.e(880),i.e(1075),i.e(9505),i.e(1890),i.e(1784),i.e(7210),i.e(2306)]).then(i.t.bind(i,87805,23)).then(({default:e})=>{M||(window.lineToolPropertiesToolbar=new e(g))});var R=document.querySelector(".tv-content");function O(){k&&k.load(ae.signal),D&&D.load(ae.signal).then((function(e){window.footerWidget=e.getComponent()}))}null!==R&&R.addEventListener("contextmenu",(function(e){null!==e.target&&"input"!==e.target.tagName.toLowerCase()&&"textarea"!==e.target.tagName.toLowerCase()&&e.preventDefault()})),he.resolve(),g.undoHistory.undoStack().onChange().subscribe(null,B((function(e){e&&!e.customFlag("doesnt_affect_save")&&C.emit("onAutoSaveNeeded")}),1e3*(urlParams.autoSaveDelay||5),{leading:!1,trailing:!0})),window.chartWidget.withModel(null,(function(){if(ChartApiInstance.on("realtime_tick",(function(e){C.emit("onTick",e)})),!d.savedThemeName()&&_e){var e=d.getStdTheme(_e);e&&e.content&&void 0===t&&g.applyTheme({theme:e.content,onlyActiveChart:!1,restoreNonThemeDefaults:!1,themeName:_e,standardTheme:!0,syncState:!0,noUndo:!0 -}).then(()=>window.applyOverrides(window.__defaultsOverrides))}n.enabled("charting_library_debug_mode")&&C.subscribeToAll((function(){var e=Array.prototype.slice.call(arguments);console.log('Event "{0}", arguments: {1}'.format(e[0],JSON.stringify(e.slice(1))))})),K&&(K(g),K=null),$&&($(g,{seriesControlBarEnabled:n.enabled("timeframes_toolbar")}),$=null)})),p.isAnyChartWidgetInitialized(g)?O():p.waitAnyChartWidgetInitialized(g,O),C.subscribe("chart_load_requested",(function(e){window.tradingViewApi.loadChart({json:JSON.parse(e.content),extendedData:e})}))};window.addEventListener("unload",(function(){ae.abort(),window.widgetbar&&(window.widgetbar.destroy(),window.widgetbar=null),window.chartWidgetCollection&&(window.chartWidgetCollection.destroy(),window.chartWidgetCollection=null),window.ChartApiInstance&&window.ChartApiInstance.disconnect(),F(),window.ChartApiInstance&&(window.ChartApiInstance.destroy(),window.ChartApiInstance=null)})),n.enabled("saveload_storage_customization")&&(window.parent[urlParams.uid].saveLoadAdapter?_.setCustomAdapter(window.parent[urlParams.uid].saveLoadAdapter):void 0!==urlParams.chartsStorageUrl&&urlParams.chartsStorageUrl&&void 0!==urlParams.clientId&&urlParams.clientId?_.initialize(urlParams.clientId,urlParams.userId,urlParams.chartsStorageUrl,urlParams.chartsStorageVer||"1.0"):(n.setEnabled("saveload_storage_customization",!1),n.setEnabled("header_saveload",!1)));var ye=M();function be(){ye.resolve()}window.parent[urlParams.uid].loadLastChart&&n.enabled("saveload_storage_customization")?_.getCharts().then((function(e){if(0!==e.length){var t=e.sort((function(e,t){return t.modified_iso-e.modified_iso}))[0];_.getChartContent(t).then((function(e){var t=JSON.parse(e.content);t.extendedData=e,urlParams.chartContent=JSON.stringify({json:t}),be()})).catch(be)}else be()})).catch(be):be();var we,Ce,Pe=M();Promise.all([Pe.promise,ye.promise,window.loadedCustomCss]).then((function(){var e,t,i,s,r,o,a=document.querySelector(".loading-indicator");if(a&&(a.style.display="none"),setTimeout(Se,0),n.enabled("14851")&&Math.random()<=.02){e=window,t=document,i="script",s="ga",e.GoogleAnalyticsObject=s,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,r=t.createElement(i),o=t.getElementsByTagName(i)[0],r.async=1,r.src="//www.google-analytics.com/analytics.js",o.parentNode.insertBefore(r,o);var l=document.URL.match(new RegExp("(:?.*://)([^/]+)/.*"))[2];ga("create","UA-112911840-1","auto"),ga("set","anonymizeIp",!0),ga("set",{hostname:l,page:l,referrer:l}),ga("send","pageview")}})),we=!0,window.parent[urlParams.uid].datafeed.onReady((function(e){we&&console.warn("`onReady` should return result asynchronously. Use `setTimeout` with 0 interval to execute the callback function."),window.configurationData=e,Pe.resolve()})),we=!1,window.getFunctionFromArguments=function(e){return window.parent[urlParams.uid][e]},window.createShortcutAction=(Ce=m.createGroup({desc:"API"}),function(e,t){Ce.add({hotkey:g(e),handler:t})}),window.initializationFinished=function(){ -window.chartWidgetCollection.undoHistory.clearStack()},window.headerReady=function(){return fe.promise},window.createButton=function(e){if(null===ge)throw new Error("Cannot create button: header widget is not ready or is not loaded - use `headerReady` to wait until header is ready");return(e=e||{}).align=e.align||"left",e.useTradingViewStyle=e.useTradingViewStyle||!1,ge.addButton(A(),e)},window.createDropdown=function(e){if(void 0===e)throw new Error("Cannot create dropdown without any parameters. Please refer to the documentation");void 0===e.align&&(e.align="left");const t=A();return ge?(ge.addDropdown(t,e),Promise.resolve(new ne(ge,t))):fe.promise.then(()=>(ge.addDropdown(t,e),new ne(ge,t)))},window.getAllFeatures=function(){const e=n.getAllFeatures();return Object.keys(e).forEach((function(t){isNaN(parseFloat(t))||delete e[t]})),e};var Te=null;window.getNavigationButtonsVisibility=function(){return null===Te&&(Te=E(k())),Te};var xe=null;window.getPaneButtonsVisibility=function(){return null===xe&&(xe=E(D())),xe};var Ie=null;function Me(e){var t=TradingView.bottomWidgetBar;t&&t.turnOffMaximize()}window.getDateFormat=function(){return null===Ie&&(Ie=E(V)),Ie}},11372:(e,t,i)=>{e=i.nmd(e),TradingView.cleanButAmpersand=function(e,t){var i=t?["&"]:["&"];return TradingView.clean(e,t,i)},TradingView.strip_tags=function(e){return e&&e.replace?e.replace(/(<([^>]+)>)/gi,""):e},TradingView.encodeSpread=function(e){return encodeURIComponent(e)},TradingView.clean=function(e,t,i){var s=[["&","&"],["<","<"],[">",">"],['"',"""],["'","'"],["'","'"]],r=e;if(!e||!e.replace)return r;for(var n=0;n{"use strict";i.r(t);var s=i(21097),r=i(51768),n=i(38780);function o(e,t=!1){"loading"!==document.readyState?t?setTimeout(()=>e(),1):e():document.addEventListener("DOMContentLoaded",()=>e())}new Promise(e=>{o(e)});function a(e,t="x"){let i=!1;return"x"!==t&&"both"!==t||(i=i||e.offsetWidth{document.addEventListener("mouseenter",e=>{const t=e.target;if(t instanceof HTMLElement&&t.matches(".apply-overflow-tooltip")){let e="x";if(t.matches(".apply-overflow-tooltip--direction_both")?e="both":t.matches(".apply-overflow-tooltip--direction_y")&&(e="y"),t.matches(".apply-overflow-tooltip--check-children")){let i=!1;const s=t.children;for(let t=0;t(t.nodeType===Node.TEXT_NODE&&e.push(t.textContent||""),e),[]).join("").trim(),(0,n.showOnElement)(t,{text:i});const s=()=>{(0,n.hide)(), -["mouseleave","mousedown"].forEach(e=>t.removeEventListener(e,s))};["mouseleave","mousedown"].forEach(e=>t.addEventListener(e,s))}},!0)});var l=i(2872),c=i.n(l),h=i(11417),d=i(15840);let u;function p(e){window.iframeAuthWidget&&!1===window.user.profile_data_filled&&(window.iframeAuthWidget.preventClose=!0);const t=window.user.available_offers||{};window.TVSettings&&window.TVSettings.sync(window.user.settings),window.is_authenticated?(e||(initOfferLoginStateChangeButton(),onGoPro()&&window.user.is_pro&&window.location.reload()),!1===window.user.profile_data_filled&&((0,r.trackEvent)("Conversion","First login"),delete window.user.profile_data_filled)):(Object.keys(t).forEach(e=>{const i=e;t[i].available_for_anons||delete t[i]}),window.user={username:"Guest",following:"0",followers:"0",ignore_list:[],available_offers:t},h.TVLocalStorage.removeItem("trial_availiable"))}u=window.loginStateChange?window.loginStateChange:window.loginStateChange=new(c()),u.subscribe(null,p),s.TVXWindowEvents.on("loginStateChange",e=>{const t=JSON.parse(e);window.user=t.user,window.is_authenticated=!!t.is_authenticated,u.fire()}),s.TVXWindowEvents.on("signOut",()=>{!function(){if(window.initData.lfs){const e=document.getElementsByClassName("js-admin-warning")[0];document.body.removeChild(e)}let e=!0;[/^\/chart\//,/^\/share-your-love\//].forEach(t=>{t.test(window.location.pathname)&&(e=!1)}),e&&window.location.reload()}()}),(()=>{const e={};window.crossTabSyncUserAttr=e=>{const t={};e instanceof Array?e.forEach(e=>{t[e]=window.user[e]}):t[e]=window.user[e],s.TVXWindowEvents.emit("user-obj-changed",JSON.stringify(t))},s.TVXWindowEvents.on("user-obj-changed",t=>{const i=JSON.parse(t);let s;for(s in i)if(i.hasOwnProperty(s)){window.user[s]=i[s];(e[s]||[]).forEach(e=>{e.fire(i[s])})}})})(),window.TradingView.changeLoginState=e=>{window.is_authenticated=!!e,s.TVXWindowEvents.emit("loginStateChange",JSON.stringify({is_authenticated:window.is_authenticated,user:window.user})),u.fire()},window.loginUser=function(e,t){window.TVDialogs&&window.TVDialogs.signModal&&window.TVDialogs.signModal.close(),window.user=(0,d.deepExtend)({},e),window.TradingView.changeLoginState(!0),"function"==typeof t&&window.TVDialogs&&window.TVDialogs.signModal?window.TVDialogs.signModal.on("signinSuccess",()=>{t()}):"function"==typeof t&&t()},window.loginRequiredDelegate=new(c()),window.runOrSignIn=(e,t)=>{t||(t={}),e()},window.onLoginStateChange=p,window.TradingView.setTrialAvailiable=e=>{h.TVLocalStorage.setItem("trial_availiable",e?"1":"0")},window.TradingView.notificationsChanged=new(c())},68906:(e,t,i)=>{"use strict";i.r(t),i.d(t,{generateColor:()=>r,alphaToTransparency:()=>n,transparencyToAlpha:()=>o,applyTransparency:()=>a,resetTransparency:()=>l,getLuminance:()=>c,isHexColor:()=>h,colorFromBackground:()=>d,gradientColorAtPercent:()=>u,isColorDark:()=>p,rgbaFromInteger:()=>_,rgbaToInteger:()=>m,colorToInteger:()=>g});var s=i(24377);function r(e,t,i){if(t=t||0,!h(e))return i?(0,s.rgbaToString)((0,s.rgba)((0,s.parseRgb)(e),(0,s.normalizeAlphaComponent)(o(t)))):e -;const[r,n,a]=(0,s.parseRgb)(e),l=(0,s.normalizeAlphaComponent)(o(t));return(0,s.rgbaToString)([r,n,a,l])}function n(e){return 100*(1-e)}function o(e){if(e<0||e>100)throw new Error("invalid transparency");return 1-e/100}function a(e,t){if("transparent"===e)return e;const i=(0,s.parseRgba)(e),r=i[3];return(0,s.rgbaToString)((0,s.rgba)(i[0],i[1],i[2],o(t)*r))}function l(e){return"transparent"===e||h(e)?e:(0,s.rgbaToString)((0,s.rgba)((0,s.parseRgb)(e),(0,s.normalizeAlphaComponent)(1)))}function c(e){const t=(0,s.parseRgb)(e).map(e=>(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4));return Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function h(e){return 0===e.indexOf("#")}function d(e){return"black"===(0,s.rgbToBlackWhiteString)((0,s.parseRgb)(e),150)?"#ffffff":"#000000"}function u(e,t,i){const[r,n,o,a]=(0,s.parseRgba)(e),[l,c,h,d]=(0,s.parseRgba)(t),u=(0,s.rgba)(Math.round(r+i*(l-r)),Math.round(n+i*(c-n)),Math.round(o+i*(h-o)),a+i*(d-a));return(0,s.rgbaToString)(u)}function p(e){return c(l(e))<.5}function _(e){const t=(e=Math.round(e))%256;e-=t;const i=(e/=256)%256;e-=i;const s=(e/=256)%256;e-=s;return`rgba(${t},${i},${s},${(e/=256)/255})`}function m(e){const t=Math.round(255*e[3]);return e[0]+256*e[1]+65536*e[2]+16777216*t}function g(e){const t=(0,s.tryParseRgba)(e);return null===t?0:m(t)}},59199:(e,t,i)=>{"use strict";i.d(t,{doAnimate:()=>n});const s={from:0,duration:250,easing:i(68587).easingFunc.easeOutCubic};class r{constructor(e){this._doing=!0,this._completed=!1,this._options={...s,...e};const t=performance.now();window.requestAnimationFrame(e=>{this._animation(t,this._options.from,e)})}stop(){this._doing=!1}completed(){return this._completed}_animation(e,t,i){if(!this._doing)return void this._finishAnimation();const s=(i=!i||i<1e12?performance.now():i)-e,r=s>=this._options.duration||t===this._options.to,n=(o=this._options.from,a=this._options.to,l=this._options.easing(s/this._options.duration),o*(1-l)+a*l);var o,a,l;const c=r?this._options.to:n,h=c-t;this._options.onStep(h,c),r?this._finishAnimation():window.requestAnimationFrame(t=>{this._animation(e,c,t)})}_finishAnimation(){this._options.onComplete&&this._options.onComplete(),this._completed=!0}}function n(e){return new r(e)}},85198:(e,t,i)=>{"use strict";i.d(t,{fetch:()=>s});(0,i(98125).getLogger)("Fetch");function s(e,t,i={}){return window.fetch(e,t)}},98125:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LOGLEVEL:()=>n,getLogLevel:()=>_,isHighRateEnabled:()=>m,setLogLevel:()=>g,getRawLogHistory:()=>f,serializeLogHistoryEntry:()=>v,getLogHistory:()=>S,getLogger:()=>b,loggingOn:()=>C,loggingOff:()=>P});const s="undefined"!=typeof window?window:{};let r=!1;try{localStorage.getItem(""),r=!0}catch(e){}var n;!function(e){e[e.ERROR=1]="ERROR",e[e.WARNING=2]="WARNING",e[e.INFO=3]="INFO",e[e.NORMAL=4]="NORMAL",e[e.DEBUG=5]="DEBUG"}(n||(n={}));let o=0;const a=[];let l=null,c=null,h=null,d=NaN,u=n.WARNING,p=!1;function _(){return u}function m(){return p}function g(e){e=Math.max(n.ERROR,Math.min(n.DEBUG,e)),u=e,T()}function f(e,t){ -let i=a.reduce((e,t)=>e.concat(t),[]);return i.sort((e,t)=>e.id-t.id),void 0!==t&&(i=i.filter(e=>e.subSystemId===t)),"number"==typeof e&&(i=i.slice(-e)),i}function v(e){return new Date(e.timestamp).toISOString()+":"+e.subSystemId+":"+e.message.replace(/"/g,"'")}function S(e,t){return function(e,t){let i,s=0,r=0;for(i=e.length-1;i>=1&&(s+=8*(1+encodeURIComponent(e[i]).length),!(i-1>0&&(r=8*(1+encodeURIComponent(e[i-1]).length),s+r>t)));i--);return e.slice(i)}(f(e,t).map(v),75497472)}function y(e,t,i,r){if(t===c&&r.id===h)return;const a=new Date;if(e<=n.NORMAL&&function(e,t,i,r,n){"function"===s.structuredClone&&(t=s.structuredClone(t));const a={id:o,message:t,subSystemId:r,timestamp:Number(e)};o+=1,i.push(a),void 0!==n&&i.length>n&&i.splice(0,1)}(a,t,i,r.id,r.maxCount),e<=u&&(!r.highRate||m())&&(!l||r.id.match(l))){const i=a.toISOString()+":"+r.id+":"+t;switch(e){case n.DEBUG:console.debug(i);break;case n.INFO:case n.NORMAL:r.color?console.log("%c"+i,"color: "+r.color):console.log(i);break;case n.WARNING:console.warn(i);break;case n.ERROR:console.error(i)}c=t,h=r.id,d&&clearTimeout(d),d=setTimeout(()=>{c=null,h=null,d=NaN},1e3)}}function b(e,t={}){const i=[];a.push(i);const s=Object.assign(t,{id:e});function r(e){return t=>y(e,String(t),i,s)}return{logDebug:r(n.DEBUG),logError:r(n.ERROR),logInfo:r(n.INFO),logNormal:r(n.NORMAL),logWarn:r(n.WARNING)}}const w=b("logger"),C=s.lon=(e,t)=>{g(n.DEBUG),w.logNormal("Debug logging enabled"),p=Boolean(e),l=t||null,T()},P=s.loff=()=>{g(n.INFO),w.logInfo("Debug logging disabled")};function T(){try{r&&(localStorage.setItem("tv.logger.logHighRate",String(p)),localStorage.setItem("tv.logger.loglevel",String(u)))}catch(e){w.logWarn(`Cannot save logger state (level: ${u}, high-rate: ${p}) to localStorage: ${e.message}`)}}!function(){p=!!r&&"true"===localStorage.getItem("tv.logger.logHighRate");let e=parseInt(r&&localStorage.getItem("tv.logger.loglevel")||"");Number.isNaN(e)&&(e=n.WARNING),g(e),w.logNormal(`Init with settings - level: ${u}, high-rate: ${p}`)}(),s.performance&&s.performance.now?w.logNormal("Sync logger and perf times, now is "+s.performance.now()):w.logWarn("Perf time is not available")},52640:(e,t,i)=>{"use strict";function s(e,t,i,s){return`${s?s+" ":""}${i?i+" ":""}${e}px ${t}`}i.d(t,{makeFont:()=>s,parseFont:()=>n});const r=/(bold )?(italic )?(\d+)(px|pt) (.*)$/;function n(e){const t=r.exec(e);return null===t?null:{family:t[5],size:parseInt(t[3])*("pt"===t[4]?.75:1),bold:Boolean(t[1]),italic:Boolean(t[2])}}},45415:(e,t,i)=>{"use strict";i.d(t,{visitObject:()=>n});var s=i(80643);function r(e,t,i){return(0,s.isArray)(e)?function(e,t,i){return e.map(e=>{const s=r(e,t,i),n=t(s);return void 0!==n?n:s})}(e,t,i):(0,s.isObject)(e)&&((0,s.isHashObject)(e)||i&&i.visitInstances)?function(e,t,i){const s={};return Object.keys(e).forEach(n=>{const o=r(e[n],t,i),a=t(o);s[n]=void 0!==a?a:o}),s}(e,t,i):e}function n(e,t,i){const s=r(e,t,i),n=t(s);return void 0!==n?n:s}},28789:(e,t,i)=>{"use strict";function s(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}i.d(t,{ -regExpEscape:()=>s})},62820:(e,t,i)=>{"use strict";i.r(t),i.d(t,{isRtl:()=>r,stripLTRMarks:()=>o,startWithLTR:()=>a,forceLTRStr:()=>l,forceLTRStrSsr:()=>c,forceRTLStr:()=>h,getLTRScrollLeft:()=>d,getLTRScrollLeftOffset:()=>u,detectAutoDirection:()=>m});var s=i(64531);const r=()=>"rtl"===window.document.dir,n=new RegExp("‎|‪|‫|‬","g");function o(e){return""!==e&&r()&&null!=e?e.replace(n,""):e}function a(e){return""!==e&&r()&&null!=e?"‎"+e:e}function l(e){return""!==e&&r()&&null!=e?"‪"+e+"‬":e}function c(e){return"‪"+e+"‬"}function h(e){return""!==e&&r()&&null!=e?"‫"+e+"‬":e}function d(e){return(0,s.getNormalizedScrollLeft)(e,"rtl")}function u(e,t){const i=(0,s.detectScrollType)();if("indeterminate"===i)return 0;switch(i){case"negative":t=e.clientWidth-e.scrollWidth+t;break;case"reverse":t=e.scrollWidth-e.clientWidth-t}return t}const p=/[^\u0000-\u0040\u005B-\u0060\u007B-\u00BF\u00D7\u00F7\u02B9-\u02FF\u2000-\u200E\u2010-\u2029\u202C\u202F-\u2BFF]/,_=/[\u0590-\u07FF\u200F\u202B\u202E\uFB1D-\uFDFD\uFE70-\uFEFC]/;function m(e){const t=p.exec(e);return t?_.test(t[0])?"rtl":"ltr":""}},68587:(e,t,i)=>{"use strict";i.d(t,{CubicBezier:()=>s.CubicBezier,dur:()=>s.dur,easingFunc:()=>s.easingFunc});var s=i(74991)},51193:(e,t,i)=>{"use strict";function s(){return Promise.all([i.e(5514),i.e(9129),i.e(4194),i.e(9289),i.e(4017),i.e(3016),i.e(2077)]).then(i.bind(i,30349))}i.d(t,{loadChangeIntervalDialog:()=>s})},8636:(e,t,i)=>{"use strict";i.d(t,{showChangeIntervalDialogAsync:()=>n});var s=i(51193);let r=null;function n(e){const t=r=(0,s.loadChangeIntervalDialog)().then(i=>{t===r&&i.showChangeIntervalDialog(e)});return t}},94420:(e,t,i)=>{"use strict";function s(e){return Promise.all([i.e(5514),i.e(9129),i.e(4194),i.e(2e3),i.e(7962),i.e(8986),i.e(6363),i.e(8463),i.e(9289),i.e(7345),i.e(7176),i.e(8268),i.e(9055),i.e(2358),i.e(5802),i.e(9837),i.e(3016),i.e(1075),i.e(6085),i.e(1859)]).then(i.bind(i,54801)).then(t=>t.showGoToDateDialog(e))}i.d(t,{showGoToDateDialog:()=>s})},65645:(e,t,i)=>{"use strict";i.d(t,{showTooManyStudiesNotice:()=>n});var s=i(28353),r=i(3615);function n(e){"number"!=typeof e&&(e=TradingView.STUDY_COUNT_LIMIT),(0,r.showWarning)({title:(0,s.t)("Warning"),text:(0,s.t)("Studies limit exceeded: {number} studies per layout.\nPlease, remove some studies.").format({number:e})})}},34615:(e,t,i)=>{"use strict";i.d(t,{StudyMarket:()=>n});var s=i(52714),r=i.n(s);class n{constructor(e,t){this._visibility=new(r())(!1),this._dialogPromise=null,this._dialog=null,this._chartWidgetCollection=e,this._options=t}visible(){return this._visibility.readonly()}show(e,t){var i;null===this._dialog&&this._requestDialog(e,t),null===(i=this._dialog)||void 0===i||i.open(e,void 0,t)}hide(){var e;null===(e=this._dialog)||void 0===e||e.hide()}resetAllPages(){var e;null===(e=this._dialog)||void 0===e||e.resetAllStudies()}_requestDialog(e,t){if(null===this._dialogPromise){let s -;s=Promise.all([i.e(5514),i.e(9129),i.e(4194),i.e(7962),i.e(8986),i.e(8463),i.e(5774),i.e(1112),i.e(9637),i.e(775),i.e(3016),i.e(6456)]).then(i.bind(i,54127)).then(e=>new e.IndicatorsLibraryContainer(this._chartWidgetCollection,this._options)),this._dialogPromise=s.then(i=>{this._dialog=i,this._dialog.visible().subscribe(e=>{this._visibility.setValue(e)}),this._dialog.open(e,void 0,t)})}return this._dialogPromise}}},13221:(e,t,i)=>{"use strict";i.d(t,{setAdditionalSymbolInfoFields:()=>r,getAdditionalSymbolInfoFields:()=>n});let s=[];function r(e){s=e}function n(){return s}},88679:(e,t,i)=>{"use strict";function s(e,t){Promise.all([i.e(5514),i.e(9129),i.e(4194),i.e(6324),i.e(3016),i.e(9374)]).then(i.t.bind(i,65398,19)).then(i=>{i.showSymbolInfoDialog(e,t)})}i.d(t,{showSymbolInfoDialog:()=>s})},89330:(e,t,i)=>{"use strict";i.d(t,{ChartSaverBase:()=>s});class s{constructor(e){this._chartWidgetCollection=e}saveChartLineTools(e,t,i){return Promise.reject("Line tools storage is not supported")}_getCommonSavingInfo(e){const t=this._chartWidgetCollection,i=this._chartWidgetCollection.chartsSymbols(),s=i[t.activeChartWidget.value().id()],r={...(n=s,{...n,legs:JSON.stringify(null!==(o=n.legs)&&void 0!==o?o:[])})};var n,o;const a=t.metaInfo;return a.id.value()&&(r.id=a.id.value()),r.name=a.name.value()||"",r.description=a.description.value()||"",r.charts_symbols=function(e){const t={};for(const i of Object.keys(e))t[i]={symbol:e[i].symbol};return JSON.stringify(t)}(i),r.is_realtime=r.is_realtime=e?"0":"1",r}async _saveLineToolsToStorage(){return Promise.resolve()}}},76900:(e,t,i)=>{"use strict";var s=i(2872),r=i(28353).t,n=i(88537).assert,o=i(80643).deepEquals,a=i(43007).backend,l=i(89330).ChartSaverBase;r("The publication preview could not be loaded. Please disable your browser extensions and try again."),r("Failed to save library"),r("Failed to save script");function c(e,t){e.content=JSON.stringify(t)}t.ChartSaver=class extends l{constructor(e){super(e),this._chartAboutToBeSavedDelegate=new s,this._chartSavedDelegate=new s,this._prevChartState=null,this._chartSizeLimitExceededDelegate=new s}chartSizeLimitExceeded(){return this._chartSizeLimitExceededDelegate}chartAboutToBeSaved(){return this._chartAboutToBeSavedDelegate}chartSaved(){return this._chartSavedDelegate}whenReadyToSave(e){var t=this._chartWidgetCollection.activeChartWidget.value().model().mainSeries();if(t.hasDelayedSymbolIntervalChange()){var i,s=null;i=function(){t.dataEvents().symbolError().unsubscribe(null,s,!0),e()},s=function(){t.dataEvents().symbolResolved().unsubscribe(null,i,!0)},t.dataEvents().symbolResolved().subscribe(null,i,!0),t.dataEvents().symbolError().subscribe(null,s,!0)}else e()}saveToJSON(){var e=this._getCommonSavingInfo(!1);return c(e,this._getChartWidgetCollectionState(!1,!0)),e}_getChartWidgetCollectionState(e,t,i,s,r){return e||(t=!0,s=!1),t?this._chartWidgetCollection.state(!!e,i,s,r):this._chartWidgetCollection.activeChartWidget.value().state(!!e,i,s,r)}publishChart(e){}publishScript(e,t,i){}onPublish(e,t){}_saveChartImpl(e,t,i,s,r,n){ -var o=i,l=s;if(o=function(s){t.id.value()||(t.id.setValue(s),t.uid.setValue(s)),"function"==typeof i&&i(t,e)},!e.name)return console.warn("Saving chart with empty name is not allowed"),void s();a.saveChart(e.name,e.short_name,e.resolution,e,t).then(o.bind(this)).catch(l.bind(this))}_saveChart(e,t,i,s){var r=this._chartWidgetCollection.metaInfo,n=function(n){return o(this._prevChartState,n)[0]&&null!=r.id.value()?(this._chartSavedDelegate.fire(!0),void(t&&t(r,n))):this._saveChartImpl(n,r,t,i,s,e)}.bind(this);this._saveLineToolsToStorage().then((function(){var t=e(!0);return n(t)})).catch((function(t){var i=e(!1);return n(i)}))}saveChartSilently(e,t,i){i=i||{};var s=function(e){var t=e&&!1,s=this._getChartWidgetCollectionState(!1,void 0,void 0,void 0,t),r=this._getCommonSavingInfo(!1,t);return c(r,s),i.chartName&&(r.name=i.chartName),r.name&&0!==r.name.length||!i.defaultChartName||(r.name=i.defaultChartName),i.autoSave&&(r.autoSave=!0),r}.bind(this);this._isSaveInProcess=!0,this._chartAboutToBeSavedDelegate.fire(),this._saveChart(s,function(t,i){n(!this._chartWidgetCollection.readOnly(),"Trying to save layout in read-only mode"),this._chartWidgetCollection.metaInfo.name.setValue(i.name),this._prevChartState=i,this._chartSavedDelegate.fire(!0),this._isSaveInProcess=!1,e&&e({uid:t.uid.value(),data:i}),delete this._prevChartState.savingToken}.bind(this),function(){this._chartSavedDelegate.fire(!1),this._isSaveInProcess=!1,t&&t.apply(null,arguments)}.bind(this),i)}isSaveInProcess(){return this._isSaveInProcess}}},1570:(e,t,i)=>{"use strict";i.d(t,{getTranslatedSymbolDescription:()=>s});i(28353);function s(e){return e.description||""}},82724:(e,t,i)=>{"use strict";function s(e){return e+"…"}i.d(t,{appendEllipsis:()=>s})},8128:(e,t,i)=>{"use strict";function s(e){if(!o(e))throw e}function r(e){return(null==e?void 0:e.aborted)?Promise.reject(n()):new Promise((t,i)=>{null==e||e.addEventListener("abort",()=>i(n()),{once:!0})})}function n(){return new DOMException("Aborted","AbortError")}function o(e){return e instanceof Error&&"AbortError"===e.name}function a(e,t){return Promise.race([r(e),t])}async function l(e,t){let i;try{await a(e,new Promise(e=>{i=setTimeout(e,t)}))}finally{clearTimeout(i)}}i.d(t,{skipAbortError:()=>s,isAbortError:()=>o,respectAbort:()=>a,delay:()=>l})},98619:(e,t,i)=>{"use strict";function s(e){let t;if("object"!=typeof e||null==e||"number"==typeof e.nodeType)t=e;else if(e instanceof Date)t=new Date(e.valueOf());else if(Array.isArray(e)){t=[];let i=0;const r=e.length;for(;is})},15840:(e,t,i)=>{"use strict";function s(e,...t){return e&&"object"==typeof e?(0===t.length||t.forEach(t=>{null!=t&&"object"==typeof t&&Object.keys(t).forEach(i=>{const n=e[i],o=t[i];if(o===e)return;const a=Array.isArray(o);if(o&&(r(o)||a)){let t;t=a?n&&Array.isArray(n)?n:[]:n&&r(n)?n:{},e[i]=s(t,o)}else void 0!==o&&(e[i]=o)})}),e):e}function r(e){ -if(!e||"[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);if(!t)return!0;const i=Object.hasOwnProperty.toString,s=t.hasOwnProperty("constructor")&&t.constructor;return"function"==typeof s&&i.call(s)===i.call(Object)}i.d(t,{deepExtend:()=>s})},88461:(e,t,i)=>{"use strict";function s(e){if(void 0===e)return"";if(e instanceof Error){let t=e.message;return e.stack&&(t+=" "+e.stack),t}return"string"==typeof e?e.toString():JSON.stringify(e)}i.d(t,{errorToString:()=>s})},72077:(e,t,i)=>{"use strict";i.d(t,{getTwemojiUrl:()=>r});var s=i(18438);function r(e,t){let i="";return s.default.parse(e,e=>(i=s.default.base+("svg"===t?`svg/${e}.svg`:`72x72/${e}.png`),!1)),i}s.default.base="https://cdnjs.cloudflare.com/ajax/libs/twemoji/13.0.1/"},9423:(e,t,i)=>{"use strict";i.r(t),i.d(t,{guid:()=>r,randomHash:()=>n,randomHashN:()=>o});const s="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function r(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function n(){return o(12)}function o(e){let t="";for(let i=0;i{"use strict";i.d(t,{parseHtml:()=>r,parseHtmlElement:()=>n});const s=new WeakMap;function r(e,t){let i,r;return i=null==t?document.documentElement:9===t.nodeType?t.documentElement:t,s&&(r=s.get(i)),r||(r=i.ownerDocument.createRange(),r.selectNodeContents(i),s&&s.set(i,r)),r.createContextualFragment(e)}function n(e,t){const i=r(e,t),s=i.firstElementChild;return null!==s&&i.removeChild(s),s}},54475:(e,t,i)=>{"use strict";function s(e){e.preventDefault()}i.d(t,{preventDefault:()=>s,preventDefaultForContextMenu:()=>n});const r=["input:not([type])",'input[type="text"]','input[type="email"]','input[type="password"]','input[type="search"]','input[type="number"]','input[type="url"]',"textarea","a[href]",'*[contenteditable="true"]',"[data-allow-context-menu]"];function n(e){const t=e.target;t&&!t.closest(r.join(", "))&&e.preventDefault()}},80054:(e,t,i)=>{"use strict";i.d(t,{htmlEscape:()=>n,removeSpaces:()=>o,capitalizeFirstLetterInWord:()=>a});const s=/[<"'&>]/g,r=e=>`&#${e.charCodeAt(0)};`;function n(e){return e.replace(s,r)}function o(e=""){return e.replace(/\s+/g,"")}function a(e=""){return e.replace(/\b\w/g,e=>e.toUpperCase())}},96397:(e,t,i)=>{"use strict";function s(e){return e.reduce((function(e,t,i){return~e.indexOf(t)||e.push(t),e}),[])}i.r(t),i.d(t,{uniq:()=>s})},38881:(e,t,i)=>{"use strict";i.d(t,{ChunkLoader:()=>r});var s=i(8128);class r{constructor(){this._retries=5,this._cache=null,this._tryLoad=(e,t)=>{this._retries=this._retries-1;this._startLoading(e).then(t,0!==this._retries?i=>{(0,s.isAbortError)(i)||setTimeout(()=>this._tryLoad(e,t),3e3)}:void 0)}}load(e){return this._cache||(this._cache=new Promise(this._tryLoad.bind(this,null!=e?e:null))),this._cache}}},65446:(e,t,i)=>{"use strict";function s(e,t){const i=e.files&&e.files.length>0;if(!i&&t&&t.eventPhase>0)return r(t,e),Promise.resolve() -;if(!i){let t=!1;const i=i=>{i.stopImmediatePropagation(),r(i,e),t=!0};try{document.addEventListener("copy",i,!0),document.execCommand("copy")}finally{document.removeEventListener("copy",i,!0)}if(t)return Promise.resolve()}return async function(e){if(!navigator.clipboard||!navigator.clipboard.write||!window.ClipboardItem)throw new DOMException("ClipboardApi is not supported","NotSupportedError");const t={};for(const i of e.files||[])t[i.type]=i;e.text&&(t["text/plain"]=e.text);e.html&&(t["text/html"]=e.html);return navigator.clipboard.write([new window.ClipboardItem(t)])}(e)}function r(e,t){e.preventDefault();const i=e.clipboardData;t.text&&i.setData("text/plain",t.text),t.html&&i.setData("text/html",t.html)}async function n(e,t){if("text/plain"===t&&!navigator.clipboard.write){const t=await e;return navigator.clipboard.writeText(await t.text())}if(!navigator.clipboard||!navigator.clipboard.write||!window.ClipboardItem)throw new DOMException("ClipboardApi is not supported","NotSupportedError");let i=null;try{i=new window.ClipboardItem({[t]:e})}catch(s){i=new window.ClipboardItem({[t]:await e})}if(i)return navigator.clipboard.write([i]);throw new Error("ClipboardApi is not supported")}i.d(t,{writeImpl:()=>s,writePromiseUsingApi:()=>n})},5370:(e,t,i)=>{"use strict";function s(e){if(void 0===e)return null;const t=e.match(/(delayed_streaming)_([\d]{1,4})/);return null===t?null:{mode:t[1],interval:parseInt(t[2])}}i.d(t,{parseUpdateMode:()=>s})},84917:(e,t,i)=>{"use strict";var s,r;i.r(t),i.d(t,{WeekDays:()=>s,Months:()=>r}),function(e){e[e.SUNDAY=1]="SUNDAY",e[e.MONDAY=2]="MONDAY",e[e.TUESDAY=3]="TUESDAY",e[e.WEDNESDAY=4]="WEDNESDAY",e[e.THURSDAY=5]="THURSDAY",e[e.FRIDAY=6]="FRIDAY",e[e.SATURDAY=7]="SATURDAY"}(s||(s={})),function(e){e[e.JANUARY=0]="JANUARY",e[e.FEBRUARY=1]="FEBRUARY",e[e.MARCH=2]="MARCH",e[e.APRIL=3]="APRIL",e[e.MAY=4]="MAY",e[e.JUNE=5]="JUNE",e[e.JULY=6]="JULY",e[e.AUGUST=7]="AUGUST",e[e.SEPTEMBER=8]="SEPTEMBER",e[e.OCTOBER=9]="OCTOBER",e[e.NOVEMBER=10]="NOVEMBER",e[e.DECEMBER=11]="DECEMBER"}(r||(r={}))},81836:(e,t,i)=>{"use strict";function s(){let e,t;return{promise:new Promise((i,s)=>{e=i,t=s}),reject:t,resolve:e}}i.d(t,{createDeferredPromise:()=>s})},76861:(e,t,i)=>{"use strict";function s(e=location.host){return-1!==["i18n.tradingview.com","partial.tradingview.com","www.tradingview.com","wwwcn.tradingview.com"].indexOf(e)||-1!==["d33t3vvu2t2yu5.cloudfront.net","dwq4do82y8xi7.cloudfront.net","s.tradingview.com","s3.tradingview.com"].indexOf(e)||e.match(/^[a-z]{2}\.tradingview\.com/)||e.match(/prod-[^.]+.tradingview.com/)?"battle":e.includes("tradingview.com")||e.includes("staging")?"staging":e.match(/webcharts/)?"staging_local":(e.match(/^localhost(:\d+)?$/),"local")}function r(){return"local"===s()}function n(){return"battle"===s()}function o(){return!n()}i.r(t),i.d(t,{environment:()=>s,isLocal:()=>r,isProd:()=>n,isDebug:()=>o})},80007:(e,t,i)=>{"use strict";i.d(t,{preventDefault:()=>r,wrapHandlerWithPreventEvent:()=>n,preventScrollByWheelClick:()=>o});var s=i(49483);function r(e){ -e.cancelable&&e.preventDefault()}function n(e){return t=>{r(t),e()}}function o(e){s.isChrome&&e.addEventListener("mousedown",e=>{if(1===e.button)return e.preventDefault(),!1})}},46627:(e,t,i)=>{"use strict";i.d(t,{FeatureToggleWatchedValue:()=>n});var s=i(52714),r=i.n(s);class n extends(r()){constructor(e,t){super(function(e,t){return t}(0,t))}destroy(){0}}},56186:(e,t,i)=>{"use strict";function s(e){if(e instanceof Error)return e.stack||e.message;try{return e.outerHTML.slice(0,1024)}catch(e){}try{if(void 0!==e)return JSON.stringify(e).slice(0,1024)}catch(e){}return String(e)}function r(){window.__tv_js_errors||(window.__tv_js_errors=[]),window.addEventListener("error",e=>{const t=(new Date).toISOString();window.__tv_js_errors.push(`${t} ${e.message||"JS error"}. ${e.filename||""}, line ${e.lineno}, col ${e.colno}.\nError: `+s(e.error))},!1),window.addEventListener("unhandledrejection",e=>{const t=(new Date).toISOString();window.__tv_js_errors.push(t+" Unhandled rejection.\nReason: "+s(e.reason))},!1),document.addEventListener("securitypolicyviolation",e=>{var t,i;const r=(new Date).toISOString(),n="report"===e.disposition?"CSP report-only":"CSP violation";window.__tv_js_errors.push(`${r} ${n}: ${e.violatedDirective||e.effectiveDirective}. ${e.sourceFile||""}, line ${null!==(t=e.lineno)&&void 0!==t?t:e.lineNumber}, col ${null!==(i=e.colno)&&void 0!==i?i:e.columnNumber}.\nBlocked URI: ${e.blockedURL||e.blockedURI}\nSample: ${e.sample}\nTarget: `+s(e.target))},!1)}i.d(t,{install:()=>r})},76422:(e,t,i)=>{"use strict";i.r(t),i.d(t,{unsubscribe:()=>l,on:()=>c,subscribe:()=>h,subscribeToAll:()=>d,emit:()=>u,emitOnce:()=>p});var s=i(2872),r=i.n(s);const n={},o=[],a={};function l(e,t,i){n[e].unsubscribe(i,t)}function c(e,t,i){h(e,t,i)}function h(e,t,i,s){n.hasOwnProperty(e)||(n[e]=new(r())),a[e]?t.call(i):n[e].subscribe(i,t,s)}function d(e){o.push(e)}function u(e,...t){const i=[e].concat(t);o.forEach(e=>{e.apply(null,i)}),n.hasOwnProperty(e)&&n[e].fire.apply(n[e],t)}function p(e){a[e]&&console.warn(`Something went wrong: emitOnce called multiple times with same event (${e})`),a[e]=!0,u.apply(null,arguments)}},25760:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Modifiers:()=>s.Modifiers,createGroup:()=>u,pressedKeys:()=>d,registerWindow:()=>p,unregisterWindow:()=>_});var s=i(68335),r=i(35749),n=i(52714),o=i.n(n);var a=i(51768);class l{constructor(e,t){this._group=e,this.hotkey=t.hotkey,this.handler=t.handler,this.desc=t.desc,this.element=t.element||null,t.isDisabled?"function"==typeof t.isDisabled?this.isDisabled=t.isDisabled:this.isDisabled=()=>!0:this.isDisabled=()=>!1}destroy(){this._group&&(this._group.remove(this),this._group=null)}}class c{constructor(e,t){this._actions=[],this._manager=e,this.modal=!(!t||!t.modal),t&&(this.desc=t.desc),t&&t.isDisabled?"function"==typeof t.isDisabled?this.isDisabled=t.isDisabled:this.isDisabled=()=>!0:this.isDisabled=()=>!1,this._manager.registerGroup(this)}add(e){const t=new l(this,e);return this._actions.push(t),t}remove(e){ -for(let t=this._actions.length;t-- >0;)this._actions[t]===e&&this._actions.splice(t,1)}handleHotkey(e,t){for(let i=this._actions.length;i-- >0;){const r=this._actions[i];if(r.hotkey===e&&((!r.element||t.target&&r.element.contains(t.target))&&!r.isDisabled()))return r.handler(t),t.preventDefault(),(0,a.trackEvent)("Keyboard Shortcuts",(0,s.humanReadableHash)(e)),!0}return!1}promote(){this._manager.promoteGroup(this)}destroy(){this._actions.length=0,this._manager.unregisterGroup(this)}}const h=new class{constructor(){this._groups=[],this._pressedKeys=new(o())(0),this._keyDownListener=e=>{if(e.defaultPrevented)return;const t=(0,s.hashFromEvent)(e);if(this._pressedKeys.setValue(t),!(0,r.isNativeUIInteraction)(t,e.target))for(let i=this._groups.length;i-- >0;){const s=this._groups[i];if(!s.isDisabled()){if(s.handleHotkey(t,e))return;if(s.modal)return}}},this._keyUpListener=e=>{const t=(0,s.hashFromEvent)(e);this._pressedKeys.setValue(t)},this._blurEvent=()=>{this._pressedKeys.setValue(0)},this._mouseEvent=e=>{const t=(0,s.modifiersFromEvent)(e),i=255&this._pressedKeys.value();this._pressedKeys.setValue(t|i)}}listen(e){e.addEventListener("keydown",this._keyDownListener),e.addEventListener("keyup",this._keyUpListener),e.addEventListener("blur",this._blurEvent),e.addEventListener("mousemove",this._mouseEvent)}unlisten(e){e.removeEventListener("keydown",this._keyDownListener),e.removeEventListener("keyup",this._keyUpListener),e.removeEventListener("blur",this._blurEvent),e.removeEventListener("mousemove",this._mouseEvent)}registerGroup(e){this._groups.push(e)}unregisterGroup(e){for(let t=this._groups.length;t--;)this._groups[t]===e&&this._groups.splice(t,1)}promoteGroup(e){let t=this._groups.length-1;for(let i=this._groups.length;i--;){if(this._groups[i]===e)return void(i!==t&&(this._groups.splice(i,1),this._groups.splice(t,0,e)));this._groups[i].modal&&(t=i-1)}}pressedKeys(){return this._pressedKeys}},d=h.pressedKeys();function u(e){return new c(h,e)}function p(e){h.listen(e)}function _(e){h.unlisten(e)}p(window)},68335:(e,t,i)=>{"use strict";i.r(t),i.d(t,{isMacKeyboard:()=>r,Modifiers:()=>n,modifiersFromEvent:()=>o,hashFromEvent:()=>a,hashShiftPlusEnter:()=>l,humanReadableModifiers:()=>c,humanReadableHash:()=>d});var s=i(49483);const r=(0,s.isMac)()||s.CheckMobile.iOS();var n;function o(e){let t=0;return e.shiftKey&&(t+=1024),e.altKey&&(t+=512),e.ctrlKey&&(t+=256),e.metaKey&&(t+=2048),t}function a(e){return o(e)|e.keyCode}!function(e){e[e.None=0]="None",e[e.Alt=512]="Alt",e[e.Shift=1024]="Shift",e[e.Mod=r?2048:256]="Mod",e[e.Control=256]="Control",e[e.Meta=2048]="Meta"}(n||(n={}));const l=1037;function c(e,t=!r){let i="";return 256&e&&(i+=r?"^":"Ctrl",t&&(i+=" + ")),512&e&&(i+=r?"⌥":"Alt",t&&(i+=" + ")),1024&e&&(i+=r?"⇧":"Shift",t&&(i+=" + ")),2048&e&&(i+=r?"⌘":"Win",t&&(i+=" + ")),i}const h={9:"⇥",13:"↵",27:"Esc",8:r?"⌫":"Backspace",32:"Space",35:"End",36:"Home",37:"←",38:"↑",39:"→",40:"↓",45:"Ins",46:"Del",188:",",191:"/"};for(let e=1;e<=16;e++)h[e+111]="F"+e;function d(e){let t=c(e);const i=255&e -;return t+=i in h?h[i]:String.fromCharCode(i),t}},47193:(e,t,i)=>{"use strict";i.d(t,{migrateShortcut:()=>o});var s=i(68335);function r(e){if("number"==typeof e)return e;switch(e.toLowerCase()){case"ctrl":return s.Modifiers.Control;case"shift":return s.Modifiers.Shift;case"alt":return s.Modifiers.Alt;default:return e.toUpperCase().charCodeAt(0)}}function n(e){let t=0;for(let i=0;i{"use strict";i.d(t,{isTextEditingField:()=>r,isNativeUIInteraction:()=>n});var s=i(68335);function r(e){if("INPUT"===e.tagName){const t=e.type;return"text"===t||"email"===t||"number"===t||"password"===t||"search"===t||"tel"===t||"url"===t}return"TEXTAREA"===e.tagName||e.isContentEditable}function n(e,t){if(!t)return!1;const i=255&e;if(27===i||i>>>4==7)return!1;switch(e^i){case s.Modifiers.Alt:return(38===i||40===i)&&"SELECT"===t.tagName||r(t);case s.Modifiers.Alt+s.Modifiers.Shift:return r(t);case s.Modifiers.Mod:if(67===i||!s.isMacKeyboard&&45===i){const e=t.ownerDocument&&t.ownerDocument.getSelection();if(e&&!e.isCollapsed)return!0}return r(t);case s.Modifiers.Mod+s.Modifiers.Shift:return i>=33&&i<=40&&r(t);case s.Modifiers.Shift:case 0:return!!(9!==i||t.ownerDocument&&t!==t.ownerDocument.body&&t!==t.ownerDocument.documentElement)&&((13===i||32===i||!function(e){if("BUTTON"===e.tagName)return!0;if("INPUT"===e.tagName){const t=e.type;if("submit"===t||"button"===t||"reset"===t||"checkbox"===t||"radio"===t)return!0}return!1}(t))&&("form"in t||t.isContentEditable))}return!1}},82992:(e,t,i)=>{"use strict";i.d(t,{linking:()=>u});var s=i(4889),r=i(52714),n=i.n(r),o=i(67337),a=i(37667),l=i(98125),c=i(15943);const h=(0,l.getLogger)("Linking");var d;!function(e){e[e.NotBound=0]="NotBound",e[e.BoundToWidget=1]="BoundToWidget",e[e.BoundToModel=2]="BoundToModel"}(d||(d={}));const u=new class{constructor(){this._watchedSymbol=new(n()),this._seriesShortSymbol=new(n()),this._proSymbol=new(n()),this._watchedInterval=new(n()),this._watchedIntraday=new(n()),this._watchedSeconds=new(n()),this._watchedTicks=new(n()),this._watchedRange=new(n()),this._watchedSupportedResolutions=new(n()),this._watchedSupportedChartStyles=new(n())([]),this._symbolNamesList=new(n()),this._chartWidgetBindingState=d.NotBound,this._activeChartWidget=null,this._watchedSymbolListenerBound=this._watchedSymbolListener.bind(this),this._watchedIntervalListenerBound=this._watchedIntervalListener.bind(this),this._onSymbolLinkBound=this._onSymbolLink.bind(this),this._searchCharts=null,this._searchChartsLoadDebounced=null,this._selfEmit=!1,this._preventFeedBySymbol=!1,this._feedBySymbolDebounceCounter=0}get symbol(){return this._watchedSymbol}get proSymbol(){return this._proSymbol}get symbolNamesList(){return this._symbolNamesList}get seriesShortSymbol(){return this._seriesShortSymbol.readonly()}get interval(){return this._watchedInterval}get intraday(){return this._watchedIntraday.readonly()}get seconds(){return this._watchedSeconds.readonly() -}get ticks(){return this._watchedTicks.readonly()}get range(){return this._watchedRange.readonly()}get supportedResolutions(){return this._watchedSupportedResolutions.readonly()}get supportedChartStyles(){return this._watchedSupportedChartStyles.readonly()}get preventFeedBySymbol(){return this._preventFeedBySymbol}bindToChartWidget(e){if(this.unbindFromChartWidget(),this._activeChartWidget=e,e.hasModel())return void this._onChartModelCreated(e.model());e.modelCreated().subscribe(this,this._onChartModelCreated),this._chartWidgetBindingState=d.BoundToWidget;const t=e.properties().childs().mainSeriesProperties.childs();this._watchedSymbol.setValue(t.symbol.value()),this._watchedInterval.setValue(t.interval.value())}unbindFromChartWidget(){switch(this._chartWidgetBindingState){case d.BoundToWidget:if(!this._activeChartWidget)throw new Error("ChartWidget is undefined");this._activeChartWidget.modelCreated().unsubscribe(this,this._onChartModelCreated);break;case d.BoundToModel:this._symbolProperty().unsubscribe(this,this._onSymbolPropertyChange),this._watchedSymbol.unsubscribe(this._watchedSymbolListenerBound),this._mainSeries().dataEvents().symbolResolved().unsubscribe(this,this._updateSeriesSymbolInfo),this._mainSeries().dataEvents().symbolError().unsubscribe(this,this._updateSeriesSymbolInfo),this._intervalProperty().unsubscribe(this,this._onIntervalPropertyChange),this._watchedInterval.unsubscribe(this._watchedIntervalListenerBound),delete this._watchedSymbol.hook,delete this._watchedSymbol.writeLock}this._activeChartWidget=null,this._chartWidgetBindingState=d.NotBound}getChartWidget(){return this._activeChartWidget}bindToChartWidgetCollection(e){this._chartWidgetCollection=e,this.unbindFromChartWidget(),e.activeChartWidget.subscribe(e=>{this.unbindFromChartWidget(),this.bindToChartWidget(e)},{callWithLast:!0})}bindToSearchCharts(e){this.unbindFromSearchCharts(),this._searchCharts=e,e.onSearchBySymbol.subscribe(this,this._onSearchBySymbol),e.loadingSymbol.subscribe(e=>{!1===e&&(this._feedBySymbolDebounceCounter=0)}),this._watchedSymbol.subscribe(this._onSymbolLinkBound)}unbindFromSearchCharts(){this._searchCharts&&(this._searchCharts.onSearchBySymbol.unsubscribe(this,this._onSearchBySymbol),this._watchedSymbol.unsubscribe(this._onSymbolLinkBound),this._searchCharts=null)}setPreventFeedBySymbol(e){this._preventFeedBySymbol=e}_onSearchBySymbol(e){if(!e.resolved_symbol)throw new Error("no resolved_symbol");this._selfEmit=!0,this._watchedSymbol.setValue(e.resolved_symbol),this._selfEmit=!1}_onSymbolLink(e){if(!this._selfEmit){if(!this._searchCharts){const e="No search charts defined";throw h.logError(e),new Error(e)}this._preventFeedBySymbol||this._loadSearchCharts(e)}}_loadSearchCharts(e){if(!this._searchCharts){const e="No search charts defined";throw h.logError(e),new Error(e)}if(this._searchChartsLoadDebounced)return void(this._feedBySymbolDebounceCounter<100&&(this._feedBySymbolDebounceCounter++,this._searchChartsLoadDebounced(e))) -;const t=e=>this._searchCharts?(!0===this._searchCharts.loadingSymbol.value()?this._feedBySymbolDebounceCounter<100&&(this._feedBySymbolDebounceCounter++,this._searchChartsLoadDebounced=(0,s.default)(t,2e3),this._searchChartsLoadDebounced(e)):this._searchChartsLoadDebounced=null,this._searchCharts.feedBySymbol.call(this._searchCharts,e)):()=>{};!0===this._searchCharts.loadingSymbol.value()?this._feedBySymbolDebounceCounter<100&&(this._feedBySymbolDebounceCounter++,this._searchChartsLoadDebounced=(0,s.default)(t,2e3),this._searchChartsLoadDebounced(e)):this._searchCharts.feedBySymbol(e)}_mainSeries(){if(!this._activeChartWidget)throw new Error("ChartWidget is undefined");return this._activeChartWidget.model().mainSeries()}_properties(){return this._mainSeries().properties()}_symbolProperty(){return this._properties().symbol}_intervalProperty(){return this._properties().interval}_watchedSymbolListener(e){this._symbolProperty().value()!==e&&this._chartWidgetCollection.setSymbol(e)}_sendSnowplowAnalytics(){if(!window.user.do_not_track)throw new Error("unsupported")}_onSymbolPropertyChange(){const e=this._symbolProperty().value()!==this._watchedSymbol.value();this._watchedSymbol.setValue(this._symbolProperty().value()),e&&this._chartWidgetCollection.setSymbol(this._symbolProperty().value())}_onSymbolResolved(e){const t=this._mainSeries().symbolInfo();t&&this._applyValuesFromSymbolInfo(t)}_applyValuesFromSymbolInfo(e){const t=e.pro_name||o.enabled("trading_terminal")&&(e.full_name||e.name)||"";this._proSymbol.setValue(t),e.aliases&&this._symbolNamesList.setValue(e.aliases)}_updateSeriesSymbolInfo(){this._seriesShortSymbol.setValue(this._properties().shortName.value());const e=this._mainSeries().symbolInfo();if(e){this._applyValuesFromSymbolInfo(e);{const t=e.supported_resolutions;t?this._watchedSupportedResolutions.setValue(t):this._watchedSupportedResolutions.setValue(void 0)}let t=(0,c.allChartStyles)();(0,a.isCloseBasedSymbol)(e)&&(t=t.filter(e=>(0,a.isSingleValueBasedStyle)(e))),this._watchedSupportedChartStyles.setValue(t),this._watchedIntraday.setValue(!!e.has_intraday),this._watchedSeconds.setValue(!!e.has_seconds),this._watchedTicks.setValue(!(0,a.isCloseBasedSymbol)(e)&&!!e.has_ticks),this._watchedRange.setValue(!(0,a.isCloseBasedSymbol)(e))}else this._watchedIntraday.deleteValue(),this._watchedSeconds.deleteValue(),this._watchedTicks.deleteValue(),this._watchedRange.deleteValue(),this._proSymbol.deleteValue()}_watchedIntervalListener(e){this._intervalProperty().value()!==e&&this._chartWidgetCollection.setResolution(e)}_onIntervalPropertyChange(){const e=this._intervalProperty().value()!==this._watchedInterval.value();this._watchedInterval.setValue(this._intervalProperty().value()),e&&this._chartWidgetCollection.setResolution(this._intervalProperty().value())}_onChartModelCreated(e){if(!this._activeChartWidget)throw new Error("ChartWidget is undefined");this._chartWidgetBindingState=d.BoundToModel,this._activeChartWidget.modelCreated().unsubscribe(this,this._onChartModelCreated);const t=this._symbolProperty() -;t.subscribe(this,this._onSymbolPropertyChange),this._watchedSymbol.setValue(t.value()),this._watchedSymbol.subscribe(this._watchedSymbolListenerBound);const i=this._mainSeries();i.dataEvents().symbolResolved().subscribe(this,this._onSymbolResolved),this._watchedSymbol.hook=e=>(i.symbolSameAsCurrent(e)&&(e=i.symbol()),e),i.dataEvents().symbolResolved().subscribe(this,this._updateSeriesSymbolInfo),i.dataEvents().symbolError().subscribe(this,this._updateSeriesSymbolInfo),i.dataEvents().symbolNotPermitted().subscribe(this,this._updateSeriesSymbolInfo),i.dataEvents().symbolGroupNotPermitted().subscribe(this,this._updateSeriesSymbolInfo),this._updateSeriesSymbolInfo();const s=this._intervalProperty();s.subscribe(this,this._onIntervalPropertyChange),this._watchedInterval.setValue(s.value()),this._watchedInterval.subscribe(this._watchedIntervalListenerBound),this._activeChartWidget.readOnly()&&(this._watchedSymbol.writeLock=!0)}};window.TradingViewApi||(window.TradingViewApi={linking:u})},11417:(e,t,i)=>{"use strict";const{getLogger:s}=i(98125),r=s("TVLocalStorage");var n=function(){try{this.isAvailable=!0,this.localStorage=window.localStorage,this.localStorage.setItem("tvlocalstorage.available","true")}catch(e){delete this.isAvailable,delete this.localStorage}this._updateLength();try{this._report()}catch(e){}};n.prototype._report=function(){if(this.isAvailable){const e=10,t=[];for(let e=0;et.length-e.length);const i=t.slice(0,e);t.sort((e,t)=>t.key.length-e.key.length);const s=t.slice(0,e);r.logNormal("Total amount of keys in Local Storage: "+this.length),r.logNormal(`Top ${e} keys with longest values: ${JSON.stringify(i)}`),r.logNormal(`Top ${e} longest key names: ${JSON.stringify(s)}`);try{navigator.storage.estimate().then(e=>{r.logNormal("Storage estimate: "+JSON.stringify(e))})}catch(e){}}},n.prototype.length=0,n.prototype.isAvailable=!1,n.prototype.localStorage={"tvlocalstorage.available":"false"},n.prototype._updateLength=function(){if(this.isAvailable)this.length=this.localStorage.length;else{var e,t=0;for(e in this.localStorage)this.localStorage.hasOwnProperty(e)&&t++;this.length=t}},n.prototype.key=function(e){return this.isAvailable?this.localStorage.key(e):Object.keys(this.localStorage)[e]},n.prototype.getItem=function(e){return this.isAvailable?this.localStorage.getItem(e):void 0===this.localStorage[e]?null:this.localStorage[e]},n.prototype.setItem=function(e,t){this.isAvailable?this.localStorage.setItem(e,t):this.localStorage[e]=t,this._updateLength()},n.prototype.removeItem=function(e){this.isAvailable?this.localStorage.removeItem(e):delete this.localStorage[e],this._updateLength()},n.prototype.clear=function(){this.isAvailable?this.localStorage.clear():this.localStorage={},this._updateLength()};var o=function(e){this.storage=e};o.prototype.getItem=function(e){return Promise.resolve(this.storage.getItem(e))},o.prototype.setItem=function(e,t){return Promise.resolve(this.storage.setItem(e,t))}, -window.TVLocalStorage=new n,window.TVLocalStorageAsync=new o(window.TVLocalStorage),e.exports={TVLocalStorage:window.TVLocalStorage,TVLocalStorageAsync:window.TVLocalStorageAsync}},84015:(e,t,i)=>{"use strict";function s(e,t=!1){return!1}function r(e){return e}i.d(t,{isOnMobileAppPage:()=>s,urlWithMobileAppParams:()=>r})},19334:(e,t,i)=>{"use strict";function s(){}i.d(t,{addPerfMark:()=>o});const r=console.timeStamp?console.timeStamp.bind(console):s,n=window.performance&&performance.mark?performance.mark.bind(performance):s;window.performance&&performance.measure&&performance.measure.bind(performance),window.performance&&performance.clearMarks&&performance.clearMarks.bind(performance);function o(e){r(e),n(e)}},14905:(e,t,i)=>{"use strict";function s(e){return e===r(e)}function r(e){const t=e.indexOf("$"),i=e.indexOf("@");return t<0&&i>=0?null:e.substring(Math.max(t+1,0),i>=0?i:e.length)}i.d(t,{isPineIdString:()=>s,extractPineId:()=>r})},16216:(e,t,i)=>{"use strict";i.r(t),i.d(t,{registerService:()=>o,unregisterService:()=>a,hasService:()=>l,service:()=>c,waitServiceRegistered:()=>h});var s=i(81836);const r={},n=new Map;function o(e,t){if(l(e))throw new Error("Service already registered");r[e.id]=t;const i=n.get(e.id);void 0!==i&&(n.delete(e.id),i.resolve(t))}function a(e){if(!l(e))throw new Error("Service not found");r[e.id]=void 0}function l(e){return void 0!==r[e.id]}function c(e){const t=r[e.id];if(void 0===t)throw new Error("ServiceLocator: Service "+e.id+" not found");return t}function h(e){if(l(e))return Promise.resolve(c(e));let t=n.get(e.id);return void 0===t&&(t=(0,s.createDeferredPromise)(),n.set(e.id,t)),t.promise}},56840:(e,t,i)=>{"use strict";e=i.nmd(e),i(49483);i(85198).fetch;var s=i(28789).regExpEscape,r=i(21097).TVXWindowEvents,n=i(11417).TVLocalStorage,o=i(2872),a=i(67337),l=["s.tradingview.com","betacdn.tradingview.com"],c=a.enabled("use_localstorage_for_settings"),h=window.TVSettings=function(){var e=!1,t=null;function i(){return!t&&c}try{e=!TradingView.onWidget()&&parent&&parent!==window&&!!parent.IS_DEMO_PAGE}catch(e){}if(e){var d={"widgetbar.layout-settings":{widgets:{},settings:{minimized:!0}},notShowMainWizard:!0},u=function(e,t,i){var s=d[e];return null==s?t:s},p=function(){};return{loaded:!1,loadedModel:!1,getValue:u,getJSON:u,getBool:u,getFloat:u,getInt:u,setValue:p,setJSON:p,remove:p,keys:function(){return Object.keys(d)},keysMask:function(){return[]},sync:p,onSync:{subscribe:function(){}}}}window.environment -;var _,m=TradingView.onWidget()?"tradingview-widget":"tradingview",g=m+".",f={},v=[/^widgetbar\.widget\.watchlist.+/,/.+quicks$/,/^widgetbar\.layout-settings$/,/^ChartSideToolbarWidget\.visible$/,/^onwidget\.watchlist$/,/^domepanel.visible$/,/^orderpanel.visible$/,/^chart\.favoriteDrawings$/,/^chart\.favoriteDrawingsPosition$/,/^loadChartDialog.favorites$/,/^ChartFavoriteDrawingToolbarWidget\.visible/,/^trading\.chart\.proterty$/,/^trading_floating_toolbar\.position$/,/^trading\.orderWidgetMode\./,/^symbolWatermark$/,/^pinereference\.size$/,/^pinereference\.position$/,/^hint\.+/,/^ChartDrawingToolbarWidget\.visible/];function S(e){return g+e}function y(e,t){var i=f[e];return null==i?t:i}function b(e,t,i){i=i||{};var s=""+t;return f[e]!==s&&(f[e]=s,C(e)),i.forceFlush&&!_&&(_=setTimeout((function(){_=void 0,P()}),10)),h}function w(e,t){return t=t||{},null!=f[e]&&(delete f[e],C(e)),t.forceFlush&&P(),h}function C(e){if(t)null==f[e]?t.removeValue(e):t.setValue(e,f[e]);else if(i())try{null==f[e]?n.removeItem(S(e)):n.setItem(S(e),f[e])}catch(e){}else 0;r.emit("settings",JSON.stringify({key:e,value:f[e]}))}function P(e){}function T(){return Object.keys(f)}function x(e){for(var t=0;t=0;n--)e.test(i[n])&&r.push(i[n]),e.lastIndex=0;return r},sync:function(e){null!==e?(t?M(t.initialSettings||{}):i()?(function(){if(TradingView.onWidget()&&l.includes(window.location.host))for(var e=n.length;e--;){var t=n.key(e);if(0===t.indexOf("tradingview.")){var i=t.replace("tradingview.",m+".");n.setItem(i,n.getItem(t)),n.removeItem(t)}}}(),function(){f={};for(var e=!a.enabled("save_chart_properties_to_local_storage"),t=n.length;t--;){var i=n.key(t) -;if(i&&I(i)){var s=i.substring(g.length);e&&!x(s)||(f[s]=n.getItem(i))}}}()):M(e||{}),L.fire()):!0},onSync:L,setSettingsAdapter:function(e){t=e}}}();e&&e.exports&&(e.exports=h)},26843:(e,t,i)=>{"use strict";i.d(t,{StdTheme:()=>a.StdTheme,getStdChartTheme:()=>h,getStdThemeNames:()=>c,isStdTheme:()=>u,translateThemeName:()=>d});var s=i(28353),r=i(24377) +id:"TradingService"};function n(){return(0,s.hasService)(r)?(0,s.service)(r):null}},88060:(e,t,i)=>{"use strict";i.d(t,{TradingViewApiBase:()=>S});var s=i(88537),r=i(82992),n=i(67337),o=i(51768),a=i(6087),l=i(45345),c=i(2872),h=i.n(c);class d{constructor(e){this._toolbarThemeChanged=new(h()),this._onWatchedThemeChanged=e=>{this._toolbarThemeChanged.fire(e)},this._opts=e,l.watchedTheme.subscribe(this._onWatchedThemeChanged)}destroy(){l.watchedTheme.unsubscribe(this._onWatchedThemeChanged)}isStdTheme(){const e=this._opts.chartWidgetCollection.getAll().every(e=>(0,a.isStdTheme)((0,a.extractThemeFromModel)(e.model())));return Promise.resolve(e)}async setStdTheme(e,t=!0,i){await(0,a.loadTheme)(this._opts.chartWidgetCollection,{themeName:e,standardTheme:!0,syncState:t,noUndo:i})}setStdThemeForLayout(e,t=!0){(0,l.setTheme)(e),t&&(0,a.syncTheme)()}getCurrentThemeName(){return(0,a.getCurrentTheme)().name}toolbarThemeChanged(){return this._toolbarThemeChanged}}var u=i(16906),p=i(85733),_=i(52714),m=i.n(_),g=i(88564);const f=new(h());function v(){throw new Error("not implemented")}class S{constructor(e){this._studyTemplatesDrawer=null,this._fontIconsSettingsDrawer=null,this._favoriteDrawingsToolbar=null,this._themesApi=null,this._newsApiDeferredPromise=null,this._newsApiRejectionReason=null,this._watchlistApiDeferredPromise=null,this._watchlistApiRejectionReason=null,this._widgetbarApiDeferredPromise=null,this._widgetbarApiRejectionReason=null,this._isDestroyed=!1,this._widgebarApi=null,this._magnetEnabledWatchedValue=null,this._magnetModeWatchedValue=null;const{chartApiInstance:t,chartWidgetCollection:i,studyMarket:s,financialsDialog:n,saveChartService:o,loadChartService:a,sharingChartService:l=null}=e;this._chartWidgetCollection=i,this._studyMarket=s,this._financialsDialog=n,this._saveChartService=o,this._sharingChartService=l,this._loadChartLayoutDialog=a,this._intervalsService=null,this._alertsWidgetDialog=null,this._detailsDialogController=null,this._supportedChartStylesSpawn=r.linking.supportedChartStyles.spawn(),this._chartWidgetCollection.onAboutToBeDestroyed.subscribe(null,()=>this.destroy(),!0)}destroy(){var e,t,i;this._supportedChartStylesSpawn.destroy(),null===(e=this._intervalsService)||void 0===e||e.destroy(),null===(t=this._themesApi)||void 0===t||t.destroy(),null===(i=this._widgebarApi)||void 0===i||i.destroy(),this._widgetbarApiRejectionReason="This ITradingViewApi instance has been destroyed",this._isDestroyed=!0}themes(){return null===this._themesApi&&(this._themesApi=new d({chartWidgetCollection:this._chartWidgetCollection})),this._themesApi}dialogs(){var e,t,i,s,r,n;return{Indicators:this._studyMarket,Financials:this._financialsDialog,Compare:this._chartWidgetCollection.getCompareDialogRenderer(),ObjectsTree:null,ChartProperties:this._chartWidgetCollection.getChartPropertiesDialogRenderer(),ChartLayoutSaveAs:null!==(t=null===(e=this._saveChartService)||void 0===e?void 0:e.getSaveAsController())&&void 0!==t?t:null, +ChartLayoutRename:null!==(s=null===(i=this._saveChartService)||void 0===i?void 0:i.getRenameController())&&void 0!==s?s:null,ChartLayoutCreate:null!==(n=null===(r=this._saveChartService)||void 0===r?void 0:r.getCreateController())&&void 0!==n?n:null,ChartLayoutLoad:this._loadChartLayoutDialog,Alerts:this._alertsWidgetDialog,Details:this._detailsDialogController,FinancialsCharts:null}}studyTemplatesDrawerApi(){v()}fontIconsSettingsDrawer(){v()}intervalsService(){v()}supportedChartTypes(){return this._supportedChartStylesSpawn}setBrokerName(e){this._chartWidgetCollection.setBroker(e)}drawOnAllChartsMode(e){(0,p.drawOnAllChartsMode)().setValue(e)}disableTrackingEvents(){(0,o.disableTrackingEvents)()}setSymbolSearchUI(e){v()}setLayout(e,t){(null==t?void 0:t.withUndo)?this._chartWidgetCollection.setChartLayoutWithUndo(e):this._chartWidgetCollection.setLayout(e)}selectLineTool(e,t){if(!u.supportedLineTools[e])return;const i=u.supportedLineTools[e].name;if("icon"===e){const e=null==t?void 0:t.icon;void 0!==e&&p.iconTool.setValue(e)}p.tool.setValue(i)}favoriteDrawingsToolbar(){return i.e(5551).then(i.bind(i,88823)).then(e=>(this._favoriteDrawingsToolbar||(this._favoriteDrawingsToolbar=new e.FavoriteDrawingsApi),this._favoriteDrawingsToolbar))}sharingChart(){return this._sharingChartService}watchlist(){v()}setWatchlistApiPromise(e){v()}news(){v()}setNewsApiPromise(e){v()}widgetbar(){v()}setWidgetbarApiPromise(e){v()}setDebugMode(e){n.setEnabled("charting_library_debug_mode",e)}setFeatureEnabled(e,t){n.setEnabled(e,t)}magnetEnabled(){return null===this._magnetEnabledWatchedValue&&(this._magnetEnabledWatchedValue=new(m())((0,p.properties)().childs().magnet.value()),this._magnetEnabledWatchedValue.subscribe(e=>{(0,g.saveDefaultProperties)(!0),(0,p.properties)().childs().magnet.setValue(e),(0,g.saveDefaultProperties)(!1)}),(0,p.properties)().childs().magnet.subscribe(this,()=>{(0,s.ensureNotNull)(this._magnetEnabledWatchedValue).setValue((0,p.properties)().childs().magnet.value())})),this._magnetEnabledWatchedValue}magnetMode(){return null===this._magnetModeWatchedValue&&(this._magnetModeWatchedValue=new(m())((0,p.properties)().childs().magnetMode.value()),this._magnetModeWatchedValue.subscribe(e=>{(0,g.saveDefaultProperties)(!0),(0,p.properties)().childs().magnetMode.setValue(e),(0,g.saveDefaultProperties)(!1)}),(0,p.properties)().childs().magnetMode.subscribe(this,()=>{(0,s.ensureNotNull)(this._magnetModeWatchedValue).setValue((0,p.properties)().childs().magnetMode.value())})),this._magnetModeWatchedValue}flushBufferedData(){f.fire()}}},28399:(e,t,i)=>{"use strict";var s=i(2872),r=i(52714),n=i(82992).linking,o=(i(81836).createDeferredPromise, +i(21269)),a=i(42060).layouts,l=i(76422),c=i(97056).ContextMenuManager,h=i(85733),d=i(9315),u=i(43007).backend,p=i(98125),_=i(3615).showWarning,m=i(3615).showConfirm,g=i(16906),f=i(52092).CLOSE_POPUPS_AND_DIALOGS_COMMAND,v=i(29823).Interval,S=i(88564).saveDefaultProperties,y=i(68425).ChartChangesWatcher,b=i(88060).TradingViewApiBase,w=i(67072),C=i(152).getStudyInputsInfo,P=i(70120).getStudyStylesInfo;e.exports=class extends b{constructor(e){const{chartWidgetCollection:t,saveChartService:i,loadChartService:r,sharingChartService:o,alertsDispatcher:a,supportTicketData:l,favoriteServices:c,chartApiInstance:h=null,studyMarket:d=null,financialsDialog:u=null}=e;super({chartApiInstance:h,chartWidgetCollection:t,studyMarket:d,financialsDialog:u,saveChartService:i,loadChartService:r,sharingChartService:o}),this._chartApiInstance=h,this._loadChartService=r,this._alertsDispatcher=a,this._supportTicketData=l,this._favoriteServices=c,this._proxyWatchListChangedDelegate=null,this._lockDrawingsWatchedValue=null,this._hideDrawingsWatchedValue=null,this._hideIndicatorsWatchedValue=null,this._magnetEnabledWatchedValue=null,this._magnetModeWatchedValue=null,this._replayApi=null,this._chartChangesWatcher=null,this._hasChartChangesWatchedValue=null,this._getDataSourceHub=function(){return t.activeChartWidget.value().model().model()},this._chartWidgetCollection.getResizerDetacher=function(){return t.activeChartWidget.value().getResizerDetacher()},this._alertService=this._alertsDispatcher?new(void 0)(this._alertsDispatcher,this._getDataSourceHub):null,this._activeChangedChangedDelegate=new s,this._chartWidgetCollection.activeChartWidget.subscribe(function(){this._activeChangedChangedDelegate.fire()}.bind(this)),this._chartWidgets=new WeakMap,this._activateChart=function(e){t.activeChartWidget.setValue(e)},this.linking=n}subscribe(e,t){l.subscribe(e,t)}unsubscribe(e,t){l.unsubscribe(e,t)}onContextMenu(e){l.subscribe("onContextMenu",(function(t){t.callback(e(t.unixtime,t.price))}))}onGrayedObjectClicked(e){l.subscribe("onGrayedObjectClicked",e)}activeChart(){return this._getChartWidgetApi(this._chartWidgetCollection.activeChartWidget.value())}_getChartWidgetApi(e){var t=this._chartWidgets.get(e);return void 0===t&&(t=new o(e,this._activateChart.bind(null,e)),this._chartWidgets.set(e,t)),t}onActiveChartChanged(){return this._activeChangedChangedDelegate}changeSymbol(e,t,i){n.interval.setValue(v.normalize(t)),n.symbol.setValue(e),i&&this.activeChart().onDataLoaded().subscribe(null,i,!0)}layout(){return this._chartWidgetCollection.layout.value()}layoutName(){return this._chartWidgetCollection.metaInfo.name.value()}layoutNameWatchedValue(){return this._chartWidgetCollection.metaInfo.name.readonly()}layoutSettingsDrawer(){throw new Error("not implemented")}chartsCount(){return a[this.layout()].count}viewMode(){throw new Error("not implemented")}viewModeWatchedValue(){throw new Error("not implemented")}setForceFullscreenMode(){throw new Error("not implemented")}setMultichartMode(){throw new Error("not implemented")}setActiveChart(e){ +throw new Error("not implemented")}chart(e){if(void 0===e&&(e=0),e<0||e>=this.chartsCount())throw Error("Incorrect index: "+e);return this._getChartWidgetApi(this._chartWidgetCollection.getAll()[e])}getSymbolInterval(e){var t={symbol:n.symbol.value(),interval:n.interval.value()};return e&&e(t),t}saveChart(e){if(this._saveChartService){var t=this;this._saveChartService.whenReadyToSave((function(){var i=t._saveChartService.saveToJSON();return e&&e(JSON.parse(i.content))}))}}loadChart(e){this._chartApiInstance.disconnect(),this._chartWidgetCollection.loadContent(e.json),this._chartWidgetCollection.purgeUnusedWidgets(),e.extendedData&&(this._chartWidgetCollection.metaInfo.id.setValue(e.extendedData.uid),this._chartWidgetCollection.metaInfo.uid.setValue(e.extendedData.uid),this._chartWidgetCollection.metaInfo.name.setValue(e.extendedData.name)),this._chartApiInstance.connect(),n.symbol.setValue(this.activeChart().symbol()),l.emit("chart_loaded")}getStudiesList(){return this._chartApiInstance.allStudiesMetadata().filter((function(e){return!e.is_hidden_study})).map((function(e){return e.description}))}getStudyInputs(e){{const t=w.findStudyMetaInfoByDescription(this._chartApiInstance.allStudiesMetadata(),e);return C(t)}}getStudyStyles(e){{const t=w.findStudyMetaInfoByDescription(this._chartApiInstance.allStudiesMetadata(),e);return P(t)}}getSavedCharts(e){u.getCharts().then(e)}loadChartFromServer(e){u.loadChart(e)}saveChartToServer(e,t,i){this._saveChartService&&this._saveChartService.saveChartSilently(e,t,i)}setAutosave(e){this._saveChartService&&this._saveChartService.autoSaveEnabled().setValue(e)}removeChartFromServer(e,t){u.removeChart(e).then(t)}getIntervals(){var e=[],t=d.getCustomResolutions();return null!==this._chartApiInstance&&(e=this._chartApiInstance.defaultResolutions()),d.mergeResolutions(e,t)}closePopupsAndDialogs(){c.hideAll(),l.emit(f)}selectedLineTool(){for(var e=Object.keys(g.supportedLineTools),t=h.tool.value(),i=0;i{"use strict";i.d(t,{addPlusButtonProperty:()=>o,restoreAddPlusButtonSettingsValue:()=>a});var s=i(56840),r=i(32255);function n(){return s.getBool("add_plus_button",!0)}const o=(0,r.createPrimitiveProperty)(n());function a(){o.setValue(!0),s.remove("add_plus_button")}s.onSync.subscribe(null,()=>o.setValue(n())),o.listeners().subscribe(null,()=>s.setValue("add_plus_button",o.value()))},20165:(e,t,i)=>{"use strict";i.d(t,{alignToStep:()=>n});var s=i(60521),r=i.n(s);function n(e,t){return r()(e).div(t).round(0,r().roundHalfUp).mul(t).toNumber()}},44419:(e,t,i)=>{"use strict";i.d(t,{AppliedTimeFrame:()=>r});var s=i(40144);class r{constructor(e){this._appliedTimeFrame=new s.WatchedObject(null),this._appliedTimeFrameInfo=null,this._appliedTimeFrameChangedBound=this._appliedTimeFrameChanged.bind(this),this._model=e,e.mainSeries().dataEvents().seriesTimeFrame().subscribe(this,this._onSeriesTimeFrame),this._appliedTimeFrame.subscribe(this._appliedTimeFrameChangedBound)}destroy(){this._appliedTimeFrame.unsubscribe(this._appliedTimeFrameChangedBound),this._model.timeScale().logicalRangeChanged().unsubscribeAll(this),this._model.mainSeries().dataEvents().seriesTimeFrame().unsubscribeAll(this)}appliedTimeFrame(){return this._appliedTimeFrame}_appliedTimeFrameChanged(){this._model.timeScale().logicalRangeChanged().unsubscribe(this,this._invalidateAppliedTimeFrame)}_onSeriesTimeFrame(e,t,i,s){if(s){const e=this._model.timeScale();this._appliedTimeFrameInfo={logicalRange:e.logicalRange(), +baseIndex:e.baseIndex()},e.logicalRangeChanged().subscribe(this,this._invalidateAppliedTimeFrame)}}_invalidateAppliedTimeFrame(){if(null===this._appliedTimeFrameInfo)return;const e=this._model.timeScale(),t=e.logicalRange(),i=e.baseIndex(),s=this._appliedTimeFrameInfo.logicalRange,r=this._appliedTimeFrameInfo.baseIndex;(null===t||null===s||Math.abs(i-t.left()-(r-s.left()))>=.01||Math.abs(i-t.right()-(r-s.right()))>=.01)&&this._appliedTimeFrame.setValue(null)}}},67396:(e,t,i)=>{"use strict";i.d(t,{defaultsPreferencesByWhiteList:()=>P,preferencesByWhiteList:()=>C});var s=i(80643),r=i(27759);var n=i(98125),o=i(3825),a=i(59803),l=i(47484),c=i(15840),h=i(49642);const d=(0,n.getLogger)("Chart.ApplyPreferencesToAllCharts"),u={color:"",style:0},p={autoScale:!1,autoScaleDisabled:!1,lockScale:!1,percentage:!1,percentageDisabled:!1,log:!1,logDisabled:!1,alignLabels:!1,isInverted:!1,indexedTo100:!1},_={backgroundType:h.ColorType.Solid,background:"",backgroundGradientStartColor:"",backgroundGradientEndColor:"",topMargin:0,bottomMargin:0,rightOffset:0,horzGridProperties:(0,c.deepExtend)({},u),vertGridProperties:(0,c.deepExtend)({},u),crossHairProperties:(0,c.deepExtend)({},{color:"",style:0,transparency:0,width:0}),legendProperties:(0,c.deepExtend)({},{showStudyArguments:!1,showStudyTitles:!1,showStudyValues:!1,showSeriesTitle:!1,showSeriesOHLC:!1,showLegend:!1,showBarChange:!0,showVolume:!1,showBackground:!0,backgroundTransparency:0}),axisProperties:(0,c.deepExtend)({},p),separatorColor:""},m={lineColor:"",textColor:"",fontSize:0,scaleSeriesOnly:!1,showSeriesLastValue:!1,seriesLastValueMode:o.PriceAxisLastValueMode.LastValueAccordingToScale,showSeriesPrevCloseValue:!1,showStudyLastValue:!1,showSymbolLabels:!1,showStudyPlotLabels:!1,showBidAskLabels:!1,showPrePostMarketPriceLabel:!0,showFundamentalLastValue:!1,showFundamentalNameLabel:!1,showPriceScaleCrosshairLabel:!0,showTimeScaleCrosshairLabel:!0},g={...m},f={visible:!1,futureOnly:!1,breaks:(0,c.deepExtend)({},{color:"",visible:!1,style:0,width:0})},v={style:0,minTick:"",showPriceLine:!1,priceLineWidth:0,priceLineColor:"",baseLineColor:"",showPrevClosePriceLine:!1,showCountdown:!0,prevClosePriceLineWidth:0,sessionId:"regular",prevClosePriceLineColor:"",esdShowDividends:!1,esdShowSplits:!1,esdShowEarnings:!1,esdShowBreaks:!1,showContinuousContractSwitches:!1,showContinuousContractSwitchesBreaks:!1,dividendsAdjustment:!1,backAdjustment:!1,settlementAsClose:!0,statusViewStyle:(0,c.deepExtend)({},{fontSize:16,showExchange:!0,showInterval:!0,symbolTextSource:"description"}),priceAxisProperties:(0,c.deepExtend)({},p),highLowAvgPrice:(0,c.deepExtend)({},{highLowPriceLinesVisible:!1,highLowPriceLabelsVisible:!1,averageClosePriceLabelVisible:!1,averageClosePriceLineVisible:!1,highLowPriceLinesColor:"",highLowPriceLinesWidth:0,averagePriceLineColor:"",averagePriceLineWidth:0}),candleStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",drawWick:!1,drawBorder:!1,drawBody:!0,borderColor:"",borderUpColor:"",borderDownColor:"",wickColor:"",wickUpColor:"",wickDownColor:"",barColorsOnPrevClose:!1 +}),hollowCandleStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",drawWick:!1,drawBorder:!1,drawBody:!0,borderColor:"",borderUpColor:"",borderDownColor:"",wickColor:"",wickUpColor:"",wickDownColor:""}),barStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",barColorsOnPrevClose:!1,dontDrawOpen:!1,thinBars:!0}),lineStyle:(0,c.deepExtend)({},{color:"",linestyle:0,linewidth:0,styleType:0}),areaStyle:(0,c.deepExtend)({},{color1:"",color2:"",linecolor:"",linestyle:0,linewidth:0,transparency:0}),baselineStyle:(0,c.deepExtend)({},{topFillColor1:"",topFillColor2:"",bottomFillColor1:"",bottomFillColor2:"",topLineColor:"",bottomLineColor:"",baselineColor:"",topLineWidth:0,bottomLineWidth:0,transparency:0,baseLevelPercentage:0}),hiloStyle:(0,c.deepExtend)({},{color:"",showBorders:!1,borderColor:"",showLabels:!1,labelColor:"",fontSize:0,drawBody:!0}),haStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",drawWick:!1,drawBorder:!1,drawBody:!0,borderColor:"",borderUpColor:"",borderDownColor:"",wickColor:"",wickUpColor:"",wickDownColor:"",showRealLastPrice:!1,barColorsOnPrevClose:!1,inputs:{}}),renkoStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",borderUpColor:"",borderDownColor:"",upColorProjection:"",downColorProjection:"",borderUpColorProjection:"",borderDownColorProjection:"",wickUpColor:"",wickDownColor:"",inputs:{boxSize:0,style:"",atrLength:0,wicks:!1,sources:"",source:""}}),pbStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",borderUpColor:"",borderDownColor:"",upColorProjection:"",downColorProjection:"",borderUpColorProjection:"",borderDownColorProjection:"",inputs:{source:"",lb:0}}),kagiStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",upColorProjection:"",downColorProjection:"",inputs:{style:"",atrLength:0,reversalAmount:0}}),pnfStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",upColorProjection:"",downColorProjection:"",inputs:{reversalAmount:0,boxSize:0,style:"",atrLength:0}}),rangeStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",upColorProjection:"",downColorProjection:"",thinBars:!1,inputs:{range:0,phantomBars:!1}}),columnStyle:(0,c.deepExtend)({},{upColor:"",downColor:"",barColorsOnPrevClose:!1})},S={priceScaleSelectionStrategyName:"auto",timeScale:(0,c.deepExtend)({},{defaultRightOffset:0}),mainSeries:(0,c.deepExtend)({},v),sessions:(0,c.deepExtend)({},l.sessionsPreferencesDefault),paneProperties:(0,c.deepExtend)({},_),chartEventsSourceProperties:(0,c.deepExtend)({},f),tradingProperties:(0,c.deepExtend)({},r.tradingPreferencesDefault)},y={timezone:"",scalesProperties:(0,c.deepExtend)({},g),...S},b={scalesProperties:(0,c.deepExtend)({},m),...S};function w(e,t,i,r,n=!0){if(void 0===t[e])return d.logDebug(`We haven't had this property ${r}.${e} yet, please, remove it from whiteList`),null;if((0,s.isObject)(i[e])){const s=Object.keys(i[e]);let o="";return s.map(s=>({[s]:w(s,t[e],i[e],`${r}.${e}`,n)})).reduce((e,t)=>(o=Object.keys(t)[0],e[o]=t[o],e),{})}return n?t[e].value():t[e]}function C(e,t,i=y){const s={timezone:"",priceScaleSelectionStrategyName:"auto",timeScale:{ +defaultRightOffset:e.timeScale().defaultRightOffset().value()},mainSeries:{},sessions:{},paneProperties:{},scalesProperties:{},chartEventsSourceProperties:{},tradingProperties:{}},r=["timeScale","mainSeries","sessions"],n=i.mainSeries,o=Object.keys(i),a=Object.keys(n),l=t.properties(),c=e.properties(),h=i.sessions,d=Object.keys(h),u=e.sessions().properties();return a.forEach(e=>{s.mainSeries[e]=w(e,l,n,"mainSeries")}),d.forEach(e=>{s.sessions[e]=w(e,u,h,"sessions")}),o.forEach(e=>{r.includes(e)||(s[e]=w(e,c,i,"preferences"))}),s}function P(e,t,i=b){const s={timeScale:{defaultRightOffset:e.timeScale().rightOffsetDefaultValue()},mainSeries:{},sessions:(0,c.deepExtend)({},l.sessionsPreferencesDefault),paneProperties:{},scalesProperties:{},chartEventsSourceProperties:{},tradingProperties:{},priceScaleSelectionStrategyName:"auto"},r=["timeScale","mainSeries","sessions"],n=i.mainSeries,o=Object.keys(i),h=Object.keys(n),d=(0,a.factoryDefaults)("chartproperties.mainSeriesProperties"),u=(0,a.factoryDefaults)("chartproperties");return h.forEach(e=>{s.mainSeries[e]=w(e,d,n,"mainSeries",!1)}),o.forEach(e=>{r.includes(e)||(s[e]=w(e,u,i,"preferences",!1))}),s}},87426:(e,t,i)=>{"use strict";i.d(t,{axisLabelBackgroundColor:()=>r});var s=i(45112);const r={common:s.colorsPalette["color-tv-blue-500"],active:s.colorsPalette["color-tv-blue-800"]}},65862:(e,t,i)=>{"use strict";i.d(t,{createDwmAligner:()=>c,isAlignmentEnabled:()=>h,createTimeToBarTimeAligner:()=>d});var s=i(10480),r=i(67337),n=i(29823),o=i(29617),a=i(69177);const l=new o.SessionInfo("Etc/UTC","0000-0000:1234567");function c(e,t){if(!h()||!n.Interval.isDWM(e))return null;const i=new o.SessionInfo(t.timezone,t.session,t.session_holidays,t.corrections),r=(0,a.newBarBuilder)(e,i,l);return{timeToSessionStart:e=>r.tradingDayToSessionStart(e),timeToExchangeTradingDay:e=>{const t=s.utc_to_cal(i.timezone,e),r=i.spec.correctTradingDay(t);return s.set_hms(r,0,0,0,0,s.get_timezone("Etc/UTC")),r.getTime()}}}function h(){return!r.enabled("disable_resolution_rebuild")}function d(e,t){if(!h())return e=>e;const i=new o.SessionInfo(t.timezone,t.session,t.session_holidays,t.corrections),s=(0,a.newBarBuilder)(e,i,i,!1);return e=>s.alignTimeIfPossible(e)}},29617:(e,t,i)=>{"use strict";i.d(t,{SessionInfo:()=>o,BarBuilderBase:()=>a});var s=i(10480),r=i(68684),n=i(90388);class o{constructor(e,t,i,s){this.init(e,t,i,s),this._state={timezone:e,spec:t,holidays:i,corrections:s}}init(e,t,i,r){this.timezone=s.get_timezone(e),this.spec=new n.SessionSpec(e,t,i,r)}state(){return this._state}static fromState(e){return new o(e.timezone,e.spec,e.holidays,e.corrections)}}class a{alignTime(e){if(isNaN(e))return NaN;let t=this.indexOfBar(e);return t===r.SessionStage.POST_SESSION&&(this.moveTo(e),t=this.indexOfBar(e)),t<0?NaN:this.startOfBar(t)}}},69177:(e,t,i)=>{"use strict";i.r(t),i.d(t,{SessionInfo:()=>o.SessionInfo,alignExchangeTimeToSessionStartAndReturnUTC:()=>P,alignPeriodsBackForDataRequest:()=>y,alignPeriodsBackForVisibleRange:()=>b,getPeriodsBetweenDates:()=>C,isTradingNow:()=>T,newBarBuilder:()=>S}) +;var s=i(10480),r=i(29823),n=i(64514),o=i(29617),a=i(68684);class l extends o.BarBuilderBase{constructor(e,t){super(),this._sessionStartMs=-Number.MAX_VALUE,this._sessionEndMs=-Number.MAX_VALUE,this._periodSec=e,this._session=t}alignTimeIfPossible(e){const t=this.alignTime(e);return isNaN(t)?e:t}indexOfBar(e){return e=this._sessionEndMs?a.SessionStage.POST_SESSION:(0,n.toInt)(s.time_seconds_diff(e,this._sessionStartMs)/this._periodSec)}startOfBar(e){if(e===a.SessionStage.PRE_SESSION){const e=s.get_cal_from_unix_timestamp_ms(this._session.timezone,this._sessionStartMs-1),t=this._session.spec.alignToNearestSessionEnd(e,-1);return s.cal_to_utc(this._session.timezone,t)}if(e===a.SessionStage.POST_SESSION)return this._sessionEndMs;if(e<0)throw new Error("Negative offset is not supported");return this._sessionStartMs+s.time_seconds(this._periodSec*e)}endOfBar(e){if(e<0)throw new Error("Index cannot be negative");const t=this.startOfBar(e)+1e3*this._periodSec;return t>this._sessionEndMs?this._sessionEndMs:t}isLastBar(e,t){return t>=this._sessionStartMs+s.time_seconds(this._periodSec*(e+1)-1)}moveTo(e){const t=this._session.timezone,i=s.utc_to_cal(t,e),r=this._session.spec.alignToSessionStart(i);this._sessionStartMs=s.cal_to_utc(t,i),s.add_minutes(i,r),this._sessionEndMs=s.cal_to_utc(t,i)}indexOfLastBarInSession(){return(0,n.toInt)((this._sessionEndMs-1-this._sessionStartMs)/1e3/this._periodSec)}moveNext(){this.moveTo(this._sessionEndMs)}}var c=i(26985);function h(e,t){const i=s.clone(t),r=e.businessDaysToCalendarDays(i,1);r>1&&s.add_date(i,r-1);const n=e.leftBorderOfDailyBar(i);if(null===n)throw new Error("Cannot calculate left border of daily bar");return s.cal_to_utc(s.get_timezone(e.timezone()),n)}class d extends o.BarBuilderBase{constructor(e,t,i,s,r=!1){super(),this._periodStart=-Number.MAX_VALUE,this._periodEnd=-Number.MAX_VALUE,this._periodLastBarStart=-Number.MAX_VALUE,this._periodStartDay=new c.BusinessDay(0,0,0),this._periodEndDay=new c.BusinessDay(0,0,0),this._period=i,this._sessionTgt=e,this._builder=s,this._useBusinessDays=r,this._sessionSrc=r?new o.SessionInfo("Etc/UTC","24x7"):t||e}builder(){return this._builder}alignTimeIfPossible(e){return this.tradingDayToSessionStart(e)}tradingDayToSessionStart(e){return this.moveTo(e),this.startOfBar(0)}indexOfBar(e){if(this._useBusinessDays){const t=c.BusinessDay.fromCalendar(s.get_cal_from_unix_timestamp_ms(this._sessionSrc.timezone,e));return t.before(this._periodStartDay)?a.SessionStage.PRE_SESSION:this._periodEndDay.before(t)?a.SessionStage.POST_SESSION:0}return e=this._periodEnd?a.SessionStage.POST_SESSION:0}startOfBar(e){if(e===a.SessionStage.PRE_SESSION){const e=s.get_cal_from_unix_timestamp_ms(this._sessionTgt.timezone,this._periodStart-1),t=this._sessionTgt.spec.alignToNearestSessionEnd(e,-1);return s.cal_to_utc(this._sessionTgt.timezone,t)-1} +return e===a.SessionStage.POST_SESSION||e>0?this._periodEnd:e===a.SessionStage.LASTBAR_SESSION?this._periodLastBarStart:this._periodStart}moveTo(e){const t=s.get_cal_from_unix_timestamp_ms(this._sessionSrc.timezone,e);this._sessionSrc.spec.correctTradingDay(t);const i=s.get_year(t),r=this._indexOfPeriodInYear(t),n=r+this._period,o=this._sessionTgt.spec,a=this._sessionTgt.timezone,l=this._builder.startOfPeriod(a,r,i);this._periodStart=h(o,l);const d=s.clone(l),u=o.businessDaysToCalendarDays(d,1);u>1&&s.add_date(d,u-1),this._periodStartDay=c.BusinessDay.fromCalendar(d);const p=this._builder.startOfPeriod(a,n,i);this._periodEnd=h(o,p);const _=s.clone(p);for(s.add_date(_,-1);o.isCalWeekEnd(_);)s.add_date(_,-1);this._periodEndDay=c.BusinessDay.fromCalendar(_),s.add_date(p,-1),function(e,t){for(;e.isCalWeekEnd(t);)s.add_date(t,-1)}(this._sessionTgt.spec,p),this._periodLastBarStart=h(o,p),(this._periodLastBarStart=this._periodLastBarStart}currentRange(){return{from:this._periodStartDay,to:this._periodEndDay}}indexOfBarInYear(e){const t=s.get_cal_from_unix_timestamp_ms(this._sessionSrc.timezone,e),i=s.get_year(t),r=this._builder.indexOfPeriod(t),o=this._sessionTgt.timezone;let a=this._builder.startOfPeriod(o,r,i),l=h(this._sessionTgt.spec,a);return a=s.get_cal_from_unix_timestamp_ms(s.get_timezone("Etc/UTC"),l),i=0&&(r-=7),(0,n.toInt)((r+i)/7))}class _{indexOfPeriod(e){return s.get_day_of_year(e)-1}startOfPeriod(e,t,i){const r=s.days_per_year(i);return s.get_cal(s.get_timezone("Etc/UTC"),i,s.JANUARY,1+Math.min(t,r))}}class m extends _{constructor(e){super(),this._sessionsSpec=e}indexOfPeriod(e){return super.indexOfPeriod(e)-function(e,t){const i=p(e,t),r=s.get_cal(s.get_timezone("Etc/UTC"),s.get_year(t),s.JANUARY,1);s.add_date(r,7*i);const n=i*e.weekEndsCount()+e.holidaysFromYearStart(r),o=s.get_day_of_year(t)-s.get_day_of_year(r);return n+o-e.calendarDaysToBusinessDays(r,o)}(this._sessionsSpec,e)}startOfPeriod(e,t,i){const r=7-this._sessionsSpec.weekEndsCount(),o=Math.max(0,(0,n.toInt)(t/r)-1),a=s.get_cal(s.get_timezone("Etc/UTC"),i,s.JANUARY,1),l=s.get_days_per_year(a);if(s.add_date(a,7*o),(t-=r*o-this._sessionsSpec.holidaysFromYearStart(a))>0){const e=this._sessionsSpec.businessDaysToCalendarDays(a,t);s.add_date(a,e)}let c=s.get_day_of_year(a)-1 +;return is.get_days_per_year(r)?this.startOfPeriod(e,0,i+1):(s.add_date(r,a),r)}}class v{indexOfPeriod(e){return s.get_month(e)}startOfPeriod(e,t,i){if(t<0){const e=(0,n.toInt)((11-t)/12);i-=e,t+=12*e}else t>s.DECEMBER&&(i++,t=s.JANUARY);return s.get_cal(s.get_timezone("Etc/UTC"),i,t,1)}}function S(e,t,i,s=!1){const n=r.Interval.parse(e),o=n.multiplier();return n.isMinutes()?new l(60*o,t):n.isSeconds()?new l(o,t):n.isTicks()?new l(1,t):n.isRange()?new l(60*o,t):new d(t,i,o,function(e,t){switch(e){case r.ResolutionKind.Days:return new g(t);case r.ResolutionKind.Weeks:return new f(t);case r.ResolutionKind.Months:return new v}throw new Error("Unknown dwm resolution: "+e)}(n.kind(),t),s)}function y(e,t,i,s,r,n,o){return w(e,t,i,s,r,n,o,0)}function b(e,t,i,s,r,n,o){return w(e,t,i,s,r,n,o,1)}function w(e,t,i,s,n,a,l,c){const h=r.Interval.parse(n+s);if(h.isMonths()){const e=new Date(l);return 0===c&&e.setUTCDate(1),function(e,t){x(e,Math.floor(t/12));let i=e.getUTCMonth()-t%12;i<0&&(x(e,1),i+=12);e.setUTCMonth(i);for(;e.getUTCMonth()!==i;)I(e,1)}(e,a*h.multiplier()),e.getTime()}const d=new o.SessionInfo("Etc/UTC",e,t,i),u=h.inMilliseconds(),p=h.isDWM();let _;_=p?864e5:60*d.spec.maxTradingDayLength()*1e3;let m=0;m=h.isWeeks()?7:7-d.spec.weekEndsCount();const g=_/u,f=m*g;let v;if(a=g&&(f=_/6048e5*g),Math.ceil(f)}function P(e,t){const i=s.clone(t);return e.alignToSessionStart(i),s.cal_to_utc(s.get_timezone(e.timezone()),i)}function T(e,t){const i=s.utc_to_cal(t.timezone,+e);let r=s.get_day_of_week(i),n=s.get_minutes_from_midnight(i);const o=t.spec.findSession(t.spec.getWeekIndex(i),r,n).getEntry() +;return o.isOvernight()&&n>o.startOffset()+o.length()&&r===o.dayOfWeek()-1&&(r++,n-=1440),r===o.dayOfWeek()&&n>=o.startOffset()&&n{"use strict";i.d(t,{BusinessDay:()=>r});var s=i(10480);class r{constructor(e,t,i){this.year=e,this.month=t,this.day=i}toString(){return`${this.year}-${this.month}-${this.day}`}compareTo(e){return this.year>e.year||this.year===e.year&&this.month>e.month||this.year===e.year&&this.month===e.month&&this.day>e.day?1:this.year===e.year&&this.month===e.month&&this.day===e.day?0:-1}before(e){return-1===this.compareTo(e)}toCalendar(e){return s.get_cal(s.get_timezone("Etc/UTC"),this.year,this.month-1,this.day)}addDays(e){const t=this.toCalendar(s.get_timezone("Etc/UTC"));return s.add_date(t,e),r.fromCalendar(t)}static fromCalendar(e){return new r(s.get_year(e),s.get_month(e)+1,s.get_day_of_month(e))}}},68684:(e,t,i)=>{"use strict";var s;i.d(t,{SessionStage:()=>s}),function(e){e[e.PRE_SESSION=-1]="PRE_SESSION",e[e.POST_SESSION=-2]="POST_SESSION",e[e.LASTBAR_SESSION=-3]="LASTBAR_SESSION"}(s||(s={}))},11075:(e,t,i)=>{"use strict";i.d(t,{extrapolateBarsFrontToTime:()=>r,extrapolateBarsFrontByCount:()=>n});var s=i(68684);function r(e,t,i,s,n=!1){if(t>i){const o=r(e,i,t,s,n);return o.count=-o.count,o}return o(e,t,1,(e,t)=>t>i||0!==s&&e>s,n)}function n(e,t,i,s=!1){const r=i<0?-1:1;return o(e,t,r,(e,t)=>e>=i*r,s)}function o(e,t,i,r,n){let o=0,a=t;e.moveTo(a);let l=0,c=Number.MAX_VALUE,h=!1,d=t;const u=[];for(;!r(o,a);){if(l>15)throw new Error("Internal error 0x10 while extrapolating.");const r=e.indexOfBar(a);if(r===s.SessionStage.PRE_SESSION&&1===i)a=e.startOfBar(0),e.moveTo(a);else if(r===s.SessionStage.PRE_SESSION&&-1===i)a=e.startOfBar(s.SessionStage.PRE_SESSION),e.moveTo(a);else if(r===s.SessionStage.POST_SESSION&&1===i)a=e.startOfBar(s.SessionStage.POST_SESSION),e.moveTo(a);else{if(r===s.SessionStage.POST_SESSION&&-1===i)throw new Error("Internal error 0x12 while extrapolating.");{const p=e.startOfBar(r);if(p>t&&i>0||t>p&&i<0){if(h&&c===p)throw new Error("Internal error 0x11 while extrapolating.");h=!0,c=p,l=0,o++,d=p,n&&u.push(d)}if(0===r&&-1===i)a=p-1;else{a=e.startOfBar(r+i);const t=e.startOfBar(s.SessionStage.POST_SESSION);a>t&&(e.moveTo(t),a=e.startOfBar(0))}}}l++}return{time:d,times:u,count:o}}},37415:(e,t,i)=>{"use strict";i.d(t,{PrePostMarketBarIdentifier:()=>n});var s=i(10480);function r(e,t){return null!==t&&t.to>e&&e>=t.from}class n{constructor(e,t,i,s){this._timezone=e,this._regularSessionSpec=t,this._preMarketSessionSpec=i,this._postMarketSessionSpec=s}getPreAndPostMarketTimes(e){if(0===e.length)return{preMarket:[],postMarket:[]};const t=[],i=[];let r=null,n=null,o=e[0],a=(0,s.utc_to_cal)(this._timezone,o);this._isInPreMarketSession(a)&&(n=o);for(let l=1;l{"use strict";i.d(t,{SessionSpec:()=>f});var s=i(10480),r=i(55257),n=i(26985);function o(e,t){return e.compareTo(t)}class a{constructor(e,t,i){this._dayOfWeek=e,this._start=t,this._length=i}start(){return this._start+s.minutesPerDay*this.sessionStartDaysOffset()}startOffset(){return this._start}sessionStartDaysOffset(){return this._start>=0?0:this._start%s.minutesPerDay==0?-Math.ceil(this._start/s.minutesPerDay):-Math.floor(this._start/s.minutesPerDay)}sessionEndDaysOffset(){const e=this._start+this._length;return e>=0?0:e%s.minutesPerDay==0?-Math.ceil(e/s.minutesPerDay):-Math.floor(e/s.minutesPerDay)}isOvernight(){return this._start<0}dayOfWeek(){return this._dayOfWeek}sessionStartDayOfWeek(){let e=this._dayOfWeek-this.sessionStartDaysOffset();return es.SATURDAY&&(e=1),e}length(){return this._length}weight(){return this._dayOfWeek*s.minutesPerDay+this._start}compareTo(e){const t=this.weight(),i=t+this._length,s=e.weight(),r=s+e._length;return t<=s&&ss?1:-1}contains(e){const t=60*s.get_hours(e)+s.get_minutes(e);let i=s.get_day_of_week(e)-this._dayOfWeek;i>0&&(i-=7);const r=i*s.minutesPerDay+t;return r>=this._start&&r=48&&e<=57}class _{constructor(){this.entries=[],this.firstDayOfWeek=s.MONDAY,this.weekEndsCount=-1,this.maxTradingDayLength=0}parseSessions(e,t){var i;let s=!1;this._clear(),this.timezone=e;const{hasErrors:r,spec:n}=this._parseFirstDayOfWeek(t);if("24x7"===n.toLowerCase())for(const e of d)this.entries.push(_._createSessionEntry(e,0,0,0,0));else{let e=!1;const t=new Map;for(const i of n.split("|")){const r=i.split(":");if(1!==r.length&&2!==r.length){s=!0,u.logError("Bad session section: "+i);continue}const n=1===r.length;if(n){if(e){s=!0,u.logError("Duplicated default section: "+i);continue}e=!0}const o=n?h:_._parseWorkingDays(r[1]);for(const e of o)n&&t.has(e)||t.set(e,r[0])}for(const e of d){const i=t.get(e);if(void 0!==i)for(const t of i.split(",")){ +const{hasErrors:i,sessionEntry:r}=_._parseSessionEntry(e,t);i&&(s=i),this.entries.push(r)}}}this.entries.sort(o);const a=new Map;for(const e of this.entries){const t=e.dayOfWeek();a.set(t,e.length()+(null!==(i=a.get(t))&&void 0!==i?i:0))}return this.maxTradingDayLength=0,a.forEach(e=>{this.maxTradingDayLength=Math.max(this.maxTradingDayLength,e)}),this.weekEndsCount=7-a.size,s||r}static parseHolidaysAndCorrections(e,t,i){const r=new Map,n=new Map,o=e=>{const t=this._parseDay(e),i=t.toString(),s=n.get(i);return void 0!==s?s:(n.set(i,t),t)};if(""!==t){const e=[];for(const i of t.split(",")){if(8!==i.length)throw new Error("bad holiday date: "+i);const t=o(i);r.set(t,e)}}if(""===i)return r;const l=s.get_timezone("Etc/UTC");for(const e of i.split(";")){const t=e.split(":");if(2!==t.length)throw new Error("bad correction section: "+e);const i=[];if("dayoff"!==t[0])for(const e of t[0].split(","))i.push(this._parseSessionEntry(1,e).sessionEntry);for(const e of t[1].split(",")){if(8!==e.length)throw new Error("bad correction date: "+e);const t=o(e),n=s.get_day_of_week(s.get_cal(l,t.year,t.month-1,t.day)),c=[];for(const e of i)c.push(new a(n,e.startOffset(),e.length()));r.set(t,c)}}return r}_clear(){this.entries=[],this.timezone="",this.firstDayOfWeek=s.MONDAY,this.weekEndsCount=-1}_parseFirstDayOfWeek(e){const t=e.split(";");if(t.length>2)return u.logError("Only one `first day` specification expected @ session "+e),{hasErrors:!0,spec:e};if(1===t.length)return{hasErrors:!1,spec:e};let i=1;let r=t[0].indexOf("-")>=0?NaN:parseInt(t[0]);return isNaN(r)&&(i=0,r=parseInt(t[1])),rs.SATURDAY?(u.logError(`Unexpected day index @ session: ${e}; day index ${r}`),{hasErrors:!0,spec:e}):(this.firstDayOfWeek=r,{hasErrors:!1,spec:t[i]})}static _parseDay(e){const t=parseInt(e.substring(0,4)),i=parseInt(e.substring(4,6)),s=parseInt(e.substring(6,8));return new n.BusinessDay(t,i,s)}static _parseSessionEntry(e,t){let i=!1,s=t.split("-");2!==s.length&&(i=!0,u.logError("Bad sessions entry: "+t),s=["0000","0000"]);let r=0,n=s[0];if(n.includes("F")){const e=n.split("F");n=e[0],r=""!==e[1]?parseInt(e[1]):1}let o=0,a=s[1];if(a.includes("F")){const e=a.split("F");a=e[0],o=""!==e[1]?parseInt(e[1]):1}if(!this._isCorrectSession(n)||!this._isCorrectSession(a))throw new Error("Incorrect entry syntax: "+t);const l=n,c=a;return{hasErrors:i,sessionEntry:this._createSessionEntry(e,_._minutesFromHHMM(l),_._minutesFromHHMM(c),r,o)}}static _isCorrectSession(e){return 4===e.length&&p(e.charCodeAt(0))&&p(e.charCodeAt(1))&&p(e.charCodeAt(2))&&p(e.charCodeAt(3))}static _parseWorkingDays(e){const t=[];for(let i=0;i0&&(t-=r*s.minutesPerDay),n>0&&(i-=n*s.minutesPerDay);return new a(e,t,i-t)}}function m(e,t){return e.compareTo(t)<0}function g(e,t){const i=(0,r.lowerbound)(e,t,(e,t)=>-1===e.day.compareTo(t));return i===e.length?null:e[i]}class f{ +constructor(e="Etc/UTC",t="0000-0000",i="",r=""){this._entries=[],this._firstDayOfWeek=s.MONDAY,this._entriesHash=new Map,this._holidayAndCorrectionMap=new Map,this._holidaySessions=[];const n=new _;n.parseSessions(e,t),this._entries=n.entries,this._timezone=n.timezone,this._spec=t,this._firstDayOfWeek=n.firstDayOfWeek,this._weekEndsCount=n.weekEndsCount,this._maxTradingDayLength=n.maxTradingDayLength;const o=_.parseHolidaysAndCorrections(e,i,r),a=s.get_timezone(e);this._isThereCorrections=""!==i||""!==r,o.forEach((e,t)=>{this._holidayAndCorrectionMap.set(t.toString(),e),this._holidaySessions.push({day:t,sessions:e});const i=this.getWeekIndex(t.toCalendar(a));this._entriesHash.set(i,null)}),this._holidaySessions.sort((e,t)=>e.day.compareTo(t.day))}entries(){return this._entries}timezone(){return this._timezone}spec(){return this._spec}firstDayOfWeek(){return this._firstDayOfWeek}addSessionEntry(e,t,i,r,n){0===i&&(i=s.minutesPerDay),r===n&&i<=t&&(r+=1),r>0&&(t-=r*s.minutesPerDay),n>0&&(i-=n*s.minutesPerDay);const o=i-t;this._entries.push(new a(e,t,o))}longestSessionLength(){let e=0,t=0;for(const t of this._holidaySessions)t.sessions.forEach(t=>{e=Math.max(e,t.length())});return this._entries.forEach(e=>{t=Math.max(t,e.length())}),Math.max(e,t)}isWeekEnd(e){const t=(0,r.lowerbound)(this._entries,new a(e,0,0),(e,t)=>e.dayOfWeek()this._entries.length-1||this._entries[t].dayOfWeek()!==e}isCalWeekEnd(e){const t=s.get_day_of_week(e);if(!this._isThereCorrections)return this.isWeekEnd(t);const i=n.BusinessDay.fromCalendar(e),r=this._holidayAndCorrectionMap.get(i.toString());return void 0===r?this.isWeekEnd(t):0===r.length}hasWeekEnds(){return this.weekEndsCount()>0}weekEndsCount(){return this._weekEndsCount}maxTradingDayLength(){return this._maxTradingDayLength}holidaysFromYearStart(e){if(!this._isThereCorrections)return 0;const t=s.get_timezone(this._timezone),i=new n.BusinessDay(s.get_year(e),s.JANUARY,1),r=n.BusinessDay.fromCalendar(e);let o=0;const a=this._selectHolidays(i,r);for(let e=0;et.start()%e==0&&t.length()%e==0)}indexOfSession(e,t,i){const n=this._getEntriesForWeek(e);let o=(0,r.lowerbound)(n,new a(t,i,0),m);if(o!==n.length)return new l(e,o,n);let c=e;const h=7-t+this._firstDayOfWeek-1;for(i=-(s.minutesPerDay-i+h*s.minutesPerDay);;){c++;const e=this._getEntriesForWeek(c);if(0!==e.length)return o=(0,r.lowerbound)(e,new a(this._firstDayOfWeek,i,0),m),new l(c,o,e)}}findSession(e,t,i,s=0){const r=this.indexOfSession(e,t,i),n=r.entries;let o=r.entryIndex;if(0!==s){const e=n[o].dayOfWeek(),t=s>0?1:-1;for(;;){const i=o+t;if(i<0||i>=n.length||n[i].dayOfWeek()!==e)break;o=i}}return new l(r.weekIndex,o,n)}getWeekIndex(e){if(!this._isThereCorrections)return 0 +;const t=s.get_day_of_week(e)-s.SUNDAY,i=s.get_timezone("Etc/UTC"),r=s.get_cal(i,s.get_year(e),s.get_month(e),s.get_day_of_month(e)-t);return Math.floor((r.getTime()+621672192e5)/1e3/86400/7)}correctTradingDay(e){const t=s.get_day_of_week(e),i=60*s.get_hours(e)+s.get_minutes(e),r=this.getWeekIndex(e),n=this.findSession(r,t,i,0),o=n.getEntry().dayOfWeek()-t+7*(n.weekIndex-r);return 0!==o&&s.add_date(e,o),e}alignToSessionStart(e,t=0){const i=s.get_day_of_week(e),r=60*s.get_hours(e)+s.get_minutes(e),n=this.getWeekIndex(e),o=this.findSession(n,i,r,t),a=o.getEntry(),l=a.dayOfWeek()-i+7*(o.weekIndex-n);0!==l&&s.add_date(e,l);const c=a.startOffset();return s.set_hms(e,c/60,c%60,0,0,s.get_timezone(this._timezone)),a.length()}businessDaysToCalendarDays(e,t){let i=this.getWeekIndex(e),r=s.get_day_of_week(e),n=0,o=0;for(;oi);)e[a].dayOfWeek()=t)return n}i++,r=s.SUNDAY}return n}calendarDaysToBusinessDays(e,t){let i=this.getWeekIndex(e),r=s.get_day_of_week(e),n=0,o=0;for(;ni);)e[a].dayOfWeek()=t)return o}i++,r=s.SUNDAY}return o}alignToNearestSessionStart(e,t){return this._alignToNearestSessionValue(e,t,this._entrySessionStart.bind(this))}alignToNearestSessionEnd(e,t){return this._alignToNearestSessionValue(e,t,this._entrySessionEnd.bind(this))}leftBorderOfDailyBar(e){const t=this._getEntriesForDay(e);return 0===t.length?null:(t.sort(o),this._getLeftEntryBorder(e,t[0]))}bordersOfDailyBar(e){const t=this._getEntriesForDay(e);if(0===t.length)return null;t.sort(o);const i=this._getLeftEntryBorder(e,t[0]),r=t[t.length-1],n=s.clone(e);let a=60*(r.startOffset()+r.length())-1;const l=Math.floor(a/3600);return a-=3600*l,s.set_hms(n,l,a/60,a%60,0,s.get_timezone(this._timezone)),{from:i,to:n}}getEntriesForWeekByCalendar(e){const t=this.getWeekIndex(e);return this._getEntriesForWeek(t)}_getEntriesForWeek(e){let t=this._entriesHash.get(e);if(void 0===t)return this._entries;if(null!==t)return t;const i=s.get_timezone(this._timezone);t=this._entries.slice();const r=this._weekIndexToCalendar(e),a=this._weekIndexToCalendar(e+1),l=n.BusinessDay.fromCalendar(r),c=n.BusinessDay.fromCalendar(a),h=this._selectHolidays(l,c);for(const e of h){const r=e.day.toCalendar(i),n=s.get_day_of_week(r);t=t.filter(e=>e.dayOfWeek()!==n),t=t.concat(e.sessions)}return t.sort(o),this._entriesHash.set(e,t),t}_selectHolidays(e,t){const i=[];let s=e;for(;;){const e=g(this._holidaySessions,s);if(null===e)return i;if(!e.day.before(t))return i;i.push(e),s=e.day.addDays(1)}}_weekIndexToCalendar(e){const t=1e3*(86400*e*7+86400)-621672192e5,i=s.get_cal_from_unix_timestamp_ms(s.get_timezone("Etc/UTC"),t),r=s.get_timezone("Etc/UTC");return s.get_cal(r,s.get_year(i),s.get_month(i),s.get_day_of_month(i))}_alignToNearestSessionValue(e,t,i){ +const r=s.get_day_of_week(e),n=60*s.get_hours(e)+s.get_minutes(e),o=this.getWeekIndex(e);let a=this.findSession(o,r,n);if(a.getEntry().contains(e)&&o===a.weekIndex||1===t)return i(a,s.clone(e),t);let c=a.entryIndex-1;if(c<0){let e=a.weekIndex,t=a.entries;for(;c<0;)e--,t=this._getEntriesForWeek(e),c+=t.length;a=new l(e,c,t)}else a=new l(a.weekIndex,c,a.entries);return i(a,s.clone(e),t)}_entrySessionStart(e,t,i){return this._entrySessionValue(e,t,i,e=>60*e.start())}_entrySessionEnd(e,t,i){return this._entrySessionValue(e,t,i,e=>60*(e.start()+e.length())-1)}_entrySessionValue(e,t,i,r){let n=s.get_day_of_week(t);const o=e.getEntry();let a=o.dayOfWeek()-o.sessionStartDaysOffset();const l=this.getWeekIndex(t);let c=e.weekIndex-l,h=!1;if(a0&&i>=0||c<0&&i<0)&&s.add_date(t,7*c),!o.contains(t)){let e=a-n;h&&i<0&&(e=-(7-a+n)),s.add_date(t,e),n=s.get_day_of_week(t)}o.isOvernight()&&n===o.dayOfWeek()&&s.add_date(t,-o.sessionStartDaysOffset());let d=r(o);const u=Math.floor(d/3600);return d-=3600*u,s.set_hms(t,u,d/60,d%60,0,s.get_timezone(this._timezone)),t}_getEntriesForDay(e){const t=s.get_day_of_week(e);return this._getEntriesForWeek(this.getWeekIndex(e)).filter(e=>e.dayOfWeek()===t)}_getLeftEntryBorder(e,t){const i=s.clone(e),r=t.startOffset();return s.set_hms(i,r/60,r%60,0,0,s.get_timezone(this._timezone)),i}}},33981:(e,t,i)=>{"use strict";var s=i(71053).PlotRowSearchMode,r=i(68906).rgbaFromInteger;function n(){this.backColorers=[]}function o(e){n.call(this),this._series=e}function a(e,t){n.call(this),this._study=e,this._plotIndex=t}n.prototype.barStyle=function(e,t,i){for(var s={},r=this.backColorers.length-1;r>=0;r--)this.backColorers[r].applyBarStyle(e,t,s,i);return this.applyBarStyle(e,t,s,i),s},n.prototype.pushBackBarColorer=function(e){this.backColorers.push(e)},n.prototype.applyBarStyle=function(e,t,i){throw new Error("This function is supposed to be reimplemented in a subclass")},inherit(o,n),o.upColor=function(e,t){switch(e.style.value()){case TradingView.Series.STYLE_LINE:return e.lineStyle.color.value();case TradingView.Series.STYLE_AREA:return e.areaStyle.linecolor.value();case TradingView.Series.STYLE_BARS:return e.barStyle.upColor.value();case TradingView.Series.STYLE_CANDLES:return e.candleStyle.upColor.value();case TradingView.Series.STYLE_HOLLOW_CANDLES:return e.hollowCandleStyle.upColor.value();case TradingView.Series.STYLE_HEIKEN_ASHI:return e.haStyle.upColor.value();case TradingView.Series.STYLE_BASELINE:return e.baselineStyle.topLineColor.value();case TradingView.Series.STYLE_HILO:return e.hiloStyle.color.value();case TradingView.Series.STYLE_COLUMNS:return e.columnStyle.upColor.value()}throw new Error("Unknown series style")},o.downColor=function(e,t){switch(e.style.value()){case TradingView.Series.STYLE_LINE:return e.lineStyle.color.value();case TradingView.Series.STYLE_AREA:return e.areaStyle.linecolor.value();case TradingView.Series.STYLE_BARS:return e.barStyle.downColor.value();case TradingView.Series.STYLE_CANDLES:return e.candleStyle.downColor.value() +;case TradingView.Series.STYLE_HOLLOW_CANDLES:return e.hollowCandleStyle.downColor.value();case TradingView.Series.STYLE_HEIKEN_ASHI:return e.haStyle.downColor.value();case TradingView.Series.STYLE_BASELINE:return e.baselineStyle.bottomLineColor.value();case TradingView.Series.STYLE_HILO:return e.hiloStyle.color.value();case TradingView.Series.STYLE_COLUMNS:return e.columnStyle.downColor.value()}throw new Error("Unknown series style")},o.prototype._applyLineStyle=function(e,t,i,s,r){i.barColor=o.upColor(r)},o.prototype._applyAreaStyle=function(e,t,i,s,r){i.barColor=o.upColor(r)},o.prototype._applyBarStyle=function(e,t,i,s,r){var n=o.upColor(r),a=o.downColor(r),l=this.findBar(e,!1,s);if(r.barStyle.barColorsOnPrevClose.value()){var c=this.findPrevBar(e,!1,s);i.barColor=c[TradingView.CLOSE_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a,i.barBorderColor=c[TradingView.CLOSE_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a}else i.barColor=l[TradingView.OPEN_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a,i.barBorderColor=l[TradingView.OPEN_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a},o.prototype._applyCandleStyle=function(e,t,i,s,r){var n,a=o.upColor(r,t),l=o.downColor(r,t),c=r.candleStyle.borderUpColor?r.candleStyle.borderUpColor.value():r.candleStyle.borderColor.value(),h=r.candleStyle.borderDownColor?r.candleStyle.borderDownColor.value():r.candleStyle.borderColor.value(),d=r.candleStyle.wickUpColor?r.candleStyle.wickUpColor.value():r.candleStyle.wickColor.value(),u=r.candleStyle.wickDownColor?r.candleStyle.wickDownColor.value():r.candleStyle.wickColor.value(),p=this.findBar(e,!1,s);r.candleStyle.barColorsOnPrevClose.value()&&this._series.data().first().index!==e?n=this.findPrevBar(e,!1,s)[TradingView.CLOSE_PLOT]<=p[TradingView.CLOSE_PLOT]:n=p[TradingView.OPEN_PLOT]<=p[TradingView.CLOSE_PLOT];i.barColor=n?a:l,i.barBorderColor=n?c:h,i.barWickColor=n?d:u},o.prototype._applyHollowCandleStyle=function(e,t,i,s,r){var n,a=o.upColor(r,t),l=o.downColor(r,t),c=r.hollowCandleStyle.borderUpColor?r.hollowCandleStyle.borderUpColor.value():r.hollowCandleStyle.borderColor.value(),h=r.hollowCandleStyle.borderDownColor?r.hollowCandleStyle.borderDownColor.value():r.hollowCandleStyle.borderColor.value(),d=r.hollowCandleStyle.wickUpColor?r.hollowCandleStyle.wickUpColor.value():r.hollowCandleStyle.wickColor.value(),u=r.hollowCandleStyle.wickDownColor?r.hollowCandleStyle.wickDownColor.value():r.hollowCandleStyle.wickColor.value(),p=this.findBar(e,!1,s),_=this.findPrevBar(e,!1,s);n=this._series.data().first().index!==e?_[TradingView.CLOSE_PLOT]<=p[TradingView.CLOSE_PLOT]:p[TradingView.OPEN_PLOT]<=p[TradingView.CLOSE_PLOT],i.barColor=n?a:l,i.barBorderColor=n?c:h,i.barWickColor=n?d:u,i.isBarHollow=p[TradingView.OPEN_PLOT]<=p[TradingView.CLOSE_PLOT]},o.prototype._applyHAStyle=function(e,t,i,s,r){var n,a=o.upColor(r,t),l=o.downColor(r,t),c=r.haStyle.borderUpColor.value(),h=r.haStyle.borderDownColor.value(),d=r.haStyle.wickUpColor.value(),u=r.haStyle.wickDownColor.value(),p=this.findBar(e,t,s) +;r.haStyle.barColorsOnPrevClose.value()?n=this.findPrevBar(e,t,s)[TradingView.CLOSE_PLOT]<=p[TradingView.CLOSE_PLOT]:n=p[TradingView.OPEN_PLOT]<=p[TradingView.CLOSE_PLOT];i.barColor=n?a:l,i.barBorderColor=n?c:h,i.barWickColor=n?d:u},o.prototype._applyBaseLineStyle=function(e,t,i,s,r){var n=this.findBar(e,t,s),a=r.baselineStyle,l=this._series.priceScale(),c=Math.round(l.height()*(Math.abs(100-a.baseLevelPercentage.value())/100)),h=this._series.firstValue(),d=l.coordinateToPrice(c,h);n[TradingView.CLOSE_PLOT]>d?i.barColor=o.upColor(r,t):i.barColor=o.downColor(r,t)},o.prototype._applyHiLoStyle=function(e,t,i,s,r){i.barColor=o.upColor(r,t),i.barBorderColor=r.hiloStyle.borderColor.value()},o.prototype._applyColumnStyle=function(e,t,i,s,r){var n=o.upColor(r),a=o.downColor(r),l=this.findBar(e,!1,s);if(r.columnStyle.barColorsOnPrevClose.value()){var c=this.findPrevBar(e,!1,s);i.color=c[TradingView.CLOSE_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a}else i.color=l[TradingView.OPEN_PLOT]<=l[TradingView.CLOSE_PLOT]?n:a;i.barColor=i.color},o.prototype.applyBarStyle=function(e,t,i,s){i||(i={}),i.barColor=null,i.barBorderColor=null,i.barWickColor=null,i.isBarHollow=null,i.isBarUp=null,i.upColor=null,i.downColor=null,i.isTwoColorBar=null,i.isMergedBar=null;var r=this._series.properties();switch(r.style.value()){case TradingView.Series.STYLE_LINE:this._applyLineStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_AREA:this._applyAreaStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_BARS:this._applyBarStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_CANDLES:this._applyCandleStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_HOLLOW_CANDLES:this._applyHollowCandleStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_HEIKEN_ASHI:this._applyHAStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_BASELINE:this._applyBaseLineStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_HILO:this._applyHiLoStyle(e,t,i,s,r);break;case TradingView.Series.STYLE_COLUMNS:this._applyColumnStyle(e,t,i,s,r)}return i},o.prototype.getSeriesBars=function(e){return e?this._series.nsBars():this._series.bars()},o.prototype._findBarFieldValue=function(e,t,i){var s=this.getSeriesBars(i).valueAt(e);if(null!==s)return s[t]},o.prototype.findBar=function(e,t,i){return i?i.value:this.getSeriesBars(t).valueAt(e)||[]},o.prototype.findPrevBar=function(e,t,i){if(i&&i.previousValue)return i.previousValue;var r=this._series.bars().search(e-1,s.NearestLeft,TradingView.CLOSE_PLOT);return null!==r?r.value:[]},inherit(a,n),a.prototype.getBars=function(){return this._study.series().bars()},a.prototype.firstColoredBar=function(e){for(var t=e,i=0;ie+l)return i;var c=s.styles[a.id];if(c.visible&&!c.visible.value())return i;var h=o.valueAt(e-l);if(null===h)return i;var d=h[this._plotIndex+1];if(null==d)return i;if(d=Math.round(d),n.isRGB)i.barColor=r(d),i.upColor=i.barColor,i.downColor=i.barColor;else{var u=n.plots[this._plotIndex].palette,p=s.palettes[u],_=n.palettes[u].valToIndex?n.palettes[u].valToIndex[d]:d,m=p.colors[_].color.value();i.barColor=m,i.upColor=m.color,i.downColor=m.color}return i},t.SeriesBarColorer=o,t.StudyBarColorer=a},81688:(e,t,i)=>{"use strict";i.d(t,{BarsRange:()=>r});var s=i(88537);class r{constructor(e,t){(0,s.assert)(e<=t,"The last bar in the bars range should be greater than or equal to the first bar"),this._firstBar=e,this._lastBar=t}firstBar(){return this._firstBar}lastBar(){return this._lastBar}count(){return this._lastBar-this._firstBar+1}contains(e){return this._firstBar<=e&&e<=this._lastBar}equals(e){return this._firstBar===e.firstBar()&&this._lastBar===e.lastBar()}static compare(e,t){return null===e||null===t?e===t:e.equals(t)}}},36244:(e,t,i)=>{"use strict";i.d(t,{ChartModelBase:()=>Vi});var s=i(4889),r=i(88537),n=i(86441),o=i(24377),a=i(45112),l=i(45345),c=i(6087),h=i(51768),d=i(81836),u=i(76422),p=i(11417),_=i(27759),m=i(35878),g=i(55257),f=i(14291);function v(e){return(0,f.isLineTool)(e)&&e.boundToSymbol()||!1}class S{constructor(){this._items=[],this._set=new Set,this._dataSourcesCache=null,this._customSourcesCache=null,this._lineSourcesCache=null}isEmpty(){return 0===this._items.length}add(e){if(this._items.length>0&&!v(this._items[0])&&this.clear(),v(e)){const t=(0,g.lowerbound)(this._items,e,(e,t)=>e.zorder()!(0,m.isDataSource)(e))),this._customSourcesCache}checkLineToolSelection(){this._items.forEach(e=>(0,f.isLineTool)(e)&&e.calcIsActualSymbol()),this._items=this._items.filter(e=>!(0,f.isLineTool)(e)||e.isActualSymbol()),this._invalidateCache()}remove(e){this._items=this._items.filter(t=>t!==e),this._set.delete(e),this._invalidateCache()}clear(){this._items=[],this._set.clear(),this._invalidateCache()}_invalidateCache(){this._customSourcesCache=null,this._dataSourcesCache=null,this._lineSourcesCache=null}}var y=i(31752),b=i.n(y),w=i(25270),C=i(29823),P=i(88564),T=i(2015),x=i.n(T),I=i(52640),M=i(22799) +;class L{constructor(e){this._rendererOptions={borderSize:1,offsetSize:5,fontSize:NaN,font:"",color:"",paneBackgroundColor:"",paddingBottom:0,paddingInner:0,paddingOuter:0,paddingTop:0,lineSpacing:0},this._chartModel=e}options(){const e=this._rendererOptions,t=this._chartModel.properties().childs(),i=t.scalesProperties.childs().fontSize.value();return e.fontSize!==i&&(e.fontSize=i,e.font=(0,I.makeFont)(i,M.CHART_FONT_FAMILY,""),e.paddingTop=2.5/12*i,e.paddingBottom=e.paddingTop,e.paddingInner=i/12*e.offsetSize,e.paddingOuter=i/12*e.offsetSize,e.lineSpacing=2/12*i),e.color=t.scalesProperties.childs().textColor.value(),e.paneBackgroundColor=t.paneProperties.childs().background.value(),this._rendererOptions}}var A=i(27982),E=i(54376),k=i(97098),D=i(59803),V=i(99305),B=i(67337),N=i(37667),R=i(47484),O=i(33291);const F=new k.PriceFormatter;class W extends V.CustomSourceBase{constructor(e,t,i){super(e,t),this._studySource=null,this._paneViews=[],this._metaInfo=null,this._destroyed=!1,this._isStarted=!1,this._loadedGraphics=null,this._doubleClickHandler=i;const s=t.mainSeries();this._properties=new P.DefaultProperty("sessions"),(0,D.applyDefaultsOverrides)(this._properties.childs().graphics,void 0,!1,"sessions"),this._removeDuplicateProperties(),this._properties.subscribe(this,this._onPropertiesChanged),t.studyMetaInfoRepository().findById({type:"java",studyId:"Sessions@tv-basicstudies"}).then(i=>{this._destroyed||null===this._loadedGraphics&&(this._setMetaInfo(i),null!==this._metaInfo&&(this._studySource=new A.StudyDataSource(t.chartApi(),s.seriesSource(),"sessions_",this._metaInfo),this._createPaneViews(),this._studySource.dataCleared().subscribe(this,this.updateAllViews.bind(this,(0,O.dataSourceChangeEvent)(e))),this._studySource.dataUpdated().subscribe(this,this.updateAllViews.bind(this,(0,O.dataSourceChangeEvent)(e))),this._studySource.setInputs({}),this._processHibernate()))}),t.timeScale().onReset().subscribe(this,this._clearData),t.timeScale().logicalRangeChanged().subscribe(this,this.updateAllViews.bind(this,(0,O.viewportChangeEvent)())),t.mainSeries().sessionIdProxyProperty().subscribe(this,this._updateVisibleOfPreAndPostMarketBackground),t.mainSeries().properties().childs().interval.subscribe(this,this._processHibernate),this._updateVisibleOfPreAndPostMarketBackground(t.mainSeries().properties().childs().sessionId)}applyOverrides(e){(0,D.applyPropertiesOverrides)(this._properties.childs().graphics,void 0,!1,e,"sessions"),this._model.updateSource(this)}start(){this._isStarted=!0,this._processHibernate()}restart(){this._clearData(),B.enabled("stop_study_on_restart")&&this.stop(),this.start()}isStarted(){return this._isStarted}stop(){this._isStarted=!1,null!==this._studySource&&this._studySource.stop()}isHoveredEnabled(){return!1}paneViews(e){return this._paneViews}updateAllViews(e){this._paneViews.forEach(t=>t.update(e))}updateViewsForPane(e,t){this.updateAllViews(t)}destroy(){this._destroyed=!0,null!==this._studySource&&(this._studySource.dataCleared().unsubscribeAll(this), +this._studySource.dataUpdated().unsubscribeAll(this),this._studySource.destroy(),this._studySource=null),this._model.timeScale().logicalRangeChanged().unsubscribeAll(this),this._model.timeScale().onReset().unsubscribeAll(this),this._model.mainSeries().sessionIdProxyProperty().unsubscribeAll(this),this._model.mainSeries().properties().childs().interval.unsubscribeAll(this),this._properties.unsubscribeAll(this)}series(){return this._model.mainSeries()}priceScale(){return this.series().priceScale()}graphics(){return this._loadedGraphics||(0,r.ensureNotNull)(this._studySource).graphics()}properties(){return this._properties}graphicsInfo(){return(0,r.ensureNotNull)(this._metaInfo).graphics}firstValue(e){return this._model.mainSeries().firstValue()}formatter(){return F}state(e){const t={properties:this._properties.state()};return e&&null!==this._metaInfo&&(t.data={graphics:(0,E.saveStudyGraphics)(this.graphics()),metaInfo:this._metaInfo}),t}restoreState(e,t){const i=e.properties;this._migrateOutOfSessionProperty(i),this._properties.mergeAndFire(i),this._removeDuplicateProperties(),this._updateVisibleOfPreAndPostMarketBackground(this._model.mainSeries().properties().childs().sessionId),void 0!==e.data&&t&&(this._loadStudyGraphics(e.data.graphics),this._setMetaInfo(e.data.metaInfo),this._createPaneViews())}restoreOldState(e,t){const i={properties:{graphics:e.state.graphics}};void 0!==e.data&&void 0!==e.metaInfo&&t&&(i.data={metaInfo:e.metaInfo,graphics:e.data.graphics}),this.restoreState(i,t)}applyPreferences(e){this._properties.mergePreferences(e)}metaInfo(){return(0,r.ensureNotNull)(this._metaInfo)}_loadStudyGraphics(e){const t=e.backgrounds;if(void 0!==t){const e=t.findIndex(e=>"inSession"===e.styleId);-1!==e&&t.splice(e,1)}this._loadedGraphics=(0,E.loadStudyGraphics)(e)}_setMetaInfo(e){const t=e.graphics.backgrounds;void 0!==t&&void 0!==t.inSession&&delete t.inSession,this._metaInfo=e}_updateVisibleOfPreAndPostMarketBackground(e){const t=!(0,N.isRegularSessionId)(e.value());this._outOfSessionVisibilityProperty().setValue(t),this._preMarketVisibilityProperty().setValue(t),this._postMarketVisibilityProperty().setValue(t)}_clearData(){null!==this._studySource&&this._studySource.clearData()}_createPaneViews(){const e={doubleClickHandler:this._doubleClickHandler};(0,E.createGraphicsPaneViews)(this,this._model,e).then(e=>{this._paneViews=e,this._model.lightUpdate()})}_onPropertiesChanged(){this._processHibernate(),this.updateAllViews((0,O.dataSourceChangeEvent)(this.id()))}_processHibernate(){if(null!==this._studySource){const e=this._canBeHibernated(),t=this._isHibernated(),i=this._studySource.isStarted();!t&&e&&i?this._studySource.stop():!t||e||i||this._studySource.start()}}_canBeHibernated(){const e=this._model.mainSeries(),t=this._preMarketVisibilityProperty().value()&&this._postMarketVisibilityProperty().value()&&this._outOfSessionVisibilityProperty().value();return e.isDWM()||!t&&!this._vertLinesVisibleProperty().value()}_isHibernated(){return this._isStarted&&(null===this._studySource||!this._studySource.isStarted())} +_outOfSessionVisibilityProperty(){return this._properties.childs().graphics.childs().backgrounds.childs().outOfSession.childs().visible}_preMarketVisibilityProperty(){return this._properties.childs().graphics.childs().backgrounds.childs().preMarket.childs().visible}_postMarketVisibilityProperty(){return this._properties.childs().graphics.childs().backgrounds.childs().postMarket.childs().visible}_vertLinesVisibleProperty(){return this._properties.childs().graphics.childs().vertlines.childs().sessBreaks.childs().visible}_removeDuplicateProperties(){this._properties.hasChild("properties")&&(this._properties.removeProperty("properties"),(0,P.saveDefaultProperties)(!0),this._properties.childChanged(null),(0,P.saveDefaultProperties)(!1))}_migrateOutOfSessionProperty(e){const t=e.graphics.backgrounds;if(void 0!==t){const i=t.outOfSession;i.color===(0,r.ensureDefined)(R.sessionsPreferencesDefault.graphics.backgrounds).outOfSession.color||"postMarket"in t||(e.graphics.backgrounds={...t,postMarket:{color:i.color,transparency:i.transparency,visible:i.visible},preMarket:{color:i.color,transparency:i.transparency,visible:i.visible}})}}}var H=i(81851),z=i(2872),U=i.n(z),j=i(52714),G=i.n(j),q=i(23653),Y=i(8175),K=i(28353),$=i(98125),X=i(9423),Z=i(39593),J=i(22932),Q=i(74325),ee=i(59555);const te=new Map([["price",e=>(0,J.isPriceDataSource)(e)],["trading",e=>(0,f.isTrading)(e)],["drawing",e=>(0,f.isLineTool)(e)&&!(0,f.isTrading)(e)&&!e.isPhantom()],["drawingsForAllSymbols",e=>(0,f.isLineTool)(e)&&!(0,f.isTrading)(e)&&!e.isPhantom()],["phantom",e=>(0,f.isLineTool)(e)&&e.isPhantom()],["restRowSources",e=>!(0,f.isLineTool)(e)&&!(0,f.isTrading)(e)],["leftPriceScale",(e,t)=>"left"===se(e,t)],["rightPriceScale",(e,t)=>"right"===se(e,t)],["overlayPriceScale",(e,t)=>"overlay"===se(e,t)]]),ie=new Map([["price","visibleSorted"],["trading","visibleSorted"],["drawing","visibleSorted"],["drawingsForAllSymbols","allSorted"],["phantom","visibleSorted"],["restRowSources","visibleSorted"],["leftPriceScale","visibleSorted"],["rightPriceScale","visibleSorted"],["overlayPriceScale","visibleSorted"]]);function se(e,t){const i=e.priceScale();return null===i?"overlay":t.priceScalePosition(i)}class re{constructor(e){this._groupedSources=new Map,this._sources=null,this._pane=e}clear(){this._groupedSources.clear(),this._sources=null}destroy(){this.clear()}all(){return this._groupedSources.has("visibleSorted")||this._sortSources(),(0,r.ensureDefined)(this._groupedSources.get("visibleSorted"))}allIncludingHidden(){return this._groupedSources.has("allSorted")||this._sortSources(),(0,r.ensureDefined)(this._groupedSources.get("allSorted"))}allExceptSpecialSources(){if(!this._groupedSources.has("exceptSpecial")){const e=this.allIncludingHidden().filter(e=>!e.isSpeciallyZOrderedSource());this._groupedSources.set("exceptSpecial",e)}return(0,r.ensureDefined)(this._groupedSources.get("exceptSpecial"))}tradingSources(){return this._getSourcesByGroupType("trading")}priceSources(){return this._getSourcesByGroupType("price")}lineSources(){ +return this._getSourcesByGroupType("drawing")}lineSourcesForAllSymbols(){return this._getSourcesByGroupType("drawingsForAllSymbols")}phantomSources(){return this._getSourcesByGroupType("phantom")}allExceptLineAndTradingSources(){return this._getSourcesByGroupType("restRowSources")}hitTestSources(){if(!this._groupedSources.has("hitTest")){const e=this.allExceptLineAndTradingSources().concat(this.lineSources());this._groupedSources.set("hitTest",e)}return(0,r.ensureDefined)(this._groupedSources.get("hitTest"))}generalSources(){if(!this._groupedSources.has("general")){const e=this.allExceptLineAndTradingSources().concat(this.lineSources());this._groupedSources.set("general",(0,ee.sortSources)(e))}return(0,r.ensureDefined)(this._groupedSources.get("general"))}leftPriceScalesSources(){return this._getSourcesByGroupType("leftPriceScale")}rightPriceScalesSources(){return this._getSourcesByGroupType("rightPriceScale")}overlayPriceScaleSources(){return this._getSourcesByGroupType("overlayPriceScale")}_getSourcesByGroupType(e){const t=(0,r.ensureDefined)(ie.get(e));return this._groupedSources.has(t)?this._groupedSources.has(e)||this._groupSources(e):(this._sortSources(),this._groupSources(e)),(0,r.ensureDefined)(this._groupedSources.get(e))}_sortSources(){null===this._sources&&(this._sources=this._pane.dataSources());const e=(0,ee.sortSources)(this._sources),t=e.filter(e=>!(0,f.isLineTool)(e)||e.isActualSymbol()&&e.isActualCurrency()&&e.isActualUnit());this._groupedSources.set("allSorted",e),this._groupedSources.set("visibleSorted",t)}_groupSources(e){const t=(0,r.ensureDefined)(ie.get(e)),i=te.get(e);if(void 0!==i){const s=(0,r.ensureDefined)(this._groupedSources.get(t)).filter(e=>i(e,this._pane));this._groupedSources.set(e,s)}}}var ne=i(28372),oe=i(22423),ae=i(69927),le=i(79680),ce=i(26161),he=i(50669),de=i(16654),ue=i(67072),pe=i.n(ue),_e=i(80643),me=i(13933);const ge=[],fe=[];class ve{constructor(e){this._studies={},this._deferreds={},this._container=e,ge.push(e),fe.push(this)}add(e,t){this._deferreds[e]&&(this._deferreds[e].resolve(t),delete this._deferreds[e]),this._studies[e]=t}get(e){return this._studies[e]?Promise.resolve(this._studies[e]):(this._deferreds[e]||(this._deferreds[e]=(0,d.createDeferredPromise)()),this._deferreds[e].promise)}reset(){const e=ge.indexOf(this._container);~e&&(ge.splice(e,1),fe.splice(e,1))}static instance(e){const t=ge.indexOf(e);return~t?fe[t]:new ve(e)}}var Se=i(66101),ye=i(97917);var be=i(36759),we=i(98802),Ce=i(95536),Pe=i(86225),Te=i(82241),xe=i(78898);const Ie=(0,$.getLogger)("Chart.Pane");function Me(e,t,i){e.setMargins({top:t,bottom:i})}class Le{constructor(e,t,i,s){this.m_dataSources=[],this._sourceWatchedValuesSubscriptions=new Map,this.m_mainDataSource=null,this._cachedOrderedSources=new re(this),this._sourcesById=new Map,this._priceSourcesById=new Map,this._sourcePropertiesChanged=new(U()),this._sourcesZOrderChanged=new(U()),this._tagsChanged=new(U()),this._stretchFactor=1e3,this._isInInsertManyDataSourcesState=!1,this._lastLineDataSourceZOrder=null,this._rightPriceScales=[], +this._leftPriceScales=[],this._lockedPriceScale=null,this._currentPriceScaleRatio=null,this._onPriceScalesChanged=new(U()),this._isRecalculatingScales=!1,this._priceDataSources=[],this._symbolSources=[],this._symbolSourceResolved=new(U()),this._symbolSourceResolvingActive=new(G())(!1),this._bulkActions={activeCounter:0},this._height=0,this._width=0,this._dataSourcesCollectionChanged=new(U()),this._symbolSourceCollectionChanged=new(U()),this._maximized=new(G())(!1),this._collapsed=new(G())(!1),this._destroyed=new(U()),this._executionsPositionController=null,this._recalcSymbolSourceResolvingActive=()=>{for(const e of this._symbolSources)if(e.symbolResolvingActive().value())return void this._symbolSourceResolvingActive.setValue(!0);this._symbolSourceResolvingActive.setValue(!1)},this._onSymbolSourceCollectionChanged=()=>{0===this._bulkActions.activeCounter?this._symbolSourceCollectionChanged.fire():this._bulkActions.symbolSourceCollectionChanged=!0},this._priceScaleSelectionStrategy=(0,Q.createPriceScaleSelectionStrategy)(i.properties().childs().priceScaleSelectionStrategyName.value()),this._id=null!=s?s:(0,X.randomHashN)(6),this._timeScale=e,this.m_mainDataSource=null,this._properties=t,this._model=i,i.properties().childs().priceScaleSelectionStrategyName.subscribe(null,e=>{this._priceScaleSelectionStrategy=(0,Q.createPriceScaleSelectionStrategy)(e.value()),this._priceScaleSelectionStrategy.apply(this)}),this._timeScale.barSpacingChanged().subscribe(this,()=>{this.m_mainDataSource===this._model.mainSeries()&&this._recalculatePriceScaleByScaleRatio(this.m_mainDataSource.priceScale())}),t.childs().topMargin.subscribe(this,this._updateMargins),t.childs().bottomMargin.subscribe(this,this._updateMargins),this._updateMargins()}destroy(){this._properties.childs().topMargin.unsubscribeAll(this),this._properties.childs().bottomMargin.unsubscribeAll(this),this._model.properties().childs().priceScaleSelectionStrategyName.unsubscribeAll(this),this._timeScale.barSpacingChanged().unsubscribeAll(this),this._leftPriceScales.concat(this._rightPriceScales).forEach(e=>{e.modeChanged().unsubscribeAll(this),e.priceRangeChanged().unsubscribeAll(this),e.internalHeightChanged().unsubscribeAll(this)});for(const e of this.m_dataSources)this.removeSourceFromPriceScale(e),e.destroy&&e.destroy();this._destroyed.fire()}id(){return this._id}bulkActionMacro(e){const t=this._bulkActions;t.activeCounter+=1,e(),t.activeCounter-=1,0===t.activeCounter&&(this._dataSourcesCollectionChanged.fire(),t.symbolSourceCollectionChanged&&this._symbolSourceCollectionChanged.fire(),t.symbolSourceCollectionChanged=!1)}defaultPriceScale(){var e,t;const i=null!==(t=null===(e=this.m_mainDataSource)||void 0===e?void 0:e.priceScale())&&void 0!==t?t:null;if(null!==i)return i;const s=this.properties().childs().axisProperties.state();return s.autoScale=!0,new ne.PriceScale(this._model.properties().childs().scalesProperties,s)}leftPriceScales(){return this._leftPriceScales}rightPriceScales(){return this._rightPriceScales}visibleLeftPriceScales(){var e +;const t=this._model.priceScaleSlotsCount();if(this._leftPriceScales.length>t.left){const i=(0,g.moveToHead)(this._leftPriceScales,null===(e=this.mainDataSource())||void 0===e?void 0:e.priceScale());return i.splice(t.left),i}return this._leftPriceScales}visibleRightPriceScales(){var e;const t=this._model.priceScaleSlotsCount();if(this._rightPriceScales.length>t.right){const i=(0,g.moveToHead)(this._rightPriceScales,null===(e=this.mainDataSource())||void 0===e?void 0:e.priceScale());return i.splice(t.right),i}return this._rightPriceScales}clearSeries(e){const t=this._model.mainSeries();for(let i=this.m_dataSources.length-1;i>=0;i--)this.m_dataSources[i]===t&&this._removeSourceFromCollections(i,e)}sourcesByGroup(){return this._cachedOrderedSources}dataSourceForId(e){return this._sourcesById.get(e)||null}changeSourceId(e,t){(0,r.assert)(this.hasDataSource(e));const i=e.id();e.setId(t),this._sourcesById.delete(i),this._sourcesById.set(t,e),(0,J.isPriceDataSource)(e)&&(this._priceSourcesById.delete(i),this._priceSourcesById.set(t,e))}movePriceScale(e,t,i){const s=this.priceScalePosition(e);if(s!==t)this.removePriceScale(e),this._placePriceScale(e,t,i),e.invalidateMargins(),this._invalidateSourcesCache();else if(void 0!==i&&"overlay"!==s){const t="left"===s?this._leftPriceScales:this._rightPriceScales,r=t.indexOf(e);t.splice(r,1),t.splice(i,0,e)}}mainDataSource(){return this.m_mainDataSource}isEmpty(){return null===this.m_mainDataSource}recalculatePriceScale(e,t){if(!e)return;const i=e.sourcesForAutoscale();if((e.isAutoScale()||e.priceRangeShouldBeRecalculatedOnce())&&i&&i.length>0&&!this.timeScale().isEmpty()){const t=this.timeScale().visibleBarsStrictRange();e.recalculatePriceRange(t)}e.updateAllViews(t)}onSourceTagsChanged(){this._tagsChanged.fire()}insertDataSource(e,t,i){e.setZorder(i),t||(t=this.findSuitableScale(e)),this._addSourceToCollections(e);let s=!1;e===this.model().mainSeries()?(this.m_mainDataSource=this.model().mainSeries(),s=!0):null===this.m_mainDataSource&&(0,J.isPriceDataSource)(e)&&(this.m_mainDataSource=e,s=!0),t.addDataSource(e,this._isInInsertManyDataSourcesState),e.setPriceScale(t),t.invalidateMargins(),e.onTagsChanged&&e.onTagsChanged().subscribe(this,this.onSourceTagsChanged),s&&this._processMainSourceChange(),this._tagsChanged.fire(),(0,J.isPriceDataSource)(e)&&this.recalculatePriceScale(t,(0,O.dataSourceChangeEvent)(e.id())),this._invalidateSourcesCache()}addDataSource(e,t,i){let s=e.zorder();i||((0,f.isLineTool)(e)&&!e.isSpeciallyZOrderedSource()?(s=null!==this._lastLineDataSourceZOrder?this._lastLineDataSourceZOrder+1:this.newLineToolZOrder(),this._isInInsertManyDataSourcesState&&(this._lastLineDataSourceZOrder=s)):(0,H.isStudy)(e)&&!e.isSpeciallyZOrderedSource()&&(s=this.newStudyZOrder())),this.insertDataSource(e,t,s)}removeDataSource(e,t,i){const s=this.m_dataSources.indexOf(e);if(-1===s)return void Ie.logDebug("removeDataSource: invalid data source");this._removeSourceFromCollections(s,!!i),e!==this.m_mainDataSource||t||(this.m_mainDataSource=null);const r=e.priceScale() +;this.removeSourceFromPriceScale(e),e.onTagsChanged&&e.onTagsChanged().unsubscribe(this,this.onSourceTagsChanged),(0,J.isPriceDataSource)(e)&&!t&&this._processMainSourceChange(),this._tagsChanged.fire(),r&&(0,J.isPriceDataSource)(e)&&this.recalculatePriceScale(r,(0,O.dataSourceChangeEvent)(e.id())),this._invalidateSourcesCache()}hasDataSource(e){return this._sourcesById.has(e.id())}hasPriceDataSource(e){return this._priceSourcesById.has(e.id())}dataSources(){return this.m_dataSources}priceDataSources(){return this._priceDataSources}symbolSources(){return this._symbolSources}replaceSource(e,t,i){const s=this.m_mainDataSource===e,r=e.zorder();this.insertDataSource(t,i,r),this.removeDataSource(e,s),this._sourcesById.set(t.id(),t),(0,J.isPriceDataSource)(t)&&this._priceSourcesById.set(t.id(),t),s&&(this.m_mainDataSource=t,this._processMainSourceChange())}findSuitableScale(e,t,i){return this._priceScaleSelectionStrategy.findSuitableScale(this,e,t,i)}createNewPriceScaleIfPossible(){return this._priceScaleSelectionStrategy.createNewPriceScaleIfPossible(this)}canCreateNewPriceScale(){return this._priceScaleSelectionStrategy.canCreateNewPriceScale(this)}isOverlay(e){const t=e.priceScale();return null===t||"overlay"===this.priceScalePosition(t)}recalculate(e){this._leftPriceScales.forEach(t=>this.recalculatePriceScale(t,e)),this._rightPriceScales.forEach(t=>this.recalculatePriceScale(t,e));for(const t of this.m_dataSources)this.isOverlay(t)&&!(0,f.isLineTool)(t)&&this.recalculatePriceScale(t.priceScale(),e);this.updateAllViews(e),this._model.updatePane(this)}updateAllViews(e){for(const t of this.m_dataSources)t.updateAllViews(e);for(const t of this.model().customSources())t.updateViewsForPane(this,e)}priceScalePosition(e){return this._leftPriceScales.includes(e)?"left":this._rightPriceScales.includes(e)?"right":"overlay"}createPriceScaleAtPosition(e,t){const i=this.properties().childs().axisProperties.state();i.autoScale=!0;const s=new ne.PriceScale(this.model().properties().childs().scalesProperties,i);return s.setHeight(this.height()),Me(s,this._defaultTopMargin(),this._defaultBottomMargin()),this._placePriceScale(s,e,t),s}removePriceScale(e){e.modeChanged().unsubscribeAll(this),e.priceRangeChanged().unsubscribeAll(this),e.internalHeightChanged().unsubscribeAll(this),e===this._lockedPriceScale&&(this._lockedPriceScale=null,this._currentPriceScaleRatio=null);const t=this._leftPriceScales.indexOf(e);-1!==t&&(this._leftPriceScales[t].invalidateMargins(),this._leftPriceScales.splice(t,1));const i=this._rightPriceScales.indexOf(e);if(-1!==i&&(this._rightPriceScales[i].invalidateMargins(),this._rightPriceScales.splice(i,1)),null===e.mainSource()){const t=e.dataSources().length;0!==t&&Ie.logError("Invalid priceScale state: empty mainSource but non-empty data sources="+t)}this._onPriceScalesChanged.fire()}priceScaleIndex(e,t){switch(t){case"left":return this.leftPriceScales().indexOf(e);case"right":return this.rightPriceScales().indexOf(e)}}move(e,t,i){const s=e.priceScale();this.removeSourceFromPriceScale(e),t.addDataSource(e), +e.setPriceScale(t),t.invalidateMargins(),this._processMainSourceChange(),this._invalidateSourcesCache(),e.isIncludedInAutoScale()&&(null!==s&&this.recalculatePriceScale(s,(0,O.dataSourceChangeEvent)(e.id())),this.recalculatePriceScale(t,(0,O.dataSourceChangeEvent)(e.id()))),this._onPriceScalesChanged.fire()}setZOrders(e){e.forEach((e,t)=>{t.setZorder(e)}),this._invalidateSourcesCache(),0===this._bulkActions.activeCounter&&this._dataSourcesCollectionChanged.fire(),this.model().lightUpdate()}isMainPane(){return this.hasDataSource(this.model().mainSeries())}isLast(){const e=this.model().panes();return e[e.length-1]===this}newStudyZOrder(){return(0,ce.newStudyZOrder)(this._priceDataSources)}newLineToolZOrder(e){return(0,ce.newLineToolZOrder)(this.m_dataSources,e)}model(){return this._model}containsMainSeries(){return this._sourcesById.has(this.model().mainSeries().id())}applyPriceScaleRatio(e,t){var i;null!==this._lockedPriceScale&&this._lockedPriceScale!==e||this._currentPriceScaleRatio===t||!this.isMainPane()||null===this._lockedPriceScale&&e!==(null===(i=this.mainDataSource())||void 0===i?void 0:i.priceScale())||(this._setNewPriceRangeByScaleRatio(e,t,this._mainSourceVisiblePriceRange(e),!0,!0),null!==this._lockedPriceScale?this._tryToApplyNewPriceScaleRatio():e.isLog()||this.model().mainSeriesScaleRatioPropertyOnChanged())}sendToBack(e){const t=this.sourcesByGroup().allExceptSpecialSources();this._batchReorder(e,t[0],ce.moveBeforeSource)}bringToFront(e){const t=this.sourcesByGroup().allExceptSpecialSources();this._batchReorder(e,t[t.length-1],ce.moveAfterSource)}sendBackward(e){const t=this.sourcesByGroup().allIncludingHidden(),i=t.indexOf(e[0]);if(0===i)this.bringToFront(e);else{const s=t[i-1];this.insertBefore(e,s)}}bringForward(e){const t=this.sourcesByGroup().allExceptSpecialSources(),i=t.indexOf(e[e.length-1]);if(i===t.length-1)this.sendToBack(e);else{const s=t[i+1];this.insertAfter(e,s)}}insertAfter(e,t){this._batchReorder(e,t,ce.moveAfterSource)}insertBefore(e,t){this._batchReorder(e,t,ce.moveBeforeSource)}maximized(){return this._maximized}collapsed(){return this._collapsed}getPriceScaleById(e){const t=this.m_dataSources.find(t=>{var i;return(null===(i=t.priceScale())||void 0===i?void 0:i.id())===e});return void 0===t?null:t.priceScale()}priceScaleSelectionStrategy(){return this._priceScaleSelectionStrategy}setPriceScaleSelectionStrategy(e){this._priceScaleSelectionStrategy=e,e.apply(this)}findTargetPriceAxisViews(e,t,i,s){if((0,m.isDataSource)(e)&&this.model().paneForSource(e)!==this)return[];const r=e.priceScale();if(t===r)return i;if(null===r)return[];if("overlay"===this.priceScalePosition(r))return t===this.defaultPriceScale()?i:[];const n=this.priceScalePosition(t);if(n!==this.priceScalePosition(r))return[];const o="left"===n?this.leftPriceScales():this.rightPriceScales();return o.indexOf(t)1}properties(){return this._properties}setPriceAutoScale(e,t){e.setMode({ +autoScale:t}),this.timeScale().isEmpty()||this.recalculatePriceScale(e,(0,O.viewportChangeEvent)())}state(e,t,i,s,r,n){var o,a;const l={sources:[],mainSourceId:null===(o=this.m_mainDataSource)||void 0===o?void 0:o.id(),stretchFactor:this._stretchFactor,leftAxisesState:[],rightAxisesState:[],overlayPriceScales:{},priceScaleRatio:this._currentPriceScaleRatio},c=new Map,h=e=>{if(c.has(e))return c.get(e);let o=null;const a=i&&!e.isSavedInStudyTemplates()||!e.state||(0,f.isLineTool)(e)&&n||!(o=e.state(t,r))||!e.isSavedInChart(Boolean(t))||s&&(0,f.isLineTool)(e)&&e.isActualSymbol&&!e.isActualSymbol()||e.isPhantom()?null:o;return c.set(e,a),a};if(e){l.sources=[];for(let e=0;enull!==c.get(e),u=e=>!n||!(0,f.isLineTool)(e);l.leftAxisesState=this._leftPriceScales.map(e=>({state:e.state(),sources:e.dataSources().filter(d).filter(u).map(e=>e.id())})),l.rightAxisesState=this._rightPriceScales.map(e=>({state:e.state(),sources:e.dataSources().filter(d).filter(u).map(e=>e.id())})),l.overlayPriceScales={};for(const e of this.m_dataSources)if(this.isOverlay(e)&&e.isSavedInChart(Boolean(t))){const t=e.priceScale();l.overlayPriceScales[e.id()]=null!==(a=null==t?void 0:t.state())&&void 0!==a?a:null}return l}restoreState(e,t,i,s,n,o){var a;s=s||{},e.stretchFactor&&(this._stretchFactor=e.stretchFactor);const l={};if(e.sources){const r=e.sources.filter(e=>{var t;return!!e&&("MainSeries"===e.type||(!(null===(t=e.points)||void 0===t?void 0:t.some(e=>null===e.time_t||!isFinite(e.time_t)))||(Ie.logNormal("Dropped invalid "+e.type+". Reason: non-numeric point time"),!1)))}),a=r.findIndex(he.isMainSeriesState);-1!==a&&this.model().mainSeries().setObsoleteZOrder(r[a].zorder),i<3&&(0,ce.reorderDataSourcesStateZOrder)(r);const c=-1!==this.m_dataSources.indexOf(this._model.mainSeries());this.clearSeries(Boolean(o)),this.m_mainDataSource=null,c&&this._addSourceToCollections(this._model.mainSeries(),o),(()=>{const t=r.find(t=>t.id===e.mainSourceId);if(void 0===t)return void Ie.logWarn("There is no main source with id "+e.mainSourceId+", total sources="+r.length);if(!window.TradingView[t.type]||!(0,f.isLineToolName)(t.type))return void Ie.logNormal("The type of main source is not line tool - fix is unnecessary");let i=null;for(const e of r)if(!window.TradingView[t.type]||!(0,f.isLineToolName)(e.type)){if(null!==i)return void Ie.logWarn("Pane contains more than 1 possibly main sources - auto fix cannot be applied");i=e}if(null===i)return void Ie.logWarn("Pane contains only line tools - possible we need to remove this pane?");const s=e.mainSourceId;let n=0;e.mainSourceId=i.id,r.forEach(e=>{e.ownerSource===s&&(e.ownerSource=null==i?void 0:i.id,n+=1)}),Ie.logNormal("Auto fix broken pane is applied, changed line tools="+n+", changed from="+s+" to="+i.id)})();for(const e of r)if("study_Sessions"===e.type){this.model().sessions().restoreOldState(e,t);break}for(const e of r){if("study_Sessions"===e.type)continue;const i=e.id +;null===this._model.dataSourceForId(e.id)||"MainSeries"===e.type?(l[i]=e.ownerSource,(0,he.isMainSeriesState)(e)?this._restoreMainSeries(e,t,c,s,n,o):(0,he.isStudyState)(e)?this.restoreStudy(e,t,s,o):(0,he.isLineToolState)(e)?(e.state&&(e.state.zOrderVersion=2),this.restoreLineTool(e,t,void 0,o)):"ChartEventsSource"===e.type&&this._restoreSpecialSource(e,t,o)):Ie.logError("Duplicate id while restoring pane: "+e.type+","+e.id)}}const c=new Set,h=(e,t)=>{e.priceScale()!==t&&(this.removeSourceFromPriceScale(e),e.setPriceScale(t),t.addDataSource(e))},d=(e,t,i)=>{if(c.has(e))return;c.add(e);const s=i.m_showSymbolLabels;void 0!==s&&e===this.model().mainSeries()&&this.model().properties().childs().scalesProperties.childs().showSymbolLabels.setValue(s),this._model.children(e,!0).forEach(e=>d(e,t,i)),h(e,t)},u=e=>{const t=(0,D.defaults)("chartproperties").paneProperties.axisProperties,i=new ne.PriceScale(this.model().properties().childs().scalesProperties,t);return i.restoreState(e.state),e.sources.forEach(e=>{const s=this.dataSourceForId(e);s&&d(s,i,t)}),0===i.dataSources().length?null:i},p=e=>e.map(u).filter(e=>null!==e);let _;if(e.leftAxisesState)_=p(e.leftAxisesState);else{const t=u({state:e.leftAxisState,sources:e.leftAxisSources});_=null!==t?[t]:[]}let m;if(this._leftPriceScales.slice().forEach(e=>this.removePriceScale(e)),this._leftPriceScales=[],_.forEach(e=>this._placePriceScale(e,"left")),e.rightAxisesState)m=p(e.rightAxisesState);else{const t=u({state:e.rightAxisState,sources:e.rightAxisSources});m=null!==t?[t]:[]}this._rightPriceScales.slice().forEach(e=>this.removePriceScale(e)),this._rightPriceScales=[],m.forEach(e=>this._placePriceScale(e,"right")),this._currentPriceScaleRatio=e.priceScaleRatio||e.leftPriceScaleRatio||e.rightPriceScaleRatio||null;const g=new Map;for(const t of this.m_dataSources){if(c.has(t))continue;let i;if(e.overlayPriceScales&&e.overlayPriceScales[t.id()]){let s=e.overlayPriceScales[t.id()];g.has(null==s?void 0:s.id)?i=g.get(null==s?void 0:s.id):(s=(0,r.ensure)(s),i=new ne.PriceScale(this._model.properties().childs().scalesProperties),i.setHeight(this._height),s.m_isAutoScale=!0,s.m_isLog=!1,s.m_isPercentage=!1,s.m_isLockScale=!1,i.restoreState(s),g.set(s.id,i))}else i=new ne.PriceScale(this._model.properties().childs().scalesProperties),i.setHeight(this._height);h(t,i)}for(const e of Object.keys(l)){const t=l[e];t&&(null===(a=this.dataSourceForId(e))||void 0===a||a.setOwnerSource(this.dataSourceForId(t)))}if(e.mainSourceId&&!this.containsMainSeries()&&(this.m_mainDataSource=this.dataSourceForId(e.mainSourceId)),!this.m_mainDataSource)for(const e of this.m_dataSources)if((0,J.isPriceDataSource)(e)){this.m_mainDataSource=e;break}for(const e of this.m_dataSources)if((0,f.isLineTool)(e))e.ownerSource()||e.setOwnerSource(this.mainDataSource()),e.isFixed()&&e.restoreFixedPoints();else if((0,H.isStudy)(e)){const t=e.properties();t.linkedToSeries&&t.linkedToSeries.value()&&(e.ownerSource()||e.setOwnerSource(this.model().mainSeries()))}this._updateMargins(),this._cachedOrderedSources.clear()} +onPriceScalesChanged(){return this._onPriceScalesChanged}setPaneSize(e){let t;switch(e){case"large":t=1;break;case"medium":t=.6;break;case"small":t=.3;break;case"tiny":t=.15;break;default:throw new Error("Unknown size enum value: "+e)}this._stretchFactor=1e3*t}stretchFactor(){return this._stretchFactor}setStretchFactor(e){this._stretchFactor=e}customSources(e){return this.model().customSources(e)}createDrawingsCaches(){Z.ExecutionsPositionController.recreateOrderedByBarsSourcesCache(this)}clearDrawingCaches(){Z.ExecutionsPositionController.clearOrderedByBarsSourcesCache()}executionsPositionController(){return this._executionsPositionController||(this._executionsPositionController=new Z.ExecutionsPositionController(this,this._model.timeScale())),this._executionsPositionController}width(){return this._width}height(){return this._height}setHeight(e){this._height=e,this._leftPriceScales.forEach(t=>t.setHeight(e)),this._rightPriceScales.forEach(t=>t.setHeight(e));for(let t=0;t(e.paneViews(this)||[]).some(e=>{const r=e.renderer(t,i);return r&&r.doesIntersectWithBox&&r.doesIntersectWithBox(s)}))}logicalRectToPixels(e){const t=this.defaultPriceScale(),i=this.timeScale(),s=(0,r.ensureNotNull)((0,r.ensureNotNull)(t.mainSource()).firstValue()),o=t.priceToCoordinate(e.p1.price,s),a=i.indexToCoordinate(e.p1.index),l=t.priceToCoordinate(e.p2.price,s),c=i.indexToCoordinate(e.p2.index),h=new n.Point(Math.min(a,c),Math.min(o,l)),d=new n.Point(Math.max(a,c),Math.max(o,l));return(0,n.box)(h,d)}timeScale(){return this._timeScale}restoreLineTool(e,t,i,s){var n,o,a,l,c,h,d,u,p,_,m;delete e.state.lastUpdateTime,e.state.intervalsVisibilities=(0,be.mergeIntervalVisibilitiesDefaults)(e.state.intervalsVisibilities),i=void 0===i||i,ye.LineToolElliott.migrateState(e),"LineToolGannComplex"!==(m=e).type||void 0!==m.version&&1!==m.version||(m.type="LineToolGannFixed");const g=e.type,v=e.id,S=e.state,y=i?e.zorder:this.newLineToolZOrder();(0,r.assert)((0,f.isLineToolName)(g),"invalid data source type:"+g+" (expected to be a Line Tool)");let b,w,C=null;if((0,he.isStudyLineToolState)(e)){C=this._model.studyVersioning() +;const t=C.patchPointsBasedStudyState(e);e=t;const i=t.metaInfo;Object.assign(i,pe().parseIdString(null==i?void 0:i.fullId));const s=C.updateMetaInfo(i)||i;w=(0,f.createStudyLineToolProperties)(g,i,s,S,C),b=(0,f.createLineTool)(g,this._model,w,s,!0)}else w=(0,f.createLineToolProperties)(g,S,this._model),t?null===(n=w.child("fixedSize"))||void 0===n||n.setValue(!1):null===(o=w.child("fixedSize"))||void 0===o||o.setValue(!0),b=(0,f.createLineTool)(g,this._model,w,null,!0);b.setId(v),b.linkKey().setValue(e.linkKey||null);const P=e.alertId;P&&b.canHasAlert()&&B.enabled("alerts")&&!this._model.readOnly()&&!this._model.isJustClonedChart()&&b.setAlert(P,{noChartSave:!0});let T=null!==(a=e.indexes)&&void 0!==a?a:[];if(T=T.slice(0,null!==(c=null===(l=e.points)||void 0===l?void 0:l.length)&&void 0!==c?c:T.length),b.isFixed()?e.positionPercents&&b.restorePositionPercents(e.positionPercents):e.points&&b.restorePoints(e.points,T,t),b instanceof we.LineToolBarsPattern||b instanceof Ce.LineToolCallout||b instanceof Pe.LineToolTrendAngle||b instanceof Te.LineToolGhostFeed||b instanceof xe.LineToolParallelChannel)null===(d=(h=b).restoreData)||void 0===d||d.call(h,e);else if(t&&(0,he.isStudyLineToolState)(e)&&b.restoreData){const t=e;C&&(t.graphics=C.patchPointsBasedStudyData(t.metaInfo,t.graphics)),null===(u=b.restoreData)||void 0===u||u.call(b,t)}const x=null==e.version?1:e.version,I=null==b.version?1:b.version;return x!==I&&(null===(_=(p=b).migrateVersion)||void 0===_||_.call(p,x,I,{pane:this,model:this._model,properties:w})),void 0!==y&&b.setZorder(y),this._addSourceToCollections(b,s),this._cachedOrderedSources.clear(),b}restoreStudy(e,t,i,s){if(t&&void 0===e.data&&void 0===e.nonSeriesData&&void 0===e.indexes)return Ie.logError("Cannot restore (skipping) study without data "+e.id+", "+e.metaInfo.id),null;const r=e.id,n=e.state,o=e.zorder,a=e.ownerSource;let l=(0,_e.clone)(e.metaInfo);if(Object.assign(l,pe().parseIdString(l.id)),function(e){return"Script$TV_EARNINGS@tv-scripting"===e||"Script$TV_DIVIDENDS@tv-scripting"===e||"Script$TV_SPLITS@tv-scripting"===e||"ESD$TV_EARNINGS@tv-scripting"===e||"ESD$TV_DIVIDENDS@tv-scripting"===e||"ESD$TV_SPLITS@tv-scripting"===e||"Earnings@tv-basicstudies"===e||"Dividends@tv-basicstudies"===e||"Splits@tv-basicstudies"===e||"BarSetContinuousRollDates@tv-basicstudies"===e}(l.id)&&!t)return Ie.logNormal("Skipping study "+l.id),null;let c=n;const h=this._model.studyVersioning(),d=h.patchPropsStateAndMetaInfo(c,l,{oldShowStudyLastValueProperty:t&&!i.showStudyLastValueProperty});c=d.propsState,l=d.metaInfo;const u=new w.StudyStub(this._model,e,l.shortDescription);let p;u.setId(r),u.setZorder(o);const _=i=>{u.setStatus({type:me.StudyStatusType.Undefined});const s=i||new(pe())(l),n=ve.instance(this._model),o=o=>{var a;const d=(0,Se.prepareStudyPropertiesForLoadChart)(l,i,c,null,h),_=(0,H.createStudy)(this._model,d,o||this._model.mainSeries(),s);if(_.setId(r),_.setOwnFirstValue(null!==(a=e.ownFirstValue)&&void 0!==a?a:null),t){ +const t=e,{data:i,nsData:s,indexes:r}=h.patchStudyData(l,t.data,t.nonSeriesData,t.indexes);_.restoreData(i,s,r)}this._model.replaceStudyStub(u,_)||(p=_),n.add(r,_)};a&&e.state.isChildStudy?n.get(a).then(o):o()};if(t)_(null);else{const e=h.updateMetaInfoAsync(l);e.sync?_(e.result):e.result.then(_).catch(e=>u.setFailed("error: "+e))}const m=null!=p?p:u;return m&&(m.setZorder(o),this._addSourceToCollections(m,s),this._processMainSourceChange()),this._cachedOrderedSources.clear(),m}clipboardLineToolOwnerSource(e){const t=this.dataSourceForId(e);if(null!==t){const e=t.ownerSource();if(null!==e&&null!==e.firstValue())return e}const i=this.mainDataSource();if(null!==i&&null!==i.firstValue())return i;for(const e of this.dataSources())if((0,J.isPriceDataSource)(e)&&null!==e.firstValue())return e;return null}realignLineTools(e){var t;let i=!1;for(const s of this.m_dataSources)!(0,f.isLineTool)(s)||void 0!==e&&(null===(t=null==s?void 0:s.ownerSource())||void 0===t?void 0:t.symbolSource())!==e&&(0,le.isActingAsSymbolSource)(e)||(s.realign(),s.updateAllViews((0,O.dataSourceChangeEvent)(s.id())),i=!0);return i&&this._invalidateSourcesCache(),i}startScalePrice(e,t){e.startScale(t)}scalePriceTo(e,t){e.scaleTo(t),this.updateAllViews((0,O.viewportChangeEvent)())}endScalePrice(e){e.endScale()}startScrollPrice(e,t){e.startScroll(t)}scrollPriceTo(e,t){e.scrollTo(t),this.updateAllViews((0,O.viewportChangeEvent)())}endScrollPrice(e){e.endScroll()}resetPriceScale(e){const t=this.timeScale().visibleBarsStrictRange();e.isLockScale()||e.setMode({autoScale:!0}),e.recalculatePriceRange(t),this.updateAllViews((0,O.viewportChangeEvent)())}restorePriceScaleState(e,t){e.restoreState(t),this.updateAllViews((0,O.viewportChangeEvent)())}beginInsertManyLineDataSources(){this._isInInsertManyDataSourcesState=!0,this._lastLineDataSourceZOrder=null}endInsertManyLineDataSources(){this._isInInsertManyDataSourcesState=!1,this._lastLineDataSourceZOrder=null}removeSourceFromPriceScale(e){const t=e.priceScale();if(null!==t){const i=t.dataSources();i.indexOf(e)>=0&&t.removeDataSource(e),0===i.length&&this.removePriceScale(t)}}_invalidateSourcesCache(){this._cachedOrderedSources.clear(),this._leftPriceScales.forEach(e=>e.invalidateSourcesCache()),this._rightPriceScales.forEach(e=>e.invalidateSourcesCache())}_processMainSourceChange(){let e=!1;if(null===this.m_mainDataSource)for(const t of this.m_dataSources)if((0,J.isPriceDataSource)(t)&&!this.isOverlay(t)&&(!t.properties().linkedToSeries||!t.properties().linkedToSeries.value())){this.m_mainDataSource=t,e=!0;break}if(this.m_mainDataSource&&e){let e=this.m_dataSources.filter(f.isLineTool);e=(0,ee.sortSources)(e);for(const t of e)this.move(t,(0,r.ensureNotNull)(this.m_mainDataSource.priceScale()),!0)}else if(!this.m_mainDataSource||this.isOverlay(this.m_mainDataSource)&&0===this._nonOverlayPricesSourcesCount()){let e=null;if(this.m_dataSources.includes(this._model.mainSeries()))e=this._model.mainSeries();else for(const t of this.m_dataSources)if((0,J.isPriceDataSource)(t)&&this.isOverlay(t)&&t.showInObjectTree()){e=t +;break}if(null!==e){const t=this.m_mainDataSource===e;this.m_mainDataSource=e;const i=this.createNewPriceScaleIfPossible();if(t&&e===this._model.mainSeries()){const t=(0,r.ensureNotNull)(e.priceScale());this._model.children(e,!0).forEach(e=>{this.removeSourceFromPriceScale(e),i.addDataSource(e),e.setPriceScale(i)}),this.removePriceScale(t)}this.move(e,i,!0),this.recalculatePriceScale(e.priceScale(),(0,O.globalChangeEvent)())}}}_addSourceToCollections(e,t){this.m_dataSources.push(e),this._sourcesById.set(e.id(),e),this._invalidateSourcesCache();const i=()=>{this._sourcePropertiesChanged.fire(e)};e.properties().subscribe(this,i),e.zOrderChanged().subscribe(this,t=>this._sourcesZOrderChanged.fire(e,t)),(0,f.isLineTool)(e)&&(e.normalizedPointsChanged().subscribe(this,i),e.fixedPointsChanged().subscribe(this,i),e.hasAlert.subscribe(i),e.sharingMode().subscribe(i),e.linkKey().subscribe(i),this._sourceWatchedValuesSubscriptions.set(e.id(),i));const s=(0,le.isSymbolSource)(e)?e:null;(0,J.isPriceDataSource)(e)&&(this._priceSourcesById.set(e.id(),e),e.currencyChanged().subscribe(this,()=>this._invalidateSourcesCache()),e.unitChanged().subscribe(this,()=>this._invalidateSourcesCache()),this._priceDataSources.push(e),null!==s&&(this._symbolSources.push(s),s.symbolResolved().subscribe(this,()=>this._symbolSourceResolved.fire(e)),s.symbolResolvingActive().subscribe(this._recalcSymbolSourceResolvingActive),s.symbolHibernated().subscribe(this._onSymbolSourceCollectionChanged),this._recalcSymbolSourceResolvingActive(),this._onSymbolSourceCollectionChanged())),e.isMultiPaneAvailable()&&this.model().addMultiPaneSource(e),t||0!==this._bulkActions.activeCounter||this._dataSourcesCollectionChanged.fire()}_removeSourceFromCollections(e,t){const i=this.m_dataSources[e];i.properties().unsubscribeAll(this),i.zOrderChanged().unsubscribeAll(this),this.m_dataSources.splice(e,1),this._sourcesById.delete(i.id());const s=i.id();if((0,f.isLineTool)(i)&&(i.normalizedPointsChanged().unsubscribeAll(this),i.fixedPointsChanged().unsubscribeAll(this),this._sourceWatchedValuesSubscriptions.has(s))){const e=this._sourceWatchedValuesSubscriptions.get(s);i.hasAlert.unsubscribe(e),i.linkKey().unsubscribe(e)}this._invalidateSourcesCache();const n=(0,le.isSymbolSource)(i)?i:null;if((0,J.isPriceDataSource)(i)){this._priceSourcesById.delete(i.id()),i.currencyChanged().unsubscribeAll(this),i.unitChanged().unsubscribeAll(this);const e=this._priceDataSources.indexOf(i);if((0,r.assert)(-1!==e),this._priceDataSources.splice(e,1),null!==n){const e=this._symbolSources.indexOf(n);(0,r.assert)(-1!==e,"Source is not found"),this._symbolSources.splice(e,1),n.symbolResolved().unsubscribeAll(this),n.symbolResolvingActive().unsubscribe(this._recalcSymbolSourceResolvingActive),n.symbolHibernated().unsubscribe(this._onSymbolSourceCollectionChanged),this._recalcSymbolSourceResolvingActive(),this._onSymbolSourceCollectionChanged()}}i.isMultiPaneAvailable()&&this.model().removeMultiPaneSource(i),t||0!==this._bulkActions.activeCounter||this._dataSourcesCollectionChanged.fire()} +_recalculatePriceScaleByScaleRatio(e){this.isMainPane()&&e===this._lockedPriceScale&&(null!==this._currentPriceScaleRatio?this._applyOldScaleRatioToPriceScale():this._tryToApplyNewPriceScaleRatio())}_defaultBottomMargin(){return.01*this.properties().childs().bottomMargin.value()}_defaultTopMargin(){return.01*this.properties().childs().topMargin.value()}_updateMargins(){const e=this._defaultTopMargin(),t=this._defaultBottomMargin();for(const i of this._leftPriceScales)Me(i,e,t);for(const i of this._rightPriceScales)Me(i,e,t);for(const i of this.m_dataSources)if(this.isOverlay(i)){const s=i.priceScale();null!==s&&(Me(s,e,t),this.recalculatePriceScale(s,(0,O.viewportChangeEvent)()))}for(const e of this._leftPriceScales)this.recalculatePriceScale(e,(0,O.viewportChangeEvent)());for(const e of this._rightPriceScales)this.recalculatePriceScale(e,(0,O.viewportChangeEvent)());this.updateAllViews((0,O.viewportChangeEvent)())}_batchReorder(e,t,i){i(this.sourcesByGroup().allExceptSpecialSources(),e,t),this._invalidateSourcesCache(),this._dataSourcesCollectionChanged.fire(),this.model().fullUpdate()}_placePriceScale(e,t,i){if("overlay"===t)return void e.invalidateMargins();const s="left"===t?this._leftPriceScales:this._rightPriceScales,n=void 0===i?s.length:i;s.splice(n,0,e),e.modeChanged().subscribe(this,this._onPriceScaleModeChanged.bind(this,e)),e.internalHeightChanged().subscribe(this,this._recalculatePriceScaleByScaleRatio.bind(this,e)),e.priceRangeChanged().subscribe(this,this._recalculateTimeScaleByScaleRatio.bind(this,e)),e.priceRangeChanged().subscribe(this,this._onPriceScaleSetMinMaxPriceRange.bind(this,e)),e.isLockScale()&&((0,r.assert)(null===this._lockedPriceScale),this._lockedPriceScale=e,this._currentPriceScaleRatio=null),e.invalidateMargins(),this._onPriceScalesChanged.fire()}_onPriceScaleModeChanged(e,t,i){if(i.lockScale&&(this._lockedPriceScale!==e&&null!==this._lockedPriceScale&&this._lockedPriceScale.setMode({lockScale:!1}),this._lockedPriceScale=e,this._currentPriceScaleRatio=(0,oe.scaleRatio)(this.timeScale(),e)),t.lockScale&&!i.lockScale&&(this._lockedPriceScale=null,this._currentPriceScaleRatio=null),t.percentage===i.percentage&&t.indexedTo100===i.indexedTo100)return;const s=this.timeScale().visibleBarsStrictRange();null!==s&&(e.recalculatePriceRange(s),e.updateAllViews((0,O.viewportChangeEvent)()))}_applyOldScaleRatioToPriceScale(){this._isRecalculatingScales||null===this._currentPriceScaleRatio||null===this._lockedPriceScale||(this._isRecalculatingScales=!0,this._setNewPriceRangeByScaleRatio(this._lockedPriceScale,this._currentPriceScaleRatio,this._mainSourceVisiblePriceRange(this._lockedPriceScale)),this._isRecalculatingScales=!1)}_setNewPriceRangeByScaleRatio(e,t,i,s,r){const n=(0,oe.priceRangeByScaleRatio)(e,this.timeScale().barSpacing(),t);e.setPriceRange(null!==n?n:i,s,r)}_applyOldScaleRatioToTimeScale(){this._isRecalculatingScales||null===this._currentPriceScaleRatio||(this._isRecalculatingScales=!0,this._setNewBarSpacingByScaleRatio(),this._isRecalculatingScales=!1)} +_tryToApplyNewPriceScaleRatio(){const e=(0,r.ensureNotNull)(this._lockedPriceScale),t=(0,oe.scaleRatio)(this.timeScale(),e);this._currentPriceScaleRatio===t||e.isLog()||(this._currentPriceScaleRatio=t,this.model().mainSeriesScaleRatioPropertyOnChanged())}_recalculateTimeScaleByScaleRatio(e){e===this._lockedPriceScale&&(null!==this._currentPriceScaleRatio?this._applyOldScaleRatioToTimeScale():this._tryToApplyNewPriceScaleRatio())}_setNewBarSpacingByScaleRatio(){const e=this.timeScale().getValidBarSpacing((0,oe.barSpacingByScaleRatio)((0,r.ensureNotNull)(this._lockedPriceScale),this._currentPriceScaleRatio));this.timeScale().isValidBarSpacing(e)&&this.timeScale().setBarSpacing(e)}_mainSourceVisiblePriceRange(e){const t=this.timeScale().visibleBarsStrictRange();return null!==t?(0,r.ensureNotNull)((0,r.ensureNotNull)(e.mainSource()).priceRange(t.firstBar(),t.lastBar())):new ae.PriceRange(-.5,.5)}_setMinMaxPriceRange(){const e=(0,r.ensureNotNull)(this._lockedPriceScale),t=(0,oe.priceRangeByScaleRatio)(e,this.timeScale().maxBarSpacing(),this._currentPriceScaleRatio),i=(0,oe.priceRangeByScaleRatio)(e,this.timeScale().minBarSpacing(),this._currentPriceScaleRatio);null!==t&&e.setMaxPriceRange(t),null!==i&&e.setMinPriceRange(i)}_onPriceScaleSetMinMaxPriceRange(e){e===this._lockedPriceScale&&this._setMinMaxPriceRange()}_nonOverlayPricesSourcesCount(){return this.m_dataSources.filter(e=>(!e.properties().linkedToSeries||!e.properties().linkedToSeries.value())&&((0,J.isPriceDataSource)(e)&&e.showInObjectTree()&&!this.isOverlay(e))).length}_restoreMainSeries(e,t,i,s,r,n){const o=e.id,a=e.state;if(a&&r&&(a.style=r.style||a.style,a.interval=r.interval||a.interval,r.symbol&&r.symbol!==a.symbol&&(a.symbol=r.symbol,delete a.currencyId,delete a.unitId)),a&&a.style,a&&["candleStyle","hollowCandleStyle","haStyle"].forEach(e=>{a[e]&&(a[e].wickUpColor=a[e].wickUpColor||a[e].wickColor,a[e].wickDownColor=a[e].wickDownColor||a[e].wickColor)}),a&&(a.statusViewStyle=a.statusViewStyle||{},!a.statusViewStyle.symbolTextSource)){const e=!!a.statusViewStyle.showSymbolAsDescription;a.statusViewStyle.symbolTextSource=e?"ticker":"description"}if(a&&(a.extendedHours?a.sessionId="extended":a.sessionId||(a.sessionId="regular"),delete a.extendedHours),!i){const e=this._model.mainSeries();this._model.mainPane().removeDataSource(e,!1,n),this._addSourceToCollections(e,n)}const l=this.model().mainSeries(),c=l.properties().childs();this.m_mainDataSource=l;const h=a&&a.style?a.style:void 0;if(6===h&&"ATR"===c.pnfStyle.childs().inputs.childs().style.value()?c.pnfStyle.childs().inputs.childs().style.setValueSilently("Traditional"):4===h&&"ATR"===c.renkoStyle.childs().inputs.childs().style.value()&&c.renkoStyle.childs().inputs.childs().style.setValueSilently("Traditional"),a&&!a.hasOwnProperty("showSessions")&&(a.showSessions=!1),a&&void 0===a.settlementAsClose&&(a.settlementAsClose=!1),a&&t&&(a.showCountdown=!1), +a&&(t&&!("showSeriesLastValueProperty"in s)&&"showLastValue"in a&&this._model.properties().childs().scalesProperties.childs().showSeriesLastValue.setValue(a.showLastValue),delete a.showLastValue),a){const t={haStyle:(0,N.chartStyleStudyId)(8,!0),renkoStyle:(0,N.chartStyleStudyId)(4,!0),pbStyle:(0,N.chartStyleStudyId)(7,!0),kagiStyle:(0,N.chartStyleStudyId)(5,!0),pnfStyle:(0,N.chartStyleStudyId)(6,!0),rangeStyle:(0,N.chartStyleStudyId)(11,!0)},i=this._model.studyVersioning(),s=l.styleStudyInfos(),r=Object.keys(de.SYMBOL_STRING_DATA);for(let n=0;nthis._zoffset&&e+t>0)return Ne.logError("merge: when the first time point index is updated, we should fill the time points starting from the first one"),[];if(0===this._items.length)return this._items=i.slice(),this._zoffset=t,[{change:"rebuild",index:this._validOffsetToIndex(0)}];const s=e+this._zoffset;if(s<0){const r=Math.abs(s);if(i.lengththis._items.length){const e=o-this._items.length;for(let t=n;tthis._items[this._items.length-1])return t?this._validOffsetToIndex(this._items.length-1):null;for(let i=0;io){const i=e-o;if(i<500&&null!=t)return t(l,i);return l+i*c}return null}roughIndex(e,t=null){const i=this._items;if(!i.length||i.length<2)return null;const s=i.length-1,r=this._validOffsetToIndex(0),n=this._validOffsetToIndex(s),o=i[0],a=i[s];if(e>=o&&e<=a)return this.closestIndexLeft(e);const l=(a-o)/(n-r);if(ea){const i=e-a;let s=Math.trunc(i/l);if(s<500&&null!==t){const i=t(a,e);i.success&&(s=i.result)}return n+s}return null}closestIndexLeft(e){const t=this._items;if(!t.length)return null;if(Number.isNaN(e))return null;let i=t.length-1;if(e>=t[i])return this._validOffsetToIndex(i);let s=0;const r=t[s];if(es+1;){const r=s+i>>1,n=t[r];if(n>e)i=r;else{if(!(n{this.setRightOffset(e)}),this._options.preserveBarSpacing&&(this._barSpacing=this._scalesProperties.childs().barSpacing.value()||6),this._barSpacingChanged.subscribe(this,this._maxRightOffsetOnChanged),this._widthChanged.subscribe(this,this._maxRightOffsetOnChanged)}destroy(){this._barSpacingChanged.unsubscribeAll(this),this._barSpacingChanged.destroy(),this._widthChanged.unsubscribeAll(this),this._widthChanged.destroy()}isEmpty(){return 0===this._width||!this.canNormalize()}canNormalize(){return this._points.size()>0}update(e,t,i,s){this._visibleBarsInvalidated=!0,i.length>0&&this._points.merge(e,t,i),this._tickMarks.merge(s),this._correctOffset()}addTail(e,t,i){this._tickMarks.removeTail(t);const s=e.params,n=(0,r.ensureDefined)(this._tickMarks.maxIndex)+(i?0:1);for(let e=0;e0&&(i*=this._width/e.width)),this._tryToUpdateBarSpacing(this._barSpacing,i),this._correctOffset(),this._rightOffsetChanged.fire(this._rightOffset)}marks(){if(this.isEmpty())return null;const e=this._barSpacing,t=5*((this._scalesProperties.childs().fontSize.value()||0)+4),i=Math.round(t/e),s=(0,r.ensureNotNull)(this.visibleBarsStrictRange()),n=Math.max(s.firstBar(),s.firstBar()-i),o=Math.max(s.lastBar(),s.lastBar()-i),a=this._tickMarks.build(e,t),l=[];for(const e of a){if(!(n<=e.index&&e.index<=o))continue;const t=this._tickMarks.indexToTime(e.index);null!==t&&l.push({coord:this.indexToCoordinate(e.index),label:this.formatLabel(t,e.span),span:e.span,major:e.label>=He.DAY_SPAN})}return l}visibleBarsStrictRange(){return this._visibleBarsInvalidated&&(this._visibleBarsInvalidated=!1,this._updateVisibleBars()),this._visibleBars.strictRange()}visibleBarsStrictRangeChanged(){return this._visibleBarsChanged}logicalRangeChanged(){return this._logicalRangeChanged}tickMarks(){return this._tickMarks}points(){return this._points}width(){return this._width}setWidth(e,t){if(!Number.isFinite(e)||e<=0)return void Ke.logWarn("setWidth: invalid argument: "+e);if(this._width===e)return;if(this._visibleBarsInvalidated=!0,(t||this._options.lockVisibleTimeRangeOnResize)&&this._width){const t=this._barSpacing*e/this._width;this._tryToUpdateBarSpacing(this._barSpacing,t)}else this._width&&this.setBarSpacing(this._barSpacing);if(null!==this._leftEdgeIndex){if((0,r.ensureNotNull)(this.visibleBarsStrictRange()).firstBar()<=this._leftEdgeIndex){const t=this._width-e;this._rightOffset-=Math.round(t/this._barSpacing)+1}}this._width=e,this._widthChanged.fire(e);const i=this._rightOffset;this._correctOffset(),this._rightOffset!==i&&this._rightOffsetChanged.fire(this._rightOffset),this._requestMoreData()}setLeftEdgeFix(e){this._leftEdgeIndex=e;const t=this.visibleBarsStrictRange();if(null===t)return;const i=t.firstBar()-e;if(i<0){const e=this._rightOffset-i-1;this.scrollToOffsetAnimated(e,500)}}indexToCoordinate(e){if(this.isEmpty())return 0;if(!(0,_e.isInteger)(e))return 0;const t=this.baseIndex()+this._rightOffset-e;return this._width-(t+.5)*this._barSpacing-1}indexToUserTime(e){return this._tickMarks.indexToTime(e)}timePointToIndex(e){return this._points.indexOf(e,!0)}indexToTimePoint(e){return this._points.valueAt(e)}timeToCoordinate(e){const t=this._points.closestIndexLeft(e);if(null===t)return null;const i=(0,r.ensureNotNull)(this._points.valueAt(t)),s=this.indexToCoordinate(t);if(s<=0||s>=this._width)return null;const n=this.barSpacing(),o=this.baseIndex(),a=s+(e-i)/((0,r.ensureNotNull)(this._points.valueAt(o))-(0,r.ensureNotNull)(this._points.valueAt(o-1)))*n+1;return a<=0||a>=this._width?null:a}barIndexesToCoordinates(e){const t=this.baseIndex();for(const i of e){ +const e=i.time,s=t+this._rightOffset-e,r=this._width-(s+.5)*this._barSpacing-1;i.time=r,i.exactTime=r}}timedValuesToCoordinates(e,t){var i,s;const r=this.baseIndex()+this._rightOffset,n=this._width-r*this._barSpacing-.5*this._barSpacing-1,o=null!==(i=null==t?void 0:t.startItemIndex)&&void 0!==i?i:0,a=null!==(s=null==t?void 0:t.endItemIndex)&&void 0!==s?s:e.length;for(let t=o;t{void 0!==t&&t(),this._requestMoreData()};if(e){const e=this._rightOffset,t=this.maxRightOffset();t>0&&i>t&&(i=t);const r=this._model;(0,Ee.doAnimate)({from:e,to:i,duration:1e3,easing:Ae.easingFunc.easeInOutQuint,onComplete:s,onStep:(e,t)=>{this._visibleBarsInvalidated=!0,this._updateRightOffset(t),r.recalculateAllPanes((0,O.viewportChangeEvent)()),r.lightUpdate(),r.recalcVisibleRangeStudies()}})}else this._visibleBarsInvalidated=!0,this._updateRightOffset(i),s()}scrollToFirstBar(){this._model.gotoTime(new Date("1800-01-01").getTime())}scrollToOffsetAnimated(e,t){if(!isFinite(e))throw new RangeError("offset is required and must be finite number");const i=void 0===t?400:t;if(!isFinite(i)||i<=0)throw new RangeError("animationDuration (optional) must be finite positive number");const s=this._rightOffset,r=Date.now(),n=()=>{this._visibleBarsInvalidated=!0;const t=(Date.now()-r)/i;if(t>=1)return this._updateRightOffset(e),this._visibleBarsInvalidated=!0,this._model.recalculateAllPanes((0,O.viewportChangeEvent)()),void this._model.lightUpdate();const o=s+(e-s)*t;this._updateRightOffset(o),this._model.recalculateAllPanes((0,O.viewportChangeEvent)()),setTimeout(n,20)};n()}defaultRightOffset(){return this._defaultRightOffset}rightOffsetDefaultValue(){return 10}barSpacing(){return this._barSpacing}setBarSpacing(e){Number.isFinite(e)?(e=this.getValidBarSpacing(e),this._tryToUpdateBarSpacing(this._barSpacing,e)&&(this._correctOffset(),this._options.preserveBarSpacing&&((0,P.saveDefaultProperties)(!0),this._scalesProperties.childs().barSpacing.setValue(this._barSpacing),(0,P.saveDefaultProperties)(!1)),this._model.recalculateAllPanes((0,O.viewportChangeEvent)()),this._model.lightUpdate())):Ke.logWarn("setBarSpacing: invalid argument: "+e)}barSpacingChanged(){return this._barSpacingChanged}getValidBarSpacing(e){return null==e&&(e=this.barSpacing()),ethis.maxBarSpacing()?this.maxBarSpacing():e}isValidBarSpacing(e){return e>=this.minBarSpacing()&&e<=this.maxBarSpacing()}preserveBarSpacing(){return this._options.preserveBarSpacing}normalizeBarIndex(e){let t=0,i=0 +;const s=this.baseIndex(),n=(0,r.ensureNotNull)(this._points.firstIndex());return es?(t=(0,r.ensureNotNull)(this._points.valueAt(s)),i=e-s):(t=(0,r.ensureNotNull)(this._points.valueAt(e)),i=0),{time_t:t,offset:i}}denormalizeTimePoint(e){const t=this._points.indexOf(e.time_t,!1);if(null!==t)return t+e.offset}rightOffset(){return this._rightOffset}rightOffsetChanged(){return this._rightOffsetChanged}minRightOffset(){const e=this.points().firstIndex(),t=this._baseIndex;if(null===e||null===t)return null;if(null!==this._leftEdgeIndex){const e=this.width()/this._barSpacing;return this._leftEdgeIndex-t+e-1}return e-t-1+Ye}maxRightOffset(){return this.width()/this._barSpacing-Ye}maxRightOffsetChanged(){return this._maxRightOffsetChanged}onReset(){return this._resetDelegate}scrollStartPoint(){return this._scrollStartPoint}baseIndex(){return this._baseIndex||0}zoom(e,t,i){if(!Number.isFinite(e)||!Number.isFinite(t))return void Ke.logWarn(`zoom: invalid arguments: ${e}, ${t}, ${i}`);const s=this.coordinateToIndex(e),r=this.barSpacing(),n=r+t*(r/10);this.setBarSpacing(n);(void 0!==i?!i:this._options.rightBarStaysOnScroll)||this.setRightOffset(this.rightOffset()-.5+(s-this._coordinateToFloatIndex(e))),this._requestMoreData()}zoomToBarsRange(e,t){if(null!==this._leftEdgeIndex&&(e=Math.max(e,this._leftEdgeIndex)),t<=e)return;const i=this.baseIndex(),s=this._rightOffset;this._rightOffset=t-i;const r=Math.max(t-e+1,Ye);this.setBarSpacing(this.width()/r),this._visibleBarsInvalidated=!0,this._correctOffset(),this._rightOffset!==s&&this._rightOffsetChanged.fire(this._rightOffset),this._requestMoreData()}coordinateToIndex(e){return Math.ceil(this._coordinateToFloatIndex(e))}coordinateToVisibleIndex(e){let t;if(0===e){const e=this._coordinateToFloatIndex(-1);t=Math.floor(e)+1}else t=this.coordinateToIndex(e);const i=this.visibleBarsStrictRange();return null===i||i.contains(t)||(t=Math.min(Math.max(i.firstBar(),t),i.lastBar())),t}canZoomIn(){return this.barSpacing()this._options.minBarSpacing}minBarSpacing(){return this._options.minBarSpacing}maxBarSpacing(){const e=this.width();return qe?e:e/Ye}resetRightOffset(){this.setRightOffset(this._defaultRightOffset.value())}reset(){this._visibleBarsInvalidated=!0,this._points=new Re,this._scrollStartPoint=null,this._scaleStartPoint=null,this._clearCommonTransitionsStartState(),this._tickMarks.reset(),this._leftEdgeIndex=null,this._resetDelegate.fire(),this.disconnect()}disconnect(){this._requestingMoreData=!1,this._requestedTickmarksCount=0,this._endOfData=!1}setBaseIndex(e){Number.isFinite(e)?(this._visibleBarsInvalidated=!0,this._baseIndex=e,this._correctOffset()):Ke.logDebug("setBaseIndex: invalid argument: "+e)}resetBaseIndex(){this._visibleBarsInvalidated=!0,this._baseIndex=null}setRightOffset(e){Number.isFinite(e)?(this._visibleBarsInvalidated=!0,this._updateRightOffset(e)):Ke.logWarn("setRightOffset: invalid argument: "+e)}correctBarSpacing(){ +this.isEmpty()||this.points().size()this.formatLabelImpl(e,t)),this._formattedBySpan.set(t,i)),i.format(new Date(e))}formatLabelImpl(e,t){if(!(e&&e instanceof Date))return"incorrect time";const i=function(e,t){if(ee&&(this._rightOffset=e,this._visibleBarsInvalidated=!0);const t=this.minRightOffset();null!==t&&this._rightOffset{e.onChanged().subscribe(null,t=>this._onChanged.fire(e.id,t))})}groups(){return this._groups.filter(e=>e.isActualSymbol())}groupsForAllSymbols(){return this._groups}createGroup(e,t,i){t=t||this._generateNextName();const s=new et.LineToolsGroup(e,t,i);this._groups.push(s),s.onChanged().subscribe(null,e=>this._onChanged.fire(s.id,e));const r={visibilityChanged:!1,lockedChanged:!1,titleChanged:!1,isActualIntervalChanged:!1,affectedLineTools:e.map(e=>e.id())};return this._onChanged.fire(s.id,r),s}addGroup(e){this._groups.push(e),e.onChanged().subscribe(null,t=>this._onChanged.fire(e.id,t)),this._onChanged.fire(e.id)}removeGroup(e){const t=this._groups.findIndex(t=>t.id===e.id);this._groups.splice(t,1),this._onChanged.fire(e.id)}groupForId(e){return this._groups.find(t=>t.id===e)||null}groupForLineTool(e){return this._groups.find(t=>t.containsLineTool(e))||null}removeLineTools(e){this._groups.forEach(t=>{const i=e.filter(t.containsLineTool.bind(t));i.length&&t.excludeLineTools(i)});this._groups.filter(e=>0===e.lineTools().length).forEach(e=>this.removeGroup(e))}state(e){return{groups:(e?this._groups.filter(e=>e.isActualSymbol()):this._groups).map(e=>e.state())}}onChanged(){return this._onChanged}fireChangedAll(){this._groups.forEach(e=>{this._onChanged.fire(e.id)})}static fromState(e,t){const i=[];for(const s of t.groups){const t=et.LineToolsGroup.fromState(e,s);null!==t&&i.push(t)}return new tt(i)}_generateNextName(){const e=new Set(this.groups().map(e=>e.name()));for(let t=1;;t++){const i="Group "+t,s="Group_"+t;if(!e.has(i)&&!e.has(s))return i}}}var it=i(10480),st=i.n(it),rt=i(69177);let nt=null;function ot(e){return Boolean(e.symbolInfo.timezone)&&Boolean(e.symbolInfo.session)}class at{constructor(e,t){var i,s;this._sourceTargetBarBuilder=null,this._cache=new Map,this._source=e,this._sourceSession=rt.SessionInfo.fromState(e.session),this._target=t,this._targetSession=rt.SessionInfo.fromState(t.session),this._isResolutionTheSame=C.Interval.isEqual(e.resolution,t.resolution),this._isSessionTheSame=(i=e.symbolInfo,s=t.symbolInfo,i.timezone===s.timezone&&i.session===s.session&&i.session_holidays===s.session_holidays&&i.corrections===s.corrections),this._shouldCorrectTradingDay=C.Interval.isDWM(e.resolution)&&!this._isSessionTheSame}sourceTimeToTargetTime(e){if(this._isSessionTheSame&&this._isResolutionTheSame)return e;if(!ot(this._source)||!ot(this._target))return e;let t=this._cache.get(e);if(void 0===t){let i=1e3*e +;if(this._shouldCorrectTradingDay){let e=st().utc_to_cal(this._sourceSession.timezone,i);e=this._sourceSession.spec.correctTradingDay(e);const t=new Date(e);st().set_hms(t,0,0,0,0,this._sourceSession.timezone),i=t.valueOf()}const s=this._sourceTargetBuilder();s.moveTo(i);const r=s.indexOfBar(i);t=s.startOfBar(Math.max(0,r))/1e3,this._cache.set(e,t)}return t}_sourceTargetBuilder(){if(null===this._sourceTargetBarBuilder){const e=this._isSessionTheSame?this._targetSession:(null===nt&&(nt=new rt.SessionInfo("Etc/UTC","24x7")),nt);this._sourceTargetBarBuilder=(0,rt.newBarBuilder)(this._target.resolution,this._targetSession,e)}return this._sourceTargetBarBuilder}}var lt=i(85733),ct=i(68906),ht=i(4676),dt=i(49642);function ut(e,t){return e.codet.code?1:0}class pt{constructor(e){this._convertibleItems=e,this._idsToItems=new Map;for(const t of e)this._idsToItems.set(t.id,t)}convertible(e){return void 0!==this._idsToItems.get(e)}item(e){var t;return null!==(t=this._idsToItems.get(e))&&void 0!==t?t:null}size(){return this._convertibleItems.length}filterConvertible(e,t){const i=this._convertibleItems.filter(function(e,t){return i=>!e.has(i.id)&&t(i.id)}(e,t));return i.sort(ut),i}}class _t{constructor(e){this._allGroups=new Set,this._idToName=new Map,this._idToDescription=new Map,this._groupedUnitIds=new Map,this._groupedUnits=new Map,this._groupById=new Map,this._size=0,this._units=e;for(const t in e)if(e.hasOwnProperty(t)){this._allGroups.add(t),this._groupedUnitIds.set(t,new Set(e[t].map(e=>e.id))),this._groupedUnits.set(t,e[t]);for(const i of e[t])this._size++,this._idToName.set(i.id,i.name),this._idToDescription.set(i.id,i.description),this._groupById.set(i.id,t)}}unitsChanged(e){return this._units!==e}size(){return this._size}name(e){return this._idToName.get(e)||e}description(e){return this._idToDescription.get(e)||e}unitGroupById(e){return this._groupById.get(e)||null}allGroups(){return new Set(this._allGroups)}unitsByGroups(e){const t=[];return e.forEach(e=>{const i=this._groupedUnits.get(e);void 0!==i&&t.push({name:e,units:i})}),t}convertible(e,t){for(const i of t){const t=this._groupedUnitIds.get(i);if(void 0!==t&&t.has(e))return!0}return!1}}var mt=i(93751);class gt{constructor(e){this._source=null,this._sourcePane=null,this._currentToolSupportsPhantomMode=!1,this._model=e}destroy(){this._source=null,this._sourcePane=null}source(){return this._source}onToolChanged(){this._removeSource();const e=this._model.currentTool();this._currentToolSupportsPhantomMode=(0,f.isLineToolName)(e)&&(0,f.supportsPhantomMode)(e)}onCursorPositionUpdated(){if(!this._currentToolSupportsPhantomMode)return;const e=this._model.crossHairSource();if(this._sourcePane!==e.pane&&this._removeSource(),null===e.pane||!(0,mt.isNumber)(e.index)||!(0,mt.isNumber)(e.price))return void this._removeSource();const t={index:e.index,price:e.price};null!==this._source?this._source.setPoint(0,t):(this._source=this._model.createLineTool(e.pane,t,this._model.currentTool(),void 0,null),this._sourcePane=e.pane)}_removeSource(){ +null!==this._source&&(this._model.removeSource(this._source),this._source=null,this._sourcePane=null)}}var ft=i(71053),vt=i(73383),St=i(90373),yt=i(30460);class bt{align(e,t,i){let s=e;if(!(0,yt.magnetEnabled)().value())return s;const n=i.mainDataSource();if(null===n)return s;const o=n.model().mainSeries();if(n!==o)return s;const a=o.priceScale(),l=o.bars();if(a.isEmpty()||!l.contains(t))return s;const c=l.valueAt(t);if(null===c)return s;const h=[];null!==o.priceSource()?h.push(o.barFunction()(c)):h.push(c[1],c[2],c[3],c[4]);const d=(0,r.ensure)(o.firstValue()),u=h.map(e=>({y:a.priceToCoordinate(e,d),price:e})),p=a.priceToCoordinate(e,d);u.sort((e,t)=>Math.abs(e.y-p)-Math.abs(t.y-p));const _=u[0];return((0,yt.magnetMode)().value()===St.MagnetMode.StrongMagnet||Math.abs(_.y-p)<50)&&(s=_.price),s}}var wt=i(65862),Ct=i(62443),Pt=i(29892),Tt=i(42759);class xt{constructor(){this._data=null}setData(e){this._data=e}draw(e,t){if(null===this._data)return;const i=t.pixelRatio,s=Math.max(1,Math.floor(i));e.lineWidth=s;const r=Math.ceil(this._data.h*i),n=Math.ceil(this._data.w*i);if(e.save(),e.lineCap="butt",this._data.vertLinesVisible){e.strokeStyle=this._data.vertLinesColor,(0,Pt.setLineStyle)(e,this._data.vertLineStyle);for(const t of this._data.timeMarks){const s=Math.round(t.coord*i);(0,Tt.drawVerticalLine)(e,s,0,r)}}if(this._data.horzLinesVisible){e.strokeStyle=this._data.horzLinesColor,(0,Pt.setLineStyle)(e,this._data.horzLineStyle);for(const t of this._data.priceMarks){const s=Math.round(t.coord*i);(0,Tt.drawHorizontalLine)(e,s,0,n)}}e.restore()}hitTest(e){return null}}class It{constructor(e){this._renderer=new xt,this._pane=e}update(){}renderer(){const e=this._pane.defaultPriceScale(),t=this._pane.model().timeScale();if(e.isEmpty()||t.isEmpty())return null;const i=this._pane.model().properties().childs().paneProperties.childs(),s=t.marks(),r={horzLinesVisible:!0,vertLinesVisible:!0,horzLinesColor:i.horzGridProperties.childs().color.value(),vertLinesColor:i.vertGridProperties.childs().color.value(),horzLineStyle:i.horzGridProperties.childs().style.value(),vertLineStyle:i.vertGridProperties.childs().style.value(),priceMarks:e.marks(),timeMarks:null!==s?s:[],w:this._pane.width(),h:this._pane.height()};return this._renderer.setData(r),this._renderer}}class Mt extends Ct.DataSource{id(){return"grid"}paneViews(e){return[new It(e)]}}var Lt=i(97938);class At extends Lt.PriceAxisView{constructor(e,t,i){super(),this._source=e,this._priceScale=t,this._priceProvider=i,this._properties=e.model().properties().childs().scalesProperties}setHitTestData(e){this._hitTestData=e}additionalPadding(e){return 0}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const s=this._priceScale,r=s.mainSource(),n=null!==r?r.firstValue():null;if(!this._isVisible()||s.isEmpty()||null===n)return;const o=this._priceProvider(s);if(null===o)return;i.background=this._bgColor(),i.textColor=this.generateTextColor(i.background);const a=this.additionalPadding(s.fontSize());i.additionalPaddingTop=a,i.additionalPaddingBottom=a, +i.coordinate=s.priceToCoordinate(o,n),e.text=s.formatPrice(o,n),e.visible=!0,t.visible=!0,t.hitTestData=this._hitTestData}}const Et={normalBgColor:a.colorsPalette["color-cold-gray-750"],hoveredBgColor:a.colorsPalette["color-cold-gray-600"]},kt={normalBgColor:a.colorsPalette["color-cold-gray-900"],hoveredBgColor:a.colorsPalette["color-cold-gray-650"]};class Dt extends At{additionalPadding(e){return 2/12*e}_isVisible(){return this._properties.childs().showPriceScaleCrosshairLabel.value()&&this._source.visible&&null!==this._source.pane}_bgColor(){return this._getThemedColors().normalBgColor}_updateRendererData(e,t,i){const s=t.visible;super._updateRendererData(e,t,i),this._source.isHovered()?t.backgroung=this._getThemedColors().hoveredBgColor:t.backgroung=void 0,s||(t.visible=s)}_getThemedColors(){return this._source.model().isDark()?Et:kt}}class Vt extends At{_isVisible(){return null!==this._source.measurePane().value()}_bgColor(){return this._properties.childs().axisLineToolLabelBackgroundColorCommon.value()}}var Bt=i(28978),Nt=(i(28296),i(97056));function Rt(e){const t=e.priceScale();return null===t?0:t.isPercentage()||t.isIndexedTo100()?2:1}const Ot=B.enabled("show_context_menu_in_crosshair_if_only_one_item");class Ft extends Bt.PanePriceAxisView{constructor(e,t,i,s,r){super(e,t,s),this._crossHairMenuCachedState=null,this._hasActions=!1,this._tooltipText=null,this._gaOrigin="CH menu",this._crosshairPriceAxisView=e,e.setPaneRendererLabelIcon(0),this._crosshair=t,this._scale=i,this._options=r}_updateImpl(e,t){super._updateImpl(e,t);const i=this._crosshair.y,s=this._chartModel.properties().childs().scalesProperties.childs().fontSize.value(),r=this._chartModel.timeScale().width(),n=this._crosshair.model().priceAxisRendererOptions(),o=s+2*this._crosshairPriceAxisView.additionalPadding(s)+n.paddingTop+n.paddingBottom,a=o,l=i-o/2,c=r-a,h=this._crosshair.pane,d=this._mainDataSourceOnPane(),u=d&&d.symbolSource(),p=!!u&&(u.isConvertedToOtherCurrency()||u.isConvertedToOtherUnit());if(null!==d){const e=Rt(d),t=d.idForAlert(),i=this._chartModel.isInReplay(),s=this._crossHairMenuCachedState;null!==s&&s.id===t&&s.priceScale===e&&s.isCurrencyOrUnitConverted===p&&s.isInReplay===i||(this._updateTooltipAndActionsAvaliability(d,e,p),this._crossHairMenuCachedState={id:t,priceScale:e,isCurrencyOrUnitConverted:p,isInReplay:i})}const _=null!==d&&(0,le.isActingAsSymbolSource)(d)?d.symbol():null,m=null!==h&&(h.maximized().value()||!h.collapsed().value())&&(Boolean(_)||!1);this._crosshairPriceAxisView.setPaneLabelVisible(m);const g=null!==h&&0!==h.leftPriceScales().length&&m,f=null!==h&&0!==h.rightPriceScales().length&&m,v=r-a/2,S=this._tooltipText?{text:this._tooltipText,rect:{x:v,y:l,w:0,h:0}}:void 0;this._data={left:g,right:f,xl:0,xr:c,y:l,containerWidth:a,containerHeight:o,clickHandler:this._handleClick.bind(this),tooltip:S},this._crosshairPriceAxisView.setHitTestData(this._data)}_priceScale(){return this._scale}_updateTooltipAndActionsAvaliability(e,t,i){this._tooltipText=null,this._hasActions=!1;if(!(1===t))return +;this._chartModel.isInReplay();let s=0;let r=0;1!==s||Ot||(this._tooltipText=""),this._crosshairPriceAxisView.setPaneRendererLabelIcon(r),this._hasActions=0!==s}_handleClick(e,t,i){(0,h.trackEvent)(this._gaOrigin,"click");const s=this._mainDataSourceOnPane(),r=null!==s&&(0,le.isActingAsSymbolSource)(s)?s.symbol():null,n={pageX:i.pageX,pageY:i.pageY,clientX:i.clientX,clientY:i.clientY,screenX:i.screenX,screenY:i.screenY,price:this._crosshair.price,symbol:r};u.emit("onPlusClick",n)}_getMenuItems(e){return Promise.resolve([])}_createAlertMenuItems(e){return Promise.resolve([])}_createTradingMenuItems(){return Promise.resolve([])}_createAddHorizontalLineMenuItem(){return[]}_getActionAddAlert(e){return null}_getActionAddHorizontalLine(e){return null}_getValue(e,t){const i=e.priceScale(),s=e.firstValue();if(null===i||null===s)return null;return i.isPercentage()||i.isIndexedTo100()?null:i.coordinateToPrice(t,s)}_formatValue(e,t){return t.formatter().format(e)}_addAlert(e,t){}_addHorizontalLineTool(e,t){}_showContextMenu(e,t,i,s){const n="left"===s;setTimeout(()=>{const t=(0,r.ensureDefined)(this._data),s=n?t.xl:t.xr,o=i.localX-s,a=i.clientX-o,l=i.clientX-o+t.containerWidth;Nt.ContextMenuManager.showMenu(e,{clientX:n?a:l,clientY:i.clientY-t.containerHeight/2,boxHeight:t.containerHeight,attachToXBy:n?"left":"right",attachToYBy:"auto-strict"},void 0,{menuName:"CrosshairMenuView"})})}_mainDataSourceOnPane(){const e=this._crosshair.pane;return null!==e?e.mainDataSource():null}}var Wt=i(43891),Ht=i(71413),zt=i(84346);class Ut{constructor(e){this._data=e}hitTest(e){return void 0===this._data.clickHandler?null:new zt.HitTestResult(zt.HitTestResult.CUSTOM,{clickHandler:this._data.clickHandler,tapHandler:this._data.clickHandler})}draw(e,t){const i=t.pixelRatio,s=this._data.vertLinesVisible,r=this._data.horzLinesVisible;if(!s&&!r)return;e.save(),e.lineWidth=Math.max(1,Math.floor(this._data.lineWidth*i)),e.strokeStyle=this._data.color,e.fillStyle=this._data.color,e.lineCap="butt",(0,Pt.setLineStyle)(e,this._data.lineStyle);const n=Math.round(this._data.x*i),o=Math.round(this._data.y*i),a=Math.ceil(this._data.w*i),l=Math.ceil(this._data.h*i);s&&n>=0&&(0,Tt.drawVerticalLine)(e,n,0,l),r&&o>=0&&(0,Tt.drawHorizontalLine)(e,o,0,a),this._data.drawCenter&&(e.beginPath(),e.arc(n,o,Math.round(3*i),0,2*Math.PI,!0),e.fillStyle=this._data.color,e.fill()),e.restore()}}const jt=a.colorsPalette["color-tv-blue-500"];class Gt{constructor(e,t){this._rendererData={},this._renderer=new Ut(this._rendererData),this._source=e,this._pane=t}update(){}renderer(e,t){const i=this._source.selectPointMode().value(),s=this._source.visible&&(this._source.areLinesVisible||i)&&!this._source.linesShouldBeHidden(),n=this._rendererData;if(!s||null===this._pane)return null;const o=this._source.paneForPointSelect(),a=null!==o?this._source.pane===o&&this._pane===o:this._pane===this._source.pane;if(i&&this._source.isOnHoveredChartWidget()&&a){const e=(0,r.ensureNotNull)(this._source.pointToSelect());n.color=this._source.lineColor()||jt,n.lineWidth=1, +n.lineStyle=Wt.LINESTYLE_SOLID,n.horzLinesVisible=!0,n.vertLinesVisible=!0,n.drawCenter=!1,"time"===e?n.horzLinesVisible=!1:"price"===e&&(n.vertLinesVisible=!1)}else{const e=this._source.properties(),t=this._source.model().currentTool(),i=(0,Ht.lastMouseOrTouchEventInfo)(),s=i.isTouch&&!i.stylus&&((0,f.isLineToolName)(t)||(0,lt.toolIsMeasure)(t));let r;r=s?jt:e.childs().color.value();const o=e.childs().transparency.value();!s&&o>0&&(r=(0,ct.generateColor)(r,o)),n.color=r,n.horzLinesVisible=this._pane===this._source.pane&&(this._pane.maximized().value()||!this._pane.collapsed().value()),n.vertLinesVisible=!0,n.lineWidth=e.childs().width.value(),n.lineStyle=e.childs().style.value(),n.drawCenter=s&&this._pane===this._source.pane}return n.w=this._pane.width(),n.h=this._pane.height(),n.x=void 0!==this._source.lockedX&&isFinite(this._source.lockedX)&&this._source.lockedX||this._source.x,n.y=this._source.y,this._renderer}}var qt=i(55776);const Yt={backgroundColor:(0,ct.generateColor)(a.colorsPalette["color-tv-blue-500"],70),borderColor:(0,ct.generateColor)(a.colorsPalette["color-tv-blue-500"],20)};class Kt{constructor(e){this._renderer=new qt.RectangleRenderer,this._rectangle=null,this._crosshair=e}update(){const e=this._crosshair.selection();null!==e&&null!==this._crosshair.pane?this._rectangle=this._crosshair.pane.logicalRectToPixels(e):this._rectangle=null}renderer(e,t){if(!this._rectangle)return null;const i={backcolor:Yt.backgroundColor,color:Yt.borderColor,fillBackground:!0,linewidth:1,points:[this._rectangle.min,this._rectangle.max],extendLeft:!1,extendRight:!1};return this._renderer.setData(i),this._renderer}}var $t=i(62820),Xt=i(26811),Zt=i(97645),Jt=i(92242),Qt=i(67802),ei=i(63300),ti=i(98664),ii=i(94804),si=i(49612);const ri=(0,K.t)("{count} bars"),ni=(0,K.t)("Vol"),oi=new Xt.PercentageFormatter,ai=new Jt.TimeSpanFormatter,li=new Qt.VolumeFormatter,ci=(0,a.getHexColorByName)("color-tv-blue-500"),hi=(0,a.getHexColorByName)("color-ripe-red-400"),di={bgColorPositive:(0,ct.generateColor)(ci,80),bgColorNegative:(0,ct.generateColor)(hi,80),colorPositive:(0,a.getHexColorByName)("color-tv-blue-600"),colorNegative:(0,a.getHexColorByName)("color-ripe-red-400"),labelBgColorPositive:ci,labelBgColorNegative:hi};class ui{constructor(e,t){this._pipFormatter=null,this._lastSymbolInfo=null,this._horzTrenRenderer=new ei.TrendLineRenderer,this._vertTrenRenderer=new ei.TrendLineRenderer,this._bgRenderer=new qt.RectangleRenderer,this._labelRenderer=new ti.TextRenderer,this._p1=null,this._p2=null,this._label=null,this._source=e,this._pane=t}update(e){const[t,i]=this._source.measurePoints();if(void 0===i)return this._p1=null,void(this._p2=null);const s=(0,r.ensureNotNull)(this._source.measurePane().value()),o=t.price,a=i.price,l=i.price-o,c=i.index-t.index,h=(0,$t.forceLTRStr)(""+c),d=(0,r.ensureNotNull)(s.mainDataSource());let u=(0,r.ensureNotNull)(d.formatter()).format(l);if(Math.abs(o)>1e-8){const e=l/Math.abs(o);u+=" ("+oi.format(100*e)+")"}const p=(0,$t.forceLTRStr)(u);this._label=p+"\n"+ri.format({count:h});const _=(0, +r.ensureNotNull)(d.firstValue()),m=this._source.model().timeScale().indexToCoordinate(t.index),g=this._source.model().timeScale().indexToCoordinate(i.index),f=s.defaultPriceScale().priceToCoordinate(o,_),v=s.defaultPriceScale().priceToCoordinate(a,_);this._p1=new n.Point(m,f),this._p2=new n.Point(g,v);const S=this._source.model().timeScale().indexToUserTime(t.index),y=this._source.model().timeScale().indexToUserTime(i.index);let b=null;if(null!==S&&null!==y){const e=this._pane.model().mainSeries().symbolInfo();null!==e&&e!==this._lastSymbolInfo&&(this._pipFormatter=new Zt.PipFormatter(e.pricescale,e.minmov,e.type,e.minmove2),this._lastSymbolInfo=e),b=(y.valueOf()-S.valueOf())/1e3}const w=this._pipFormatter?this._pipFormatter.format(l):null,C=null!==w?" , "+w:"",P=null!==b?ai.format(b):null,T=null!==P?", "+(0,$t.startWithLTR)(P):"";this._label=(0,$t.forceLTRStr)(p+C)+"\n"+ri.format({count:h})+T;const x=this._source.measureVolume();Number.isNaN(x)||(this._label+=`\n${ni} ${li.format(x)}`);const I=a=50?si.LineEnd.Arrow:si.LineEnd.Normal};this._horzTrenRenderer.setData(s)}{const e=Math.round(k.x),t=new n.Point(e,this._p1.y),i=new n.Point(e,this._p2.y),s={points:[t,i],color:L,linewidth:1,linestyle:Wt.LINESTYLE_SOLID,extendleft:!1,extendright:!1,leftend:si.LineEnd.Normal,rightend:Math.abs(t.y-i.y)>=50?si.LineEnd.Arrow:si.LineEnd.Normal};this._vertTrenRenderer.setData(s)}const D={x:0,y:10},V=.5*(this._p1.x+this._p2.x),B=this._p2.y,N=new n.Point(V,B),R=(O=(0,r.ensureNotNull)(this._label),{points:[N],text:O,color:"#FFFFFF",horzAlign:"center",vertAlign:"middle",font:M.CHART_FONT_FAMILY,offsetX:D.x,offsetY:D.y,bold:!1,italic:!1,fontsize:12,padding:8,highlightBorder:!1,backgroundColor:A,backgroundTransparency:10,backgroundVertInflate:5,backgroundHorzInflate:5,backgroundRoundRect:4});var O;this._labelRenderer.setData(R);const F=this._labelRenderer.measure(),W=(0,ti.calculateLabelPosition)(F,this._p1,this._p2,D,this._pane.height());this._labelRenderer.setPoints([W])}renderer(){if(null===this._p1||null===this._p2)return null;const e=new ii.CompositeRenderer;return e.append(this._bgRenderer),e.append(this._horzTrenRenderer),e.append(this._vertTrenRenderer),e.append(this._labelRenderer),e}}var pi=i(16282);class _i extends pi.ScaledPaneRenderer{constructor(e){super(),this._data=e}hitTest(e){return null}_drawImpl(e){e.translate(this._data.x-this._data.width/2,this._data.y-this._data.height/2),e.strokeStyle="rgba(153,153,153,.3)",e.lineWidth=2,e.beginPath(),this._drawShackle(e),e.stroke(),e.closePath(), +e.strokeStyle="rgba(153,153,153,.7)",e.lineWidth=1,e.beginPath(),e.rect(0,this._data.height-this._data.bodyHeight+.5,this._data.width,this._data.bodyHeight),e.closePath(),e.stroke(),e.translate(0,-1),e.strokeStyle="#777",e.beginPath(),this._drawShackle(e),e.stroke(),e.closePath(),e.fillStyle="rgba(255,255,255,.7)",e.beginPath(),e.rect(1,this._data.height-this._data.bodyHeight+1.5,this._data.width-2,this._data.bodyHeight-2),e.fill(),e.beginPath(),e.rect(.5,this._data.height-this._data.bodyHeight+1,this._data.width-1,this._data.bodyHeight-1),e.stroke(),e.closePath(),e.fillStyle="#777",e.fillRect(this._data.width/2-.5,this._data.height-this._data.bodyHeight/2,1,2)}_drawShackle(e){const t=(this._data.width-3)/2,i=this._data.height-this._data.bodyHeight;e.moveTo(1.5,t),e.arc(this._data.width/2,t,t,Math.PI,2*Math.PI),i>t&&(e.moveTo(1.5,t),e.lineTo(1.5,i),e.moveTo(this._data.width-1.5,t),e.lineTo(this._data.width-1.5,i))}}class mi{constructor(e,t,i){this._horzVisible=!1,this._source=e,this._pane=t,this._axis=i||"x"}update(){}renderer(e,t){const i=this._source.visible&&this._source.areLinesVisible,s=(0,lt.lockTimeAxis)().value(),n=i&&this._horzVisible,o=i||s;if("y"===this._axis&&!n||!o)return null;const a="y"===this._axis?this._pane.width()-4.5:(0,r.ensureDefined)(this._source.lockedX)+1,l="y"===this._axis?this._source.y:this._pane.height()-5.5-1;return new _i({x:a,y:l,width:9,height:11,bodyHeight:7})}}var gi=i(49483),fi=i(76166),vi=i(14445),Si=i(57626);class yi extends vi.DataWindowView{constructor(e){super(),this._invalidated=!0,this._dateItem=new vi.DataWindowItem((0,K.t)("Date"),""),this._timeItem=new vi.DataWindowItem((0,K.t)("Time"),""),this._model=e,this._items.push(this._dateItem),this._items.push(this._timeItem)}update(){this._invalidated=!0}items(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._items}_updateImpl(){const e=this._model.mainSeries().isDWM();if(this._timeItem.setVisible(!e),this._timeItem.setValue(Si.notAvailable),this._dateItem.setValue(Si.notAvailable),this._model.timeScale().isEmpty())return;let t=this._model.crossHairSource().appliedIndex();if(!(0,mt.isNumber)(t)){const e=this._model.mainSeries().data().last();if(null===e)return;t=e.index}const i=this._model.timeScale().indexToUserTime(t);null!==i&&(this._dateItem.setValue(this._model.dateFormatter().format(i)),e||this._timeItem.setValue(this._model.timeFormatter().format(i)))}}var bi=i(85578);class wi extends bi.TimeAxisView{constructor(e,t,i=!1){super(e),this._indexProvider=t,this._highlighted=i,this._properties=e.properties().childs().scalesProperties}_getBgColor(){const e=this._model.isDark();return this._highlighted?this._properties.childs().axisLineToolLabelBackgroundColorCommon.value():e?a.colorsPalette["color-cold-gray-750"]:a.colorsPalette["color-cold-gray-900"]}_getIndex(){return this._model.crossHairSource().visible?this._indexProvider():null}_isVisible(){return this._properties.childs().showTimeScaleCrosshairLabel.value()}}var Ci=i(34081);const Pi={menuEnabled:!1,menuForMainSourceOnly:!1, +disableTradingMenuActions:!1,disableDrawHorizLineMenuAction:!1};class Ti extends Ct.DataSource{constructor(e,t,i){super(),this.pane=null,this.price=NaN,this.index=NaN,this.visible=!0,this.areLinesVisible=!0,this.x=NaN,this.y=NaN,this._measurePane=new(G())(null),this._startMeasurePoint=null,this._endMeasurePoint=null,this._lastValidMeasurePoint=null,this._isOnHoveredChartWidget=!1,this._selectPointMode=new(G())(!1),this._selectionPane=null,this._selectionView=new Kt(this),this._selectionStartPoint=null,this._measurePaneView=null,this._timeLockPaneView=null,this._priceAxisViews=new Map,this._panePriceAxisViews=new Map,this._startMeasurePriceAxisViews=new Map,this._endMeasurePriceAxisViews=new Map,this._originX=NaN,this._originY=NaN,this._subscribed=!1,this._movedDelegate=new(U()),this._pointSelectedDelegate=new(U()),this._requestedPoint=null,this._paneForRequestedPoint=null,this._selectLineColor=null,this._volumeCalculator=null,this._model=e,this._options=Object.assign({},Pi,i||{}),this._linesShouldBeHidden=this._model.readOnly(),this._dataWindowView=new yi(e),this.setSelectionEnabled(!1);const s=e=>t=>t===(0,r.ensureNotNull)(this._measurePane.value()).defaultPriceScale()?e():null;this._currentPosPriceProvider=e=>{const t=(0,r.ensureNotNull)(this.pane);if(e===t.defaultPriceScale())return this.price;const i=(0,r.ensureNotNull)(t.defaultPriceScale().mainSource()).firstValue();if(null===i)return null;const s=t.defaultPriceScale().priceToCoordinate(this.price,i),n=(0,r.ensureNotNull)(e.mainSource()).firstValue();return null===n?null:e.coordinateToPrice(s,n)},this._startMeasurePriceProvider=s(()=>(0,r.ensureNotNull)(this._startMeasurePoint).price),this._endMeasurePriceProvider=s(()=>(0,r.ensureNotNull)(this._lastMeasurePoint()).price),this._properties=t;this._timeAxisView=new wi(e,()=>this.appliedIndex(),!1),this._startMeasureTimeAxisView=new wi(e,()=>(0,r.ensureNotNull)(this._startMeasurePoint).index,!0),this._endMeasureTimeAxisView=new wi(e,()=>(0,r.ensureNotNull)(this._lastMeasurePoint()).index,!0),e.readOnly()||lt.cursorTool.subscribe(e=>this.areLinesVisible="arrow"!==e,{callWithLast:!0})}destroy(){null!==this._volumeCalculator&&this._volumeCalculator.destroy(),this._measurePane.setValue(null)}moved(){return this._movedDelegate}originX(){return this._originX}originY(){return this._originY}saveOriginCoords(e,t){this._originX=e,this._originY=t}clearOriginCoords(){this._originX=NaN,this._originY=NaN}currentPoint(){return new n.Point(this.x,this.y)}model(){return this._model}appliedIndex(){return Number.isFinite(this.lockedIndex)?this.lockedIndex:this.index}startMeasurePoint(){return this._startMeasurePoint||null}endMeasurePoint(){return this._endMeasurePoint||null}measureVolume(){if(null===this._volumeCalculator)return NaN;const[e,t]=this.measurePoints();return void 0===t?NaN:this._volumeCalculator.volume(e.index,t.index)}measurePane(){return this._measurePane.readonly()}startMeasuring(e,t){this._startMeasurePoint=e,this._measurePane.setValue(t),t.containsMainSeries()&&((0,r.assert)(null===this._volumeCalculator), +this._volumeCalculator=new Ci.SeriesTimeRangeVolumeCalculator(this.model().mainSeries())),this._model.updatePane(t)}finishMeasure(e){this._endMeasurePoint=e}clearMeasure(){this._measurePane.setValue(null),delete this._startMeasurePoint,delete this._endMeasurePoint,delete this._lastValidMeasurePoint,this._model.lightUpdate(),null!==this._volumeCalculator&&(this._volumeCalculator.destroy(),this._volumeCalculator=null)}measurePoints(){const e=[(0,r.ensureNotNull)(this._startMeasurePoint)],t=this._lastMeasurePoint();return null!==t&&e.push(t),e}startSelection(e){this._selectionStartPoint=this.currentLogicalPoint(),this._selectionPane=e}clearSelection(){this._selectionStartPoint=null,this._selectionPane=null}selection(){return this._selectionStartPoint?{p1:this._selectionStartPoint,p2:this.currentLogicalPoint()}:null}currentLogicalPoint(){return{index:this.appliedIndex(),price:this.price}}selectPointMode(){return this._selectPointMode}lineColor(){return this._selectLineColor}cancelRequestSelectPoint(){this._selectPointMode.value()&&this._setSelectPointModeState(!1)}requestSelectPoint(e){(0,r.assert)(!this._selectPointMode.value(),"Point already requested");const{pointType:t,pane:i,lineColor:s=null}=e;i&&((0,r.assert)(-1!==this._model.panes().indexOf(i),"Chartmodel doesn't contains specified pane"),this._paneForRequestedPoint=i,this._model.panesCollectionChanged().subscribe(this,this._paneCollectionChanged)),this._selectLineColor=s,this._requestedPoint=t,this._setSelectPointModeState(!0)}onPointSelected(){return this._pointSelectedDelegate}trySelectCurrentPoint(){const e=(0,r.ensureNotNull)(this._requestedPoint);if(!this._model.mainSeries().bars().contains(this.index)&&"price"!==e)return;const t=(0,r.ensureNotNull)(this.pane);if(this._paneForRequestedPoint&&this._paneForRequestedPoint!==t)return;let i,s;if("price"===e||(i=this._model.timeScale().indexToTimePoint(this.index),null!==i)){if("time"!==e){const e=t.mainDataSource();if(null===e)return;const i=e.firstValue(),r=e.priceScale();if(null===i||null===r)return;s=r.coordinateToPrice(this.y,i)}this._setSelectPointModeState(!1),this._pointSelectedDelegate.fire({time:i,price:s},t)}}isOnHoveredChartWidget(){return this._isOnHoveredChartWidget}setOnHoveredChartWidget(e){this._isOnHoveredChartWidget=e}clearPosition(){this.visible=!1,this.index=NaN,this.price=NaN,this.x=NaN,this.y=NaN,this.pane=null,this.clearOriginCoords()}setPosition(e,t,i){return this._subscribed||(this._model.mainSeries().onRestarted().subscribe(this,this.clearMeasure),this._subscribed=!0),this.setLockedPosition(i),this.visible=!0,this._tryToUpdateViews(e,t,i)}setLinesShouldBeHidden(e){this._linesShouldBeHidden=e}linesShouldBeHidden(){return this._linesShouldBeHidden}handleContextMenuEvent(e){this._selectPointMode.value()&&this._setSelectPointModeState(!1)}properties(){return this._properties}priceAxisViews(e,t){const i=null===this._requestedPoint||"time"!==this._requestedPoint||!this._isOnHoveredChartWidget,s=[] +;return this.pane===e&&i&&s.push(this._createPriceAxisViewOnDemand(this._priceAxisViews,this._panePriceAxisViews,e,t,this._currentPosPriceProvider,Dt,!0)[0]),this._startMeasurePoint&&s.push(this._createPriceAxisViewOnDemand(this._startMeasurePriceAxisViews,null,e,t,this._startMeasurePriceProvider,Vt)[0]),this._lastMeasurePoint()&&s.push(this._createPriceAxisViewOnDemand(this._endMeasurePriceAxisViews,null,e,t,this._endMeasurePriceProvider,Vt)[0]),s}timeAxisViews(){const e=[],t=null===this._requestedPoint||"price"!==this._requestedPoint||!this._isOnHoveredChartWidget;return!this._linesShouldBeHidden&&(this.visible||(0,lt.lockTimeAxis)().value())&&t&&e.push(this._timeAxisView),this._startMeasurePoint&&e.push(this._startMeasureTimeAxisView),this._lastMeasurePoint()&&e.push(this._endMeasureTimeAxisView),e}paneViews(e){if(void 0===e)return null;const t=[new Gt(this,e)];if(e===this._selectionPane&&t.push(this._selectionView),e===this._measurePane.value()&&(null===this._measurePaneView&&(this._measurePaneView=new ui(this,e)),this._measurePaneView.update((0,O.dataSourceChangeEvent)(this.id())),t.push(this._measurePaneView)),fi.addPlusButtonProperty.value()){const i=e===this.pane,s=!gi.CheckMobile.any()||window.screen.width>=320,r=lt.tool.value(),n=(0,f.isLineToolName)(r),o=null!==this._model.lineBeingEdited()||null!==this._model.lineBeingCreated()||this._model.sourcesBeingMoved().length>0||null!==this._model.customSourceBeingMoved()||(0,lt.toolIsMeasure)(r);if(i&&this._isOnHoveredChartWidget&&!this._selectPointMode.value()&&s&&!n&&!o){const i=e.mainDataSource();if(null!==i){const s=i.priceScale();if(null!==s){const i=this._createPriceAxisViewOnDemand(this._priceAxisViews,this._panePriceAxisViews,e,s,this._currentPosPriceProvider,Dt,!0)[1];null!==i&&t.push(i)}}}}return(0,lt.lockTimeAxis)().value()&&(null===this._timeLockPaneView&&(this._timeLockPaneView=new mi(this,e)),t.push(this._timeLockPaneView)),t}dataWindowView(){return this._dataWindowView}updateAllViews(e){this._priceAxisViews.forEach(t=>{t.forEach(t=>t.update(e))}),this._panePriceAxisViews.forEach(t=>{t.forEach(t=>t.update(e))}),this._startMeasurePoint&&(this._startMeasurePriceAxisViews.forEach(t=>{t.forEach(t=>t.update(e))}),this._startMeasureTimeAxisView.update(e)),this._lastMeasurePoint()&&(this._endMeasurePriceAxisViews.forEach(t=>{t.forEach(t=>t.update(e))}),this._endMeasureTimeAxisView.update(e)),this._timeAxisView.update(e),this._selectionView.update(),this._dataWindowView.update()}setLockedPosition(e){delete this.lockedIndex,delete this.lockedX,e!==this._measurePane.value()&&(0,lt.lockTimeAxis)().value()&&(this.lockedIndex=this._model.timeScale().points().roughIndex(lt.lockTimeAxisTime.value()),null!==this.lockedIndex&&(this.lockedX=this._model.timeScale().indexToCoordinate(this.lockedIndex)))}isMenuEnabled(){return this._options.menuEnabled}isHoveredEnabled(){return fi.addPlusButtonProperty.value()}isHovered(){return this._model.hoveredSource()===this}pointToSelect(){return this._requestedPoint}paneForPointSelect(){return this._paneForRequestedPoint} +_lastMeasurePoint(){return this._endMeasurePoint?this._endMeasurePoint:(null!==this.pane&&this._measurePane.value()===this.pane&&(this._lastValidMeasurePoint={price:this._model.magnet().align(this.price,this.index,this.pane),index:this.index}),this._lastValidMeasurePoint||null)}_createPriceAxisViewOnDemand(e,t,i,s,n,o,a=!1){let l=e.get(i),c=null!==t?t.get(i):void 0;void 0===l&&(l=new Map,e.set(i,l),this._options.menuEnabled&&null!==t&&(c=new Map,t.set(i,c)),a&&i.onDestroyed().subscribe(this,()=>this._onPaneDestroyed(i)));let h=l.get(s);if(void 0===h){if(h=new o(this,s,n),l.set(s,h),void 0!==c){const e=new Ft(h,this,s,this._model,this._options);c.set(s,e)}a&&s.lastSourceRemoved().subscribe(this,()=>this._onPriceScaleCleared(s))}let d=null;return void 0!==c&&(d=(0,r.ensureDefined)(c.get(s))),[h,d]}_onPaneDestroyed(e){e.onDestroyed().unsubscribeAll(this),this._priceAxisViews.delete(e),this._panePriceAxisViews.delete(e),this._startMeasurePriceAxisViews.delete(e),this._endMeasurePriceAxisViews.delete(e)}_onPriceScaleCleared(e){e.lastSourceRemoved().unsubscribeAll(this),this._priceAxisViews.forEach(t=>t.delete(e)),this._panePriceAxisViews.forEach(t=>t.delete(e)),this._startMeasurePriceAxisViews.forEach(t=>t.delete(e)),this._endMeasurePriceAxisViews.forEach(t=>t.delete(e))}_tryToUpdateViews(e,t,i){return!!this._tryToUpdateData(e,t,i)&&(this.updateAllViews((0,O.dataSourceChangeEvent)(this.id())),this._movedDelegate.fire({index:this.index,price:this.price}),!0)}_tryToUpdateData(e,t,i){const s=this.x,n=this.y,o=this.price,a=this.index,l=this.pane,c=this._priceScaleByPane(i);if(this.index=e,this.x=isNaN(e)?NaN:this._model.timeScale().indexToCoordinate(e),null!==c&&null!==i){this.pane=i,this.price=t;const e=(0,r.ensureNotNull)(i.mainDataSource()).firstValue();this.y=null===e?NaN:c.priceToCoordinate(t,e)}else this.pane=null,this.price=NaN,this.y=NaN;return s!==this.x||n!==this.y||a!==this.index||o!==this.price||l!==this.pane}_priceScaleByPane(e){return e&&!e.defaultPriceScale().isEmpty()?e.defaultPriceScale():null}_setSelectPointModeState(e){e||(this._requestedPoint=null,this._selectLineColor=null,this._paneForRequestedPoint&&(this._paneForRequestedPoint=null,this._model.panesCollectionChanged().unsubscribe(this,this._paneCollectionChanged))),lt.isPointSelectedNow.setValue(e),this._selectPointMode.setValue(e),this._model.lightUpdate()}_paneCollectionChanged(e){const t=this._paneForRequestedPoint;null!==t&&-1===e.indexOf(t)&&this.cancelRequestSelectPoint()}}var xi=i(56972),Ii=i(40236),Mi=i(67396),Li=i(52418);const Ai=(0,$.getLogger)("Chart.ChartModel");function Ei(e,t){const i=e.indexOf(t);return-1!==i&&(e.splice(i,1),!0)}function ki(e){var t,i;for(let s=e.length;s--;){const r=e[s].dataSources();for(let e=r.length;e--;)null===(t=r[e].dataWindowView())||void 0===t||t.update();const n=e[s].priceDataSources();for(let e=n.length;e--;)null===(i=n[e].legendView())||void 0===i||i.update()}}const Di={isSnapshot:!1,readOnly:!1,watermarkEnabled:!0,shiftVisibleRangeOnNewBar:!0,currencyConversionEnabled:!1,unitConversionEnabled:!1, +countdownEnabled:!0,lastPriceAnimationEnabled:!0,onWidget:!1,hideIdeas:!1};class Vi{constructor(e,t,i,r,n,o,a,c,h,d){this._onRearrangePanes=new(U()),this._lineToolsGroupModel=new tt,this._sourcesBeingMoved=[],this._activeItemBeingMoved=null,this._lineBeingEdited=null,this._linePointBeingEdited=null,this._linePointBeingChanged=null,this._customSourceBeingMovedHitTestData=null,this._customSourceBeingMoved=null,this._dataSourceCollectionChanged=new(U()),this._sourceProperitesChanged=new(U()),this._sourceZOrderChanged=new(U()),this._symbolSourceResolved=new(U()),this._symbolSourceResolvingActive=new(G())(!1),this._adjustForDividendsAvailability=new(G())(0),this._adjustForDividendsEnabled=new(G())(!1),this._sessions=null,this._currentTool="",this._lineBeingCreated=null,this._paneBeingCreatedLineOn=null,this._lineCancelled=new(U()),this._phantomSourceContainer=new gt(this),this._destroyed=!1,this._isSettingsExternalPosition=!1,this._isTimeScrolling=!1,this._magnet=new bt,this._scrollingState=null,this._modelIntervals=[],this._rendererOptionsProvider=new L(this),this._cachedStudiesMaxOffset=0,this._panes=[],this._tagsChanged=new(U()),this._strategySources=[],this._strategySourcesChange=new(U()),this._activeStrategySource=new(G())(null),this._paneCollapsingAvailable=new(G())(!1),this._panesCollectionChanged=new(U()),this._scrollEnabled=B.enabled("chart_scroll"),this._zoomEnabled=B.enabled("chart_zoom"),this._isScalesResetAvailableChanged=new(U()),this._isScalesResetAvailable=!1,this._esdWatcher=null,this._alertsWatcher=null,this._hoveredSource=null,this._hoveredSourceChanged=new(U()),this._lastHoveredHittestData=null,this._lastSelectedHittestData=null,this._topmostCustomSources=[],this._fgCustomSources=[],this._bgCustomSources=[],this._allCustomSources=[],this._customSourcesMap=new Map,this._multiPaneSources=[],this._showLegendProperty=new(x()),this._id=(0,X.guid)(),this._chartSaveTime=null,this._availableCurrenciesList=null,this._availableCurrencies=new pt([]),this._availableUnitsObject=null,this._availableUnits=new _t({}),this._shouldBeSavedEvenIfHidden=!1,this._watchedThemeSpawn=l.watchedTheme.spawn(),this._gradientColorsCache=null,this._recalcVRStudiesParams={},this._recalcColorStudiesParams={},this._recalcVisibleRangeStudiesImplDebounced=(0,s.default)(this._recalcVisibleRangeStudiesImpl.bind(this,this._recalcVRStudiesParams),500),this._recalcColorStudiesImplDebounced=(0,s.default)(this._recalcColorStudiesImpl.bind(this,this._recalcColorStudiesParams),250),this._width=0,this._resetScales=new(U()),this._chartThemeLoaded=new(U()),this._selection=new S,this._selectedSourceChanged=new(U()),this._symbolSourceCollectionChanged=new(U()),this._gridSource=new Mt,this._syncPointCache=new Map,this._lastAppliedTimeRange=null,this._clearSelection=()=>{this._lastSelectedHittestData=null,this._selection.clear()},this._removeSourceFromSelection=e=>{this._selection.remove(e)},this._addSourceToSelection=(e,t)=>{const i=this._selection.isSelected(e) +;i&&this._lastSelectedHittestData===t||e&&!e.isSelectionEnabled()||(this._lastSelectedHittestData=t||null,i||this._selection.add(e))},this._recalcSymbolResolvingActive=()=>{for(const e of this._panes)if(e.symbolSourceResolvingActive().value())return void this._symbolSourceResolvingActive.setValue(!0);this._symbolSourceResolvingActive.setValue(!1)},this._recalcAdjustForDividendsAvailibility=()=>{var e,t,i,s;if(this._symbolSourceResolvingActive.value())return void this._adjustForDividendsAvailability.setValue(0);const r=this.mainSeries();switch(null!==(t=null===(e=r.symbolInfo())||void 0===e?void 0:e.allowed_adjustment)&&void 0!==t?t:"none"){case"dividends":return void this._adjustForDividendsAvailability.setValue(2);case"splits":return void this._adjustForDividendsAvailability.setValue(1);case"any":return void this._adjustForDividendsAvailability.setValue(3)}for(const e of this.symbolSources().filter(le.isActingAsSymbolSource)){if(e.symbolHibernated().value()||e===r)continue;if("any"===(null!==(s=null===(i=e.symbolInfo())||void 0===i?void 0:i.allowed_adjustment)&&void 0!==s?s:"none"))return void this._adjustForDividendsAvailability.setValue(3)}this._adjustForDividendsAvailability.setValue(0)},this._recalcAdjustForDividendsEnabled=()=>{switch(this._adjustForDividendsAvailability.value()){case 2:return void this._adjustForDividendsEnabled.setValue(!0);case 0:case 1:return void this._adjustForDividendsEnabled.setValue(!1)}this._adjustForDividendsEnabled.setValue(this.mainSeries().properties().childs().dividendsAdjustment.value())},this._recalcPaneCollapsingAvailable=e=>{let t=this._panes.filter(e=>!e.collapsed().value()).length;0===t&&e&&this._panes.length>0&&(this._panes[0].collapsed().setValue(!1),t=1),this._paneCollapsingAvailable.setValue(t>1)},this._chartApi=e,this._invalidateHandler=t,this._undoModel=o,this._properties=i,this._options=(0,_e.merge)((0,_e.clone)(Di),c),this._collapsedWV=h,this._isAutoSaveEnabled=d,this._studiesMetaInfoRepository=n,this._readOnly=this._options.readOnly,this._isSnapshot=this._options.isSnapshot,this._chartSaveTime=(new Date).valueOf(),this._backgroundColor=new(G())(this._getBackgroundColor()),this._backgroundTopColor=new(G())(this._getBackgroundColor(!0)),this._properties.childs().paneProperties.childs().background.subscribe(this,this._updateBackgroundColor),this._properties.childs().paneProperties.childs().backgroundType.subscribe(this,this._updateBackgroundColor),this._properties.childs().paneProperties.childs().backgroundGradientStartColor.subscribe(this,this._updateBackgroundColor),this._properties.childs().paneProperties.childs().backgroundGradientEndColor.subscribe(this,this._updateBackgroundColor),this._backgroundColor.subscribe(this.recalcColorStudies.bind(this,!1)),this._backgroundTopColor.subscribe(this.recalcColorStudies.bind(this,!1)),this._watchedThemeSpawn.subscribe(this._updateBackgroundColor.bind(this)),this._symbolSourceResolvingActive.subscribe(this._recalcAdjustForDividendsAvailibility), +this.setStudiesMetaData(this._studiesMetaInfoRepository.getInternalMetaInfoArray(),this._studiesMetaInfoRepository.getMigrations()),(0,lt.init)();const u=this._readOnly?new(x())((0,D.defaults)("chartproperties.paneProperties.crossHairProperties")):this._properties.childs().paneProperties.childs().crossHairProperties;this.m_crossHairSource=new Ti(this,u,this._options.crossHair),this.m_crossHairSource.selectPointMode().subscribe(e=>{if(e&&this.lineBeingCreated()){const e=lt.tool.value();this.cancelCreatingLine(),lt.tool.setValue(e)}}),this._tagsChanged=new(U());const p=new P.DefaultProperty("chartproperties.mainSeriesProperties");p.addExclusion("minTick"),p.addExclusion("priceAxisProperties.lockScale"),p.addExclusion("priceAxisProperties.percentage"),p.addExclusion("priceAxisProperties.indexedTo100"),p.addExclusion("priceAxisProperties.isInverted"),p.addExclusion("priceAxisProperties.log"),p.addExclusion("priceAxisProperties.logDisabled"),p.addExclusion("priceAxisProperties.percentageDisabled"),p.addExclusion("priceAxisProperties.autoScaleDisabled"),p.merge(i.childs().mainSeriesProperties.state()),this._timeScale=new $e(this,this._options.timeScale);const _={countdownEnabled:this._options.countdownEnabled,lastPriceAnimationEnabled:this._options.lastPriceAnimationEnabled};this.m_mainSeries=new xi.Series(this,p,_,r),this.m_mainSeries.onStyleChanged().subscribe(this._timeScale,this._timeScale.invalidateVisibleBars);const m=()=>this.fullUpdate();this.m_mainSeries.properties().childs().showCountdown.subscribe(this,()=>{this.m_mainSeries.updateAllViews((0,O.dataSourceChangeEvent)(this.m_mainSeries.id())),m()}),(0,Y.currencyUnitVisibilityProperty)().subscribe(this,m),this._timeScale.visibleBarsStrictRangeChanged().subscribe(this.m_mainSeries,this.m_mainSeries.clearHighLowPriceCache),this._timeScale.visibleBarsStrictRangeChanged().subscribe(this.m_mainSeries,this.m_mainSeries.clearAveragePriceCache),this.createPane(void 0,{axisProperties:p.childs().priceAxisProperties.state(["autoScale"])}),this._adjustForDividendsAvailability.subscribe(this._recalcAdjustForDividendsEnabled),this.mainSeries().properties().childs().dividendsAdjustment.subscribe(this,this._recalcAdjustForDividendsEnabled),this._recalcAdjustForDividendsEnabled(),this._boundUpdateStudiesMaxOffset=this._updateStudiesMaxOffset.bind(this),this.mainSeries().dataEvents().seriesTimeFrame().subscribe(this,(e,t,i,s)=>{if(null!==this._lastAppliedTimeRange&&null!==i&&s&&(0,vt.areEqualTimeFrames)(this._lastAppliedTimeRange.range,i)){const e=this.appliedTimeFrame().value();null!==e&&!this._lastAppliedTimeRange.actual&&(0,vt.areEqualTimeFrames)(this._lastAppliedTimeRange.range,e.val)&&this.appliedTimeFrame().setValue(null),this._lastAppliedTimeRange=null}})}setStudiesMetaData(e,t){this._studiesMetaData=e,this._studyVersioning=new(b())(this._studiesMetaData,t)}restart(){this._chartApi.switchTimezone(this.timezone()),this._timeScale.reset(),this.m_mainSeries.restart();for(const e of this.dataSources())e.restart&&e!==this.m_mainSeries&&e.restart();this.sessions().restart()} +version(){return 3}collapsed(){return this._collapsedWV}chartSaveTime(){return this._chartSaveTime}setChartSaveTime(e){this._chartSaveTime=e}destroy(){this._phantomSourceContainer.destroy(),this._hoveredSourceChanged.destroy(),null!==this._watermarkSource&&(this._watermarkSource.destroy(),this._watermarkSource=null),Array.from(this._customSourcesMap.keys()).forEach(this._removeCustomSource,this),(0,r.assert)(0===this._topmostCustomSources.length),(0,r.assert)(0===this._fgCustomSources.length),(0,r.assert)(0===this._bgCustomSources.length),(0,r.assert)(0===this._allCustomSources.length),(0,r.assert)(0===this._customSourcesMap.size),null!==this._esdWatcher&&(this._esdWatcher.destroy(),this._esdWatcher=null),null!==this._alertsWatcher&&(this._alertsWatcher.destroy(),this._alertsWatcher=null),this._properties.childs().paneProperties.childs().background.unsubscribeAll(this),this._properties.childs().paneProperties.childs().backgroundType.unsubscribeAll(this),this._properties.childs().paneProperties.childs().backgroundGradientEndColor.unsubscribeAll(this),this._properties.childs().paneProperties.childs().backgroundGradientStartColor.unsubscribeAll(this),this._watchedThemeSpawn.destroy(),this._lastHoveredHittestData=null,this._lastSelectedHittestData=null,(0,Y.currencyUnitVisibilityProperty)().unsubscribeAll(this),this._destroyed=!0}undoModel(){return this._undoModel}onData(e){switch(e.method){case"timescale_update":{const t=e.params;this._updateTimeScale({index:t.index,zoffset:t.zoffset,values:t.changes,indexDiffs:t.index_diff,baseIndex:t.baseIndex,marks:t.marks,clearFlag:t.clear});break}case"timescale_completed":{const t=Boolean(e.params[0]);this._timeScale.onTimeScaleCompleted(t);break}}}addStrategySource(e,t){1!==t&&-1===this._strategySources.indexOf(e)&&(this._strategySources.push(e),this._strategySourcesChange.fire(t),this.setActiveStrategySource(e))}removeStrategySource(e,t){if(1===t)return;const i=this._strategySources.indexOf(e);if(-1!==i){if(this._strategySources.splice(i,1)[0]===this._activeStrategySource.value()&&this.unsetActiveStrategySource(),this._strategySources.length>0){const e=this._strategySources[this._strategySources.length-1];this.setActiveStrategySource(e)}this._strategySourcesChange.fire(t)}}setActiveStrategySource(e){-1!==this._strategySources.indexOf(e)&&this._activeStrategySource.setValue(e)}unsetActiveStrategySource(){this._activeStrategySource.setValue(null)}activeStrategySource(){return this._activeStrategySource}strategySources(){return this._strategySources}strategySourcesChange(){return this._strategySourcesChange}setScrollEnabled(e){this._scrollEnabled=e}scrollEnabled(){return this._scrollEnabled}setZoomEnabled(e){this._zoomEnabled=e}zoomEnabled(){return this._zoomEnabled}zoomToViewport(e,t,i,s,r){this.setTimeViewport(e,t);let n=Math.min(i,s),o=Math.max(i,s);const a=r.defaultPriceScale();a.isPercentage()||a.setMode({autoScale:!1}),a.isLog()&&(n=a.priceToLogical(n),o=a.priceToLogical(o)),a.setPriceRange(new ae.PriceRange(n,o)),this.recalculateAllPanes((0,O.viewportChangeEvent)()), +this.invalidate(this._paneInvalidationMask(r,q.InvalidationLevel.Light)),this._setScalesResetAvailable(!0)}setTimeViewport(e,t){const i=this.appliedTimeFrame().value();null!==this._lastAppliedTimeRange&&null!==i&&(0,vt.areEqualTimeFrames)(this._lastAppliedTimeRange.range,i.val)&&!this._lastAppliedTimeRange.actual||(this.timeScale().zoomToBarsRange(e,t),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.recalcVisibleRangeStudies(),this.lightUpdate())}onTagsChanged(){return this._tagsChanged}canZoomIn(){return this._timeScale.canZoomIn()&&this._zoomEnabled}canZoomOut(){return this._timeScale.canZoomOut()&&this._zoomEnabled}onPaneTagsChanged(){this._tagsChanged.fire()}panesCollectionChanged(){return this._panesCollectionChanged}dataSourceCollectionChanged(){return this._dataSourceCollectionChanged}symbolSourceCollectionChanged(){return this._symbolSourceCollectionChanged}symbolSourceResolved(){return this._symbolSourceResolved}symbolSourceResolvingActive(){return this._symbolSourceResolvingActive}adjustForDividendsAvailability(){return this._adjustForDividendsAvailability}adjustForDividendsEnabled(){return this._adjustForDividendsEnabled}paneCollapsingAvailable(){return this._paneCollapsingAvailable}sourcePropertiesChanged(){return this._sourceProperitesChanged}sourceZOrderChanged(){return this._sourceZOrderChanged}updateCrosshairPositionByOriginCoords(){const e=this.crossHairSource(),t=e.pane;let i=e.originX(),s=e.originY();if(Number.isFinite(i)||(i=e.x,s=e.y),null!==t&&Number.isFinite(i)&&Number.isFinite(s)){const n=this._timeScale.coordinateToVisibleIndex(i);let o=NaN;const a=t.defaultPriceScale();if(!a.isEmpty()){const e=(0,r.ensureNotNull)(t.mainDataSource()).firstValue();null!==e&&(o=a.coordinateToPrice(s,(0,r.ensureNotNull)(e)))}this.crossHairSource().setPosition(n,o,t)&&e.isOnHoveredChartWidget()&&this._syncCrosshair()}}zoomTime(e,t,i){if(!this._zoomEnabled)return;const s=this.timeScale();if(s.isEmpty()||0===t)return;const r=s.width();e=Math.max(1,Math.min(e,r-2)),s.zoom(e,t,i),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.lightUpdate(),this.recalcVisibleRangeStudies(),this._setScalesResetAvailable(!0)}linePointBeingEdited(){return this._linePointBeingEdited}activeItemBeingMoved(){return this._activeItemBeingMoved}linePointBeingChanged(){return this._linePointBeingChanged}updateAllPaneViews(e){for(const t of this._panes)t.updateAllViews(e);for(const t of this.barsMarksSources())t.updateAllViews(e)}dataSources(){const e=[this.crossHairSource()];for(const t of this._panes)for(const i of t.dataSources())e.push(i);return e}priceDataSources(){const e=[];for(const t of this._panes)for(const i of t.priceDataSources())e.push(i);return e}symbolSources(){const e=[];for(const t of this._panes)for(const i of t.symbolSources())e.push(i);return e}selection(){return this._selection}selectionMacro(e){const t=this.selection().allSources();e({removeSourceFromSelection:this._removeSourceFromSelection,addSourceToSelection:this._addSourceToSelection,clearSelection:this._clearSelection, +selection:this.selection.bind(this)});const i=(0,g.subtract)(t,this.selection().allSources()),s=(0,g.subtract)(this.selection().allSources(),t);s.concat(t).forEach(e=>e.updateAllViews((0,O.selectionChangeEvent)())),i.forEach(e=>{const t=(0,f.isLineTool)(e)&&e.hasAlert.value()&&e.getAlertSync();t&&t.set("selected",!1)}),s.forEach(e=>{const t=(0,f.isLineTool)(e)&&e.hasAlert&&e.hasAlert.value()&&e.getAlertSync();t&&t.set("selected",!0)}),this.lightUpdate(),(i.length>0||s.length>0)&&this._selectedSourceChanged.fire()}onSelectedSourceChanged(){return this._selectedSourceChanged}checkLineToolSelection(){const e=this.selection().allSources();this._selection.checkLineToolSelection(),e.length!==this.selection().allSources().length&&this._selectedSourceChanged.fire()}lineToolsGroupModel(){return this._lineToolsGroupModel}restoreLineToolsGroups(e){this._lineToolsGroupModel=tt.fromState(this,e)}realignLineTools(e){for(const t of this._panes)(void 0===e||t.hasDataSource(e))&&t.realignLineTools(e)&&this._dataSourceCollectionChanged.fire(t)}isSnapshot(){return this._isSnapshot}onWidget(){return this._options.onWidget}hideIdeas(){return this._options.hideIdeas}updateSource(e){const t=this._invalidationMaskForSource(e);null!==t&&this.invalidate(t)}updateSourcePriceScale(e){const t=this._invalidationMaskForSourcePriceScale(e);null!==t&&this.invalidate(t)}updatePane(e){this.invalidate(this._paneInvalidationMask(e))}replaceStudyStub(e,t){const i=this.paneForSource(e);if(null===i)return!1;const s=e.priceScale(),r=e.zorder(),n=e.ownerSource();return this.paneForSource(e)===i?i.replaceSource(e,t,s):(i.insertDataSource(t,s,r),this.removeSource(e)),t.setOwnerSource(n),this.dataSources().forEach(i=>{i.ownerSource()===e&&i.setOwnerSource(t)}),t.start(),this.recalculatePane(i,(0,O.dataSourceChangeEvent)(t.id())),this.fullUpdate(),!0}insertStudyStub(e){const t=this.mainSeries(),i=(0,r.ensureNotNull)(this.paneForSource(t)),s=new w.StudyStub(this,null,e),n=i.createPriceScaleAtPosition("overlay");return i.addDataSource(s,n,!1),this.recalculatePane(i,(0,O.dataSourceChangeEvent)(s.id())),this.fullUpdate(),s}removeStudyStub(e){const t=this.dataSourceForId(e);return null===t?(Ai.logNormal("StudyStub id="+e+" is not found in chart model"),!1):(this.removeSource(t),!0)}setHoveredSource(e,t=null){const i=this._hoveredSource!==e;if(!i&&this._lastHoveredHittestData===t)return;this._lastHoveredHittestData=t;let s=null;if(this._hoveredSource){this._hoveredSource.updateAllViews((0,O.selectionChangeEvent)()),s=new q.InvalidationMask(q.InvalidationLevel.Cursor);const e=this._invalidationMaskForSource(this._hoveredSource,q.InvalidationLevel.Light);null!==e&&s.merge(e)}if(this._hoveredSource=e,e){e.updateAllViews((0,O.selectionChangeEvent)()),s||(s=new q.InvalidationMask(q.InvalidationLevel.Cursor));const t=this._invalidationMaskForSource(e,q.InvalidationLevel.Light);null!==t&&s.merge(t)}s&&this.invalidate(s),i&&this._hoveredSourceChanged.fire(e)}properties(){return this._properties}disconnect(){this.sessions().stop() +;for(const e of this.dataSources())e.disconnect&&e.disconnect();this._timeScale.disconnect()}gridSource(){return this._gridSource}hoveredSource(){return this._hoveredSource}hoveredSourceChanged(){return this._hoveredSourceChanged}lastHittestData(){return this._lastHoveredHittestData}lastSelectedHittestData(){return this._lastSelectedHittestData}syncTimeWithModel(e,t){const i=this.mainSeries().syncModel();if(null===i)return;const s=1e3*this.createSyncPoint(e,i.syncSourceTarget()).sourceTimeToTargetTime(t/1e3),r=(0,it.get_timezone)(this.timezone());let n=(0,it.utc_to_cal)(r,s);this.mainSeries().isDWM()&&(n=i.getSession().spec.correctTradingDay(n),(0,it.set_hms)(n,0,0,0,0,(0,it.get_timezone)("Etc/UTC"))),this._gotoTimeImpl(n.getTime(),{centerIfVisible:!1})}gotoTime(e){return this._gotoTimeImpl(e,{centerIfVisible:!0})}recalculatePane(e,t){null==e||e.recalculate(t)}recalculateAllPanes(e){this._panes.forEach(t=>t.recalculate(e)),this.updateAllPaneViews(e),this.crossHairSource().updateAllViews(e)}gotoTimeRange(e,t){const i=this.timeScale(),s=i.tickMarks(),n=this.mainSeries();if(void 0===s.minIndex)return;let o=e,a=t;const l=n.symbolInfo();if(null!==l){let i=this.properties().childs().timezone.value();"exchange"===i&&(i=l.timezone);const s=(0,it.get_timezone)(i),r=(0,it.utc_to_cal)(s,e),c=(0,it.utc_to_cal)(s,t);if(n.isDWM()){const e=(0,it.get_timezone)("Etc/UTC");(0,it.set_hms)(r,0,0,0,0,e),(0,it.set_hms)(c,0,0,0,0,e)}o=r.getTime(),a=c.getTime()}const c=(0,r.ensureDefined)(s.maxIndex),h=(0,r.ensureNotNull)(s.indexToTime((0,r.ensureDefined)(s.minIndex))).valueOf();if(h-o<=0&&h-a<=0){const e=(e,t)=>e(0,r.ensureNotNull)(s.indexToTime(e)).valueOf(),n=(0,g.lowerboundExt)(t,o,e,s.nearestIndex(o),c),l=(0,g.lowerboundExt)(t,a,e,s.nearestIndex(a),c);if(null!==this._lastAppliedTimeRange&&(this._lastAppliedTimeRange.actual=!1),n!==l)i.zoomToBarsRange(n,l),this.lightUpdate();else{this.startScrollTime(0);const e=((0,r.ensureNotNull)(i.logicalRange()).left()-n+1)*i.barSpacing();this.scrollTimeTo(e),this.endScrollTime()}}else{const i={type:"time-range",from:e/1e3,to:t/1e3};this._lastAppliedTimeRange={range:i,actual:!0},n.loadDataTo(i)}}paneForSource(e){if(!(0,m.isDataSource)(e))return Array.from(this._customSourcesMap.values()).includes(e)?this.paneForSource(this.mainSeries()):null;for(let t=this._panes.length-1;t>=0;t--)if(this._panes[t].hasDataSource(e))return this._panes[t];return e instanceof ht.BarsMarksContainer?this.paneForSource(this.mainSeries()):null}mainPane(){for(const e of this._panes)if(e.isMainPane())return e;throw new Error("Main pane is not found")}lastPane(){return this._panes[this._panes.length-1]}removeSource(e,t){this.selectionMacro(t=>t.removeSourceFromSelection(e)),this._hoveredSource===e&&(this._hoveredSource=null,this._lastHoveredHittestData=null),this._sourcesBeingMoved.includes(e)&&(this._sourcesBeingMoved=this._sourcesBeingMoved.filter(t=>t!==e),this._sourcesBeingMoved.length||(this._activeItemBeingMoved=null)),e===this._lineBeingEdited&&(this._lineBeingEdited=null,lt.isToolEditingNow.setValue(!1)), +e===this._lineBeingCreated&&(this._lineBeingCreated=null,lt.isToolCreatingNow.setValue(!1)),e.stop&&e.stop();const i=this.detachSource(e),s=this.mainSeries().priceScale();return(0,H.isStudy)(e)&&(0,le.isActingAsSymbolSource)(e)&&e.priceScale()===s&&s.isPercentage()&&1===s.seriesLikeSources().filter(le.isActingAsSymbolSource).length&&s.setMode({percentage:!1}),this.fullUpdate(),this._invalidateBarColorerCaches(),(0,H.isStudy)(e)&&((0,u.emit)("study_event",e.id(),"remove"),e.isChildStudy()&&e.parentSource().unsetChild(e),e.maxOffset().unsubscribe(this._boundUpdateStudiesMaxOffset)),e.destroy&&e.destroy(),(0,f.isLineTool)(e)&&(e.removeAlert(),(0,u.emit)("drawing_event",e.id(),"remove")),i}allStudies(e){const t=e?e=>(0,H.isStudy)(e)&&!0:H.isStudy;return this._getAllSources(t)}findNonOverlayStudyWithGroupingKey(e,t){const i=void 0!==t?[t]:this._panes;for(const t of i){const i=t.dataSources().find(i=>(0,H.isStudy)(i)&&i.metaInfo().groupingKey===e&&!t.isOverlay(i));if(void 0!==i)return{pane:t,study:i}}return null}movePaneUp(e){this.movePane(e,e-1)}movePaneDown(e){this.movePane(e,e+1)}movePane(e,t){const i=this._panes[e];this._panes.splice(e,1),this._panes.splice(t,0,i),this._panesCollectionChanged.fire(this._panes),this._onRearrangePanes.fire(),this.invalidate(q.InvalidationMask.panesOrder())}backgroundColor(){return this._backgroundColor}backgroundTopColor(){return this._backgroundTopColor}backgroundColorAtYPercentFromTop(e){const t=this.backgroundColor().value(),i=this.backgroundTopColor().value();if(t===i)return t;if(e=Math.max(0,Math.min(100,Math.round(100*e))),null===this._gradientColorsCache||this._gradientColorsCache.topColor!==i||this._gradientColorsCache.bottomColor!==t)this._gradientColorsCache={topColor:i,bottomColor:t,colors:new Map};else{const t=this._gradientColorsCache.colors.get(e);if(void 0!==t)return t}const s=(0,ct.gradientColorAtPercent)(i,t,e/100);return this._gradientColorsCache.colors.set(e,s),s}backgroundCounterColor(){const e=this.backgroundColor().value();if(void 0===this._lastBackgroundColor||void 0===this._lastOriginalColor||e!==this._lastBackgroundColor){const t=(0,o.rgbToBlackWhiteString)((0,o.parseRgb)(e),150);this._lastBackgroundColor=e,this._lastOriginalColor="black"===t?"white":"black"}return this._lastOriginalColor}isDark(){return"white"===this.backgroundCounterColor()}defaultResolutions(){return this.chartApi().defaultResolutions()}availableCurrencies(){const e=this._getAvailableCurrencies();return e.length!==this._availableCurrencies.size()&&(this._availableCurrencies=new pt(e)),this._availableCurrencies}currencyConversionEnabled(){return this._options.currencyConversionEnabled}availableUnits(){const e=this._getAvailableUnits();return this._availableUnits.unitsChanged(e)&&(this._availableUnits=new _t(e)),this._availableUnits}unitConversionEnabled(){return this._options.unitConversionEnabled}resetDeferredStudies(){ve.instance(this).reset()}isJustClonedChart(){return this._undoModel.isJustClonedChart()}studyTemplate(e,t,i){const s={panes:[],version:this.version()} +;for(const e of this.panes())s.panes.push(e.state(!0,!1,!0));const r=this.mainSeries();return e&&(s.symbol=r.symbol(),this.currencyConversionEnabled()&&i&&(s.currency=r.currency()),this.unitConversionEnabled()&&i&&(s.unit=r.unit())),t&&(s.interval=r.interval()),s}restoreLineToolState(e,t,i){e.restorePoints(t.points,t.indexes||[]),e.properties().merge(t.state),e.restoreData&&e.restoreData(t),e.linkKey().setValue(t.linkKey||null),e.createServerPoints(),this.fullUpdate();const s=e.linkKey().value();null!==s&&i&&(0,lt.restoreLineToolState)({model:this,linkKey:s,state:t})}preferences(){return(0,Mi.preferencesByWhiteList)(this,this.mainSeries())}restoreTheme(e,t,i){e.mainSourceProperties.hollowCandleStyle||(e.mainSourceProperties.hollowCandleStyle=e.mainSourceProperties.candleStyle),this._undoModel.chartLoadTheme(e,t,i)}onResetScales(){return this._resetScales}startMovingSources(e,t,i,s,n,o){this._sourcesBeingMoved=e,this._activeItemBeingMoved=i;let a=!1;if(this._sourcesBeingMoved.forEach(e=>{!a&&(0,H.isStudy)(e)&&(a=!0);const l=(0,r.ensureNotNull)(this.paneForSource(e)),c=(0,f.isLineTool)(e),h=c&&e.linkKey().value();if(!1!==h&&null!==h&&s.has(h)&&c&&e.isFixed()){const t=(0,r.ensureDefined)(s.get(h)),a={screen:this._percentPositionToPoint(t,l)};e.startMoving(a,i,n,o)}else e.startMoving(t,i,n,o);const d=this._paneInvalidationMask(l,q.InvalidationLevel.Light);this.invalidate(d)}),!o){const s=e.filter(f.isLineTool).filter(e=>e.linkKey().value()&&e.isSynchronizable()).map(e=>e.linkKey().value());if(s.length&&t.logical){const o=this.externalTimeStamp(t.logical.index),a={linkKeys:s,model:this,symbol:this.mainSeries().symbol(),point:{price:t.logical.price,timeStamp:o},activeItem:null!==i?i:void 0,envState:n,pointPositionPercents:new Map};e.forEach(e=>{if((0,f.isLineTool)(e)){const i=e.linkKey().value();if(i&&e.isSynchronizable()&&e.isFixed()){const s=(0,r.ensureNotNull)(this.paneForSource(e));a.pointPositionPercents.set(i,this._pointToPercentPosition((0,r.ensureDefined)(t.screen),s))}}}),(0,lt.startMovingLineTool)(a)}}lt.isToolMovingNow.setValue(!0),a&<.isStudyEditingNow.setValue(!0)}moveSources(e,t,i,s){if(this._sourcesBeingMoved.filter(e=>!e.isLocked||!e.isLocked()).forEach(n=>{const o=(0,f.isLineTool)(n)?n.linkKey().value():null;if(null!==o&&t.has(o)){const e=(0,r.ensureNotNull)(this.paneForSource(n)),a=(0,r.ensureDefined)(t.get(o)),l={screen:this._percentPositionToPoint(a,e)};n.move(l,this._activeItemBeingMoved,i,s)}else n.move(e,this._activeItemBeingMoved,i,s)}),this.lightUpdate(),!s&&e.logical){const t=this._sourcesBeingMoved.filter(f.isLineTool).filter(e=>e.isSynchronizable()&&!!e.linkKey().value()).map(e=>e.linkKey().value()),s=this.externalTimeStamp(e.logical.index),n={linkKeys:t,model:this,point:{price:e.logical.price,timeStamp:s},envState:i,pointPositionPercents:new Map};this._sourcesBeingMoved.filter(f.isLineTool).forEach(t=>{if(t.linkKey().value()&&t.isSynchronizable()&&t.isFixed()){const i=(0,r.ensureNotNull)(this.paneForSource(t));n.pointPositionPercents.set(t.linkKey().value(),this._pointToPercentPosition((0, +r.ensureDefined)(e.screen),i))}}),(0,lt.moveLineTool)(n)}}endMovingSources(e,t,i){const s=this._sourcesBeingMoved.map(s=>{const n=(0,r.ensureNotNull)(this.paneForSource(s)),o=s.endMoving(e,t,i),a=this._paneInvalidationMask(n,q.InvalidationLevel.Light);return a.invalidateAll(q.InvalidationLevel.Light),this.invalidate(a),o}),n=this._sourcesBeingMoved.filter(f.isLineTool).filter(e=>e.isSynchronizable()&&!!e.linkKey().value()).map(e=>e.linkKey().value()),o=this._sourcesBeingMoved.filter(f.isLineTool).filter(e=>e.isSynchronizable()&&!!e.linkKey).map(e=>{const t={points:e.normalizedPoints(),interval:this.mainSeries().interval()};return e.isFixed()&&(t.pointPositionPercents=e.calcPositionPercents()),t});n.length&&(0,lt.finishMovingLineTool)({linkKeys:n,model:this,finalStates:o,changes:s}),this._sourcesBeingMoved=[],this._activeItemBeingMoved=null,lt.isToolMovingNow.setValue(!1),lt.isStudyEditingNow.setValue(!1)}sourcesBeingMoved(){return this._sourcesBeingMoved}setMovingCustomSource(e,t){this._customSourceBeingMoved=e,this._customSourceBeingMovedHitTestData=null!==t?{beingMoved:!1,...t}:null}processingCustomSourceMove(){null!==this._customSourceBeingMovedHitTestData&&(this._customSourceBeingMovedHitTestData.beingMoved=!0)}customSourceMovingHitTestData(){return this._customSourceBeingMovedHitTestData}customSourceBeingMoved(){return null!==this._customSourceBeingMovedHitTestData&&this._customSourceBeingMovedHitTestData.beingMoved?this._customSourceBeingMoved:null}width(){return this._width}setWidth(e,t){this._width=e,this._timeScale.setWidth(e,t);for(const t of this._panes)t.setWidth(e);this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.recalcVisibleRangeStudies()}setPaneHeight(e,t){e.setHeight(t),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.lightUpdate()}isScalesResetAvailableChanged(){return this._isScalesResetAvailableChanged}isScalesResetAvailable(){return this._isScalesResetAvailable}panes(){return this._panes}paneForId(e){return this._panes.find(t=>t.id()===e)||null}createPane(e,t,i){const s=this._undoModel.chartWidget();s.isMaximizedPane()&&s.toggleMaximizePane(null);const r=this._properties.childs().paneProperties;t&&r.merge(t);const n=new Le(this._timeScale,r,this,i);return void 0!==e?this._panes.splice(e,0,n):this._panes.push(n),n.onTagsChanged().subscribe(this,Vi.prototype.onPaneTagsChanged),n.dataSourcesCollectionChanged().subscribe(this,()=>this._dataSourceCollectionChanged.fire(n)),n.symbolSourceCollectionChanged().subscribe(this,()=>this._onSymbolSourceCollectionChanged(n)),n.sourcePropertiesChanged().subscribe(this,e=>this._sourceProperitesChanged.fire(n,e)),n.sourceZOrderChanged().subscribe(this,e=>this._sourceZOrderChanged.fire(n,e)),n.symbolSourceResolved().subscribe(this,e=>this._symbolSourceResolved.fire(n,e)),n.symbolSourceResolvingActive().subscribe(this._recalcSymbolResolvingActive),n.collapsed().subscribe(this._recalcPaneCollapsingAvailable),this._recalcPaneCollapsingAvailable(),this._panesCollectionChanged.fire(this._panes),this.invalidate(q.InvalidationMask.panesOrder()),n} +removePane(e){const t=this._undoModel.chartWidget();t.isMaximizedPane()&&t.toggleMaximizePane(null);const i=e;i.destroy();const s=this._panes.indexOf(i);-1!==s&&(this._panes.splice(s,1),e.dataSourcesCollectionChanged().unsubscribeAll(this),e.symbolSourceCollectionChanged().unsubscribeAll(this),e.sourcePropertiesChanged().unsubscribeAll(this),e.onTagsChanged().unsubscribeAll(this),e.symbolSourceResolved().unsubscribeAll(this),i.symbolSourceResolvingActive().unsubscribe(this._recalcSymbolResolvingActive),e.collapsed().unsubscribe(this._recalcPaneCollapsingAvailable),this._recalcPaneCollapsingAvailable(!0));this.crossHairSource().pane===e&&this.clearCurrentPosition(),this._panesCollectionChanged.fire(this._panes),this.invalidate(q.InvalidationMask.panesOrder())}changePanesHeight(e,t){if(this._panes.length<2)return;(0,r.assert)(e>=0&&ee+t.stretchFactor(),0),n=this._panes.reduce((e,t)=>e+t.height(),0),o=n-30*(this._panes.length-1);t=Math.min(o,Math.max(30,t));const a=s/n,l=i.height();i.setStretchFactor(t*a);let c=t-l,h=this._panes.length-1;for(const e of this._panes)if(e!==i){const t=Math.min(o,Math.max(30,e.height()-c/h));c-=e.height()-t,h-=1;const i=t*a;e.setStretchFactor(i)}this.fullUpdate()}clearCurrentPosition(){const e=this.crossHairSource();e.clearPosition(),(0,r.ensureNotNull)(e.dataWindowView()).update(),ki(this._panes),this.invalidate(q.InvalidationMask.cursor());const t=this._undoModel.chartWidget();t.chartWidgetCollection().syncCrosshair(null,t.id()),this._phantomSourceContainer.onCursorPositionUpdated()}setAndSaveCurrentPosition(e,t,i,s){this.crossHairSource().saveOriginCoords(e,t),this.setCurrentPosition(e,t,i,s)}setCurrentPosition(e,t,i,s){let n=NaN;const o=this._timeScale.coordinateToVisibleIndex(e),a=i.defaultPriceScale();let l=null;!a.isEmpty()&&Number.isFinite(t)&&(l=(0,r.ensureNotNull)(i.mainDataSource()).firstValue(),null!==l&&(n=a.coordinateToPrice(t,l)));const c=this.crossHairSource(),h=c.selectPointMode().value(),d=this.currentTool(),u=this.mainSeries(),p=h||lt.isStudyEditingNow.value(),_=this._lineBeingCreated||this._lineBeingEdited||(0,f.isLineToolName)(d)||(0,lt.toolIsMeasure)(d)||p;!this._isSettingsExternalPosition&&_&&(n=this._magnet.align(n,o,i),null!==l&&c.saveOriginCoords(c.originX(),a.priceToCoordinate(n,l)));let m=null;if(isNaN(n)||(m=i),this._isTimeScrolling){if(!this._isSettingsExternalPosition&&h){const e=u.bars().firstIndex(),t=u.bars().lastIndex();if(null!==e&&null!==t){const s=Math.min(Math.max(o,e),t);s!==o&&this._setCorrectedPositionToCrosshair(s,n,l,i)}}else c.setPosition(c.index,n,m);return}c.setOnHoveredChartWidget(!0),c.setPosition(o,n,m),(0,r.ensureNotNull)(c.dataWindowView()).update(),ki(this._panes);const g=u.syncModel();if(this.crossHairSource().startMeasurePoint()||this._lineBeingCreated?this.lightUpdate():this.invalidate(q.InvalidationMask.cursor()),this._lineBeingCreated){const e=this._lineBeingCreated.linkKey().value();if(!this._isSettingsExternalPosition){ +const t=this._lineBeingCreated.setLastPoint({index:o,price:n},s);if(this._lineBeingCreated.updateAllViews((0,O.dataSourceChangeEvent)(this._lineBeingCreated.id())),t.price===n&&t.index===o||this._setCorrectedPositionToCrosshair(t.index,t.price,l,i),g&&e){const i=this._timeScale.points().roughTime(t.index,g.projectTime.bind(g));(0,lt.setLineToolLastPoint)({model:this,linkKey:e,point:{timeStamp:(0,r.ensureNotNull)(i),price:t.price}})}}}if(!this._isSettingsExternalPosition&&null!==this._lineBeingEdited&&null!==this._linePointBeingEdited){const e={index:o,price:n};this.changeLinePoint(e,s);const t=this._lineBeingEdited.alignCrossHairToAnchor(this._linePointBeingEdited)?this._lineBeingEdited.getPoint(this._linePointBeingEdited):e;null!==t&&this._setCorrectedPositionToCrosshair(t.index,t.price,l,i)}if(!this._isSettingsExternalPosition&&p){const e=u.bars().firstIndex(),t=u.bars().lastIndex();if(null!==e&&null!==t){const s=Math.min(Math.max(o,e),t);s!==o&&this._setCorrectedPositionToCrosshair(s,n,l,i)}}this._syncCrosshair(s)}setExternalPosition(e,t){let i;const s=this.crossHairSource();if(s.setOnHoveredChartWidget(!1),null!==e&&(0,_e.isNumber)(e.timeStamp)){const t=this.mainSeries().syncModel();if(t){const s=this.createSyncPoint(e.syncSourceTarget,t.syncSourceTarget()).sourceTimeToTargetTime(e.timeStamp);i=this._timeScale.points().roughIndex(s,t.distance.bind(t))}}if(null!==e&&null!=i&&Number.isFinite(i)){this._isSettingsExternalPosition=!0;const n=(0,r.ensureNotNull)(this.paneForSource(this.mainSeries())),o=this._timeScale.indexToCoordinate(i),a=(0,r.ensureNotNull)(n.mainDataSource()).firstValue();if(null!==a){let i=NaN;void 0!==e.price&&Number.isFinite(e.price)&&(i=this.mainSeries().priceScale().priceToCoordinate(e.price,a)),s.clearOriginCoords(),this.setCurrentPosition(o,i,n,t)}return s.setOnHoveredChartWidget(!1),void(this._isSettingsExternalPosition=!1)}s.clearPosition(),(0,r.ensureNotNull)(s.dataWindowView()).update(),ki(this._panes),this.invalidate(q.InvalidationMask.cursor())}startScaleTime(e){this._timeScale.startScale(e)}scaleTimeTo(e){this._timeScale.scaleTo(e),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.lightUpdate(),this._setScalesResetAvailable(!0)}endScaleTime(){this._timeScale.endScale(),this.lightUpdate(),this.recalcVisibleRangeStudies()}resetTimeScale(){this._timeScale.restoreDefault(),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.recalcVisibleRangeStudies(),this.lightUpdate(),this._resetScales.fire(),this._setScalesResetAvailable(!1)}startScalePrice(e,t,i){e.startScalePrice(t,i)}scalePriceTo(e,t,i){e.scalePriceTo(t,i),this.mainSeries().priceScale().isLockScale()?this.lightUpdate():this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light)),this._setScalesResetAvailable(!0)}endScalePrice(e,t){e.endScalePrice(t),this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light))}startTwoPointsScalePrice(e,t,i,s){t.startTwoPointsScale(i,s)}twoPointsScalePriceTo(e,t,i,s){t.twoPointsScale(i,s),this.invalidate(this._paneInvalidationMask(e)), +this._setScalesResetAvailable(!0)}endTwoPointsScalePrice(e,t){t.endTwoPointsScale(),this.invalidate(this._paneInvalidationMask(e))}resetPriceScale(e,t){this._setScalesResetAvailable(!1),e.resetPriceScale(t),this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light))}restorePriceScaleState(e,t,i){e.restorePriceScaleState(t,i),this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light))}currentTool(){return this._currentTool}setCurrentTool(e){this._currentTool!==e&&((0,f.isLineToolName)(e)&&this.selectionMacro(e=>{e.clearSelection()}),this._currentTool=e,this._phantomSourceContainer.onToolChanged())}detachSource(e){const t=this.paneForSource(e);return!!t&&(t.removeDataSource(e),t.isEmpty()?(this._lineBeingCreated&&t===this._paneBeingCreatedLineOn&&this.cancelCreatingLine(),this.removePane(t),!0):(this.fullUpdate(),!1))}onRearrangePanes(){return this._onRearrangePanes}finishLineTool(e){const t=e.linkKey().value();(0,lt.drawOnAllCharts)().value()&&null!==t&&e.isSynchronizable()&&(0,lt.finishLineTool)({linkKey:t,model:this})}startChangingLinetool(e,t,i,s,n){this._lineBeingEdited=e,this._linePointBeingChanged=t||null,this._linePointBeingEdited=void 0===i?null:i,this._lineBeingEdited.startChanging(i,t,n),lt.isToolEditingNow.setValue(!0);const o=(0,r.ensureNotNull)(this.paneForSource(e));this._lineBeingEdited.startDragPoint&&void 0!==i&&void 0!==t&&this._lineBeingEdited.startDragPoint(i,t),n||void 0===i||void 0===t||this._lineBeingEdited.setPoint(i,t,s,n),this._lineBeingEdited.updateAllViews((0,O.dataSourceChangeEvent)(this._lineBeingEdited.id()));const a=this._paneInvalidationMask(o,q.InvalidationLevel.Light);this.invalidate(a);const l=e.linkKey().value();if(l&&e.isSynchronizable()&&void 0!==i&&void 0!==t){const e=(0,r.ensureNotNull)(this.externalTimeStamp(t.index));(0,lt.startChangingLineTool)({linkKey:l,model:this,symbol:this.mainSeries().symbol(),point:{price:t.price,timeStamp:e},pointIndex:i,envState:s||null})}}createLineTool(e,t,i,s,o,a,l){if((0,r.assert)((0,f.isLineToolName)(i),"Cannot create unknown line tool: "+i),s){const e={...Li.intervalsVisibilitiesDefaults},t=s.childs().intervalsVisibilities.state();(0,_e.merge)(e,null!=t?t:{});const r=s.state();r.intervalsVisibilities=e,s=(0,f.createLineToolProperties)(i,r,this)}const c=(0,f.createLineTool)(i,this,s,null,void 0,l);if("LineToolExecution"!==i){const e="LineToolIcon"===i?c.properties().childs().icon.value().toString(16).toUpperCase():void 0;(0,h.trackEvent)("drawings","Study_Drawing_"+i,e)}const d=!c.linkKey().value()&&!o;a=(0,r.ensureDefined)(a||(0,r.ensureNotNull)(e.mainDataSource())),s||(0,f.prepareLineToolPropertiesByOwnerSource)(c.properties(),a),c.setOwnerSource(a);const u=a.priceScale();if(e.addDataSource(c,u,!1),(0,lt.drawOnAllCharts)().value()){const e=c.isSynchronizable()?o||(0,X.randomHash)():null;c.linkKey().setValue(e)}else c.linkKey().setValue(o);let p;if(c.isFixed()){const i=(0,r.ensureNotNull)((0,r.ensureNotNull)(e.mainDataSource()).firstValue()),s=this._timeScale.indexToCoordinate(t.index),o=(0, +r.ensureNotNull)(u).priceToCoordinate(t.price,i);p=c.addFixedPoint(new n.Point(s,o))}else p=c.addPoint(t);return p||(this._lineBeingCreated=c,this._paneBeingCreatedLineOn=e,lt.isToolCreatingNow.setValue(!0)),d&&c.enableCurrentIntervalVisibility(),this.fullUpdate(),c}endChangingLinetool(e,t){const i=(0,r.ensureNotNull)(this._lineBeingEdited),s=i.endChanging(!1,e,t);this._lineBeingEdited=null,lt.isToolEditingNow.setValue(!1),this._linePointBeingEdited=null,this._linePointBeingChanged=null,this.lightUpdate();const n={points:i.normalizedPoints(),interval:this.mainSeries().interval()},o=i.linkKey().value();null!==o&&i.isSynchronizable()&&!t&&(0,lt.finishChangingLineTool)({model:this,linkKey:o,symbol:this.mainSeries().symbol(),finalState:n,changes:s})}continueCreatingLine(e,t,i,s){const n=(0,r.ensureNotNull)(this._lineBeingCreated),o=n.addPoint(e,t,i);n.updateAllViews((0,O.dataSourceChangeEvent)(n.id()));const a=new q.InvalidationMask(q.InvalidationLevel.Light);return o&&(this._paneBeingCreatedLineOn=null,this._lineBeingCreated=null,lt.isToolCreatingNow.setValue(!1)),this.invalidate(a),o}cancelCreatingLine(){if(!this._lineBeingCreated)return;const e=this._lineBeingCreated;this.removeSource(this._lineBeingCreated),this._lineBeingCreated=null,this._lineCancelled.fire(),lt.isToolCreatingNow.setValue(!1),(0,lt.drawOnAllCharts)().value()&&e.isSynchronizable()&&(0,lt.cancelLineTool)({model:this})}lineBeingCreated(){return this._lineBeingCreated}paneBeingCreatedLineOn(){return this._paneBeingCreatedLineOn}lineCancelled(){return this._lineCancelled}isPhantomLine(e){return this._phantomSourceContainer.source()===e}changeLinePoint(e,t,i){const s=(0,r.ensureNotNull)(this._lineBeingEdited),n=(0,r.ensureNotNull)(this._linePointBeingEdited);let o=e.price,a=e.index;if(s.setPoint(n,e,t,i),!i){const t=s.alignCrossHairToAnchor(n)?s.getPoint(n):e;null!==t&&(a=t.index,o=t.price)}s.updateAllViews((0,O.dataSourceChangeEvent)(s.id())),this.lightUpdate();const l=s.linkKey().value();if(!i&&null!==l&&s.isSynchronizable()){const e=(0,r.ensureNotNull)(this._linePointBeingChanged),i={indexesChanged:a!==e.index,pricesChanged:o!==e.price},c=s.getChangePointForSync(n);if(null!==c){const e=this.externalTimeStamp(a);null!==e&&(o=c.price,(0,lt.changeLineTool)({linkKey:l,model:this,symbol:this.mainSeries().symbol(),point:{price:o,timeStamp:e},envState:t,changes:i}))}}}changeLinePoints(e,t,i){const s=e.points(),n=e.linkKey().value();!i&&n&&e.isSynchronizable()&&t.forEach((t,i)=>{const o=s[i],a=o.price!==t.price,l=o.index!==t.index;if(e.getChangePointForSync(i)){const e=(0,r.ensureNotNull)(this.externalTimeStamp(t.index));(0,lt.changeLineTool)({linkKey:n,model:this,symbol:this.mainSeries().symbol(),point:{price:t.price,timeStamp:e},changes:{pricesChanged:a,indexesChanged:l}})}}),e.setPoints(t),e.updateAllViews((0,O.dataSourceChangeEvent)(e.id())),this.lightUpdate()}startScrollTime(e){this._timeScale.startScroll(e),this._isTimeScrolling=!0}scrollTimeTo(e){this._timeScale.scrollTo(e),this.recalculateAllPanes((0,O.viewportChangeEvent)()),this.lightUpdate(), +this._setScalesResetAvailable(!0)}endScrollTime(){this._timeScale.endScroll(),this.lightUpdate(),this.recalcVisibleRangeStudies(),this._isTimeScrolling=!1}startScrollPrice(e,t,i){e.startScrollPrice(t,i)}scrollPriceTo(e,t,i){e.scrollPriceTo(t,i),this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light))}endScrollPrice(e,t){e.endScrollPrice(t),this.invalidate(this._paneInvalidationMask(e,q.InvalidationLevel.Light))}addCustomSource(e,t,i=_.CustomSourceLayer.Foreground){this._customSourcesMap.has(e)&&Ai.logWarn(`Attempt to add the same custom source multiple time "${e}"`),Ai.logNormal(`Adding custom source "${e}"`);const s=t(e,this);switch(i){case _.CustomSourceLayer.Background:this._bgCustomSources.push(s);break;case _.CustomSourceLayer.Foreground:this._fgCustomSources.push(s);break;case _.CustomSourceLayer.Topmost:this._topmostCustomSources.push(s);break;default:throw new Error("Unknown custom sources layer "+i)}this._allCustomSources.push(s),this._customSourcesMap.set(e,s),this.lightUpdate()}removeCustomSource(e){this._removeCustomSource(e),this.lightUpdate()}hasCustomSource(e){return this._customSourcesMap.has(e)}customSourceForName(e){return this._customSourcesMap.get(e)||null}customSourceName(e){let t=null;return this._customSourcesMap.forEach((i,s)=>{i===e&&(t=s)}),t}customSources(e){switch(e){case _.CustomSourceLayer.Background:return this._bgCustomSources;case _.CustomSourceLayer.Foreground:return this._fgCustomSources;case _.CustomSourceLayer.Topmost:return this._topmostCustomSources;default:return this._allCustomSources}}addMultiPaneSource(e){this._multiPaneSources.push(e),this.lightUpdate()}removeMultiPaneSource(e){const t=this._multiPaneSources.indexOf(e);-1===t?Ai.logWarn("Attempt to remove multi-pane source which does not exist in the model"):this._multiPaneSources.splice(t,1),this.lightUpdate()}multiPaneSources(e){return this._multiPaneSources.filter(t=>!e.hasDataSource(t))}dateTimeFormatter(){return this._dateTimeFormatter}dateFormatter(){return this._dateFormatter}timeFormatter(){return this._timeFormatter}sessions(){return(0,r.ensureNotNull)(this._sessions)}createSessions(e){(0,r.assert)(null===this._sessions,"Sessions are already created"),this.addCustomSource("sessions",(t,i)=>(this._sessions=new W(t,i,e),this._sessions.start(),this._sessions),_.CustomSourceLayer.Background)}createPrePostMarket(e){this.addCustomSource("prePostMarket",(t,i)=>new PrePostMarket(t,i,e))}theme(){const e=this.properties().childs().paneProperties.state();delete e.topMargin,delete e.bottomMargin;const t=this.mainSeries().state().state;t&&(delete t.symbol,delete t.interval,delete t.currencyId,delete t.unitId);const i={mainSourceProperties:t,sessions:this.sessions().properties().state(),chartProperties:{paneProperties:e,scalesProperties:this.properties().childs().scalesProperties.state()},version:this.version()};return i.version=this.version(),i}onChartThemeLoaded(){return this._chartThemeLoaded}chartThemeLoaded(){this._chartThemeLoaded.fire()}state(e,t,i,s){var r +;const n=this.publishedChartsTimelineSource(),o=this.properties().childs(),a=o.tradingProperties.state(),l={panes:this._panes.map(r=>r.state(!0,e,!1,t,i,s)),timeScale:this._timeScale.state(e),chartProperties:{paneProperties:o.paneProperties.state(),scalesProperties:o.scalesProperties.state(),publishedChartsTimelineProperties:n?n.state(e):void 0,chartEventsSourceProperties:null===(r=o.chartEventsSourceProperties)||void 0===r?void 0:r.state(),tradingProperties:a,priceScaleSelectionStrategyName:o.priceScaleSelectionStrategyName.value()},sessions:this.sessions().state(e),version:this.version(),timezone:this.timezone(),shouldBeSavedEvenIfHidden:this._shouldBeSavedEvenIfHidden};return s||(l.lineToolsGroups=this.lineToolsGroupModel().state(t)),l}restoreState(e,t,i){ve.instance(this).reset();const s={};if(!e.panes)return void Ai.logDebug("ChartModel.restoreState: invalid state");if(!Array.isArray(e.panes))return void Ai.logDebug("ChartModel.restoreState: invalid state");if(e.panes.length<1)return void Ai.logDebug("ChartModel.restoreState: invalid state");if(this._shouldBeSavedEvenIfHidden=void 0===e.shouldBeSavedEvenIfHidden||e.shouldBeSavedEvenIfHidden,e.chartProperties&&!e.chartProperties.timezone&&(e.chartProperties.timezone=e.timezone),e.chartProperties){const i=(0,D.factoryDefaults)("chartproperties").scalesProperties;(0,_e.merge)(i,e.chartProperties.scalesProperties),!("showLastValue"in i)||"showSeriesLastValue"in i||"showStudyLastValue"in i||(i.showSeriesLastValueProperty=i.showLastValue,i.showStudyLastValueProperty=i.showLastValue),"showSeriesLastValue"in i&&(s.showSeriesLastValueProperty=!0),"showStudyLastValue"in i&&(s.showStudyLastValueProperty=!0),(!this.isSnapshot()&&!this.readOnly()&&"showCurrency"in i||"showUnit"in i)&&(0,Y.migrateShowCurrencyAndShowUnitProperties)(i.showCurrency,i.showUnit),e.chartProperties.paneProperties.vertGridProperties=e.chartProperties.paneProperties.vertGridProperties||(0,_e.clone)(e.chartProperties.paneProperties.gridProperties),e.chartProperties.paneProperties.horzGridProperties=e.chartProperties.paneProperties.horzGridProperties||(0,_e.clone)(e.chartProperties.paneProperties.gridProperties),"backgroundType"in e.chartProperties.paneProperties||(e.chartProperties.paneProperties.backgroundType=dt.ColorType.Solid),"separatorColor"in e.chartProperties.paneProperties||(e.chartProperties.paneProperties.separatorColor=(0,c.getThemedColor)("color-chart-page-bg")),this._properties.childs().paneProperties.mergeAndFire(e.chartProperties.paneProperties),this._properties.childs().scalesProperties.mergeAndFire(i),e.chartProperties.timezone&&this._properties.childs().timezone.setValue(e.chartProperties.timezone),e.chartProperties.chartEventsSourceProperties&&this._properties.hasChild("chartEventsSourceProperties")&&this._properties.childs().chartEventsSourceProperties.mergeAndFire(e.chartProperties.chartEventsSourceProperties), +e.chartProperties.tradingProperties&&this._properties.hasChild("tradingProperties")&&(void 0===e.chartProperties.tradingProperties.horizontalAlignment&&(e.chartProperties.tradingProperties.horizontalAlignment=(r=e.chartProperties.tradingProperties.lineLength)<=40?_.TradingSourcesHorizontalAlignment.Right:r>=60?_.TradingSourcesHorizontalAlignment.Left:_.TradingSourcesHorizontalAlignment.Center),this._properties.childs().tradingProperties.mergeAndFire(e.chartProperties.tradingProperties)),this._timeScale.restoreState(e.timeScale,t),this._updateDateTimeFormatter()}var r;if(e.timeScale&&this._timeScale.restoreState(e.timeScale,t),!this.readOnly()){const t=this._getExceedingChildStudies(e.panes);if(t.length){for(let i=e.panes.length-1;i>=0;--i){const s=e.panes[i];for(let e=s.sources.length-1;e>=0;--e){const i=s.sources[e];~t.indexOf(i)&&s.sources.splice(e,1)}s.sources.length||e.panes.splice(i,1)}0}}const n=e.version||0,o=e.panes;this.panes()[0].restoreState(o[0],t,n,s,i,!0);let a=1;for(let r=1;rd&&h%100==0?{lines_limit_exceeded:!0,line_tools_count:h}:(this.panes().forEach(e=>this._dataSourceCollectionChanged.fire(e)),this._lineToolsGroupModel.fireChangedAll(),{})}shouldBeSavedEvenIfHidden(){return this._shouldBeSavedEvenIfHidden}setShouldBeSavedEvenIfHidden(e){this._shouldBeSavedEvenIfHidden=e}externalTimeStamp(e){const t=this.mainSeries().syncModel();return this.timeScale().points().roughTime(e,t&&t.projectTime.bind(t))}syncESD(){null!==this._esdWatcher&&this._esdWatcher.syncESDStudies()}recalcVisibleRangeStudies(e){this._recalcVRStudiesParams.force=this._recalcVRStudiesParams.force||Boolean(e),this._recalcVisibleRangeStudiesImplDebounced()}recalcColorStudies(e){this._recalcColorStudiesParams.force=this._recalcColorStudiesParams.force||Boolean(e),this._recalcColorStudiesImplDebounced()}alertsWatcher(){return this._alertsWatcher}showLegend(){return this._showLegendProperty}id(){return this._id}recalculatePriceRangeOnce(){const e=this.mainSeries();for(const t of this._panes)for(const i of t.priceDataSources())i.symbolSource()===e&&i.disablePriceRangeReady()}invalidate(e){var t;null===(t=this._invalidateHandler)||void 0===t||t.call(this,e)}appliedTimeFrame(){ +return this._appliedTimeFrame.appliedTimeFrame()}barsMarksSources(){return this._barsMarksSources}barMarksSourceForId(e){for(const t of this._barsMarksSources)if(t.id()===e)return t;return null}createSyncPoint(e,t){return(0,Ii.getDefault2Lazy)(this._syncPointCache,e.uniqueId,t.uniqueId,()=>new at(e,t))}isAutoSaveEnabled(){return this._isAutoSaveEnabled}studyAwareDefaultRightOffset(){return Math.max(this._timeScale.defaultRightOffset().value(),this._cachedStudiesMaxOffset)}clearAllStudies(){this.dataSources().forEach(e=>{var t;return null===(t=e.clearData)||void 0===t?void 0:t.call(e)})}_updateStudiesMaxOffset(){const e=Math.max(...this.allStudies().map(e=>e.maxOffset().value()));this._cachedStudiesMaxOffset=e;const t=this._timeScale.rightOffset();t<0||this._timeScale.setRightOffset(Math.max(t,e))}_updateBaseIndex(e,t){const i=this._timeScale,s=i.baseIndex(),r=i.visibleBarsStrictRange(),n=i.logicalRange();if(null!==n&&t){const t=n.contains(s),o=e-s;let a=t?null:i.rightOffset()-o;if(!this._options.shiftVisibleRangeOnNewBar&&t){const e=i.indexToCoordinate(s)+i.barSpacing()/2+1,t=s-n.left()+o,l=e/t;if(l>=i.minBarSpacing()){i.setBarSpacing(l);a=i.width()/l-t}else(null==r?void 0:r.lastBar())!==s&&(a=i.rightOffset()-o)}null!==a&&i.setRightOffset(a)}i.setBaseIndex(e)}_createESDWatcher(){}_updateDateTimeFormatter(){const e=Je.dateFormatProperty.value(),t=new Ze.DateFormatter(e);if(this._dateFormatter=t,this.mainSeries().isDWM())this._dateTimeFormatter=t,this._timeFormatter=new Qe.TimeFormatter("%h:%m");else{const t=C.Interval.parse(this.mainSeries().interval()),i=t.isSeconds()||t.isTicks()?"%h:%m:%s":"%h:%m";this._dateTimeFormatter=new Xe.DateTimeFormatter({dateFormat:e,timeFormat:i,dateTimeSeparator:" "}),this._timeFormatter=new Qe.TimeFormatter(i)}}_setScalesResetAvailable(e){this._isScalesResetAvailable!==e&&(this._isScalesResetAvailable=e,this._isScalesResetAvailableChanged.fire())}_invalidationMaskForSource(e,t=q.InvalidationLevel.Light){if(e===this.crossHairSource())return q.InvalidationMask.cursor();if(this._watermarkSource===e)return this._paneInvalidationMask((0,r.ensureNotNull)(this.paneForSource(this.mainSeries())),t);if(-1!==this._allCustomSources.indexOf(e)){const e=new q.InvalidationMask;return e.invalidateAll(t),e}if(!(0,m.isDataSource)(e))return null;if(e.isMultiPaneEnabled())return new q.InvalidationMask(t);const i=this.paneForSource(e);return null!==i?this._paneInvalidationMask(i,t):null}_paneInvalidationMask(e,t=q.InvalidationLevel.Light){const i=new q.InvalidationMask,s=this._panes.indexOf(e);return i.invalidateAllPane(s,t),i}_invalidationMaskForSourcePriceScale(e,t=q.InvalidationLevel.Light){if(!(0,m.isDataSource)(e))return new q.InvalidationMask(t);const i=this.paneForSource(e);if(null===i)return null;let s=e.priceScale();if(null===s)return null;const r=this._panes.indexOf(i);let n=i.priceScalePosition(s);if("overlay"===n){const e=this._panes[r].defaultPriceScale();s=e,n=i.priceScalePosition(e)}const o=i.priceScaleIndex(s,n);if(void 0===o)return null;const a=new q.InvalidationMask +;return a.invalidatePriceScale(r,n,o,t),a}_removeCustomSource(e){const t=this._customSourcesMap.get(e);if(void 0===t)return void Ai.logWarn(`Attempt to remove custom source which does not exist in the model - "${e}"`);Ai.logNormal(`Removing custom source "${e}"`),this.selectionMacro(e=>{e.removeSourceFromSelection(t)}),this._hoveredSource===t&&this.setHoveredSource(null),this._customSourceBeingMoved===t&&this.setMovingCustomSource(null,null);const i=Ei(this._bgCustomSources,t),s=Ei(this._fgCustomSources,t),n=Ei(this._topmostCustomSources,t),o=Ei(this._allCustomSources,t);(0,r.assert)(i||s||n,"Source should be presented in one of the layers"),(0,r.assert)(o,"Source should be presented in the array"),this._customSourcesMap.delete(e),t.destroy()}_updateShowLegendProperty(){const e=this._properties.childs().paneProperties.childs().legendProperties.childs().showLegend,t=this._showLegendProperty;if(e.value())t.setValue(!0);else{for(const e of this._panes){let i=0;for(const s of e.priceDataSources())if(s!==this.mainSeries()&&null!==s.statusView()&&(i++,i>1))return void t.setValue(!1)}t.setValue(!0)}}_pointToPercentPosition(e,t){return{x:e.x/this._timeScale.width(),y:e.y/(0,r.ensureNotNull)((0,r.ensureNotNull)(t.mainDataSource()).priceScale()).height()}}_percentPositionToPoint(e,t){const i=e.x*this._timeScale.width(),s=e.y*(0,r.ensureNotNull)((0,r.ensureNotNull)(t.mainDataSource()).priceScale()).height();return new n.Point(i,s)}_recalcVisibleRangeStudiesImpl(e){var t,i,s;if(e.timerId=null,this.timeScale().isEmpty())return;const r=this.timeScale().visibleBarsStrictRange();if(null===r)return;const n=this.mainSeries().bars(),o=n.search(r.firstBar(),ft.PlotRowSearchMode.NearestRight),a=n.search(r.lastBar(),ft.PlotRowSearchMode.NearestLeft),l=n.lastIndex(),c=o?o.index:void 0,h=a?a.index:void 0,d=c===e.oldStartVisibleIndex,u=h===e.oldEndVisibleIndex;if(d&&u&&!e.force)return;e.force=!1,e.oldStartVisibleIndex=void 0!==c?c:NaN,e.oldEndVisibleIndex=void 0!==h?h:NaN;const p={first_visible_bar_time:1e3*(null!==(t=null==o?void 0:o.value[0])&&void 0!==t?t:0),last_visible_bar_time:1e3*(null!==(i=null==a?void 0:a.value[0])&&void 0!==i?i:0),subscribeRealtime:(null==a?void 0:a.index)===l},_=null!==(s=e.studies)&&void 0!==s?s:this.priceDataSources();e.studies=void 0;for(const e of _)if((0,H.isStudy)(e)){const t=e.metaInfo().inputs,i=[];for(const e of t)p.hasOwnProperty(e.id)&&i.push(e.id);const s=e.properties().inputs;for(const e of i)s[e].setValueSilently(p[e]);i.length>0&&s.listeners().fire(s)}}_recalcColorStudiesImpl(e){var t;e.timerId=null;const i=this.backgroundColorAtYPercentFromTop(.5),s=this.isDark()?a.colorsPalette["color-cold-gray-200"]:a.colorsPalette["color-cold-gray-900"],r=i===e.oldBgColor,n=s===e.oldFgColor;if(r&&n&&!e.force)return;e.force=!1,e.oldBgColor=i,e.oldFgColor=s;const o={__chart_bgcolor:i,__chart_fgcolor:s},l=null!==(t=e.studies)&&void 0!==t?t:this.priceDataSources();e.studies=void 0;for(const e of l)if((0,H.isStudy)(e)){const t=e.metaInfo().inputs,i=[];for(const e of t)o.hasOwnProperty(e.id)&&i.push(e.id) +;const s=e.properties().inputs;for(const e of i)s[e].setValueSilently(o[e]);i.length>0&&s.listeners().fire(s)}}_getAllSources(e){const t=[];for(const i of this._panes){const s=i.sourcesByGroup().all();for(const i of s)e(i)&&t.push(i)}return t}_invalidateBarColorerCaches(){this.mainSeries().invalidateBarColorerCache()}_updateTimeScale(e){var t,i;const{index:s,zoffset:r,values:n,indexDiffs:o,baseIndex:a,marks:l,clearFlag:c}=e;if(c){this._timeScale.reset();for(const e of this.dataSources())null===(t=e.clearData)||void 0===t||t.call(e)}if(o.length>0)for(const e of this.dataSources())null===(i=e.moveData)||void 0===i||i.call(e,o);const h=this._timeScale.indexToTimePoint(this._timeScale.baseIndex()),d=this._timeScale.canNormalize();this._timeScale.update(s,r,n,l);let u="ChartModel.prototype._updateTimeScale("+s+","+r+","+n.length+","+o.length+","+l.length+","+c+")";if(u+="TimeScale: {first:"+this._timeScale.points().firstIndex()+",last:"+this._timeScale.points().lastIndex()+"}",null===a){this._timeScale.resetBaseIndex();const e=this._timeScale.rightOffset();e<0?this._timeScale.setRightOffset(this.studyAwareDefaultRightOffset()):this._timeScale.setRightOffset(Math.max(e,this._cachedStudiesMaxOffset))}else if(void 0!==a){const e=this._timeScale.indexToTimePoint(a),t=null!==h&&null!==e&&e>h;this._updateBaseIndex(a,t)}if(Ai.logDebug(u),!d&&d!==this._timeScale.canNormalize())for(const e of this.dataSources())!(0,f.isLineTool)(e)||e.isFixed()||e.isSourceHidden()||e.processHibernate();this.recalculateAllPanes((0,O.globalChangeEvent)()),this.lightUpdate()}_getAvailableCurrencies(){return!this.currencyConversionEnabled()||this.isSnapshot()?[]:(0,_e.isArray)(this._availableCurrenciesList)?this._availableCurrenciesList:(null!==this._availableCurrenciesList||(this._availableCurrenciesList=this.chartApi().availableCurrencies(),this._availableCurrenciesList.then(e=>{this._destroyed||(this._availableCurrenciesList=e,this.fullUpdate())}).catch(e=>{Ai.logWarn("An error occurred while getting currencies config: "+e)})),[])}_getAvailableUnits(){return!this.unitConversionEnabled()||this.isSnapshot()?{}:this._availableUnitsObject instanceof Promise||null===this._availableUnitsObject?(null!==this._availableUnitsObject||(this._availableUnitsObject=this.chartApi().availableUnits(),this._availableUnitsObject.then(e=>{this._destroyed||(this._availableUnitsObject=e,this.fullUpdate())}).catch(e=>{Ai.logWarn("An error occurred while getting units config: "+e)})),{}):this._availableUnitsObject}_getBackgroundColor(e){const t=this._properties.childs().paneProperties.childs();if(t.backgroundType.value()===dt.ColorType.Gradient){const i=t.backgroundGradientStartColor.value(),s=t.backgroundGradientEndColor.value();return e?i:s}return t.background.value()}_updateBackgroundColor(){this._backgroundColor.setValue(this._getBackgroundColor()),this._backgroundTopColor.setValue(this._getBackgroundColor(!0))}_syncCrosshair(e){if(!this._isSettingsExternalPosition){ +const t=this._undoModel.chartWidget(),i=this._undoModel.mainSeries(),s=i.syncModel(),r=this._undoModel.crossHairSource(),n=r.pane;if(null!==s&&null!==n){const o={timeStamp:this._timeScale.points().roughTime(r.index,s.projectTime.bind(s)),syncSourceTarget:s.syncSourceTarget()};n.mainDataSource()===i&&(o.price=r.price,o.symbol=i.symbol());let a=this._lineBeingCreated||null!==this._linePointBeingEdited||Boolean(this._sourcesBeingMoved.length);a=a&&(0,lt.drawOnAllCharts)().value(),t.chartWidgetCollection().syncCrosshair(o,t.id(),a,e)}this._phantomSourceContainer.onCursorPositionUpdated()}}_gotoTimeImpl(e,t){const i=this.timeScale(),s=this.mainSeries();let n;if(void 0!==e){if(this._scrollingState&&this._scrollingState.deferred.reject(),n=(0,d.createDeferredPromise)(),!s.isDWM()){const t=s.symbolInfo();if(null!==t){let i=this.properties().childs().timezone.value();"exchange"===i&&(i=t.timezone);const r=(0,it.cal_to_utc)((0,it.get_timezone)(i),new Date(e)),n=(0,wt.createTimeToBarTimeAligner)(s.interval(),t)(r);e=(0,it.utc_to_cal)((0,it.get_timezone)(i),n).getTime()}}this._scrollingState={targetDate:e,deferred:n,centerIfVisible:t.centerIfVisible}}else{if(!this._scrollingState)return Ai.logError("scrollTo called without an argument"),Promise.reject();e=this._scrollingState.targetDate,n=this._scrollingState.deferred}if(void 0===i.tickMarks().minIndex)return n.resolve(void 0),n.promise;let o=((e,t)=>{if((e=>(0,r.ensureNotNull)(i.tickMarks().indexToTime((0,r.ensureDefined)(i.tickMarks().minIndex))).valueOf()-e)(t)<0){let n=i.tickMarks().nearestIndex(t);const o=s.bars().lastIndex();if(null===o)return null;n=Math.min(n,o);let a=(0,r.ensureNotNull)(i.tickMarks().indexToTime(n)).valueOf();for(;a1&&s.push(e)),n=(n+1)%t.length}return s}}},15943:(e,t,i)=>{"use strict";i.d(t,{japaneseChartStyles:()=>r,commonChartStyles:()=>n,allChartStyles:()=>o});var s=i(67337);function r(){return s.enabled("japanese_chart_styles"),[8]}function n(){const e=[0,1,9,13,2,3,10];return s.enabled("chart_style_hilo")&&e.push(12),e}function o(){return n().concat(r())}},97205:(e,t,i)=>{"use strict";i.d(t,{ChartUndoModelBase:()=>Wi});var s=i(85459),r=i.n(s),n=i(16230),o=i(88537),a=i(86441),l=i(28353),c=i(24980),h=i(68587),d=i(65645),u=i(67072),p=i.n(u),_=i(98125);const m=new c.TranslatedString("move all scales to left",(0,l.t)("move all scales to left")),g=new c.TranslatedString("move all scales to right",(0,l.t)("move all scales to right")),f=(0,_.getLogger)("Chart.MergeAllScales");var v=i(44556),S=i(35762);class y extends S.UndoCommand{constructor(e,t,i,s,r,n){super(n),this._model=e,this._paneIndex=e.panes().indexOf(t),this._targetPosition=s,this._targetIndex=r,this._scaleId=i.id(),this._sourcePosition=t.priceScalePosition(i),"overlay"!==this._sourcePosition&&(this._sourceIndex=t.priceScaleIndex(i,this._sourcePosition))}redo(){const e=this._model.panes()[this._paneIndex],t=(0,o.ensureNotNull)(e.getPriceScaleById(this._scaleId));e.movePriceScale(t,this._targetPosition,this._targetIndex),this._model.fullUpdate()}undo(){const e=this._model.panes()[this._paneIndex],t=(0,o.ensureNotNull)(e.getPriceScaleById(this._scaleId));e.movePriceScale(t,this._sourcePosition,this._sourceIndex),this._model.fullUpdate()}}var b=i(14291);class w extends S.UndoCommand{constructor(e,t,i,s){super(s),this._createdIds=[],this._model=e,this._withoutShift=i,this._origStates=t.map(e=>e.state(!0));const r=e.lineToolsGroupModel();this._origGroups=t.map(e=>{const t=r.groupForLineTool(e);return t&&t.id})}redo(){const e=this._model.lineToolsGroupModel(),t=this._origStates.map((t,i)=>{const s=(0,o.ensureNotNull)(this._model.dataSourceForId(t.id)),r=0===this._createdIds.length?void 0:(0,o.ensureDefined)(this._createdIds[i]),n=(0,b.cloneLineTool)(this._model,s,!this._withoutShift,r),a=(0,o.ensureNotNull)(s.priceScale());(0,o.ensureNotNull)(this._model.paneForSource(s)).addDataSource(n,a,!1);const l=this._origGroups[i];if(null!==l){const t=e.groupForId(l);t&&t.addLineTools([n])}return this._model.updateSource(n),n});0===this._createdIds.length&&(this._createdIds=t.map(e=>e.id())),this._model.selectionMacro(e=>{e.clearSelection(),t.forEach(t=>{e.addSourceToSelection(t)})}),this._model.setShouldBeSavedEvenIfHidden(!0)}undo(){const e=this._model.lineToolsGroupModel();this._createdIds.forEach(t=>{const i=(0,o.ensureNotNull)(this._model.dataSourceForId(t)),s=e.groupForLineTool(i);null!==s&&s.excludeLineTool(i),this._model.removeSource(i)})}newIds(){return this._createdIds}}var C=i(65284),P=i(79495),T=i(80643),x=i(81851);class I extends S.UndoCommand{constructor(e,t,i,s=!0){super(i,s),this._newStates=[],this._model=e, +this._savedStates=t.map(e=>e.state(!1))}redo(){this._applyState(this._newStates)}undo(){0===this._newStates.length&&this.saveNewState(),this._applyState(this._savedStates)}saveNewState(){const e=this._savedStates.filter(T.notNull).map(e=>(0,o.ensureNotNull)(this._model.dataSourceForId(e.id)));this._newStates=e.map(e=>e.state(!1))}_applyState(e){for(const t of e)if(null!==t){const e=this._model.dataSourceForId(t.id);if(null!==e)if((0,x.isStudy)(e)){const i=t.state.inputs,s=e.properties().inputs;for(const e in i)s[e]&&s[e].setValue(i[e])}else this._model.restoreLineToolState(e,t,!0)}}}var M=i(36551),L=i(8597),A=i(59555),E=i(60870);const k=new c.TranslatedString("create {tool}",(0,l.t)("create {tool}"));class D extends S.UndoCommand{constructor(e,t,i,s,r=0,n){super(k.format({tool:new c.TranslatedString(i,E.lineToolsLocalizedNames[i])}),!1),this._lineId=null,this._lineState=null,this._model=e,this._paneIndex=e.panes().indexOf(t),this._lineTool=i,this._ownerSourceId=s.id(),this._lineId=null!=n?n:null,this._drawOnAllChartsMode=r}startCreatingLine(e,t,i){var s;const r=this._model.panes()[this._paneIndex],n=this._model.dataSourceForId(this._ownerSourceId),o=this._model.createLineTool(r,e,this._lineTool,t,i,n,null!==(s=this._lineId)&&void 0!==s?s:void 0);return this._lineId=o.id(),!this._model.lineBeingCreated()}continueCreatingLine(e,t,i,s){const r=this._model.continueCreatingLine(e,t,i,s);return r&&this._model.setShouldBeSavedEvenIfHidden(!0),r}line(){return null===this._lineId?null:this._model.dataSourceForId(this._lineId)}undo(){const e=this.line();null!==e&&(this._lineState=e.state(!1),this._model.removeSource(e),this._lineId=null)}redo(){if(null===this._lineState)return;const e=this._model.restoreSource(!1,this._paneIndex,null,(0,o.ensureNotNull)(this._lineState),null);null!==e&&(this._lineId=e.id(),this._lineState=null,e.share(this._drawOnAllChartsMode))}drawOnAllCharts(){return 0!==this._drawOnAllChartsMode}}var V=i(94578);const B=new c.TranslatedString("bring {title} to front",(0,l.t)("bring {title} to front")),N=new c.TranslatedString("send {title} to back",(0,l.t)("send {title} to back")),R=new c.TranslatedString("insert {title} after {targetTitle}",(0,l.t)("insert {title} after {targetTitle}")),O=new c.TranslatedString("insert {title} before {targetTitle}",(0,l.t)("insert {title} before {targetTitle}")),F=new c.TranslatedString("send {title} backward",(0,l.t)("send {title} backward")),W=new c.TranslatedString("bring {title} forward",(0,l.t)("bring {title} forward")),H=new c.TranslatedString("send group {title} backward",(0,l.t)("send group {title} backward")),z=new c.TranslatedString("bring group {title} forward",(0,l.t)("bring group {title} forward"));function U(e){return new c.TranslatedString(e.name(),e.title())}class j extends S.UndoCommand{constructor(e,t,i){super(i),this._sourcesByPanes=new Map,this._originalState=new Map,this._model=e,t.forEach(t=>{const i=(0,o.ensureNotNull)(e.paneForSource(t)),s=e.panes().indexOf(i),r=this._sourcesByPanes.get(s)||[];r.push(t.id()),this._sourcesByPanes.set(s,r)}), +Array.from(this._sourcesByPanes.keys()).forEach(t=>{const i=e.panes()[t],s=new Map;i.sourcesByGroup().allIncludingHidden().forEach(e=>{s.set(e.id(),e.zorder())}),this._originalState.set(t,s)})}undo(){this._originalState.forEach((e,t)=>{const i=this._model.panes()[t],s=new Map;e.forEach((e,t)=>{const r=(0,o.ensureNotNull)(i.dataSourceForId(t));s.set(r,e)}),i.setZOrders(s)})}redo(){this._sourcesByPanes.forEach((e,t)=>{const i=this._model.panes()[t],s=e.map(e=>(0,o.ensureNotNull)(i.dataSourceForId(e)));this._paneOperation(i,s)})}}class G extends j{constructor(e,t){super(e,t,B.format({title:U(t[0])}))}_paneOperation(e,t){e.bringToFront(t)}}class q extends j{constructor(e,t){super(e,t,N.format({title:U(t[0])}))}_paneOperation(e,t){e.sendToBack(t)}}class Y extends j{constructor(e,t,i,s){super(e,t,s),this._targetSource=i}_paneOperation(e,t){e.insertAfter(t,this._targetSource)}}class K extends Y{constructor(e,t,i){super(e,t,i,R.format({title:U(t[0]),targetTitle:U(i)}))}}class $ extends j{constructor(e,t,i,s){super(e,t,s),this._targetSource=i}_paneOperation(e,t){e.insertBefore(t,this._targetSource)}}class X extends ${constructor(e,t,i){super(e,t,i,O.format({title:U(t[0]),targetTitle:U(i)}))}}function Z(e,t){const i=t[0],s=e.sourcesByGroup().all().filter(e=>e.zorder()e.zorder()>i.zorder());if(0===s.length)throw new Error("Cannot bring forward source that alreadt on back");let r=s[0];if((0,b.isLineTool)(r)){const t=e.model().lineToolsGroupModel().groupForLineTool(r);if(null!==t){const e=t.lineTools();r=e[e.length-1]}}return r}class ee extends Y{constructor(e,t,i){super(e,i,Q(t,i),W.format({title:U(i[0])}))}}function te(e,t){return(0,o.ensureNotNull)(e.paneForSource(t.lineTools()[0]))}class ie extends ${constructor(e,t){super(e,t.lineTools(),Z(te(e,t),t.lineTools()),H.format({title:t.name()}))}}class se extends Y{constructor(e,t){super(e,t.lineTools(),Q(te(e,t),t.lineTools()),z.format({title:t.name()}))}}const re=new c.TranslatedString("rearrange panes",(0,l.t)("rearrange panes"));class ne extends S.UndoCommand{constructor(e,t,i){super(re),this._chartModel=e,this._index=t,(0,T.isNumber)(i)?this._dstIndex=i:this._dstIndex="up"===i?t-1:t+1}redo(){this._checkIndices()&&this._chartModel.movePane(this._index,this._dstIndex)}undo(){this._checkIndices()&&this._chartModel.movePane(this._dstIndex,this._index)}_checkIndices(){const e=this._chartModel.panes().length;return this._index>=0&&this._index=0&&this._dstIndexe.id())}redo(){const e=(0,o.ensureNotNull)(this._model.lineToolsGroupModel().groupForId(this._groupId));this._model.lineToolsGroupModel().removeGroup(e)}undo(){const e=this._lineToolsIds.map(e=>this._model.dataSourceForId(e)),t=new Se.LineToolsGroup(e,this._groupName,this._groupId);this._model.lineToolsGroupModel().addGroup(t)}}const be=new c.TranslatedString("create line tools group",(0,l.t)("create line tools group"));class we extends S.UndoCommand{constructor(e,t){super(be),this._groupId=null,this._model=e,this._sourcesIds=t.map(e=>e.id())}redo(){const e=this._sourcesIds.map(e=>this._model.dataSourceForId(e)),t=null===this._groupId?void 0:this._groupId;this._groupId=this._model.lineToolsGroupModel().createGroup(e,this._title,t).id}undo(){const e=(0,o.ensureNotNull)(this._model.lineToolsGroupModel().groupForId((0,o.ensureNotNull)(this._groupId)));this._model.lineToolsGroupModel().removeGroup(e)}createdGroupId(){return this._groupId}}const Ce=new c.TranslatedString("add line tool(s) to group {group}",(0,l.t)("add line tool(s) to group {group}"));class Pe extends S.UndoCommand{constructor(e,t,i){super(Ce.format({group:t.name()})),this._model=e,this._groupId=t.id,this._lineToolsIds=i.map(e=>e.id())}redo(){const e=(0,o.ensureNotNull)(this._model.lineToolsGroupModel().groupForId(this._groupId)),t=this._lineToolsIds.map(e=>this._model.dataSourceForId(e));e.addLineTools(t)}undo(){const e=this._lineToolsIds.map(e=>this._model.dataSourceForId(e));(0,o.ensureNotNull)(this._model.lineToolsGroupModel().groupForId(this._groupId)).excludeLineTools(e)}}var Te=i(46627);class xe extends S.UndoCommand{constructor(e,t,i,s,r){super(i),this._targetObj=e,this._newValue=t,this._oldValue=this._targetObj.value(),this._model=s,r&&this.setCustomFlag("doesnt_affect_save",!0)}redo(){(0,le.saveDefaultProperties)(!0),this._targetObj.setValue(this._newValue),(0,le.saveDefaultProperties)(!1),this._model.recalculateAllPanes((0,ue.globalChangeEvent)()),this._model.lightUpdate()}undo(){(0,le.saveDefaultProperties)(!0),this._targetObj.setValue(this._oldValue),(0,le.saveDefaultProperties)(!1),this._model.recalculateAllPanes((0,ue.globalChangeEvent)()),this._model.lightUpdate()}}class Ie extends S.UndoCommand{constructor(e,t,i,s){super(s),this._chartModel=e,this._groupId=t.id,this._oldName=t.name(),this._newName=i}redo(){(0,o.ensureNotNull)(this._chartModel.lineToolsGroupModel().groupForId(this._groupId)).setName(this._newName)}undo(){(0,o.ensureNotNull)(this._chartModel.lineToolsGroupModel().groupForId(this._groupId)).setName(this._oldName)}}var Me=i(85733);const Le=new c.TranslatedString("create line tools group from selection",(0,l.t)("create line tools group from selection")),Ae=new c.TranslatedString("removing line tools group {name}",(0,l.t)("removing line tools group {name}")),Ee=new c.TranslatedString("add line tool {lineTool} to group {name}",(0,l.t)("add line tool {lineTool} to group {name}")),ke=new c.TranslatedString("make group {group} visible",(0, +l.t)("make group {group} visible")),De=new c.TranslatedString("make group {group} invisible",(0,l.t)("make group {group} invisible")),Ve=new c.TranslatedString("lock group {group}",(0,l.t)("lock group {group}")),Be=new c.TranslatedString("unlock group {group}",(0,l.t)("unlock group {group}")),Ne=new c.TranslatedString("rename group {group} to {newName}",(0,l.t)("rename group {group} to {newName}"));class Re{constructor(e){this._lineToolsAffectChartInvalidation=new Te.FeatureToggleWatchedValue("do_not_invalidate_chart_on_changing_line_tools",!1),this._environment=e}createGroupFromSelection(){const e=this._environment.model();(0,o.assert)(!e.selection().isEmpty(),"Cannot create group from empty selection");const t=(0,A.sortSources)(e.selection().lineDataSources());(0,o.assert)(t.length===e.selection().allSources().length,"A group could contain line tools only");const i=t.length>1||null!==this._environment.model().lineToolsGroupModel().groupForLineTool(t[0]),s=t.reduce((e,t)=>e.zorder()>t.zorder()?e:t,t[0]);let r=s;const n=e.lineToolsGroupModel().groupForLineTool(s);if(null!==n){const e=n.lineTools();r=e[e.length-1]}this._environment.beginUndoMacro(Le,this._lineToolsAffectChartInvalidation.value());const a=new Map,l=new Set;t.forEach(t=>{const i=this._groupForLineTool(t);if(null===i)return;const s=a.get(i)||[];s.push(t),a.set(i,s);const r=(0,o.ensureNotNull)(e.paneForSource(t));l.add(r)}),(0,o.assert)(l.size<=1,"All selected sources should be on the same pane"),a.forEach((t,i)=>{const s=new P.ExcludeLineToolsFromGroupUndoCommand(e,i,t);this._environment.pushUndoCommand(s)});const c=new we(e,(0,A.sortSources)(t));if(this._environment.pushUndoCommand(c),i){const i=new K(e,t,r);this._environment.pushUndoCommand(i)}this._environment.endUndoMacro();const h=(0,o.ensureNotNull)(c.createdGroupId());return(0,o.ensureNotNull)(e.lineToolsGroupModel().groupForId(h))}removeGroup(e){const t=this._environment.model(),i=e.lineTools();this._environment.beginUndoMacro(Ae.format({name:e.name()}),this._lineToolsAffectChartInvalidation.value());const s=new ye(t,e,null);this._environment.pushUndoCommand(s);const r=new C.RemoveSourcesCommand(t,i,null);this._environment.pushUndoCommand(r);const n=t.mainSeries().symbol();i.forEach(e=>{null!==e.linkKey().value()&&(0,Me.removeLineTool)({withUndo:!0,model:t,symbol:n,sourceTitle:new c.TranslatedString(e.name(),e.title()),lineToolState:e.state(!1),linkKey:(0,o.ensureNotNull)(e.linkKey().value())})}),this._environment.endUndoMacro()}groups(){return this._environment.model().lineToolsGroupModel().groups()}excludeLineToolFromGroup(e,t){const i=this._environment.model(),s=new P.ExcludeLineToolsFromGroupUndoCommand(i,e,[t]);s.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(s)}addLineToolToGroup(e,t){const i=this._environment.model(),s=i.lineToolsGroupModel().groupForLineTool(t);if(s===e)return;const r=Ee.format({lineTool:new c.TranslatedString(t.name(),t.title()),name:e.name()}) +;this._environment.beginUndoMacro(r,this._lineToolsAffectChartInvalidation.value()),null!==s&&this._environment.pushUndoCommand(new P.ExcludeLineToolsFromGroupUndoCommand(i,s,[t])),this._environment.pushUndoCommand(new Pe(i,e,[t])),this._environment.endUndoMacro()}bringToFront(e){const t=this._environment.model(),i=new G(t,e.lineTools());i.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(i),this._environment.emitEvent("changeZOrder",[e.lineTools()])}sendToBack(e){const t=this._environment.model(),i=new q(t,e.lineTools());i.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(i),this._environment.emitEvent("changeZOrder",[e.lineTools()])}bringForward(e){const t=this._environment.model(),i=new se(t,e);i.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(i),this._environment.emitEvent("changeZOrder",[e.lineTools()])}sendBackward(e){const t=this._environment.model(),i=new ie(t,e);i.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(i),this._environment.emitEvent("changeZOrder",[e.lineTools()])}insertAfter(e,t){const i=this._environment.model();let s;if(t instanceof Se.LineToolsGroup){const e=t.lineTools();s=e[e.length-1]}else s=t;const r=new K(i,e.lineTools(),s);this._environment.pushUndoCommand(r),this._environment.emitEvent("changeZOrder",[e.lineTools()])}insertBefore(e,t){const i=this._environment.model();let s;if(t instanceof Se.LineToolsGroup){s=t.lineTools()[0]}else s=t;const r=new X(i,e.lineTools(),s);this._environment.pushUndoCommand(r),this._environment.emitEvent("changeZOrder",[e.lineTools()])}availableZOrderOperations(e){const t=this._environment.model(),i=e.lineTools(),s=i[0],r=i[i.length-1],n=(0,o.ensureNotNull)(t.paneForSource(i[0])).sourcesByGroup().allExceptSpecialSources(),a=n[0],l=n[n.length-1];return{bringForwardEnabled:r!==l,bringToFrontEnabled:r!==l,sendBackwardEnabled:s!==a,sendToBackEnabled:s!==a}}setGroupVisibility(e,t){const i=(t?ke:De).format({group:e.name()}),s=this._environment.model();this._environment.beginUndoMacro(i,this._lineToolsAffectChartInvalidation.value()),e.lineTools().forEach(e=>{const i=e.properties().visible,r=new xe(i,t,null,s);this._environment.pushUndoCommand(r)}),this._environment.endUndoMacro()}setGroupLock(e,t){const i=(t?Ve:Be).format({group:e.name()}),s=this._environment.model();this._environment.beginUndoMacro(i,this._lineToolsAffectChartInvalidation.value()),e.lineTools().forEach(e=>{const i=e.properties().frozen,r=new xe(i,t,null,s);this._environment.pushUndoCommand(r)}),this._environment.endUndoMacro()}setGroupName(e,t){const i=this._environment.model(),s=Ne.format({group:e.name(),newName:t}),r=new Ie(i,e,t,s);r.setCustomFlag("doesnt_affect_save",this._lineToolsAffectChartInvalidation.value()),this._environment.pushUndoCommand(r)}canBeGroupped(e){const t=this._environment.model() +;return new Set(e.map(e=>t.paneForSource(e))).size<=1}_groupForLineTool(e){return this._environment.model().lineToolsGroupModel().groups().find(t=>t.containsLineTool(e))||null}}var Oe=i(58121),Fe=i(52546),We=i(50669),He=i(26161);const ze=new c.TranslatedString("apply study template {template}",(0,l.t)("apply study template {template}"));function Ue(e){for(const t of e.panes)for(const e of t.sources)if((0,We.isMainSeriesState)(e))return e.id;return null}class je extends S.UndoCommand{constructor(e,t,i){var s,r;super(ze.format({template:i})),this._newSymbolParams={},this._model=e,this._templateContent=function(e,t){const i=(0,Oe.default)({},e),s=(0,o.ensureNotNull)(Ue(i));for(const e of i.panes){e.mainSourceId===s&&(e.mainSourceId=t);for(const i of e.sources)if(i.id===s){i.id=t;const r=e=>{const i=e.indexOf(s);-1!==i&&e.splice(i,1,t)};if(e.leftAxisesState&&e.rightAxisesState?(e.leftAxisesState.forEach(e=>r(e.sources)),e.rightAxisesState.forEach(e=>r(e.sources))):(r(e.leftAxisSources),r(e.rightAxisSources)),e.overlayPriceScales){const i=e.overlayPriceScales[s];i&&(delete e.overlayPriceScales[s],e.overlayPriceScales[t]=i)}}else i.ownerSource===s&&(i.ownerSource=t)}return i}(t,e.mainSeries().id()),this._initialState=e.studyTemplate(!0,!0,!0);const n=e.mainSeries();t.symbol&&(this._newSymbolParams={symbol:t.symbol,currency:null!==(s=t.currency)&&void 0!==s?s:null,unit:null!==(r=t.unit)&&void 0!==r?r:null}),t.interval&&(this._newSymbolParams.interval=t.interval,this._newSymbolParams.style=(0,ce.getChartStyleByResolution)(t.interval,n.style())),this._initialSymbolParams={symbol:n.symbol(),currency:n.currency(),unit:n.unit(),interval:n.interval(),style:n.style()},this._initialState=e.studyTemplate(),this._initialGroupsState=e.lineToolsGroupModel().state()}redo(){this._model.mainSeries().setSymbolParams(this._newSymbolParams);const e=this._merge(this._templateContent).filter(b.isLineTool);this._model.lineToolsGroupModel().removeLineTools(e);const t=this._model.mainSeries().properties();(0,ce.preparePriceAxisProperties)(t),this._model.recalcVisibleRangeStudies(!0),this._model.setShouldBeSavedEvenIfHidden(!0)}undo(){this._model.mainSeries().setSymbolParams(this._initialSymbolParams),this._merge(this._initialState)}_merge(e){const t=e.version||0,i=this._model,s=i.mainSeries();(0,o.assert)(s.id()===Ue(e)),s.priceScale().properties().childs().lockScale.setValue(!1);const r=i.panes(),n=[];for(let e=r.length;e--;){const t=r[e],i=t.containsMainSeries(),s=t.dataSources();for(let e=s.length;e--;){const t=s[e];(!i||(0,x.isStudy)(t)&&t.isRemovedByStudyTemplates())&&n.push(t)}}i.resetDeferredStudies();const a=(0,Fe.closeSourcesSet)(i,n);for(let e=0;ee.zorder-t.zorder);for(let e=0;e-1,a=o?r[e]:i.createPane(e);o&&t<3&&(0,He.reorderDataSourcesStateZOrder)(n.sources),a.restoreState(n,!1,t), +null!==a.mainDataSource()||i.removePane(a)}return i.syncESD(),s.priceScale().setMode({autoScale:!0}),i.startNotStartedStudies(),i.recalculateAllPanes((0,ue.globalChangeEvent)()),i.fullUpdate(),a}}var Ge=i(9423),qe=i(79680);const Ye=(0,_.getLogger)("Chart.ChartUndoModel"),Ke=new c.TranslatedString("paste drawing",(0,l.t)("paste drawing"));class $e extends S.UndoCommand{constructor(e,t,i,s,r){super(Ke),this._needCopyToOtherCharts=!1,this._sourceState=null,this._model=e,this._clipboardData=t,this._paneIndex=this._model.panes().indexOf(i||(0,o.ensureNotNull)(this._model.paneForSource(this._model.mainSeries()))),this._pasteWithData=!!s,this._keepZIndex=!!r}redo(){const e=this._model.panes()[this._paneIndex],t=(0,o.ensureNotNull)(e.clipboardLineToolOwnerSource(this._clipboardData.source.id));null===this._sourceState&&(this._sourceState=this._getSourceState(t));const i=(0,o.ensureNotNull)(e.restoreLineTool(this._sourceState,this._pasteWithData,this._keepZIndex));this._clipboardData.centeredOnChart&&i.centerPosition&&i.centerPosition();const s=(0,o.ensureNotNull)(t.priceScale());i.setOwnerSource(t),i.setPriceScale(s),s.addDataSource(i),i.restoreFixedPoints(),(0,b.prepareLineToolPropertiesByOwnerSource)(i.properties(),t),i.calcIsActualSymbol(),i.createServerPoints();const r=(0,qe.isActingAsSymbolSource)(t)||t.metaInfo().is_price_study;this._needCopyToOtherCharts=Boolean(r&&((0,Me.drawOnAllCharts)().value()||i.linkKey().value()&&i.isSynchronizable())),this._model.setShouldBeSavedEvenIfHidden(!0)}undo(){if(!this._sourceState)return void Ye.logError("This command was never executed - nothing to undo");const e=this.source();this._clipboardData.centeredOnChart&&(this._clipboardData.centeredOnChart=!1,this._sourceState.points=e.normalizedPoints()),this._model.removeSource(e)}source(){return(0,o.ensureNotNull)(this._model.dataSourceForId((0,o.ensureNotNull)(this._sourceState).id))}needCopyToOtherCharts(){return this._needCopyToOtherCharts}_getSourceState(e){const t=(0,T.clone)(this._clipboardData.source);delete t.state.symbol,null!=t.linkKey&&(t.linkKey=(0,Ge.randomHash)());const i=(0,o.ensureNotNull)(e.priceScale()),s=this._model,{symbol:r,currencyId:n,unitId:l}=this._clipboardData.source.state,c=(0,o.ensureNotNull)(e.symbolSource());let h=!1;!c.symbolSameAsCurrent(r)||(null!==n?n!==(0,ce.symbolCurrency)(c.symbolInfo(),void 0,!0):c.isConvertedToOtherCurrency())||(null!==l?l!==(0,ce.symbolUnit)(c.symbolInfo(),this._model.unitConversionEnabled()):c.isConvertedToOtherUnit())||((0,qe.isActingAsSymbolSource)(e)?h=!0:(0,x.isStudy)(e)&&(h=Boolean(e.metaInfo().is_price_study)));const d=e=>{const t=e.x*s.timeScale().width(),r=e.y*i.height()-40;return new a.Point(t,r)},u=(0,o.ensureNotNull)(e.firstValue());if(this._model.id()===this._clipboardData.modelId||!h)for(let e=0;e(0,tt.trackEvent)("SOS","Apply SOS","Rebind SOS")),this._chartModel.setShouldBeSavedEvenIfHidden(!0),null!==this._paneState){(0,o.ensureNotNull)(this._chartModel.paneForSource(t)).restoreState(this._paneState,!1,this._chartModel.version()),this._paneState=null}}undo(){const e=(0,o.ensureNotNull)(this._chartModel.dataSourceForId((0,o.ensureNotNull)(this._studyId))),t=(0,o.ensureNotNull)(this._chartModel.paneForSource(e)).state();this._chartModel.removeSource(e)&&(this._paneState=t)}insertedStudy(){return this._chartModel.dataSourceForId((0,o.ensureNotNull)(this._studyId))}}var dt=i(59836),ut=i(88735),pt=i.n(ut),_t=i(79222),mt=i(69746),gt=i(67337);const ft=new c.TranslatedString("zoom",(0,l.t)("zoom"));class vt extends S.UndoCommand{constructor(e,t,i,s,r,n){super(ft),this._barSpacing=null,this._rightBarsOffset=null,this._leftBarsOffset=null,this._priceMode=null,this._model=e,this._startBar=t,this._endBar=i,this._startPrice=s,this._endPrice=r,this._pane=n}redo(){const e=(0,o.ensureNotNull)(this._model.timeScale().visibleBarsStrictRange());this._leftBarsOffset=e.firstBar()-this._startBar,this._rightBarsOffset=e.lastBar()-this._endBar,this._barSpacing=this._model.timeScale().barSpacing(),this._priceMode=this._pane.defaultPriceScale().mode(),this._model.zoomToViewport(this._startBar,this._endBar,this._startPrice,this._endPrice,this._pane)}undo(){const e=this._model.timeScale(),t=this._pane.defaultPriceScale(),i=(0,o.ensureNotNull)(e.visibleBarsStrictRange());e.setBarSpacing((0,o.ensureNotNull)(this._barSpacing)),e.zoomToBarsRange(i.firstBar()+(0,o.ensureNotNull)(this._leftBarsOffset),i.lastBar()+(0,o.ensureNotNull)(this._rightBarsOffset)),t.setMode((0,o.ensureNotNull)(this._priceMode)),t.recalculatePriceRange((0,o.ensureNotNull)(e.visibleBarsStrictRange())),this._model.recalculateAllPanes((0,ue.viewportChangeEvent)()),this._model.lightUpdate()}}const St=(0,_.getLogger)("Chart.ChartUndoModel"),yt=new c.TranslatedString("zoom",(0,l.t)("zoom")) +;class bt extends S.UndoCommand{constructor(e,t,i){super(yt),this._baseCmd=e,this._zoomStack=t,this._inOut=i}undo(){if(this._inOut){if(this._baseCmd!==this._zoomStack.head())return void St.logDebug("zoom stack inconsistency");this._baseCmd.undo(),this._zoomStack.pop()}else this._baseCmd.redo(),this._zoomStack.push(this._baseCmd)}redo(){if(this._inOut)this._baseCmd.redo(),this._zoomStack.push(this._baseCmd);else{if(this._baseCmd!==this._zoomStack.head())return void St.logDebug("zoom stack inconsistency");this._baseCmd.undo(),this._zoomStack.pop()}}}const wt=new c.TranslatedString("stop syncing drawing",(0,l.t)("stop syncing drawing"));class Ct extends S.UndoCommand{constructor(e,t){super(wt),this._model=e,this._sourceId=t.id(),this._linkKey=t.linkKey().value()}redo(){(0,o.ensureNotNull)(this._model.dataSourceForId(this._sourceId)).linkKey().setValue(null)}undo(){(0,o.ensureNotNull)(this._model.dataSourceForId(this._sourceId)).linkKey().setValue(this._linkKey)}}const Pt=new c.TranslatedString("restore defaults",(0,l.t)("restore defaults"));class Tt extends S.UndoCommand{constructor(e,t,i=Pt){super(i),this._chartModel=e,this._defaultProperty=t,this._state=t.state()}redo(){this._chartModel.restoreFactoryDefaults(this._defaultProperty)}undo(){this._defaultProperty.mergeAndFire(this._state),this._chartModel.mainSeries().onChartStyleChanged()}}var xt=i(52418);class It extends Tt{redo(){this._defaultProperty.hasChild("intervalsVisibilities")&&this._defaultProperty.childs().intervalsVisibilities.mergeAndFire(xt.intervalsVisibilitiesDefaults),super.redo()}}class Mt extends It{redo(){super.redo(),this._chartModel.recalcColorStudies(!0)}undo(){super.undo(),this._chartModel.recalcColorStudies(!0)}}var Lt=i(36759),At=i(15840),Et=i(59803);function kt(e){const{visible:t,...i}=e;return i}function Dt(e){const{visible:t,...i}=e;return i}function Vt(e){const{drawWick:t,drawBorder:i,drawBody:s,barColorsOnPrevClose:r,...n}=e;return n}function Bt(e){const{drawWick:t,drawBorder:i,drawBody:s,...r}=e;return r}function Nt(e){const{drawWick:t,drawBorder:i,drawBody:s,showRealLastPrice:r,inputs:n,...o}=e;return o}function Rt(e){const{barColorsOnPrevClose:t,dontDrawOpen:i,thinBars:s,...r}=e;return r}function Ot(e){const{showBorders:t,showLabels:i,fontSize:s,drawBody:r,...n}=e;return n}function Ft(e){const{linestyle:t,linewidth:i,styleType:s,priceSource:r,...n}=e;return n}function Wt(e){const{linestyle:t,linewidth:i,priceSource:s,...r}=e;return r}function Ht(e){const{inputs:t,...i}=e;return i}function zt(e){const{inputs:t,...i}=e;return i}function Ut(e){const{inputs:t,...i}=e;return i}function jt(e){const{inputs:t,...i}=e;return i}function Gt(e){const{topLineWidth:t,bottomLineWidth:i,baseLevelPercentage:s,priceSource:r,...n}=e;return n}function qt(e){const{thinBars:t,inputs:i,...s}=e;return s}function Yt(e){ +const{visible:t,style:i,symbol:s,interval:r,sessionId:n,highLowAvgPrice:o,showCountdown:a,bidAsk:l,prePostMarket:c,priceAxisProperties:h,candleStyle:d,hollowCandleStyle:u,haStyle:p,barStyle:_,hiloStyle:m,lineStyle:g,areaStyle:f,renkoStyle:v,pbStyle:S,kagiStyle:y,pnfStyle:b,baselineStyle:w,rangeStyle:C,...P}=e;return{bidAsk:kt(l),prePostMarket:Dt(c),candleStyle:Vt(d),hollowCandleStyle:Bt(u),haStyle:Nt(p),barStyle:Rt(_),hiloStyle:Ot(m),lineStyle:Ft(g),areaStyle:Wt(f),renkoStyle:Ht(v),pbStyle:zt(S),kagiStyle:Ut(y),pnfStyle:jt(b),baselineStyle:Gt(w),rangeStyle:qt(C),...P}}function Kt(e){const{scaleSeriesOnly:t,showSeriesLastValue:i,showStudyLastValue:s,showSymbolLabels:r,showBidAskLabels:n,showPrePostMarketPriceLabel:o,showStudyPlotLabels:a,showFundamentalNameLabel:l,showFundamentalLastValue:c,seriesLastValueMode:h,...d}=e;return d}function $t(e){const{topMargin:t,bottomMargin:i,...s}=e;return s}const Xt=new c.TranslatedString("apply chart theme",(0,l.t)("apply chart theme"));class Zt extends S.UndoCommand{constructor(e,t,i){var s,r,n;super(Xt),this._model=e,this._newSessionProps=t.sessions||(0,Et.factoryDefaults)("sessions"),["candleStyle","hollowCandleStyle","haStyle"].forEach(e=>{t.mainSourceProperties[e].wickUpColor=t.mainSourceProperties[e].wickUpColor||t.mainSourceProperties[e].wickColor,t.mainSourceProperties[e].wickDownColor=t.mainSourceProperties[e].wickDownColor||t.mainSourceProperties[e].wickColor}),t.chartProperties=null!==(s=t.chartProperties)&&void 0!==s?s:{paneProperties:void 0,scalesProperties:void 0},t.chartProperties.paneProperties.vertGridProperties=null!==(r=t.chartProperties.paneProperties.vertGridProperties)&&void 0!==r?r:t.chartProperties.paneProperties.gridProperties,t.chartProperties.paneProperties.horzGridProperties=null!==(n=t.chartProperties.paneProperties.horzGridProperties)&&void 0!==n?n:t.chartProperties.paneProperties.gridProperties;const o=this._model.properties().state().paneProperties.legendProperties;delete o.backgroundTransparency,t.chartProperties.paneProperties.legendProperties={...t.chartProperties.paneProperties.legendProperties,...o};const a=(0,Et.factoryDefaults)("chartproperties"),l=(0,At.deepExtend)({},a,t.chartProperties);this._newChartProps={paneProperties:$t(l.paneProperties),scalesProperties:Kt(l.scalesProperties)},e.timeScale().preserveBarSpacing()&&delete this._newChartProps.scalesProperties.barSpacing;const c=(0,Et.factoryDefaults)("chartproperties.mainSeriesProperties"),h=(0,At.deepExtend)({},c,t.mainSourceProperties);this._newSeriesProps=i?h:Yt(h);const d=e.properties().state();this._oldChartProps={paneProperties:$t(d.paneProperties),scalesProperties:Kt(d.scalesProperties)};const u=e.mainSeries().properties().state();this._oldSeriesProps=i?u:Yt(u),this._oldSessionProps=this._model.sessions().properties().state()}undo(){this._merge(this._oldChartProps,this._oldSeriesProps,this._oldSessionProps),this._model.mainSeries().onChartStyleChanged(),this._model.updateScales(),this._model.chartThemeLoaded()}redo(){ +this._merge(this._newChartProps,this._newSeriesProps,this._newSessionProps),this._model.mainSeries().onChartStyleChanged(),this._model.updateScales(),this._model.chartThemeLoaded()}_merge(e,t,i){var s,r,n,o;const a=this._model;(0,le.saveDefaultProperties)(!0),e&&(a.properties().childs().paneProperties.mergeAndFire(e.paneProperties),a.properties().childs().scalesProperties.mergeAndFire(e.scalesProperties)),"priceAxisProperties"in t&&a.mainSeries().priceScale().setMode({autoScale:null===(s=t.priceAxisProperties)||void 0===s?void 0:s.autoScale,percentage:null===(r=t.priceAxisProperties)||void 0===r?void 0:r.percentage,log:null===(n=t.priceAxisProperties)||void 0===n?void 0:n.log,lockScale:null===(o=t.priceAxisProperties)||void 0===o?void 0:o.lockScale}),a.mainSeries().properties().mergeAndFire(t),a.mainSeries().properties().saveDefaults(),a.mainSeries().createPaneView(),a.mainSeries().invalidateBarStylesCache(),a.recalculateAllPanes((0,ue.globalChangeEvent)()),a.fullUpdate(),a.properties().saveDefaults(),a.sessions().restoreState({properties:i},!1),(0,le.saveDefaultProperties)(!1)}}const Jt=new c.TranslatedString("change resolution",(0,l.t)("change resolution"));class Qt extends S.UndoCommand{constructor(e,t,i){let s;super(Jt),this._sourceId=e.id();const r=(0,ce.isRangeStyle)(e.style()),n=me.Interval.isRange(t);!r&&n?s=11:r&&!n&&(s=(0,ce.getLastUsedStyle)()),this._newSymbolParams={interval:t,style:s},this._prevSymbolParams={symbol:e.symbol(),currency:e.currency(),unit:e.unit(),interval:e.interval(),style:e.style()},this._chartWidget=i}redo(){this._chartWidget.screen.show();this._symbolSource().setSymbolParams(this._newSymbolParams)}undo(){this._chartWidget.screen.show();this._symbolSource().setSymbolParams(this._prevSymbolParams)}_symbolSource(){return(0,o.ensureNotNull)(this._chartWidget.model().model().dataSourceForId(this._sourceId))}}const ei=new c.TranslatedString("send {title} backward",(0,l.t)("send {title} backward")),ti=new c.TranslatedString("bring {title} forward",(0,l.t)("bring {title} forward")),ii=new c.TranslatedString("insert {title} after {target}",(0,l.t)("insert {title} after {target}")),si=new c.TranslatedString("insert {title} before {target}",(0,l.t)("insert {title} before {target}")),ri=new c.TranslatedString("cut {title}",(0,l.t)("cut {title}")),ni=new c.TranslatedString("cut sources",(0,l.t)("cut sources")),oi=new c.TranslatedString("remove {title}",(0,l.t)("remove {title}")),ai=new c.TranslatedString("remove drawings group",(0,l.t)("remove drawings group")),li=new c.TranslatedString("move scale",(0,l.t)("move scale")),ci=new c.TranslatedString("stop syncing line tool(s)",(0,l.t)("stop syncing line tool(s)")),hi=new c.TranslatedString("zoom out",(0,l.t)("zoom out")),di=new c.TranslatedString("zoom in",(0,l.t)("zoom in")),ui=new c.TranslatedString("move drawing(s)",(0,l.t)("move drawing(s)")),pi=new c.TranslatedString("load default drawing template",(0,l.t)("load default drawing template")),_i=new c.TranslatedString("change currency",(0, +l.t)("change currency")),mi=new c.TranslatedString("change unit",(0,l.t)("change unit")),gi=new c.TranslatedString("clone line tools",(0,l.t)("clone line tools")),fi=new c.TranslatedString("merge up",(0,l.t)("merge up")),vi=new c.TranslatedString("merge down",(0,l.t)("merge down")),Si=new c.TranslatedString("merge to pane",(0,l.t)("merge to pane")),yi=new c.TranslatedString("unmerge up",(0,l.t)("unmerge up")),bi=new c.TranslatedString("unmerge down",(0,l.t)("unmerge down")),wi=new c.TranslatedString("unmerge to new bottom pane",(0,l.t)("unmerge to new bottom pane")),Ci=new c.TranslatedString("move {title} to new right scale",(0,l.t)("move {title} to new right scale")),Pi=new c.TranslatedString("move {title} to new left scale",(0,l.t)("move {title} to new left scale")),Ti=new c.TranslatedString("make {title} no scale (Full screen)",(0,l.t)("make {title} no scale (Full screen)")),xi=new c.TranslatedString("scroll time",(0,l.t)("scroll time")),Ii=new c.TranslatedString("scale time",(0,l.t)("scale time")),Mi=new c.TranslatedString("reset time scale",(0,l.t)("reset time scale")),Li=new c.TranslatedString("reset scales",(0,l.t)("reset scales")),Ai=new c.TranslatedString("create {tool}",(0,l.t)("create {tool}")),Ei=new c.TranslatedString("change {pointIndex} point",(0,l.t)("change {pointIndex} point")),ki=new c.TranslatedString("paste {title}",(0,l.t)("paste {title}")),Di=new c.TranslatedString("insert {title}",(0,l.t)("insert {title}")),Vi=new c.TranslatedString("remove all studies",(0,l.t)("remove all studies")),Bi=new c.TranslatedString("remove drawings",(0,l.t)("remove drawings")),Ni=new c.TranslatedString("remove all studies and drawing tools",(0,l.t)("remove all studies and drawing tools"));new c.TranslatedString("turn line tools sharing off",(0,l.t)("turn line tools sharing off")),new c.TranslatedString("share line tools in layout",(0,l.t)("share line tools in layout")),new c.TranslatedString("share line tools globally",(0,l.t)("share line tools globally"));function Ri(e,t){return{bringForwardEnabled:e.bringForwardEnabled||t.bringForwardEnabled,bringToFrontEnabled:e.bringToFrontEnabled||t.bringToFrontEnabled,sendBackwardEnabled:e.sendBackwardEnabled||t.sendBackwardEnabled,sendToBackEnabled:e.sendToBackEnabled||t.sendToBackEnabled}}function Oi(e){return new c.TranslatedString(e.name(),e.title())}function Fi(){return(0,Me.drawOnAllCharts)().value()?1:0}class Wi extends(r()){constructor(e,t,i,s,r,n,o,a,l,c,h){super(),this._createLineCommand=null,this._initialTimeScrollState=null,this._initialTimeScrollPos=null,this._scalePriceInfo=null,this._currentSourceMoveCommand=null,this._currentLineChangeCommand=null,this._currentCustomMoveCommand=null,this._zoomStack=new v.UndoStack,this._lineToolsDoNotAffectChartInvalidation=new Te.FeatureToggleWatchedValue("do_not_invalidate_chart_on_changing_line_tools",!1),this._chartWidget=n,this.m_model=new(pt())(e,t,i,s,r,this,a,l,c,h),this._undoHistory=o,this._lineToolsGroupController=new Re({model:this._model.bind(this),pushUndoCommand:this._pushUndoCommand.bind(this), +beginUndoMacro:(e,t)=>{this._undoHistory.beginUndoMacro(e).setCustomFlag("doesnt_affect_save",!!t)},endUndoMacro:this._undoHistory.endUndoMacro.bind(this._undoHistory),emitEvent:this.emitEvent.bind(this)})}undoHistory(){return this._undoHistory}setWatchedValue(e,t,i){this._undoHistory.setWatchedValue(e,t,i)}lineToolsGroupController(){return this._lineToolsGroupController}mergeAllScales(e){!function(e,t){e.beginUndoMacro("left"===t?m:g),e.model().panes().forEach(i=>{const s="left"===t?i.rightPriceScales():i.leftPriceScales(),r=("left"===t?i.leftPriceScales():i.rightPriceScales()).concat(s),n="overlay"===i.priceScalePosition(i.defaultPriceScale())?r[0]:i.defaultPriceScale();e.movePriceScale(i,n,t,0),r.forEach(t=>{if(t===n)return;let s=t.mainSource();for(;null!==s;){e.moveToScale(s,i,n,null,!0);const r=t.mainSource();if(r===s){f.logError("Loop detected while trying to merge scales");break}s=r}})}),e.endUndoMacro(),e.model().fullUpdate()}(this,e)}movePriceScale(e,t,i,s){const r=new y(this._model(),e,t,i,s,li);this._pushUndoCommand(r)}createLineTool({pane:e,point:t,linetool:i,properties:s,linkKey:r,ownerSource:n,disableSynchronization:a,sharingMode:l=Fi(),id:h}){if(("LineToolRegressionTrend"===i||"LineToolAnchoredVWAP"===i)&&!this.canCreateStudy())return(0,d.showTooManyStudiesNotice)(),null;const u=Ai.format({tool:new c.TranslatedString(i,E.lineToolsLocalizedNames[i])});this.beginUndoMacro(u,this._lineToolsDoNotAffectChartInvalidation.value());const p=!a;this._createLineCommand=new D(this._model(),e,i,n||(0,o.ensureNotNull)(e.mainDataSource()),l,h);const _=this._createLineCommand.startCreatingLine(t,s,r||null),m=(0,o.ensureNotNull)(this._createLineCommand.line());let g=null;if(_&&(p&&this.finishLineTool(m),this._pushUndoCommand(this._createLineCommand),this._createLineCommand=null,g={points:m.normalizedPoints(),interval:this.mainSeries().interval()}),p&&void 0===r&&(0,Me.drawOnAllCharts)().value()&&m.isSynchronizable()){const e=(0,o.ensureNotNull)(this.model().externalTimeStamp(t.index)),s={point:{price:t.price,timeStamp:e},linetool:i,properties:m.properties(),symbol:this.mainSeries().symbol(),model:this.model(),linkKey:(0,o.ensureNotNull)(m.linkKey().value()),finalState:g,id:m.id()};m.isFixed()&&(s.pointPositionPercents=m.calcPositionPercents()[0]),(0,Me.createLineTool)(s)}return this.endUndoMacro(),m}continueCreatingLine(e,t,i,s){const r=(0,o.ensureNotNull)(this._createLineCommand);this.beginUndoMacro(r.text(),this._lineToolsDoNotAffectChartInvalidation.value());const n=(0,o.ensureNotNull)(this._model().lineBeingCreated()),a=r.continueCreatingLine(e,t,i,s);let l=null;if(a&&(this.finishLineTool(n),this._pushUndoCommand(r),this._createLineCommand=null,l={points:n.normalizedPoints(),interval:this.mainSeries().interval()}),r.drawOnAllCharts()&&n.isSynchronizable()){const i=(0,o.ensureNotNull)(this._model().externalTimeStamp(e.index));(0,Me.continueLineTool)({point:{price:e.price,timeStamp:i},envState:t,finalState:l,model:this._model()})}return this.endUndoMacro(),a}continueExternalLine(e,t,i){const s=(0, +o.ensureNotNull)(this._createLineCommand),r=s.continueCreatingLine(e,t,i);return r&&(this._pushUndoCommand(s),this._createLineCommand=null),r}finishLineTool(e){this._model().finishLineTool(e)}pasteImageAsLineTool(e,t,i,s){return null}loadRange(e){this._pushUndoCommand(new fe(this._model(),e))}unlinkLines(e){const t=this.model();this.beginUndoMacro(ci,this._lineToolsDoNotAffectChartInvalidation.value());for(const i of e)null!==i.linkKey().value()&&(0,Me.removeLineTool)({withUndo:!0,model:this.model(),symbol:i.symbol(),linkKey:(0,o.ensureNotNull)(i.linkKey().value()),sourceTitle:Oi(i),lineToolState:i.state(!1),unlink:!0}),this._pushUndoCommand(new Ct(t,i));this.endUndoMacro()}zoomFromViewport(){const e=new bt((0,o.ensureDefined)(this._zoomStack.head()),this._zoomStack,!1);this._pushUndoCommand(e)}zoomToViewport(e,t,i,s,r){const n=new vt(this.m_model,e,t,i,s,r),o=new bt(n,this._zoomStack,!0);this._pushUndoCommand(o)}zoomStack(){return this._zoomStack}hoveredSource(){return this.m_model.hoveredSource()}setProperty(e,t,i,s){if(e&&e.value()!==t){const r=new xe(e,t,i,this.m_model,s);this._pushUndoCommand(r),this.emitEvent("setProperty")}}withMacro(e,t,i){const s=this.beginUndoMacro(e,i);try{t()}finally{this.endUndoMacro()}return s}barsMarksSources(){return this.m_model.barsMarksSources()}barMarksSourceForId(e){return this.m_model.barMarksSourceForId(e)}removeAllDrawingTools(){this.beginUndoMacro(Bi,!0),this._removeAllDrawingToolsImpl(),this.endUndoMacro()}removeAllStudiesAndDrawingTools(){this.beginUndoMacro(Ni),this._removeAllDrawingToolsImpl(),this._removeAllStudiesImpl(),this.endUndoMacro()}removeAllStudies(){this.beginUndoMacro(Vi),this._removeAllStudiesImpl(),this.endUndoMacro()}canZoomIn(){return this.model().canZoomIn()}canZoomOut(){return this.model().canZoomOut()}zoomOut(){const e=this.timeScale().width();if(this.canZoomOut()){try{this.beginUndoMacro(hi)}catch(e){return}(0,ve.doAnimate)({to:e/5,onStep:e=>{this.startScaleTime(0),this.scaleTimeTo(e),this.endScaleTime()},onComplete:()=>this.endUndoMacro()})}}zoomIn(){const e=this.timeScale().width();if(this.canZoomIn()){try{this.beginUndoMacro(di)}catch(e){return}(0,ve.doAnimate)({to:e/5,onStep:e=>{this.startScaleTime(e),this.scaleTimeTo(0),this.endScaleTime()},onComplete:()=>this.endUndoMacro()})}}startMovingSources(e,t,i,s){e.filter(e=>e.doesMovingAffectsUndo()).length&&(this._currentSourceMoveCommand=new I(this.model(),e,ui,!1),e.every(b.isLineTool)&&this._currentSourceMoveCommand.setCustomFlag("doesnt_affect_save",this._lineToolsDoNotAffectChartInvalidation.value())),this.model().startMovingSources(e,t,i,new Map,s)}moveSources(e,t){this.model().moveSources(e,new Map,t)}endMovingSource(e,t){this.model().endMovingSources(e,void 0,t),null!==this._currentSourceMoveCommand&&(this._currentSourceMoveCommand.saveNewState(),this._pushUndoCommand(this._currentSourceMoveCommand)),this._currentSourceMoveCommand=null}startChangingLinetool(e,t,i,s,r){this._currentLineChangeCommand=new I(this.model(),[e],Ei.format({pointIndex:i}),!1), +this._currentLineChangeCommand.setCustomFlag("doesnt_affect_save",this._lineToolsDoNotAffectChartInvalidation.value()),this.model().startChangingLinetool(e,t,i,s,r)}changeLinePoint(e,t){this.model().changeLinePoint(e,t)}endChangingLinetool(e){this.model().endChangingLinetool(e),null!==this._currentLineChangeCommand&&(this._currentLineChangeCommand.saveNewState(),this._pushUndoCommand(this._currentLineChangeCommand)),this._currentLineChangeCommand=null}setChartStyleProperty(e,t,i){if(e.value()!==t){const s=new pe(e,t,this.mainSeries(),i,this.model(),this.chartWidget());this._pushUndoCommand(s),this.emitEvent("setChartStyleProperty"),(0,ae.trackChartStyleChanged)(e.value())}}restorePropertiesForSource(e){(0,b.isLineTool)(e)?this._restoreLineToolFactoryDefaults(e):this._restoreStudyFactoryDefaults(e)}restoreState(e,t,i){return this.m_model.restoreState(e,t,i)}async clipboardCopy(e,t=this.selection().dataSources()){if(!(0,gt.enabled)("datasource_copypaste"))return;const i=t.filter(e=>e.copiable());if(0===i.length)return;for(const e of i)if((0,x.isStudy)(e)&&e.isChildStudy())throw new Error("Can not copy child study");const s=(0,V.clipboardDataForSources)(this._model().id(),i);return null!==s?e.write({app:JSON.stringify(s),text:s.title}):void 0}async clipboardCut(e,t=this.selection().dataSources()){if(!(0,gt.enabled)("datasource_copypaste"))return;const i=t.filter(e=>e.copiable());if(0===i.length)return;await this.clipboardCopy(e,i);const s=i.filter(e=>e.isUserDeletable());if(0===s.length)return;const r=(1===s.length?ri:ni).format({title:Oi(s[0])});this.beginUndoMacro(r),this.m_model.selectionMacro(()=>{this.removeSources(s,!1,r)}),this.endUndoMacro()}async clipboardPaste(e,t){let i=null;if((0,gt.enabled)("datasource_copypaste")&&(i=i||await e.read(),i.app)){const e=JSON.parse(i.app);if(null!==this.pasteSourceFromClip(t,e))return}await this._processSpecialLineToolsContents(e,i,t)}applyStudyTemplate(e,t){const i=new je(this._model(),e,t);this._pushUndoCommand(i)}startCustomMoving(e,t,i){this._currentCustomMoveCommand=new ct(this.model(),e,t,i)}customMoveBeingProcessed(){return null!==this._currentCustomMoveCommand}processCustomMove(e){(0,o.ensureNotNull)(this._currentCustomMoveCommand).move(e)}endCustomMoving(){null!==this._currentCustomMoveCommand&&this._currentCustomMoveCommand.hasChanges()&&(this._pushUndoCommand(this._currentCustomMoveCommand),this._currentCustomMoveCommand=null)}cloneLineTools(e,t){for(let t=0;t(0,o.ensureNotNull)(this.model().dataSourceForId(e)));this.copyToOtherCharts(e)}return this.endUndoMacro(),this.emitEvent("cloneLineTools"),i.newIds()}removeSource(e,t,i){this.lineBeingCreated()!==e?this.removeSources([e],t,oi.format({title:Oi(e)}),i):this.cancelCreatingLine()}removeSelectedSources(){const e=this._model().selection().dataSources() +;if(!e.length)return;const t=(e.length>1?ai:oi).format({title:Oi(e[0])});this.removeSources(e,!1,t)}removeSources(e,t,i,s){s||(e=e.filter(e=>e.isUserDeletable()));const r=this._model(),n=r.lineToolsGroupModel(),a=e.every(b.isLineTool)&&this._lineToolsDoNotAffectChartInvalidation.value();this.beginUndoMacro(i,a),r.selectionMacro(s=>{const a=new Map;e.forEach(e=>{if((0,b.isLineTool)(e)){const t=n.groupForLineTool(e);if(null!==t){const i=a.get(t)||[];i.push(e),a.set(t,i)}null!==e.linkKey().value()&&(0,Me.removeLineTool)({withUndo:!0,model:this.model(),linkKey:(0,o.ensureNotNull)(e.linkKey().value()),symbol:this.model().mainSeries().symbol(),lineToolState:e.state(!1),sourceTitle:Oi(e)})}}),a.forEach((e,t)=>{const i=new P.ExcludeLineToolsFromGroupUndoCommand(r,t,e);this._pushUndoCommand(i)});const l=new C.RemoveSourcesCommand(r,e,i),c=l.removedIds();this._pushUndoCommand(l),!t&&c.length>0&&(1===c.length?this.emitEvent("removeSource",[c[0]]):this.emitEvent("removeSources",[c]))}),this.endUndoMacro()}removeUnloadedLineTool({lineToolsSynchronizer:e,sourceTitle:t,linkKey:i,symbol:s,state:r,withUndo:n,unlink:o}){}async scrollToLineTool(e){const t=this.timeScale().logicalRange();if(null===t)return;const i=this.timeScale().barSpacing();let s=t.left();const r=e.points().map(e=>e.index);let n=this.timeScale().points().firstIndex();const a=this.timeScale().points().lastIndex();if(null===n||null===a)return;const l=t.length()/2;if(0===r.length||r.some(e=>t.contains(e)))return;const c=()=>{const t=e.points().map(e=>e.index),i=t.filter(e=>e<=a).reduce((e,t)=>null===e?t:Math.max(e,t),null);return null!==i?i:t.reduce((e,t)=>Math.min(e,t))};let d,u=c();if(n-l>u){const t=e.points().map(e=>e.time).filter(T.notUndefined).map(e=>e.valueOf()/1e3);if(0===t.length)return;const i=t.reduce((e,t)=>Math.min(e,t),t[0]);await this.model().gotoTime(i),u=c();s=(0,o.ensureNotNull)(this.timeScale().logicalRange()).left(),n=(0,o.ensureNotNull)(this.timeScale().points().firstIndex())}n-l>u?(d=(s-n+l)*i,this.mainSeries().setGotoDateResult({timestamp:(0,o.ensureNotNull)(this.timeScale().points().valueAt(n)),eod:!0})):d=(s-u+1+l)*i,this.startScrollTime(0),(0,ve.doAnimate)({onStep:(e,t)=>this.scrollTimeTo(t),from:0,to:Math.round(d),easing:h.easingFunc.easeInOutCubic,duration:h.dur,onComplete:()=>this.endScrollTime()})}mergeSourceUp(e){const t=new L.MergeUpUndoCommand(this._model(),e,fi);this._mergeUnmergeSource(e,t)}mergeSourceDown(e){const t=new L.MergeDownUndoCommand(this._model(),e,vi);this._mergeUnmergeSource(e,t)}mergeToPane(e,t){const i=this._model().panes().indexOf(t),s=new L.MergeToTargetPane(this._model(),e,i,Si);this._mergeUnmergeSource(e,s)}unmergeSourceUp(e){const t=new M.UnmergeUpUndoCommand(this._model(),e,yi);this._mergeUnmergeSource(e,t)}unmergeSourceDown(e){const t=new M.UnmergeDownUndoCommand(this._model(),e,bi);this._mergeUnmergeSource(e,t)}unmergeToNewBottomPane(e){const t=new M.UnmergeToNewBottomPane(this._model(),e,wi);this._mergeUnmergeSource(e,t)}availableZOrderOperations(e){ +const t=this._model().lineToolsGroupModel(),i=e.filter(b.isLineTool),s=i.map(e=>t.groupForLineTool(e));(0,o.assert)(new Set(s).size<=1,"Cannot move line tools from different group");const r=0===s.length?null:s[0];let n={bringForwardEnabled:!1,bringToFrontEnabled:!1,sendBackwardEnabled:!1,sendToBackEnabled:!1};const a=new Set(i);for(const t of(0,A.sortSources)(e)){if((0,b.isLineTool)(t)&&null!==r){const e=(0,A.sortSources)(r.lineTools().filter(e=>!a.has(e)||e===t));n=Ri(n,{bringForwardEnabled:t!==e[e.length-1],bringToFrontEnabled:t!==e[e.length-1],sendBackwardEnabled:t!==e[0],sendToBackEnabled:t!==e[0]});continue}const e=(0,o.ensureNotNull)(this._model().paneForSource(t)).sourcesByGroup().allExceptSpecialSources();if(0===e.length)continue;const i=t.zorder(),s=e[0].zorder(),l=e[e.length-1].zorder();n=Ri(n,{bringForwardEnabled:i!==l,bringToFrontEnabled:i!==l,sendBackwardEnabled:i!==s,sendToBackEnabled:i!==s})}return n}sendToBack(e){if(!this.availableZOrderOperations(e).sendToBackEnabled)throw new Error("Send to back operation is unavailable");let t=null;const i=e[0];if((0,b.isLineTool)(i)){const s=this._model().lineToolsGroupModel().groupForLineTool(i);if(null!==s){const i=s.lineTools();t=new X(this.model(),(0,A.sortSources)(e),i[0])}}null===t&&(t=new q(this.model(),(0,A.sortSources)(e))),this._pushUndoCommand(t),this.emitEvent("changeZOrder",[e])}bringToFront(e){if(!this.availableZOrderOperations(e).bringToFrontEnabled)throw new Error("Bring to front operation is unavailable");let t=null;const i=e[0];if((0,b.isLineTool)(i)){const s=this._model().lineToolsGroupModel().groupForLineTool(i);if(null!==s){const i=s.lineTools();t=new K(this.model(),(0,A.sortSources)(e),i[i.length-1])}}null===t&&(t=new G(this.model(),(0,A.sortSources)(e))),this._pushUndoCommand(t),this.emitEvent("changeZOrder",[e])}sendBackward(e){if(!this.availableZOrderOperations(e).sendBackwardEnabled)throw new Error("Send backward operation is unavailable");const t=ei.format({title:Oi(e[0])});this._sendBackOrBringForward(t,(0,A.sortSources)(e),(e,t)=>new J(this.model(),e,t))}bringForward(e){if(!this.availableZOrderOperations(e).bringForwardEnabled)throw new Error("Bring forward operation is unavailable");const t=ti.format({title:Oi(e[0])});this._sendBackOrBringForward(t,(0,A.sortSources)(e),(e,t)=>new ee(this.model(),e,t))}insertAfter(e,t){e=(0,A.sortSources)(e);const i=ii.format({title:Oi(e[0]),target:Oi(t)});this._insertAfterOrBefore(i,e,t,()=>new K(this.model(),e,t))}insertBefore(e,t){e=(0,A.sortSources)(e);const i=si.format({title:Oi(e[0]),target:Oi(t)});this._insertAfterOrBefore(i,e,t,()=>new X(this.model(),e,t))}detachToRight(e,t){(0,tt.trackEvent)("Chart","Move to new right scale");const i=Ci.format({title:Oi(e)}),s=new Je.MoveToNewPriceScaleUndoCommand(this.model(),e,t,"right",i);this._pushUndoCommand(s),this.emitEvent("moveSource",[e])}detachToLeft(e,t){(0,tt.trackEvent)("Chart","Move to new left scale");const i=Pi.format({title:Oi(e)}),s=new Je.MoveToNewPriceScaleUndoCommand(this.model(),e,t,"left",i);this._pushUndoCommand(s), +this.emitEvent("moveSource",[e])}detachNoScale(e,t){(0,tt.trackEvent)("Chart","Make source no scale");const i=Ti.format({title:Oi(e)}),s=new Je.MoveToNewPriceScaleUndoCommand(this.model(),e,t,"overlay",i);this._pushUndoCommand(s),this.emitEvent("moveSource",[e])}moveToScale(e,t,i,s,r){(0,tt.trackEvent)("Chart","Move source to target scale"),this.beginUndoMacro(s);const n=new Je.MoveToExistingPriceScaleUndoCommand(this.model(),e,t,i,s),o=r?null:(0,it.sourceNewCurrencyOnPinningToPriceScale)(e,i,this._model()),a=r?null:(0,_t.sourceNewUnitOnPinningToPriceScale)(e,i,this._model());this._pushUndoCommand(n),null!==o&&this.setPriceScaleCurrency(i,o),null!==a&&this.setPriceScaleUnit(i,a),this.endUndoMacro(),this.emitEvent("moveSource",[e])}startScrollTime(e){const t=this.timeScale();this._initialTimeScrollState={rightOffset:t.rightOffset(),barSpacing:t.barSpacing()},this._initialTimeScrollPos=e,this.model().startScrollTime(e)}scrollTimeTo(e){let t=!1;return null!==this._initialTimeScrollPos&&null!==this._initialTimeScrollState&&Math.abs(e-this._initialTimeScrollPos)>20&&(this._pushUndoCommand(new oe.TimeScaleChangeUndoCommand(this.model(),this._initialTimeScrollState,xi)),this._initialTimeScrollPos=null,this._initialTimeScrollState=null,t=!0),this.model().scrollTimeTo(e),t}endScrollTime(){this.model().endScrollTime(),this._initialTimeScrollPos=null,this._initialTimeScrollState=null}startScaleTime(e){const t=this.timeScale(),i={rightOffset:t.rightOffset(),barSpacing:t.barSpacing()};this._pushUndoCommand(new oe.TimeScaleChangeUndoCommand(this.model(),i,Ii)),this.model().startScaleTime(e)}scaleTimeTo(e){this.model().scaleTimeTo(e)}endScaleTime(){this.model().endScaleTime()}resetTimeScale(){const e=this.timeScale(),t={rightOffset:e.rightOffset(),barSpacing:e.barSpacing()};this._pushUndoCommand(new oe.TimeScaleChangeUndoCommand(this.model(),t,Mi)),this.model().resetTimeScale()}startScalePrice(e,t,i,s){this._scalePriceInfo={priceScaleState:t.state(),tryMergeConsecutiveScales:s},this.model().startScalePrice(e,t,i)}scalePriceTo(e,t,i){this.model().scalePriceTo(e,t,i)}endScalePrice(e,t){this.model().endScalePrice(e,t);const i=(0,o.ensureNotNull)(this._scalePriceInfo);(0,n.default)(i.priceScaleState,t.state())||this._pushUndoCommand(new mt.PriceScaleChangeUndoCommand(this.model(),e,t,i.priceScaleState,i.tryMergeConsecutiveScales)),this._scalePriceInfo=null}startTwoPointsScalePrice(e,t,i,s,r){this._scalePriceInfo={priceScaleState:t.state(),tryMergeConsecutiveScales:r},this.model().startTwoPointsScalePrice(e,t,i,s)}twoPointsScalePriceTo(e,t,i,s){this.model().twoPointsScalePriceTo(e,t,i,s)}endTwoPointsScalePrice(e,t){this.model().endTwoPointsScalePrice(e,t);const i=(0,o.ensureNotNull)(this._scalePriceInfo);(0,n.default)(i.priceScaleState,t.state())||this._pushUndoCommand(new mt.PriceScaleChangeUndoCommand(this.model(),e,t,i.priceScaleState,i.tryMergeConsecutiveScales)),this._scalePriceInfo=null}resetPriceScale(e,t){const i=t.state();this.model().resetPriceScale(e,t),(0, +n.default)(i,t.state())||this._pushUndoCommand(new mt.PriceScaleChangeUndoCommand(this.m_model,e,t,i))}rearrangePanes(e,t){const i=new ne(this._model(),e,t);this._pushUndoCommand(i)}movePane(e,t){const i=new ne(this._model(),e,t);this._pushUndoCommand(i)}pasteSourceFromClip(e,t,i){const s=t;if(!s||0===s.sources.length)return null;const r=e||(0,o.ensureNotNull)(this.model().paneForSource(this.mainSeries()));if(!s.sources.some(e=>"drawing"!==e.type||null!==r.clipboardLineToolOwnerSource(e.source.id)))return null;this.beginUndoMacro(ki.format({title:s.title}));let n=0;const a=[],l=[];for(const t of s.sources)if("drawing"===t.type&&null!==r.clipboardLineToolOwnerSource(t.source.id)){const e=this.pasteLineTool(r,t);n<5&&((0,ae.trackDrawingPasted)(e),n+=1),l.push(e),a.push(e)}else"study"===t.type&&t.source&&t.source.metaInfo&&this.checkIfFeatureAvailable(new(p())(t.source.metaInfo))&&a.push(this.pasteStudy(t,i?e:void 0));return l.length&&this.selectionMacro(e=>{e.clearSelection(),l.forEach(t=>{e.addSourceToSelection(t,null)})}),this.endUndoMacro(),a}pasteLineTool(e,t,i,s){t.source.state.intervalsVisibilities=(0,Lt.mergeIntervalVisibilitiesDefaults)(t.source.state.intervalsVisibilities),(0,Lt.makeIntervalsVisibilitiesVisibleAtInterval)(t.source.state.intervalsVisibilities,me.Interval.parse(this.model().mainSeries().interval()));const r=new $e(this.model(),t,e,i,s);this._pushUndoCommand(r);const n=r.source();return r.needCopyToOtherCharts()&&this.copyToOtherCharts([n]),this.selectionMacro(e=>{e.clearSelection(),e.addSourceToSelection(n,null)}),n}pasteStudy(e,t){const i=new nt(this.model(),e,null==t?void 0:t.id());this._pushUndoCommand(i);const s=(0,o.ensureNotNull)(i.state()).id;return(0,o.ensureNotNull)(this._model().dataSourceForId(s))}setPriceScaleCurrency(e,t){const i=new Xe.SetPriceScaleCurrencyUndoCommand(e,t,this.chartWidget(),_i);this._pushUndoCommand(i)}setPriceScaleUnit(e,t){const i=new Ze.SetPriceScaleUnitUndoCommand(e,t,this.chartWidget(),mi);this._pushUndoCommand(i)}setSymbol(e,t){e.symbol()!==t&&this._pushUndoCommand(new et(e,t,this.chartWidget()))}setResolution(e,t){me.Interval.isEqual(e.interval(),t)||this._pushUndoCommand(new Qt(e,t,this.chartWidget()))}chartLoadTheme(e,t,i){const s=new Zt(this.model(),e,t);i?s.redo():this._pushUndoCommand(s)}isJustClonedChart(){return this._chartWidget.isJustClonedChart()}copyToOtherCharts(e){const t=this.mainSeries(),i=t.syncModel(),s=this.timeScale();if(i)for(const r of e){if(!r.isSynchronizable())continue;const e=r.linkKey().value()||(0,Ge.randomHash)();r.linkKey().setValue(e);const n=r.state(!1),a=r.normalizedPoints(),l=r.properties().interval.value(),c=t.interval();let h;if(me.Interval.isEqual(l,c))h=a.map(e=>{const t=(0,o.ensureNotNull)(s.timePointToIndex(e.time_t))+e.offset;return{price:e.price,timeStamp:(0,o.ensureNotNull)(this.model().externalTimeStamp(t))}});else{const e=i.createNewModelWithResolution(l);h=a.map(t=>({price:t.price,timeStamp:0===t.offset?t.time_t:e.projectTime(t.time_t,t.offset)}))}const d={...n,id:r.id(),linkKey:e,points:h,linetool:r.toolname, +model:this.model(),symbol:t.symbol(),finalState:{points:a,interval:l},pointPositionPercents:r.isFixed()?r.calcPositionPercents():void 0,sharingMode:r.sharingMode().value()};(0,Me.copyLineTool)(d)}}addPaneStretchFactorUndoCommand(e,t,i,s){const r=new ot(this.model(),e,t,i,s);this._pushUndoCommand(r)}paneForSource(e){return this.m_model.paneForSource(e)}destroy(){this._lineToolsDoNotAffectChartInvalidation.destroy(),this.m_model.destroy()}moveSelectedToolsLeft(){return this._moveSelectedTools(2)}moveSelectedToolsUp(){return this._moveSelectedTools(0)}moveSelectedToolsRight(){return this._moveSelectedTools(3)}moveSelectedToolsDown(){return this._moveSelectedTools(1)}insertStudyWithoutCheck(e,t){return this._insertStudy(e,t,{},!1,void 0,void 0,void 0,void 0,void 0,null,void 0)}saveLineToolState(e,t){this._pushUndoCommand(new I(this.m_model,[e],t))}resetScales(){this.beginUndoMacro(Li),this.resetTimeScale();for(const e of this.m_model.panes()){for(const t of e.leftPriceScales())this.resetPriceScale(e,t);for(const t of e.rightPriceScales())this.resetPriceScale(e,t)}this.endUndoMacro(),this.m_model.recalculateAllPanes((0,ue.viewportChangeEvent)())}shareLineTools(e,t){}_mergeUnmergeSource(e,t){this.beginUndoMacro(t.text());const i=(0,o.ensureNotNull)(this._model().paneForSource(e)),s=new Set(i.sourcesByGroup().lineSources().filter(t=>t.ownerSource()===e));this._model().lineToolsGroupModel().groups().filter(e=>{const t=e.lineTools().some(e=>s.has(e)),i=e.lineTools().some(e=>!s.has(e));return t&&i}).forEach(e=>{this._pushUndoCommand(new P.ExcludeLineToolsFromGroupUndoCommand(this._model(),e,e.lineTools()))}),this._pushUndoCommand(t),this.endUndoMacro()}_insertStudy(e,t,i,s,r,n,a,l,c,h,d){const u=Di.format({title:e.description});this.beginUndoMacro(u);const p=new ht(this.model(),e,t,i,s,r,n,a,l,c,h||null,u);this._pushUndoCommand(p);const _=p.insertedStudy();if(void 0!==d){const e=new dt.SetPriceScaleModeCommand(d,(0,o.ensureNotNull)(_.priceScale()),null,this.model());this._pushUndoCommand(e)}return this.endUndoMacro(),_}async _processSpecialLineToolsContents(e,t,i){0}_insertAfterOrBefore(e,t,i,s){const r=(0,o.ensureNotNull)(this._model().paneForSource(i));if(t.some(e=>(0,b.isLineTool)(e)&&this._model().paneForSource(e)!==r))throw new Error("Cannot insert line tool after target on another pane");this.beginUndoMacro(e),t.forEach(e=>{(0,o.ensureNotNull)(this.model().paneForSource(e))!==r&&this.mergeToPane(e,r)});const n=s();this._pushUndoCommand(n),this.emitEvent("changeZOrder",[t]),this.endUndoMacro()}_sendBackOrBringForward(e,t,i){const s=new Map;t.forEach(e=>{const t=(0,o.ensureNotNull)(this._model().paneForSource(e)),i=s.get(t)||[];i.push(e),s.set(t,i)}),this.beginUndoMacro(e),s.forEach((e,t)=>{this._pushUndoCommand(i(t,e))}),this.endUndoMacro(),this.emitEvent("changeZOrder",[t])}_moveSelectedTools(e){const t=this.model().selection().lineDataSources();if(0===t.length)return!1;if((0,Me.lockDrawings)().value())return!0;const i=this.timeScale().visibleBarsStrictRange();if(null===i)return!1;const s=function(e){const t=new Map +;for(const i of e){const e=i.ownerSource();if(null===e)continue;let s=t.get(e);if(void 0===s){const r=e.priceScale(),n=e.priceStep(),o=e.firstValue();if(null===r||null===n||null===o)continue;if(null===r.priceRange())continue;s={sources:[],priceScale:r,priceStep:n,startPrice:i.points()[0].price,firstValue:o},t.set(e,s)}s.sources.push(i)}return t}(t);if(0===s.size)return!1;this.beginUndoMacro(ui,this._lineToolsDoNotAffectChartInvalidation.value());const r=i.firstBar(),n=this.timeScale().indexToCoordinate(r),o=r+(3===e?1:2===e?-1:0),l=this.timeScale().indexToCoordinate(o);return Me.isDirectionalMovementActive.setValue(!0),s.forEach(t=>{const{startPrice:i,priceStep:s,priceScale:c,firstValue:h}=t,d=i+(0===e?s:1===e?-s:0),u=c.priceToCoordinate(i,h),p=c.priceToCoordinate(d,h),_={logical:{index:r,price:i},screen:new a.Point(n,u)},m={logical:{index:o,price:d},screen:new a.Point(l,p)};this.startMovingSources(t.sources,_,null),this.moveSources(m),this.endMovingSource(!1,!0)}),Me.isDirectionalMovementActive.setValue(!1),this.endUndoMacro(),!0}_restoreStudyFactoryDefaults(e){const t=new Mt(this.m_model,e.properties());this._pushUndoCommand(t)}_restoreLineToolFactoryDefaults(e){this.beginUndoMacro(pi,this._lineToolsDoNotAffectChartInvalidation.value()),this.saveLineToolState(e,pi);const t=new It(this.m_model,e.properties(),pi);this._pushUndoCommand(t),this.saveLineToolState(e,pi),this.endUndoMacro(),this.model().updateSource(e)}_removeAllDrawingToolsImpl(e){this.selectionMacro(()=>{this.lineBeingCreated()&&this.cancelCreatingLine();this.dataSources().filter(b.isLineTool).filter(e=>e.isActualSymbol()&&e.isUserDeletable()).filter(t=>!e||e===t.toolname).forEach(e=>this.removeSource(e,!1))})}_removeAllStudiesImpl(){const e=this.dataSources(),t=e.filter(x.isStudy).filter(e=>!e.isChildStudy()&&e.removeByRemoveAllStudies()),i=e.filter(x.isStudyStub);t.concat(i).forEach(e=>this.removeSource(e,!1))}}},88735:(e,t,i)=>{"use strict";var s=i(2872),r=i(88537).ensureNotNull,n=i(56840),o=i(88537).assert,a=i(36244).ChartModelBase,l=i(14291),c=l.isLineTool,h=l.isStudyLineTool,d=i(39094).Watermark,u=i(49483).CheckMobile,p=i(23653).InvalidationMask,_=i(23653).InvalidationLevel;const{globalChangeEvent:m,dataSourceChangeEvent:g}=i(33291);var f=i(66101),v=f.Study,S=i(13672).NonSeriesStudy,y=i(81851),b=y.createStudy,w=y.isStudy,C=y.isFundamentalStudy,P=f.prepareStudyProperties,T=i(85733),x=i(88564).saveDefaultProperties,I=i(32050).MainSeriesScaleRatioProperty,M=i(22423).scaleRatio,L=i(90998).StudyInserter,A=i(21761).dateFormatProperty,E=i(79680).isActingAsSymbolSource,k=i(13795).sourceNewCurrencyOnPinningToPriceScale,D=i(79222).sourceNewUnitOnPinningToPriceScale,V=i(76422),B=i(56606).StudyColorRotatorFactory,N=i(67337),R=i(44419).AppliedTimeFrame,O=N.enabled("auto_enable_symbol_labels");N.enabled("fix_left_edge");class F extends a{constructor(e,t,i,r,n,o,a,l,c,h){super(e,t,i,r,n,o,a,l,c,h);var u=this,p=this.m_mainSeries.properties(),_=this._panes[0];_.setStretchFactor(2*_.stretchFactor()), +this._properties.listeners().subscribe(this,F.prototype.propertyChangeHandler),this._properties.timezone.listeners().subscribe(null,(function(){u._chartApi&&u._chartApi.isConnected().value()&&u._chartApi.switchTimezone(u.timezone())})),_.addDataSource(this.m_mainSeries,this._panes[0].findSuitableScale(this.m_mainSeries)),this._mainSeriesScaleRatioProperty=new I(this),this.m_mainSeries.dataEvents().completed().subscribe(this,function(){this._scrollingState&&this.gotoTime()}.bind(this)),this.m_mainSeries.onIntervalChanged().subscribe(this,(function(){this._recalcVRStudiesParams.oldStartVisibleIndex=NaN,this._recalcVRStudiesParams.oldEndVisibleIndex=NaN})),this._readOnly||(p.addChild("priceAxisProperties",this.m_mainSeries.m_priceScale.properties()),this._properties.paneProperties.legendProperties.showStudyTitles.listeners().subscribe(this,(function(e){e.value()||u._properties.paneProperties.legendProperties.showStudyArguments.setValue(!1)}))),this._barsMarksSources=a(this);for(var m=0;m0),n?{left:0,right:1,totallySlots:i}:{left:1,right:0,totallySlots:i}}return{left:e,right:t,totallySlots:e+t}}setPriceAutoScale(e,t,i){e.setPriceAutoScale(t,i),this.invalidate(this._paneInvalidationMask(e,_.Light))}updateScales(e,t){this._undoModel._chartWidget._updateScalesActions()}mainSeriesScaleRatioProperty(){return this._mainSeriesScaleRatioProperty}mainSeriesScaleRatioPropertyOnChanged(){this._mainSeriesScaleRatioProperty.listeners().fire(this._mainSeriesScaleRatioProperty)}mainSeriesScaleRatio(){return M(this._timeScale,this.m_mainSeries.priceScale())}setMainSeriesScaleRatio(e){this.paneForSource(this.m_mainSeries).applyPriceScaleRatio(this.m_mainSeries.priceScale(),e)}recalcStudyBasedLineTools(){this.dataSources().forEach((function(e){h(e)&&e.recalcStudyIfNeeded&&e.recalcStudyIfNeeded()}))}restoreFactoryDefaults(e){e.restoreFactoryDefaults(),this.recalcVisibleRangeStudies(!0)}orderedDataSources(e){var t=[];t.push(this.m_crossHairSource);for(var i=0;i0)}createStudyInserter(e){return new L(e,this._studiesMetaInfoRepository,{createStudy:this.insertStudyWithParams.bind(this)})}insertStudyWithParams(e,t,i,s,r,o,a,l,c,h,d){null==o&&(o=this.mainSeries());var u=null;if(!r&&void 0!==e.groupingKey){var p=this.findNonOverlayStudyWithGroupingKey(e.groupingKey);null!==p&&(u=p.pane)}null===u&&(r||e.is_price_study?u=this.paneForSource(o):(u=this.createPane(),void 0!==h&&u.setPaneSize(h))),"Compare@tv-basicstudies"===e.id&&this.m_mainSeries.priceScale().setMode({log:!1,percentage:!0});var _=Object.assign({},s,{inputs:t}),m=P(e,_,u,this.studyVersioning(),o),f=b(this,m,o,e,d);this._recalcVisibleRangeStudiesImpl({studies:[f],oldEndVisibleIndex:-1,oldStartVisibleIndex:-1,force:!0,timerId:null});var v=u.findSuitableScale(f,o,a);if(v===this.mainSeries().priceScale()&&E(f)){var S=l?k(f,v,this,!0):null,y=c?D(f,v,this,!0):null;null===S&&null===y||f.setSymbolParams({currency:S||void 0,unit:y||void 0})}return E(f)&&u.hasDataSource(this.mainSeries())&&O&&!n.getBool("enable_symbol_labels_on_inserting_compare_once",!1)&&(x(!0),this.properties().scalesProperties.showSymbolLabels.setValue(!0),x(!1),n.setValue("enable_symbol_labels_on_inserting_compare_once",!0)),f.start(),null!==i&&u.id()===i.paneId?u.insertDataSource(f,v,i.zorder):u.addDataSource(f,v),f.properties().linkedToSeries&&f.properties().linkedToSeries.value()&&f.setOwnerSource(this.mainSeries()),this.recalculatePane(u,g(f.id())),this.fullUpdate(),this._invalidateBarColorerCaches(),this._recalcVisibleRangeStudiesImpl({studies:[f],force:!0}),this._recalcColorStudiesImpl({studies:[f],force:!0}),this._studyInserted.fire(f),f.maxOffset().subscribe(this._boundUpdateStudiesMaxOffset,{callWithLast:!0}),f}studyInserted(){return this._studyInserted}_unmergeAvailable(e){return e===this.m_mainSeries||TradingView.isInherited(e.constructor,v)&&!e.isLinkedToSeries()&&!TradingView.isInherited(e.constructor,S)&&e.showInObjectTree()}isMergeUpAvailableForSource(e){return!!this._unmergeAvailable(e)&&this.paneForSource(e)!==this.panes()[0]}isMergeDownAvailableForSource(e){if(!this._unmergeAvailable(e))return!1;var t=this.paneForSource(e),i=this.panes();return t!==i[i.length-1]}isUnmergeAvailableForSource(e){return!!this._unmergeAvailable(e)&&this.paneForSource(e).dataSources().filter(this._unmergeAvailable,this).length>1}lineBeingEdited(){return this._lineBeingEdited}linePointBeingEdited(){return this._linePointBeingEdited}calculateDefaultTags(){for(var e=[],t=this.dataSources(),i=0;i-1&&this._modelIntervals.splice(t,1)}clearIntervals(){for(var e=0;ethis.removeSource(e)),Array.from(this._customSourcesMap.keys()).forEach(this._removeCustomSource,this),o(0===this._topmostCustomSources.length),o(0===this._fgCustomSources.length),o(0===this._bgCustomSources.length),o(0===this._allCustomSources.length),o(0===this._customSourcesMap.size);for(e=0;e{"use strict";var s=i(52640).makeFont,r=i(52640).parseFont,n=(0,i(98125).getLogger)("Model.ChartTradingUtils"),o={_fontHeightCache:{},_parsedColorCache:{},_parseColor:function(e){if(this._parsedColorCache[e])return this._parsedColorCache[e];var t=document.createElement("div");t.style.color=e;var i=t.style.color.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i)||t.style.color.match(/^rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d*\.?\d+)\s*\)$/i),s={r:i[1],g:i[2],b:i[3],a:i[4]||"1"};return this._parsedColorCache[e]=s,s},getColorFromProperties:function(e,t){var i=1-t.value()/100,s=this._parseColor(e.value());return"rgba("+s.r+","+s.g+","+s.b+","+i+")"},setColorToProperties:function(e,t,i){var s=this._parseColor(e);t.setValue("rgb("+s.r+","+s.g+","+s.b+")");var r=100*(1-s.a);i.setValue(Math.max(0,Math.min(r,100)))},getFontFromProperties:function(e,t,i,r){ +return s(t.value(),e.value(),r.value()?"italic":"",i.value()?"bold":"")},setFontToProperties:function(e,t,i,s,o){var a=r(e);null!==a?(a.family.length>0&&t.setValue(a.family),i.setValue(a.size),s.setValue(a.bold),o.setValue(a.italic)):n.logError("Invalid font: "+e)},fontHeight:function(e){if(!this._fontHeightCache[e]){var t=document.createElement("span");t.appendChild(document.createTextNode("height")),document.body.appendChild(t),t.style.cssText="font: "+e+"; white-space: nowrap; display: inline;";var i=t.offsetHeight;document.body.removeChild(t),this._fontHeightCache[e]=Math.ceil(i)}return this._fontHeightCache[e]},drawPolyHoverOrPress:function(e,t,i,s){s?(e.save(),e.fillStyle="rgba(0, 0, 0, 0.15)",CanvasEx.drawPoly(e,t,!0),e.restore()):i&&(e.save(),e.fillStyle="rgba(0, 0, 0, 0.1)",CanvasEx.drawPoly(e,t,!0),e.restore())},repaint:function(e){e.lightUpdate()},roundToMinTick:function(e,t){var i=1/e.mainSource().base();return i*Math.round(t/i)}};e.exports=o},24431:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(59199).doAnimate,o=i(97205).ChartUndoModelBase,a=(i(88564).saveDefaultProperties,i(66101).Study),l=i(65645).showTooManyStudiesNotice,c=(i(35762).UndoCommand,i(17691).ApplyLineToolTemplateUndoCommand),h=i(89730).SetPriceScaleSelectionStrategyCommand,d=i(870).SetScaleRatioPropertiesCommand,u=i(90998).StudyInserter,p=i(51768).trackEvent,_=i(98125).getLogger("Chart.ChartUndoModel"),m=i(91794).RestoreDefaultsPreferencesUndoCommand,g=i(59836).SetPriceScaleModeCommand,f=i(69746).PriceScaleChangeUndoCommand,v=new r("move left",s("move left")),S=new r("move right",s("move right")),y=new r("toggle auto scale",s("toggle auto scale")),b=new r("toggle lock scale",s("toggle lock scale")),w=new r("toggle regular scale",s("toggle regular scale")),C=new r("toggle indexed to 100 scale",s("toggle indexed to 100 scale")),P=new r("toggle percentage scale",s("toggle percentage scale")),T=new r("toggle log scale",s("toggle log scale")),x=new r("invert scale",s("invert scale")),I=new r("remove pane",s("remove pane")),M=(new r("apply all chart properties",s("apply all chart properties")),new r("set price scale selection strategy to {title}",s("set price scale selection strategy to {title}")));s("Cheers");t.ChartUndoModel=class extends o{constructor(e,t,i,s,r,n,o,a,l,c,h){super(e,t,i,s,r,n,o,a,l,c,h),this.beginUndoMacro=(e,t)=>{var i=o.beginUndoMacro(e);return i.setCustomFlag("doesnt_affect_save",t),i},this.endUndoMacro=o.endUndoMacro.bind(o),this.createUndoCheckpoint=o.createUndoCheckpoint.bind(o),this.undoToCheckpoint=o.undoToCheckpoint.bind(o)}version(){return this.m_model.version()}createPane(e){return this.m_model.createPane(e)}readOnly(){return this.m_model.readOnly()}restart(){this.m_model.restart()}disconnect(){this.m_model.disconnect()}studiesMetaData(){return this.m_model.studiesMetaData()}studyVersioning(){return this.m_model.studyVersioning()}chartModel(){return this._model()}_model(){return this.m_model}pushUndoCommand(e){this._pushUndoCommand(e)}_pushUndoCommand(e){this._undoHistory.pushUndoCommand(e) +}startScrollPrice(e,t,i){t.isAutoScale()||(this._initialPriceScrollState=t.state(),this._initialPriceScrollPos=i,this.chartModel().startScrollPrice(e,t,i))}scrollPriceTo(e,t,i){t.isAutoScale()||(this._initialPriceScrollPos&&Math.abs(this._initialPriceScrollPos-i)>20&&(this.pushUndoCommand(new f(this.m_model,e,t,this._initialPriceScrollState)),delete this._initialPriceScrollState,delete this._initialPriceScrollPos),this.chartModel().scrollPriceTo(e,t,i))}endScrollPrice(e,t){t.isAutoScale()||(delete this._initialPriceScrollState,delete this._initialPriceScrollPos,this.chartModel().endScrollPrice(e,t))}setPriceAutoScale(e,t,i){this.pushUndoCommand(new f(this.m_model,e,t,t.state())),this.chartModel().setPriceAutoScale(e,t,i)}setWidth(e){this.m_model.setWidth(e)}setPaneHeight(e,t){this.m_model.setPaneHeight(e,t)}gridSource(){return this.m_model.gridSource()}watermarkSource(){return this.m_model.watermarkSource()}addAlertsSource(e){return this.m_model.addAlertsSource(e)}alertsSources(){return this.m_model.alertsSources()}publishedChartsTimelineSource(){return this.m_model.publishedChartsTimelineSource()}crossHairSource(){return this.m_model.crossHairSource()}model(){return this.m_model}chartWidget(){return this._chartWidget}mainSeries(){return this.m_model.m_mainSeries}mainSeriesScaleRatioProperty(){return this.m_model.mainSeriesScaleRatioProperty()}panes(){return this.m_model.panes()}timeScale(){return this.m_model.timeScale()}selectionMacro(e){return this.m_model.selectionMacro(e)}setHoveredSource(e,t){this.m_model.setHoveredSource(e,t)}selection(){return this.m_model.selection()}onSelectedSourceChanged(){return this.m_model.onSelectedSourceChanged()}activeStrategySource(){return this.m_model.activeStrategySource()}invalidate(e){this.m_model.invalidate(e)}setCurrentPosition(e,t,i,s){this.m_model.setCurrentPosition(e,t,i,s)}setAndSaveCurrentPosition(e,t,i,s){this.m_model.setAndSaveCurrentPosition(e,t,i,s)}canCreateStudy(e){return this.model().chartApi().chartApi().isCanCreateStudy(e)}_isCountedStudy(e){throw new Error("Not implemented")}checkIfFeatureAvailable(e,t){var i=this.canCreateStudy(),s=t&&t instanceof a;return!this.readOnly()&&s&&(i=this.canCreateStudy(!0)),!!i||(s||l(),!1)}createStudyInserter(e,t,i){var s=this,r=null,n={createStudy:function(e,t,i,n,o,a,l,c,h,d,u){return s.checkIfFeatureAvailable(e,a)?(p("studies","Study_"+e.id),"Compare@tv-basicstudies"===e.id&&p("compare","symbol:"+t.symbol),s._insertStudy(e,t,n,o,a,l,c,h,d,r,u)):(_.logNormal("Cannot insert study "+e.id),null)}};void 0!==i&&(n.createStub=function(){var e=s.m_model.insertStudyStub(i);return r={targetPaneId:s.m_model.paneForSource(e).id(),targetZOrder:e.zorder()},e.id()},n.removeStub=function(e){return s.m_model.removeStudyStub(e)});var o=new u(e,this.m_model._studiesMetaInfoRepository,n);return o.setParentSource(t),o}setProperties(e,t,i){var s=this;this.beginUndoMacro(i),this.m_model.selectionMacro((function(){for(var r=0;r{"use strict";var s;i.d(t,{ColorType:()=>s}),function(e){e.Solid="solid",e.Gradient="gradient"}(s||(s={}))},8175:(e,t,i)=>{"use strict";i.d(t,{currencyUnitVisibilityProperty:()=>o,currencyUnitVisibilityOptions:()=>a,migrateShowCurrencyAndShowUnitProperties:()=>c});var s=i(10133),r=i(56840),n=i.n(r);const{property:o,availableValues:a}=(0,s.createVisibilityController)("PriceAxisCurrencyAndUnit.visibility");let l=!1;function c(e,t){l||(l=!0,void 0===n().getValue("PriceAxisCurrencyAndUnit.visibility")&&o().setValue(e||t?"alwaysOn":"alwaysOff"))}},13795:(e,t,i)=>{"use strict";i.d(t,{sourceNewCurrencyOnPinningToPriceScale:()=>r});var s=i(79680);function r(e,t,i,r){let n=null;if(i.currencyConversionEnabled()&&(0,s.isActingAsSymbolSource)(e)){const s=i.availableCurrencies(),o=t.currency(s),a=e.currency();null!==o&&null!==o.selectedCurrency&&!o.allCurrenciesAreOriginal&&o.selectedCurrency!==a&&(r&&null===a||null!==a&&s.convertible(a))&&(n=o.selectedCurrency)}return n}},99305:(e,t,i)=>{"use strict";i.d(t,{CustomSourceBase:()=>s});class s{constructor(e,t){this._id=e,this._model=t}id(){return this._id}isHoveredEnabled(){return!0}isSelectionEnabled(){return!1}priceScale(){return null}paneViews(e){return[]}labelPaneViews(e){return[]}priceAxisViews(e,t){return[]}updateViewsForPane(e,t){e.containsMainSeries()&&this.updateAllViews(t)}}},50669:(e,t,i)=>{"use strict";i.d(t,{isMainSeriesState:()=>r,isStudyState:()=>n,isLineToolState:()=>o,isStudyLineToolState:()=>a});var s=i(14291);function r(e){return"MainSeries"===e.type}function n(e){return Boolean(e.type)&&e.type.toLowerCase().startsWith("study")}function o(e){return Boolean(e.type)&&(0,s.isLineToolName)(e.type)}function a(e){return Boolean(e.type)&&(0,s.isStudyLineToolName)(e.type)}},62443:(e,t,i)=>{"use strict";i.d(t,{DataSource:()=>l});i(67337);var s=i(52714),r=i.n(s),n=i(9423),o=i(2872),a=i.n(o);class l{constructor(e){this.hasAlert=new(r())(!1),this._zorder=0,this.m_priceScale=null,this._ownerSource=null,this._userEditEnabled=!0,this._onPriceScaleChanged=new(a()),this._isSelectionEnabled=!0,this._instanceId=(0,n.randomHashN)(6),this._ownerSourceChanged=new(a()),this._zOrderChanged=new(a()),this._id=null!=e?e:(0,n.randomHashN)(6)}id(){return this._id}instanceId(){return this._instanceId}preferNoScale(){return!1}setId(e){this._id=e}zorder(){return this._zorder}setZorder(e){"number"==typeof e&&this._zorder!==e&&(this._zorder=e,this._zOrderChanged.fire(e))}isSpeciallyZOrderedSource(){return!1}title(){throw new Error("Implement this fun in a subclass")}name(){throw new Error("Implement this fun in a subclass")}priceScale(){return this.m_priceScale}setPriceScale(e){this.m_priceScale=e,this._onPriceScaleChanged.fire()}ownerSource(){return this._ownerSource}setOwnerSource(e){ +this._ownerSource=e,this._ownerSourceChanged.fire()}ownerSourceChanged(){return this._ownerSourceChanged}zOrderChanged(){return this._zOrderChanged}isSavedInChart(e){return!0}isSavedInStudyTemplates(){return!0}isRemovedByStudyTemplates(){return!0}hasContextMenu(){return!0}showInObjectTree(){return!0}setUserEditEnabled(e){this._userEditEnabled=e}userEditEnabled(){return this._userEditEnabled}canBeHidden(){return this.userEditEnabled()}isUserDeletable(){return this.userEditEnabled()}properties(){throw new Error("Implement this fun in a subclass")}isVisible(){return this.properties().visible.value()}dataWindowView(){return null}priceAxisViews(e,t){return null}timeAxisViews(){return null}updateAllViews(e){}paneViews(e){return null}labelPaneViews(){return null}isFailed(){return!1}isLoading(){return!1}isPhantom(){return!1}isChildStudy(){return!1}hasChildren(){return!1}canHaveChildren(){return!1}onClickOutside(){}getSourceIcon(){return null}state(e){throw new Error("Implement this fun in a subclass")}onPriceScaleChanged(){return this._onPriceScaleChanged}doesMovingAffectsUndo(){return!0}isMultiPaneAvailable(){return!1}isMultiPaneEnabled(){return!1}copiable(){return!1}cloneable(){return!1}movable(){return!1}isIncludedInAutoScale(){return!1}isHoveredEnabled(){return this.isSelectionEnabled()}isSelectionEnabled(){return this._isSelectionEnabled}setSelectionEnabled(e){this._isSelectionEnabled=e}firstValue(){return null}priceRange(e,t){return null}autoScaleInfo(e,t){return{range:this.priceRange(e,t)}}stateForAlert(){return null}canHasAlert(){return!1}alertCreationAvailable(){return this.hasStateForAlert()}hasStateForAlert(){return!1}idForAlert(){return this._id}}},14445:(e,t,i)=>{"use strict";i.d(t,{DataWindowItem:()=>s,DataWindowView:()=>r});class s{constructor(e,t,i=!1){this._visible=!0,this._title=e,this._value=t,this._unimportant=i}title(){return this._title}setTitle(e){this._title=e}text(){return this._value}value(){return this._value}setValue(e){this._value=e}visible(){return this._visible}setVisible(e){this._visible=e}color(){return this._color}setColor(e){this._color=e}unimportant(){return this._unimportant}}class r{constructor(){this._items=[],this._header="",this._title=""}header(){return this._header}title(){return this._title}items(){return this._items}update(){}}},21761:(e,t,i)=>{"use strict";i.d(t,{dateFormatProperty:()=>a,restoreDateFormatSettingsValue:()=>l});var s=i(56840),r=i(32255),n=i(7043);function o(){return s.getValue("date_format",(0,n.defaultDateFormat)())}const a=(0,r.createPrimitiveProperty)(o());function l(){a.setValue((0,n.defaultDateFormat)()),s.remove("date_format")}s.onSync.subscribe(null,()=>a.setValue(o())),a.listeners().subscribe(null,()=>s.setValue("date_format",a.value()))},88564:(e,t,i)=>{"use strict";i.r(t),i.d(t,{createDefaultsState:()=>u,saveDefaultProperties:()=>_,DefaultProperty:()=>m});var s=i(27788),r=i(58121),n=i(15736),o=i(59803),a=i(2015),l=i.n(a),c=i(2872),h=i.n(c);function d(e,t){const i=(0,s.default)(e);return t.forEach(e=>(0,n.default)(i,e.split("."))),i}function u(e,t,i,n){ +const a=e?o.defaults:o.factoryDefaults,l=t.startsWith("study_")?(0,s.default)(a("study")):{};let c=(0,s.default)(a(t,n));return t.startsWith("study_")&&c.inputs&&delete c.inputs.symbol,"linetoolicon"===t&&e&&(c.icon=(0,o.defaults)(t).icon),c=d(c,i),(0,r.default)(l,c),l}let p=!1;function _(e){p=e}class m extends(l()){constructor(e,t,i,s){super(function(e,t,i,s){let n;return void 0===s&&(s=!0),i?n=t:(n=u(s,e,[],null),t&&(0,r.default)(n,t)),n}(e,t,i,s)),this._exclusions=[],this._restoreFactoryDefaultsEvent=new(h()),this._defaultName=e,this._useUserPreferences=null==s||s,this.listeners().subscribe(this,m.prototype.onPropertyChanged),this._restoreFactoryDefaultsEvent=new(h())}preferences(){return this.state(this._exclusions)}mergePreferences(e){this.mergeAndFire(d(e,this._exclusions))}addExclusion(e){this._exclusions.indexOf(e)<0&&this._exclusions.push(e)}removeExclusion(e){const t=this._exclusions.indexOf(e);-1!==t&&this._exclusions.splice(t,1)}restoreFactoryDefaults(){const e=u(!1,this._defaultName,this._exclusions,null);this.mergeAndFire(e),this._defaultName.startsWith("study_")&&!this._defaultName.startsWith("study_VbPFixed")||(0,o.saveDefaults)(this._defaultName,void 0),this._restoreFactoryDefaultsEvent.fire()}onRestoreFactoryDefaults(){return this._restoreFactoryDefaultsEvent}onPropertyChanged(){!p||this._defaultName.startsWith("study_")&&!this._defaultName.startsWith("study_VbPFixed")||this.saveDefaults()}saveDefaults(){this._useUserPreferences&&(0,o.saveDefaults)(this._defaultName,this.preferences())}clone(e){const t=new m(this._defaultName,this.state(),null==e?void 0:e.replaceByState,this._useUserPreferences);for(let e=0;e{"use strict";var s=i(27759).PlDisplay;const{getHexColorByName:r}=i(45112),{generateColor:n}=i(68906);var o=i(27759).TradingSourcesHorizontalAlignment,a=i(16654),l=i(30823).LineToolPitchforkStyle,c=i(8059).LineToolBarsPatternMode,h=i(50993).LineStudyPlotStyle,d=i(5816),u=i(3825).PriceAxisLastValueMode,p=i(245).StoriesTimeLineItemType,_=i(90373).MagnetMode,m=i(49612).LineEnd,g=i(49642).ColorType,f=i(13632).StatsPosition,v=i(47484).sessionsPreferencesDefault,S=i(87426).axisLabelBackgroundColor,y=i(98125).getLogger("Chart.Defaults") +;const b=r("color-black"),w=r("color-white"),C=n(w,75),P=r("color-tv-blue-50"),T=r("color-tv-blue-500"),x=n(T,30),I=n(T,70),M=n(T,72),L=n(T,75),A=n(T,80),E=r("color-tv-blue-600"),k=r("color-deep-blue-200"),D=r("color-deep-blue-300"),V=r("color-deep-blue-400"),B=n(V,80),N=r("color-deep-blue-500"),R=r("color-sky-blue-500"),O=n(R,80),F=n(R,50),W=r("color-sky-blue-700"),H=n(W,30),z=r("color-youtube"),U=r("color-ripe-red-200"),j=r("color-ripe-red-300"),G=r("color-ripe-red-400"),q=r("color-ripe-red-500"),Y=n(q,70),K=n(q,80),$=n(q,72),X=n(q,95),Z=r("color-ripe-red-600"),J=r("color-grapes-purple-400"),Q=n(J,80),ee=r("color-grapes-purple-500"),te=n(ee,100),ie=n(ee,80),se=n(ee,30),re=n(r("color-berry-pink-400"),85),ne=r("color-berry-pink-500"),oe=n(ne,80),ae=r("color-minty-green-100"),le=r("color-minty-green-500"),ce=n(le,80),he=n(le,72),de=n(le,95),ue=r("color-iguana-green-300"),pe=r("color-iguana-green-500"),_e=n(pe,80),me=r("color-tan-orange-300"),ge=r("color-tan-orange-500"),fe=n(ge,80),ve=r("color-tan-orange-600"),Se=r("color-tan-orange-700"),ye=n(Se,80),be=r("color-tan-orange-a700"),we=r("color-cold-gray-150"),Ce=r("color-cold-gray-300"),Pe=r("color-cold-gray-400"),Te=r("color-cold-gray-500"),xe=r("color-cold-gray-800"),Ie=n(xe,94),Me=n(xe,100),Le=r("color-cold-gray-900"),Ae=r("color-slate-gray"),Ee=r("color-silver-tree"),ke=n(Ee,95),De=r("color-mandy"),Ve=n(De,95);var Be=function(e){var t=function(e,t){return{color:e,visible:t}},i=function(e,t,i){return{coeff:e,color:t,visible:i}},r=function(e,t,i,s,r){return{coeff:e,color:t,visible:i,linestyle:void 0===s?CanvasEx.LINESTYLE_SOLID:s,linewidth:void 0===r?1:r}},y=function(e,t,i){return{color:e,width:i,visible:t}},xe=function(e,t,i,s,r){return{color:e,visible:t,width:i,x:s,y:r}},Be=function(e,t,i,s,r,n){return{coeff1:e,coeff2:t,color:i,visible:s,linestyle:void 0===r?CanvasEx.LINESTYLE_SOLID:r,linewidth:void 0===n?1:n}};if(void 0===TradingView.defaultProperties){var Ne;switch(window.locale){case"ar_AE":Ne="Asia/Dubai";break;case"au":Ne="Australia/Sydney";break;case"br":Ne="America/Sao_Paulo";break;case"ca":Ne="America/Toronto";break;case"de_DE":case"it":Ne="Europe/Berlin";break;case"es":Ne="Europe/Madrid";break;case"fa_IR":Ne="Asia/Tehran";break;case"fr":case"sv_SE":Ne="Europe/Paris";break;case"he_IL":case"tr":Ne="Europe/Athens";break;case"hu_HU":case"pl":Ne="Europe/Warsaw";break;case"id":case"th_TH":case"vi_VN":Ne="Asia/Bangkok";break;case"in":Ne="Asia/Kolkata";break;case"ja":case"kr":Ne="Asia/Tokyo";break;case"ms_MY":Ne="Asia/Singapore";break;case"ru":Ne="Europe/Moscow";break;case"uk":Ne="Europe/London";break;case"zh_CN":case"zh_TW":Ne="Asia/Shanghai";break;default:Ne="Etc/UTC"}TradingView.defaultProperties={chartproperties:{timezone:Ne,priceScaleSelectionStrategyName:"auto",paneProperties:{backgroundType:g.Solid,background:w,backgroundGradientStartColor:w,backgroundGradientEndColor:w,vertGridProperties:{color:Ie,style:CanvasEx.LINESTYLE_SOLID},horzGridProperties:{color:Ie,style:CanvasEx.LINESTYLE_SOLID},crossHairProperties:{color:Pe,style:CanvasEx.LINESTYLE_DASHED, +transparency:0,width:1},topMargin:10,bottomMargin:8,axisProperties:{autoScale:!0,autoScaleDisabled:!1,lockScale:!1,percentage:!1,percentageDisabled:!1,indexedTo100:!1,log:!1,logDisabled:!1,alignLabels:!0,isInverted:!1},legendProperties:{showStudyArguments:!0,showStudyTitles:!0,showStudyValues:!0,showSeriesTitle:!0,showSeriesOHLC:!0,showLegend:!0,showBarChange:!0,showVolume:!1,showBackground:!0,backgroundTransparency:50},separatorColor:we},scalesProperties:{backgroundColor:w,lineColor:Me,textColor:Le,fontSize:12,scaleSeriesOnly:!1,showSeriesLastValue:!0,seriesLastValueMode:u.LastValueAccordingToScale,showSeriesPrevCloseValue:!1,showStudyLastValue:!0,showSymbolLabels:!1,showStudyPlotLabels:!1,showBidAskLabels:!1,showPrePostMarketPriceLabel:!0,showFundamentalNameLabel:!1,showFundamentalLastValue:!0,barSpacing:d.DEFAULT_BAR_SPACING,axisHighlightColor:L,axisLineToolLabelBackgroundColorCommon:S.common,axisLineToolLabelBackgroundColorActive:S.active,showPriceScaleCrosshairLabel:!0,showTimeScaleCrosshairLabel:!0},mainSeriesProperties:{style:a.STYLE_CANDLES,esdShowDividends:!0,esdShowSplits:!0,esdShowEarnings:!0,esdShowBreaks:!1,esdFlagSize:2,showContinuousContractSwitches:!0,showContinuousContractSwitchesBreaks:!1,showCountdown:!0,bidAsk:{visible:!1,lineStyle:CanvasEx.LINESTYLE_DOTTED,lineWidth:1,bidLineColor:T,askLineColor:G},prePostMarket:{visible:!0,lineStyle:CanvasEx.LINESTYLE_DOTTED,lineWidth:1,preMarketColor:ve,postMarketColor:T},highLowAvgPrice:{highLowPriceLinesVisible:!1,highLowPriceLabelsVisible:!1,averageClosePriceLineVisible:!1,averageClosePriceLabelVisible:!1,highLowPriceLinesColor:"",highLowPriceLinesWidth:1,averagePriceLineColor:"",averagePriceLineWidth:1},visible:!0,showPriceLine:!0,priceLineWidth:1,priceLineColor:"",baseLineColor:Ce,showPrevClosePriceLine:!1,prevClosePriceLineWidth:1,prevClosePriceLineColor:"#555555",minTick:"default",dividendsAdjustment:void 0,backAdjustment:!1,settlementAsClose:!0,sessionId:"regular",sessVis:!1,statusViewStyle:{fontSize:16,showExchange:!0,showInterval:!0,symbolTextSource:"description"},candleStyle:{upColor:le,downColor:q,drawWick:!0,drawBorder:!0,borderColor:"#378658",borderUpColor:le,borderDownColor:q,wickColor:"#737375",wickUpColor:le,wickDownColor:q,barColorsOnPrevClose:!1,drawBody:!0},hollowCandleStyle:{upColor:le,downColor:q,drawWick:!0,drawBorder:!0,borderColor:"#378658",borderUpColor:le,borderDownColor:q,wickColor:"#737375",wickUpColor:le,wickDownColor:q,drawBody:!0},haStyle:{upColor:le,downColor:q,drawWick:!0,drawBorder:!0,borderColor:"#378658",borderUpColor:le,borderDownColor:q,wickColor:"#737375",wickUpColor:le,wickDownColor:q,showRealLastPrice:!1,barColorsOnPrevClose:!1,inputs:{},inputInfo:{},drawBody:!0},barStyle:{upColor:le,downColor:q,barColorsOnPrevClose:!1,dontDrawOpen:!1,thinBars:!0},hiloStyle:{color:T,showBorders:!0,borderColor:T,showLabels:!0,labelColor:T,fontSize:7,drawBody:!0},columnStyle:{upColor:n(le,50),downColor:n(q,50),barColorsOnPrevClose:!0,priceSource:"close"},lineStyle:{color:T,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2, +priceSource:"close",styleType:a.STYLE_LINE_TYPE_SIMPLE},areaStyle:{color1:M,color2:T,linecolor:T,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2,priceSource:"close",transparency:100},priceAxisProperties:{autoScale:!0,autoScaleDisabled:!1,lockScale:!1,percentage:!1,percentageDisabled:!1,indexedTo100:!1,log:!1,logDisabled:!1,isInverted:!1,alignLabels:!0},renkoStyle:{upColor:le,downColor:q,borderUpColor:le,borderDownColor:q,upColorProjection:"#a9dcc3",downColorProjection:"#f5a6ae",borderUpColorProjection:"#a9dcc3",borderDownColorProjection:"#f5a6ae",wickUpColor:le,wickDownColor:q,inputs:{source:"close",sources:"Close",boxSize:3,style:"ATR",atrLength:14,wicks:!0},inputInfo:{source:{name:"Source"},sources:{name:"Source"},boxSize:{name:"Box size"},style:{name:"Style"},atrLength:{name:"ATR length"},wicks:{name:"Wicks"}}},pbStyle:{upColor:le,downColor:q,borderUpColor:le,borderDownColor:q,upColorProjection:"#a9dcc3",downColorProjection:"#f5a6ae",borderUpColorProjection:"#a9dcc3",borderDownColorProjection:"#f5a6ae",inputs:{source:"close",lb:3},inputInfo:{source:{name:"Source"},lb:{name:"Number of line"}}},kagiStyle:{upColor:le,downColor:q,upColorProjection:"#a9dcc3",downColorProjection:"#f5a6ae",inputs:{source:"close",style:"ATR",atrLength:14,reversalAmount:1},inputInfo:{source:{name:"Source"},style:{name:"Style"},atrLength:{name:"ATR length"},reversalAmount:{name:"Reversal amount"}}},pnfStyle:{upColor:le,downColor:q,upColorProjection:"#a9dcc3",downColorProjection:"#f5a6ae",inputs:{sources:"Close",reversalAmount:3,boxSize:1,style:"ATR",atrLength:14,oneStepBackBuilding:!1},inputInfo:{sources:{name:"Source"},boxSize:{name:"Box size"},reversalAmount:{name:"Reversal amount"},style:{name:"Style"},atrLength:{name:"ATR length"},oneStepBackBuilding:{name:"One step back building"}}},baselineStyle:{baselineColor:Ae,topFillColor1:he,topFillColor2:de,bottomFillColor1:X,bottomFillColor2:$,topLineColor:le,bottomLineColor:q,topLineWidth:2,bottomLineWidth:2,priceSource:"close",transparency:50,baseLevelPercentage:50},rangeStyle:{upColor:le,downColor:q,thinBars:!0,upColorProjection:"#a9dcc3",downColorProjection:"#f5a6ae",inputs:{range:10,phantomBars:!1},inputInfo:{range:{name:"Range"},phantomBars:{name:"Phantom bars"}}}},chartEventsSourceProperties:{visible:!0,futureOnly:!0,breaks:{color:"#555555",visible:!1,style:CanvasEx.LINESTYLE_DASHED,width:1}},tradingProperties:{showPositions:!0,positionPL:{visibility:!0,display:s.Money},bracketsPL:{visibility:!0,display:s.Money},showOrders:!0,showExecutions:!0,showExecutionsLabels:!1,showReverse:!0,horizontalAlignment:o.Right,extendLeft:!0,lineLength:5,lineWidth:1,lineStyle:CanvasEx.LINESTYLE_SOLID},editorFontsList:["Verdana","Courier New","Times New Roman","Arial"],volumePaneSize:"large"},sessions:v,drawings:{magnet:!1,magnetMode:_.WeakMagnet,stayInDrawingMode:!1,drawOnAllCharts:!0,drawOnAllChartsMode:1},linetoolorder:{extendLeft:"inherit",lineLength:"inherit",lineColor:z,lineActiveBuyColor:"#4094e8",lineInactiveBuyColor:"rgba(64, 148, 232, 0.5)",lineActiveSellColor:"#e75656", +lineInactiveSellColor:"rgba(231, 86, 86, 0.5)",lineStyle:"inherit",lineWidth:"inherit",bodyBorderActiveBuyColor:"#4094e8",bodyBorderInactiveBuyColor:"rgba(64, 148, 232, 0.5)",bodyBorderActiveSellColor:"#e75656",bodyBorderInactiveSellColor:"rgba(231, 86, 86, 0.5)",bodyBackgroundColor:C,bodyBackgroundTransparency:25,bodyTextInactiveLimitColor:"rgba(38, 140, 2, 0.5)",bodyTextActiveLimitColor:"#268c02",bodyTextInactiveStopColor:"rgba(231, 86, 86, 0.5)",bodyTextActiveStopColor:"#e75656",bodyTextInactiveBuyColor:"rgba(64, 148, 232, 0.5)",bodyTextActiveBuyColor:"#4094e8",bodyTextInactiveSellColor:"rgba(231, 86, 86, 0.5)",bodyTextActiveSellColor:"#e75656",bodyFontFamily:"Verdana",bodyFontSize:9,bodyFontBold:!0,bodyFontItalic:!1,quantityBorderActiveBuyColor:"#4094e8",quantityBorderInactiveBuyColor:"rgba(64, 148, 232, 0.5)",quantityBorderActiveSellColor:"#e75656",quantityBorderInactiveSellColor:"rgba(231, 86, 86, 0.5)",quantityBackgroundInactiveBuyColor:"rgba(64, 148, 232, 0.5)",quantityBackgroundActiveBuyColor:"#4094e8",quantityBackgroundInactiveSellColor:"rgba(231, 86, 86, 0.5)",quantityBackgroundActiveSellColor:"#e75656",quantityTextColor:w,quantityTextTransparency:0,quantityFontFamily:"Verdana",quantityFontSize:9,quantityFontBold:!0,quantityFontItalic:!1,cancelButtonBorderActiveBuyColor:"#4094e8",cancelButtonBorderInactiveBuyColor:"rgba(64, 148, 232, 0.5)",cancelButtonBorderActiveSellColor:"#e75656",cancelButtonBorderInactiveSellColor:"rgba(231, 86, 86, 0.5)",cancelButtonBackgroundColor:C,cancelButtonBackgroundTransparency:25,cancelButtonIconActiveBuyColor:"#4094e8",cancelButtonIconInactiveBuyColor:"rgba(64, 148, 232, 0.5)",cancelButtonIconActiveSellColor:"#e75656",cancelButtonIconInactiveSellColor:"rgba(231, 86, 86, 0.5)",tooltip:"",modifyTooltip:"",cancelTooltip:""},linetoolposition:{extendLeft:"inherit",lineLength:"inherit",lineBuyColor:"#4094e8",lineSellColor:"#e75656",lineStyle:"inherit",lineWidth:"inherit",bodyBorderBuyColor:"#4094e8",bodyBorderSellColor:"#e75656",bodyBackgroundColor:C,bodyBackgroundTransparency:25,bodyTextPositiveColor:"#268c02",bodyTextNeutralColor:"#646464",bodyTextNegativeColor:"#e75656",bodyFontFamily:"Verdana",bodyFontSize:9,bodyFontBold:!0,bodyFontItalic:!1,quantityBorderBuyColor:"#4094e8",quantityBorderSellColor:"#e75656",quantityBackgroundBuyColor:"#4094e8",quantityBackgroundSellColor:"#e75656",quantityTextColor:w,quantityTextTransparency:0,quantityFontFamily:"Verdana",quantityFontSize:9,quantityFontBold:!0,quantityFontItalic:!1,reverseButtonBorderBuyColor:"#4094e8",reverseButtonBorderSellColor:"#e75656",reverseButtonBackgroundColor:C,reverseButtonBackgroundTransparency:25,reverseButtonIconBuyColor:"#4094e8",reverseButtonIconSellColor:"#e75656",closeButtonBorderBuyColor:"#4094e8",closeButtonBorderSellColor:"#e75656",closeButtonBackgroundColor:C,closeButtonBackgroundTransparency:25,closeButtonIconBuyColor:"#4094e8",closeButtonIconSellColor:"#e75656",tooltip:"",protectTooltip:"",closeTooltip:"",reverseTooltip:""},linetoolexecution:{direction:"buy",arrowHeight:8,arrowSpacing:1, +arrowBuyColor:"#4094e8",arrowSellColor:"#e75656",text:"",textColor:b,textTransparency:0,fontFamily:"Verdana",fontSize:10,fontBold:!1,fontItalic:!1,tooltip:""},linetoolicon:{color:T,size:40,icon:61720,angle:.5*Math.PI},linetoolimage:{transparency:0,cssWidth:0,cssHeight:0,angle:0},linetoolbezierquadro:{linecolor:T,linewidth:1,fillBackground:!1,backgroundColor:A,transparency:50,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal},linetoolbeziercubic:{linecolor:R,linewidth:1,fillBackground:!1,backgroundColor:O,transparency:50,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal},linetooltrendline:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textcolor:T,fontsize:14,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1,statsPosition:f.Right},linetoolinfoline:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textcolor:T,fontsize:14,bold:!1,italic:!1,alwaysShowStats:!0,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!0,showBarsRange:!0,showDateTimeRange:!0,showDistance:!0,showAngle:!0,statsPosition:f.Center},linetooltimecycles:{linecolor:"#159980",linewidth:1,fillBackground:!0,backgroundColor:"rgba(106, 168, 79, 0.5)",transparency:50,linestyle:CanvasEx.LINESTYLE_SOLID},linetoolsineline:{linecolor:"#159980",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},linetooltrendangle:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,textcolor:T,fontsize:12,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!1,showBarsRange:!1,extendRight:!1,extendLeft:!1,statsPosition:f.Right},linetooldisjointangle:{linecolor:le,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,fillBackground:!0,backgroundColor:ce,transparency:20,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,textcolor:le,fontsize:12,bold:!1,italic:!1,showPrices:!1,showPriceRange:!1,showDateTimeRange:!1,showBarsRange:!1},linetoolflatbottom:{linecolor:ge,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,fillBackground:!0,backgroundColor:fe,transparency:20,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Normal,textcolor:ge,fontsize:12,bold:!1,italic:!1,showPrices:!1,showPriceRange:!1,showDateTimeRange:!1,showBarsRange:!1},linetoolfibspiral:{counterclockwise:!1,linecolor:le,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},linetoolriskrewardshort:{linecolor:Te,linewidth:1,textcolor:w,fontsize:12,fillLabelBackground:!0,labelBackgroundColor:"#585858",fillBackground:!0,stopBackground:K,profitBackground:ce,stopBackgroundTransparency:80,profitBackgroundTransparency:80,drawBorder:!1,borderColor:"#667b8b",compact:!1,riskDisplayMode:"percents", +accountSize:1e3,lotSize:1,risk:25,alwaysShowStats:!1,showPriceLabels:!0},linetoolriskrewardlong:{linecolor:Te,linewidth:1,textcolor:w,fontsize:12,fillLabelBackground:!0,labelBackgroundColor:"#585858",fillBackground:!0,stopBackground:K,profitBackground:ce,stopBackgroundTransparency:80,profitBackgroundTransparency:80,drawBorder:!1,borderColor:"#667b8b",compact:!1,riskDisplayMode:"percents",accountSize:1e3,lotSize:1,risk:25,alwaysShowStats:!1,showPriceLabels:!0},linetoolarrow:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,leftEnd:m.Normal,rightEnd:m.Arrow,showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textcolor:T,fontsize:14,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1,statsPosition:f.Right},linetoolray:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!0,leftEnd:m.Normal,rightEnd:m.Normal,showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textcolor:T,fontsize:14,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1,statsPosition:f.Right},linetoolextended:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!0,extendRight:!0,leftEnd:m.Normal,rightEnd:m.Normal,showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textcolor:T,fontsize:14,bold:!1,italic:!1,alwaysShowStats:!1,showMiddlePoint:!1,showPriceLabels:!1,showPriceRange:!1,showBarsRange:!1,showDateTimeRange:!1,showDistance:!1,showAngle:!1,statsPosition:f.Right},linetoolhorzline:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,showPrice:!0,showLabel:!1,textcolor:T,fontsize:12,bold:!1,italic:!1,horzLabelsAlign:"center",vertLabelsAlign:"top"},linetoolhorzray:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,showPrice:!0,showLabel:!1,textcolor:T,fontsize:12,bold:!1,italic:!1,horzLabelsAlign:"center",vertLabelsAlign:"top"},linetoolvertline:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLine:!0,showTime:!0,showLabel:!1,horzLabelsAlign:"right",vertLabelsAlign:"top",textcolor:T,textOrientation:"vertical",fontsize:14,bold:!1,italic:!1},linetoolcrossline:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,showPrice:!0,showTime:!0},linetoolcirclelines:{trendline:{visible:!0,color:"#808080",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},linecolor:"#80ccdb",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},linetoolfibtimezone:{horzLabelsAlign:"right",vertLabelsAlign:"bottom",baselinecolor:"#808080",linecolor:"#0055db",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,showLabels:!0,fillBackground:!1,transparency:80,trendline:{visible:!0,color:"#808080",linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:r(0,Te,!0),level2:r(1,T,!0),level3:r(2,T,!0),level4:r(3,T,!0),level5:r(5,T,!0),level6:r(8,T,!0),level7:r(13,T,!0),level8:r(21,T,!0),level9:r(34,T,!0),level10:r(55,T,!0), +level11:r(89,T,!0)},linetooltext:{color:T,fontsize:14,fillBackground:!1,backgroundColor:"rgba(91, 133, 191, 0.3)",backgroundTransparency:70,drawBorder:!1,borderColor:"#667b8b",bold:!1,italic:!1,fixedSize:!0,wordWrap:!1,wordWrapWidth:200},linetooltextabsolute:{color:T,fontsize:14,fillBackground:!1,backgroundColor:"rgba(155, 190, 213, 0.3)",backgroundTransparency:70,drawBorder:!1,borderColor:"#667b8b",bold:!1,italic:!1,fixedSize:!1,wordWrap:!1,wordWrapWidth:200},linetoolballoon:{color:w,backgroundColor:se,borderColor:te,fontsize:14,transparency:30},linetoolbrush:{linecolor:R,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,smooth:5,fillBackground:!1,backgroundColor:F,transparency:50,leftEnd:m.Normal,rightEnd:m.Normal},linetoolhighlighter:{linecolor:re,smooth:5,transparency:85},linetoolpolyline:{linecolor:V,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,fillBackground:!0,backgroundColor:B,transparency:50,filled:!1},linetoolsignpost:{itemType:p.Emoji,emoji:"🙂",showImage:!1,plateColor:T,fontSize:12,bold:!1,italic:!1},linetoolpath:{lineColor:T,lineWidth:2,lineStyle:CanvasEx.LINESTYLE_SOLID,leftEnd:m.Normal,rightEnd:m.Arrow},linetoolarrowmarkleft:{color:T,arrowColor:T,fontsize:14,bold:!1,italic:!1,showLabel:!0},linetoolarrowmarkup:{color:le,arrowColor:le,fontsize:14,bold:!1,italic:!1,showLabel:!0},linetoolarrowmarkright:{color:T,arrowColor:T,fontsize:14,bold:!1,italic:!1,showLabel:!0},linetoolarrowmarkdown:{color:Z,arrowColor:Z,fontsize:14,bold:!1,italic:!1,showLabel:!0},linetoolflagmark:{flagColor:T},linetoolnote:{markerColor:T,textColor:w,backgroundColor:x,backgroundTransparency:0,borderColor:T,fontSize:14,bold:!1,italic:!1,fixedSize:!0},linetoolnoteabsolute:{markerColor:T,textColor:w,backgroundColor:x,backgroundTransparency:0,borderColor:T,fontSize:14,bold:!1,italic:!1,fixedSize:!0},linetoolpricelabel:{color:w,backgroundColor:T,borderColor:T,fontWeight:"bold",fontsize:14,transparency:0},linetoolpricenote:{showLabel:!1,horzLabelsAlign:"center",vertLabelsAlign:"bottom",textColor:T,fontSize:14,bold:!1,italic:!1,lineColor:T,priceLabelBackgroundColor:T,priceLabelBorderColor:T,priceLabelTextColor:w,priceLabelFontSize:12,priceLabelBold:!1,priceLabelItalic:!1},linetoolarrowmarker:{backgroundColor:E,textColor:E,bold:!0,italic:!1,fontsize:16,showLabel:!0},linetoolrectangle:{color:ee,fillBackground:!0,backgroundColor:ie,linewidth:1,transparency:50,showLabel:!1,horzLabelsAlign:"left",vertLabelsAlign:"bottom",textColor:ee,fontSize:14,bold:!1,italic:!1,extendLeft:!1,extendRight:!1},linetoolrotatedrectangle:{color:pe,fillBackground:!0,backgroundColor:_e,transparency:50,linewidth:1},linetoolcircle:{color:ge,backgroundColor:fe,fillBackground:!0,linewidth:1,showLabel:!1,textColor:ge,fontSize:14,bold:!1,italic:!1},linetoolellipse:{color:ne,fillBackground:!0,backgroundColor:oe,transparency:50,linewidth:1,showLabel:!1,textColor:ne,fontSize:14,bold:!1,italic:!1},linetoolarc:{color:J,fillBackground:!0,backgroundColor:Q,transparency:50,linewidth:1},linetoolprediction:{linecolor:T,linewidth:1,sourceBackColor:T,sourceTextColor:w, +sourceStrokeColor:T,targetStrokeColor:T,targetBackColor:T,targetTextColor:w,successBackground:pe,successTextColor:w,failureBackground:q,failureTextColor:w,intermediateBackColor:"#ead289",intermediateTextColor:"#6d4d22",transparency:10,centersColor:"#202020"},linetooltriangle:{color:Se,fillBackground:!0,backgroundColor:ye,transparency:50,linewidth:1},linetoolcallout:{color:w,backgroundColor:H,transparency:50,linewidth:1,fontsize:14,bordercolor:W,bold:!1,italic:!1,wordWrap:!1,wordWrapWidth:200},linetoolparallelchannel:{linecolor:T,linewidth:2,linestyle:CanvasEx.LINESTYLE_SOLID,extendLeft:!1,extendRight:!1,fillBackground:!0,backgroundColor:A,transparency:20,showMidline:!0,midlinecolor:T,midlinewidth:1,midlinestyle:CanvasEx.LINESTYLE_DASHED},linetoolelliottimpulse:{degree:7,showWave:!0,color:"#3d85c6",linewidth:1},linetoolelliotttriangle:{degree:7,showWave:!0,color:ge,linewidth:1},linetoolelliotttriplecombo:{degree:7,showWave:!0,color:"#6aa84f",linewidth:1},linetoolelliottcorrection:{degree:7,showWave:!0,color:"#3d85c6",linewidth:1},linetoolelliottdoublecombo:{degree:7,showWave:!0,color:"#6aa84f",linewidth:1},linetoolbarspattern:{color:T,mode:c.Bars,mirrored:!1,flipped:!1},linetoolghostfeed:{averageHL:20,variance:50,candleStyle:{upColor:ae,downColor:U,drawWick:!0,drawBorder:!0,borderColor:"#378658",borderUpColor:le,borderDownColor:q,wickColor:Te},transparency:50},study:{inputs:{},styles:{},palettes:{},bands:{},area:{},graphics:{},visible:!0,showLegendValues:!0,showLabelsOnPriceScale:!0,precision:"default"},linetoolpitchfork:{fillBackground:!0,transparency:80,style:l.Original,median:{visible:!0,color:q,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},extendLines:!1,level0:r(.25,me,!1),level1:r(.382,ue,!1),level2:r(.5,pe,!0),level3:r(.618,le,!1),level4:r(.75,"#64b5f6",!1),level5:r(1,T,!0),level6:r(1.5,ee,!1),level7:r(1.75,ne,!1),level8:r(2,j,!1)},linetoolpitchfan:{fillBackground:!0,transparency:80,median:{visible:!0,color:q,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level0:r(.25,me,!1),level1:r(.382,ue,!1),level2:r(.5,pe,!0),level3:r(.618,le,!1),level4:r(.75,"#64b5f6",!1),level5:r(1,T,!0),level6:r(1.5,ee,!1),level7:r(1.75,ne,!1),level8:r(2,j,!1)},linetoolgannfan:{showLabels:!0,fillBackground:!0,transparency:80,level1:Be(1,8,me,!0),level2:Be(1,4,ue,!0),level3:Be(1,3,pe,!0),level4:Be(1,2,le,!0),level5:Be(1,1,"#64b5f6",!0),level6:Be(2,1,T,!0),level7:Be(3,1,ee,!0),level8:Be(4,1,ne,!0),level9:Be(8,1,j,!0)},linetoolganncomplex:{fillBackground:!1,arcsBackground:{fillBackground:!0,transparency:80},reverse:!1,scaleRatio:"",showLabels:!0,labelsStyle:{fontSize:12,bold:!1,italic:!1},levels:[y(Te,!0,1),y(ge,!0,1),y(ue,!0,1),y(pe,!0,1),y(le,!0,1),y(Te,!0,1)],fanlines:[xe(k,!1,1,8,1),xe(q,!1,1,5,1),xe(Te,!1,1,4,1),xe(ge,!1,1,3,1),xe(ue,!0,1,2,1),xe(pe,!0,1,1,1),xe(le,!0,1,1,2),xe(le,!1,1,1,3),xe(T,!1,1,1,4),xe(D,!1,1,1,5),xe(k,!1,1,1,8)],arcs:[xe(ge,!0,1,1,0),xe(ge,!0,1,1,1),xe(ge,!0,1,1.5,0),xe(ue,!0,1,2,0),xe(ue,!0,1,2,1),xe(pe,!0,1,3,0),xe(pe,!0,1,3,1),xe(le,!0,1,4,0),xe(le,!0,1,4,1),xe(T,!0,1,5,0),xe(T,!0,1,5,1)]}, +linetoolgannfixed:{fillBackground:!1,arcsBackground:{fillBackground:!0,transparency:80},reverse:!1,levels:[y(Te,!0,1),y(ge,!0,1),y(ue,!0,1),y(pe,!0,1),y(le,!0,1),y(Te,!0,1)],fanlines:[xe(k,!1,1,8,1),xe(q,!1,1,5,1),xe(Te,!1,1,4,1),xe(ge,!1,1,3,1),xe(ue,!0,1,2,1),xe(pe,!0,1,1,1),xe(le,!0,1,1,2),xe(le,!1,1,1,3),xe(T,!1,1,1,4),xe(D,!1,1,1,5),xe(k,!1,1,1,8)],arcs:[xe(ge,!0,1,1,0),xe(ge,!0,1,1,1),xe(ge,!0,1,1.5,0),xe(ue,!0,1,2,0),xe(ue,!0,1,2,1),xe(pe,!0,1,3,0),xe(pe,!0,1,3,1),xe(le,!0,1,4,0),xe(le,!0,1,4,1),xe(T,!0,1,5,0),xe(T,!0,1,5,1)]},linetoolgannsquare:{color:"rgba(21, 56, 153, 0.8)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,showTopLabels:!0,showBottomLabels:!0,showLeftLabels:!0,showRightLabels:!0,fillHorzBackground:!0,horzTransparency:80,fillVertBackground:!0,vertTransparency:80,reverse:!1,fans:t(Pe,!1),hlevel1:i(0,Te,!0),hlevel2:i(.25,Se,!0),hlevel3:i(.382,ue,!0),hlevel4:i(.5,pe,!0),hlevel5:i(.618,le,!0),hlevel6:i(.75,T,!0),hlevel7:i(1,Te,!0),vlevel1:i(0,Te,!0),vlevel2:i(.25,Se,!0),vlevel3:i(.382,ue,!0),vlevel4:i(.5,pe,!0),vlevel5:i(.618,le,!0),vlevel6:i(.75,T,!0),vlevel7:i(1,Te,!0)},linetoolfibspeedresistancefan:{fillBackground:!0,transparency:80,grid:{color:"rgba(21, 56, 153, 0.8)",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,visible:!0},linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,showTopLabels:!0,showBottomLabels:!0,showLeftLabels:!0,showRightLabels:!0,reverse:!1,hlevel1:i(0,Te,!0),hlevel2:i(.25,Se,!0),hlevel3:i(.382,ue,!0),hlevel4:i(.5,pe,!0),hlevel5:i(.618,le,!0),hlevel6:i(.75,T,!0),hlevel7:i(1,Te,!0),vlevel1:i(0,Te,!0),vlevel2:i(.25,Se,!0),vlevel3:i(.382,ue,!0),vlevel4:i(.5,pe,!0),vlevel5:i(.618,le,!0),vlevel6:i(.75,T,!0),vlevel7:i(1,Te,!0)},linetoolfibretracement:{showCoeffs:!0,showPrices:!0,fillBackground:!0,transparency:80,extendLines:!1,extendLinesLeft:!1,horzLabelsAlign:"left",vertLabelsAlign:"bottom",reverse:!1,coeffsAsPercents:!1,fibLevelsBasedOnLogScale:!1,labelFontSize:12,trendline:{visible:!0,color:Te,linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},levelsStyle:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:i(0,Te,!0),level2:i(.236,q,!0),level3:i(.382,ue,!0),level4:i(.5,pe,!0),level5:i(.618,le,!0),level6:i(.786,"#64b5f6",!0),level7:i(1,Te,!0),level8:i(1.618,T,!0),level9:i(2.618,q,!0),level10:i(3.618,ee,!0),level11:i(4.236,ne,!0),level12:i(1.272,ue,!1),level13:i(1.414,q,!1),level16:i(2,le,!1),level14:i(2.272,ue,!1),level15:i(2.414,pe,!1),level17:i(3,"#64b5f6",!1),level18:i(3.272,Te,!1),level19:i(3.414,T,!1),level20:i(4,"#cc2828",!1),level21:i(4.272,ee,!1),level22:i(4.414,ne,!1),level23:i(4.618,ue,!1),level24:i(4.764,le,!1)},linetoolfibchannel:{showCoeffs:!0,showPrices:!0,fillBackground:!0,transparency:80,extendLeft:!1,extendRight:!1,horzLabelsAlign:"left",vertLabelsAlign:"middle",coeffsAsPercents:!1,labelFontSize:12,levelsStyle:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:i(0,Te,!0),level2:i(.236,q,!0),level3:i(.382,ue,!0),level4:i(.5,pe,!0),level5:i(.618,le,!0),level6:i(.786,"#64b5f6",!0),level7:i(1,Te,!0),level8:i(1.618,T,!0),level9:i(2.618,q,!0), +level10:i(3.618,ee,!0),level11:i(4.236,ne,!0),level12:i(1.272,ue,!1),level13:i(1.414,q,!1),level16:i(2,le,!1),level14:i(2.272,ue,!1),level15:i(2.414,pe,!1),level17:i(3,"#64b5f6",!1),level18:i(3.272,Te,!1),level19:i(3.414,T,!1),level20:i(4,"#cc2828",!1),level21:i(4.272,ee,!1),level22:i(4.414,ne,!1),level23:i(4.618,ue,!1),level24:i(4.764,le,!1)},linetoolprojection:{showCoeffs:!0,fillBackground:!0,transparency:80,color1:A,color2:ie,linewidth:1,trendline:{visible:!0,color:Pe,linestyle:CanvasEx.LINESTYLE_SOLID},level1:r(1,"#808080",!0)},linetool5pointspattern:{color:T,textcolor:w,fillBackground:!0,backgroundColor:T,fontsize:12,bold:!1,italic:!1,transparency:85,linewidth:1},linetoolcypherpattern:{color:T,textcolor:w,fillBackground:!0,backgroundColor:T,fontsize:12,bold:!1,italic:!1,transparency:85,linewidth:1},linetooltrianglepattern:{color:N,textcolor:w,fillBackground:!0,backgroundColor:N,fontsize:12,bold:!1,italic:!1,transparency:85,linewidth:1},linetoolabcd:{color:le,textcolor:w,fontsize:12,bold:!1,italic:!1,linewidth:1},linetoolthreedrivers:{color:N,textcolor:w,fillBackground:!0,backgroundColor:"rgba(149, 40, 204, 0.5)",fontsize:12,bold:!1,italic:!1,transparency:50,linewidth:1},linetoolheadandshoulders:{color:le,textcolor:w,fillBackground:!0,backgroundColor:le,fontsize:12,bold:!1,italic:!1,transparency:85,linewidth:1},linetoolfibwedge:{showCoeffs:!0,fillBackground:!0,transparency:80,trendline:{visible:!0,color:"#808080",linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:r(.236,q,!0),level2:r(.382,ue,!0),level3:r(.5,pe,!0),level4:r(.618,le,!0),level5:r(.786,"#64b5f6",!0),level6:r(1,Te,!0),level7:r(1.618,T,!1),level8:r(2.618,q,!1),level9:r(3.618,N,!1),level10:r(4.236,ne,!1),level11:r(4.618,ne,!1)},linetoolfibcircles:{showCoeffs:!0,fillBackground:!0,transparency:80,coeffsAsPercents:!1,trendline:{visible:!0,color:Te,linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:r(.236,q,!0),level2:r(.382,ue,!0),level3:r(.5,pe,!0),level4:r(.618,le,!0),level5:r(.786,"#64b5f6",!0),level6:r(1,Te,!0),level7:r(1.618,T,!0),level8:r(2.618,q,!0),level9:r(3.618,N,!0),level10:r(4.236,ne,!0),level11:r(4.618,ne,!0)},linetoolfibspeedresistancearcs:{showCoeffs:!0,fillBackground:!0,transparency:80,fullCircles:!1,trendline:{visible:!0,color:Te,linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:r(.236,q,!0),level2:r(.382,ue,!0),level3:r(.5,pe,!0),level4:r(.618,le,!0),level5:r(.786,"#64b5f6",!0),level6:r(1,Te,!0),level7:r(1.618,T,!0),level8:r(2.618,q,!0),level9:r(3.618,N,!0),level10:r(4.236,ne,!0),level11:r(4.618,ne,!0)},linetooltrendbasedfibextension:{showCoeffs:!0,showPrices:!0,fillBackground:!0,transparency:80,extendLines:!1,extendLinesLeft:!1,horzLabelsAlign:"left",vertLabelsAlign:"bottom",reverse:!1,coeffsAsPercents:!1,fibLevelsBasedOnLogScale:!1,labelFontSize:12,trendline:{visible:!0,color:Te,linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},levelsStyle:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},level1:i(0,Te,!0),level2:i(.236,q,!0),level3:i(.382,ue,!0),level4:i(.5,pe,!0),level5:i(.618,le,!0),level6:i(.786,"#64b5f6",!0), +level7:i(1,Te,!0),level8:i(1.618,T,!0),level9:i(2.618,q,!0),level10:i(3.618,ee,!0),level11:i(4.236,ne,!0),level12:i(1.272,ue,!1),level13:i(1.414,q,!1),level16:i(2,le,!1),level14:i(2.272,ue,!1),level15:i(2.414,pe,!1),level17:i(3,"#64b5f6",!1),level18:i(3.272,Te,!1),level19:i(3.414,T,!1),level20:i(4,"#cc2828",!1),level21:i(4.272,ee,!1),level22:i(4.414,ne,!1),level23:i(4.618,ue,!1),level24:i(4.764,le,!1)},linetooltrendbasedfibtime:{showCoeffs:!0,fillBackground:!0,transparency:80,horzLabelsAlign:"right",vertLabelsAlign:"bottom",trendline:{visible:!0,color:Te,linewidth:1,linestyle:CanvasEx.LINESTYLE_DASHED},level1:r(0,Te,!0),level2:r(.382,q,!0),level3:r(.5,ue,!1),level4:r(.618,pe,!0),level5:r(1,le,!0),level6:r(1.382,"#64b5f6",!0),level7:r(1.618,Te,!0),level8:r(2,T,!0),level9:r(2.382,q,!0),level10:r(2.618,ee,!0),level11:r(3,ne,!0)},linetoolschiffpitchfork:{fillBackground:!0,transparency:80,style:l.Schiff,median:{visible:!0,color:q,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},extendLines:!1,level0:r(.25,me,!1),level1:r(.382,ue,!1),level2:r(.5,pe,!0),level3:r(.618,le,!1),level4:r(.75,"#64b5f6",!1),level5:r(1,T,!0),level6:r(1.5,ee,!1),level7:r(1.75,ne,!1),level8:r(2,j,!1)},linetoolschiffpitchfork2:{fillBackground:!0,transparency:80,style:l.Schiff2,median:{visible:!0,color:q,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},extendLines:!1,level0:r(.25,me,!1),level1:r(.382,ue,!1),level2:r(.5,pe,!0),level3:r(.618,le,!1),level4:r(.75,"#64b5f6",!1),level5:r(1,T,!0),level6:r(1.5,ee,!1),level7:r(1.75,ne,!1),level8:r(2,j,!1)},linetoolinsidepitchfork:{fillBackground:!0,transparency:80,style:l.Inside,median:{visible:!0,color:q,linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID},extendLines:!1,level0:r(.25,me,!1),level1:r(.382,ue,!1),level2:r(.5,pe,!0),level3:r(.618,le,!1),level4:r(.75,"#64b5f6",!1),level5:r(1,T,!0),level6:r(1.5,ee,!1),level7:r(1.75,ne,!1),level8:r(2,j,!1)},linetoolregressiontrend:{linewidth:1,linestyle:CanvasEx.LINESTYLE_SOLID,styles:{upLine:{visible:!0,color:I,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2},downLine:{visible:!0,color:I,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2},baseLine:{visible:!0,color:Y,linestyle:CanvasEx.LINESTYLE_DASHED,linewidth:1},extendLines:!1,showPearsons:!0,transparency:70}}},Re(TradingView.defaultProperties.chartproperties),Fe()}if(void 0===TradingView.defaultProperties["study_MA@tv-basicstudies"]&&(TradingView.defaultProperties["study_MA@tv-basicstudies"]={description:"Moving Average",shortDescription:"MA",inputs:{length:9,source:"close"},styles:{MovAvg:{visible:!0,color:T,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:h.Line,histogramBase:0,title:"MA"}}}),void 0===TradingView.defaultProperties["study_PivotPointsHighLow@tv-basicstudies"]&&(TradingView.defaultProperties["study_PivotPointsHighLow@tv-basicstudies"]={fontsize:10,borderColor:T,backColor:P,textColor:Le}),void 0===TradingView.defaultProperties["study_PivotPointsStandard@tv-basicstudies"]){TradingView.defaultProperties["study_PivotPointsStandard@tv-basicstudies"]={_hardCodedDefaultsVersion:1,fontsize:11,levelsStyle:{ +showLabels:!0,visibility:{P:!0,"S1/R1":!0,"S2/R2":!0,"S3/R3":!0,"S4/R4":!0,"S5/R5":!0},colors:{P:ve,"S1/R1":ve,"S2/R2":ve,"S3/R3":ve,"S4/R4":ve,"S5/R5":ve},widths:{P:1,"S1/R1":1,"S2/R2":1,"S3/R3":1,"S4/R4":1,"S5/R5":1}}}}if(void 0===TradingView.defaultProperties["study_ZigZag@tv-basicstudies"]&&(TradingView.defaultProperties["study_ZigZag@tv-basicstudies"]={color:T,linewidth:2}),void 0===TradingView.defaultProperties["study_ElliottWave@tv-basicstudies"]&&(TradingView.defaultProperties["study_ElliottWave@tv-basicstudies"]={inputs:{},level0:t(z,!1),level1:t("#008000",!1),level2:t("#0000ff",!1),level3:t("#ff00ff",!1),level4:t("#0080ff",!0),level5:t(z,!0),level6:t("#008000",!0),level7:t("#0000ff",!0),level8:t("#ff00ff",!0)}),void 0===TradingView.defaultProperties["study_LinearRegression@tv-basicstudies"]&&(TradingView.defaultProperties["study_LinearRegression@tv-basicstudies"]={styles:{upLine:{visible:!0,color:I,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},downLine:{visible:!0,color:I,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},baseLine:{visible:!0,color:Y,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1},extendLines:!0,showPearsons:!0,backgroundColor:"rgba(153, 21, 21, 0.3)",transparency:70}}),void 0===TradingView.defaultProperties["study_Compare@tv-basicstudies"]&&(TradingView.defaultProperties["study_Compare@tv-basicstudies"]={minTick:"default"}),void 0===TradingView.defaultProperties["study_Overlay@tv-basicstudies"]){TradingView.defaultProperties["study_Overlay@tv-basicstudies"]={style:a.STYLE_LINE,allowExtendTimeScale:!1,showPriceLine:!1,minTick:"default",candleStyle:{upColor:"#6ba583",downColor:"#d75442",drawWick:!0,drawBorder:!0,drawBody:!0,borderColor:"#378658",borderUpColor:"#225437",borderDownColor:"#5b1a13",wickColor:"#737375",wickUpColor:"#737375",wickDownColor:"#737375",barColorsOnPrevClose:!1},hollowCandleStyle:{upColor:"#6ba583",downColor:"#d75442",drawWick:!0,drawBorder:!0,drawBody:!0,borderColor:"#378658",borderUpColor:"#225437",borderDownColor:"#5b1a13",wickColor:"#737375",wickUpColor:"#737375",wickDownColor:"#737375",barColorsOnPrevClose:!1},barStyle:{upColor:"#6ba583",downColor:"#d75442",barColorsOnPrevClose:!1,dontDrawOpen:!1,thinBars:!0},lineStyle:{color:be,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2,priceSource:"close",styleType:a.STYLE_LINE_TYPE_SIMPLE},areaStyle:{color1:T,color2:T,linecolor:T,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:2,priceSource:"close",transparency:95},baselineStyle:{baselineColor:Ae,topFillColor1:ke,topFillColor2:ke,bottomFillColor1:Ve,bottomFillColor2:Ve,topLineColor:Ee,bottomLineColor:De,topLineWidth:2,bottomLineWidth:2,priceSource:"close",transparency:50,baseLevelPercentage:50},columnStyle:{upColor:n(le,50),downColor:n(q,50),barColorsOnPrevClose:!0,priceSource:"close"},styles:{open:{visible:!0,color:z,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:h.Line,histogramBase:0},high:{visible:!0,color:z,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:h.Line,histogramBase:0},low:{visible:!0,color:z,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1, +plottype:h.Line,histogramBase:0},close:{visible:!0,color:z,linestyle:CanvasEx.LINESTYLE_SOLID,linewidth:1,plottype:h.Line,histogramBase:0}}}}for(var Oe=e.split("."),We=TradingView.defaultProperties,He=0;He1?h(e[r],t.slice(1),i):(e[r]&&e[r].setValue?e[r].setValue(i):e[r]=i,!0))}function d(e){i||y.logWarn("Path `"+e+"` does not exist.")}}function Re(e,t,i,s){window.__defaultsOverrides&&Ne(e,t,i,window.__defaultsOverrides,s)}function Oe(e,t){window.__settingsOverrides&&Ne(e,null,!1,window.__settingsOverrides,t)}function Fe(){var e=/^linetool.+/;Object.keys(TradingView.defaultProperties).forEach((function(t){e.test(t)&&Re(TradingView.defaultProperties[t],null,!1,t)}))}function We(e,t){return t?function(e,t){var i=Be(e);if(!window._UNIT_TESTS){var s=TradingView.clone(TVSettings.getJSON(e,null));if(function(e){var t=new Set(["linetoolregressiontrend"]);return e.startsWith("study_")||t.has(e)}(e)&&s&&function(e){if(!e)return!1;e=e.toString();var t=new RegExp("\\d+").exec(e);return null!==t&&t[0]===e}(s.version)){var r=s.inputs,n=t.updateStudyInputs(s.id,s.version,"last",r,null);s.inputs=n;var o=t.updateStudyState(s,s);s=o}TradingView.merge(i,s),Oe(i,e)}return i}(e,t):function(e){var t=Be(e);if(!window._UNIT_TESTS){var i=TradingView.clone(TVSettings.getJSON(e,null));if(i){TradingView.merge(t,i);const s=e.split(".");Oe(t,void 0===s[1]?e:s[1])}}return t}(e)}We.create=function(e,t){if(t){var i=Be(e);TradingView.defaultProperties[e]=Object.assign(t,i)}},We.remove=function(e){TradingView.defaultProperties[e]=void 0},TradingView.saveDefaults=function(e,t){void 0===t?TVSettings.remove(e):TVSettings.setJSON(e,t)},TradingView.factoryDefaults=Be,window.applyDefaultOverridesToLinetools=Fe,window.applyDefaultsOverrides=Re,window.applyPropertiesOverrides=Ne,window.defaults=We,t.applyDefaultOverridesToLinetools=Fe,t.applyDefaultsOverrides=Re,t.applyPropertiesOverrides=Ne,t.defaults=We,t.factoryDefaults=Be,t.saveDefaults=TradingView.saveDefaults},85733:(e,t,i)=>{"use strict";i.r(t),i.d(t,{toolIsCursor:()=>p,toolIsMeasure:()=>_,resetToCursor:()=>m,lockTimeAxisTime:()=>w,tool:()=>C,iconTool:()=>P,cursorTool:()=>T,isToolCreatingNow:()=>x,isToolEditingNow:()=>I,isToolMovingNow:()=>M,isDirectionalMovementActive:()=>L,createdLineTool:()=>A,continuedLineTool:()=>E,cancelledLineTool:()=>k,beenSetLineToolLastPoint:()=>D,startedMovingLineTool:()=>V,movedLineTool:()=>B,finishedMovingLineTool:()=>N,startedChangingLineTool:()=>R,changedLineTool:()=>O,finishedChangingLineTool:()=>F,removedLineTool:()=>W,finishedLineTool:()=>H,changedLineStyle:()=>z,copiedLineTool:()=>U,restoredLineTool:()=>j,restoredLineToolState:()=>G,isPointSelectedNow:()=>q,isStudyEditingNow:()=>Y, +createLineTool:()=>X,continueLineTool:()=>Z,cancelLineTool:()=>J,setLineToolLastPoint:()=>Q,startMovingLineTool:()=>ee,moveLineTool:()=>te,finishMovingLineTool:()=>ie,startChangingLineTool:()=>se,changeLineTool:()=>re,finishChangingLineTool:()=>ne,removeLineTool:()=>oe,finishLineTool:()=>ae,changeLineStyle:()=>le,copyLineTool:()=>ce,restoreLineTool:()=>he,restoreLineToolState:()=>de,init:()=>_e,runOnDrawingStateReady:()=>me,properties:()=>ge,hideAllDrawings:()=>fe,hideAllIndicators:()=>ve,lockDrawings:()=>Se,hideMarksOnBars:()=>ye,drawOnAllCharts:()=>be,drawOnAllChartsMode:()=>we,lockTimeAxis:()=>Ce});var s=i(88537),r=i(32255),n=i(88564),o=i(59803),a=i(52714),l=i.n(a),c=i(2872),h=i.n(c),d=i(56840),u=i(76422);function p(e){return"cursor"===e||"arrow"===e||"dot"===e}function _(e){return"measure"===e}function m(e=!1){if(!e&&g){if(g.childs().stayInDrawingMode.value())return}C.setValue(T.value())}let g=null,f=null,v=null,S=null,y=null,b=null;const w=new(l()),C=new(l()),P=new(l()),T=new(l()),x=new(l())(!1),I=new(l())(!1),M=new(l())(!1),L=new(l())(!1),A=new(h()),E=new(h()),k=new(h()),D=new(h()),V=new(h()),B=new(h()),N=new(h()),R=new(h()),O=new(h()),F=new(h()),W=new(h()),H=new(h()),z=new(h()),U=new(h()),j=new(h()),G=new(h()),q=new(l())(!1),Y=new(l())(!1);function K(e,t){const i=t||{value:!1};return t=>{i.value||(i.value=!0,e.fire(t),i.value=!1)}}const $={value:!1},X=K(A,$),Z=K(E,$),J=K(k,$),Q=K(D,$),ee=K(V),te=K(B),ie=K(N),se=K(R),re=K(O),ne=K(F),oe=K(W),ae=K(H),le=K(z,$),ce=K(U,$),he=K(j),de=K(G);let ue=!1,pe=[];function _e(){ue||(C.setValue(d.getValue("chart.cursorPreference","cursor")),C.subscribe(e=>p(e)&&T.setValue(e),{callWithLast:!0}),T.subscribe(e=>{e&&d.setValue("chart.cursorPreference",e)}),g=new n.DefaultProperty("drawings"),f=(0,r.createPrimitiveProperty)(),v=(0,r.createPrimitiveProperty)(),S=(0,r.createPrimitiveProperty)(),y=(0,r.createPrimitiveProperty)(),b=(0,r.createPrimitiveProperty)(),f.setValue(!1),v.setValue(!1),S.setValue(!1),y.setValue(!1),b.setValue(!1),C.subscribe(()=>{(0,u.emit)("onSelectedLineToolChanged")}),P.subscribe(()=>{(0,o.saveDefaults)("linetoolicon",{...(0,o.defaults)("linetoolicon"),icon:P.value()})}),ue=!0,pe.forEach(e=>e()),pe=[])}function me(e){ue?e():pe.push(e)}function ge(){return(0,s.ensureNotNull)(g)}function fe(){return(0,s.ensureNotNull)(f)}function ve(){return(0,s.ensureNotNull)(v)}function Se(){return(0,s.ensureNotNull)(S)}function ye(){return(0,s.ensureNotNull)(y)}function be(){return ge().childs().drawOnAllCharts}function we(){return ge().childs().drawOnAllChartsMode}function Ce(){return(0,s.ensureNotNull)(b)}},77216:(e,t,i)=>{"use strict";i.d(t,{EnvironmentState:()=>r});var s=i(49483);class r{constructor(e,t=!1){this._shift=!1,this._mod=!1,this._alt=!1,void 0!==e&&(this._shift=Boolean(e.shiftKey),this._mod=Boolean((0,s.isMac)()?e.metaKey:e.ctrlKey),this._alt=Boolean(e.altKey)),this._isApiEvent=t}shift(){return this._shift}mod(){return this._mod}alt(){return this._alt}shiftOnly(){return this._shift&&!this._mod&&!this._alt}modOnly(){return this._mod&&!this._shift&&!this._alt} +altOnly(){return this._alt&&!this._shift&&!this._mod}modShift(){return this._shift&&this._mod&&!this._alt}isApiEvent(){return this._isApiEvent}static create(e=!1,t=!1,i=!1){return new r({shiftKey:e,ctrlKey:t,metaKey:t,altKey:i})}}},19234:(e,t,i)=>{"use strict";function s(e){return"="+JSON.stringify(function e(t){return Object.keys(t).sort().reduce((i,s)=>("[object Object]"===Object.prototype.toString.call(t[s])?i[s]=e(t[s]):i[s]=t[s],i),{})}(e))}function r(e){return s(e)}function n(e){return"="===e[0]}function o(e){if(!n(e))return{symbol:e};try{return JSON.parse(e.slice(1))}catch(t){return{symbol:e}}}function a(e){return"string"==typeof e?e:a(e.symbol)}i.r(t),i.d(t,{encodeExtendedSymbolOrGetSimpleSymbolString:()=>r,isEncodedExtendedSymbol:()=>n,decodeExtendedSymbol:()=>o,unwrapSimpleSymbol:()=>a})},69147:(e,t,i)=>{"use strict";i.d(t,{customFormatters:()=>s});const s={dateFormatter:null,timeFormatter:null,tickMarkFormatter:null,priceFormatterFactory:null,studyFormatterFactory:null}},7043:(e,t,i)=>{"use strict";i.d(t,{dateFormatFunctions:()=>p,availableDateFormats:()=>_,defaultDateFormat:()=>m});var s=i(28353),r=i(97098);const n={1:()=>(0,s.t)("Jan"),2:()=>(0,s.t)("Feb"),3:()=>(0,s.t)("Mar"),4:()=>(0,s.t)("Apr"),5:()=>(0,s.t)("May",{context:"short"}),6:()=>(0,s.t)("Jun"),7:()=>(0,s.t)("Jul"),8:()=>(0,s.t)("Aug"),9:()=>(0,s.t)("Sep"),10:()=>(0,s.t)("Oct"),11:()=>(0,s.t)("Nov"),12:()=>(0,s.t)("Dec")},o=(e,t)=>(t?e.getMonth():e.getUTCMonth())+1,a=(e,t)=>t?e.getFullYear():e.getUTCFullYear(),l=(e,t)=>(0,r.numberToStringWithLeadingZero)(((e,t)=>t?e.getDate():e.getUTCDate())(e,t),2),c=(e,t)=>n[o(e,t)](),h=(e,t)=>(0,r.numberToStringWithLeadingZero)(o(e,t),2),d=(e,t)=>(0,r.numberToStringWithLeadingZero)(a(e,t)%100,2),u=(e,t)=>(0,r.numberToStringWithLeadingZero)(a(e,t),4),p={"dd MMM 'yy":(e,t)=>`${l(e,t)} ${c(e,t)} '${d(e,t)}`,"MMM dd, yyyy":(e,t)=>`${c(e,t)} ${l(e,t)}, ${u(e,t)}`,"MMM dd":(e,t)=>`${c(e,t)} ${l(e,t)}`,"yyyy-MM-dd":(e,t)=>`${u(e,t)}-${h(e,t)}-${l(e,t)}`,"yy-MM-dd":(e,t)=>`${d(e,t)}-${h(e,t)}-${l(e,t)}`,"yy/MM/dd":(e,t)=>`${d(e,t)}/${h(e,t)}/${l(e,t)}`,"yyyy/MM/dd":(e,t)=>`${u(e,t)}/${h(e,t)}/${l(e,t)}`,"dd-MM-yyyy":(e,t)=>`${l(e,t)}-${h(e,t)}-${u(e,t)}`,"dd-MM-yy":(e,t)=>`${l(e,t)}-${h(e,t)}-${d(e,t)}`,"dd/MM/yy":(e,t)=>`${l(e,t)}/${h(e,t)}/${d(e,t)}`,"dd/MM/yyyy":(e,t)=>`${l(e,t)}/${h(e,t)}/${u(e,t)}`,"MM/dd/yy":(e,t)=>`${h(e,t)}/${l(e,t)}/${d(e,t)}`,"MM/dd/yyyy":(e,t)=>`${h(e,t)}/${l(e,t)}/${u(e,t)}`},_=Object.keys(p),m=()=>-1!==["ja","ko","zh","zh_TW"].indexOf(window.language||"")?"yyyy-MM-dd":"dd MMM 'yy"},1860:(e,t,i)=>{"use strict";i.d(t,{DateFormatter:()=>n});var s=i(69147),r=i(7043);class n{constructor(e="yyyy-MM-dd"){this._dateFormatFunc=r.dateFormatFunctions[e]}format(e){return s.customFormatters&&s.customFormatters.dateFormatter?s.customFormatters.dateFormatter.format(e):this._dateFormatFunc(e,!1)}formatLocal(e){ +return s.customFormatters.dateFormatter?s.customFormatters.dateFormatter.formatLocal?s.customFormatters.dateFormatter.formatLocal(e):s.customFormatters.dateFormatter.format(e):this._dateFormatFunc(e,!0)}}},95792:(e,t,i)=>{"use strict";i.d(t,{DateTimeFormatter:()=>o});var s=i(64806),r=i(1860);const n={dateFormat:"yyyy-MM-dd",timeFormat:"%h:%m:%s",dateTimeSeparator:" "};class o{constructor(e={}){const t=Object.assign({},n,e);this._dateFormatter=new r.DateFormatter(t.dateFormat),this._timeFormatter=new s.TimeFormatter(t.timeFormat),this._separator=t.dateTimeSeparator}format(e){return`${this._dateFormatter.format(e)}${this._separator}${this._timeFormatter.format(e)}`}formatLocal(e){return`${this._dateFormatter.formatLocal(e)}${this._separator}${this._timeFormatter.formatLocal(e)}`}}},51264:(e,t,i)=>{"use strict";i.d(t,{LimitedPrecisionNumericFormatter:()=>r});var s=i(80643);class r{constructor(e=1){this._precision=e}format(e){(0,s.isNumber)(e)||(e=parseFloat(e));const t=e.toFixed(this._precision),i=Math.pow(10,-this._precision);return Math.max(parseFloat(t),i)+""}parse(e){const t=parseFloat(e);return isNaN(t)?{res:!1}:{res:!0,value:t,suggest:this.format(t)}}}},95505:(e,t,i)=>{"use strict";i.d(t,{NumericFormatter:()=>n});var s=i(97098),r=i(60521);class n{constructor(e){this._precision=e}format(e){return(void 0!==this._precision?e.toFixed(this._precision):n.formatNoE(e)).replace(".",s.formatterOptions.decimalSign)}parse(e){const t=e.replace(s.formatterOptions.decimalSign,".");let i=parseFloat(t);return this._precision&&(i=+i.toFixed(this._precision)),i}static formatNoE(e){if(!Number.isFinite(e))return String(e);const t=new r.Big(e);return t.lt(1)?t.toFixed():t.toString()}}},26811:(e,t,i)=>{"use strict";i.d(t,{PercentageFormatter:()=>n});var s=i(97098),r=i(62820);class n extends s.PriceFormatter{constructor(e){super(e),this.type="percentage"}state(){const e=s.PriceFormatter.prototype.state.call(this);return e.percent=!0,e}parse(e){return e=e.replace("%",""),super.parse(e)}format(e,t,i,s,n=!0){const o=super.format(e,t,i,s,!1)+"%";return n?(0,r.forceLTRStr)(o):o}static serialize(e){return e.state()}static deserialize(e){return new n(e.priceScale)}}},97645:(e,t,i)=>{"use strict";i.d(t,{PipFormatter:()=>r});var s=i(97098);class r extends s.PriceFormatter{constructor(e,t,i,s){t||(t=1),"forex"!==i&&"cfd"!==i||!s?(super(1),this._isForex=!1):(super(s),this._isForex=!0),this._pipPriceScale=e,this._pipMinMove=t,this._pipMinMove2=s}format(e,t,i){let s=this._isForex?this._pipMinMove2:this._pipMinMove;return void 0===s&&(s=NaN),super.format(e*this._pipPriceScale/s,t,i)}}},97098:(e,t,i)=>{"use strict";i.r(t),i.d(t,{formatterOptions:()=>l,numberToStringWithLeadingZero:()=>c,isFormatterHasForexAdditionalPrecision:()=>h,PriceFormatter:()=>d});var s=i(28353),r=i(80643),n=i(62820);const o=(0,i(98125).getLogger)("Chart.PriceFormatter"),a=new RegExp(/^(-?)[0-9]+$/),l={decimalSign:".",decimalSignFractional:"'"};function c(e,t){if(!(0,r.isNumber)(e))return"n/a";if(!(0,r.isInteger)(t))throw new TypeError("invalid length") +;if(t<0||t>16)throw new TypeError("invalid length");if(0===t)return e.toString();return("0000000000000000"+e.toString()).slice(-t)}function h(e){return"hasForexAdditionalPrecision"in e}class d{constructor(e,t,i,n){if(this.type="price",this._formatterErrors={custom:(0,s.t)("Price format is invalid."),fraction:(0,s.t)("Fraction part is invalid."),secondFraction:(0,s.t)("Second fraction part is invalid.")},t||(t=1),(0,r.isNumber)(e)&&(0,r.isInteger)(e)||(e=100),e<0)throw new TypeError("invalid base");this._priceScale=e,this._minMove=t,this._minMove2=n,i&&void 0!==n&&n>0&&2!==n&&4!==n&&8!==n?o.logDebug("invalid minmove2"):(this._fractional=i,this.calculateDecimal())}isFractional(){return!!this._fractional}state(){return{fractional:this._fractional,fractionalLength:this._fractionalLength,minMove:this._minMove,minMove2:this._minMove2,priceScale:this._priceScale}}calculateDecimal(){if(this._fractionalLength=0,this._priceScale>0&&this._minMove>0){let e=this._priceScale;for(this._fractional&&this._minMove2&&(e/=this._minMove2);e>1;)e/=10,this._fractionalLength++}}format(e,t,i,s=!0,r=!0){let o,a="";return e<0?(a=!1===s?"":"−",e=-e):e&&!0===t&&(a="+"),o=this._fractional?a+this._formatAsFractional(e,i):a+this._formatAsDecimal(e,i),r?(0,n.forceLTRStr)(o):o}parse(e){return e=(e=(0,n.stripLTRMarks)(e)).replace("−","-"),this._fractional?this._minMove2?this._parseAsDoubleFractional(e):this._parseAsSingleFractional(e):this._parseAsDecimal(e)}hasForexAdditionalPrecision(){return!this._fractional&&10===this._minMove2}static serialize(e){return e.state()}static deserialize(e){return new d(e.priceScale,e.minMove,e.fractional,e.minMove2)}_formatAsDecimal(e,t){let i;t=t||0,i=this._fractional?Math.pow(10,this._fractionalLength||0):Math.pow(10,t)*this._priceScale/this._minMove;const s=1/i;let r;if(i>1)r=Math.floor(e);else{const t=Math.floor(Math.round(e/s)*s);r=0===Math.round((e-t)/s)?t:t+s}let n="";if(i>1){let s=parseFloat((Math.round(e*i)-r*i).toFixed(this._fractionalLength));s>=i&&(s-=i,r+=1);const o=void 0!==this._fractionalLength?this._fractionalLength:NaN;n=l.decimalSign+c(parseFloat(s.toFixed(this._fractionalLength))*this._minMove,o+t),n=this._removeEndingZeros(n,t)}return r.toString()+n}_getFractPart(e,t,i){const s=[0,5],r=[0,2,5,7],n=[0,1,2,3,5,6,7,8];return 2===i?void 0===s[e]?-1:s[e]:4===i?void 0===r[e]?-1:r[e]:8===i&&2===t?void 0===n[e]?-1:n[e]:e}_formatAsFractional(e,t){const i=this._priceScale/this._minMove;let s=Math.floor(e),r=t?Math.floor(e*i)-s*i:Math.round(e*i)-s*i;r===i&&(r=0,s+=1);let n="";if(t){let o=(e-s-r/i)*i;o=Math.round(o*Math.pow(10,t)),n=c(o,t),n=this._removeEndingZeros(n,t)}if(!this._fractionalLength)throw new Error("_fractionalLength is not calculated");let o="";if(this._minMove2){const e=r%this._minMove2;r=(r-e)/this._minMove2;const t=c(r,this._fractionalLength),i=this._getFractPart(e,2,this._minMove2);o=t+l.decimalSignFractional+i}else r=this._getFractPart(r,1,this._priceScale),o=c(r*this._minMove,this._fractionalLength);return s.toString()+l.decimalSignFractional+o+n}_removeEndingZeros(e,t){ +for(let i=0;i=s||r<0)return{error:this._formatterErrors.fraction,res:!1};let n=i+r/s;return e&&(n=-n),{value:n,res:!0,suggest:this.format(n)}}return{error:this._formatterErrors.custom,res:!1}}_parseAsDoubleFractional(e){let t=a.exec(e);if(t){const t=parseFloat(e);return{value:t,res:!0,suggest:this.format(t)}}if(t=new RegExp("^(-?)([0-9]+)\\"+l.decimalSignFractional+"([0-9]+)\\"+l.decimalSignFractional+"([0-9]+)$").exec(e),t){const e=!!t[1],i=parseInt(t[2]),s=void 0!==this._minMove2?this._minMove2:NaN,r=this._priceScale/s,n=this._minMove2,o=this._patchFractPart(parseInt(t[3]),1,r),a=this._patchFractPart(parseInt(t[4]),2,n);if(o>=r||o<0)return{error:this._formatterErrors.fraction,res:!1};if(void 0!==n&&a>=n||a<0)return{error:this._formatterErrors.secondFraction,res:!1};let l=void 0!==n?i+o/r+a/(r*n):NaN;return e&&(l=-l),{value:l,res:!0,suggest:this.format(l)}}return{error:this._formatterErrors.custom,res:!1}}}},64806:(e,t,i)=>{"use strict";i.d(t,{TimeFormatter:()=>n});var s=i(69147),r=i(97098);class n{constructor(e){this._formatStr=e||"%h:%m:%s"}format(e){return s.customFormatters.timeFormatter?s.customFormatters.timeFormatter.format(e):this._formatStr.replace("%h",(0,r.numberToStringWithLeadingZero)(e.getUTCHours(),2)).replace("%m",(0,r.numberToStringWithLeadingZero)(e.getUTCMinutes(),2)).replace("%s",(0,r.numberToStringWithLeadingZero)(e.getUTCSeconds(),2))}formatLocal(e){return s.customFormatters.timeFormatter?s.customFormatters.timeFormatter.formatLocal?s.customFormatters.timeFormatter.formatLocal(e):s.customFormatters.timeFormatter.format(e):this._formatStr.replace("%h",(0,r.numberToStringWithLeadingZero)(e.getHours(),2)).replace("%m",(0,r.numberToStringWithLeadingZero)(e.getMinutes(),2)).replace("%s",(0,r.numberToStringWithLeadingZero)(e.getSeconds(),2))}}},92242:(e,t,i)=>{"use strict";i.d(t,{TimeSpanFormatter:()=>r});var s=i(28353);class r{format(e){const t=e<0;e=Math.abs(e);const i=Math.floor(e/86400);e-=86400*i;const r=Math.floor(e/3600);e-=3600*r;const n=Math.floor(e/60);e-=60*n;let o="";return i&&(o+=i+(0,s.t)("d",{context:"dates"})+" "),r&&(o+=r+(0,s.t)("h",{context:"dates"})+" "),n&&(o+=n+(0,s.t)("m",{context:"dates"})+" "),e&&(o+=e+(0, +s.t)("s",{context:"dates"})+" "),t&&(o="-"+o),o.trim()}}},67802:(e,t,i)=>{"use strict";i.d(t,{VolumeFormatter:()=>a});var s=i(28353),r=i(95505),n=i(80643),o=i(93751);class a{constructor(e){this.type="volume",this._numericFormatter=new r.NumericFormatter,this._fractionalValues=void 0!==e&&e>0,this._precision=e}state(){return{precision:this._precision}}format(e,t){if(!(0,n.isNumber)(e))return"---";let i="";return e<0?(i="−",e=-e):e>0&&t&&(i="+"),e>=1e100?(0,s.t)("N/A"):(!this._fractionalValues||e>=995?e=Math.round(e):this._fractionalValues&&(e=+e.toFixed(this._precision)),e<995?i+this._formatNumber(e):e<999995?i+this._formatNumber(e/1e3)+"K":e<999999995?(e=1e3*Math.round(e/1e3),i+this._formatNumber(e/1e6)+"M"):e<999999999995?(e=1e6*Math.round(e/1e6),i+this._formatNumber(e/1e9)+"B"):(e=1e9*Math.round(e/1e9),i+this._formatNumber(e/1e12)+"T"))}parse(e){if("---"===e)return{error:"not a number",res:!1,value:NaN};const t={K:1e3,M:1e6,B:1e9},i=e.slice(-1);if(t.hasOwnProperty(i)){const s=this._numericFormatter.parse(e.slice(0,-1));return(0,n.isNumber)(s)?{res:!0,value:s*t[i]}:{error:"not a number",res:!1,value:NaN}}{const t=this._numericFormatter.parse(e);return(0,n.isNumber)(t)?{res:!0,value:t}:{error:"not a number",res:!1,value:NaN}}}static serialize(e){return e.state()}static deserialize(e){return new a(e.precision)}_formatNumber(e){return this._fractionalValues&&(e=(0,o.fixComputationError)(e)),this._numericFormatter.format(e).replace(/(\.[1-9]*)0+$/,(e,t)=>t)}}},88129:(e,t,i)=>{"use strict";i.d(t,{shouldBeFormattedAsPercent:()=>n,shouldBeFormattedAsIndexedTo100:()=>o,getPriceValueFormatterForSource:()=>a});var s=i(37667),r=i(79680);function n(e){const t=e.priceScale();return!(null===t||!t.isPercentage())&&(!(0,r.isActingAsSymbolSource)(e)||(0,s.isPriceSourceStyle)(e.style()))}function o(e){const t=e.priceScale();return!(null===t||!t.isIndexedTo100())&&(!(0,r.isActingAsSymbolSource)(e)||(0,s.isPriceSourceStyle)(e.style()))}function a(e){const t=e.priceScale();if(o(e)&&null!==t)return i=>{var s;return t.formatPriceIndexedTo100(i,null!==(s=e.firstValue())&&void 0!==s?s:100)};if(n(e)&&null!==t)return i=>{var s;return t.formatPricePercentage(i,null!==(s=e.firstValue())&&void 0!==s?s:100)};const i=e.formatter();return i.format.bind(i)}},84346:(e,t,i)=>{"use strict";function s(e,t,i){if(e.isTouch){if(void 0!==i)return i(e),!0}else if(void 0!==t)return t(e),!0;return!1}function r(e,t,i,s){return void 0!==t.executeDefaultAction&&(e.isTouch?Boolean(t.executeDefaultAction[s]):Boolean(t.executeDefaultAction[i]))}var n;i.d(t,{tryCallHandler:()=>s,shouldDefaultActionBeExecuted:()=>r,AreaName:()=>n,HitTestResult:()=>o}),function(e){e.Style="Style",e.Text="Text",e.SourceItemMove="SourceItemMove"}(n||(n={}));class o{constructor(e,t,i){this._result=e,this._data=t||null,this._eraseMarker=i}result(){return this._result}data(){return this._data}hasPressedMoveHandler(e){return null!==this._data&&function(e,t,i){if(e.isTouch){if(void 0!==i)return!0}else if(void 0!==t)return!0;return!1 +}(e,this._data.pressedMouseMoveHandler,this._data.touchMoveHandler)}tryCallMouseDownOrTouchStartHandler(e){return null!==this._data&&s(e,this._data.mouseDownHandler,this._data.touchStartHandler)}tryCallMouseUpOrTouchEndHandler(e){return null!==this._data&&s(e,this._data.mouseUpHandler,this._data.touchEndHandler)}tryCallMouseEnterHandler(e){return null!==this._data&&s(e,this._data.mouseEnterHandler)}tryCallMouseLeaveHandler(e){return null!==this._data&&s(e,this._data.mouseLeaveHandler)}tryCallMouseMoveHandler(e){return null!==this._data&&s(e,this._data.mouseMoveHandler)}tryCallClickOrTapHandler(e){return null!==this._data&&s(e,this._data.clickHandler,this._data.tapHandler)}tryCallDblClickOrDblTapHandler(e){return null!==this._data&&s(e,this._data.doubleClickHandler,this._data.doubleTapHandler)}tryCallContextMenuHandler(e){return null!==this._data&&s(e,this._data.contextMenuHandler,this._data.touchContextMenuHandler)}eraseMarker(){return this._eraseMarker}}o.MOVEPOINT_BACKGROUND=1,o.REGULAR=2,o.MOVEPOINT=3,o.CHANGEPOINT=4,o.CUSTOM=5},22221:(e,t,i)=>{"use strict";i.d(t,{HorizontalLinePaneView:()=>n});var s=i(40254),r=i(43891);class n{constructor(){this._lineRendererData={y:0,color:"rgba(0, 0, 0, 0)",linewidth:1,linestyle:r.LINESTYLE_SOLID,visible:!1},this._lineRenderer=new s.HorizontalLineRenderer,this._invalidated=!0,this._lineRenderer.setData(this._lineRendererData)}update(e){this._invalidated=!0}renderer(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._lineRenderer}}},27759:(e,t,i)=>{"use strict";var s,r;i.d(t,{PlDisplay:()=>s,TradingSourcesHorizontalAlignment:()=>r,tradingPreferencesDefault:()=>n,CustomSourceLayer:()=>o}),function(e){e[e.Money=0]="Money",e[e.Pips=1]="Pips",e[e.Percentage=2]="Percentage"}(s||(s={})),function(e){e[e.Left=0]="Left",e[e.Center=1]="Center",e[e.Right=2]="Right"}(r||(r={}));const n={showPositions:!1,positionPL:{visibility:!1,display:s.Money},bracketsPL:{visibility:!1,display:s.Money},showOrders:!1,showExecutions:!1,showExecutionsLabels:!1,showReverse:!1,extendLeft:!1,lineLength:0,horizontalAlignment:r.Right,lineWidth:0,lineStyle:0};var o;!function(e){e[e.Background=0]="Background",e[e.Foreground=1]="Foreground",e[e.Topmost=2]="Topmost"}(o||(o={}))},29823:(e,t,i)=>{"use strict";i.r(t),i.d(t,{ResolutionKind:()=>n,SpecialResolutionKind:()=>o,Interval:()=>h,isHour:()=>u});const s=/^(\d*)([TSHDWMR])$/,r=/^(\d+)$/;var n,o;!function(e){e.Ticks="ticks",e.Seconds="seconds",e.Minutes="minutes",e.Days="days",e.Weeks="weeks",e.Months="months",e.Range="range",e.Invalid="invalid"}(n||(n={})),function(e){e.Hours="hours"}(o||(o={}));const a={};a[n.Ticks]=1e3,a[n.Seconds]=1e3,a[n.Minutes]=60*a[n.Seconds],a[n.Days]=1440*a[n.Minutes],a[n.Weeks]=7*a[n.Days];const l={T:n.Ticks,S:n.Seconds,D:n.Days,W:n.Weeks,M:n.Months,R:n.Range},c=new Set([n.Ticks,n.Seconds,n.Minutes]);class h{constructor(e,t){this._kind=n.Invalid,this._multiplier=0,e!==n.Invalid&&t>0&&(this._kind=e,this._multiplier=t)}kind(){return this._kind}multiplier(){return this._multiplier}isValid(){ +return this.kind()!==n.Invalid&&this.multiplier()>0}isDWM(){return this.isValid()&&!this.isRange()&&!this.isIntraday()&&!this.isTicks()}isIntraday(){const e=c.has(this.kind());return this.isValid()&&e}isSeconds(){return this.kind()===n.Seconds}isMinutes(){return this.kind()===n.Minutes}isMinuteHours(){return this.kind()===n.Minutes&&u(this.multiplier())}isDays(){return this.kind()===n.Days}isWeeks(){return this.kind()===n.Weeks}isMonths(){return this.kind()===n.Months}isRange(){return this.kind()===n.Range}isTicks(){return this.kind()===n.Ticks}isTimeBased(){return!this.isRange()}letter(){return this.isValid()&&this.kind()!==n.Minutes?this.kind()[0].toUpperCase():""}value(){return this.isValid()?this.kind()===n.Minutes?this.multiplier()+"":this.multiplier()+this.letter():""}isEqualTo(e){if(!(e instanceof h))throw new Error("Argument is not an Interval");return!(!this.isValid()||!e.isValid())&&(this.kind()===e.kind()&&this.multiplier()===e.multiplier())}inMilliseconds(e=Date.now()){if(!this.isValid()||this.isRange())return NaN;if(this.isMonths()){const t=new Date(e);t.setUTCMonth(t.getUTCMonth()+(this.multiplier()||1));return+t-e}const t=this.multiplier();return a[this.kind()]*t}static isEqual(e,t){return e===t||h.parse(e).isEqualTo(h.parse(t))}static parseExt(e){e=(e+"").toUpperCase().split(",")[0];let t=s.exec(e);return null!==t?"H"===t[2]?{interval:new h(n.Minutes,60*d(t[1])),guiResolutionKind:o.Hours}:{interval:new h(l[t[2]],d(t[1])),guiResolutionKind:l[t[2]]}:(t=r.exec(e),null!==t?{interval:new h(n.Minutes,d(t[1])),guiResolutionKind:n.Minutes}:{interval:new h(n.Invalid,0),guiResolutionKind:n.Invalid})}static parse(e){return h.parseExt(e).interval}static kind(e){return h.parse(e).kind()}static isValid(e){return h.parse(e).isValid()}static isDWM(e){return h.parse(e).isDWM()}static isIntraday(e){return h.parse(e).isIntraday()}static isSeconds(e){return h.parse(e).isSeconds()}static isMinutes(e){return h.parse(e).isMinutes()}static isMinuteHours(e){return h.parse(e).isMinuteHours()}static isDays(e){return h.parse(e).isDays()}static isWeeks(e){return h.parse(e).isWeeks()}static isMonths(e){return h.parse(e).isMonths()}static isRange(e){return h.parse(e).isRange()}static isTicks(e){return h.parse(e).isTicks()}static isTimeBased(e){return h.parse(e).isTimeBased()}static normalize(e){const t=h.parse(e);return t.isValid()?t.value():null}}function d(e){return 0===e.length?1:parseInt(e,10)}function u(e){return e>=60&&!(e%60)}},52418:(e,t,i)=>{"use strict";i.d(t,{intervalsVisibilitiesDefaults:()=>s});const s={ticks:!0,seconds:!0,secondsFrom:1,secondsTo:59,minutes:!0,minutesFrom:1,minutesTo:59,hours:!0,hoursFrom:1,hoursTo:24,days:!0,daysFrom:1,daysTo:366,weeks:!0,weeksFrom:1,weeksTo:52,months:!0,monthsFrom:1,monthsTo:12,ranges:!0}},20838:(e,t,i)=>{"use strict";i.d(t,{IntervalsVisibilitiesProperty:()=>n});var s=i(2015),r=i.n(s);i(36759);class n extends(r()){state(e){return super.state(e)}storeStateIfUndefined(){return!1}}},36759:(e,t,i)=>{"use strict";i.d(t,{makeIntervalsVisibilitiesVisibleAtInterval:()=>a, +isActualInterval:()=>c,nonDefaultIntervalsVisibilities:()=>h,mergeIntervalVisibilitiesDefaults:()=>d});var s=i(88537),r=i(29823),n=i(52418),o=i(80643);function a(e,t){let i=t.multiplier();if(t.isTicks()&&(e.ticks=!0),t.isSeconds()&&(i<60?(e.seconds=!0,e.secondsFrom=Math.min(e.secondsFrom,i),e.secondsTo=Math.max(e.secondsTo,i)):(i/=60,t=new r.Interval(r.ResolutionKind.Minutes,i))),t.isMinutes())if(i<60)e.minutes=!0,e.minutesFrom=Math.min(e.minutesFrom,i),e.minutesTo=Math.max(e.minutesTo,i);else{const t=Math.floor(i/60);e.hours=!0,e.hoursFrom=Math.min(e.hoursFrom,t),e.hoursTo=Math.max(e.hoursTo,t)}t.isDays()&&(e.days=!0,e.daysFrom=Math.min(e.daysFrom,i),e.daysTo=Math.max(e.daysTo,i)),t.isWeeks()&&(e.weeks=!0,e.weeksFrom=Math.min(e.weeksFrom,i),e.weeksTo=Math.max(e.weeksTo,i)),t.isMonths()&&(e.months=!0,e.monthsFrom=Math.min(e.monthsFrom,i),e.monthsTo=Math.max(e.monthsTo,i)),t.isRange()&&(e.ranges=!0)}function l(e,t,i,s){return e&&s>=t&&s<=i}function c(e,t){const i=t.childs();switch(e.kind()){case r.ResolutionKind.Ticks:return i.ticks.value();case r.ResolutionKind.Seconds:if(e.multiplier()<60)return l(i.seconds.value(),i.secondsFrom.value(),i.secondsTo.value(),e.multiplier());{const t=Math.floor(e.multiplier()/60);return l(i.minutes.value(),i.minutesFrom.value(),i.minutesTo.value(),t)}case r.ResolutionKind.Minutes:if(e.multiplier()<60)return l(i.minutes.value(),i.minutesFrom.value(),i.minutesTo.value(),e.multiplier());{const t=Math.floor(e.multiplier()/60);return l(i.hours.value(),i.hoursFrom.value(),i.hoursTo.value(),t)}case r.ResolutionKind.Days:return l(i.days.value(),i.daysFrom.value(),i.daysTo.value(),e.multiplier());case r.ResolutionKind.Weeks:return l(i.weeks.value(),i.weeksFrom.value(),i.weeksTo.value(),e.multiplier());case r.ResolutionKind.Months:return l(i.months.value(),i.monthsFrom.value(),i.monthsTo.value(),e.multiplier());case r.ResolutionKind.Range:return i.ranges.value()}return(0,s.assert)(!1,"Unsupported resolution: "+e.value()),!1}function h(e){const t=Object.keys(e).filter(t=>n.intervalsVisibilitiesDefaults[t]!==e[t]);return 0===t.length?null:t.reduce((t,i)=>(t[i]=e[i],t),{})}function d(e){return(0,o.merge)((0,o.clone)(n.intervalsVisibilitiesDefaults),null!=e?e:{})}},35878:(e,t,i)=>{"use strict";function s(e){return Boolean(e.showInObjectTree)}i.d(t,{isDataSource:()=>s})},95836:(e,t,i)=>{"use strict";var s;i.d(t,{SymbolErrorPermissionDeniedReason:()=>s,permissionDenied:()=>r,invalidSymbol:()=>n}),function(e){e.Symbol="symbol",e.GroupPermission="group"}(s||(s={}));const r="permission denied",n="invalid symbol"},79680:(e,t,i)=>{"use strict";function s(e){const t=(null==e?void 0:e.symbolSource)&&e.symbolSource()===e,i=void 0!==(null==e?void 0:e.isActingAsSymbolSource);return t||i}function r(e){return s(e)&&e.isActingAsSymbolSource().value()}i.d(t,{isSymbolSource:()=>s,isActingAsSymbolSource:()=>r})},34580:(e,t,i)=>{"use strict";i.d(t,{LevelsProperty:()=>p});var s=i(80643),r=i(88564),n=i(59803);const o={prefixes:[""],range:[0,0],names:["coeff","color","visible","linestyle","linewidth"],typecheck:{ +pack:()=>Object(),unpack:()=>[]}};function a(e,t,i,s){return s.push(i[t]),s}function l(e,t,i,s){return s[t]=i[e],s}function c(){return[]}function h(){return{}}function d(e,t,i){return i.prefixes.forEach(r=>{const n=r+"level";for(let r=i.range[0];r<=i.range[1];r++)if(e[n+r]&&(0,s.isSameType)(e[n+r],t.typecheck())){let s=t.tpl();i.names.forEach((i,o)=>{s=t.fill(""+o,i,e[n+r],s)}),e[n+r]=s}}),e}function u(e,t,i){return i(e,{tpl:h,fill:l,typecheck:t.typecheck.unpack},t)}class p extends r.DefaultProperty{constructor(e,t,i,s,r){r=null!=r?r:d;const n={...o,...null!=s?s:{}};super(e,t?u(t,n,r):t,i),this._map=n,this._levelsIterator=r}state(e,t){const i=super.state(e);return t?i:(s=i,r=this._map,(0,this._levelsIterator)(s,{tpl:c,fill:a,typecheck:r.typecheck.pack},r));var s,r}saveDefaults(){this._useUserPreferences&&(0,n.saveDefaults)(this._defaultName,this.state(this._exclusions,!0))}clone(){const e=this.state(),t=new p(this._defaultName,e);for(let e=0;e{"use strict";i.d(t,{LineToolsGroup:()=>l});var s=i(2872),r=i.n(s),n=i(9423);function o(e){return e.properties().visible.value()}function a(e){return!o(e)}class l{constructor(e,t,i){this._instanceId=(0,n.randomHashN)(6),this._onChanged=new(r()),this._lineToolsSet=new Set,this._lineTools=[...e],this._lineToolsSet=new Set(this._lineTools),this._name=t,this.id=i||(0,n.randomHashN)(6)}instanceId(){return this._instanceId}lineTools(){return this._lineTools}name(){return this._name}setName(e){this._doAndFireOnChange(()=>{this._name=e})}isActualSymbol(){return this._lineTools.length>0&&this._lineTools[0].isActualSymbol()&&this._lineTools[0].isActualCurrency()&&this._lineTools[0].isActualUnit()}symbol(){return this._lineTools[0].symbol()}currencyId(){var e;return null!==(e=this._lineTools[0].properties().childs().currencyId.value())&&void 0!==e?e:null}unitId(){var e;return null!==(e=this._lineTools[0].properties().childs().unitId.value())&&void 0!==e?e:null}sharingMode(){return this._lineTools[0].sharingMode()}share(e){this._lineTools.forEach(t=>t.share(e))}containsLineTool(e){return this._lineToolsSet.has(e)}addLineTools(e){this._doAndFireOnChange(t=>{e.forEach(e=>this._lineToolsSet.add(e)),this._lineTools.push(...e),t.push(...e.map(e=>e.id()))})}excludeLineTool(e){this._doAndFireOnChange(t=>{this._lineToolsSet.delete(e);const i=this._lineTools.indexOf(e);this._lineTools.splice(i,1),t.push(e.id())})}excludeLineTools(e){this._doAndFireOnChange(t=>{const i=new Set(e);e.forEach(e=>this._lineToolsSet.delete(e)),this._lineTools=this._lineTools.filter(e=>!i.has(e)),t.push(...e.map(e=>e.id()))})}state(){return{id:this.id,name:this._name,tools:this._lineTools.map(e=>e.id())}}visibility(){const e=this._lineTools.some(o),t=this._lineTools.some(a);return e&&!t?"Visible":t&&!e?"Invisible":"Partial"}locked(){const e=this._lineTools.some(e=>e.properties().frozen.value()),t=this._lineTools.some(e=>!e.properties().frozen.value()) +;return e&&!t?"Locked":t&&!e?"Unlocked":"Partial"}isActualInterval(){const e=this._lineTools.some(e=>e.isActualInterval()),t=this._lineTools.some(e=>!e.isActualInterval());return e&&!t?"IsActualInterval":t&&!e?"IsNotActualInterval":"Partial"}onChanged(){return this._onChanged}static fromState(e,t){const i=[];for(const s of t.tools){const t=e.dataSourceForId(s);null!==t&&i.push(t)}return i.length>0?new l(i,t.name,t.id):null}_doAndFireOnChange(e){const t=[],i=this.visibility(),s=this.locked(),r=this.name(),n=this.isActualInterval();e(t),this._onChanged.fire({affectedLineTools:t,visibilityChanged:i!==this.visibility(),lockedChanged:s!==this.locked(),titleChanged:r!==this.name(),isActualIntervalChanged:n!==this.isActualInterval()})}}},656:(e,t,i)=>{"use strict";i.d(t,{LineTool5PointsPattern:()=>a});var s=i(88537),r=i(88564),n=i(89857),o=i(37865);class a extends n.LineDataSource{constructor(e,t,i,s){super(e,t||a.createProperties(),i,s),this._loadPaneViews(e)}pointsCount(){return 5}name(){return"XABCD Pattern"}static createProperties(e){const t=new r.DefaultProperty("linetool5pointspattern",e);return a._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,93262)).then(e=>e.PatternWithBackgroundDefinitionViewModel)}_loadPaneViews(e){i.e(1583).then(i.bind(i,46010)).then(t=>{this._setPaneViews([new t.Pattern5pointsPaneView(this,e)])})}static _configureProperties(e){n.LineDataSource._configureProperties(e),e.addChild("linesColors",new o.LineToolColorsProperty([(0,s.ensureDefined)(e.child("color"))])),e.addChild("textsColors",new o.LineToolColorsProperty([(0,s.ensureDefined)(e.child("textcolor"))]))}}},82203:(e,t,i)=>{"use strict";i.d(t,{LineToolABCD:()=>a});var s=i(88537),r=i(88564),n=i(89857),o=i(37865);class a extends n.LineDataSource{constructor(e,t,s,r){const n=t||a.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,5040)).then(t=>{this._setPaneViews([new t.ABCDPaneView(this,e)])})}pointsCount(){return 4}name(){return"ABCD Pattern"}static createProperties(e){const t=new r.DefaultProperty("linetoolabcd",e);return a._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,98890)).then(e=>e.PatternWithoutBackgroundDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e),e.addChild("linesColors",new o.LineToolColorsProperty([(0,s.ensureDefined)(e.child("color"))])),e.addChild("textsColors",new o.LineToolColorsProperty([(0,s.ensureDefined)(e.child("textcolor"))]))}}},17337:(e,t,i)=>{"use strict";i.d(t,{LineToolArc:()=>h});var s=i(88537),r=i(4652),n=i(86441),o=i(25422),a=i(88564),l=i(89857),c=i(37865);class h extends l.LineDataSource{constructor(e,t,s,r){const n=t||h.createProperties();super(e,n,s,r),this.version=2,this._dist=null,i.e(1583).then(i.bind(i,24843)).then(({ArcPaneView:t})=>{const i=[new t(this,e)];this._setPaneViews(i)})}startChanging(e,t){if(super.startChanging(e,t),0===e||1===e){const e=(0, +s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1])),i=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[2]));this._dist=(0,r.distanceToLine)(e,t,i).distance;const o=t.subtract(e),a=new n.Point(-o.y,o.x),l=e.add(t).scaled(.5);i.subtract(l).dotProduct(a)<0&&(this._dist=-this._dist)}}endChanging(e,t){return this._dist=null,super.endChanging(e,t)}pointsCount(){return 3}name(){return"Arc"}hasEditableCoordinates(){return!1}setPoint(e,t){const i={...t},a=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),l=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1]));switch(e){case 0:{const e=(0,s.ensureNotNull)(this._dist),t=(0,s.ensureNotNull)(this.pointToScreenPoint(i)),r=l.subtract(t),o=t.add(l).scaled(.5);let a=new n.Point(-r.y,r.x);a=a.normalized();const c=o.add(a.scaled(e));this._points[0]=i,this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(c));break}case 1:{const e=(0,s.ensureNotNull)(this._dist),t=(0,s.ensureNotNull)(this.pointToScreenPoint(i)),r=t.subtract(a),o=a.add(t).scaled(.5),l=new n.Point(-r.y,r.x).normalized(),c=o.add(l.scaled(e));this._points[1]=i,this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(c));break}case 2:{let e=(0,s.ensureNotNull)(this.pointToScreenPoint(i));const t=(0,r.distanceToLine)(a,l,e).distance,c=l.subtract(a),h=a.add(l).scaled(.5),d=new n.Point(-c.y,c.x).normalized(),u=h.add(d.scaled(t)),p=h.add(d.scaled(-t)),_=c.length(),m=c.x/_,g=c.y/_;let f=Math.acos(m);g<0&&(f=-f);let v=(0,o.translationMatrix)(-h.x,-h.y);e=(0,o.transformPoint)(v,e);let S=(0,o.transformPoint)(v,u);v=(0,o.rotationMatrix)(-f),e=(0,o.transformPoint)(v,e),S=(0,o.transformPoint)(v,S),v=(0,o.scalingMatrix)(1,_/(2*t)),e=(0,o.transformPoint)(v,e),S=(0,o.transformPoint)(v,S);const y=e.y*S.y>=0?new n.Point(u.x,u.y):new n.Point(p.x,p.y);this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(y));break}}this.normalizePoints()}migrateVersion(e,t,i){if(1===e&&2===this._points.length){const e=(2*this._points[0].price+3*this._points[1].price)/5;this._points.push({price:e,index:this._points[1].index})}if(1===e&&2===this._timePoint.length){const e={price:(2*this._timePoint[0].price+3*this._timePoint[1].price)/5,offset:this._timePoint[1].offset,time_t:this._timePoint[1].time_t};this._timePoint.push(e)}}static createProperties(e){const t=new a.DefaultProperty("linetoolarc",e);return h._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,24965))).GeneralFiguresDefinitionsViewModelBase}static _configureProperties(e){l.LineDataSource._configureProperties(e),e.addChild("linesColors",new c.LineToolColorsProperty([e.childs().color]))}}},18659:(e,t,i)=>{"use strict";i.d(t,{LineToolArrowMark:()=>l,LineToolArrowMarkLeft:()=>c,LineToolArrowMarkUp:()=>h,LineToolArrowMarkRight:()=>d,LineToolArrowMarkDown:()=>u});var s=i(88564),r=i(89857),n=i(2015),o=i.n(n),a=i(37865);class l extends r.LineDataSource{constructor(e,t,s,r,n){ +const o=t||l.createProperties(null,s);super(e,o,r,n),this._textPaneView=null,i.e(1583).then(i.bind(i,71407)).then(({ArrowMarkPaneView:t})=>{const i=[new t(this,e)];this._setPaneViews(i)})}paneViews(e){const t=super.paneViews();return null!==t&&this._textPaneView&&t.push(this._textPaneView),t}pointsCount(){return 1}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}static createProperties(e,t){const i=new s.DefaultProperty(t,e);return l._configureProperties(i),i}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,72930)).then(e=>e.ArrowMarkDefinitionsViewModel)}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}static _configureProperties(e){r.LineDataSource._configureProperties(e),e.addChild("linesColors",new a.LineToolColorsProperty([e.childs().arrowColor])),e.addChild("textsColors",new a.LineToolColorsProperty([e.childs().color])),e.hasChild("text")||e.addChild("text",new(o())("")),e.addExclusion("text")}}l.version=2;class c extends l{constructor(e,t,i,s){super(e,t,"linetoolarrowmarkleft",i,s)}direction(){return"left"}name(){return"Arrow Mark Left"}textAlignParams(){return{horzAlign:"left",vertAlign:"middle",offsetX:22,offsetY:3}}static createProperties(e){return l.createProperties(e,"linetoolarrowmarkleft")}}class h extends l{constructor(e,t,i,s){super(e,t,"linetoolarrowmarkup",i,s)}direction(){return"up"}name(){return"Arrow Mark Up"}textAlignParams(){return{horzAlign:"center",vertAlign:"top",offsetX:0,offsetY:20}}static createProperties(e){return l.createProperties(e,"linetoolarrowmarkup")}}class d extends l{constructor(e,t,i,s){super(e,t,"linetoolarrowmarkright",i,s)}direction(){return"right"}name(){return"Arrow Mark Right"}textAlignParams(){return{horzAlign:"right",vertAlign:"middle",offsetX:22,offsetY:3,forceTextAlign:!0}}static createProperties(e){return l.createProperties(e,"linetoolarrowmarkright")}}class u extends l{constructor(e,t,i,s){super(e,t,"linetoolarrowmarkdown",i,s)}direction(){return"down"}name(){return"Arrow Mark Down"}textAlignParams(){return{horzAlign:"center",vertAlign:"bottom",offsetX:0,offsetY:20}}static createProperties(e){return l.createProperties(e,"linetoolarrowmarkdown")}}},10167:(e,t,i)=>{"use strict";i.d(t,{LineToolArrowMarker:()=>a});var s=i(89857),r=i(88564),n=i(2015),o=i.n(n);class a extends s.LineDataSource{constructor(e,t,s,r){super(e,null!=t?t:a.createProperties(),s,r),i.e(1583).then(i.bind(i,39833)).then(({ArrowMarkerPaneView:e})=>{this._setPaneViews([new e(this,this.model())])})}pointsCount(){return 2}name(){return"Trend Line"}static createProperties(e){const t=new r.DefaultProperty("linetoolarrowmarker",e);return a._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,92138)).then(e=>e.ArrowMarkerDefinitionsViewModel)}static _configureProperties(e){s.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(o())("")), +e.addExclusion("text")}}},59358:(e,t,i)=>{"use strict";var s=i(57649).LineToolTrendLine,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Arrow"}static createProperties(e){var t=new r("linetoolarrow",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolArrow=n},57666:(e,t,i)=>{"use strict";i.d(t,{LineToolBalloon:()=>h});var s=i(28353),r=i(88564),n=i(89857),o=i(2015),a=i.n(o),l=i(37865);const c=(0,s.t)("Comment");class h extends n.LineDataSource{constructor(e,t,s,r){const n=t||h.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,17952)).then(t=>{this._setPaneViews([new t.BalloonPaneView(this,e)])})}pointsCount(){return 1}name(){return"Balloon"}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}static createProperties(e){const t=new r.DefaultProperty("linetoolballoon",e);return h._configureProperties(t),t}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,60991)).then(e=>e.BalloonDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(a())(c)),e.addExclusion("text"),e.addChild("linesColors",new l.LineToolColorsProperty([e.childs().borderColor])),e.addChild("textsColors",new l.LineToolColorsProperty([e.childs().color]))}}},4676:(e,t,i)=>{"use strict";i.d(t,{BarsMarksContainer:()=>T});var s=i(88537),r=i(98125),n=i(56840),o=i.n(n),a=i(67337),l=i(89857),c=i(2872),h=i.n(c),d=i(29823),u=i(80643),p=i(37667);class _{constructor(e,t){this.source=e,this._rendererFactory=t}update(){}renderer(e,t){return this._rendererFactory(this.source)}}var m=i(16282),g=i(22799),f=i(86441),v=i(84346),S=i(34026);const y={green:{border:"#78C143",background:"#8DDD54"},red:{border:"#CC4545",background:"#ED5A5A"},neutral:{border:"#EAC300",background:"#FFD400"},yellow:{border:"#EAC300",background:"#FFD400"},blue:{border:"#047ACE",background:"#0496FF"}};class b extends m.ScaledPaneRenderer{constructor(e,t){super(),this._highlightByAuthor=!1,this._barWidth=e.barWidth,this._plates=e.plates,this._tooltip=e.tooltip,this._model=t}hitTest(e){for(let t=this._plates.length-1;t>=0;--t){const i=this._hitTestDot(this._plates[t],e);if(i)return i}return null}_drawImpl(e){var t,i;e.save();for(let e=0;ethis._plateTransform(e));null===(t=this._tooltip)||void 0===t||t.draw(s,e),null===(i=this._tooltip)||void 0===i||i.endDraw(),e.restore()}_drawItem(e,t){e.save(),this._highlightByAuthor&&!t.highlightByAuthor&&(e.globalAlpha=.4);const i=this._dotTransform(t);i.mine?this._drawTriangle(e,i):this._drawDot(e,i),e.restore()}_commonTransform(e){const t=Math.max(1.4*e.minSize,this._barWidth+4),i={up:-1,down:1 +}[e.direction]*(e.yInverted?-1:1)*(t*(e.order+.6)+.25*t),s=e.y+i,r=(0,u.clone)(e.overridedTheme||y[e.theme]);return r.dotBorderWidth=e.hovered||e.highlightByAuthor?4:2,{id:e.id,theme:r,themeName:e.theme,x:Math.round(e.x+1),y:Math.round(s),yInverted:e.yInverted,pinned:Boolean(e.pinned),hovered:Boolean(e.hovered)}}_dotTransform(e){const t=Math.max(e.minSize/2,.4*this._barWidth),i={...this._commonTransform(e),radius:t,label:e.label,labelFontColor:e.labelFontColor,labelFontSize:Math.ceil(Math.max(10,Math.min(t,20)))};return this._model.updateDotData(e,i)}_plateTransform(e){const t=this._commonTransform(e);return this._model.updatePlateData(e,t)}_drawTriangle(e,t){e.strokeStyle=t.theme.border,e.fillStyle=t.theme.background,e.lineWidth=t.theme.dotBorderWidth||2;const i=t,s=t.radius,r=Math.cos(Math.PI/6)*s,n=Math.sin(Math.PI/6)*s;e.translate(i.x,i.y);"up"===t.direction!==t.yInverted&&e.rotate(Math.PI),t.public||(e.lineWidth/=2),e.beginPath(),e.moveTo(0,-s),e.lineTo(r,n),e.lineTo(-r,n),e.lineTo(0,-s),e.closePath(),e.stroke(),t.public&&e.fill()}_drawDot(e,t){e.strokeStyle=t.theme.border,e.fillStyle=t.theme.background,e.lineWidth=t.theme.dotBorderWidth||2,e.beginPath(),e.arc(t.x,t.y,t.radius,0,2*Math.PI,!0),e.closePath(),e.stroke(),e.fill(),t.label&&t.radius>=7&&(e.textAlign="center",e.textBaseline="middle",e.font="bold "+t.labelFontSize+"px "+g.CHART_FONT_FAMILY,e.fillStyle=t.labelFontColor,e.fillText(t.label,t.x,t.y))}_hitTestDot(e,t){const i=this._dotTransform(e),s=new f.Point(i.x,i.y);return(0,S.pointInCircle)(t,s,Math.max(i.radius,8))?new v.HitTestResult(v.HitTestResult.REGULAR,{activeItem:e}):null}}var w=i(88564);const C=(0,r.getLogger)("Chart.BarsMarksContainer"),P=Math.round(new Date(2037,0,1).getTime()/1e3);class T extends l.LineDataSource{constructor(e,t,i,r){const n=e.onWidget();let c;if(c=n?!e.hideIdeas():!!a.enabled("bars_marks")&&o().getBool("BarsMarksContainer.visibile",!1),t)t.merge({visible:c,frozen:!1});else{t=new w.DefaultProperty("barmarks",{visible:c,frozen:!1})}t.childs().visible.listeners().subscribe(null,t=>{n||e.isSnapshot()||!a.enabled("bars_marks")||o().setValue("BarsMarksContainer.visibile",!!t.value()),this._tooltip&&this._tooltip.removeAll()}),l.LineDataSource._configureProperties(t),super(e,t,i,r),this.onNeedRepaint=new(h()),this._requests=[],this._marks={},this._loadedRange=null,this._getDataTimeout=null,this._collectedRange=null,this._lastRange=null,this._model.mainSeries().onSymbolIntervalChanged().subscribe(this,this.clearMarks),this._model.mainSeries().dataEvents().symbolResolved().subscribe(this,this.clearMarks),this._model.mainSeries().dataEvents().completed().subscribe(this,()=>{var e,t;const i=this._model.mainSeries().data();if(0===i.size())return;const r=(0,s.ensureNotNull)(i.first()).index,n=(0,s.ensureNotNull)(i.last()).index,o=this.timeScale();this.getData({start:null!==(e=o.indexToTimePoint(r))&&void 0!==e?e:1/0,end:null!==(t=o.indexToTimePoint(n))&&void 0!==t?t:-1/0})}),this._initialize(),this._pinnedTooltips={},this._tooltip=this._createTooltipRenderer()}marks(){return this._marks +}updateDotData(e,t){return t}isAvailableInFloatingWidget(){return!1}pinTooltip(e,t){this._pinnedTooltips[e]=t}timeScale(){return this._model.timeScale()}getIntervalInTicks(){const e=this._model.mainSeries().properties().childs().interval.value(),t=d.Interval.parse(e);if(!t.isValid())throw new TypeError("Unexpected interval");return t.isRange()?60:t.inMilliseconds()/1e3}getVisibleTickMarksRange(){var e,t;if(this.timeScale().isEmpty())return{start:0,end:0};const i=(0,s.ensureNotNull)(this.timeScale().visibleBarsStrictRange()),r=(0,s.ensureNotNull)(this.timeScale().points().firstIndex()),n=(0,s.ensureNotNull)(this.timeScale().points().lastIndex());if(!(i.lastBar()>r&&i.firstBar(){var r,n;const o=this._marks[s],a=o.tickmark;a>=(null!==(r=t.start)&&void 0!==r?r:1/0)&&a<=(null!==(n=t.end)&&void 0!==n?n:-1/0)+i&&e.push(o)}),e}getPublishedPlates(){const e={};return window.is_authenticated?(this.getVisibleRangePlates().forEach(t=>{t.is_public&&(this._pinnedTooltips[t.id]||t.user__id===window.user.id)&&(e[t.id]=t)}),e):e}filterDisplayedPlates(e){const t=e.reduce((e,t)=>{const i=this._getIndex(t.tickmark);return null!==i&&(e[i]=e[i]||[],e[i].push(t)),e},{});return Object.keys(t).reduce((e,i)=>{let s=t[i];return s=s.sort((e,t)=>t.views_count-e.views_count),s=s.slice(0,10),e.concat(s)},[])}getViewData(){return{barWidth:this.barWidth(),plates:this.getPlatesViewData(),tooltip:this._tooltip}}barWidth(){return this.timeScale().barSpacing()}getPlatesViewData(){var e,t,i;const r=this._model.mainSeries();if(r.data().isEmpty())return[];const n=(0,p.isPriceSourceStyle)(r.style())?r.barFunction():null,o=this.filterDisplayedPlates(this.getVisibleRangePlates()),a={},l=null!==(e=this._model.lastHittestData())&&void 0!==e?e:this._model.lastSelectedHittestData(),c=[];for(const e of o){const i=(0,s.ensureNotNull)(this._getIndex(e.tickmark)),r=this._getBar(i);if(null===r)continue;const o=this._layout(e.direction),h=this._theme(e.direction);let d=null;null!==l&&this._model.hoveredSource()===this&&(d=null!==(t=l.activeItem)&&void 0!==t?t:null);const p=null!==d&&d.id===e.id,_=this.timeScale().indexToCoordinate(i),m=this._offset(o,r,n),g=(0,s.ensureNotNull)(this.priceScale()).isInverted();let f=0;i in a||(a[i]={up:0,down:0}),f=a[i][o]++,c.push((0,u.merge)({id:e.id,x:_,y:m,yInverted:g,order:f,direction:o,theme:h,hovered:p,pinned:!0===this._pinnedTooltips[e.id],user__id:e.user__id,label:e.label,labelFontColor:e.labelFontColor||"#444",minSize:e.minSize||5},this._plateViewData(e)))}const h=c.filter(e=>!0===e.hovered);for(let e=0;ee.hovered&&!t.hovered?1:0),c}paneViews(){return this._properties.childs().visible.value()?[new _(this,e=>new b(e.getViewData(),this))]:[]}priceAxisViews(){return null}updateAllViews(){}pointsCount(){return 0}roundRange(e){return{start:Math.round(e.start),end:Math.round(e.end)}}refreshData(){null!==this._lastRange&&this.getData(this._lastRange)}getData(e){(0,u.isNumber)(e.start)&&(0,u.isNumber)(e.end)?(this._lastRange=e,e.end=P,this._pushGetDataStack(Object.assign({},e))):C.logError("Wrong range")}clearMarks(){this._abortAllRequests(),this._marks={},this._loadedRange=null}isUserDeletable(){return!1}_plateViewData(e){return{}}_layout(e){switch(e){default:case 0:return"up";case 1:return"down";case 2:return"up";case 3:case 4:case 5:case 6:return"up"}}_theme(e){switch(e){default:case 0:return"neutral";case 1:return"green";case 2:return"red";case 3:return"yellow";case 4:return"blue";case 5:return"green";case 6:return"red"}}_offset(e,t,i){let r;switch(e){default:case"up":r=null===i?t[2]:i(t);break;case"down":r=null===i?t[3]:i(t)}return(0,s.ensureNotNull)(this.priceScale()).priceToCoordinate(r,(0,s.ensureNotNull)((0,s.ensureNotNull)(this.ownerSource()).firstValue()))}_getIndex(e){return this.timeScale().timePointToIndex(e)}_getBar(e){return this._model.mainSeries().data().valueAt(e)}_rangeDifference(e){return e=Object.assign({start:1/0,end:-1/0},e),this._loadedRange&&(e.startthis._loadedRange.end&&(e.start=this._loadedRange.end)),e}_rangeUnion(e,t){return e=Object.assign({start:1/0,end:-1/0},e),t&&(e.start=Math.min(t.start,e.start),e.end=Math.max(t.end,e.end)),e}_pushGetDataStack(e){(0,u.isNumber)(e.start)&&(0,u.isNumber)(e.end)?(this._getDataTimeout&&clearTimeout(this._getDataTimeout),this._collectedRange=this._rangeUnion(e,this._collectedRange),this._getDataTimeout=setTimeout(()=>{this._getData(this._collectedRange),this._getDataTimeout=this._collectedRange=null},300)):C.logError("Wrong tickmark range")}_abortAllRequests(){this._requests.forEach(e=>{e.cancel()}),this._requests=[],this._getDataTimeout&&clearTimeout(this._getDataTimeout),this._getDataTimeout=this._collectedRange=null}}},8059:(e,t,i)=>{"use strict";var s;i.d(t,{LineToolBarsPatternMode:()=>s}),function(e){e[e.Bars=0]="Bars",e[e.Line=1]="Line",e[e.OpenClose=2]="OpenClose",e[e.LineOpen=3]="LineOpen",e[e.LineHigh=4]="LineHigh",e[e.LineLow=5]="LineLow",e[e.LineHL2=6]="LineHL2"}(s||(s={}))},98802:(e,t,i)=>{"use strict";i.d(t,{LineToolBarsPattern:()=>S});var s=i(88537),r=i(28353),n=i(24980),o=i(80643),a=i(28296),l=i(88564),c=i(71053),h=i(89857),d=i(8059),u=i(33291);const p=new n.TranslatedString("mirror bars pattern",(0,r.t)("mirror bars pattern")),_=new n.TranslatedString("flip bars pattern",(0,r.t)("flip bars pattern")),m=(0,r.t)("Mirrored"),g=(0,r.t)("Flipped"),f={0:2,1:4,2:1,3:1,4:2,5:3,6:-1},v={0:3,1:4,2:4,3:1,4:2,5:3,6:-1};class S extends h.LineDataSource{constructor(e,t=S.createProperties(),s,r){super(e,t,s,r),this._pattern=[],this._scale=1,this._pointsCoordinatePricesDiff=null +;const n=t.childs().mode.value();(0,o.isString)(n)&&t.childs().mode.setValue(parseInt(n)),t.childs().mirrored.listeners().subscribe(this,this._mirror),t.childs().flipped.listeners().subscribe(this,this._flip),t.childs().mode.subscribe(this,this._updateLastPoint),this.version=2,i.e(1583).then(i.bind(i,27106)).then(t=>{this._setPaneViews([new t.BarsPatternPaneView(this,e)])})}pattern(){return this._pattern}isSynchronizable(){return!1}additionalActions(e){return[new a.Action({actionId:"Chart.LineTool.BarsPattern.ToggleMirrored",checked:this.properties().childs().mirrored.value(),checkable:!0,label:m,onExecute:()=>{e.setProperty(this.properties().childs().mirrored,!this.properties().childs().mirrored.value(),p),this.updateAllViews((0,u.dataSourceChangeEvent)(this.id())),this._model.updateSource(this)}}),new a.Action({actionId:"Chart.LineTool.BarsPattern.ToggleFlipped",checked:this.properties().childs().flipped.value(),checkable:!0,label:g,onExecute:()=>{e.setProperty(this.properties().childs().flipped,!this.properties().childs().flipped.value(),_),this.updateAllViews((0,u.dataSourceChangeEvent)(this.id())),this._model.updateSource(this)}})]}pointsCount(){return 2}state(e){return{...super.state(e),pattern:this._pattern,scale:this._scale,diff:this._pointsCoordinatePricesDiff}}restoreData(e){const{pattern:t=this._pattern,scale:i=this._scale,diff:s=this._pointsCoordinatePricesDiff}=e;this._pattern=t,this._scale=i,this._pointsCoordinatePricesDiff=s}name(){return"Bars Pattern"}hasEditableCoordinates(){return!1}cloneData(e){this._pattern=(0,o.clone)(e._pattern),this._scale=e._scale,this._pointsCoordinatePricesDiff=e._pointsCoordinatePricesDiff}firstPatternPrice(){const{mode:e,flipped:t}=this.properties().childs(),i=this._pattern[0];return e.value()===d.LineToolBarsPatternMode.LineHL2?(i[2]+i[3])/2:t.value()?i[v[e.value()]]:i[f[e.value()]]}lastPatternPrice(){const{mode:e,flipped:t}=this.properties().childs(),i=this._pattern[this._pattern.length-1];return e.value()===d.LineToolBarsPatternMode.LineHL2?(i[2]+i[3])/2:t.value()?i[f[e.value()]]:i[v[e.value()]]}addPoint(e,t,i){const r=super.addPoint(e,t,!0);if(r){const e=this._model.mainSeries(),[{index:t},{index:i}]=this.points(),r=(0,s.ensureDefined)(e.nearestIndex(Math.min(t,i),c.PlotRowSearchMode.NearestRight)),n=(0,s.ensureDefined)(e.nearestIndex(Math.max(t,i),c.PlotRowSearchMode.NearestLeft));this._pattern=this._createPattern(r,n),this._pattern.length>0&&(t>i&&this._points.reverse(),this._points[1].price=this._points[0].price+this._patternPriceDiff(),this._points[1].index=this._points[0].index+(n-r),this.normalizePoints(),this.createServerPoints()),this._updatePointsCoordinatePricesDiff()}return r}setPoint(e,t,i,s){1===e&&t.index<=this._points[0].index&&(t.index=this._points[0].index+1),0===e&&t.index>=this._points[1].index&&(t.index=this._points[1].index-1),super.setPoint(e,t,i),this._updatePointsCoordinatePricesDiff()}move(e,t,i,s){super.move(e,t,i,s),this._updatePointsCoordinatePricesDiff()}migrateVersion(e,t,i){if(1===e&&this._pattern.length>0){ +const e=this._patternPriceDiff();2===this._timePoint.length&&(this._timePoint[1].price=this._timePoint[0].price+e),2===this._points.length&&(this._points[1].price=this._points[0].price+e)}}getScale(){return this._scale=this._calculateScale()}static createProperties(e){const t=new l.DefaultProperty("linetoolbarspattern",e);return S._configureProperties(t),t}_preparePoint(e,t){var i;const r=this._alignPointToRangeOfActualData(e),n=this._model.mainSeries(),o=(0,s.ensureNotNull)(n.bars().valueAt(r.index));this.properties().childs().mode.value()===d.LineToolBarsPatternMode.Bars?r.price=(0,s.ensure)(o[2]):r.price=(0,s.ensure)(o[4]);const a=(0,s.ensureNotNull)(this.priceScale()),l=(0,s.ensure)(null===(i=this.ownerSource())||void 0===i?void 0:i.firstValue()),c=.05*a.height(),h=a.priceToCoordinate(r.price,l)-c;return r.price=a.coordinateToPrice(h,l),super._preparePoint(r,t)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,14725))).BarsPatternDefinitionsViewModel}static _configureProperties(e){h.LineDataSource._configureProperties(e),e.addExclusion("mirrored"),e.addExclusion("flipped")}_calculatePatternCoordinatePricesDiff(){var e;return this._pattern.length>0&&null!==(e=this._priceCoordinateDiff([this.firstPatternPrice(),this.lastPatternPrice()]))&&void 0!==e?e:null}_updatePointsCoordinatePricesDiff(){this._pointsCoordinatePricesDiff=this._calculatePointsCoordinatePricesDiff()}_calculatePointsCoordinatePricesDiff(){var e;if(2===this._points.length){const[{price:t},{price:i}]=this.points();return null!==(e=this._priceCoordinateDiff([t,i]))&&void 0!==e?e:null}return null}_createPattern(e,t){const i=this._model.mainSeries().data(),r=[];for(let n=e;n<=t;n++)r.push((0,o.clone)((0,s.ensureNotNull)(i.valueAt(n))));return r}_switchPointsPrice(){const e=this._points[0].price;this._timePoint[0].price=this._points[0].price=this._points[1].price,this._timePoint[1].price=this._points[1].price=e}_mirror(){const e=this._pattern;let t=Math.min(e[0][3],e[0][2]),i=Math.max(e[0][3],e[0][2]);for(let s=1;ss-(e-s);for(let t=0;ts.priceToCoordinate(e,r))}_priceCoordinateDiff(e){const t=this._pricesToCoordinates(e);if(t)return t[1]-t[0]}_calculateScale(){let e=1;if(2===this._points.length){const t=this._calculatePatternCoordinatePricesDiff();if(!t)return e +;const i=this._calculatePointsCoordinatePricesDiff();if(t&&null!==i&&(e=+(i/t).toFixed(8)),this._pointsCoordinatePricesDiff!==i){if(this._scale!==e)return this._updateLastPoint(),this._scale;this._updatePointsCoordinatePricesDiff()}}return e}_updateLastPoint(){var e,t;if(this._points.length<2)return;const i=this.priceScale(),s=null!==(t=null===(e=this.ownerSource())||void 0===e?void 0:e.firstValue())&&void 0!==t?t:null;if(null===s||null===i||i.isEmpty())return;const r=this._calculatePatternCoordinatePricesDiff(),n=this._pricesToCoordinates([this.points()[0].price]);null!==r&&n&&(this._timePoint[1].price=this._points[1].price=i.coordinateToPrice(+(this._scale*r).toFixed(8)+n[0],s),this._updatePointsCoordinatePricesDiff())}}},47679:(e,t,i)=>{"use strict";i.d(t,{LineToolBezierCubic:()=>o});var s=i(88537),r=i(88564),n=i(89857);class o extends n.LineDataSource{constructor(e,t,s,r){const n=t||o.createProperties();super(e,n,s,r),this._controlPoints=null,i.e(1583).then(i.bind(i,11933)).then(t=>{this._setPaneViews([new t.BezierCubicPaneView(this,e)])})}pointsCount(){return 2}name(){return"Double Curve"}setLastPoint(e,t){const i=super.setLastPoint(e,t);return this._controlPoints=this._calculateControlPoints(),i}addPoint(e,t,i){const s=super.addPoint(e,t,i);if(s){const e=this._calculateControlPoints();this._controlPoints=null,this._points.push(e[0]),this._points.push(e[1]),i||(this.normalizePoints(),this.createServerPoints()),this._createPointProperty(2),this._createPointProperty(3)}return s}restorePoints(e,t,i){super.restorePoints(e,t,i),this._createPointProperty(2),this._createPointProperty(3)}controlPoints(){return this._controlPoints}static createProperties(e){const t=new r.DefaultProperty("linetoolbeziercubic",e);return o._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,79462)).then(e=>e.GeneralBezierDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e)}_calculateControlPoints(){const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this.points()[0])),t=(0,s.ensureNotNull)(this.pointToScreenPoint(this.points()[1])),i=t.subtract(e).scaled(.5).transposed().scaled(.3),r=e.add(t).scaled(.33),n=e.add(t).scaled(.67),o=r.add(i),a=n.subtract(i);return[(0,s.ensureNotNull)(this.screenPointToPoint(o)),(0,s.ensureNotNull)(this.screenPointToPoint(a))]}}},30899:(e,t,i)=>{"use strict";i.d(t,{LineToolBezierQuadro:()=>o});var s=i(88537),r=i(88564),n=i(89857);class o extends n.LineDataSource{constructor(e,t,s,r){const n=t||o.createProperties();super(e,n,s,r),this._controlPoint=null,i.e(1583).then(i.bind(i,79998)).then(t=>{this._setPaneViews([new t.BezierQuadroPaneView(this,e)])})}pointsCount(){return 2}name(){return"Curve"}setLastPoint(e,t){const i=super.setLastPoint(e,t);return this._controlPoint=this._calculateControlPoint(),i}addPoint(e,t,i){const s=super.addPoint(e,t,i);if(s){const e=this._calculateControlPoint();this._points.push(e),this._controlPoint=null,i||(this.normalizePoints(),this.createServerPoints()), +this._createPointProperty(2)}return s}restorePoints(e,t,i){super.restorePoints(e,t,i),this._createPointProperty(2)}controlPoint(){return this._controlPoint}static createProperties(e){const t=new r.DefaultProperty("linetoolbezierquadro",e);return o._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,79462)).then(e=>e.GeneralBezierDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e)}_calculateControlPoint(){const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this.points()[0])),t=(0,s.ensureNotNull)(this.pointToScreenPoint(this.points()[1])),i=t.subtract(e).scaled(.5).transposed().scaled(.3),r=e.add(t).scaled(.5).add(i);return(0,s.ensureNotNull)(this.screenPointToPoint(r))}}},27258:(e,t,i)=>{"use strict";i.d(t,{LineToolBrushBase:()=>n});var s=i(88537),r=i(89857);class n extends r.LineDataSource{constructor(){super(...arguments),this._finished=!1}pointsCount(){return-1}finished(){return this._finished}finish(){this._finished=!0,this._lastPoint=null,this.normalizePoints(),this.createServerPoints()}hasEditableCoordinates(){return!1}addPoint(e,t,i){if(this._finished)return!0;if(this._lastPoint=null,this._points.length>0){const t=this._points[this._points.length-1],i=(0,s.ensureNotNull)(this.pointToScreenPoint(t));if((0,s.ensureNotNull)(this.pointToScreenPoint(e)).subtract(i).length()<2)return this._finished}return super.addPoint(e),this._finished}restorePoints(e,t,i){super.restorePoints(e,t,i),this._finished=!0}}},43871:(e,t,i)=>{"use strict";i.d(t,{LineToolBrush:()=>o});var s=i(88564),r=i(27258),n=i(37865);class o extends r.LineToolBrushBase{constructor(e,t,i,s){super(e,t||o.createProperties(),i,s),this._loadPaneViews(e)}smooth(){return this.properties().childs().smooth.value()}name(){return"Brush"}hasEditableCoordinates(){return!1}static createProperties(e){const t=new s.DefaultProperty("linetoolbrush",e);return o._configureProperties(t),t}_loadPaneViews(e){i.e(1583).then(i.bind(i,87394)).then(t=>{this._setPaneViews([new t.BrushPaneView(this,e)])})}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,288)).then(e=>e.BrushDefinitionsViewModel)}static _configureProperties(e){r.LineToolBrushBase._configureProperties(e),e.addChild("backgroundsColors",new n.LineToolColorsProperty([e.childs().backgroundColor],e.childs().fillBackground))}}},73932:(e,t,i)=>{"use strict";var s;i.d(t,{CalloutConsts:()=>s}),function(e){e[e.RoundRadius=8]="RoundRadius",e[e.TextMargins=2]="TextMargins",e[e.MinWidth=100]="MinWidth"}(s||(s={}))},95536:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(89857).LineDataSource,n=i(62443).DataSource,o=i(2015),a=i(88564).DefaultProperty,l=i(73932).CalloutConsts,c=i(37865).LineToolColorsProperty;class h extends r{constructor(e,t,s,r){super(e,t||h.createProperties(),s,r),this._barOffset=0,this._timeScale=e.timeScale(),i.e(1583).then(i.t.bind(i,86449,19)).then(({CalloutPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){ +return 2}name(){return"Callout"}_correctPoints(e,t){var i=this._currentMovingPoint.logical.index-this._startMovingPoint.logical.index,s=this._currentMovingPoint.logical.price-this._startMovingPoint.logical.price,r=e[1];r.index+=i,r.price+=s,e[1]=r}addPoint(e){var t=r.prototype.addPoint.call(this,e);return t&&this._calculateBarOffset(),t}_calculateBarOffset(){this.points().length>1&&(this._barOffset=this.points()[1].index-this.points()[0].index)}setLastPoint(e){var t=super.setLastPoint(e);return 2===this.points().length&&this._calculateBarOffset(),t}setPoint(e,t){switch(e){case 0:super.setPoint(e,t),this._calculateBarOffset();break;case 1:var i=this.properties();if(!i.wordWrapWidth)return;var s=this._points,r=this._dragStartLeftEdgeIndex,n=Math.round((t.index-r)/2);if(isFinite(r)&&isFinite(n)){s[1]={index:r+n,price:s[1].price},this._calculateBarOffset(),this.normalizePoints();var o=this._timeScale.indexToCoordinate(r+2*n)-this._timeScale.indexToCoordinate(r)-l.RoundRadius-l.TextMargins;if(!isFinite(o))return;i.wordWrapWidth.setValue(Math.max(l.MinWidth,o));break}s[1]=t,this._calculateBarOffset(),this.normalizePoints()}}setPoints(e){super.setPoints(e);var t=this.properties();if(t.wordWrapWidth){var i=this._dragStartLeftEdgeIndex,s=Math.round((e[1].index-i)/2);if(this._calculateBarOffset(),this.normalizePoints(),isFinite(i)&&isFinite(s)){var r=this._timeScale.indexToCoordinate(i+2*s)-this._timeScale.indexToCoordinate(i)-l.RoundRadius-l.TextMargins;if(!isFinite(r))return;t.wordWrapWidth.setValue(Math.max(l.MinWidth,r))}}}_onPointsetUpdated(e){super._onPointsetUpdated(e),0!==e.length&&(this._dragStartLeftEdgeIndex=this.points()[1].index)}move(e,t,i){super.move(e,t,i),this._calculateBarOffset()}state(e){var t=r.prototype.state.call(this,e);return t.barOffset=this._barOffset,t}restoreData(e){e.barOffset?this._barOffset=e.barOffset:this._calculateBarOffset(),this._calculatePoint2()}setPriceScale(e){n.prototype.setPriceScale.call(this,e),e&&e.priceRange()&&this._calculatePoint2()}template(){var e=r.prototype.template.call(this);return e.text=this.properties().childs().text.value(),e}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}_calculatePoint2(){if(!(this._model.lineBeingEdited()===this||this._model.sourcesBeingMoved().includes(this)||this._points.length<2)){var e=this.points()[0],t=this.points()[1];this._points[1]={price:t.price,index:e.index+this._barOffset}}}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,26599))).CalloutDefinitionsViewModel}static createProperties(e){var t=new a("linetoolcallout",e);return h._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e),e.hasChild("text")||e.addChild("text",new o(s("Text"))),e.addExclusion("text"),e.addChild("textsColors",new c([e.childs().color]))}}t.LineToolCallout=h},49802:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r), +i.e(1583).then(i.t.bind(i,99517,19)).then(({LineToolCircleLinesPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 2}name(){return"Cyclic Lines"}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,66819))).CyclicAndSineLinesPatternDefinitionsViewModel}static createProperties(e){var t=new r("linetoolcirclelines",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolCircleLines=n},2039:(e,t,i)=>{"use strict";i.d(t,{LineToolCircle:()=>l});var s=i(2015),r=i.n(s),n=i(88564),o=i(89857),a=i(37865);class l extends o.LineDataSource{constructor(e,t,s,r){const n=t||l.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,13167)).then(({CirclePaneView:t})=>{const i=[new t(this,e)];this._setPaneViews(i)})}pointsCount(){return 2}name(){return"Circle"}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}static createProperties(e){const t=new n.DefaultProperty("linetoolcircle",e);return l._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,3410))).EllipseCircleDefinitionsViewModel}_snapTo45DegreesAvailable(){return!0}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(r())("")),e.addChild("linesColors",new a.LineToolColorsProperty([e.childs().color])),e.addChild("linesWidths",new a.LineToolWidthsProperty([e.childs().linewidth])),e.addChild("backgroundsColors",new a.LineToolColorsProperty([e.childs().backgroundColor])),e.addChild("textsColors",new a.LineToolColorsProperty([e.childs().textColor],e.childs().showLabel)),e.addExclusion("linesColors"),e.addExclusion("linesWidths"),e.addExclusion("backgroundsColors"),e.addExclusion("text")}}},53193:(e,t,i)=>{"use strict";i.d(t,{LineToolCrossLine:()=>a});var s=i(88564),r=i(10198),n=i(67103),o=i(89857);class a extends o.LineDataSource{constructor(e,t,s,o){super(e,t||a.createProperties(),s,o),this._priceAxisView=new r.LineToolHorzLinePriceAxisView(this),this._timeAxisView=new n.LineToolVertLineTimeAxisView(this),i.e(1583).then(i.bind(i,62105)).then(({CrossLinePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 1}name(){return"Cross Line"}priceAxisViews(e,t){return this.isSourceHidden()?null:t===this.priceScale()&&this.properties().childs().showPrice.value()&&this._model.paneForSource(this)===e?[this._priceAxisView]:null}timeAxisViews(){return this.isSourceHidden()?null:this.properties().childs().showTime.value()?[this._timeAxisView]:null}updateAllViews(e){super.updateAllViews(e),this._priceAxisView.update(e),this._timeAxisView.update()}canHasAlert(){return!1}lineColor(){return this.properties().childs().linecolor.value()}lineWidth(){return this.properties().childs().linewidth.value()}lineStyle(){ +return this.properties().childs().linestyle.value()}static createProperties(e){const t=new s.DefaultProperty("linetoolcrossline",e);return a._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,99645)).then(e=>e.CrossLineDefinitionsViewModel)}static _configureProperties(e){o.LineDataSource._configureProperties(e)}}},980:(e,t,i)=>{"use strict";i.d(t,{LineToolCypherPattern:()=>n});var s=i(656),r=i(88564);class n extends s.LineTool5PointsPattern{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Cypher Pattern"}static createProperties(e){const t=new r.DefaultProperty("linetoolcypherpattern",e);return n._configureProperties(t),t}_loadPaneViews(e){i.e(1583).then(i.bind(i,58062)).then(t=>{this._setPaneViews([new t.CypherPaneView(this,e)])})}static _configureProperties(e){s.LineTool5PointsPattern._configureProperties(e)}}},85402:(e,t,i)=>{"use strict";i.d(t,{nonThemedFactoryDefaultsBase:()=>l,themedFactoryDefaultsBase:()=>c});var s=i(45112),r=i(24633),n=i(68906),o=i(52418);const a=(0,s.getHexColorByName)("color-tv-blue-500"),l={linewidth:1,fontsize:12,fillLabelBackground:!0,fillBackground:!0,backgroundTransparency:60,intervalsVisibilities:{...o.intervalsVisibilitiesDefaults}},c=new Map([[r.StdTheme.Light,{textcolor:(0,s.getHexColorByName)("color-black"),labelBackgroundColor:(0,s.getHexColorByName)("color-white"),linecolor:a,backgroundColor:(0,n.generateColor)(a,85),shadow:"rgba(0, 0, 0, 0.2)"}],[r.StdTheme.Dark,{textcolor:(0,s.getHexColorByName)("color-white"),labelBackgroundColor:(0,s.getHexColorByName)("color-cold-gray-800"),linecolor:a,backgroundColor:(0,n.generateColor)(a,85),shadow:"rgba(0, 0, 0, 0.4)"}]])},26215:(e,t,i)=>{"use strict";i.d(t,{LineToolDateAndPriceRange:()=>g});var s=i(88537),r=i(89857),n=i(34081),o=i(24633),a=i(45112),l=i(45383),c=i(85402);const h=(0,a.getHexColorByName)("color-tv-blue-500"),d={...c.nonThemedFactoryDefaultsBase,drawBorder:!1,borderWidth:1},u=new Map([[o.StdTheme.Light,{...c.themedFactoryDefaultsBase.get(o.StdTheme.Light),borderColor:h}],[o.StdTheme.Dark,{...c.themedFactoryDefaultsBase.get(o.StdTheme.Dark),borderColor:h}]]),p=(0,l.extractAllPropertiesKeys)((0,s.ensureDefined)(u.get(o.StdTheme.Light))),_=(0,l.extractAllPropertiesKeys)(d);class m extends l.ThemedDefaultProperty{static create(e){return new m("linetooldateandpricerange",()=>(0,l.factoryDefaultsForCurrentTheme)(d,u),_,p,e)}}class g extends r.LineDataSource{constructor(e,t,s,r){super(e,t||g.createProperties(),s,r),this._volumeCalculator=null,i.e(1583).then(i.bind(i,81226)).then(e=>{this._setPaneViews([new e.DateAndPriceRangePaneView(this,this._model)])})}destroy(){super.destroy(),null!==this._volumeCalculator&&this._volumeCalculator.destroy()}pointsCount(){return 2}name(){return"Date and Price Range"}volume(){if(null===this._volumeCalculator)return NaN;const e=this.points();return this._volumeCalculator.volume(e[0].index,e[1].index)}setOwnerSource(e){e===this._model.mainSeries()&&((0,s.assert)(null===this._volumeCalculator), +this._volumeCalculator=new n.SeriesTimeRangeVolumeCalculator(this._model.mainSeries())),super.setOwnerSource(e)}static createProperties(e){const t=m.create(e);return g._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,80447))).GeneralDatePriceRangeDefinitionsViewModel}static _configureProperties(e){r.LineDataSource._configureProperties(e)}}},45669:(e,t,i)=>{"use strict";i.d(t,{LineToolDateRange:()=>_});var s=i(88537),r=i(89857),n=i(34081),o=i(24633),a=i(45383),l=i(85402);const c={...l.nonThemedFactoryDefaultsBase,extendTop:!1,extendBottom:!1},h=l.themedFactoryDefaultsBase,d=(0,a.extractAllPropertiesKeys)((0,s.ensureDefined)(h.get(o.StdTheme.Light))),u=(0,a.extractAllPropertiesKeys)(c);class p extends a.ThemedDefaultProperty{static create(e){return new p("linetooldaterange",()=>(0,a.factoryDefaultsForCurrentTheme)(c,h),u,d,e)}}class _ extends r.LineDataSource{constructor(e,t,s,r){super(e,t||_.createProperties(),s,r),this._volumeCalculator=null,i.e(1583).then(i.bind(i,27913)).then(e=>{this._setPaneViews([new e.DateRangePaneView(this,this._model)])})}destroy(){super.destroy(),null!==this._volumeCalculator&&this._volumeCalculator.destroy()}pointsCount(){return 2}name(){return"Date Range"}volume(){if(null===this._volumeCalculator)return NaN;const e=this.points();return this._volumeCalculator.volume(e[0].index,e[1].index)}setOwnerSource(e){e===this._model.mainSeries()&&((0,s.assert)(null===this._volumeCalculator),this._volumeCalculator=new n.SeriesTimeRangeVolumeCalculator(this._model.mainSeries())),super.setOwnerSource(e)}static createProperties(e){const t=p.create(e);return _._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,80447))).GeneralDatePriceRangeDefinitionsViewModel}static _configureProperties(e){r.LineDataSource._configureProperties(e)}}},46512:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),this.version=n.version,i.e(1583).then(i.t.bind(i,56863,19)).then(({DisjointChannelPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 3}name(){return"Disjoint Channel"}hasEditableCoordinates(){return!1}addPoint(e,t){return t&&t.shift()&&2===this.points().length&&this._snapPoint45Degree(e,this.points()[this.points().length-2]),s.prototype.addPoint.call(this,e)}setLastPoint(e,t){return t&&t.shift()&&2===this.points().length&&this._snapPoint45Degree(e,this.points()[this.points().length-2]),s.prototype.setLastPoint.call(this,e)}setPoint(e,t,i){var s=.5*(this._points[1].price+this._points[2].price);if(i&&i.shift()&&1===e){this._snapPoint45Degree(t,this.points()[0])}if(e<3&&super.setPoint(e,t),0!==e&&2!==e){if(1===e){var r=this._points[1].price-s;this._points[2].price=this._points[1].price-2*r}else if(3===e){r=t.price-this._points[2].price;this._points[0].price=this._points[1].price-r, +this._points[0].index=t.index}this.normalizePoints()}}getPoint(e){if(e<3)return s.prototype.getPoint.call(this,e);var t=this._points[0].price-this._points[2].price;return{index:this._points[0].index,price:this._points[1].price-t}}canHasAlert(){return!0}_getAlertPlots(){var e=this._points[0],t=this._points[1],i=[];e.index<=t.index?(i.push(e),i.push(t)):(i.push(t),i.push(e));var s=this._points[2];s.time=t.time,s.index=t.index;var r,n,o,a,l={price:s.price+(t.price-e.price),time:e.time,index:e.index},c=[];s.index<=l.index?(c.push(s),c.push(l)):(c.push(l),c.push(s)),i[0].price>c[0].price?(r=i,n=c):c[0].price>i[0].price||c[1].price>i[1].price?(r=c,n=i):(r=i,n=c);var h=this.properties().extendLeft.value(),d=this.properties().extendRight.value();return e.index<=t.index?(o=h,a=d):(o=d,a=h),[this._linePointsToAlertPlot(r,"Upper",o,a),this._linePointsToAlertPlot(n,"Lower",o,a)]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,14145))).GeneralTrendFiguresDefinitionsViewModel}static createProperties(e){var t=new r("linetooldisjointangle",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}n.version=1,t.LineToolDisjointChannel=n},97917:(e,t,i)=>{"use strict";i.d(t,{LineToolElliott:()=>u,LineToolElliottImpulse:()=>m,LineToolElliottTriangle:()=>f,LineToolElliottTripleCombo:()=>S,LineToolElliottCorrection:()=>w,LineToolElliottDoubleCombo:()=>P});var s=i(28353),r=i(24980),n=i(89857),o=i(28296),a=i(88564),l=i(37865);const c=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14],h=new r.TranslatedString("change Elliott degree",(0,s.t)("change Elliott degree")),d=[{value:0,title:(0,s.t)("Supermillennium")},{value:1,title:(0,s.t)("Millennium")},{value:2,title:(0,s.t)("Submillennium")},{value:3,title:(0,s.t)("Grand supercycle")},{value:4,title:(0,s.t)("Supercycle")},{value:5,title:(0,s.t)("Cycle")},{value:6,title:(0,s.t)("Primary")},{value:7,title:(0,s.t)("Intermediate")},{value:8,title:(0,s.t)("Minor",{context:"wave"})},{value:9,title:(0,s.t)("Minute",{context:"wave"})},{value:10,title:(0,s.t)("Minuette")},{value:11,title:(0,s.t)("Subminuette")},{value:12,title:(0,s.t)("Micro")},{value:13,title:(0,s.t)("Submicro")},{value:14,title:(0,s.t)("Minuscule")}];class u extends n.LineDataSource{constructor(e,t,s,r){super(e,null!=t?t:u.createProperties(),s,r),this.version=4,i.e(1583).then(i.bind(i,5761)).then(e=>{this._setPaneViews([new e.ElliottLabelsPaneView(this,this._model)])})}migrateVersion(e,t,i){if(i.properties.hasChild("background")&&i.properties.removeProperty("background"),i.properties.hasChild("backgroundColor")&&i.properties.removeProperty("backgroundColor"),i.properties.hasChild("showBackground")&&i.properties.removeProperty("showBackground"),1===e){const e=Object.assign({},this._timePoint[0]);if(this._timePoint.unshift(e),this._points.length>0){const e=Object.assign({},this._points[0]);this._points.unshift(e)}}}applyTemplate(e){const t=e;delete t.background,delete t.backgroundColor,delete t.showBackground,super.applyTemplate(e)}name(){ +return"Elliott Labels"}additionalActions(e){return[new o.Action({actionId:"Chart.LineTool.Elliot.ChangeDegreeProperty",label:(0,s.t)("Degree"),subItems:c.map(t=>{const i=d.filter(e=>e.value===t)[0];return new o.Action({actionId:"Chart.LineTool.Elliot.ChangeDegreeProperty",label:i.title,checkable:!0,checked:this.properties().childs().degree.value()===t,onExecute:()=>{e.setProperty(this.properties().childs().degree,t,h)}})})})]}label(e){const t=c.length-this.properties().childs().degree.value()-1,i=Math.floor(t/3);return{group:i,bold:!!(i%2),decoration:["","brackets","circle"][t%3],label:this.labelsGroup()[i][e]}}availableDegreesValues(){return d}static createProperties(e){const t=new a.DefaultProperty("linetoolelliott",e);return u._configureProperties(t),t}static migrateState(e){const t={0:11,1:10,2:9,3:8,4:7,5:6,6:5,7:4,8:3},i={0:11,1:8};"LineToolElliottSubminuette"===e.type&&(e.type="LineToolElliottImpulse",e.state.degree=t[e.state.wavesize]),"LineToolElliottMinor"===e.type&&(e.type="LineToolElliottImpulse",e.state.degree=t[e.state.wavesize]),"LineToolElliottCircle"===e.type&&(e.type="LineToolElliottImpulse",e.state.degree=t[e.state.wavesize]),"LineToolElliottMinorRetr"===e.type&&(e.type="LineToolElliottCorrection",e.state.degree=i[e.state.wavesize]),"LineToolElliottMajorRetr"===e.type&&(e.type="LineToolElliottCorrection",e.state.degree=i[e.state.wavesize])}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,31522))).ElliottPatternDefinitionsViewModel}static _configureProperties(e){n.LineDataSource._configureProperties(e),e.addChild("linesColors",new l.LineToolColorsProperty([e.childs().color])),e.addExclusion("linesColors")}}class p extends u{pointsCount(){return 6}static _configureProperties(e){u._configureProperties(e)}}const _=[["0","1","2","3","4","5"],["0","i","ii","iii","iv","v"],["0","1","2","3","4","5"],["0","I","II","III","IV","V"],["0","1","2","3","4","5"]];class m extends p{constructor(e,t,i,s){super(e,t||m.createProperties(),i,s)}name(){return"Elliott Impulse Wave (12345)"}labelsGroup(){return _}static createProperties(e){const t=new a.DefaultProperty("linetoolelliottimpulse",e);return m._configureProperties(t),t}static _configureProperties(e){p._configureProperties(e)}}const g=[["0","A","B","C","D","E"],["0","a","b","c","d","e"],["0","A","B","C","D","E"],["0","a","b","c","d","e"],["0","A","B","C","D","E"]];class f extends p{constructor(e,t,i,s){super(e,t||f.createProperties(),i,s)}name(){return"Elliott Triangle Wave (ABCDE)"}labelsGroup(){return g}static createProperties(e){const t=new a.DefaultProperty("linetoolelliotttriangle",e);return f._configureProperties(t),t}static _configureProperties(e){p._configureProperties(e)}}const v=[["0","W","X","Y","X","Z"],["0","w","x","y","x","z"],["0","W","X","Y","X","Z"],["0","w","x","y","x","z"],["0","W","X","Y","X","Z"]];class S extends p{constructor(e,t,i,s){super(e,null!=t?t:S.createProperties(),i,s)}name(){return"Elliott Triple Combo Wave (WXYXZ)"}labelsGroup(){return v} +static createProperties(e){const t=new a.DefaultProperty("linetoolelliotttriplecombo",e);return S._configureProperties(t),t}static _configureProperties(e){p._configureProperties(e)}}class y extends u{pointsCount(){return 4}static _configureProperties(e){u._configureProperties(e)}}const b=[["0","A","B","C"],["0","a","b","c"],["0","A","B","C"],["0","a","b","c"],["0","A","B","C"]];class w extends y{constructor(e,t,i,s){super(e,null!=t?t:w.createProperties(),i,s)}name(){return"Elliott Correction Wave (ABC)"}labelsGroup(){return b}static createProperties(e){const t=new a.DefaultProperty("linetoolelliottcorrection",e);return w._configureProperties(t),t}static _configureProperties(e){y._configureProperties(e)}}const C=[["0","W","X","Y"],["0","w","x","y"],["0","W","X","Y"],["0","w","x","y"],["0","W","X","Y"]];class P extends y{constructor(e,t,i,s){super(e,null!=t?t:P.createProperties(),i,s)}name(){return"Elliott Double Combo Wave (WXY)"}labelsGroup(){return C}static createProperties(e){const t=new a.DefaultProperty("linetoolelliottdoublecombo",e);return P._configureProperties(t),t}static _configureProperties(e){y._configureProperties(e)}}},38430:(e,t,i)=>{"use strict";i.d(t,{LineToolEllipse:()=>d});var s=i(88537),r=i(4652),n=i(86441),o=i(2015),a=i.n(o),l=i(89857),c=i(88564),h=i(37865);class d extends l.LineDataSource{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this.version=2,this._dist=null,this._fakePointAdded=!1,i.e(1583).then(i.bind(i,58446)).then(({EllipsePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}startChanging(e,t){if(super.startChanging(e,t),0===e||1===e){const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1])),i=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[2]));this._dist=(0,r.distanceToLine)(e,t,i).distance||0}}addPoint(e,t,i){const s=l.LineDataSource.prototype.addPoint.call(this,e,t,i);return s&&(this._fakePointAdded=!1),s}setPoint(e,t,i,o){const a={...t};let l=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),c=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1])),h=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[2]));switch(e){case 0:{if(i&&i.shift()){this._snapPoint45Degree(a,this._points[1]),this._points[0]=a,this._points[2]=this._preparePointInternal(this._points[2],i,!0),this._points[0].index===this._points[1].index&&this._fixVerticalDiameterPoints(this._points[0],this._points[1],this._points[2]);break}l=(0,s.ensureNotNull)(this.pointToScreenPoint(a));const e=c.subtract(l),t=l.add(c).scaled(.5),r=new n.Point(-e.y,e.x).normalized();h=t.add(r.scaled((0,s.ensureNotNull)(this._dist))),this._points[0]=a,this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(h));break}case 1:{if(i&&i.shift()){this._snapPoint45Degree(a,this._points[0]),this._points[1]=a,this._points[2]=this._preparePointInternal(this._points[2],i,!0),this._points[0].index===this._points[1].index&&this._fixVerticalDiameterPoints(this._points[1],this._points[0],this._points[2]);break}c=(0, +s.ensureNotNull)(this.pointToScreenPoint(a));const e=c.subtract(l),t=l.add(c).scaled(.5),r=new n.Point(-e.y,e.x).normalized();h=t.add(r.scaled((0,s.ensureNotNull)(this._dist))),this._points[1]=a,this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(h));break}case 2:{const e=(0,s.ensureNotNull)(this.pointToScreenPoint(a)),t=(0,r.distanceToLine)(l,c,e).distance,i=c.subtract(l),o=l.add(c).scaled(.5),d=new n.Point(-i.y,i.x).normalized();h=o.add(d.scaled(t)),this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(h));break}case 3:{const e=(0,s.ensureNotNull)(this.pointToScreenPoint(a)),t=(0,r.distanceToLine)(l,c,e).distance,i=c.subtract(l),o=l.add(c).scaled(.5),d=new n.Point(-i.y,i.x).normalized();h=o.add(d.scaled(t)),this._points[2]=(0,s.ensureNotNull)(this.screenPointToPoint(h));break}}this.normalizePoints()}pointsCount(){return 3}name(){return"Ellipse"}hasEditableCoordinates(){return!1}migrateVersion(e,t,i){if(1===e&&2===this._points.length){const e=this._points[0].price,t=.5*(this._points[0].price+this._points[1].price);this._points[0]={price:t,index:this._points[0].index},this._points[1]={price:t,index:this._points[1].index},this._points.push({price:e,index:this._points[0].index})}if(1===e&&2===this._timePoint.length){const e=this._timePoint[0].price,t=.5*(this._timePoint[0].price+this._timePoint[1].price);this._timePoint[0].price=t,this._timePoint[1].price=t;const i={price:e,offset:this._timePoint[0].offset,time_t:this._timePoint[0].time_t};this._timePoint.push(i)}}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}static createProperties(e){const t=new c.DefaultProperty("linetoolellipse",e);return d._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,3410))).EllipseCircleDefinitionsViewModel}_preparePoint(e,t){const i=this._preparePointInternal(e,t,!1);return t&&t.shift()&&this._points[0].index===this._points[1].index&&this._fixVerticalDiameterPoints(this._points[1],this._points[0],i),i}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}static _configureProperties(e){l.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(a())("")),e.addChild("linesColors",new h.LineToolColorsProperty([e.childs().color])),e.addChild("textsColors",new h.LineToolColorsProperty([e.childs().textColor],e.childs().showLabel)),e.addExclusion("text")}_preparePointInternal(e,t,i){let r={...e};if(t&&t.shift()){const t=this.points().length;if(!this._fakePointAdded&&3===t&&!i)return r;if(this._fakePointAdded||2===t||i){this._snapPoint45Degree(e,this._points[0]),this._fakePointAdded?this._points[1]=e:i||(this._fakePointAdded=!0,super._addPointIntenal(e));const t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),o=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1])),a=o.x-t.x,l=o.y-t.y,c=Math.sqrt(a*a+l*l)/2,h=o.subtract(t),d=t.add(o).scaled(.5),u=new n.Point(-h.y,h.x).normalized(),p=d.add(u.scaled(c));r=(0, +s.ensureNotNull)(this.screenPointToPoint(p)),(isNaN(r.price)||isNaN(r.index))&&(r=(0,s.ensureNotNull)(this.screenPointToPoint(d)))}}else this._fakePointAdded&&(this._points.splice(1,1),this._fakePointAdded=!1);return r}_fixVerticalDiameterPoints(e,t,i){const r=(0,s.ensureNotNull)(this.pointToScreenPoint(e)),o=(0,s.ensureNotNull)(this.pointToScreenPoint(t)),a=this._model.timeScale(),l=a.indexToCoordinate(e.index),c=a.indexToCoordinate(i.index);let h=2*Math.abs(l-c);h*=t.price>e.price?1:-1,e.price=(0,s.ensureNotNull)(this.screenPointToPoint(new n.Point(r.x,o.y+h))).price}}},39593:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(53664),n=i(88564).DefaultProperty,o=i(71053).PlotRowSearchMode;const a=i(67337);var l=i(59555).sortSourcesPreOrdered.LineToolExecution;class c{constructor(e,t){this._pane=e,this._timeScale=t}static recreateOrderedByBarsSourcesCache(e){c.clearOrderedByBarsSourcesCache();for(var t=c.prototype,i=e.sourcesByGroup().all(),s=0;s_.lastBar()||i<_.firstBar())return{x:-1,y:-1};for(var m=this._cachedByBarIndexOrderedExecutions[i]||this._pane.sourcesByGroup().all(),g=m.length-1;g>=0;--g){var f=m[g];if(f instanceof d&&f._adapter._index===i&&f._adapter.getDirection()===r){if(f===e._line)break;var v=f._adapter._height();s=n?s+v:s-v}}return{x:t.indexToCoordinate(i),y:s}}}c.prototype._cachedByBarIndexOrderedExecutions={};class h{constructor(e){this._line=e}_height(){var e=this.getArrowHeight(),t=this.getArrowSpacing();this.getText()&&r.fontHeight(this.getFont());return e+t+0+10}getIndex(){return this._line._model.timeScale().baseIndex()-this._line.points()[0].index}setIndex(e){var t=this._line._model.timeScale().baseIndex()-Math.abs(e);this._line.startMoving({logical:this._line.points()[0]});var i=TradingView.merge({},this._line.points()[0]);return i.index=t,this._line.move({logical:i}),this._line.endMoving(),this}getTime(){return this._unixtime}setTime(e){return this._unixtime=e,this._line.restorePoints([{offset:0,price:this.getPrice(),time_t:this._unixtime}],[]),this._line.createServerPoints(),this}getPrice(){return this._line.points().length>0?this._line.points()[0].price:this._line._timePoint.length>0?this._line._timePoint[0].price:void 0}setPrice(e){return this._line.points().length>0&&(this._line.points()[0].price=e), +this._line._timePoint.length>0&&(this._line._timePoint[0].price=e),this}getText(){return this._line.properties().text.value()}setText(e){return this._line.properties().text.setValue(e||""),this._line.updateAllViewsAndRedraw(),this}getArrowHeight(){return this._line.properties().arrowHeight.value()}setArrowHeight(e){return this._line.properties().arrowHeight.setValue(e||5),this}getArrowSpacing(){return this._line.properties().arrowSpacing.value()}setArrowSpacing(e){return this._line.properties().arrowSpacing.setValue(e||1),this}getDirection(){return this._line.properties().direction.value()}setDirection(e){return this._line.properties().direction.setValue(e||"buy"),this}getArrowColor(){var e=this._line.properties();return"buy"===this.getDirection()?e.arrowBuyColor.value():e.arrowSellColor.value()}setArrowColor(e){return"buy"===this.getDirection()?this.setArrowBuyColor(e):this.setArrowSellColor(e),this}setArrowBuyColor(e){return this._line.properties().arrowBuyColor.setValue(e),this}setArrowSellColor(e){return this._line.properties().arrowSellColor.setValue(e),this}getTextColor(){return r.getColorFromProperties(this._line.properties().textColor,this._line.properties().textTransparency)}setTextColor(e){return r.setColorToProperties(e,this._line.properties().textColor,this._line.properties().textTransparency),this}getFont(){return r.getFontFromProperties(this._line.properties().fontFamily,this._line.properties().fontSize,this._line.properties().fontBold,this._line.properties().fontItalic)}setFont(e){return r.setFontToProperties(e,this._line.properties().fontFamily,this._line.properties().fontSize,this._line.properties().fontBold,this._line.properties().fontItalic),this}setTooltip(e){return null==e?e="":e+="",this._line.properties().tooltip.setValue(e),this}getTooltip(){return this._line.properties().tooltip.value()}remove(){this._line._model.removeSource(this._line),delete this._line}getPoints(){return this._line.points()}}class d extends s{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this._adapter=new h(this),this.customization.forcePriceAxisLabel=!1,this.customization.disableErasing=!0,this.customization.showInObjectTree=!1,this.setSelectionEnabled(!1),i.e(1583).then(i.t.bind(i,90216,19)).then(({ExecutionPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}zorder(){return l}isSpeciallyZOrderedSource(){return!0}pointsCount(){return d.POINTS_COUNT}name(){return"Execution"}hasContextMenu(){return!1}state(){return null}updateAllViews(){return this._isVisible()?s.prototype.updateAllViews.call(this):null}priceAxisViews(e,t){return this._isVisible()?s.prototype.priceAxisViews.call(this,e,t):null}_isVisible(){return this._model.properties().tradingProperties.showExecutions.value()}paneViews(){return TradingView.printing&&!a.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showExecutions.value()?s.prototype.paneViews.call(this):null}userEditEnabled(){return!1}showInObjectTree(){return!1}cloneable(){return!1}copiable(){return!1}isSynchronizable(){return!1} +static createProperties(e){var t=new n("linetoolexecution",e,!1,!1);return d._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}d.POINTS_COUNT=1,t.ExecutionsPositionController=c,t.LineToolExecution=d},41239:(e,t,i)=>{"use strict";var s=i(57649).LineToolTrendLine,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Extended Line"}static createProperties(e){var t=new r("linetoolextended",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolExtended=n},48917:(e,t,i)=>{"use strict";i.d(t,{LineToolFibChannel:()=>h});var s=i(88537),r=i(28353),n=i(24980),o=i(89857),a=i(34580),l=i(37865);const c=new n.TranslatedString("erase level line",(0,r.t)("erase level line"));class h extends o.LineDataSource{constructor(e,t,s,r){super(e,t||h.createProperties(),s,r),this.version=2,i.e(1583).then(i.bind(i,74042)).then(({FibChannelPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return 24}migrateVersion(e,t,i){i.properties.removeProperty("reverse")}pointsCount(){return 3}name(){return"Fib Channel"}processErase(e,t){const i="level"+t,s=this.properties().child(i).childs().visible;e.setProperty(s,!1,c)}static createProperties(e){const t=new a.LevelsProperty("linetoolfibchannel",e,!1,{range:[1,24],names:["coeff","color","visible"]});return h._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,34670))).FibDrawingsWith24LevelsDefinitionsViewModel}static _configureProperties(e){o.LineDataSource._configureProperties(e);const t=[];for(let i=1;i<=24;i++){const r=(0,s.ensureDefined)(e.child("level"+i));t.push((0,s.ensureDefined)(r.child("color")))}e.addChild("linesColors",new l.LineToolColorsProperty(t))}}},54502:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),i.e(1583).then(i.t.bind(i,24227,19)).then(({FibCirclesPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 2}name(){return"Fib Circles"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}static createProperties(e){var t=new o("linetoolfibcircles",e,!1,{range:[1,11]});return d._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,9948))).FibCirclesDefinitionsViewModel}_snapTo45DegreesAvailable(){return!0}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("trendline").child("linewidth")],i=[e.child("trendline").child("color")],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color")) +;e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=11,t.LineToolFibCircles=d},44860:(e,t,i)=>{"use strict";i.d(t,{LineToolFibRetracement:()=>c});var s=i(28353),r=i(24980),n=i(34580),o=i(89857),a=i(37865);const l=new r.TranslatedString("erase level line",(0,s.t)("erase level line"));class c extends o.LineDataSource{constructor(e,t,s,r){super(e,t||c.createProperties(),s,r),this.version=2,i.e(1583).then(i.bind(i,22567)).then(e=>{this._setPaneViews([new e.FibRetracementPaneView(this,this._model)])})}levelsCount(){return 24}pointsCount(){return 2}name(){return"Fib Retracement"}migrateVersion(e){1===e&&this.properties().childs().extendLines.setValue(!0)}processErase(e,t){const i="level"+t,{visible:s}=this.properties().childs()[i].childs();e.setProperty(s,!1,l)}fibLevelsBasedOnLogScale(){var e;return this.properties().childs().fibLevelsBasedOnLogScale.value()&&!!(null===(e=this.priceScale())||void 0===e?void 0:e.isLog())}static createProperties(e){const t=new n.LevelsProperty("linetoolfibretracement",e,!1,{range:[1,24],names:["coeff","color","visible"]});return c._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,34670))).FibDrawingsWith24LevelsDefinitionsViewModel}static _configureProperties(e){var t;const i=e;super._configureProperties(i);const s=[i.childs().trendline.childs().linewidth,i.childs().levelsStyle.childs().linewidth],r=[i.childs().trendline.childs().color];for(let e=1;e<=24;e++){const s=null===(t=i.child("level"+e))||void 0===t?void 0:t.child("color");r.push(s)}i.addChild("linesColors",new a.LineToolColorsProperty(r)),i.addChild("linesWidths",new a.LineToolWidthsProperty(s))}}},19857:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),i.e(1583).then(i.bind(i,52832)).then(({FibSpeedResistanceArcsPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 2}name(){return"Fib Speed Resistance Arcs"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}static createProperties(e){var t=new o("linetoolfibspeedresistancearcs",e,!1,{range:[1,11]});return d._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,17770))).FibSpeedResistanceArcsDefinitionsViewModel}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("trendline").child("linewidth")],i=[e.child("trendline").child("color")],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=11,t.LineToolFibSpeedResistanceArcs=d},70673:(e,t,i)=>{ +"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865).LineToolColorsProperty,l=new r("erase level line",s("erase level line"));class c extends n{constructor(e,t,s,r){super(e,t||c.createProperties(),s,r),i.e(1583).then(i.bind(i,95294)).then(({FibSpeedResistanceFanPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}hLevelsCount(){return c.HLevelsCount}vLevelsCount(){return c.VLevelsCount}pointsCount(){return 2}name(){return"Fib Speed Resistance Fan"}processErase(e,t){var i="h"===t.type?"hlevel"+t.index:"vlevel"+t.index,s=this.properties()[i].visible;e.setProperty(s,!1,l)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,51697))).FibSpeedResistanceFanDefinitionsViewModel}_snapTo45DegreesAvailable(){return!0}static createProperties(e){void 0!==e&&void 0===e.reverse&&(e.reverse=!0);var t=new o("linetoolfibspeedresistancefan",e,!1,{range:[1,7],prefixes:["h","v"],names:["coeff","color","visible"]});return c._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e);var t=[e.child("grid").child("color")];for(let i=1;i<=c.HLevelsCount;i++)t.push(e.child("hlevel"+i).child("color"));for(let i=1;i<=c.VLevelsCount;i++)t.push(e.child("vlevel"+i).child("color"));e.addChild("linesColors",new a(t)),e.addExclusion("linesColors")}}c.HLevelsCount=7,c.VLevelsCount=7,t.LineToolFibSpeedResistanceFan=c},29638:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),i.e(1583).then(i.bind(i,22115)).then(({FibSpiralPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 2}name(){return"Fib Spiral"}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,29216))).FibSpiralDefinitionsViewModel}static createProperties(e){var t=new r("linetoolfibspiral",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolFibSpiral=n},63835:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this.version=d.version,i.e(1583).then(i.t.bind(i,28550,19)).then(({FibTimeZonePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}migrateVersion(e,t,i){if(1===e){i.properties.level1.color.setValue(i.properties.baselinecolor.value());for(var s=2;s<=11;s++)i.properties["level"+s].color.setValue(i.properties.linecolor.value());for(s=1;s<=11;s++)i.properties["level"+s].linewidth.setValue(i.properties.linewidth.value()),i.properties["level"+s].linestyle.setValue(i.properties.linestyle.value())}}pointsCount(){return 2}name(){return"Fib Time Zone"}processErase(e,t){ +var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,45384))).FibTimezoneDefinitionsViewModel}static createProperties(e){var t=new o("linetoolfibtimezone",e,!1,{range:[1,11]});return d._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e);for(var t=[],i=[],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));for(t=[],i=[],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.version=2,d.LevelsCount=11,t.LineToolFibTimeZone=d},53804:(e,t,i)=>{"use strict";i.d(t,{LineToolFibWedgeBase:()=>o});var s=i(88537),r=i(86441),n=i(89857);class o extends n.LineDataSource{pointsCount(){return 3}hasEditableCoordinates(){return!1}setPoint(e,t){if(super.setPoint(e,t),!this._recursiveGuard)try{if(this._recursiveGuard=!0,2===e){const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0]));let t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1]));const i=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[2])).subtract(e).length();let n=t.subtract(e);n.length()<=0&&(n=new r.Point(1,0)),t=e.add(n.normalized().scaled(i));const o=(0,s.ensureNotNull)(this.screenPointToPoint(t)),a=this._pointsProperty.childs().points[1];a.childs().price.setValue(o.price),a.childs().bar.setValue(o.index)}else{const e=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1]));let i=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[2]));const n=t.subtract(e).length();let o=i.subtract(e);o.length()<=0&&(o=new r.Point(1,0)),i=e.add(o.normalized().scaled(n));const a=(0,s.ensureNotNull)(this.screenPointToPoint(i)),l=this._pointsProperty.childs().points[2];l.childs().price.setValue(a.price),l.childs().bar.setValue(a.index)}}finally{this._recursiveGuard=!1}}addPoint(e){if(2===this._points.length){const t=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),i=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1]));let r=(0,s.ensureNotNull)(this.pointToScreenPoint(e));const n=i.subtract(t).length(),o=r.subtract(t).normalized();r=t.add(o.scaled(n));const a=(0,s.ensureNotNull)(this.ownerSource()),l=(0,s.ensureNotNull)(a.firstValue()),c=(0,s.ensureNotNull)(this.priceScale()).coordinateToPrice(r.y,l);e={index:Math.round(this._model.timeScale().coordinateToIndex(r.x)),price:c}}return n.LineDataSource.prototype.addPoint.call(this,e)}}},41668:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(53804).LineToolFibWedgeBase,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r), +i.e(1583).then(i.t.bind(i,82522,19)).then(({FibWedgePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}isSynchronizable(){return!1}levelsCount(){return d.LevelsCount}name(){return"Fib Wedge"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}static createProperties(e){var t=new o("linetoolfibwedge",e,!1,{range:[1,11]});return d._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,90156))).FibWedgeDefinitionsViewModel}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("trendline").child("linewidth")],i=[e.child("trendline").child("color")],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=11,t.LineToolFibWedge=d},53342:(e,t,i)=>{"use strict";i.d(t,{LineToolFlagMark:()=>a});var s=i(86441),r=i(89857),n=i(88564),o=i(37865);class a extends r.LineDataSource{constructor(e,t,r,n){super(e,t||a.createProperties(),r,n),i.e(1583).then(i.bind(i,16089)).then(({FlagMarkPaneView:e})=>{const t=new e(this,this.model());t.setAnchors(new s.Point(0,0)),this._setPaneViews([t])})}pointsCount(){return 1}name(){return"Flag Mark"}static createProperties(e){e&&void 0===e.flagColor&&(e.flagColor="#318757");const t=new n.DefaultProperty("linetoolflagmark",e);return a._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,18661)).then(e=>e.FlagMarkDefinitionsViewModel)}static _configureProperties(e){r.LineDataSource._configureProperties(e),e.addChild("backgroundsColors",new o.LineToolColorsProperty([e.childs().flagColor])),e.addExclusion("backgroundsColors")}}a.version=2},47047:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),this.version=n.version,i.e(1583).then(i.t.bind(i,82830,19)).then(({FlatBottomPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 3}name(){return"Flat Bottom"}hasEditableCoordinates(){return!1}addPoint(e,t){return t&&t.shift()&&2===this.points().length&&this._snapPoint45Degree(e,this.points()[this.points().length-2]),s.prototype.addPoint.call(this,e)}setLastPoint(e,t){return t&&t.shift()&&2===this.points().length&&this._snapPoint45Degree(e,this.points()[this.points().length-2]),s.prototype.setLastPoint.call(this,e)}setPoint(e,t,i){if(i&&i.shift()&&1===e){this._snapPoint45Degree(t,this.points()[0])}if(2===e)this._points[1].index=t.index;else if(3===e)return this._points[0].index=t.index,this._points[2].price=t.price,void this.normalizePoints();super.setPoint(e,t)}getPoint(e){return e<3?s.prototype.getPoint.call(this,e):3===e?{index:this._points[0].index,price:this._points[2].price}:void 0}canHasAlert(){return!0}_getAlertPlots(){var e=this._points[0],t=this._points[1],i=[];e.index<=t.index?(i.push(e), +i.push(t)):(i.push(t),i.push(e));var s=this._points[2];s.time=t.time,s.index=t.index;var r,n,o,a,l={price:s.price,time:e.time,index:e.index},c=[];s.index<=l.index?(c.push(s),c.push(l)):(c.push(l),c.push(s)),i[0].price>c[0].price?(r=i,n=c):c[0].price>i[0].price||c[1].price>i[1].price?(r=c,n=i):(r=i,n=c);var h=this.properties().extendLeft.value(),d=this.properties().extendRight.value();return e.index<=t.index?(o=h,a=d):(o=d,a=h),[this._linePointsToAlertPlot(r,"Upper",o,a),this._linePointsToAlertPlot(n,"Lower",h,a)]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,14145))).GeneralTrendFiguresDefinitionsViewModel}static createProperties(e){var t=new r("linetoolflatbottom",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}n.version=1,t.LineToolFlatBottom=n},50301:(e,t,i)=>{"use strict";i.d(t,{createPropertiesObject:()=>a});var s=i(80643),r=i(34580);function n(e,t,i){var r;for(const n of Object.keys(null!==(r=e.levels)&&void 0!==r?r:{}))if(e.levels[n]&&(0,s.isSameType)(e.levels[n],t.typecheck())){let s=t.tpl();i.names.forEach((i,r)=>{s=t.fill(""+r,i,e.levels[n],s)}),e.levels[n]=s}return e}class o extends r.LevelsProperty{constructor(e,t){super(e,t,!1,{names:["width","color","visible"]},n)}}function a(e,t){return new o(e,t)}},52870:(e,t,i)=>{"use strict";i.d(t,{LineToolGannComplex:()=>d});var s=i(86441),r=i(88537),n=i(51264),o=i(89857),a=i(22423),l=i(50301),c=i(37865),h=i(22799);class d extends o.LineDataSource{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this.version=2,this._scaleRatioFormatter=new n.LimitedPrecisionNumericFormatter(7),this.version=2,i.e(1583).then(i.bind(i,72e3)).then(({GannComplexPaneView:e})=>{this._setPaneViews([new e(this,this.model())])});const o=this.properties();this._adjustScaleRatio(o),o.subscribe(this,this._adjustScaleRatio),o.childs().scaleRatio.subscribe(this,this._correctFirstPoint),this._syncStateExclusions=["scaleRatio"],o.onRestoreFactoryDefaults().subscribe(this,this._handleRestoringFactoryDefaults),this._onTemplateApplying.subscribe(this,this._handleTemplateApplying),this._onTemplateApplied.subscribe(this,this._correctFirstPoint)}migrateVersion(e,t,i){1===e&&(this._points.length>=this.pointsCount()?setTimeout(()=>this._migratePoint()):this._timePoint.length>=this.pointsCount()&&this._pointAdded.subscribe(this,this._migratePoint))}destroy(){const e=this.properties();e.unsubscribe(this,this._adjustScaleRatio),e.childs().scaleRatio.unsubscribe(this,this._correctFirstPoint),e.onRestoreFactoryDefaults().unsubscribe(this,this._handleRestoringFactoryDefaults),this._onTemplateApplying.unsubscribe(this,this._handleTemplateApplying),this._onTemplateApplied.unsubscribe(this,this._correctFirstPoint),super.destroy()}pointsCount(){return 2}name(){return"Gann Square"}addPoint(e,t,i){this._points.length>1&&this._points.pop();const s=super.addPoint(e,t,i),n=this.priceScale();return!(0,r.ensureNotNull)(n).isLog()&&s&&this._correctFirstPoint(),s}setPoint(e,t,i){ +super.setPoint(e,t,i),void 0!==i&&i.shift()?this._correctPoint(e):this._correctScaleRatio()}setLastPoint(e,t){const i=this.priceScale();return(0,r.ensureNotNull)(i).isLog()||(this._points[1]=e,this._correctPoint(1)),super.setLastPoint(e,t)}isReversed(){return this.properties().childs().reverse.value()}levelsCount(){return this.properties().childs().levels.childCount()}levels(){const e=[],t=this.properties().childs(),i=t.levels.childCount();for(let s=0;se.GannComplexAndFixedDefinitionsViewModel)}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.addExclusion("scaleRatio");const t=[],i=[],s=e.childs();{const e=s.levels.childCount();for(let r=0;r0,o=s.index-r.index>0;let a=n&&!o||!n&&o?-1:1;0===e&&(a=-a),s.price=r.price+a*t*i,this._pointChanged.fire(e)}this.normalizePoints()}_correctFirstPoint(){this._correctPoint(this.isReversed()?0:1)}_handleRestoringFactoryDefaults(){this.properties().childs().scaleRatio.setValue(this._getAdjustedScaleRatio())}_handleTemplateApplying(e){""===e.scaleRatio&&(e.scaleRatio=this._getAdjustedScaleRatio())}_migratePoint(){if(this.points().length0){s=s.normalized();let e=Math.acos(s.x);return s.y>0&&(e=-e),e}return null}}},5094:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),i.e(1583).then(i.bind(i,66323)).then(({GannFanPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 2}name(){return"Gann Fan"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,73511))).GannFanDefinitionsViewModel}static createProperties(e){var t=new o("linetoolgannfan",e,!1,{range:[1,9]});return d._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e);for(var t=[],i=[],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)), +e.addChild("linesWidths",new l(t))}}d.LevelsCount=9,t.LineToolGannFan=d},33209:(e,t,i)=>{"use strict";i.d(t,{LineToolGannFixed:()=>l});var s=i(86441),r=i(88537),n=i(89857),o=i(37865),a=i(50301);class l extends n.LineDataSource{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),this._constructor="LineToolGannFixed",i.e(1583).then(i.bind(i,93695)).then(({GannFixedPaneView:e})=>{this._setPaneViews([new e(this,this.model())])}),this.properties().childs().reverse.subscribe(this,this._reversePoints)}pointsCount(){return 2}name(){return"Gann Square Fixed"}axisPoints(){const e=this.points(),t=this.getScreenPoints();return e.length<2||t.length<2?[]:[e[0],(0,r.ensureNotNull)(this.screenPointToPoint(t[1]))]}getScreenPoints(){const e=this.points();if(e.length<2)return[];const t=this._calcAngle();if(null===t)return[];const[i,n]=e,o=(0,r.ensureNotNull)(this.pointToScreenPoint(i)),a=(0,r.ensureNotNull)(this.pointToScreenPoint(n)),l=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),c=new s.Point(Math.cos(t),-Math.sin(t)),h=c.normalized(),d=h.x<0?-1:1,u=h.y<0?-1:1;return[o.addScaled(c,l),o.add(new s.Point(5*l*d,5*l*u))]}levelsCount(){return this.properties().childs().levels.childCount()}levels(){const e=[],t=this.properties().childs(),i=t.levels.childCount();for(let s=0;se.GannComplexAndFixedDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e);const t=[],i=[],s=e.childs();{const e=s.levels.childCount();for(let r=0;r0&&(o=-o),o}_reversePoints(){const[e,t]=this._points;this._points[0]=t,this._points[1]=e,this.normalizePoints(),this.restart()}}},97433:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(34580).LevelsProperty,n=i(37865).LineToolColorsProperty,o=[4.5,9,11.25,18,22.5,36,45],a=function(){for(var e=[],t=o.length-1,i=1,s=0,r=0;r<1e10;)r=o[s]*i,e.push(Math.round(r)),e.push(Math.ceil(-r)),s===t-1&&(i*=10),s=(s+1)%t;return e.sort((function(e,t){return et?1:0})),e}();class l extends s{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),i.e(1583).then(i.t.bind(i,50527,19)).then(({GannSquarePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}hLevelsCount(){return l.HLevelsCount}vLevelsCount(){return l.VLevelsCount}pointsCount(){return 2}name(){return"Gann Box"}_alignPriceOnPattern(e,t){var i=Math.round(1e6*(e.price-t.price))/1e6;if(0===i)return t.price;for(var s=o[0],r=o[o.length-1],n=1,a=Math.abs(i);a=0&&!(o[c]*n=0?l:-l),e}_alignTimeOnPattern(e,t){var i=e.index-t.index;if(0===i)return 0;for(var s=a.length-2;s>=0&&!(a[s]0?1:0,e.index=t.index+a[s],e}_alignPointsFixedIncrement(e,t){return this._alignTimeOnPattern(e,t),this._alignPriceOnPattern(e,t),e}_preparePoint(e,t){return t&&t.shift()&&0!==this._points.length&&this._alignPointsFixedIncrement(e,this._points[0]),super._preparePoint(e,t)}getPoint(e){if(e<2)return super.getPoint(e);var t=null;switch(e){case 2:case 3:var i=this.points();if(i.length===this.pointsCount()){var s=i[0].index,r=i[1].price;3===e&&(s=i[1].index,r=i[0].price),t={index:s,price:r}}}return t}setPoint(e,t,i){if(i&&i.shift()){var s=e%2==0?this._points[1]:this._points[0];this._alignPointsFixedIncrement(t,s)}switch(e){case 2:this._points[0].index=t.index,this._points[1].price=t.price;break;case 3:this._points[1].index=t.index,this._points[0].price=t.price;break;default:super.setPoint(e,t,i)}}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,58026))).GannSquareDefinitionsViewModel}static createProperties(e){var t=new r("linetoolgannsquare",e,!1,{range:[1,7],prefixes:["h","v"],names:["coeff","color","visible"]});return l._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e);for(var t=[e.child("color"),e.child("fans").child("color")],i=1;i<=l.HLevelsCount;i++)t.push(e.child("hlevel"+i).child("color"));for(i=1;i<=l.VLevelsCount;i++)t.push(e.child("vlevel"+i).child("color"));e.addChild("linesColors",new n(t)),e.addExclusion("linesColors")}}l.HLevelsCount=7,l.VLevelsCount=7, +t.LineToolGannSquare=l},82241:(e,t,i)=>{"use strict";i.d(t,{LineToolGhostFeed:()=>c});var s=i(88564),r=i(89857),n=i(88537),o=i(80643);class a{constructor(e,t,i){this._source=e,this._segmentIndex=t,this._bars=null!=i?i:[]}setBars(e){this._bars=e}clone(e){return new a(e,this._segmentIndex,(0,o.clone)(this._bars))}generate(){this._bars=[];const e=this._source.points(),t=e[this._segmentIndex],i=e[this._segmentIndex+1];if(!t||!i||t.index===i.index)return;const s=this._segmentIndex?t.index+1:t.index,r=Math.sign(i.index-t.index);for(let e=s;e!==i.index;e+=r)this._bars.push(this._createBar())}bars(){return this._bars}setSize(e){if(e{this._setPaneViews([new t.GhostFeedPaneView(this,e)])})}isSynchronizable(){return!1}destroy(){this.properties().onRestoreFactoryDefaults().unsubscribe(this,this._handleRestoringFactoryDefaults),super.destroy()}propertiesChanged(){super.propertiesChanged(),this._currentAverageHL===this.properties().childs().averageHL.value()&&this._currentVariance===this.properties().childs().variance.value()||this._regenerate()}pointsCount(){return-1}name(){return"Ghost Feed"}segmentBars(e){return this._segments[e].bars()}segments(){return this._segments}generateBars(e){this._segments.length<=e&&this._segments.push(new a(this,e)),this._segments[e].generate()}addPoint(e,t,i){if(this._finished)return!0;if(this._points.length>0){const i=this._points[this._points.length-1];if(!(null==t?void 0:t.isApiEvent())&&i.index===e.index){this._lastPoint=null,this.normalizePoints(),this.createServerPoints();for(let e=0;e1&&this.generateBars(this._points.length-2),s}finish(){this._finished=!0,this._lastPoint=null,this.normalizePoints(),this.createServerPoints()}setPoint(e,t,i,s){if(super.setPoint(e,t,i),e>0){const i=this.points()[e-1],s=t.index-i.index +;this._segments[e-1].setSize(Math.abs(s))}if(e({bars:[...e.bars()]})),t}restoreData(e){e.segments&&(this._segments=e.segments.map((e,t)=>new a(this,t,e.bars))),this._currentAverageHL=this.properties().childs().averageHL.value(),this._currentVariance=this.properties().childs().variance.value()}onData(e){super.onData(e);if(!this.pointsProperty().childs().points.child("0"))for(let e=0;ee.clone(this))}startMoving(e,t,i,s){super.startMoving(e,t,i,s),this._preparePixelSegments()}move(e,t,i,s){super.move(e,t,i,s),this._restoreSegmentsFromPixels()}endMoving(e,t){return this._segmentsPixelsWhileMoving=null,super.endMoving(e,t)}static createProperties(e){const t=new s.DefaultProperty("linetoolghostfeed",e);return c._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,65818))).GhostFeedDefinitionsViewModel}_handleRestoringFactoryDefaults(){const e=Math.round(this._calculateATR());this.properties().childs().averageHL.setValue(e)}_regenerate(){this._currentAverageHL=this.properties().childs().averageHL.value(),this._currentVariance=this.properties().childs().variance.value(),this._segments.forEach(e=>e.generate()),this.updateAllViews((0,l.dataSourceChangeEvent)(this.id())),this._model.updateSource(this)}_calculateATR(){const e=this._model.mainSeries(),t=[];e.bars().each((e,i)=>{const s=i[2],r=i[3];return null!=s&&null!=r&&t.push(s-r),!1});let i=0===t.length?0:t.reduce((e,t)=>e+t,0)/t.length;return i*=e.base(),i}_preparePixelSegments(){var e,t;const i=this.priceScale(),s=null!==(t=null===(e=this.ownerSource())||void 0===e?void 0:e.firstValue())&&void 0!==t?t:null;if(null===i||null===s||i.isEmpty()||!i.isLog())return;const r=this.points();this._segmentsPixelsWhileMoving=this._segments.map((e,t)=>{const n=r[t].price,o=r[t+1].price,a=i.priceToCoordinate(n,s),l=(i.priceToCoordinate(o,s)-a)/(e.bars().length-1);return{bars:e.bars().map((e,t)=>{const r=a+t*l,n=i.coordinateToPrice(r,s);return{open:i.priceToCoordinate(n+e.o,s)-r,high:i.priceToCoordinate(n+e.h,s)-r,low:i.priceToCoordinate(n+e.l,s)-r,close:i.priceToCoordinate(n+e.c,s)-r}})}})}_restoreSegmentsFromPixels(){var e,t;const i=this.priceScale(),s=null!==(t=null===(e=this.ownerSource())||void 0===e?void 0:e.firstValue())&&void 0!==t?t:null;if(null===i||null===s||null===this._segmentsPixelsWhileMoving)return;const r=this.points();this._segmentsPixelsWhileMoving.forEach((e,t)=>{const n=this._segments[t],o=r[t].price,a=r[t+1].price,l=i.priceToCoordinate(o,s),c=(i.priceToCoordinate(a,s)-l)/(e.bars.length-1),h=n.bars().map((t,r)=>{ +const n=e.bars[r],o=l+r*c,a=i.coordinateToPrice(o,s);return{...t,o:i.coordinateToPrice(n.open+o,s)-a,h:i.coordinateToPrice(n.high+o,s)-a,l:i.coordinateToPrice(n.low+o,s)-a,c:i.coordinateToPrice(n.close+o,s)-a}});n.setBars(h)})}}},90378:(e,t,i)=>{"use strict";i.d(t,{LineToolHeadAndShoulders:()=>o});var s=i(88564),r=i(89857),n=i(37865);class o extends r.LineDataSource{constructor(e,t,s,r){const n=t||o.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,75545)).then(t=>{this._setPaneViews([new t.LineToolHeadAndShouldersPaneView(this,e)])})}pointsCount(){return 7}name(){return"Head and Shoulders"}static createProperties(e){const t=new s.DefaultProperty("linetoolheadandshoulders",e);return o._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,93262)).then(e=>e.PatternWithBackgroundDefinitionViewModel)}static _configureProperties(e){r.LineDataSource._configureProperties(e),e.addChild("linesColors",new n.LineToolColorsProperty([e.childs().color])),e.addChild("textsColors",new n.LineToolColorsProperty([e.childs().textcolor]))}}},65649:(e,t,i)=>{"use strict";i.d(t,{LineToolHighlighter:()=>n});var s=i(88564),r=i(27258);class n extends r.LineToolBrushBase{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s),this._loadPaneViews(e)}smooth(){return this.properties().childs().smooth.value()}name(){return"Highlighter"}static createProperties(e){const t=new s.DefaultProperty("linetoolhighlighter",e);return n._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,19461)).then(e=>e.HighlighterDefinitionsViewModel)}_loadPaneViews(e){i.e(1583).then(i.bind(i,94672)).then(t=>{this._setPaneViews([new t.HighlighterPaneView(this,e)])})}static _configureProperties(e){r.LineToolBrushBase._configureProperties(e)}}},10198:(e,t,i)=>{"use strict";i.d(t,{LineToolHorzLinePriceAxisView:()=>r});var s=i(97938);class r extends s.PriceAxisView{constructor(e){super(),this._source=e}_updateRendererData(e,t,i){e.visible=!1;const s=this._source.points(),r=this._source.priceScale();if(0===s.length||null===r||r.isEmpty())return;const n=s[0];if(!isFinite(n.price))return;const o=this._source.ownerSource(),a=null!==o?o.firstValue():null;if(null===a)return;const l=this._source.properties().linecolor.value();i.background=l,i.textColor=this.generateTextColor(l),i.coordinate=r.priceToCoordinate(n.price,a),e.text=r.formatPrice(n.price,a),e.visible=!0}}},8877:(e,t,i)=>{"use strict";i.d(t,{LineToolHorzLine:()=>l});var s=i(2015),r=i.n(s),n=i(88564),o=i(89857),a=i(10198);class l extends o.LineDataSource{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),this._priceAxisView=new a.LineToolHorzLinePriceAxisView(this),i.e(1583).then(i.bind(i,8196)).then(({HorzLinePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}state(e){const t=super.state(e);return t.points&&0!==t.points.length&&(t.points[0].offset=0),t}pointsCount(){return 1}name(){return"Horizontal Line"}priceAxisViews(e,t){ +return this.isSourceHidden()||t!==this.priceScale()||!this._model.selection().isSelected(this)&&!this.properties().childs().showPrice.value()||e!==this._model.paneForSource(this)?null:[this._priceAxisView]}timeAxisViews(){return null}timeAxisPoints(){return[]}updateAllViews(e){super.updateAllViews(e),this._priceAxisView.update(e)}canHasAlert(){return!0}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}denormalizeTimePoints(){this._points=[],this._timePoint.length>0&&this._points.push({price:this._timePoint[0].price,index:0})}clearData(){const e=this._points;super.clearData(),this._points=e}static createProperties(e){const t=new n.DefaultProperty("linetoolhorzline",e);return l._configureProperties(t),t}_getAlertPlots(){return[this.points()[0].price]}_pointsForPointset(){return[]}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,81204)).then(e=>e.HorizontalLineDefinitionsViewModel)}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text||"")}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(r())("")),e.addExclusion("text")}}},10471:(e,t,i)=>{"use strict";i.d(t,{LineToolHorzRay:()=>l});var s=i(88564),r=i(2015),n=i.n(r),o=i(10198),a=i(89857);class l extends a.LineDataSource{constructor(e,t,s,r){super(e,null!=t?t:l.createProperties(),s,r),this._priceAxisView=new o.LineToolHorzLinePriceAxisView(this),i.e(1583).then(i.bind(i,95325)).then(({HorzRayPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 1}name(){return"Horizontal Ray"}priceAxisViews(e,t){return this.isSourceHidden()||t!==this.priceScale()||!this._model.selection().isSelected(this)&&!this.properties().childs().showPrice.value()||e!==this._model.paneForSource(this)?null:[this._priceAxisView]}updateAllViews(e){super.updateAllViews(e),this._priceAxisView.update(e)}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}canHasAlert(){return!0}static createProperties(e){const t=new s.DefaultProperty("linetoolhorzray",e);return l._configureProperties(t),t}_getAlertPlots(){const e=this._points[0],t={index:e.index+1,price:e.price};return[this._linePointsToAlertPlot([e,t],null,!1,!0)]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,58148))).HorizontalRayDefinitionsViewModel}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text||"")}static _configureProperties(e){a.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(n())("")),e.addExclusion("text")}}},74468:(e,t,i)=>{"use strict";i.d(t,{LineToolIcon:()=>l});var s=i(88537),r=i(86441),n=i(88564),o=i(89857),a=i(37865);class l extends o.LineDataSource{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),this.version=1, +document.fonts&&document.fonts.check&&document.fonts.load&&!document.fonts.check("12px FontAwesome")&&document.fonts.load("12px FontAwesome","☺").then(()=>{this._isDestroyed||e.updateSource(this)}),i.e(1583).then(i.bind(i,78583)).then(t=>{this._setPaneViews([new t.IconPaneView(this,e)])})}pointsCount(){return 1}name(){return"Icon"}hasEditableCoordinates(){return!1}getAnchorLimit(){return 80}applyTemplate(e){delete e.icon,super.applyTemplate(e)}getChangePointForSync(e){return null}setPoint(e,t,i){const n=Object.assign({},t),o=(0,s.ensureNotNull)(this.pointToScreenPoint(this.points()[0])),a=(0,s.ensureNotNull)(this.pointToScreenPoint(n)).subtract(o),l=this.properties().childs();if(0===e||1===e){const t=a.normalized();let i=Math.acos(-t.x);Math.asin(t.y)>0&&(i=2*Math.PI-i),0===e&&(i+=Math.PI),l.angle.setValue(i)}else{const t=a.add(new r.Point(15*(3===e?-1:1),0));l.size.setValue(2*Math.abs(t.x))}}getSourceIcon(){return{type:"text",text:String.fromCharCode(this.properties().childs().icon.value())}}static createProperties(e){const t=new n.DefaultProperty("linetoolicon",e);return l._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,80449)).then(e=>e.IconsDefinitionsViewModel)}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.addChild("backgroundsColors",new a.LineToolColorsProperty([e.childs().color])),e.addExclusion("angle")}}},51139:(e,t,i)=>{"use strict";i.d(t,{LineToolInfoLine:()=>n});var s=i(88564),r=i(57649);class n extends r.LineToolTrendLine{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}pointsCount(){return 2}name(){return"Info Line"}static createProperties(e){const t=new s.DefaultProperty("linetoolinfoline",e);return n._configureProperties(t),t}static _configureProperties(e){r.LineToolTrendLine._configureProperties(e)}}},87639:(e,t,i)=>{"use strict";var s=i(34580).LevelsProperty,r=i(40100).LineToolPitchfork;class n extends r{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Inside Pitchfork"}static createProperties(e){var t=new s("linetoolinsidepitchfork",e,!1,{range:[0,8]});return n._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e)}}t.LineToolInsidePitchfork=n},44601:(e,t,i)=>{"use strict";var s;i.r(t),i.d(t,{isMtpPredictorToolName:()=>o,isStudyLineToolName:()=>a,isLineToolName:()=>l,isLineDrawnWithPressedButton:()=>c,isLineToolFinishRequiredWhenCreatedByApi:()=>h,isLineToolDrawWithoutPoints:()=>d,isImageToolName:()=>u,isTextToolName:()=>p});var r=i(72708);const n=new Set([]);function o(e){return n.has(e)}function a(e){return"LineToolRegressionTrend"===e||"LineToolVbPFixed"===e||"LineToolFixedRangeVolumeProfile"===e}function l(e){return e in(s||(s=i.t(r,2)))||a(e)}function c(e){return"LineToolBrush"===e||"LineToolHighlighter"===e}function h(e){return c(e)||"LineToolPath"===e||"LineToolPolyline"===e||"LineToolGhostFeed"===e}function d(e){return"LineToolTweet"===e||"LineToolIdea"===e||"LineToolImage"===e}function u(e){return"LineToolImage"===e} +function p(e){switch(e){case"LineToolBalloon":case"LineToolText":case"LineToolTextAbsolute":case"LineToolCallout":case"LineToolNote":case"LineToolNoteAbsolute":case"LineToolSignpost":return!0}return!1}},50144:(e,t,i)=>{"use strict";i.d(t,{LineDataSourceBase:()=>B});var s=i(86441),r=i(88537),n=i(76422),o=i(98125),a=i(62443),l=i(85733),c=i(2872),h=i.n(c),d=i(2015),u=i.n(d),p=i(37865),_=i(22474),m=i(19528);class g extends(u()){constructor(e,t){super(),this._lineSource=e,this._pointIndex=t,e.pointAdded().subscribe(this,e=>{this._pointIndex===e&&this._listeners.fire(this)}),e.pointChanged().subscribe(this,e=>{this._pointIndex===e&&this._listeners.fire(this)})}value(){const e=this._lineSource.points()[this._pointIndex].price,t=(0,r.ensureNotNull)(this._lineSource.ownerSource()).formatter();if(t.parse){const i=t.format(e),s=t.parse(i);return s.res?s.value:e}return e}setValue(e){const t=this._lineSource.points()[this._pointIndex];t.price=parseFloat(""+e),this._lineSource.startChanging(this._pointIndex,t),this._lineSource.setPoint(this._pointIndex,t),this._lineSource.model().updateSource(this._lineSource),this._listeners.fire(this);const i=this._lineSource.endChanging(!0,!1);this._lineSource.syncMultichartState(i)}}var f=i(38015),v=i(29823),S=i(98619),y=i(14791),b=i(37667),w=i(52714),C=i.n(w),P=i(23653),T=i(9315),x=i(36759),I=i(52418),M=i(20838),L=i(80643),A=i(33291),E=i(79680);const k=(0,o.getLogger)("Chart.LineDataSource");class D{constructor(){this._states=[]}start(e){this._states.push(e)}finish(e){const t=(0,r.ensureDefined)(this._states.pop());return s=t,(i=e).length!==s.length?{indexesChanged:!0,pricesChanged:!0}:i.reduce((e,t,i)=>{const r=s[i];return e.indexesChanged=e.indexesChanged||t.index!==r.index,e.pricesChanged=e.pricesChanged||t.price!==r.price,e},{indexesChanged:!1,pricesChanged:!1});var i,s}isEmpty(){return 0===this._states.length}}let V=0;class B extends a.DataSource{constructor(e,t,i,s){if(super(s),this.version=1,this.customization={forcePriceAxisLabel:!1,disableErasing:!1,disableSave:!1,showInObjectsTree:!0},this._currentPointsetAndSymbolId=null,this._pointChanged=new(h()),this._pointAdded=new(h()),this._alertUndoMode=!1,this._priceAxisViews=[],this._timeAxisViews=[],this._timePoint=[],this._points=[],this._lastPoint=null,this._paneViews=new Map,this._normalizedPointsChanged=new(h()),this._fixedPointsChanged=new(h()),this._changeStatesStack=new D,this._startMovingPoint=null,this._currentMovingPoint=null,this._fixedPoints=[],this._isActualSymbol=!1,this._isActualInterval=!1,this._isActualCurrency=!1,this._isActualUnit=!1,this._isDestroyed=!1,this._sharingMode=new(C())(0),this._onTemplateApplying=new(h()),this._onTemplateApplied=new(h()),this._syncStateExclusions=[],this._definitionsViewModel=null,this._syncLineStyleMuted=!1,this._onIsActualIntervalChange=new(h()),this._linkKey=new(C())(null),this._serverUpdateTime=null,this._boundCalcIsActualSymbol=this.calcIsActualSymbol.bind(this),this._model=e,this._properties=t,this._localAndServerAlertsMismatch=!1, +this._properties.hasChild("interval")||this._properties.addChild("interval",new(u())(e.mainSeries().interval())),this.calcIsActualSymbol(),this._properties.childs().intervalsVisibilities.listeners().subscribe(this,this.calcIsActualSymbol),this._properties.subscribe(this,()=>this.propertiesChanged()),this._createPointsProperties(),this.pointsCount()>0)for(let e=0;e{const t=!1===(0,l.hideAllDrawings)().value();e.value()?e.value()&&t&&n.emit("drawing_event",this._id,"show"):(this._model.selection().isSelected(this)&&this._model.selectionMacro(e=>{e.removeSourceFromSelection(this)}),t&&n.emit("drawing_event",this._id,"hide")),this._onSourceHiddenMayChange()}),(0,l.hideAllDrawings)().subscribe(this,this._onSourceHiddenMayChange),this._definitionsViewModel=null,this._isDestroyed=!1}destroy(){this._paneViews.forEach((e,t)=>this._destroyPanePaneViews(t)),this.stop(),null!==this._definitionsViewModel&&(this._definitionsViewModel.destroy(),this._definitionsViewModel=null),null!==this._ownerSource&&(this._ownerSource.currencyChanged().unsubscribeAll(this),this._ownerSource.unitChanged().unsubscribeAll(this),(0,E.isSymbolSource)(this._ownerSource)&&(this._ownerSource.symbolResolved().subscribe(this,this._boundCalcIsActualSymbol),this._ownerSource.isActingAsSymbolSource().unsubscribe(this._boundCalcIsActualSymbol))),this.ownerSourceChanged().unsubscribeAll(this),(0,l.hideAllDrawings)().unsubscribeAll(this),this.deleteAlert(),this._isDestroyed=!0}createPriceAxisView(e){return new _.LineToolPriceAxisView(this,{pointIndex:e})}model(){return this._model}linkKey(){return this._linkKey}serverUpdateTime(){return this._serverUpdateTime}setServerUpdateTime(e){this._serverUpdateTime=e}boundToSymbol(){return!0}points(){const e=[];for(let t=0;t0&&(this._points=e)}restorePoints(e,t,i){const s=this._timePoint.length>0&&!(0,L.deepEquals)(this._timePoint,e)[0];this._timePoint=(0,S.deepCopy)(e),this._points=t,i||this.denormalizeTimePoints(),s&&this._normalizedPointsChanged.fire()}restorePositionPercents(e){this._positionPercents=e}calcIsActualSymbol(){if(this._model.mainSeries().hasDelayedSymbolIntervalChange())return;const e=this.ownerSource();if(null===e)this._isActualSymbol=!1;else{const t=(0,r.ensureNotNull)(e.symbolSource());this._migrateSymbolProperty();const i=this._properties.childs().symbol,s=i.value();if(this._isActualSymbol=t.symbolSameAsCurrent(s),this._isActualSymbol){const e=t.symbol();(0,y.areEqualSymbols)(s,e)||(k.logWarn('Possible drawing "migrating" detected from "'+s+'" to "'+e+'"'),k.logWarn("Series symbolInfo: "+JSON.stringify(t.symbolInfo())),k.logWarn(""+(new Error).stack)),i.setValue(e)}}this.calcIsActualInterval(),this.calcIsActualCurrency(),this.calcIsActualUnit(),this._onSourceHiddenMayChange()}calcIsActualCurrency(){const e=this.ownerSource();if(null===e)return void(this._isActualCurrency=!1);let t=this._properties.childs().currencyId.value();if(null!==t){const i=e.symbolSource();if(null===i)return;0,this._isActualCurrency=t===(0,b.symbolCurrency)(i.symbolInfo(),void 0,!0)}else{const t=(0,r.ensureNotNull)(e.symbolSource()).symbolInfo();this._isActualCurrency=null!==t&&(0,b.symbolCurrency)(t)===(0,b.symbolOriginalCurrency)(t)}this._onSourceHiddenMayChange()}calcIsActualUnit(){const e=this.ownerSource();if(null===e)return void(this._isActualUnit=!1);const t=this._properties.childs().unitId.value();if(null!==t)this._isActualUnit=t===(0,r.ensureNotNull)(e.symbolSource()).unit();else{const t=(0,r.ensureNotNull)(e.symbolSource()).symbolInfo(),i=this._model.unitConversionEnabled();this._isActualUnit=null!==t&&(0,b.symbolUnit)(t,i)===(0,b.symbolOriginalUnit)(t,i)}this._onSourceHiddenMayChange()}calcIsActualInterval(){const e=this._isActualInterval,t=this._properties,i=this._model.mainSeries();this._isActualInterval=(0,x.isActualInterval)(v.Interval.parse(i.interval()),t.childs().intervalsVisibilities),!this._isActualInterval&&this._model.selection().isSelected(this)&&this._model.selectionMacro(e=>e.removeSourceFromSelection(this)),this._isActualInterval!==e&&this._onIsActualIntervalChange.fire(),this._onSourceHiddenMayChange()}paneViews(e){if(this.isSourceHidden())return null;const t=this._getPaneViews(this.isMultiPaneAvailable()?e:void 0);if(null===t)return null;if(1===t.length)return[t[0]];const i=[];for(let e=t.length-1;e>=0;--e)i.push(t[e]);return i}isSavedInChart(){return!this.customization.disableSave}setSavingInChartEnabled(e){this.customization.disableSave=!e}detachAlert(){const e=this.getAlertSync() +;if(e&&this._alertCallbacks){const t=this._alertCallbacks;e.off("destroy",t.remove),e.off("change:hovered",t.hovered),e.off("change:selected",t.selected)}this.hasAlert.setValue(!1),this._alertId=void 0}removeAlert(){this._alertId=void 0,this.hasAlert.setValue(!1)}deleteAlert(){0}areLocalAndServerAlertsMismatch(){return this._localAndServerAlertsMismatch}showInObjectTree(){return this.customization.showInObjectsTree}setShowInObjectsTreeEnabled(e){this.customization.showInObjectsTree=e}start(){this.createServerPoints()}processHibernate(){this.isSourceHidden()?this.isStarted()&&this.stop():this.isStarted()||this.start()}onData(e){"pointset_error"!==e.method?e.params.customId===this._currentPointsetIdWithPrefix()&&this._onPointsetUpdated(e.params.plots):k.logError(`Error getting pointset: ${e.params[0]} ${e.params[1]}`)}isActualSymbol(){return this._isActualSymbol}isActualCurrency(){return this._isActualCurrency}isActualInterval(){return this._isActualInterval}isActualUnit(){return this._isActualUnit}onIsActualIntervalChange(){return this._onIsActualIntervalChange}setOwnerSource(e){null!==this._ownerSource&&(this._ownerSource.currencyChanged().unsubscribeAll(this),this._ownerSource.unitChanged().unsubscribeAll(this)),null!==this._ownerSource&&(0,E.isSymbolSource)(this._ownerSource)&&(this._ownerSource.symbolResolved().unsubscribe(this,this._boundCalcIsActualSymbol),this._ownerSource.isActingAsSymbolSource().unsubscribe(this._boundCalcIsActualSymbol)),super.setOwnerSource(e),e&&(this.setPriceScale(e.priceScale()),e.currencyChanged().subscribe(this,this.calcIsActualCurrency),e.unitChanged().subscribe(this,this.calcIsActualUnit),this.calcIsActualSymbol(),this._migrateZOrder()),(0,E.isSymbolSource)(e)&&(e.symbolResolved().subscribe(this,this._boundCalcIsActualSymbol),e.isActingAsSymbolSource().subscribe(this._boundCalcIsActualSymbol))}dataAndViewsReady(){return this._paneViews.size>0}pointAdded(){return this._pointAdded}pointChanged(){return this._pointChanged}pointToScreenPoint(e){var t;const i=this._model.timeScale(),r=this.priceScale(),n=null===(t=this.ownerSource())||void 0===t?void 0:t.firstValue();if(!r||r.isEmpty()||i.isEmpty()||null==n)return null;const o=i.indexToCoordinate(e.index),a=r.priceToCoordinate(e.price,n);return new s.Point(o,a)}screenPointToPoint(e){var t;const i=this.priceScale(),s=null===(t=this.ownerSource())||void 0===t?void 0:t.firstValue();if(null==s||!isFinite(s)||null===i)return null;const r=this._model.timeScale().coordinateToIndex(e.x);return{price:i.coordinateToPrice(e.y,s),index:r}}addPoint(e,t,i){const s=this._preparePoint(e,t);return this._addPointIntenal(s,t,i)}propertiesChanged(e){this.calcIsActualInterval(),this.updateAllViewsAndRedraw((0,A.dataSourceChangeEvent)(this.id())),e||this._syncLineStyleIfNeeded(),void 0===this._pendingPropertyChangedEvent&&(this._pendingPropertyChangedEvent=setTimeout(()=>{this._pendingPropertyChangedEvent=void 0,n.emit("drawing_event",this._id,"properties_changed")},0))}state(e){var t,i;const s={type:this.toolname,id:this.id(), +state:this.properties().state(null!==(t=this._propertiesStateExclusions())&&void 0!==t?t:void 0),points:(0,S.deepCopy)(this._timePoint),zorder:this.zorder(),ownerSource:null===(i=this.ownerSource())||void 0===i?void 0:i.id()};return this.linkKey().value()&&(s.linkKey=this.linkKey().value()),delete s.state.points,e&&(s.indexes=this._points),this.isFixed()&&(s.positionPercents=this._positionPercents||this.calcPositionPercents()),"version"in this&&1!==this.version&&(s.version=this.version),this._saveAlertIdInState()&&this.hasAlert.value()&&void 0!==this._alertId&&(s.alertId=this._alertId.toString()),s}updateAllViews(e){this._isActualSymbol&&this._isActualCurrency&&this._isActualUnit&&this._isActualInterval&&this._properties.childs().visible.value()&&(this._updateAllPaneViews(e),this._priceAxisViews.forEach(t=>t.update(e)),this._timeAxisViews.forEach(t=>t.update(e)))}updateAllViewsAndRedraw(e){this.updateAllViews(e),this._model.updateSource(this)}properties(){return this._properties}restoreExternalPoints(e,t){if(this._timePoint=(0,S.deepCopy)(e.points),t.indexesChanged){if(this.properties().childs().interval.setValue(e.interval),!this.isActualSymbol())return this._clearServerPoints(),void this._normalizedPointsChanged.fire();this.createServerPoints()}else{const t=Math.min(this._points.length,e.points.length);for(let i=0;i0&&this.normalizePoints(),!this._readyToCreatePointset())return;const e=this._pointsForPointset();if(0===e.length)return;++V,this._currentPointsetAndSymbolId={pointsetId:V,symbolId:(0,r.ensureNotNull)(this._model.mainSeries().seriesSource().symbolInstanceId())};const t=(0,T.getServerInterval)(this.properties().childs().interval.value());this._model.chartApi().createPointset(this._currentPointsetIdWithPrefix(),"turnaround",this._currentPointsetAndSymbolId.symbolId,t,e,this.onData.bind(this))} +finish(){}realign(){var e;this.calcIsActualSymbol(),this.isFixed()||this.isSourceHidden()||this._model.lineBeingCreated()===this||this._model.lineBeingEdited()===this||(null===(e=this._currentPointsetAndSymbolId)||void 0===e?void 0:e.symbolId)===this._model.mainSeries().seriesSource().symbolInstanceId()||this._clearServerPoints(),this.updateAllViews((0,A.dataSourceChangeEvent)(this.id()))}stop(){this._clearServerPoints()}restart(){this.isFixed()||(this._currentPointsetAndSymbolId=null,this.createServerPoints())}isStarted(){return null!==this._currentPointsetAndSymbolId}convertYCoordinateToPriceForMoving(e,t){var i;const s=(0,r.ensureNotNull)(this.priceScale());if(s.isEmpty())return null;const n=this.ownerSource(),o=(0,r.ensure)(null===(i=n||t)||void 0===i?void 0:i.firstValue());return s.coordinateToPrice(e,o)}syncMultichartState(e){const t={points:this._timePoint,interval:this._model.mainSeries().interval()},i=this.linkKey().value();if(null!==i&&this.isSynchronizable()){const s={model:this._model,linkKey:i,symbol:this._model.mainSeries().symbol(),finalState:t,changes:e};(0,l.finishChangingLineTool)(s)}}enableCurrentIntervalVisibility(){const e=this.properties().childs().intervalsVisibilities.state();void 0!==e&&((0,x.makeIntervalsVisibilitiesVisibleAtInterval)(e,v.Interval.parse(this._model.mainSeries().interval())),this.properties().childs().intervalsVisibilities.mergeAndFire(e))}clonePositionOffset(){return this.isFixed()?{barOffset:0,xCoordOffset:20,yCoordOffset:20}:{barOffset:0,xCoordOffset:0,yCoordOffset:-40}}sharingMode(){return this._sharingMode}share(e){this.isSynchronizable()&&this._sharingMode.setValue(e)}syncLineStyleState(){const e=this.properties().state(this._syncStateExclusions);return delete e.interval,e.intervalsVisibilities=(0,x.mergeIntervalVisibilitiesDefaults)(e.intervalsVisibilities),e}_correctLastPoint(e){return(0,L.clone)(e)}_pointsForPointset(){return this._timePoint.map(e=>[e.time_t,e.offset])}_snapPoint45Degree(e,t,i){const s=this._model.timeScale(),n=s.indexToCoordinate(t.index),o=s.indexToCoordinate(e.index)-n,a=(0,r.ensureNotNull)(this.priceScale()),l=t.price,c=e.price,h=(0,r.ensureNotNull)((0,r.ensureNotNull)(this.ownerSource()).firstValue()),d=a.priceToCoordinate(l,h),u=a.priceToCoordinate(c,h)-d,p=Math.round(Math.atan2(o,u)/Math.PI*4);if(2===Math.abs(p))i||(e.price=l);else if(0===Math.abs(p)||4===Math.abs(p))i||(e.index=t.index);else{const t=Math.sqrt(o*o+u*u),i=o<0?-1:1,r=u<0?-1:1;let l=Math.max(Math.abs(u),Math.abs(o));l/=l*Math.sqrt(2)/t;const c=Math.round(s.coordinateToIndex(n+l*i)),p=Math.abs(s.indexToCoordinate(c)-n),_=a.coordinateToPrice(d+p*r,h);e.index=c,e.price=_}}normalizePoint(e){return{...this._model.timeScale().normalizeBarIndex(e.index),price:e.price}}normalizePoints(){this._timePoint=[];for(let e=0;ethis._destroyPanePaneViews(t)),this._model.lightUpdate()}_getPaneViews(e){return this._paneViews.get(e)||null}_updateAllPaneViews(e){this._paneViews.forEach(t=>{for(const i of t)i.update(e)})}_alignPointHorizontallyOrVertically(e){const t=(0,r.ensureNotNull)(this.pointToScreenPoint(e)),i=(0,r.ensureDefined)((0,r.ensureNotNull)(this._startMovingPoint).logical),s=(0,r.ensureDefined)((0,r.ensureNotNull)(this._startMovingPoint).screen),n=Math.abs(s.x-t.x),o=Math.abs(s.y-t.y);if(n<10&&o<10)return e;return{index:n=1){for(let t=0;t=2&&this._snapTo45DegreesAvailable()&&this._snapPoint45Degree(i,this.points()[this.points().length-2]),i}_addPointIntenal(e,t,i){this._points.push(e);const s=this._points.length===this.pointsCount();return s?(this._lastPoint=null,i||(this.normalizePoints(),this.createServerPoints())):this._lastPoint=e,this._pointAdded.fire(this._points.length-1),s}_onSourceHiddenMayChange(){this._model.invalidate(P.InvalidationMask.validateAction(()=>{this!==this._model.lineBeingCreated()&&(this._isDestroyed||this.processHibernate())}))}_saveAlertIdInState(){return!0}_onPointsetUpdated(e){if(0===e.length)return;for(let t=0;t0}_onAlertData(e){}_propertiesStateExclusions(){return null}_syncLineStyleIfNeeded(){const e=this.linkKey().value();!this._syncLineStyleMuted&&e&&(0,l.changeLineStyle)({linkKey:e,state:this.syncLineStyleState(),model:this._model})}_muteSyncLineStyle(){this._syncLineStyleMuted=!0}_unmuteSyncLineStyleWithoutApplyingChanges(){this.propertiesChanged(),this._syncLineStyleMuted=!1}_applyTemplateImpl(e){e.intervalsVisibilities=(0,x.mergeIntervalVisibilitiesDefaults)(e.intervalsVisibilities);const t=this.properties();t.mergePreferences(e),t.saveDefaults(),this.propertiesChanged()}_getPropertyDefinitionsViewModelClass(){return Promise.resolve(null)}static _configureProperties(e){if(B._addCollectedProperties(e),e.hasChild("symbolStateVersion")||e.addChild("symbolStateVersion",new(u())(B._initialSymbolStateVersion())),e.hasChild("zOrderVersion")||e.addChild("zOrderVersion",new(u())(B._initialZOrderVersion())),e.hasChild("visible")||e.addChild("visible",new(u())(!0)),e.hasChild("frozen")||e.addChild("frozen",new(u())(!1)),e.hasChild("symbol")||e.addChild("symbol",new(u())("")),e.hasChild("currencyId")||e.addChild("currencyId",new(u())(null)),e.hasChild("unitId")||e.addChild("unitId",new(u())(null)),e.addExclusion("symbolStateVersion"),e.addExclusion("zOrderVersion"),e.addExclusion("visible"),e.addExclusion("frozen"),e.addExclusion("symbol"),e.addExclusion("currencyId"),e.addExclusion("unitId"),e.hasChild("intervalsVisibilities")){const t=(0,L.merge)((0,L.clone)(I.intervalsVisibilitiesDefaults),e.childs().intervalsVisibilities.state()) +;e.removeProperty("intervalsVisibilities"),e.addChild("intervalsVisibilities",new M.IntervalsVisibilitiesProperty(t))}else e.addChild("intervalsVisibilities",new M.IntervalsVisibilitiesProperty(I.intervalsVisibilitiesDefaults));e.hasChild("title")||e.addChild("title",new(u())("")),e.addExclusion("symbolInfo"),e.addExclusion("points"),e.addExclusion("interval"),e.addExclusion("title"),e.hasChild("singleChartOnly")&&e.removeProperty("singleChartOnly"),e.hasChild("font")&&e.removeProperty("font")}static _addCollectedProperties(e){e.hasChild("linewidth")&&e.addChild("linesWidths",new p.LineToolWidthsProperty([(0,r.ensureDefined)(e.child("linewidth"))])),e.hasChild("linecolor")&&e.addChild("linesColors",new p.LineToolColorsProperty([(0,r.ensureDefined)(e.child("linecolor"))])),e.hasChild("backgroundColor")&&e.addChild("backgroundsColors",new p.LineToolColorsProperty([(0,r.ensureDefined)(e.child("backgroundColor"))])),e.hasChild("textColor")&&e.addChild("textsColors",new p.LineToolColorsProperty([(0,r.ensureDefined)(e.child("textColor"))])),e.addExclusion("linesWidths"),e.addExclusion("linesColors"),e.addExclusion("backgroundsColors"),e.addExclusion("textsColors")}static _initialSymbolStateVersion(){return 1}static _initialZOrderVersion(){return 1}_destroyPanePaneViews(e){const t=this._paneViews.get(e);if(void 0!==t)for(const e of t)e.destroy&&e.destroy();void 0!==e&&e.onDestroyed().unsubscribeAll(this),this._paneViews.delete(e)}_copyPricesWithoutNormalization(){const e=Math.min(this._points.length,this._timePoint.length);for(let t=0;t{"use strict";i.d(t,{LineDataSourcePointIndexProperty:()=>n});var s=i(2015),r=i.n(s);class n extends(r()){constructor(e,t){super(),this._lineSource=e,this._pointIndex=t}value(){return this._lineSource.points()[this._pointIndex].index}setValue(e){const t=this._lineSource.points()[this._pointIndex];t.index=e,this._lineSource.startChanging(this._pointIndex,t),this._setPointImpl(t),this._lineSource.model().updateSource(this._lineSource),this._listeners.fire(this);const i=this._lineSource.endChanging(!0,!1);this._lineSource.syncMultichartState(i)}_setPointImpl(e){this._lineSource.setPoint(this._pointIndex,e)}}},22474:(e,t,i)=>{"use strict";i.d(t,{LineToolPriceAxisView:()=>n});var s=i(88537),r=i(97938);class n extends r.PriceAxisView{constructor(e,t){super(),this._active=!1,this._source=e,this._data=t,this._properties=e.model().properties().childs().scalesProperties}setActive(e){this._active=e}_updateRendererData(e,t,i){e.visible=!1;const s=this._source.model();if(!s.timeScale()||s.timeScale().isEmpty())return;const r=this._source.priceScale();if(null===r||r.isEmpty())return;if(!s.selection().isSelected(this._source)&&!this._source.isForcedDrawPriceAxisLabel())return;if(null===s.timeScale().visibleBarsStrictRange())return;const n=this._source.priceAxisPoints(),o=this._data.pointIndex;if(n.length<=o)return;const a=n[o];if(!isFinite(a.price))return;const l=this._source.ownerSource(),c=null!==l?l.firstValue():null +;if(null===c)return;let h=this._data.backgroundPropertyGetter?this._data.backgroundPropertyGetter():null;null===h&&(h=this._getBgColor()),i.background=h,i.borderColor="#2E84A6",i.textColor=this.generateTextColor(h),i.coordinate=r.priceToCoordinate(a.price,c),e.text=this._formatPrice(a.price,c),e.visible=!0}_getBgColor(){return this._active?this._properties.childs().axisLineToolLabelBackgroundColorActive.value():this._properties.childs().axisLineToolLabelBackgroundColorCommon.value()}_formatPrice(e,t){return(0,s.ensureNotNull)(this._source.priceScale()).formatPrice(e,t)}}},19528:(e,t,i)=>{"use strict";i.d(t,{LineDataSourceTimeAxisView:()=>r});var s=i(85578);class r extends s.TimeAxisView{constructor(e,t){super(e.model()),this._active=!1,this._source=e,this._pointIndex=t,this._properties=e.model().properties().childs().scalesProperties}setActive(e){this._active=e}_getBgColor(){return this._active?this._properties.childs().axisLineToolLabelBackgroundColorActive.value():this._properties.childs().axisLineToolLabelBackgroundColorCommon.value()}_getIndex(){if(!this._model.selection().isSelected(this._source))return null;const e=this._source.timeAxisPoints();return e.length<=this._pointIndex?null:e[this._pointIndex].index}_isVisible(){return!0}}},89857:(e,t,i)=>{"use strict";var s=i(86441).Point,r=i(22474).LineToolPriceAxisView,n=(i(85733),i(29823).Interval),o=i(98125).getLogger("Chart.LineDataSource"),a=i(67337),l=i(60870).lineToolsLocalizedNames,c=a.enabled("datasource_copypaste"),h=i(50144).LineDataSourceBase;class d extends h{isAvailableInFloatingWidget(){return!0}visibilityKeyByInterval(e){var t,i=n.parse(e);return d.IntervalsVisibilities.forEach((function(e){e.kind===i.kind()&&e.from<=i.multiplier()&&e.to>=i.multiplier()&&(t=e.key)})),t}priceScale(){return this._ownerSource?this._ownerSource.m_priceScale:null}symbol(){return this._properties.symbol.value()}isSavedInStudyTemplates(){return!1}fixedPoints(){var e=[];if(this._positionPercents&&!this.priceScale().isEmpty())for(var t=0;t{"use strict";i.r(t),i.d(t,{LineToolMultiplePropertyBaseImpl:()=>l,LineToolCollectedProperty:()=>c,LineToolWidthsProperty:()=>h,LineToolColorsProperty:()=>d,MultipleLineWidthsProperty:()=>p,MultipleLineColorsProperty:()=>_});var s=i(98125),r=i(2872),n=i.n(r);const o=(0,s.getLogger)("Chart.LineToolCollectedProperty");class a{applyValue(e,t){e.setValue(t)}}class l{constructor(e,t){this._onChange=new(n()),this._properties=e,e.forEach(e=>e.subscribe(this,()=>{this._onChange.fire(this)})),this._showIfProperty=t}visible(){var e;return!this._showIfProperty||(null===(e=this._showIfProperty)||void 0===e?void 0:e.value())}value(){if(0===this._properties.length)return o.logError("Incorrect call, should not request value of 0 properties"),"mixed";const e=this._properties[0].value();return 1===this._properties.length||this._properties.every(t=>t.value()===e)?e:"mixed"}state(){}merge(){}destroy(){this._properties.forEach(e=>e.unsubscribeAll(this))}subscribe(e,t){this._onChange.subscribe(e,t)}unsubscribe(e,t){this._onChange.unsubscribe(e,t)}unsubscribeAll(e){this._onChange.unsubscribeAll(e)}storeStateIfUndefined(){return!0}}class c extends l{setValue(e,t,i){if("mixed"===e)return;const s=null!=i?i:new a;this._properties.forEach(t=>s.applyValue(t,e))}}class h extends c{}class d extends c{firstColor(){return this._properties[0].value()}}class u extends l{setValue(e,t,i){if("mixed"===e)return;const s=null!=i?i:new a;this._properties.forEach(t=>t.setValue(e,void 0,s))}}class p extends u{}class _ extends u{}},72708:(e,t,i)=>{"use strict" +;t.LineToolFibRetracement=i(44860).LineToolFibRetracement,t.LineToolFibChannel=i(48917).LineToolFibChannel,t.LineToolFibSpeedResistanceArcs=i(19857).LineToolFibSpeedResistanceArcs,t.LineToolProjection=i(35344).LineToolProjection,t.LineToolTrendBasedFibExtension=i(25861).LineToolTrendBasedFibExtension,t.LineToolElliott=i(97917).LineToolElliott,t.LineToolFibCircles=i(54502).LineToolFibCircles,t.LineToolVertLine=i(51922).LineToolVertLine,t.LineToolCrossLine=i(53193).LineToolCrossLine,t.LineToolBarsPattern=i(98802).LineToolBarsPattern,t.LineToolTrendBasedFibTime=i(6245).LineToolTrendBasedFibTime,t.LineToolFibTimeZone=i(63835).LineToolFibTimeZone,t.LineToolCircleLines=i(49802).LineToolCircleLines,t.LineToolDateRange=i(45669).LineToolDateRange,t.LineToolPriceRange=i(66602).LineToolPriceRange,t.LineToolDateAndPriceRange=i(26215).LineToolDateAndPriceRange,t.LineToolParallelChannel=i(78898).LineToolParallelChannel,t.LineToolTrendAngle=i(86225).LineToolTrendAngle,t.LineToolTrendLine=i(57649).LineToolTrendLine,t.LineToolInfoLine=i(51139).LineToolInfoLine,t.LineToolArrowMark=i(18659).LineToolArrowMark,t.LineToolExecution=i(39593).LineToolExecution,t.LineToolPitchfan=i(18977).LineToolPitchfan,t.LineToolGannSquare=i(97433).LineToolGannSquare,t.LineToolFibSpeedResistanceFan=i(70673).LineToolFibSpeedResistanceFan,t.LineToolGannComplex=i(52870).LineToolGannComplex,t.LineToolGannFixed=i(33209).LineToolGannFixed,t.LineToolGannFan=i(5094).LineToolGannFan,t.LineToolFibWedge=i(41668).LineToolFibWedge,t.LineToolPitchfork=i(40100).LineToolPitchfork,t.LineToolDisjointAngle=i(46512).LineToolDisjointChannel,t.LineToolFlatBottom=i(47047).LineToolFlatBottom,t.LineToolIcon=i(74468).LineToolIcon,t.LineToolRotatedRectangle=i(61272).LineToolRotatedRectangle,t.LineToolFibSpiral=i(29638).LineToolFibSpiral,t.LineToolHeadAndShoulders=i(90378).LineToolHeadAndShoulders,t.LineToolTriangle=i(99092).LineToolTriangle,t.LineToolTrianglePattern=i(53403).LineToolTrianglePattern,t.LineTool5PointsPattern=i(656).LineTool5PointsPattern,t.LineToolThreeDrivers=i(6980).LineToolThreeDrivers,t.LineToolABCD=i(82203).LineToolABCD,t.LineToolPolyline=i(19085).LineToolPolyline,t.LineToolPath=i(48950).LineToolPath,t.LineToolPrediction=i(12346).LineToolPrediction,t.LineToolPriceLabel=i(3113).LineToolPriceLabel,t.LineToolArrowMarker=i(10167).LineToolArrowMarker,t.LineToolNote=i(87517).LineToolNote,t.LineToolNoteAbsolute=i(87517).LineToolNoteAbsolute,t.LineToolSignpost=i(52827).LineToolSignpost,t.LineToolBrush=i(43871).LineToolBrush,t.LineToolArc=i(17337).LineToolArc,t.LineToolCallout=i(95536).LineToolCallout,t.LineToolBalloon=i(57666).LineToolBalloon,t.LineToolText=i(74971).LineToolText,t.LineToolHorzLine=i(8877).LineToolHorzLine,t.LineToolHorzRay=i(10471).LineToolHorzRay,t.LineToolRectangle=i(20258).LineToolRectangle,t.LineToolCircle=i(2039).LineToolCircle,t.LineToolEllipse=i(38430).LineToolEllipse,t.LineToolTimeCycles=i(38513).LineToolTimeCycles,t.LineToolSineLine=i(15718).LineToolSineLine,t.LineToolGhostFeed=i(82241).LineToolGhostFeed, +t.LineToolBezierQuadro=i(30899).LineToolBezierQuadro,t.LineToolBezierCubic=i(47679).LineToolBezierCubic,t.LineToolArrow=i(59358).LineToolArrow,t.LineToolRay=i(31702).LineToolRay,t.LineToolExtended=i(41239).LineToolExtended,t.LineToolSchiffPitchfork=i(98390).LineToolSchiffPitchfork,t.LineToolSchiffPitchfork2=i(98225).LineToolSchiffPitchfork2,t.LineToolInsidePitchfork=i(87639).LineToolInsidePitchfork,t.LineToolTextAbsolute=i(74971).LineToolTextAbsolute,t.LineToolArrowMarkLeft=i(18659).LineToolArrowMarkLeft,t.LineToolArrowMarkRight=i(18659).LineToolArrowMarkRight,t.LineToolArrowMarkUp=i(18659).LineToolArrowMarkUp,t.LineToolArrowMarkDown=i(18659).LineToolArrowMarkDown,t.LineToolFlagMark=i(53342).LineToolFlagMark,t.LineToolCypherPattern=i(980).LineToolCypherPattern,t.LineToolElliottImpulse=i(97917).LineToolElliottImpulse,t.LineToolElliottTriangle=i(97917).LineToolElliottTriangle,t.LineToolElliottTripleCombo=i(97917).LineToolElliottTripleCombo,t.LineToolElliottCorrection=i(97917).LineToolElliottCorrection,t.LineToolElliottDoubleCombo=i(97917).LineToolElliottDoubleCombo,t.LineToolRiskRewardLong=i(34291).LineToolRiskRewardLong,t.LineToolRiskRewardShort=i(34291).LineToolRiskRewardShort,t.LineToolPosition=i(2157).LineToolPosition,t.LineToolOrder=i(86858).LineToolOrder,t.LineToolHighlighter=i(65649).LineToolHighlighter,t.LineToolPriceNote=i(7648).LineToolPriceNote},60870:(e,t,i)=>{"use strict";i.d(t,{lineToolsLocalizedNames:()=>r});var s=i(28353);const r={LineTool5PointsPattern:(0,s.t)("XABCD Pattern"),LineToolABCD:(0,s.t)("ABCD Pattern"),LineToolArc:(0,s.t)("Arc"),LineToolArrow:(0,s.t)("Arrow"),LineToolArrowMarkDown:(0,s.t)("Arrow Mark Down"),LineToolArrowMarkLeft:(0,s.t)("Arrow Mark Left"),LineToolArrowMarkRight:(0,s.t)("Arrow Mark Right"),LineToolArrowMarkUp:(0,s.t)("Arrow Mark Up"),LineToolBalloon:(0,s.t)("Balloon"),LineToolBarsPattern:(0,s.t)("Bars Pattern"),LineToolBezierCubic:(0,s.t)("Double Curve"),LineToolBezierQuadro:(0,s.t)("Curve"),LineToolBrush:(0,s.t)("Brush"),LineToolCallout:(0,s.t)("Callout"),LineToolCircleLines:(0,s.t)("Cyclic Lines"),LineToolCypherPattern:(0,s.t)("Cypher Pattern"),LineToolDateAndPriceRange:(0,s.t)("Date and Price Range"),LineToolDateRange:(0,s.t)("Date Range"),LineToolDisjointAngle:(0,s.t)("Disjoint Channel"),LineToolElliottCorrection:(0,s.t)("Elliott Correction Wave (ABC)"),LineToolElliottDoubleCombo:(0,s.t)("Elliott Double Combo Wave (WXY)"),LineToolElliottImpulse:(0,s.t)("Elliott Impulse Wave (12345)"),LineToolElliottTriangle:(0,s.t)("Elliott Triangle Wave (ABCDE)"),LineToolElliottTripleCombo:(0,s.t)("Elliott Triple Combo Wave (WXYXZ)"),LineToolEllipse:(0,s.t)("Ellipse"),LineToolExtended:(0,s.t)("Extended Line"),LineToolFibChannel:(0,s.t)("Fib Channel"),LineToolFibCircles:(0,s.t)("Fib Circles"),LineToolFibRetracement:(0,s.t)("Fib Retracement"),LineToolFibSpeedResistanceArcs:(0,s.t)("Fib Speed Resistance Arcs"),LineToolFibSpeedResistanceFan:(0,s.t)("Fib Speed Resistance Fan"),LineToolFibSpiral:(0,s.t)("Fib Spiral"),LineToolFibTimeZone:(0,s.t)("Fib Time Zone"),LineToolFibWedge:(0, +s.t)("Fib Wedge"),LineToolFlagMark:(0,s.t)("Flag Mark"),LineToolImage:(0,s.t)("Image"),LineToolFlatBottom:(0,s.t)("Flat Top/Bottom"),LineToolAnchoredVWAP:(0,s.t)("Anchored VWAP"),LineToolGannComplex:(0,s.t)("Gann Square"),LineToolGannFixed:(0,s.t)("Gann Square Fixed"),LineToolGannFan:(0,s.t)("Gann Fan"),LineToolGannSquare:(0,s.t)("Gann Box"),LineToolHeadAndShoulders:(0,s.t)("Head and Shoulders"),LineToolHorzLine:(0,s.t)("Horizontal Line"),LineToolHorzRay:(0,s.t)("Horizontal Ray"),LineToolIcon:(0,s.t)("Icon"),LineToolInsidePitchfork:(0,s.t)("Inside Pitchfork"),LineToolNote:(0,s.t)("Note"),LineToolNoteAbsolute:(0,s.t)("Anchored Note"),LineToolSignpost:(0,s.t)("Signpost"),LineToolParallelChannel:(0,s.t)("Parallel Channel"),LineToolPitchfan:(0,s.t)("Pitchfan"),LineToolPitchfork:(0,s.t)("Pitchfork"),LineToolPolyline:(0,s.t)("Polyline"),LineToolPath:(0,s.t)("Path"),LineToolPrediction:(0,s.t)("Forecast"),LineToolPriceLabel:(0,s.t)("Price Label"),LineToolArrowMarker:(0,s.t)("Arrow Marker"),LineToolPriceRange:(0,s.t)("Price Range"),LineToolProjection:(0,s.t)("Projection"),LineToolRay:(0,s.t)("Ray"),LineToolRectangle:(0,s.t)("Rectangle"),LineToolCircle:(0,s.t)("Circle"),LineToolRegressionTrend:(0,s.t)("Regression Trend"),LineToolRiskRewardLong:(0,s.t)("Long Position"),LineToolRiskRewardShort:(0,s.t)("Short Position"),LineToolFixedRangeVolumeProfile:(0,s.t)("Fixed Range Volume Profile"),LineToolRotatedRectangle:(0,s.t)("Rotated Rectangle"),LineToolSchiffPitchfork:(0,s.t)("Modified Schiff Pitchfork"),LineToolSchiffPitchfork2:(0,s.t)("Schiff Pitchfork"),LineToolSineLine:(0,s.t)("Sine Line"),LineToolText:(0,s.t)("Text",{context:"tool"}),LineToolTextAbsolute:(0,s.t)("Anchored Text"),LineToolThreeDrivers:(0,s.t)("Three Drives Pattern"),LineToolTimeCycles:(0,s.t)("Time Cycles"),LineToolTrendAngle:(0,s.t)("Trend Angle"),LineToolTrendBasedFibExtension:(0,s.t)("Trend-Based Fib Extension"),LineToolTrendBasedFibTime:(0,s.t)("Trend-Based Fib Time"),LineToolTrendLine:(0,s.t)("Trend Line"),LineToolInfoLine:(0,s.t)("Info Line"),LineToolTriangle:(0,s.t)("Triangle"),LineToolTrianglePattern:(0,s.t)("Triangle Pattern"),LineToolVertLine:(0,s.t)("Vertical Line"),LineToolCrossLine:(0,s.t)("Cross Line"),LineToolHighlighter:(0,s.t)("Highlighter"),LineToolPriceNote:(0,s.t)("Price Note"),LineToolVbPFixed:(0,s.t)("Volume Profile Fixed Range")};r.LineToolGhostFeed=(0,s.t)("Ghost Feed")},14291:(e,t,i)=>{"use strict";i.r(t),i.d(t,{cloneLineTool:()=>W,createLineTool:()=>E,createLineToolProperties:()=>D,createStudyLineToolProperties:()=>V,getNewToolProperties:()=>A,isLineDrawnWithPressedButton:()=>C.isLineDrawnWithPressedButton,isLineTool:()=>N,isLineToolName:()=>C.isLineToolName,isStudyLineTool:()=>R,isStudyLineToolName:()=>C.isStudyLineToolName,isTrading:()=>O,lineToolByLinkKey:()=>H,prepareLineToolPropertiesByOwnerSource:()=>k,setNewToolProperties:()=>M,supportsPhantomMode:()=>B,tryFindStudyLineToolNameByStudyId:()=>F,unsetNewToolProperties:()=>L}) +;var s=i(88537),r=i(86441),n=i(51934),o=i(89857),a=i(72708),l=i.t(a,2),c=i(2271),h=i(88145),d=i(67072),u=i.n(d),p=i(66101),_=i(37865),m=i(80643),g=i(88564);const f=(0,h.studyIdString)("RegressionTrend","tv-basicstudies");function v(e){return void 0!==e.startPrice&&void 0!==e.endPrice}class S extends n.StudyLineDataSource{constructor(e,t,r,n,o){r=null!=r?r:(0,s.ensureNotNull)(e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:f}));super(e,r,"linreg_",null!=t?t:S.createProperties(e),n,o),this.version=2,this._trendData=null,i.e(1583).then(i.bind(i,79752)).then(e=>{this._setPaneViews([new e.RegressionTrendPaneView(this,this._model)])})}formatter(){throw new Error("This method should never be called")}pointsCount(){return 2}clearData(){this._trendData=null,super.clearData()}state(e){var t;const i=super.state(e);return e?{...i,nonseriesdata:null!==(t=this._trendData)&&void 0!==t?t:void 0}:i}restoreData(e){var t;super.restoreData(e),this._trendData=null!==(t=e.nonseriesdata)&&void 0!==t?t:null}startIndex(){if(null===this._trendData||null===this._indexes)return null;const e=this._indexes[this._trendData.startIndex];return e!==c.INVALID_TIME_POINT_INDEX?e:null}endIndex(){if(null===this._trendData||null===this._indexes)return null;const e=this._indexes[this._trendData.endIndex];return e!==c.INVALID_TIME_POINT_INDEX?e:null}baseLine(){return null===this._trendData?null:this._trendData.baseLine}downLine(){return null===this._trendData?null:this._trendData.downLine}upLine(){return null===this._trendData?null:this._trendData.upLine}pearsons(){return null===this._trendData?null:this._trendData.pearsons}recalcStudyIfNeeded(){this._onStudyInputsMayChange()}cloneable(){return!1}static createProperties(e,t){const i=u().getStudyPropertyRootNameById(f),r=(0,s.ensureNotNull)(e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:f})),n=(0,g.createDefaultsState)(!0,i,[],e.studyVersioning());return V("LineToolRegressionTrend",r,r,(0,m.merge)((0,m.clone)(n),null!=t?t:{}),e.studyVersioning())}static createRegressionTrendPropertiesFromStudyMetaInfoAndState(e,t,i,s){const r=(0,p.prepareStudyPropertiesForLoadChart)(e,t,i,null,s);return S._configureProperties(r),r}static studyId(){return f}_studyInputs(e){(0,s.assert)(2===e.length,"all the line tool points should be defined");const[t,i]=e;if(t.index===i.index)return null;const r=this._getPointTime(t.index<=i.index?t:i,!0),n=this._getPointTime(i.index>=t.index?i:t,!0);return null===r||null===n?(this._subscribeApplyInputsOnSeriesCompleted(),null):{...this.properties().childs().inputs.state(),"first bar time":1e3*r,"last bar time":1e3*n}}_onDataUpdated(e,t,i){null!==t&&(t.indexes_replace||(this._trendData=t.data),"nochange"!==i&&(this._indexes=i),super._onDataUpdated(e,t,i))}_isReady(){return null!==this._trendData&&void 0!==this._trendData.startIndex&&void 0!==this._trendData.endIndex&&v(this._trendData.upLine)&&v(this._trendData.baseLine)&&v(this._trendData.downLine)}_updateAnchorsPrice(){if(!this._trendData||(0,m.isNaN)(this._trendData.baseLine.startPrice)||(0, +m.isNaN)(this._trendData.baseLine.endPrice))return;const{startPrice:e,endPrice:t}=this._trendData.baseLine;2===this._points.length&&(this._points[0].price=(0,s.ensureDefined)(e),this._points[1].price=(0,s.ensureDefined)(t),this._timePoint[0].price=(0,s.ensureDefined)(e),this._timePoint[1].price=(0,s.ensureDefined)(t))}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(7387),i.e(8623),i.e(607)]).then(i.bind(i,96457))).RegressionTrendDefinitionsViewModel}static _configureProperties(e){n.StudyLineDataSource._configureProperties(e);const t=e.childs().styles.childs(),i=[t.upLine.childs().linewidth,t.downLine.childs().linewidth,t.baseLine.childs().linewidth];e.addChild("linesWidths",new _.LineToolWidthsProperty(i))}}var y=i(20299);const b=(0,h.studyIdString)("VbPFixed","tv-basicstudies");class w extends y.LineToolVbPFixed{constructor(e,t,i,s,r,n){const o=i||e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:b});super(e,t,o,s,r,n)}calcIsActualSymbol(){n.StudyLineDataSource.prototype.calcIsActualSymbol.apply(this)}boundToSymbol(){return!0}isSynchronizable(){return this.priceScale()===this._model.mainSeries().priceScale()}static studyId(){return b}static createProperties(e,t){const i=u().getStudyPropertyRootNameById(b),r=(0,s.ensureNotNull)(e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:b})),n=(0,g.createDefaultsState)(!0,i,[],e.studyVersioning());return V("LineToolFixedRangeVolumeProfile",r,r,(0,m.merge)((0,m.clone)(n),null!=t?t:{}),e.studyVersioning())}static createPropertiesFromStudyMetaInfoAndState(e,t,i,s){const r=(0,p.prepareStudyPropertiesForLoadChart)(e,t,i,null,s);return w._configureProperties(r),r}}var C=i(44601),P=i(2587),T=i(36759);function x(e){for(const t of Object.keys(e))TradingView[t]=e[t]}x(l),x({LineToolRegressionTrend:S,LineToolVbPFixed:y.LineToolVbPFixed,LineToolFixedRangeVolumeProfile:w});let I=null;function M(e,t,i){return null!==I&&I.tool===e&&I.toolData===t||(I={properties:D(e,void 0,i),tool:e,toolData:t}),I.properties}function L(){I=null}function A(e){return null!==I&&I.tool===e?I.properties:null}function E(e,t,i,r,n,o){let a;if((0,s.assert)((0,C.isLineToolName)(e),"Unknown line tool: "+e),n||i||(i=A(e)||void 0),"LineToolVbPFixed"===e)a=new y.LineToolVbPFixed(t,i,(0,s.ensureDefined)(r),t.mainSeries(),n,o);else if("LineToolFixedRangeVolumeProfile"===e)a=new w(t,i,(0,s.ensureDefined)(r),t.mainSeries(),n,o);else if("LineToolRegressionTrend"===e)a=new S(t,i,(0,s.ensureDefined)(r),n,o);else{a=new((0,s.ensureDefined)(l[e]))(t,i,n,o)}return a.toolname=e,L(),a}function k(e,t){const i=(0,s.ensureNotNull)(t.symbolSource());e.childs().symbol.setValue(i.symbol()),i.model().currencyConversionEnabled()&&e.childs().currencyId.setValue(i.currency()),i.model().unitConversionEnabled()&&e.childs().unitId.setValue(i.unit()),e.childs().symbolStateVersion.setValue(2),e.childs().zOrderVersion.setValue(2)}function D(e,t,i){if((0,s.assert)((0,C.isLineToolName)(e),e+" should be name of the line tool"), +"LineToolVbPFixed"===e)return y.LineToolVbPFixed.createProperties(i,t);if("LineToolFixedRangeVolumeProfile"===e)return w.createProperties(i,t);if("LineToolRegressionTrend"===e)return S.createProperties(i,t);return(0,s.ensureDefined)(l[e]).createProperties(t)}function V(e,t,i,r,n){if((0,s.assert)((0,C.isStudyLineToolName)(e),e+" should be name of the study line tool"),"LineToolVbPFixed"===e)return y.LineToolVbPFixed.createPropertiesFromStudyMetaInfoAndState(t,i,r,n);if("LineToolFixedRangeVolumeProfile"===e)return w.createPropertiesFromStudyMetaInfoAndState(t,i,r,n);if("LineToolRegressionTrend"===e)return S.createRegressionTrendPropertiesFromStudyMetaInfoAndState(t,i,r,n);throw new Error("Property creation is not implemented for study line tool "+e)}function B(e){(0,s.assert)((0,C.isLineToolName)(e),e+" should be name of the line tool");const t=l[e];return void 0!==t&&Boolean(t.supportPhantomMode)}function N(e){return e instanceof o.LineDataSource}function R(e){return e instanceof n.StudyLineDataSource}function O(e){return e instanceof P.LineToolTrading}function F(e){let t=null;return e===S.studyId()?t="LineToolRegressionTrend":e===y.LineToolVbPFixed.studyId()?t="LineToolVbPFixed":e===w.studyId()&&(t="LineToolFixedRangeVolumeProfile"),t}function W(e,t,i,n){const o=t.toolname,a=t.properties().state();a.intervalsVisibilities=(0,T.mergeIntervalVisibilitiesDefaults)(null==a?void 0:a.intervalsVisibilities);const l=D(t.toolname,a,e);l.childs().visible.setValue(!0);const c=(0,s.ensureNotNull)(t.ownerSource()),h=E(o,e,l);void 0!==n&&h.setId(n),h.setOwnerSource(c),h.toolname=o;const d=h.clonePositionOffset(),u=t.fixedPoints();(i?u.map(e=>e.add(new r.Point(d.xCoordOffset,d.yCoordOffset))):u).forEach(e=>h.addFixedPoint(e));const p=t.normalizedPoints(),_=i?function(e,t,i){const r=(0,s.ensureNotNull)(t.priceScale()),n=(0,s.ensureNotNull)(t.firstValue());return e.map(e=>{const t=e.price,s=r.priceToCoordinate(t,n)+i.yCoordOffset,o=r.coordinateToPrice(s,n);return{time_t:e.time_t,price:o,offset:e.offset+i.barOffset}})}(p,c,d):p,m=t.points();return h.restorePoints(_,m),h.cloneData&&h.cloneData(t),h.checkAlert&&h.checkAlert(),h}function H(e,t){var i;return null!==(i=e.dataSources().find(e=>N(e)&&e.linkKey().value()===t))&&void 0!==i?i:null}},87517:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(89857).LineDataSource,n=i(2015),o=i(88564).DefaultProperty;class a extends r{constructor(e,t,s,r){super(e,t||a.createProperties(),s,r),this.version=a.version,i.e(1583).then(i.bind(i,99578)).then(({NotePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 1}name(){return"Note"}getTooltipWidth(){return a.TOOLTIP_WIDTH}getTooltipPadding(){return a.TOOLTIP_PADDING}getTooltipLineSpacing(){return a.TOOLTIP_LINESPACING}template(){var e=r.prototype.template.call(this);return e.text=this.properties().childs().text.value(),e}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}static createProperties(e){ +void 0!==e&&void 0!==e.markerColor&&void 0===e.borderColor&&(e.borderColor=e.markerColor);var t=new o("linetoolnote",e);return a._configureProperties(t),t}state(e){var t=r.prototype.state.call(this,e);return e&&(t.state.fixedSize=!1),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,55510))).NoteDefinitionsViewModel}static _configureProperties(e){r._configureProperties(e),e.hasChild("text")||e.addChild("text",new n(s("Text"))),e.addExclusion("text")}}a.TOOLTIP_WIDTH=300,a.TOOLTIP_PADDING=10,a.TOOLTIP_LINESPACING=5,a.version=1;class l extends a{constructor(e,t){super(e,t||l.createProperties())}title(){return s("Anchored Note")}name(){return"Anchored Note"}isFixed(){return!0}hasEditableCoordinates(){return!1}static createProperties(e){var t=new o("linetoolnoteabsolute",e);return l._configureProperties(t),t}static _configureProperties(e){a._configureProperties(e)}}t.LineToolNote=a,t.LineToolNoteAbsolute=l},86858:(e,t,i)=>{"use strict";var s=i(2587).LineToolTrading,r=i(22474).LineToolPriceAxisView,n=i(53664),o=i(89857).LineDataSource,a=i(88564).DefaultProperty;const l=i(67337);var c=i(59555).sortSourcesPreOrdered.LineToolOrder;function h(e){return null==e?e="":e+="",e}class d{constructor(e){this._line=e,this._data={bodyText:"order",quantityText:"0"},this._editable=!0,this._cancellable=!0,this._mode="",this._direction="buy",this._active=!0}setMode(e){return this._mode=e,this._line.updateAllViewsAndRedraw(),this}setDirection(e){return this._direction=e,this._line.updateAllViewsAndRedraw(),this}setActive(e){return this._active=e,this._line.updateAllViewsAndRedraw(),this}setEditable(e){return this._editable=e,this._line.updateAllViewsAndRedraw(),this}getEditable(){return this._editable}setCancellable(e){return this._cancellable=e,this._line.updateAllViewsAndRedraw(),this}getCancellable(){return this._cancellable}hasMoveCallback(){return this.isFunction(this._onMoveCallback)}hasModifyCallback(){return this.isFunction(this._onModifyCallback)}getPrice(){return this._line.points().length>0?this._line.points()[0].price:this._line._timePoint.length>0?this._line._timePoint[0].price:void 0}setPrice(e){if(this._line.points().length>0){var t=this._line.points()[0];t.price=e,this._line._points[0]=t,this._line.normalizePoints(),this._line.updateAllViewsAndRedraw()}return this._line._timePoint.length>0&&(this._line._timePoint[0].price=e),this}getText(){return this._data.bodyText}setText(e){return this._data.bodyText=e||"",this._line.updateAllViewsAndRedraw(),this}setTooltip(e){return this._line.properties().tooltip.setValue(h(e)),this}getTooltip(){return this._line.properties().tooltip.value()}setModifyTooltip(e){return this._line.properties().modifyTooltip.setValue(h(e)),this}getModifyTooltip(){return this._line.properties().modifyTooltip.value()}setCancelTooltip(e){return this._line.properties().cancelTooltip.setValue(h(e)),this}getCancelTooltip(){return this._line.properties().cancelTooltip.value()}getQuantity(){return this._data.quantityText}setQuantity(e){ +return this._data.quantityText=e||"",this._line.updateAllViewsAndRedraw(),this}getExtendLeft(){var e=this._line.properties().extendLeft.value();return"inherit"===e?this._line._model.properties().tradingProperties.extendLeft.value():e}setExtendLeft(e){return this._line.properties().extendLeft.setValue(e),this}getLineLength(){var e=this._line.properties().lineLength.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineLength.value():e}setLineLength(e){return this._line.properties().lineLength.setValue(Math.max(0,Math.min(e,100))),this}getLineColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.lineActiveBuyColor.value():e.lineInactiveBuyColor.value():this._active?e.lineActiveSellColor.value():e.lineInactiveSellColor.value()}setLineColor(e){return"buy"===this._direction?this._active?this.setLineActiveBuyColor(e):this.setLineInactiveBuyColor(e):this._active?this.setLineActiveSellColor(e):this.setLineInactiveSellColor(e),this}setLineActiveBuyColor(e){return this._line.properties().lineActiveBuyColor.setValue(e),this}setLineInactiveBuyColor(e){return this._line.properties().lineInactiveBuyColor.setValue(e),this}setLineActiveSellColor(e){return this._line.properties().lineActiveSellColor.setValue(e),this}setLineInactiveSellColor(e){return this._line.properties().lineInactiveSellColor.setValue(e),this}getLineStyle(){var e=this._line.properties().lineStyle.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineStyle.value():e}setLineStyle(e){return this._line.properties().lineStyle.setValue(e),this}getLineWidth(){var e=this._line.properties().lineWidth.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineWidth.value():e}setLineWidth(e){return this._line.properties().lineWidth.setValue(e),this}getBodyBorderColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.bodyBorderActiveBuyColor.value():e.bodyBorderInactiveBuyColor.value():this._active?e.bodyBorderActiveSellColor.value():e.bodyBorderInactiveSellColor.value()}setBodyBorderColor(e){return"buy"===this._direction?this._active?this.setBodyBorderActiveBuyColor(e):this.setBodyBorderInactiveBuyColor(e):this._active?this.setBodyBorderActiveSellColor(e):this.setBodyBorderInactiveSellColor(e),this}setBodyBorderActiveBuyColor(e){return this._line.properties().bodyBorderActiveBuyColor.setValue(e),this}setBodyBorderInactiveBuyColor(e){return this._line.properties().bodyBorderInactiveBuyColor.setValue(e),this}setBodyBorderActiveSellColor(e){return this._line.properties().bodyBorderActiveSellColor.setValue(e),this}setBodyBorderInactiveSellColor(e){return this._line.properties().bodyBorderInactiveSellColor.setValue(e),this}getBodyBackgroundColor(){return n.getColorFromProperties(this._line.properties().bodyBackgroundColor,this._line.properties().bodyBackgroundTransparency)}setBodyBackgroundColor(e){return n.setColorToProperties(e,this._line.properties().bodyBackgroundColor,this._line.properties().bodyBackgroundTransparency),this}getBodyTextColor(){ +var e=this._line.properties();return"limit"===this._mode?this._active?e.bodyTextActiveLimitColor.value():e.bodyTextInactiveLimitColor.value():"stop"===this._mode?this._active?e.bodyTextActiveStopColor.value():e.bodyTextInactiveStopColor.value():"buy"===this._direction?this._active?e.bodyTextActiveBuyColor.value():e.bodyTextInactiveBuyColor.value():this._active?e.bodyTextActiveSellColor.value():e.bodyTextInactiveSellColor.value()}setBodyTextColor(e){return"limit"===this._mode?this._active?this.setBodyTextActiveLimitColor(e):this.setBodyTextInactiveLimitColor(e):"stop"===this._mode?this._active?this.setBodyTextActiveStopColor(e):this.setBodyTextInactiveStopColor(e):"buy"===this._direction?this._active?this.setBodyTextActiveBuyColor(e):this.setBodyTextInactiveBuyColor(e):this._active?this.setBodyTextActiveSellColor(e):this.setBodyTextInactiveSellColor(e),this}setBodyTextInactiveLimitColor(e){return this._line.properties().bodyTextInactiveLimitColor.setValue(e),this}setBodyTextActiveLimitColor(e){return this._line.properties().bodyTextActiveLimitColor.setValue(e),this}setBodyTextInactiveStopColor(e){return this._line.properties().bodyTextInactiveStopColor.setValue(e),this}setBodyTextActiveStopColor(e){return this._line.properties().bodyTextActiveStopColor.setValue(e),this}setBodyTextInactiveBuyColor(e){return this._line.properties().bodyTextInactiveBuyColor.setValue(e),this}setBodyTextActiveBuyColor(e){return this._line.properties().bodyTextActiveBuyColor.setValue(e),this}setBodyTextInactiveSellColor(e){return this._line.properties().bodyTextInactiveSellColor.setValue(e),this}setBodyTextActiveSellColor(e){return this._line.properties().bodyTextActiveSellColor.setValue(e),this}getBodyFont(){return n.getFontFromProperties(this._line.properties().bodyFontFamily,this._line.properties().bodyFontSize,this._line.properties().bodyFontBold,this._line.properties().bodyFontItalic)}setBodyFont(e){return n.setFontToProperties(e,this._line.properties().bodyFontFamily,this._line.properties().bodyFontSize,this._line.properties().bodyFontBold,this._line.properties().bodyFontItalic),this}getQuantityBorderColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.quantityBorderActiveBuyColor.value():e.quantityBorderInactiveBuyColor.value():this._active?e.quantityBorderActiveSellColor.value():e.quantityBorderInactiveSellColor.value()}setQuantityBorderColor(e){return"buy"===this._direction?this._active?this.setQuantityBorderActiveBuyColor(e):this.setQuantityBorderInactiveBuyColor(e):this._active?this.setQuantityBorderActiveSellColor(e):this.setQuantityBorderInactiveSellColor(e),this}setQuantityBorderActiveBuyColor(e){return this._line.properties().quantityBorderActiveBuyColor.setValue(e),this}setQuantityBorderInactiveBuyColor(e){return this._line.properties().quantityBorderInactiveBuyColor.setValue(e),this}setQuantityBorderActiveSellColor(e){return this._line.properties().quantityBorderActiveSellColor.setValue(e),this}setQuantityBorderInactiveSellColor(e){ +return this._line.properties().quantityBorderInactiveSellColor.setValue(e),this}getQuantityBackgroundColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.quantityBackgroundActiveBuyColor.value():e.quantityBackgroundInactiveBuyColor.value():this._active?e.quantityBackgroundActiveSellColor.value():e.quantityBackgroundInactiveSellColor.value()}setQuantityBackgroundColor(e){return"buy"===this._direction?this._active?this.setQuantityBackgroundActiveBuyColor(e):this.setQuantityBackgroundInactiveBuyColor(e):this._active?this.setQuantityBackgroundActiveSellColor(e):this.setQuantityBackgroundInactiveSellColor(e),this}setQuantityBackgroundActiveBuyColor(e){return this._line.properties().quantityBackgroundActiveBuyColor.setValue(e),this}setQuantityBackgroundInactiveBuyColor(e){return this._line.properties().quantityBackgroundInactiveBuyColor.setValue(e),this}setQuantityBackgroundActiveSellColor(e){return this._line.properties().quantityBackgroundActiveSellColor.setValue(e),this}setQuantityBackgroundInactiveSellColor(e){return this._line.properties().quantityBackgroundInactiveSellColor.setValue(e),this}getQuantityTextColor(){return n.getColorFromProperties(this._line.properties().quantityTextColor,this._line.properties().quantityTextTransparency)}setQuantityTextColor(e){return n.setColorToProperties(e,this._line.properties().quantityTextColor,this._line.properties().quantityTextTransparency),this}getQuantityFont(){return n.getFontFromProperties(this._line.properties().quantityFontFamily,this._line.properties().quantityFontSize,this._line.properties().quantityFontBold,this._line.properties().quantityFontItalic)}setQuantityFont(e){return n.setFontToProperties(e,this._line.properties().quantityFontFamily,this._line.properties().quantityFontSize,this._line.properties().quantityFontBold,this._line.properties().quantityFontItalic),this}getCancelButtonBorderColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.cancelButtonBorderActiveBuyColor.value():e.cancelButtonBorderInactiveBuyColor.value():this._active?e.cancelButtonBorderActiveSellColor.value():e.cancelButtonBorderInactiveSellColor.value()}setCancelButtonBorderColor(e){return"buy"===this._direction?this._active?this.setCancelButtonBorderActiveBuyColor(e):this.setCancelButtonBorderInactiveBuyColor(e):this._active?this.setCancelButtonBorderActiveSellColor(e):this.setCancelButtonBorderInactiveSellColor(e),this}setCancelButtonBorderActiveBuyColor(e){return this._line.properties().cancelButtonBorderActiveBuyColor.setValue(e),this}setCancelButtonBorderInactiveBuyColor(e){return this._line.properties().cancelButtonBorderInactiveBuyColor.setValue(e),this}setCancelButtonBorderActiveSellColor(e){return this._line.properties().cancelButtonBorderActiveSellColor.setValue(e),this}setCancelButtonBorderInactiveSellColor(e){return this._line.properties().cancelButtonBorderInactiveSellColor.setValue(e),this}getCancelButtonBackgroundColor(){ +return n.getColorFromProperties(this._line.properties().cancelButtonBackgroundColor,this._line.properties().cancelButtonBackgroundTransparency)}setCancelButtonBackgroundColor(e){return n.setColorToProperties(e,this._line.properties().cancelButtonBackgroundColor,this._line.properties().cancelButtonBackgroundTransparency),this}getCancelButtonIconColor(){var e=this._line.properties();return"buy"===this._direction?this._active?e.cancelButtonIconActiveBuyColor.value():e.cancelButtonIconInactiveBuyColor.value():this._active?e.cancelButtonIconActiveSellColor.value():e.cancelButtonIconInactiveSellColor.value()}setCancelButtonIconColor(e){return"buy"===this._direction?this._active?this.setCancelButtonIconActiveBuyColor(e):this.setCancelButtonIconInactiveBuyColor(e):this._active?this.setCancelButtonIconActiveSellColor(e):this.setCancelButtonIconInactiveSellColor(e),this}setCancelButtonIconActiveBuyColor(e){return this._line.properties().cancelButtonIconActiveBuyColor.setValue(e),this}setCancelButtonIconInactiveBuyColor(e){return this._line.properties().cancelButtonIconInactiveBuyColor.setValue(e),this}setCancelButtonIconActiveSellColor(e){return this._line.properties().cancelButtonIconActiveSellColor.setValue(e),this}setCancelButtonIconInactiveSellColor(e){return this._line.properties().cancelButtonIconInactiveSellColor.setValue(e),this}block(){this._blocked=!0,this._line.updateAllViewsAndRedraw()}unblock(){this._blocked=!1,this._line.updateAllViewsAndRedraw()}getBlocked(){return this._blocked}isFunction(e){return"function"==typeof e}onCancel(e,t){return t?this.isFunction(t)&&(this._onCancelData=e,this._onCancelCallback=t):this.isFunction(e)&&(this._onCancelCallback=e),this}callOnCancel(){this.isFunction(this._onCancelCallback)&&this._onCancelCallback.call(this,this._onCancelData)}isOnCancelCallbackPresent(){return this.isFunction(this._onCancelCallback)}onModify(e,t){return t?this.isFunction(t)&&(this._onModifyData=e,this._onModifyCallback=t):this.isFunction(e)&&(this._onModifyCallback=e),this}callOnModify(){this.isFunction(this._onModifyCallback)&&this._onModifyCallback.call(this,this._onModifyData)}onMove(e,t){return t?this.isFunction(t)&&(this._onMoveData=e,this._onMoveCallback=t):this.isFunction(e)&&(this._onMoveCallback=e),this}callOnMove(){this.isFunction(this._onMoveCallback)&&this._onMoveCallback.call(this,this._onMoveData)}onContextMenu(e,t){return t?this.isFunction(t)&&(this._onContextMenuData=e,this._onContextMenuCallback=t):this.isFunction(e)&&(this._onContextMenuCallback=e),this}shouldShowContextMenu(){return this.isFunction(this._onContextMenuCallback)}callOnContextMenu(){if(this.isFunction(this._onContextMenuCallback))return this._onContextMenuCallback.call(this,this._onContextMenuData)}remove(){this._line._model.removeSource(this._line),delete this._line}}class u extends s{constructor(e,t){super(e,t||u.createProperties()),this._adapter=new d(this),this.setSelectionEnabled(!0),i.e(1583).then(i.bind(i,45175)).then(({OrderPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}zorder(){return c} +isSpeciallyZOrderedSource(){return!0}setPoint(e,t,i){this._points[e]=t,this.normalizePoints()}addPoint(e,t){return this._points.push(e),this._lastPoint=null,this.normalizePoints(),this.createServerPoints(),!0}name(){return"Order"}endMoving(e){var t=this._startMovingPoint&&this._currentMovingPoint&&this._startMovingPoint.logical.price!==this._currentMovingPoint.logical.price;super.endMoving(),!e&&t&&this._adapter.callOnMove()}createPriceAxisView(e){var t={pointIndex:e,backgroundPropertyGetter:()=>this._adapter.getLineColor()};return this._priceAxisView=new r(this,t),this._priceAxisView}paneViews(){return TradingView.printing&&!l.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showOrders.value()?o.prototype.paneViews.call(this):null}priceAxisViews(e,t){return TradingView.printing&&!l.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showOrders.value()?o.prototype.priceAxisViews.call(this,e,t):null}adapter(){return this._adapter}hasContextMenu(){return this._adapter.shouldShowContextMenu()}contextMenuItems(){return this._adapter.callOnContextMenu()}movable(){return Boolean(this._adapter._onMoveCallback)}static createProperties(e){var t=new a("linetoolorder",e,!1,!1);return u._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolOrder=u},78898:(e,t,i)=>{"use strict";i.d(t,{LineToolParallelChannel:()=>c});var s=i(88537),r=i(86441),n=i(88564),o=i(85733),a=i(89857),l=i(80643);class c extends a.LineDataSource{constructor(e,t,s,r){super(e,t||c.createProperties(),s,r),this._priceAxisViews.push(this.createPriceAxisView(3)),this._coordOffsetWhileMovingOrChanging=null,this._pendingPriceOffset=null,i.e(1583).then(i.bind(i,74143)).then(({ParallelChannelPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}paneViews(e){return null!==this._pendingPriceOffset&&this._applyPendingPriceOffset(),super.paneViews(e)}setLastPoint(e,t){t&&t.shift()&&2===this.points().length&&this._snapPoint45Degree(e,this.points()[0]);const i=(0,l.clone)(e);return super.setLastPoint(e),i}startMoving(e,t,i,s){super.startMoving(e,t,i,s),this._coordOffsetWhileMovingOrChanging=this._findPixelsHeight()}endMoving(e,t,i){return this._coordOffsetWhileMovingOrChanging=null,super.endMoving(e,t,i)}startChanging(e,t){super.startChanging(e,t),this._coordOffsetWhileMovingOrChanging=this._findPixelsHeight()}endChanging(e,t,i){return this._coordOffsetWhileMovingOrChanging=null,super.endChanging(e,t)}restoreExternalPoints(e,t,i){const s=i?e.points:this._timePoint.map((t,i)=>({price:t.price,offset:e.points[i].offset,time_t:e.points[i].time_t}));if(super.restoreExternalPoints({...e,points:s},t),t.pricesChanged&&this._points.length===s.length)for(let e=0;e=4)return;this._snapPointBeforeChange(e,t,i);const a=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),l=(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[1])),c=(0, +s.ensureNotNull)(this.pointToScreenPoint(t)),h=(0,s.ensureNotNull)(this._coordOffsetWhileMovingOrChanging),d=(0,s.ensureNotNull)(this.priceScale()),u=(0,s.ensure)(null===(n=this.ownerSource())||void 0===n?void 0:n.firstValue());switch(e){case 0:super.setPoint(e,t,i),this._points[2].price=d.coordinateToPrice(c.y+h,u);break;case 1:super.setPoint(e,t,i);break;case 2:super.setPoint(e,t,i),this._points[0].price=d.coordinateToPrice(c.y-h,u),this._points[0].index=t.index;break;case 3:this._points[1].price=d.coordinateToPrice(c.y-h,u),this._points[1].index=t.index;break;case 4:{const e=l.subtract(a),t=(c.x-a.x)/e.x,i=a.addScaled(e,t),s=c.y-i.y;this._points[2].price=d.coordinateToPrice(a.y+s,u);break}case 5:{const e=l.subtract(a),t=(c.x-a.x)/e.x,i=a.addScaled(e,t),s=c.y-i.y;this._points[0].price=d.coordinateToPrice(a.y+s,u),this._points[1].price=d.coordinateToPrice(l.y+s,u);break}}const p=this.linkKey().value();if(p&&!r&&e<4){const e=this._points.map(e=>e.price);(0,o.changeLineStyle)({model:this._model,linkKey:p,state:{prices:e}})}}state(e){const t=a.LineDataSource.prototype.state.call(this,e);return this._pendingPriceOffset&&(t.priceOffset=this._pendingPriceOffset),t}restoreExternalState(e){const t={...e};if(t.prices&&this.isActualSymbol())for(let e=0;ee.index<=t.index?[e,t]:[t,e],s=i(t[0],t[1]),r=i(t[2],t[3]);let n,o,a,l;t[2].price{"use strict";i.d(t,{LineToolPath:()=>c});var s=i(88537),r=i(86441),n=i(88564),o=i(49094),a=i(89857),l=i(37865);class c extends a.LineDataSource{constructor(e,t,s,r){const n=t||c.createProperties();super(e,n,s,r),this._finished=!1,i.e(1583).then(i.bind(i,10155)).then(t=>{this._setPaneViews([new t.PathPaneView(this,e)])})}pointsCount(){return-1}name(){return"Path"}hasEditableCoordinates(){return!1}finish(){this._finished=!0,this._lastPoint=null,this.normalizePoints(),this.createServerPoints()}addPoint(e,t,i){var n;if(this._finished)return!0;const a=(0, +s.ensureNotNull)(this.priceScale()),l=this._model.timeScale().indexToCoordinate(e.index),c=e.price,h=(0,s.ensure)(null===(n=this.ownerSource())||void 0===n?void 0:n.firstValue()),d=a.priceToCoordinate(c,h);if(this._points.length>0){const e=this._points[this._points.length-1],i=this._model.timeScale().indexToCoordinate(e.index),s=e.price,n=a.priceToCoordinate(s,h),c=new r.Point(l,d).subtract(new r.Point(i,n)).length();if(!(null==t?void 0:t.isApiEvent())&&c<(0,o.interactionTolerance)().minDistanceBetweenPoints)return this._lastPoint=null,this.normalizePoints(),this.createServerPoints(),!0}return super.addPoint(e,t,i)}static createProperties(e){const t=new n.DefaultProperty("linetoolpath",e);return c._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,4283)).then(e=>e.PathDefinitionsViewModel)}static _configureProperties(e){a.LineDataSource._configureProperties(e),e.addChild("linesWidths",new l.LineToolWidthsProperty([(0,s.ensureDefined)(e.child("lineWidth"))])),e.addChild("linesColors",new l.LineToolColorsProperty([e.childs().lineColor]))}}},18977:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),i.e(1583).then(i.bind(i,92669)).then(({PitchfanLinePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 3}name(){return"Pitchfan"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,34879))).PitchBaseDefinitionsViewModel}static createProperties(e){var t=new o("linetoolpitchfan",e,!1,{range:[0,8]});return d._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("median").child("linewidth")],i=[e.child("median").child("color")],s=0;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=8,t.LineToolPitchfan=d},30823:(e,t,i)=>{"use strict";var s;i.d(t,{LineToolPitchforkStyle:()=>s}),function(e){e[e.Original=0]="Original",e[e.Schiff=1]="Schiff",e[e.Inside=2]="Inside",e[e.Schiff2=3]="Schiff2"}(s||(s={}))},40100:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(28296).Action,l=i(62060).ACTION_ID,c=i(30823).LineToolPitchforkStyle,h=null,d=i(37865),u=d.LineToolWidthsProperty,p=d.LineToolColorsProperty,_=new r("erase level line",s("erase level line")),m=new r("change {title} style",s("change {title} style"));class g extends n{constructor(e,t,i,s){super(e,t||g.createProperties(),i,s), +this._properties.style.listeners().subscribe(this,g.prototype._recreatePaneView),this._recreatePaneView()}levelsCount(){return g.LevelsCount}additionalActions(e){for(var t=[],i=[{title:s("Original"),actionId:l.ChartLineToolPitchforkChangeTypeToOriginal},{title:s("Modified Schiff"),actionId:l.ChartLineToolPitchforkChangeTypeToModifiedSchiff},{title:s("Inside"),actionId:l.ChartLineToolPitchforkChangeTypeToInside},{title:s("Schiff"),actionId:l.ChartLineToolPitchforkChangeTypeToSchiff}],n=0;n<4;n++){var o=new a({actionId:i[n].actionId,checked:this.properties().style.value()===n,checkable:!0,label:i[n].title,payload:{target:this,value:n},onExecute:function(t){var i=t.getPayload(),s=i.target;e.setProperty(s.properties().style,i.value,m.format({title:new r(s.name(),s.title())})),s.updateAllViews(),s._model.updateSource(s)}});t.push(o)}return[t[0],t[3],t[1],t[2]]}_recreatePaneView(){if(null!==h){var e=[];this._properties.style.value()===c.Original?e=[new h.PitchforkLinePaneView(this,this._model)]:this._properties.style.value()===c.Schiff?e=[new h.SchiffPitchforkLinePaneView(this,this._model)]:this._properties.style.value()===c.Schiff2?e=[new h.SchiffPitchfork2LinePaneView(this,this._model)]:this._properties.style.value()===c.Inside&&(e=[new h.InsidePitchforkLinePaneView(this,this._model)]),this._setPaneViews(e)}else i.e(1583).then(i.bind(i,41829)).then(e=>{null===h&&(h=e),this._recreatePaneView()})}pointsCount(){return 3}name(){return"Pitchfork"}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,_)}static createProperties(e){var t=new o("linetoolpitchfork",e,!1,{range:[0,8]});return g._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,84806))).PitchForkDefinitionsViewModel}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("median").child("linewidth")],i=[e.child("median").child("color")],s=0;s<=g.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new p(i)),e.addChild("linesWidths",new u(t))}}g.LevelsCount=8,t.LineToolPitchfork=g},19085:(e,t,i)=>{"use strict";i.d(t,{LineToolPolyline:()=>l});var s=i(88537),r=i(86441),n=i(88564),o=i(49094),a=i(89857);class l extends a.LineDataSource{constructor(e,t,s,r){const n=t||l.createProperties();super(e,n,s,r),this._finished=!1,i.e(1583).then(i.bind(i,95907)).then(t=>{this._setPaneViews([new t.PolylinePaneView(this,e)])})}pointsCount(){return-1}name(){return"Polyline"}hasEditableCoordinates(){return!1}finish(){this._finished=!0,this._lastPoint=null,this.normalizePoints(),this.createServerPoints()}addPoint(e,t,i){var n;if(this._finished)return!0;const a=(0,s.ensureNotNull)(this.priceScale()),l=this._model.timeScale().indexToCoordinate(e.index),c=e.price,h=(0,s.ensure)(null===(n=this.ownerSource())||void 0===n?void 0:n.firstValue()),d=a.priceToCoordinate(c,h),u=(0,o.interactionTolerance)().minDistanceBetweenPoints;if(this._points.length>0){ +const e=this._points[this._points.length-1],i=this._model.timeScale().indexToCoordinate(e.index),s=e.price,n=a.priceToCoordinate(s,h),o=new r.Point(l,d).subtract(new r.Point(i,n)).length();if(!(null==t?void 0:t.isApiEvent())&&oe.PolylinesDefinitionsViewModel)}static _configureProperties(e){a.LineDataSource._configureProperties(e),e.addExclusion("filled")}}},96295:(e,t,i)=>{"use strict";i.d(t,{PositionAveragePriceAxisView:()=>r});var s=i(22474);class r extends s.LineToolPriceAxisView{_formatPrice(e,t){return this._source.formatter().format(e)}}},2157:(e,t,i)=>{"use strict";var s=i(2587).LineToolTrading,r=i(89857).LineDataSource,n=i(96295).PositionAveragePriceAxisView,o=i(53664),a=i(88564).DefaultProperty,l=i(97098).PriceFormatter;const c=i(67337);var h=i(59555).sortSourcesPreOrdered.LineToolPosition;function d(e){return null==e?e="":e+="",e}class u{constructor(e){this._line=e,this._data={bodyText:"position",quantityText:"0"},this._closeEnabled=!0,this._direction="buy",this._profitState="neutral"}setDirection(e){return this._direction=e,this._line.updateAllViewsAndRedraw(),this}setProfitState(e){return this._profitState=e,this._line.updateAllViewsAndRedraw(),this}getPrice(){return this._line.points().length>0?this._line.points()[0].price:this._line._timePoint.length>0?this._line._timePoint[0].price:void 0}setPrice(e){if(this._line.points().length>0){var t=this._line.points()[0];t.price=e,this._line._points[0]=t,this._line.normalizePoints(),this._line.updateAllViewsAndRedraw()}return this._line._timePoint.length>0&&(this._line._timePoint[0].price=e),this}getText(){return this._data.bodyText}setText(e){return this._data.bodyText=e||"",this._line.updateAllViewsAndRedraw(),this}setTooltip(e){ +return this._line.properties().tooltip.setValue(d(e)),this}getTooltip(){return this._line.properties().tooltip.value()}setProtectTooltip(e){return this._line.properties().protectTooltip.setValue(d(e)),this}getProtectTooltip(){return this._line.properties().protectTooltip.value()}setCloseTooltip(e){return this._line.properties().closeTooltip.setValue(d(e)),this}getCloseTooltip(){return this._line.properties().closeTooltip.value()}setReverseTooltip(e){return this._line.properties().reverseTooltip.setValue(d(e)),this}getReverseTooltip(){return this._line.properties().reverseTooltip.value()}getQuantity(){return this._data.quantityText}setQuantity(e){return this._data.quantityText=e||"",this._line.updateAllViewsAndRedraw(),this}getExtendLeft(){var e=this._line.properties().extendLeft.value();return"inherit"===e?this._line._model.properties().tradingProperties.extendLeft.value():e}setExtendLeft(e){return this._line.properties().extendLeft.setValue(e),this}getLineLength(){var e=this._line.properties().lineLength.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineLength.value():e}setLineLength(e){return this._line.properties().lineLength.setValue(Math.max(0,Math.min(e,100))),this}getLineColor(){var e=this._line.properties();return("buy"===this._direction?e.lineBuyColor:e.lineSellColor).value()}setLineColor(e){return"buy"===this._direction?this.setLineBuyColor(e):this.setLineSellColor(e),this}setLineBuyColor(e){return this._line.properties().lineBuyColor.setValue(e),this}setLineSellColor(e){return this._line.properties().lineSellColor.setValue(e),this}getLineStyle(){var e=this._line.properties().lineStyle.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineStyle.value():e}setLineStyle(e){return this._line.properties().lineStyle.setValue(e),this}getLineWidth(){var e=this._line.properties().lineWidth.value();return"inherit"===e?this._line._model.properties().tradingProperties.lineWidth.value():e}setLineWidth(e){return this._line.properties().lineWidth.setValue(e),this}getBodyBorderColor(){var e=this._line.properties();return("buy"===this._direction?e.bodyBorderBuyColor:e.bodyBorderSellColor).value()}setBodyBorderColor(e){return"buy"===this._direction?this.setBodyBorderBuyColor(e):this.setBodyBorderSellColor(e),this}setBodyBorderBuyColor(e){return this._line.properties().bodyBorderBuyColor.setValue(e),this}setBodyBorderSellColor(e){return this._line.properties().bodyBorderSellColor.setValue(e),this}getBodyBackgroundColor(){return o.getColorFromProperties(this._line.properties().bodyBackgroundColor,this._line.properties().bodyBackgroundTransparency)}setBodyBackgroundColor(e){return o.setColorToProperties(e,this._line.properties().bodyBackgroundColor,this._line.properties().bodyBackgroundTransparency),this}getBodyTextColor(){var e=this._line.properties();return("positive"===this._profitState?e.bodyTextPositiveColor:"negative"===this._profitState?e.bodyTextNegativeColor:e.bodyTextNeutralColor).value()}setBodyTextColor(e){ +return"positive"===this._profitState?this.setBodyTextPositiveColor(e):"negative"===this._profitState?this.setBodyTextNegativeColor(e):this.setBodyTextNeutralColor(e),this}setBodyTextPositiveColor(e){return this._line.properties().bodyTextPositiveColor.setValue(e),this}setBodyTextNegativeColor(e){return this._line.properties().bodyTextNegativeColor.setValue(e),this}setBodyTextNeutralColor(e){return this._line.properties().bodyTextNeutralColor.setValue(e),this}getBodyFont(){return o.getFontFromProperties(this._line.properties().bodyFontFamily,this._line.properties().bodyFontSize,this._line.properties().bodyFontBold,this._line.properties().bodyFontItalic)}setBodyFont(e){return o.setFontToProperties(e,this._line.properties().bodyFontFamily,this._line.properties().bodyFontSize,this._line.properties().bodyFontBold,this._line.properties().bodyFontItalic),this}getQuantityBorderColor(){var e=this._line.properties();return("buy"===this._direction?e.quantityBorderBuyColor:e.quantityBorderSellColor).value()}setQuantityBorderColor(e){return"buy"===this._direction?this.setQuantityBorderBuyColor(e):this.setQuantityBorderSellColor(e),this}setQuantityBorderBuyColor(e){return this._line.properties().quantityBorderBuyColor.setValue(e),this}setQuantityBorderSellColor(e){return this._line.properties().quantityBorderSellColor.setValue(e),this}getQuantityBackgroundColor(){var e=this._line.properties();return("buy"===this._direction?e.quantityBackgroundBuyColor:e.quantityBackgroundSellColor).value()}setQuantityBackgroundColor(e){return"buy"===this._direction?this.setQuantityBackgroundBuyColor(e):this.setQuantityBackgroundSellColor(e),this}setQuantityBackgroundBuyColor(e){return this._line.properties().quantityBackgroundBuyColor.setValue(e),this}setQuantityBackgroundSellColor(e){return this._line.properties().quantityBackgroundSellColor.setValue(e),this}getQuantityTextColor(){return o.getColorFromProperties(this._line.properties().quantityTextColor,this._line.properties().quantityTextTransparency)}setQuantityTextColor(e){return o.setColorToProperties(e,this._line.properties().quantityTextColor,this._line.properties().quantityTextTransparency),this}getQuantityFont(){return o.getFontFromProperties(this._line.properties().quantityFontFamily,this._line.properties().quantityFontSize,this._line.properties().quantityFontBold,this._line.properties().quantityFontItalic)}setQuantityFont(e){return o.setFontToProperties(e,this._line.properties().quantityFontFamily,this._line.properties().quantityFontSize,this._line.properties().quantityFontBold,this._line.properties().quantityFontItalic),this}getReverseButtonBorderColor(){var e=this._line.properties();return("buy"===this._direction?e.reverseButtonBorderBuyColor:e.reverseButtonBorderSellColor).value()}setReverseButtonBorderColor(e){return"buy"===this._direction?this.setReverseButtonBorderBuyColor(e):this.setReverseButtonBorderSellColor(e),this}setReverseButtonBorderBuyColor(e){return this._line.properties().reverseButtonBorderBuyColor.setValue(e),this}setReverseButtonBorderSellColor(e){ +return this._line.properties().reverseButtonBorderSellColor.setValue(e),this}getReverseButtonBackgroundColor(){return o.getColorFromProperties(this._line.properties().reverseButtonBackgroundColor,this._line.properties().reverseButtonBackgroundTransparency)}setReverseButtonBackgroundColor(e){return o.setColorToProperties(e,this._line.properties().reverseButtonBackgroundColor,this._line.properties().reverseButtonBackgroundTransparency),this}getReverseButtonIconColor(){var e=this._line.properties();return("buy"===this._direction?e.reverseButtonIconBuyColor:e.reverseButtonIconSellColor).value()}setReverseButtonIconColor(e){return"buy"===this._direction?this.setReverseButtonIconBuyColor(e):this.setReverseButtonIconSellColor(e),this}setReverseButtonIconBuyColor(e){return this._line.properties().reverseButtonIconBuyColor.setValue(e),this}setReverseButtonIconSellColor(e){return this._line.properties().reverseButtonIconSellColor.setValue(e),this}getCloseButtonBorderColor(){var e=this._line.properties();return("buy"===this._direction?e.closeButtonBorderBuyColor:e.closeButtonBorderSellColor).value()}setCloseButtonBorderColor(e){return"buy"===this._direction?this.setCloseButtonBorderBuyColor(e):this.setCloseButtonBorderSellColor(e),this}setCloseButtonBorderBuyColor(e){return this._line.properties().closeButtonBorderBuyColor.setValue(e),this}setCloseButtonBorderSellColor(e){return this._line.properties().closeButtonBorderSellColor.setValue(e),this}getCloseButtonBackgroundColor(){return o.getColorFromProperties(this._line.properties().closeButtonBackgroundColor,this._line.properties().closeButtonBackgroundTransparency)}setCloseButtonBackgroundColor(e){return o.setColorToProperties(e,this._line.properties().closeButtonBackgroundColor,this._line.properties().closeButtonBackgroundTransparency),this}getCloseButtonIconColor(){var e=this._line.properties();return("buy"===this._direction?e.closeButtonIconBuyColor:e.closeButtonIconSellColor).value()}setCloseButtonIconColor(e){return"buy"===this._direction?this.setCloseButtonIconBuyColor(e):this.setCloseButtonIconSellColor(e),this}setCloseButtonIconBuyColor(e){return this._line.properties().closeButtonIconBuyColor.setValue(e),this}setCloseButtonIconSellColor(e){return this._line.properties().closeButtonIconSellColor.setValue(e),this}block(){this._blocked=!0,this._line.updateAllViewsAndRedraw()}unblock(){this._blocked=!1,this._line.updateAllViewsAndRedraw()}isFunction(e){return"function"==typeof e}onReverse(e,t){return t?this.isFunction(t)&&(this._onReverseData=e,this._onReverseCallback=t):this.isFunction(e)&&(this._onReverseCallback=e),this}callOnReverse(){this.isFunction(this._onReverseCallback)&&this._onReverseCallback.call(this,this._onReverseData)}isOnReverseCallbackPresent(){return this.isFunction(this._onReverseCallback)}onClose(e,t){return t?this.isFunction(t)&&(this._onCloseData=e,this._onCloseCallback=t):this.isFunction(e)&&(this._onCloseCallback=e),this}setCloseEnabled(e){return this._closeEnabled===e||(this._closeEnabled=e, +this._onCloseCallback&&this._line.updateAllViewsAndRedraw()),this}isCloseEnabled(){return this._closeEnabled}callOnClose(){this.isFunction(this._onCloseCallback)&&this._closeEnabled&&this._onCloseCallback.call(this,this._onCloseData)}isOnCloseCallbackPresent(){return this._closeEnabled&&this.isFunction(this._onCloseCallback)}onModify(e,t){return t?this.isFunction(t)&&(this._onModifyData=e,this._onModifyCallback=t):this.isFunction(e)&&(this._onModifyCallback=e),this}callOnModify(){this.isFunction(this._onModifyCallback)&&this._onModifyCallback.call(this,this._onModifyData)}onContextMenu(e,t){return t?this.isFunction(t)&&(this._onContextMenuData=e,this._onContextMenuCallback=t):this.isFunction(e)&&(this._onContextMenuCallback=e),this}shouldShowContextMenu(){return this.isFunction(this._onContextMenuCallback)}callOnContextMenu(){if(this.isFunction(this._onContextMenuCallback))return this._onContextMenuCallback.call(this,this._onContextMenuData)}remove(){this._line._model.removeSource(this._line),delete this._line}}class p extends s{constructor(e,t){super(e,t||p.createProperties()),this._adapter=new u(this),i.e(1583).then(i.t.bind(i,69127,19)).then(({PositionPaneView:e})=>{this._setPaneViews([new e(this,this._model)])});var s=e.mainSeries().symbolInfo(),r=null!==s?s.pricescale:100,n=null!==s&&s.fractional?s.minmov:1,o=null!==s&&s.fractional,a=null!==s?s.minmove2:void 0;this._formatter=new l(r,n,o,a)}zorder(){return h}isSpeciallyZOrderedSource(){return!0}setPoint(e,t,i){this._points[e]=t,this.normalizePoints()}addPoint(e,t){return this._points.push(e),this._lastPoint=null,this.normalizePoints(),this.createServerPoints(),!0}name(){return"Position"}createPriceAxisView(e){return this._priceAxisView=new n(this,{pointIndex:e,backgroundPropertyGetter:()=>this._adapter.getLineColor()}),this._priceAxisView}paneViews(){return TradingView.printing&&!c.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showPositions.value()?r.prototype.paneViews.call(this):null}priceAxisViews(e,t){return TradingView.printing&&!c.enabled("snapshot_trading_drawings")?null:this._model.properties().tradingProperties.showPositions.value()?r.prototype.priceAxisViews.call(this,e,t):null}hasContextMenu(){return this._adapter.shouldShowContextMenu()}contextMenuItems(){return this._adapter.callOnContextMenu()}formatter(){return this._formatter}static createProperties(e){var t=new a("linetoolposition",e,!1,!1);return p._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolPosition=p},19582:(e,t,i)=>{"use strict";var s,r;i.r(t),i.d(t,{AlertStatus:()=>s,Direction:()=>r}),function(e){e[e.Waiting=0]="Waiting",e[e.Success=1]="Success",e[e.Failure=2]="Failure"}(s||(s={})),function(e){e[e.Up=1]="Up",e[e.Down=2]="Down"}(r||(r={}))},12346:(e,t,i)=>{"use strict";var s=i(88537).ensureNotNull,r=i(89857).LineDataSource,n=i(88564).DefaultProperty,o=i(19582);class a extends r{constructor(e,t,s,r){super(e,t||a.createProperties(),s,r),this._predictionPaneView=null;const n=this._model.mainSeries() +;n.properties().interval.subscribe(this,()=>{this.setStatus(o.AlertStatus.Waiting)}),n.dataEvents().dataUpdated().subscribe(this,this.checkAlert),i.e(1583).then(i.t.bind(i,58090,19)).then(({PredictionPaneView:e})=>{this._predictionPaneView=new e(this,this._model),this._setPaneViews([this._predictionPaneView])})}destroy(){const e=this._model.mainSeries();e.properties().interval.unsubscribeAll(this),e.dataEvents().dataUpdated().unsubscribeAll(this),super.destroy()}dataAndViewsReady(){return r.prototype.dataAndViewsReady.call(this)&&this._predictionPaneView&&this._predictionPaneView.iconsReady()}isSynchronizable(){return!1}status(){return this._properties.status.value()}setStatus(e){return this._properties.status.setValue(e)}pointsCount(){return 2}name(){return"Forecast"}restorePoints(e,t,i){super.restorePoints(e,t,i),this.checkAlert()}checkAlert(){if(!this.isSourceHidden()&&!(this._points.length<2||this._model.mainSeries().bars().isEmpty())){var e=this._points[1];if(this.status())e.index>this._model.timeScale().baseIndex()&&this.setStatus(o.AlertStatus.Waiting);else{var t=this._model.mainSeries().bars().valueAt(e.index);if(null!==t){var i=this.direction();if(i===o.Direction.Up&&t[TradingView.HIGH_PLOT]>=e.price)this.setStatus(o.AlertStatus.Success);else if(i===o.Direction.Down&&t[TradingView.LOW_PLOT]<=e.price)this.setStatus(o.AlertStatus.Success);else{var r=s(this._model.mainSeries().bars().lastIndex());e.index!==r&&this.setStatus(o.AlertStatus.Failure)}}}}}addPoint(e){var t=r.prototype.addPoint.call(this,e);return t&&this.checkAlert(),t}endChanging(){super.endChanging(),this.setStatus(o.AlertStatus.Waiting),this.checkAlert()}onData(e){super.onData(e),this.checkAlert()}endMoving(e,t,i){super.endMoving(e,t,i),this.setStatus(o.AlertStatus.Waiting),this.checkAlert()}direction(){if(this.points().length<2)return o.Direction.Up;var e=this.points()[0];return this.points()[1].price>e.price?o.Direction.Up:o.Direction.Down}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,53697))).PredictionDefinitionsViewModel}cloneable(){return!1}static createProperties(e){var t=new n("linetoolprediction",e);return a._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e),e.merge({status:o.AlertStatus.Waiting})}}t.LineToolPrediction=a},3113:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty,n=i(37865).LineToolColorsProperty;class o extends s{constructor(e,t,s,r){super(e,t||o.createProperties(),s,r),i.e(1583).then(i.t.bind(i,69741,19)).then(({PriceLabelPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 1}name(){return"Price Label"}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,61641))).PriceLabelDefinitionsViewModel}static createProperties(e){var t=new r("linetoolpricelabel",e);return o._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e), +e.addChild("linesColors",new n([e.childs().borderColor])),e.addChild("textsColors",new n([e.childs().color]))}}t.LineToolPriceLabel=o},7648:(e,t,i)=>{"use strict";i.d(t,{LineToolPriceNote:()=>c});var s=i(88537),r=i(88564),n=i(2015),o=i.n(n),a=i(89857),l=i(33291);class c extends a.LineDataSource{constructor(e,t,s,r){super(e,t||c.createProperties(),s,r),this._labelMovingDelta=null,i.e(1583).then(i.bind(i,19226)).then(t=>{this._setPaneViews([new t.PriceNotePaneView(this,e)])})}pointsCount(){return 2}name(){return"Price Note"}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}startMoving(e,t,i){if(1===t){if(this.isSourceHidden())return;const i=(0,s.ensureDefined)(e.logical),r=this.points()[1];this._labelMovingDelta={index:r.index-i.index,price:r.price-i.price},this.startChanging(t,i)}else this._labelMovingDelta=null,super.startMoving(e,t,i)}move(e,t,i){if(null!==this._labelMovingDelta){const t=(0,s.ensureDefined)(e.logical),r={index:t.index+this._labelMovingDelta.index,price:t.price+this._labelMovingDelta.price};this.setPoint(1,r,i),this.updateAllViews((0,l.dataSourceChangeEvent)(this.id()))}else super.move(e,t,i)}endMoving(e,t,i){return null!==this._labelMovingDelta?(this._labelMovingDelta=null,this.endChanging(!1,e)):super.endMoving(e,t,i)}static createProperties(e){const t=new r.DefaultProperty("linetoolpricenote",e);return c._configureProperties(t),t}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,90727)).then(e=>e.PriceNoteDefinitionsViewModel)}_snapTo45DegreesAvailable(){return!0}static _configureProperties(e){a.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(o())("")),e.addExclusion("text"),e.hasChild("backgroundsColors")&&e.removeProperty("backgroundsColors"),e.hasChild("textsColors")&&e.removeProperty("textsColors")}}},66602:(e,t,i)=>{"use strict";i.d(t,{LineToolPriceRange:()=>p});var s=i(89857),r=i(88537),n=i(24633),o=i(45383),a=i(85402);const l={...a.nonThemedFactoryDefaultsBase,extendLeft:!1,extendRight:!1},c=a.themedFactoryDefaultsBase,h=(0,o.extractAllPropertiesKeys)((0,r.ensureDefined)(c.get(n.StdTheme.Light))),d=(0,o.extractAllPropertiesKeys)(l);class u extends o.ThemedDefaultProperty{static create(e){return new u("linetoolpricerange",()=>(0,o.factoryDefaultsForCurrentTheme)(l,c),d,h,e)}}class p extends s.LineDataSource{constructor(e,t,s,r){super(e,t||p.createProperties(),s,r),i.e(1583).then(i.bind(i,25965)).then(e=>{this._setPaneViews([new e.PriceRangePaneView(this,this._model)])})}pointsCount(){return 2}name(){return"Price Range"}static createProperties(e){const t=u.create(e);return p._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,80447))).GeneralDatePriceRangeDefinitionsViewModel}static _configureProperties(e){s.LineDataSource._configureProperties(e)}}},35344:(e,t,i)=>{ +"use strict";var s=i(34580).LevelsProperty,r=i(53804).LineToolFibWedgeBase,n=i(37865).LineToolColorsProperty;class o extends r{constructor(e,t,s,r){super(e,t||o.createProperties(),s,r),i.e(1583).then(i.t.bind(i,76207,19)).then(({ProjectionLinePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return 1}name(){return"Projection"}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,12590))).ProjectionDefinitionsViewModel}static createProperties(e){var t=new s("linetoolprojection",e,!1,{range:[1,1]});return o._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e),e.addChild("linesColors",new n([e.trendline.color]))}}t.LineToolProjection=o},31702:(e,t,i)=>{"use strict";var s=i(57649).LineToolTrendLine,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Ray"}static createProperties(e){var t=new r("linetoolray",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolRay=n},20258:(e,t,i)=>{"use strict";i.d(t,{LineToolRectangle:()=>h});var s=i(86441),r=i(88564),n=i(2015),o=i.n(n),a=i(89857),l=i(37865),c=i(88537);class h extends a.LineDataSource{constructor(e,t,s,r){const n=t||h.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,79090)).then(({RectanglePaneView:t})=>{const i=[new t(this,e)];this._setPaneViews(i)})}pointsCount(){return 2}textColorsProperty(){return this.properties().childs().showLabel.value()?super.textColorsProperty():null}name(){return"Rectangle"}setPoint(e,t,i){if(e<2&&super.setPoint(e,t,i),i&&i.shift()){const i=this._getAnchorPointForIndex(e);if(e>=4)return this._correctMiddlePoints(e,t,i),void this.normalizePoints();this._snapPoint45Degree(t,i)}switch(e){case 2:this._points[1].price=t.price,this._points[0].index=t.index;break;case 3:this._points[0].price=t.price,this._points[1].index=t.index;break;case 4:this._points[0].index=t.index;break;case 5:this._points[1].index=t.index;break;case 6:this._points[0].price=t.price;break;case 7:this._points[1].price=t.price}this.normalizePoints()}getPoint(e){return e<2?super.getPoint(e):this._getAnchorPointForIndex(e)}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}static createProperties(e){const t=new r.DefaultProperty("linetoolrectangle",e);return h._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,39457)).then(e=>e.RectangleDefinitionsViewModel)}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}_snapPoint45Degree(e,t,i){const s=this.m_priceScale,r=this.ownerSource();if(null===s||null===r)return;const n=r.firstValue();if(null===n)return;const o=this._model.timeScale(),a=(0,c.ensureNotNull)(this.pointToScreenPoint(e)),l=(0, +c.ensureNotNull)(this.pointToScreenPoint(t)),h=a.x-l.x,d=a.y-l.y,u=h<0?-1:1,p=d<0?-1:1,_=Math.max(Math.abs(h),Math.abs(d)),m=Math.round(o.coordinateToIndex(l.x+_*u)),g=Math.abs(o.indexToCoordinate(m)-l.x),f=s.coordinateToPrice(l.y+g*p,n);e.index=m,e.price=f}_correctMiddlePoints(e,t,i){e<6?this._correctRightLeftMiddlePoint(e,t,i):this._correctTopBottomMiddlePoint(e,t,i)}_correctRightLeftMiddlePoint(e,t,i){const r=(0,c.ensureNotNull)(this.pointToScreenPoint(t)),n=(0,c.ensureNotNull)(this.pointToScreenPoint(i)),o=(0,c.ensureNotNull)(this.pointToScreenPoint(this._points[0])),a=(0,c.ensureNotNull)(this.pointToScreenPoint(this._points[1]));let l=r.x-n.x;if(0===l)return;const h=o.x{"use strict";i.d(t,{LineToolRiskRewardBase:()=>v});var s=i(88537),r=i(95505),n=i(71053),o=i(69927),a=i(89857),l=i(10324),c=i(41628),h=i(97938);class d extends h.PriceAxisView{constructor(e,t){super(),this._source=e,this._data=t}_updateRendererData(e,t,i){if(e.visible=!1,!this._showAxisLabel())return;const s=this._source.priceScale();if(0===this._source.points().length||null===s||s.isEmpty())return;const r=this._source.ownerSource(),n=null!==r?r.firstValue():null;if(null===n)return;const o=this._data.priceProperty.value(),a=this._data.colorProperty.value();i.background=a,i.textColor=this.generateTextColor(a),i.coordinate=s.priceToCoordinate(o,n),e.text=s.formatPrice(o,n),e.visible=!0}_showAxisLabel(){return this._source.properties().childs().showPriceLabels.value()}}var u=i(2015),p=i.n(u);class _ extends(p()){constructor(e,t){super(),this._lineSource=e,this._pointIndex=t}value(){const e=this._lineSource.points()[this._pointIndex].price;return this._formatAndParsePrice(e)}state(){return this.value()}merge(e,t){return this.setValue(e),t?[]:null}_formatAndParsePrice(e){const t=(0,s.ensureNotNull)(this._lineSource.ownerSource()).formatter();if(t.parse){const i=t.format(e),s=t.parse(i);return s.res?s.value:e}return e}}class m extends _{constructor(e){super(e,0)}setValue(e){const t=this._lineSource.points()[this._pointIndex];this._lineSource.startChanging(this._pointIndex,t),t.price=parseFloat(""+e),this._lineSource.setPoint(this._pointIndex,t),this._lineSource.recalculate(),this._lineSource.model().updateSource(this._lineSource),this._listeners.fire(this),this._lineSource.endChanging(!1,!1),this._lineSource.syncPriceLevels()}}class g extends _{constructor(e){super(e,1)}value(){const e=this._lineSource.stopPrice();return this._formatAndParsePrice(e)}setValue(e){const t=Math.round(Math.abs(e-this._lineSource.entryPrice())*this._lineSource.model().mainSeries().base());this._lineSource.properties().childs().stopLevel.setValue(t),this._lineSource.syncPriceLevels()}}class f extends _{constructor(e){super(e,2)}value(){const e=this._lineSource.profitPrice();return this._formatAndParsePrice(e)}setValue(e){const t=Math.round(Math.abs(e-this._lineSource.entryPrice())*this._lineSource.model().mainSeries().base());this._lineSource.properties().childs().profitLevel.setValue(t),this._lineSource.syncPriceLevels()}}class v extends a.LineDataSource{constructor(e,t,n,a){if(super(e,t,n,a),this._syncStateExclusions=["points","entryPrice","stopPrice","targetPrice","stopLevel","profitLevel","riskSize","qty","amountTarget","amountStop"],!t.hasChild("stopLevel")&&!t.hasChild("profitLevel")){const i=(0,s.ensureNotNull)(e.timeScale().visibleBarsStrictRange()),r=i.firstBar(),n=i.lastBar();let a=(0, +s.ensureNotNull)(e.mainSeries().priceRange(r,n));const l=e.mainSeries().priceScale();if(l.isLog()){const e=l.logicalToPrice(a.minValue()),t=l.logicalToPrice(a.maxValue());a=new o.PriceRange(e,t)}if(a&&!a.isEmpty()){const i=Math.round(.2*a.length()*e.mainSeries().base());t.merge({stopLevel:i,profitLevel:i})}}t.childs().stopLevel.listeners().subscribe(this,this.recalculate),t.childs().stopLevel.listeners().subscribe(null,()=>{this.properties().childs().stopPrice.childChanged(null)}),t.childs().profitLevel.listeners().subscribe(this,this.recalculate),t.childs().profitLevel.listeners().subscribe(null,()=>{this.properties().childs().targetPrice.childChanged(null)}),t.addChild("entryPrice",new m(this)),t.addChild("stopPrice",new g(this)),t.addChild("targetPrice",new f(this)),t.hasChild("riskSize")||t.addProperty("riskSize",0),t.hasChild("qty")||t.addProperty("qty",0),t.hasChild("amountTarget")||t.addProperty("amountTarget",t.childs().accountSize.value()),t.hasChild("amountStop")||t.addProperty("amountStop",t.childs().accountSize.value()),t.addExclusion("riskSize"),t.addExclusion("qty"),t.addExclusion("amountTarget"),t.addExclusion("amountStop"),this._riskInPercentsFormatter=new r.NumericFormatter(2),this._riskInMoneyFormatter=new r.NumericFormatter,t.childs().risk.subscribe(this,this._recalculateRiskSize),t.childs().accountSize.subscribe(this,this._recalculateRiskSize),t.childs().riskDisplayMode.subscribe(this,this._recalculateRisk),t.childs().riskDisplayMode.subscribe(this,this._recalculateRiskSize),t.childs().entryPrice.subscribe(this,this._recalculateRiskSize),t.childs().stopPrice.subscribe(this,this._recalculateRiskSize),t.childs().profitLevel.subscribe(this,this._recalculateRiskSize),t.childs().profitLevel.subscribe(this,this.syncPriceLevels.bind(this)),t.childs().stopLevel.subscribe(this,this._recalculateRiskSize),t.childs().stopLevel.subscribe(this,this.syncPriceLevels.bind(this)),t.childs().qty.subscribe(this,this._recalculateRiskSize),e.mainSeries().dataEvents().dataUpdated().subscribe(this,this._onSeriesUpdated),this.pointAdded().subscribe(this,e=>{switch(e){case c.RiskRewardPointIndex.Entry:case c.RiskRewardPointIndex.Close:this._recalculateRiskSize(),this._recalculateQty()}}),this.pointChanged().subscribe(this,e=>{switch(e){case c.RiskRewardPointIndex.Entry:case c.RiskRewardPointIndex.Close:this._recalculateRiskSize(),this._recalculateQty()}}),t.childs().riskDisplayMode.value()===l.RiskDisplayMode.Percentage&&t.childs().risk.value()>100&&t.childs().riskDisplayMode.setValueSilently(l.RiskDisplayMode.Money),this.version=2,this._entryPriceAxisView=new d(this,{colorProperty:t.childs().linecolor,priceProperty:t.childs().entryPrice}),this._stopPriceAxisView=new d(this,{colorProperty:t.childs().stopBackground,priceProperty:t.childs().stopPrice}),this._profitPriceAxisView=new d(this,{colorProperty:t.childs().profitBackground,priceProperty:t.childs().targetPrice}),i.e(1583).then(i.bind(i,35362)).then(({RiskRewardPaneView:t})=>{const i=[new t(this,e)];this._setPaneViews(i)})}destroy(){ +this._model.mainSeries().dataEvents().dataUpdated().unsubscribeAll(this),super.destroy()}checkAlert(){this.recalculate()}calculatePL(e){return this.entryPrice()-e}lastBarData(){const e=this._model.mainSeries().bars().firstIndex(),t=this._model.mainSeries().bars().lastIndex();if(null===e||null===t||isNaN(e)||isNaN(t))return null;const i=this.points();if(4===i.length){const s=i[c.RiskRewardPointIndex.ActualClose];return s.indexMath.max(this._points[0].index,this._points[1].index)||this.checkAlert()}}},10324:(e,t,i)=>{"use strict";var s;i.d(t,{RiskDisplayMode:()=>s}),function(e){e.Percentage="percents",e.Money="money"}(s||(s={}))},41628:(e,t,i)=>{"use strict";var s;i.d(t,{RiskRewardPointIndex:()=>s}),function(e){e[e.Entry=0]="Entry",e[e.Close=1]="Close",e[e.ActualEntry=2]="ActualEntry",e[e.ActualClose=3]="ActualClose"}(s||(s={}))},34291:(e,t,i)=>{"use strict";var s=i(88537).ensureNotNull,r=i(89857).LineDataSource,n=i(85733),o=i(88564).DefaultProperty,a=i(41628).RiskRewardPointIndex,l=i(10324).RiskDisplayMode,c=i(79029).LineToolRiskRewardBase,h=i(80643).isNumber;class d extends c{riskFormatter(e){return e===l.Percentage?this._riskInPercentsFormatter:this._riskInMoneyFormatter}getRiskStep(e){return e===l.Percentage?.01:1}_roundValue(e){return parseFloat(e.toFixed(2))}hasEditableCoordinates(){return!1}_recalculateRisk(){var e=this.properties(),t=e.riskDisplayMode.value(),i=e.riskSize.value(),s=e.accountSize.value(),r=e.risk.value();r=t===l.Percentage?this._roundValue(i/s*100):this._roundValue(s/100*r),this._riskInChange=!0,e.risk.setValue(this.riskFormatter(t).format(r)),this._riskInChange=!1}_recalculateRiskSize(){if(!this._riskInChange){var e=this.properties(),t=e.risk.value(),i=e.riskDisplayMode.value(),s=e.accountSize.value();i===l.Percentage?e.riskSize.setValue(t/100*s):t>s?(e.risk.setValue(s),e.riskSize.setValue(s)):e.riskSize.setValue(t)}}migrateVersion(e,t,i){if(1===e&&this._points.length>=1){var s=[];if(s.push(this._points[0]),n={price:(n=this._points[0]).price,index:this._getClosePointIndex(n.index)},s.push(n),this._points[1]&&s.push(this._points[1]),this._points[2]&&s.push(this._points[2]),this._points=s,this._timePoint.length>=1){var r=[],n=this._timePoint[0];r.push(n);var o={price:n.price,time_t:n.time_t,offset:this._getClosePointIndex(n.offset)};r.push(o),this._timePoint[1]&&s.push(this._points[1]),this._timePoint[2]&&s.push(this._points[2]),this._timePoint=r}}}priceAxisViews(e,t){return this.isSourceHidden()||t!==this.priceScale()||this._model.paneForSource(this)!==e?null:[this._entryPriceAxisView,this._stopPriceAxisView,this._profitPriceAxisView]}updateAllViews(){ +this.isActualSymbol()&&this._properties.visible.value()&&(n.hideAllDrawings().value()&&this.userEditEnabled()||(super.updateAllViews(),this._entryPriceAxisView.update(),this._stopPriceAxisView.update(),this._profitPriceAxisView.update()))}restoreExternalState(e){if(h(e.entryPrice)){if(e=Object.assign({},e),!this.isActualSymbol())this._timePoint[0].price=e.entryPrice,delete e.entryPrice;this.properties().merge(e)}else super.restoreExternalState(e)}_changeEntryPoint(e){var t=this.properties().stopPrice.value(),i=this.properties().targetPrice.value(),s=1/this._model.mainSeries().base(),r=Math.min(t,i)+s,n=Math.max(t,i)-s;e.price=Math.max(r,Math.min(n,this._roundPrice(e.price))),super.setPoint(0,e),this.properties().stopPrice.setValue(t),this.properties().targetPrice.setValue(i)}setPoint(e,t,i){if(this.isActualSymbol()){switch(this._muteSyncLineStyle(),e){case 0:this._changeEntryPoint(t);break;case 2:this.properties().stopPrice.setValue(this.preparseStopPrice(t.price));break;case 3:this.properties().targetPrice.setValue(this.preparseProfitPrice(t.price));break;case 1:t.price=this._roundPrice(t.price),super.setPoint(1,t),this.recalculate()}this._unmuteSyncLineStyleWithoutApplyingChanges(),this.syncPriceLevels()}}getPoint(e){switch(e){case 0:return this._points[0];case 1:return{index:this._points[1].index,price:this._points[0].price};case 2:return{index:this._points[0].index,price:this.stopPrice()};case 3:return{index:this._points[0].index,price:this.profitPrice()}}return null}setPoints(e){this._muteSyncLineStyle(),super.setPoints(e),this.recalculate(),this._unmuteSyncLineStyleWithoutApplyingChanges(),this.syncPriceLevels()}syncPriceLevels(){if(this.linkKey().value()){var e=this.properties(),t={entryPrice:e.entryPrice.value(),stopLevel:e.stopLevel.value(),profitLevel:e.profitLevel.value()};n.changeLineStyle({linkKey:this.linkKey().value(),state:t,model:this._model})}}pointsCount(){return 1}name(){return"Risk/Reward"}addPoint(e){e.price=this._roundPrice(e.price),super.addPoint(e,null,!0);var t={price:e.price,index:this._getClosePointIndex(e.index)};super._addPointIntenal(t,null,!0);var i=this.calculateActualEntry(e,t);i&&(super._addPointIntenal(i,null,!0),(t=this.findClosePoint(i,t))&&super._addPointIntenal(t,null,!0));return this._lastPoint=null,this.normalizePoints(),this.createServerPoints(),!0}setOwnerSource(e){super.setOwnerSource(e),this._model.mainSeries().symbolInfo()&&(this._recalculateAmount(),this._recalculateRiskSize(),this._recalculateQty())}_roundPrice(e){var t=this._model.mainSeries().base();return Math.round(e*t)/t}recalculate(){if(0!==this.points().length){var e=this.properties().targetPrice.value(),t=this.properties().stopPrice.value(),i=[this._points[0],this._points[1]],s=this.calculateActualEntry(this.points()[0],this.points()[1]);if(s){i.push(s);var r=this.findClosePoint(s,this.points()[1]);r&&i.push(r)}this._points=i,e!==this.properties().targetPrice.value()&&this.properties().targetPrice._listeners.fire(this.properties().targetPrice), +t!==this.properties().stopPrice.value()&&this.properties().stopPrice._listeners.fire(this.properties().stopPrice)}}start(){super.start(),this.recalculate()}startMoving(e,t,i){e.logical.price=this._roundPrice(e.logical.price),super.startMoving(e,t,i)}move(e,t,i){e.logical.price=this._roundPrice(e.logical.price),super.move(e,t,i),this.recalculate(),this._entryPriceAxisView.update()}_correctPoints(e,t){return!!this.isActualSymbol()&&r.prototype._correctPoints.call(this,[e[0],e[1]],t)}entryPrice(){return this.points()[0].price}findClosePoint(e,t){for(var i=this._model.mainSeries().bars(),r=s(i.firstIndex()),n=Math.max(e.index,r),o=s(i.lastIndex()),a=Math.min(o,t.index),l=n;l<=a;l++){var c=i.valueAt(l);if(null!==c){var h=this.checkStopPrice(c);if(null!=h)return{index:l,price:h}}}return null}calculateActualEntry(e,t){var i=this._model.mainSeries().bars();if(i.isEmpty())return null;for(var r=s(i.firstIndex()),n=Math.max(e.index,r),o=e.price,a=s(i.lastIndex()),l=Math.min(a,t.index),c=n;c<=l;c++){var h=i.valueAt(c);if(null!==h&&h[TradingView.HIGH_PLOT]>=o&&h[TradingView.LOW_PLOT]<=o)return{index:c,price:o}}return null}axisPoints(){if(!this._points[a.ActualEntry])return[];var e=this._points[a.ActualEntry],t=null;if(4===this._points.length)t=this._points[a.ActualClose];else{var i=this.lastBarData();if(!i)return[];t={index:i.index,price:i.closePrice}}return[e,t]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,18736))).RiskRewardDefinitionsViewModel}template(){var e=this.properties(),t=r.prototype.template.call(this);return t.stopLevel=e.stopLevel.value(),t.profitLevel=e.profitLevel.value(),t}_applyTemplateImpl(e){delete e.targetPrice,delete e.stopPrice,delete e.entryPrice,super._applyTemplateImpl(e);var t=this.properties();void 0!==e.stopLevel&&t.stopLevel.setValue(e.stopLevel),void 0!==e.profitLevel&&t.profitLevel.setValue(e.profitLevel)}getOrderTemplate(){return null}_propertiesStateExclusions(){return["entryPrice","stopPrice","targetPrice"]}static _configureProperties(e){r._configureProperties(e),e.addExclusion("stopLevel"),e.addExclusion("profitLevel"),e.addExclusion("stopPrice"),e.addExclusion("targetPrice"),e.addExclusion("entryPrice")}_getClosePointIndex(e){var t=this._model.timeScale(),i=Math.round(t.width()/t.barSpacing());return e+Math.max(3,Math.round(.15*i))}}d.version=2;class u extends d{constructor(e,t,i,s){super(e,t||u.createProperties(),i,s);var r=this.properties();r.entryPrice.subscribe(this,this._recalculateQty),r.stopPrice.subscribe(this,this._recalculateQty),r.riskSize.subscribe(this,this._recalculateQty),r.entryPrice.subscribe(this,this._recalculateAmount),r.profitLevel.subscribe(this,this._recalculateAmount),r.stopLevel.subscribe(this,this._recalculateAmount),r.accountSize.subscribe(this,this._recalculateAmount),r.riskSize.subscribe(this,this._recalculateAmount),r.qty.subscribe(this,this._recalculateAmount)}_recalculateQty(){if(0!==this.points().length){ +var e=this.properties(),t=e.entryPrice.value(),i=e.stopPrice.value(),s=e.riskSize.value(),r=this._model.mainSeries().pointValue(),n=s/(Math.abs(i-t)*r);e.qty.setValue(n)}}_recalculateAmount(){if(0!==this.points().length){var e=this.properties(),t=e.accountSize.value(),i=e.entryPrice.value(),s=e.qty.value(),r=e.stopPrice.value(),n=e.targetPrice.value(),o=this._model.mainSeries().pointValue(),a=this._roundValue(t+(i-n)*s*o),l=this._roundValue(t-(r-i)*s*o);e.amountTarget.setValue(a),e.amountStop.setValue(l)}}name(){return"Risk/Reward short"}stopPrice(){return this.entryPrice()+this.properties().stopLevel.value()/this._model.mainSeries().base()}profitPrice(){return this.entryPrice()-this.properties().profitLevel.value()/this._model.mainSeries().base()}preparseStopPrice(e){e=this._roundPrice(e);var t=this.entryPrice()+1/this._model.mainSeries().base();return Math.max(e,t)}preparseProfitPrice(e){e=this._roundPrice(e);var t=this.entryPrice()-1/this._model.mainSeries().base();return Math.min(e,t)}checkStopPrice(e){var t=this.stopPrice(),i=this.profitPrice();return e[TradingView.HIGH_PLOT]>=t?this.stopPrice():e[TradingView.LOW_PLOT]<=i?this.profitPrice():null}_orderSide(){throw new Error("not supported")}static createProperties(e){var t=new o("linetoolriskrewardshort",e);return u._configureProperties(t),t}static _configureProperties(e){d._configureProperties(e)}}class p extends d{constructor(e,t,i,s){super(e,t||p.createProperties(),i,s);var r=this.properties();r.entryPrice.subscribe(this,this._recalculateQty),r.stopPrice.subscribe(this,this._recalculateQty),r.riskSize.subscribe(this,this._recalculateQty),r.entryPrice.subscribe(this,this._recalculateAmount),r.profitLevel.subscribe(this,this._recalculateAmount),r.stopLevel.subscribe(this,this._recalculateAmount),r.accountSize.subscribe(this,this._recalculateAmount),r.riskSize.subscribe(this,this._recalculateAmount),r.qty.subscribe(this,this._recalculateAmount)}_recalculateQty(){if(0!==this.points().length){var e=this.properties(),t=e.entryPrice.value(),i=e.stopPrice.value(),s=e.riskSize.value(),r=this._model.mainSeries().pointValue(),n=s/(Math.abs(t-i)*r);e.qty.setValue(n)}}_recalculateAmount(){if(0!==this.points().length){var e=this.properties(),t=e.accountSize.value(),i=e.entryPrice.value(),s=e.qty.value(),r=e.stopPrice.value(),n=e.targetPrice.value(),o=this._model.mainSeries().pointValue(),a=this._roundValue(t+(n-i)*s*o),l=this._roundValue(t-(i-r)*s*o);e.amountTarget.setValue(a),e.amountStop.setValue(l)}}stopPrice(){return this.entryPrice()-this.properties().stopLevel.value()/this._model.mainSeries().base()}profitPrice(){return this.entryPrice()+this.properties().profitLevel.value()/this._model.mainSeries().base()}calculatePL(e){return e-this.entryPrice()}preparseStopPrice(e){e=this._roundPrice(e);var t=this.entryPrice()-1/this._model.mainSeries().base();return Math.min(e,t)}preparseProfitPrice(e){e=this._roundPrice(e);var t=this.entryPrice()+1/this._model.mainSeries().base();return Math.max(e,t)}checkStopPrice(e){var t=this.stopPrice(),i=this.profitPrice() +;return e[TradingView.LOW_PLOT]<=t?this.stopPrice():e[TradingView.HIGH_PLOT]>=i?this.profitPrice():null}name(){return"Risk/Reward long"}_orderSide(){throw new Error("not supported")}static createProperties(e){var t=new o("linetoolriskrewardlong",e);return p._configureProperties(t),t}static _configureProperties(e){d._configureProperties(e)}}t.LineToolRiskRewardLong=p,t.LineToolRiskRewardShort=u},61272:(e,t,i)=>{"use strict";var s=i(86441).Point,r=i(4652).distanceToLine,n=i(89857).LineDataSource,o=i(88564).DefaultProperty,a=i(37865).LineToolColorsProperty;class l extends n{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),i.e(1583).then(i.t.bind(i,33261,19)).then(({RotatedRectanglePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}startChanging(e,t){if(super.startChanging(e,t),0===e||1===e){var i=this._getPaneViews()[0],s=i._points[0],n=i._points[1],o=i._points[2];this._distance=r(s,n,o).distance}}setPoint(e,t,i){if(super.setPoint(e,t,i),0===e||1===e){var r=this._getPaneViews()[0];r.update();var n=r._points[0],o=r._points[1].subtract(n),a=new s(o.y,-o.x).normalized().scaled(this._distance),l=n.add(a),c=this.screenPointToPoint(l);this._points[2]=c}}endChanging(e,t){delete this._distance,super.endChanging(e,t)}pointsCount(){return 3}name(){return"Rotated Rectangle"}hasEditableCoordinates(){return!1}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,24965))).GeneralFiguresDefinitionsViewModel}_snapTo45DegreesAvailable(){return!0}static createProperties(e){var t=new o("linetoolrotatedrectangle",e);return l._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e),e.addChild("linesColors",new a([e.color]))}}t.LineToolRotatedRectangle=l},98390:(e,t,i)=>{"use strict";var s=i(34580).LevelsProperty,r=i(40100).LineToolPitchfork;class n extends r{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Modified Schiff Pitchfork"}static createProperties(e){var t=new s("linetoolschiffpitchfork",e,!1,{range:[0,8]});return n._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e)}}t.LineToolSchiffPitchfork=n},98225:(e,t,i)=>{"use strict";var s=i(34580).LevelsProperty,r=i(40100).LineToolPitchfork;class n extends r{constructor(e,t,i,s){super(e,t||n.createProperties(),i,s)}name(){return"Schiff Pitchfork"}static createProperties(e){var t=new s("linetoolschiffpitchfork2",e,!1,{range:[0,8]});return n._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e)}}t.LineToolSchiffPitchfork2=n},52827:(e,t,i)=>{"use strict";i.d(t,{LineToolSignpost:()=>f});var s=i(28353),r=i(88564),n=i(89857),o=i(2015),a=i.n(o);class l extends(a()){constructor(e){super(),this._source=e,e.pointAdded().subscribe(this,()=>this.listeners().fire(this)),e.pointChanged().subscribe(this,()=>this.listeners().fire(this))}value(){const e=this._source.properties().childs().position.value();return parseFloat(e.toFixed(2))}setValue(e){this._source.properties().childs().position.setValue(e), +this._source.model().updateSource(this._source),this.listeners().fire(this),this._source.syncMultichartState({pricesChanged:!1,indexesChanged:!1})}}var c=i(38015);class h extends c.LineDataSourcePointIndexProperty{constructor(e,t){super(e,t),this._source=e}_setPointImpl(e){this._source.setPointAndChangeIndex(this._pointIndex,e)}}var d=i(37865),u=i(88537),p=i(70581),_=i(85733);class m extends n.LineDataSource{constructor(){super(...arguments),this._startMovingAnchorY=NaN}priceSource(){return this.ownerSource()}addPoint(e,t,i){return super.addPoint(this._updatePositionAndCorrectPoint(e),t,i)}setPoint(e,t,i){super.setPoint(e,this._updatePositionAndCorrectPoint(t,!this.isPhantom()&&!this._allowChangeAnchorHorizontally()),i),this._syncPosition()}setPointAndChangeIndex(e,t,i){super.setPoint(e,this._updatePositionAndCorrectPoint(t,!1),i),this._syncPosition()}startMoving(e,t,i,s){s||(this._startMovingAnchorY=(0,u.ensureNotNull)(this._anchorYCoordinate())),super.startMoving(e,t,i)}move(e,t,i,s){var r;const n=(0,u.ensureDefined)((0,u.ensureNotNull)(this.startMovingPoint()).logical),o=(0,u.ensureDefined)(e.logical);if(!s&&0===t){const e=this._points[0],t=o.index-n.index,i=(0,u.ensureNotNull)(this.priceScale()),s=(0,u.ensure)(null===(r=this.ownerSource())||void 0===r?void 0:r.firstValue()),a=i.priceToCoordinate(o.price,s)-i.priceToCoordinate(n.price,s),l=this._startMovingAnchorY+a,c=i.coordinateToPrice(l,s);this._updatePositionAndCorrectPoint({index:e.index+t,price:c})}super.move(e,t,i),s||this._syncPosition()}_allowChangeAnchorHorizontally(){return!1}_updatePositionAndCorrectPoint(e,t){t&&(e.index=this._points[0].index);const i=this.priceSource();if(null===i)return e;const s=i.priceScale(),r=i.firstValue();if(null===s||s.isEmpty()||null===r)return e;const n=s.height();let o=n/2,a=e.price>=s.coordinateToPrice(o,r)?1:-1;const l=this._model.mainSeries();if(i===l){const t=l.data().search(this._baseSeriesIndexForPoint(e));if(null!==t){const i=(0,p.seriesPrice)(l,t,-1),n=(0,p.seriesPrice)(l,t,1);a=e.price>=i?1:-1,o=s.priceToCoordinate(1===a?n:i,r),e.price=1===a?Math.max(n,e.price):e.price}}const c=1===(-1===a!==s.isInverted()?-1:1)?o:n-o,h=s.priceToCoordinate(e.price,r),d=Math.min(n,Math.abs(h-o)),u=Math.max(0,Math.min(100,100*d/c))*a;return this.properties().childs().position.setValue(u),e}_baseSeriesIndexForPoint(e){return e.index}_syncPosition(){const e=this.linkKey().value();if(null!==e){const t={position:this.properties().childs().position.value()};(0,_.changeLineStyle)({linkKey:e,state:t,model:this._model})}}_anchorYCoordinate(){const e=this.priceSource();if(null===e)return null;const t=e.priceScale(),i=e.firstValue();if(null===t||t.isEmpty()||null===i)return null;const s=this._model.mainSeries(),r=this.customEvent();if(null===r)return null;let n=null;if(e===s&&(n=(0,p.seriesBasePosition)(s,r)),null===n&&(n=(0,p.noDataBasePosition)(r,t,i)),null===n)return null;const o=r.position(),a=t.priceToCoordinate(n.price,i);return(0,p.positionToCoordinate)(o,t.height(),a,(0,p.positionVisualDirection)(o,t.isInverted()))}}var g=i(72077) +;class f extends m{constructor(e,t,s,r){super(e,null!=t?t:f.createProperties(),s,r),this._image=null,this._currentImageURL=null,this._imageReady=!1,this._updateImage(),this.properties().childs().emoji.subscribe(this,()=>this._updateImage()),i.e(1583).then(i.bind(i,74328)).then(t=>{this._setPaneViews([new t.SignpostPaneView(this,e)])})}pointsCount(){return 1}name(){return"Signpost"}customEvent(){return{index:()=>{var e,t;return null!==(t=null===(e=this.points()[0])||void 0===e?void 0:e.index)&&void 0!==t?t:null},position:()=>this.properties().childs().position.value()}}image(){return this._imageReady&&this.properties().childs().showImage.value()?this._image:null}showInObjectTree(){return!this.isPhantom()&&super.showInObjectTree()}isPhantom(){return this._model.isPhantomLine(this)}clonePositionOffset(){return{barOffset:1,xCoordOffset:0,yCoordOffset:0}}template(){const e=super.template(),t=this.properties().childs();return e.text=t.text.value(),e.position=t.position.value(),e}static createProperties(e){const t=new r.DefaultProperty("linetoolsignpost",e);return f._configureProperties(t),t.hasChild("text")||t.addChild("text",new(a())((0,s.t)("Text"))),t.hasChild("position")||t.addChild("position",new(a())(50)),t.addExclusion("text"),t.addExclusion("position"),t.addChild("backgroundsColors",new d.LineToolColorsProperty([t.childs().plateColor])),t}_createPointProperty(e){super._createPointProperty(e);const t=this._pointsProperty.childs().points[e];t.removeProperty("price"),t.removeProperty("bar"),t.addChild("price",new l(this)),t.addChild("bar",new h(this,0))}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text),this.properties().childs().position.setValue(e.position)}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,30882)).then(e=>e.SignpostDefinitionsViewModel)}static _configureProperties(e){n.LineDataSource._configureProperties(e)}_updateImage(){const e=this._imageURL();if(this._currentImageURL!==e&&(this._currentImageURL=e,this._image=null,this._imageReady=!1,null!==this._currentImageURL)){const e=new Image;this._image=e,e.onload=()=>{this._imageReady=!0,this._model.updateSource(this),e.onload=null},e.crossOrigin="anonymous",e.src=this._currentImageURL}}_imageURL(){const e=this.properties().childs().emoji.value();return(0,g.getTwemojiUrl)(e,"png")||null}}f.supportPhantomMode=!0},15718:(e,t,i)=>{"use strict";i.d(t,{LineToolSineLine:()=>n});var s=i(88564),r=i(89857);class n extends r.LineDataSource{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),i.e(1583).then(i.bind(i,85)).then(e=>{this._setPaneViews([new e.SineLinePaneView(this,this._model)])})}pointsCount(){return 2}name(){return"Sine Line"}static createProperties(e){const t=new s.DefaultProperty("linetoolsineline",e);return n._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,66819))).CyclicAndSineLinesPatternDefinitionsViewModel}static _configureProperties(e){ +r.LineDataSource._configureProperties(e)}}},51934:(e,t,i)=>{"use strict";i.d(t,{StudyLineDataSource:()=>v});var s=i(88537),r=i(80643),n=i(71053),o=i(89857),a=i(88564),l=i(67072),c=i.n(l),h=i(54376),d=i(33266),u=i(27982),p=i(8671),_=i(66101),m=i(10480),g=i(65862),f=i(33291);class v extends o.LineDataSource{constructor(e,t,s,r,n,o){super(e,r,n,o),this._indexes=null,this._inputs=null,this._definitionsViewModel=null,this._pointsetPoints=null,this._loadedPlots=null,this._loadedGraphics=null,this._beingCreatedPaneView=null,this._anchorsPaneView=null,this._alignerCache=null,Promise.all([i.e(1583).then(i.bind(i,15788)),i.e(1583).then(i.bind(i,77557))]).then(t=>{const{LineToolBeingCreatedPaneView:i}=t[0],{StudyLineDataSourceAnchorsPaneView:s}=t[1];this._beingCreatedPaneView=new i(this,e),this._anchorsPaneView=new s(this,this.model()),this._model.lightUpdate()}),this._metaInfo=t,this._dataSource=new u.StudyDataSource(e.chartApi(),e.mainSeries().seriesSource(),s,t),this._dataSource.dataCleared().subscribe(this,this._onDataCleared),this._dataSource.dataUpdated().subscribe(this,this._onDataUpdated)}destroy(){this._dataSource.dataUpdated().unsubscribe(this,this._onDataUpdated),this._dataSource.dataCleared().unsubscribe(this,this._onDataCleared),this._dataSource.destroy(),null!==this._definitionsViewModel&&(this._definitionsViewModel.destroy(),this._definitionsViewModel=null),this._unsubscribeApplyInputsOnSeriesCompleted(),this._isDestroyed=!0,super.destroy()}stop(){super.stop(),this._isDestroyed||(this._dataSource.stop(),this.clearData())}start(){super.start(),this._isDestroyed||null===this._inputs||this._dataSource.start()}metaInfo(){return this._metaInfo}graphicsInfo(){return this._metaInfo.graphics}series(){return this._model.mainSeries()}translatedType(){return this._metaInfo.description}name(){return this._metaInfo.description}studyId(){return this._metaInfo.id}setPoint(e,t,i){super.setPoint(e,this._preparePoint(t,i))}move(e){}clearData(){this._clearAllDataExceptPointsetPoints(),this._pointsetPoints=null,this.updateAllViews((0,f.dataSourceChangeEvent)(this.id()))}data(){return this.plots()}plots(){return this._loadedPlots||this._dataSource.plots()}graphics(){return this._loadedGraphics||this._dataSource.graphics()}firstValue(){return this._model.mainSeries().firstValue()}state(e){const t=super.state(e);let i;this.metaInfo()instanceof c()?i=this.metaInfo().state():(i=(0,r.clone)(this.metaInfo()),i.id=c().parseIdString(i.id+(i.version?"-"+i.version:"")).fullId);const s={...t,metaInfo:i};return e&&(s.data=this.plots().state(),s.nonseriesindexes=this._indexes,s.graphics=(0,h.saveStudyGraphics)(this.graphics())),s}restoreData(e){var t;void 0!==e.data&&(this._loadedPlots=new n.PlotList((0,p.studyPlotFunctionMap)(this._metaInfo),p.studyEmptyPlotValuePredicate),this._loadedPlots.restoreState(e.data)),this._indexes=null!==(t=e.nonseriesindexes)&&void 0!==t?t:this._indexes,this._loadedGraphics=e.graphics?(0,h.loadStudyGraphics)(e.graphics):this._loadedGraphics}getPropertyDefinitionsViewModel(){ +return null===this._definitionsViewModel?this._getPropertyDefinitionsViewModelClass().then(e=>null===e||this._isDestroyed?null:(null===this._definitionsViewModel&&(this._definitionsViewModel=new e(this._model.undoModel(),this)),this._definitionsViewModel)):Promise.resolve(this._definitionsViewModel)}paneViews(e){let t=[];if(this.isSourceHidden())return t;if(this._isReady()&&this._changeStatesStack.isEmpty()){const i=super.paneViews(e);null!==i&&(t=t.concat(i))}else null!==this._beingCreatedPaneView&&t.push(this._beingCreatedPaneView);return null!==this._anchorsPaneView&&t.push(this._anchorsPaneView),t}propertiesChanged(e){super.propertiesChanged(e),this._onStudyInputsMayChange()}dataAndViewsReady(){return super.dataAndViewsReady()&&this._isReady()}endChanging(e,t){const i=super.endChanging(e,t);return i.indexesChanged?this.clearData():this._updateAnchorsPrice(!0),i}moveData(e){this._dataSource.moveData(e)}restorePoints(e,t,i){super.restorePoints(e,t,i),this._updateAnchorsPrice(!0)}realign(){super.realign(),null===this._model.mainSeries().symbolInfo()&&(this._alignerCache=null)}static createPropertiesFromStudyMetaInfoAndState(e,t,i,s){const r=(0,_.prepareStudyPropertiesForLoadChart)(e,t,i,null,s);return v._configureProperties(r),r}_studyId(){return this._dataSource.studyId()}_isReady(){return!0}_updateAllPaneViews(e){var t,i;super._updateAllPaneViews(e),null===(t=this._beingCreatedPaneView)||void 0===t||t.update(),null===(i=this._anchorsPaneView)||void 0===i||i.update(e)}_getPointTime(e,t){const i=e.index,s=this._model.timeScale().indexToTimePoint(i);if(null!==s)return s;if(t||void 0===e.time)return null;const r=this._model.mainSeries().symbolInfo();if(null===r)return null;let n=this._model.properties().childs().timezone.value();"exchange"===n&&(n=r.timezone);const o=(0,m.cal_to_utc)((0,m.get_timezone)(n),e.time);return this._getStartBarAligner()(o)/1e3}_updateAnchorsPrice(e){}_onPointsetUpdated(e){super._onPointsetUpdated(e),this._pointsetPoints=this._points.map(e=>({price:e.price,index:e.index,time:e.time})),this._onStudyInputsMayChange()}_onDataCleared(){this.updateAllViews((0,f.dataSourceChangeEvent)(this.id(),void 0,!0)),this._model.updateSource(this)}_onDataUpdated(e,t,i){var s;this._updateAnchorsPrice(),this.updateAllViews((0,f.dataSourceChangeEvent)(this.id(),null===(s=e[0])||void 0===s?void 0:s.index)),this._model.updateSource(this)}_onStudyInputsMayChange(){let e=null;if(null!==this._pointsetPoints&&this._pointsetPoints.length===this.pointsCount()&&(e=this._studyInputs(this._pointsetPoints),null===e&&(this._clearAllDataExceptPointsetPoints(),this.updateAllViews((0,f.dataSourceChangeEvent)(this.id())))),null!==e){const t=this.metaInfo().inputs.map(e=>e.id),i=Object.keys(e);for(const s of i)t.includes(s)||delete e[s]}this._areInputsEqual(this._inputs,e)||this._applyStudyInputs(e)}_preparePoint(e,t){return super._preparePoint(this._alignPointToRangeOfActualData(e),t)}_getPropertyDefinitionsViewModelClass(){return Promise.resolve(null)}_subscribeApplyInputsOnSeriesCompleted(){ +this._unsubscribeApplyInputsOnSeriesCompleted(),this._model.mainSeries().dataEvents().completed().subscribe(this,()=>this._onStudyInputsMayChange(),!0)}_unsubscribeApplyInputsOnSeriesCompleted(){this._model.mainSeries().dataEvents().completed().unsubscribeAll(this)}_onInputsChanged(){0}static _createPropertiesFromStudyIdAndState(e,t){const i=c().getStudyPropertyRootNameById(e),s=new a.DefaultProperty(i,t);return v._configureProperties(s),s}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.removeExclusion("intervalsVisibilities")}_areInputsEqual(e,t){return null===t?null===e:null!==e&&(0,d.areStudyInputsEqual)(this._metaInfo.inputs,e,t)}_applyStudyInputs(e){const t=this._inputs;this._inputs=e,null!==e&&(this._unsubscribeApplyInputsOnSeriesCompleted(),this._dataSource.setInputs(e),null===t&&this.isStarted()&&!this._dataSource.isStarted()&&this._dataSource.start()),this._onInputsChanged()}_clearAllDataExceptPointsetPoints(){this._inputs=null,this._dataSource.clearData(),this._loadedPlots=null,this._indexes=null,this._loadedGraphics=null}_getStartBarAligner(){const e=this._model.mainSeries().interval();return null!==this._alignerCache&&this._alignerCache.resolution===this._model.mainSeries().interval()||(this._alignerCache={resolution:e,aligner:(0,g.createTimeToBarTimeAligner)(e,(0,s.ensureNotNull)(this._model.mainSeries().symbolInfo()))}),this._alignerCache.aligner}}},74971:(e,t,i)=>{"use strict";i.d(t,{LineToolText:()=>u,LineToolTextAbsolute:()=>p});var s=i(88537),r=i(86441),n=i(28353),o=i(89857),a=i(2015),l=i.n(a),c=i(88564),h=i(37865),d=i(33291);class u extends o.LineDataSource{constructor(e,t,s,r){const n=t||u.createProperties();super(e,n,s,r),this._barSpacing=e.timeScale().barSpacing(),this._recalculatePointsOnCenter=!1,i.e(1583).then(i.bind(i,44074)).then(({TextPaneView:t})=>{const i=this._recalculatePointsOnCenter?(e,t)=>{this._recalculatePointsOnCenter&&this._recalculateCenterPosition(e,t)}:void 0;this._setPaneViews([new t(this,e,void 0,void 0,void 0,void 0,void 0,i)])})}centerPosition(){this._recalculatePointsOnCenter=!0}setPoint(e,t,i){const s=this.properties().childs();let r;if(1===e&&s.wordWrapWidth.value()){const e=this.model().timeScale();r=this.isFixed()?this.fixedPoints()[0].x:e.indexToCoordinate(this.points()[0].index);const i=e.indexToCoordinate(t.index)-r-~~(s.fontsize.value()/6);if(!isFinite(i))return;s.wordWrapWidth.setValue(Math.max(100,i))}}pointsCount(){return 1}name(){return"Text"}setPriceScale(e){super.setPriceScale(e),e&&e.priceRange()&&(this._priceDencity=e.height()/(0,s.ensureNotNull)(e.priceRange()).length(),this._isPriceDencityLog=e.isLog())}restoreSize(){const e=(0,s.ensureNotNull)(this.priceScale());this._barSpacing=this.model().timeScale().barSpacing(),this._priceDencity=e.height()/(0,s.ensureNotNull)(e.priceRange()).length(),this.redraw((0,d.dataSourceChangeEvent)(this.id()))}redraw(e){this.updateAllViews(e),this._model.updateSource(this)}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e}state(e){const t=super.state(e) +;return e&&(t.state.fixedSize=!1),t}barSpacing(){return this._barSpacing}priceDencity(){return this._priceDencity}isPriceDencityLog(){return this._isPriceDencityLog}hasEditableCoordinates(){return!1}static createProperties(e){const t=new c.DefaultProperty("linetooltext",e);return u._configureProperties(t),t}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text)}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,99734)).then(e=>e.TextDefinitionsViewModel)}static _configureProperties(e){o.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(l())((0,n.t)("Text"))),e.addChild("linesColors",new h.LineToolColorsProperty([e.childs().borderColor])),e.addChild("textsColors",new h.LineToolColorsProperty([e.childs().color])),e.addExclusion("text"),e.addExclusion("linesColors"),e.addExclusion("textsColors")}_recalculateCenterPosition(e,t){const i=this.isFixed()?this.fixedPoints()[0]:(0,s.ensureNotNull)(this.pointToScreenPoint(this._points[0])),n=new r.Point(i.x-e/2,i.y-t/2),o=(0,s.ensureNotNull)(this.screenPointToPoint(n));this.setPoints([o]),this.normalizePoints(),this.createServerPoints(),this.redraw((0,d.dataSourceChangeEvent)(this.id()))}}class p extends u{constructor(e,t){super(e,t||p.createProperties())}name(){return"Anchored Text"}hasEditableCoordinates(){return!1}isFixed(){return!0}static createProperties(e){const t=new c.DefaultProperty("linetooltextabsolute",e);return p._configureProperties(t),t}static _configureProperties(e){u._configureProperties(e)}}},6980:(e,t,i)=>{"use strict";i.d(t,{LineToolThreeDrivers:()=>o});var s=i(88564),r=i(89857),n=i(37865);class o extends r.LineDataSource{constructor(e,t,s,r){const n=t||o.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,88993)).then(t=>{this._setPaneViews([new t.LineToolThreeDrivesPaneView(this,e)])})}pointsCount(){return 7}name(){return"Three Drives Pattern"}static createProperties(e){const t=new s.DefaultProperty("linetoolthreedrivers",e);return o._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,98890)).then(e=>e.PatternWithoutBackgroundDefinitionsViewModel)}static _configureProperties(e){r.LineDataSource._configureProperties(e),e.addChild("linesColors",new n.LineToolColorsProperty([e.childs().color])),e.addChild("textsColors",new n.LineToolColorsProperty([e.childs().textcolor])),e.addChild("linesWidths",new n.LineToolWidthsProperty([e.childs().linewidth])),e.hasChild("backgroundsColors")&&e.removeProperty("backgroundsColors")}}},38513:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty;class n extends s{constructor(e,t,s,r){super(e,t||n.createProperties(),s,r),i.e(1583).then(i.t.bind(i,59905,19)).then(({TimeCyclesPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 2}name(){return"Time Cycles"}setPoint(e,t,i){var s=Object.assign({},t),r=this._points[0],n=this._points[1];r.price=s.price, +n.price=s.price,this._points[e]=s,this.normalizePoints()}addPoint(e,t,i){var r=s.prototype.addPoint.call(this,e,t,!0);if(r){var n=this._points[0];this._points[1].price=n.price,i||(this.normalizePoints(),this.createServerPoints())}return r}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,3956))).TimeCyclesPatternDefinitionsViewModel}static createProperties(e){var t=new r("linetooltimecycles",e);return n._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e)}}t.LineToolTimeCycles=n},2587:(e,t,i)=>{"use strict";const s=i(89857).LineDataSource,r=i(20165).alignToStep;class n extends s{constructor(e,t){super(e,t),this.customization.forcePriceAxisLabel=!0,this.customization.disableErasing=!0,this.customization.showInObjectsTree=!1,this.setSelectionEnabled(!1)}isSynchronizable(){return!1}pointsCount(){return n.POINTS_COUNT}hasContextMenu(){return!1}state(){return null}startMoving(){s.prototype.startMoving.apply(this,arguments),this._cursorMoved=!1}endMoving(){s.prototype.endMoving.apply(this,arguments),this._cursorMoved=!1}_correctPoints(e,t){this._currentMovingPoint&&this._startMovingPoint?this._currentMovingPoint.logical.price-this._startMovingPoint.logical.price&&(this._cursorMoved=!0):this._cursorMoved=!1;for(var i=1/this.priceScale().mainSource().base(),s=0;s{"use strict";var s=i(2015),r=i(86441).Point,n=i(89857).LineDataSource,o=i(88564).DefaultProperty;class a extends s{constructor(e){super(),this._lineSource=e}value(){var e=180*this._lineSource._angle/Math.PI;return Math.round(e)}setValue(e){var t=e*Math.PI/180;this._lineSource._angle=t;var i=this._lineSource.pointToScreenPoint(this._lineSource.points()[0]),s=Math.cos(this._lineSource._angle),n=-Math.sin(this._lineSource._angle),o=new r(s,n),a=i.addScaled(o,this._lineSource._distance),l=this._lineSource.screenPointToPoint(a);this._lineSource._points[1]=l,this._lineSource._model.updateSource(this._lineSource),this._lineSource.updateAllViews(),this._lineSource._model.updateSource(this._lineSource)}}class l extends n{constructor(e,t,s,r){super(e,t||l.createProperties(),s,r),this._properties.addChild("angle",new a(this)),i.e(1583).then(i.t.bind(i,74108,19)).then(({TrendAnglePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}isSynchronizable(){return!1}pointsCount(){return 2}name(){return"Trend Angle"}_calculateAngle(){var e=this.pointToScreenPoint(this.points()[0]),t=this.pointToScreenPoint(this.points()[1]),i=t.subtract(e);i.length()>0?(i=i.normalized(), +this._angle=Math.acos(i.x),i.y>0&&(this._angle=-this._angle),this._distance=t.subtract(e).length()):delete this._angle,this.properties().hasOwnProperty("angle")&&this.properties().angle.listeners().fire(this.properties().angle)}addPoint(e,t){var i=n.prototype.addPoint.call(this,e,t);return i&&this._calculateAngle(),i}setLastPoint(e,t){var i=super.setLastPoint(e,t);return this.points().length>1&&this._calculateAngle(),i}axisPoints(){if(this.points().length<2)return[];var e=[this.points()[0]],t=this.pointToScreenPoint(this.points()[0]),i=Math.cos(this._angle)*this._distance,s=-Math.sin(this._angle)*this._distance,n=t.add(new r(i,s)),o=this.screenPointToPoint(n);return e.push(o),e}setPoint(e,t,i){super.setPoint(e,t,i),this.points().length>1&&1===e&&this._calculateAngle()}restoreData(e){this._angle=e.angle,this._distance=e.distance}state(e){var t=n.prototype.state.call(this,e);return t.angle=this._angle,t.distance=this._distance,t}cloneData(e){this._angle=e._angle,this._distance=e._distance}canHasAlert(){return!0}_getAlertPlots(){return[this._linePointsToAlertPlot(this._points,null,this.properties().extendLeft.value(),this.properties().extendRight.value())]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,38909))).TrendAngleDefinitionsViewModel}_snapTo45DegreesAvailable(){return!0}static createProperties(e){var t=new o("linetooltrendangle",e);return l._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e)}}t.LineToolTrendAngle=l},25861:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this.version=d.version,i.e(1583).then(i.t.bind(i,80741,19)).then(({TrendBasedFibExtensionPaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 3}name(){return"Trend-Based Fib Extension"}migrateVersion(e,t,i){1===e&&this.properties().extendLines.setValue(!0)}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}static createProperties(e){var t=new o("linetooltrendbasedfibextension",e,!1,{range:[0,8]});return d._configureProperties(t),t}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,34670))).FibDrawingsWith24LevelsDefinitionsViewModel}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("trendline").child("linewidth"),e.child("levelsStyle").child("linewidth")],i=[e.child("trendline").child("color")],s=1;s<=d.LevelsCount;s++)i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}fibLevelsBasedOnLogScale(){return this.properties().fibLevelsBasedOnLogScale.value()&&this.priceScale().isLog()}}d.version=2,d.LevelsCount=24, +t.LineToolTrendBasedFibExtension=d},6245:(e,t,i)=>{"use strict";var s=i(28353).t,r=i(24980).TranslatedString,n=i(89857).LineDataSource,o=i(34580).LevelsProperty,a=i(37865),l=a.LineToolWidthsProperty,c=a.LineToolColorsProperty,h=new r("erase level line",s("erase level line"));class d extends n{constructor(e,t,s,r){super(e,t||d.createProperties(),s,r),this.version=d.version,i.e(1583).then(i.t.bind(i,78343,19)).then(({TrendBasedFibTimePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}levelsCount(){return d.LevelsCount}pointsCount(){return 3}name(){return"Trend-Based Fib Time"}migrateVersion(e,t,i){}processErase(e,t){var i="level"+t,s=this.properties()[i].visible;e.setProperty(s,!1,h)}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,42882))).TrendBasedFibTimeDefinitionsViewModel}static createProperties(e){var t=new o("linetooltrendbasedfibtime",e,!1,{range:[1,11]});return d._configureProperties(t),t}static _configureProperties(e){n._configureProperties(e);for(var t=[e.child("trendline").child("linewidth")],i=[e.child("trendline").child("color")],s=1;s<=d.LevelsCount;s++)t.push(e.child("level"+s).child("linewidth")),i.push(e.child("level"+s).child("color"));e.addChild("linesColors",new c(i)),e.addChild("linesWidths",new l(t))}}d.LevelsCount=11,d.version=1,t.LineToolTrendBasedFibTime=d},57649:(e,t,i)=>{"use strict";var s=i(2015),r=i(89857).LineDataSource,n=i(22474).LineToolPriceAxisView,o=i(88564).DefaultProperty;class a extends r{constructor(e,t,s,r){super(e,t||a.createProperties(),s,r),this._trendLinePaneView=null,i.e(1583).then(i.t.bind(i,38743,19)).then(({TrendLinePaneView:e})=>{this._trendLinePaneView=new e(this,this._model),this._setPaneViews([this._trendLinePaneView])})}dataAndViewsReady(){return r.prototype.dataAndViewsReady.call(this)&&this._trendLinePaneView&&this._trendLinePaneView.iconsReady()}stop(){super.stop()}pointsCount(){return 2}name(){return"Trend Line"}canHasAlert(){return!0}showPriceLabels(){return this._properties.childs().showPriceLabels.value()}createPriceAxisView(e){return new n(this,{pointIndex:e,backgroundPropertyGetter:()=>this.showPriceLabels()?this._properties.linecolor.value():null})}isForcedDrawPriceAxisLabel(){return this.showPriceLabels()}_getAlertPlots(){return[this._linePointsToAlertPlot(this._points,null,this.properties().extendLeft.value(),this.properties().extendRight.value())]}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,43266))).TrendLineDefinitionsViewModel}template(){var e=r.prototype.template.call(this);return e.text=this.properties().childs().text.value(),e}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text||"")}_snapTo45DegreesAvailable(){return!0}static createProperties(e){var t=new o("linetooltrendline",e);return a._configureProperties(t),t}static _configureProperties(e){r._configureProperties(e),e.hasChild("text")||e.addChild("text",new s("")),e.addExclusion("text")}} +t.LineToolTrendLine=a},53403:(e,t,i)=>{"use strict";i.d(t,{LineToolTrianglePattern:()=>o});var s=i(88564),r=i(89857),n=i(37865);class o extends r.LineDataSource{constructor(e,t,s,r){const n=t||o.createProperties();super(e,n,s,r),i.e(1583).then(i.bind(i,51145)).then(t=>{this._setPaneViews([new t.LineToolTrianglePatternPaneView(this,e)])})}pointsCount(){return 4}name(){return"Triangle Pattern"}static createProperties(e){const t=new s.DefaultProperty("linetooltrianglepattern",e);return o._configureProperties(t),t}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,93262)).then(e=>e.PatternWithBackgroundDefinitionViewModel)}static _configureProperties(e){r.LineDataSource._configureProperties(e),e.addChild("linesColors",new n.LineToolColorsProperty([e.childs().color])),e.addChild("textsColors",new n.LineToolColorsProperty([e.childs().textcolor])),e.addChild("backgroundsColors",new n.LineToolColorsProperty([e.childs().backgroundColor]))}}},99092:(e,t,i)=>{"use strict";var s=i(89857).LineDataSource,r=i(88564).DefaultProperty,n=i(37865).LineToolColorsProperty;class o extends s{constructor(e,t,s,r){super(e,t||o.createProperties(),s,r),i.e(1583).then(i.t.bind(i,12258,19)).then(({TrianglePaneView:e})=>{this._setPaneViews([new e(this,this._model)])})}pointsCount(){return 3}name(){return"Triangle"}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,24965))).GeneralFiguresDefinitionsViewModel}static createProperties(e){var t=new r("linetooltriangle",e);return o._configureProperties(t),t}static _configureProperties(e){s._configureProperties(e),e.addChild("linesColors",new n([e.childs().color]))}}t.LineToolTriangle=o},67103:(e,t,i)=>{"use strict";i.d(t,{LineToolVertLineTimeAxisView:()=>r});var s=i(19528);class r extends s.LineDataSourceTimeAxisView{constructor(e){super(e,0)}_getBgColor(){return this._source.properties().linecolor.value()}_getAlwaysInViewPort(){return!1}_getIndex(){const e=this._source.points();return 0===e.length?null:e[0].index}}},51922:(e,t,i)=>{"use strict";i.d(t,{LineToolVertLine:()=>h});var s=i(88537),r=i(86441),n=i(88564),o=i(2015),a=i.n(o),l=i(89857),c=i(67103);class h extends l.LineDataSource{constructor(e,t,s,r){const n=t||h.createProperties();super(e,n,s,r),this._timeAxisView=new c.LineToolVertLineTimeAxisView(this),this._paneViewFactory=null,this.properties().childs().extendLine.subscribe(this,()=>e.lightUpdate()),i.e(1583).then(i.bind(i,68022)).then(t=>{this._paneViewFactory=i=>new t.VertLinePaneView(this,e,i),this._model.lightUpdate()})}destroy(){this.properties().childs().extendLine.unsubscribeAll(this),super.destroy()}pointsCount(){return 1}name(){return"Vertical Line"}timeAxisViews(){return this.isSourceHidden()?null:this.properties().childs().showTime.value()?[this._timeAxisView]:null}updateAllViews(e){super.updateAllViews(e),this._timeAxisView.update(e)}canHasAlert(){return!0}template(){const e=super.template();return e.text=this.properties().childs().text.value(),e} +isMultiPaneAvailable(){return!0}isMultiPaneEnabled(){return this.properties().childs().extendLine.value()}paneViews(e){return e=(0,s.ensureDefined)(e),this.isMultiPaneEnabled()||this._model.paneForSource(this)===e?(null===this._getPaneViews(e)&&null!==this._paneViewFactory&&this._setPaneViews([this._paneViewFactory(e)],e,!0),super.paneViews(e)):null}priceAxisViews(){return null}priceAxisPoints(){return[]}pointToScreenPoint(e){const t=this._model.timeScale();if(t.isEmpty())return null;const i=t.indexToCoordinate(e.index);return new r.Point(i,0)}convertYCoordinateToPriceForMoving(e){return 0}static createProperties(e){null!=e&&(void 0===e.textOrientation&&(e.textOrientation="horizontal"),void 0===e.extendLine&&(e.extendLine=!1));const t=new n.DefaultProperty("linetoolvertline",e);return h._configureProperties(t),t}_getAlertPlots(){const e=this._points[0],t={index:e.index,price:e.price+1};return[this._linePointsToAlertPlot([e,t],null,!0,!0)]}_getPropertyDefinitionsViewModelClass(){return Promise.all([i.e(1369),i.e(8623),i.e(8537)]).then(i.bind(i,90308)).then(e=>e.VerticalLineDefinitionsViewModel)}_applyTemplateImpl(e){super._applyTemplateImpl(e),this.properties().childs().text.setValue(e.text||"")}static _configureProperties(e){l.LineDataSource._configureProperties(e),e.hasChild("text")||e.addChild("text",new(a())("")),e.addExclusion("text")}}},20299:(e,t,i)=>{"use strict";i.d(t,{LineToolVbPFixed:()=>f});var s=i(77973),r=i(88537),n=i(88145),o=i(67072),a=i.n(o),l=i(51934),c=i(54376),h=i(2662),d=i(33291),u=i(80643),p=i(88564),_=i(14291),m=i(66101);const g=(0,n.studyIdString)("VbPFixed","tv-volumebyprice");class f extends l.StudyLineDataSource{constructor(e,t,i,s,r,n){const o=i||e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:g}),a=null!=t?t:f.createProperties(e);super(e,o,"vbpfixed_",a,r,n),(0,c.createGraphicsPaneViews)(this,e).then(t=>{if(s=e.mainSeries(),o.plots.length>0){const i=new h.StudyPlotPaneView(this,s,e,o.plots[0].id);t.push(i)}if(o.plots.length>1){const i=new h.StudyPlotPaneView(this,s,e,o.plots[1].id);t.push(i)}if(o.plots.length>2){const i=new h.StudyPlotPaneView(this,s,e,o.plots[2].id);t.push(i)}this._setPaneViews(t)}),this.clearData()}pointsCount(){return 2}boundToSymbol(){return!1}offset(e){return 0}getMinFirstBarIndexForPlot(){return-1/0}calcIsActualSymbol(){this._isActualSymbol=!0,this._isActualCurrency=!0,this._isActualUnit=!0,this.calcIsActualInterval()}cloneable(){return!1}isSynchronizable(){return!1}static createProperties(e,t){const i=a().getStudyPropertyRootNameById(g),s=(0,r.ensureNotNull)(e.studyMetaInfoRepository().findByIdSync({type:"java",studyId:g})),n=(0,p.createDefaultsState)(!0,i,[],e.studyVersioning());return(0,_.createStudyLineToolProperties)("LineToolVbPFixed",s,s,(0,u.merge)((0,u.clone)(n),null!=t?t:{}),e.studyVersioning())}static createPropertiesFromStudyMetaInfoAndState(e,t,i,s){const r=(0,m.prepareStudyPropertiesForLoadChart)(e,t,i,null,s);return f._configureProperties(r),r}static studyId(){return g}_studyInputs(e){(0, +r.assert)(2===e.length,"all the line tool points should be defined");const[t,i]=e,s=Math.max(t.index,i.index),n=this._model.mainSeries().bars().lastIndex(),o=this._getPointTime(t.index<=i.index?t:i,!0),a=this._getPointTime(i.index>=t.index?i:t,!0);if(null===o||null===a)return this._subscribeApplyInputsOnSeriesCompleted(),null;return{...this.properties().childs().inputs.state(),first_bar_time:1e3*o,last_bar_time:1e3*a,subscribeRealtime:n===s}}_isReady(){return!(0,c.isStudyGraphicsEmpty)(this.graphics())}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(7387),i.e(8623),i.e(607)]).then(i.bind(i,26667))).StudyLineDataSourceDefinitionsViewModel}_onDataUpdated(){this._updateAnchors(),this.updateAllViews((0,d.dataSourceChangeEvent)(this.id())),this._model.updateSource(this)}_updateAnchors(){const e=this._calculateAnchors();if(!e)return;const[{index:t,price:i},{index:s,price:r}]=e;if(this._timePoint.length&&(this._timePoint[0].price=i,this._timePoint[1].price=r),this._points.length){const e=this.model().timeScale(),n=e.indexToTimePoint(t),o=e.indexToTimePoint(t);this._points[0]={index:t,price:i,time:(0,u.isNumber)(n)?new Date(1e3*n):void 0},this._points[1]={index:s,price:r,time:(0,u.isNumber)(o)?new Date(1e3*o):void 0}}}_calculateAnchors(){let e=null,t=null,i=null,r=null;if(this.graphics().hhists().forEach(s=>{s.forEach(s=>{const{priceLow:n,priceHigh:o,firstBarTime:a,lastBarTime:l}=s;(!e||nt)&&(t=o),(!i||ar)&&(r=l)})}),!((0,s.default)(e)||(0,s.default)(t)||(0,s.default)(r)||(0,s.default)(i)))return[{price:t,index:i},{price:e,index:r}]}_updateAnchorsPrice(){const e=this._calculateAnchors();if(!e)return;const[{price:t},{price:i}]=e;this._timePoint.length&&(this._timePoint[0].price=t,this._timePoint[1].price=i),this._points.length&&(this._points[0].price=t,this._points[1].price=i)}}},90373:(e,t,i)=>{"use strict";var s;i.d(t,{MagnetMode:()=>s}),function(e){e[e.WeakMagnet=0]="WeakMagnet",e[e.StrongMagnet=1]="StrongMagnet"}(s||(s={}))},30460:(e,t,i)=>{"use strict";i.d(t,{magnetEnabled:()=>m,magnetMode:()=>g,setIsMagnetEnabled:()=>f,setMagnetMode:()=>v});var s=i(88564),r=i(52714),n=i.n(r),o=i(90373),a=i(85733),l=i(14291),c=i(76367);const h=new(n())(!1),d=new(n())(o.MagnetMode.WeakMagnet),u=(0,c.modifierPressed)(),p=(0,c.shiftPressed)();function _(){const e=u.value();if(p.value()&&(a.isToolEditingNow.value()||a.isToolCreatingNow.value()))return void h.setValue(!1);const t=a.tool.value(),i=a.isStudyEditingNow.value()||a.isPointSelectedNow.value(),s=e&&((0,l.isLineToolName)(t)||a.isToolEditingNow.value()||(0,a.toolIsMeasure)(t)||i),r=(0,a.properties)().childs().magnet.value();d.setValue(!r&&s?o.MagnetMode.StrongMagnet:(0,a.properties)().childs().magnetMode.value()),h.setValue(s?!r:r)}function m(){return h}function g(){return d}function f(e){(0,s.saveDefaultProperties)(!0),(0,a.properties)().childs().magnet.setValue(e),(0,s.saveDefaultProperties)(!1)}function v(e){(0,s.saveDefaultProperties)(!0),(0,a.properties)().childs().magnetMode.setValue(e),(0, +a.properties)().childs().magnet.setValue(!0),(0,s.saveDefaultProperties)(!1)}(0,a.runOnDrawingStateReady)(()=>{(0,a.properties)().childs().magnet.subscribe(null,_),(0,a.properties)().childs().magnetMode.subscribe(null,_),u.subscribe(_),p.subscribe(_),a.tool.subscribe(_),a.isToolEditingNow.subscribe(_),_()})},32050:(e,t,i)=>{"use strict";i.d(t,{MainSeriesScaleRatioProperty:()=>n});var s=i(2872),r=i.n(s);class n{constructor(e){this._changed=new(r()),this._model=e}getStepChangeValue(){return.1}getMinValue(){return 1e-7}getMaxValue(){return 99999999}value(){return this._model.mainSeriesScaleRatio()}setValue(e,t){(e!==this.value()||t)&&(this._model.setMainSeriesScaleRatio(e),this._onChanged())}state(){return null}clone(){return new n(this._model)}listeners(){return this._changed}subscribe(e,t){this._changed.subscribe(e,t)}unsubscribe(e,t){this._changed.unsubscribe(e,t)}unsubscribeAll(e){this._changed.unsubscribeAll(e)}storeStateIfUndefined(){return!0}_onChanged(){this._changed.fire(this)}}},33291:(e,t,i)=>{"use strict";function s(e,t,i){return{type:"data-source-change",dataSourceId:e,firstUpdatedTimePointIndex:t,clearData:i}}i.r(t),i.d(t,{dataSourceChangeEvent:()=>s,globalChangeEvent:()=>n,viewportChangeEvent:()=>a,selectionChangeEvent:()=>c});const r={type:"global-change"};function n(){return r}const o={type:"viewport-change"};function a(){return o}const l={type:"selection-change"};function c(){return l}},51344:(e,t,i)=>{"use strict";i.d(t,{ensureTimePointIndexIndex:()=>n,unpackNonSeriesData:()=>o});var s=i(6617),r=i(88537);function n(e){if(e<0)throw new Error("TimePointIndexIndex should be non-negative integer");return e}async function o(e){if(""===e)return null;const t=JSON.parse(e);if(!(0,s.isObject)(t)||"function"==typeof t)throw new Error("Non-object content in the non-series envelope");if((0,s.hasProperty)(t,"indexes_replace"))return{indexes_replace:!0};const i={indexes_replace:!1};if((0,s.hasProperty)(t,"offsets")&&(i.offsets=t.offsets),(0,s.hasProperty)(t,"isUpdate")){if("boolean"!=typeof t.isUpdate)throw new Error('Invalid type of "isUpdate" field');i.isUpdate=t.isUpdate}return(0,s.hasProperty)(t,"data")&&(i.data=t.data),(0,s.hasProperty)(t,"graphicsCmds")&&(i.graphicsCmds=function(e){if(!(0,s.isObject)(e))throw new Error("Graphics commands should be wrapped in an object");if((0,s.hasProperty)(e,"create"),(0,s.hasProperty)(e,"erase")){const t=e.erase;(0,r.assert)(Array.isArray(t),"Collection of erase commands should be array");for(const e of t){if(!(0,s.isObject)(e)||!(0,s.hasProperty)(e,"action"))throw new Error("Command should be an object with 'action' property");(0,r.assert)("all"===e.action||"one"===e.action,"Erase command action should be 'all' or 'one'")}}return e}(t.graphicsCmds)),i}},57626:(e,t,i)=>{"use strict";i.d(t,{notAvailable:()=>r});var s=i(28353);const r=i(67337).enabled("use_na_string_for_not_available_values")?(0,s.t)("n/a"):"∅"},56589:(e,t,i)=>{"use strict";var s;i.d(t,{PaneCursorType:()=>s}),function(e){e[e.Default=0]="Default",e[e.Pointer=1]="Pointer",e[e.Eraser=2]="Eraser", +e[e.Dot=3]="Dot",e[e.Grabbing=4]="Grabbing",e[e.ZoomIn=5]="ZoomIn",e[e.VerticalResize=6]="VerticalResize",e[e.HorizontalResize=7]="HorizontalResize",e[e.DiagonalNeSwResize=8]="DiagonalNeSwResize",e[e.DiagonalNwSeResize=9]="DiagonalNwSeResize"}(s||(s={}))},28978:(e,t,i)=>{"use strict";i.d(t,{PanePriceAxisView:()=>n});var s=i(76818);class r{constructor(e){this._priceAxisViewRenderer=null,this._rendererOptions=null,this._align="right",this._width=0,this._height=0,this._textWidthCache=e}setParams(e,t,i,s,r){this._priceAxisViewRenderer=e,this._rendererOptions=t,this._width=i,this._height=s,this._align=r}draw(e,t){null!==this._rendererOptions&&null!==this._priceAxisViewRenderer&&this._priceAxisViewRenderer.draw(e,this._rendererOptions,this._textWidthCache,this._width,this._height,this._align,t.pixelRatio)}hitTest(e){var t,i;return void 0===(null===(t=this._priceAxisViewRenderer)||void 0===t?void 0:t.hitTest)?null:null===(i=this._priceAxisViewRenderer)||void 0===i?void 0:i.hitTest(e,this._width,this._align)}}class n{constructor(e,t,i){this._renderer=null,this._invalidated=!0,this._priceAxisView=e,this._textWidthCache=new s.TextWidthCache(100),this._dataSource=t,this._chartModel=i,this._fontSize=-1,this._panePriceAxisViewRenderer=new r(this._textWidthCache)}update(e){this._invalidated=!0}renderer(e,t){return this._invalidated&&this._updateImpl(e,t),this._renderer}_updateImpl(e,t){this._renderer=null;const i=this._chartModel.crossHairSource(),s=this._dataSource===i?i.pane:this._chartModel.paneForSource(this._dataSource);if(null===s)return;const r=this._priceScale();if(null===r)return;let n=s.priceScalePosition(r);if("overlay"===n&&(n=s.priceScalePosition(s.defaultPriceScale())),"overlay"===n)return;const o=this._chartModel.priceAxisRendererOptions();o.fontSize!==this._fontSize&&(this._fontSize=o.fontSize,this._textWidthCache.reset()),this._panePriceAxisViewRenderer.setParams(this._priceAxisView.paneRenderer(),o,t,e,n),this._renderer=this._panePriceAxisViewRenderer,this._invalidated=!1}_priceScale(){return this._dataSource.priceScale()}}},84705:(e,t,i)=>{"use strict";i.d(t,{PaneRendererArea:()=>a});var s=i(88537),r=i(46214),n=i(29892),o=i(49094);class a extends r.PaneRendererLine{constructor(e){e.forceLineColor=!1,super(e)}draw(e,t){var i,r,a,l,c;const h=this._data;if(0===h.items.length)return;let d=null!==(r=null===(i=this._data.visibleItemsRange)||void 0===i?void 0:i.startItemIndex)&&void 0!==r?r:0,u=(null!==(l=null===(a=this._data.visibleItemsRange)||void 0===a?void 0:a.endItemIndex)&&void 0!==l?l:this._data.items.length)-1;for(;d=0&&!(0,o.coordinateIsValid)(h.items[u].y);)u--;if(d>u)return;e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.lineCap="butt",e.strokeStyle=h.lineColor,e.lineWidth=h.lineWidth,(0,n.setLineStyle)(e,h.lineStyle),e.lineWidth=1;const p={},_=h.items;for(let e=d;e<=u;e++){const t=_[e];let i;if(i=t.style?t.style.color:h.lineColor,e{"use strict";i.d(t,{CompositeRenderer:()=>s});class s{constructor(){this._renderers=[],this._globalAlpha=1}setGlobalAlpha(e){this._globalAlpha=e}append(e){this._renderers.push(e)}insert(e,t){this._renderers.splice(t,0,e)}clear(){this._renderers.length=0}isEmpty(){return 0===this._renderers.length}draw(e,t){for(let i=0;i=0;s--){const r=this._renderers[s].hitTest(e,t);null!==r&&(null===i||r.result()>i.result())&&(i=r)}return i}doesIntersectWithBox(e){return this._renderers.some(t=>!!t.doesIntersectWithBox&&t.doesIntersectWithBox(e))}}},42759:(e,t,i)=>{"use strict";i.d(t,{clearRectWithGradient:()=>o,fillRectInnerBorder:()=>a,drawHorizontalLine:()=>l,drawVerticalLine:()=>c,drawRoundRect:()=>d,drawRoundRectWithInnerBorder:()=>u,fillRectWithBorder:()=>p,createCircle:()=>_});var s=i(86441),r=i(29892),n=i(95936);function o(e,t,i,s,r,n,o){e.save(),e.globalCompositeOperation="copy";const a=e.createLinearGradient(0,0,0,r);a.addColorStop(0,n),a.addColorStop(1,o),e.fillStyle=a,e.fillRect(t,i,s,r),e.restore()}function a(e,t,i,s,r,n){e.fillRect(t+n,i,s-2*n,n),e.fillRect(t+n,i+r-n,s-2*n,n),e.fillRect(t,i,n,r),e.fillRect(t+s-n,i,n,r)}function l(e,t,i,s){e.beginPath();const r=e.lineWidth%2?.5:0;e.moveTo(i,t+r),e.lineTo(s,t+r),e.stroke()}function c(e,t,i,s){e.beginPath();const r=e.lineWidth%2?.5:0;e.moveTo(t+r,i),e.lineTo(t+r,s),e.stroke()}function h(e,t){return Array.isArray(e)?e.map(e=>0===e?e:e+t):e+t}function d(e,t,i,s,r,n,o){let a,l,c,h;if(Array.isArray(n))if(2===n.length){const e=Math.max(0,n[0]),t=Math.max(0,n[1]);a=e,l=e,c=t,h=t}else{if(4!==n.length)throw new Error("Wrong border radius - it should be like css border radius");a=Math.max(0,n[0]),l=Math.max(0,n[1]),c=Math.max(0,n[2]),h=Math.max(0,n[3])}else{const e=Math.max(0,n);a=e,l=e,c=e,h=e}o||e.beginPath(),e.moveTo(t+a,i),e.lineTo(t+s-l,i),0!==l&&e.arcTo(t+s,i,t+s,i+l,l),e.lineTo(t+s,i+r-c),0!==c&&e.arcTo(t+s,i+r,t+s-c,i+r,c),e.lineTo(t+h,i+r),0!==h&&e.arcTo(t,i+r,t,i+r-h,h),e.lineTo(t,i+a),0!==a&&e.arcTo(t,i,t+a,i,a)}function u(e,t,i,s,o,a,l=0,c=0,u="",p=n.LineStyle.Solid){if(e.save(), +!c||!u||u===a)return d(e,t,i,s,o,l),e.fillStyle=a,e.fill(),void e.restore();const _=c/2;if("transparent"!==a){const r="transparent"!==u&&p!==n.LineStyle.Solid;d(e,r?t:t+c,r?i:i+c,r?s:s-2*c,r?o:o-2*c,r?l:h(l,-c)),e.fillStyle=a,e.fill()}if("transparent"!==u){d(e,t+_,i+_,s-c,o-c,h(l,-_)),e.lineWidth=c,e.strokeStyle=u,(0,r.setLineStyle)(e,p),e.closePath(),e.stroke()}e.restore()}function p(e,t,i,n,o,a,l,c,h,d,u,p,_,m,g){const f=d?0:t,v=u?_:n;if(void 0!==a&&(e.fillStyle=a,e.fillRect(f,i,v-f+m,o-i)),void 0!==l&&c>0){if(e.beginPath(),(0,r.setLineStyle)(e,h),void 0!==g){const t=g.map(e=>e*c);(0,r.setLineDash)(e,t)}let a=(0,s.point)(0,0),d=(0,s.point)(0,0),u=(0,s.point)(0,0),_=(0,s.point)(0,0);switch(p){case"outer":{const e=.5*c;u=(0,s.point)(0,e),_=(0,s.point)(0,e),a=(0,s.point)(e,-c),d=(0,s.point)(e,-c);break}case"center":{const e=c%2?.5:0,t=c%2?.5:m;u=(0,s.point)(.5*c-e,-e),_=(0,s.point)(t+.5*c,-e),a=(0,s.point)(-e,e+.5*c),d=(0,s.point)(t,e+.5*c);break}case"inner":{const e=.5*c;u=(0,s.point)(0,-e),_=(0,s.point)(1,-e),a=(0,s.point)(-e,c),d=(0,s.point)(1-e,c);break}}e.lineWidth=c,e.strokeStyle=l,e.moveTo(f-u.x,i-u.y),e.lineTo(v+_.x,i-_.y),e.moveTo(n+d.x,i+d.y),e.lineTo(n+d.x,o-d.y),e.moveTo(f-u.x,o+u.y),e.lineTo(v+_.x,o+_.y),e.moveTo(t-a.x,i+a.y),e.lineTo(t-a.x,o-a.y),e.stroke()}}function _(e,t,i,s){e.beginPath(),e.arc(t,i,s,0,2*Math.PI,!1),e.closePath()}},49094:(e,t,i)=>{"use strict";i.d(t,{extendAndClipLineSegment:()=>h,getArrowPoints:()=>d,optimalBarWidth:()=>u,optimalCandlestickWidth:()=>p,optimalHiLoWidth:()=>_,interactionTolerance:()=>m,coordinateIsValid:()=>g,setValidLineStyle:()=>f,fillScaledRadius:()=>v,strokeScaledRadius:()=>S});var s=i(86441),r=i(5531),n=i(71413),o=i(80643),a=i(29892);const l={line:13,minDistanceBetweenPoints:10,series:14,curve:10,anchor:13,esd:4},c={line:3,minDistanceBetweenPoints:5,series:2,curve:3,anchor:2,esd:0};function h(e,t,i,n,o,a){if((0,s.equalPoints)(e,t))return null;const l=new s.Point(0,0),c=new s.Point(i,n);if(o){if(a){const i=(0,r.intersectLineAndBox)((0,s.lineThroughPoints)(e,t),(0,s.box)(l,c));return Array.isArray(i)?i:null}{const i=(0,r.intersectRayAndBox)(t,e,(0,s.box)(l,c));return null===i||(0,s.equalPoints)(t,i)?null:(0,s.lineSegment)(t,i)}}if(a){const i=(0,r.intersectRayAndBox)(e,t,(0,s.box)(l,c));return null===i||(0,s.equalPoints)(e,i)?null:(0,s.lineSegment)(e,i)}{const i=(0,r.intersectLineSegmentAndBox)((0,s.lineSegment)(e,t),(0,s.box)(l,c));return Array.isArray(i)?i:null}}function d(e,t,i,s){const r=.5*i,n=Math.sqrt(2),o=t.subtract(e),a=o.normalized();let l=5*i;s&&(l=Math.min(l,.35*o.length()));const c=1*r;if(l*n*.2<=c)return[];const h=a.scaled(l),d=t.subtract(h),u=a.transposed(),p=1*l,_=u.scaled(p),m=d.add(_),g=d.subtract(_),f=m.subtract(t).normalized().scaled(c),v=g.subtract(t).normalized().scaled(c),S=t.add(f),y=t.add(v),b=r*(n-1),w=u.scaled(b),C=Math.min(l-1*r/n,r*n*1),P=a.scaled(C),T=t.subtract(w),x=t.add(w),I=t.subtract(P);return[[m,S],[g,y],[T,I.subtract(w)],[x,I.add(w)]]}function u(e,t){return t=t||1,Math.floor(.3*e*t)}function p(e,t){ +if(e>=2.5&&e<=4)return Math.floor(3*t);const i=1-.2*Math.atan(Math.max(4,e)-4)/(.5*Math.PI),s=Math.floor(e*i*t),r=Math.floor(e*t),n=Math.min(s,r);return Math.max(Math.floor(t),n)}function _(e){return.4*e}function m(){return(0,n.lastMouseOrTouchEventInfo)().isTouch?l:c}function g(e){return null!=e&&!(0,o.isNaN)(e)}function f(e,t){void 0!==t&&(0,a.setLineStyle)(e,t)}function v(e,t){const i=Math.max(1,Math.floor(t))%2?.5:0;return Math.round(e*t)+i}function S(e,t,i){const s=Math.max(1,Math.floor(t))%2?.5:0;return Math.round(e*t)+(s!==i%2?.5:0)}},40254:(e,t,i)=>{"use strict";i.d(t,{HorizontalLineRenderer:()=>a});var s=i(84346),r=i(29892),n=i(42759),o=i(49094);class a{constructor(){this._data=null,this._hitTest=new s.HitTestResult(s.HitTestResult.REGULAR)}setData(e){this._data=e}setHitTest(e){this._hitTest=e}hitTest(e){if(null===this._data||!1===this._data.visible||null===this._hitTest)return null;const t=(0,o.interactionTolerance)().line,i=Math.abs(e.y-this._data.y)<=t+this._data.linewidth/2,s=void 0===this._data.left||this._data.left-e.x<=t,r=void 0===this._data.right||e.x-this._data.right<=t;return i&&s&&r?this._hitTest:null}draw(e,t){if(null===this._data)return;if(!1===this._data.visible)return;if(this._data.y<-this._data.linewidth/2||this._data.y>t.cssHeight+this._data.linewidth/2)return;const i=t.pixelRatio;e.lineCap="butt",e.strokeStyle=this._data.color,e.lineWidth=Math.max(1,Math.floor(this._data.linewidth*i)),void 0!==this._data.linestyle&&(0,r.setLineStyle)(e,this._data.linestyle);const s=void 0!==this._data.left?Math.max(this._data.left,0):0,o=void 0!==this._data.right?Math.min(this._data.right,t.cssWidth):t.cssWidth,a=Math.round(this._data.y*i),l=Math.floor(s*i),c=Math.ceil(o*i);(0,n.drawHorizontalLine)(e,a,l,c)}}},15712:(e,t,i)=>{"use strict";function s(e,t){return e.pixelRatio===t.pixelRatio}i.d(t,{areEqualPaneRenderParams:()=>s})},49612:(e,t,i)=>{"use strict";var s;i.d(t,{LineEnd:()=>s}),function(e){e[e.Normal=0]="Normal",e[e.Arrow=1]="Arrow",e[e.Circle=2]="Circle"}(s||(s={}))},46214:(e,t,i)=>{"use strict";i.d(t,{PaneRendererLine:()=>l});var s=i(86441),r=i(4652),n=i(84346),o=i(29892),a=i(49094);class l{constructor(e){this._data=e}hitTest(e,t){var i,o,l,c;const h=(0,a.interactionTolerance)().series+this._data.lineWidth/2;let d=null!==(o=null===(i=this._data.visibleItemsRange)||void 0===i?void 0:i.startItemIndex)&&void 0!==o?o:0,u=(null!==(c=null===(l=this._data.visibleItemsRange)||void 0===l?void 0:l.endItemIndex)&&void 0!==c?c:this._data.items.length)-1;for(;u-d>2;){const t=Math.round((u+d)/2);this._data.items[t].x<=e.x?d=t:u=t}d=Math.max(1,d-1),u=Math.min(this._data.items.length-1,u+1);for(let t=d;t<=u;++t){const i=this._data.items[t-1],o=this._data.items[t],a=i.x,l=o.x;if((0,r.distanceToSegment)(new s.Point(a,i.y),new s.Point(l,o.y),new s.Point(e.x,e.y)).distance<=h)return this._data.hittest?this._data.hittest:new n.HitTestResult(n.HitTestResult.REGULAR)}return null}draw(e,t){e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.lineCap="square",e.lineJoin="round",e.strokeStyle=this._data.lineColor, +e.fillStyle=this._data.lineColor,e.lineWidth=this._data.lineWidth,(0,o.setLineStyle)(e,this._data.lineStyle),(0,a.setValidLineStyle)(e,this._data.lineStyle),this._data.simpleMode?this._drawSimpleMode(e,t.pixelRatio):this._drawLines(e),e.restore()}_drawSimpleMode(e,t){var i,s,r,n;if(e.beginPath(),this._walkLine(e,this._data.items,!1,NaN),e.stroke(),this._data.withMarkers){e.save(),e.scale(1/t,1/t);const o=Math.max(1,Math.floor(t))%2/2,a=(this._data.lineWidth+2)*t+o,l=2*Math.PI;e.beginPath();const c=null!==(s=null===(i=this._data.visibleItemsRange)||void 0===i?void 0:i.startItemIndex)&&void 0!==s?s:0;for(let i=(null!==(n=null===(r=this._data.visibleItemsRange)||void 0===r?void 0:r.endItemIndex)&&void 0!==n?n:this._data.items.length)-1+1;i-- >=c;){const s=this._data.items[i];if(s){const i=Math.round(s.x*t)+o,r=s.y*t;e.moveTo(i,r),e.arc(i,r,a,0,l)}}e.fill(),e.restore()}}_walkLine(e,t,i,s,r){var n,o,l,c;if(!t)return;const h=.25*this._data.barSpacing;let d,u,p,_,m;const g=a.coordinateIsValid,f=r?0:null!==(o=null===(n=this._data.visibleItemsRange)||void 0===n?void 0:n.startItemIndex)&&void 0!==o?o:0,v=r?t.length-1:Math.min((null!==(c=null===(l=this._data.visibleItemsRange)||void 0===l?void 0:l.endItemIndex)&&void 0!==c?c:t.length)-1,t.length-1);for(let e=f;e<=v;e++){const i=t[e];if(g(i.y)){u=i,d=e;break}}if(void 0!==d&&void 0!==u)for(let r=d;r<=v;r++){_=t[r],m=t[r+1]||{};const n=Math.round(_.x);if(g(_.y))if(p&&g(p.y))e.lineTo(n,_.y),i&&!g(m.y)&&e.lineTo(n,s);else if(m&&g(m.y))i?(r!==d&&e.lineTo(n,s),e.lineTo(n,_.y)):e.moveTo(n,_.y);else if(i){if(0===r)continue;r!==d&&e.lineTo(n-h,s),e.lineTo(n-h,_.y),e.lineTo(n+h,_.y),e.lineTo(n+h,s)}else e.moveTo(n-h,_.y),e.lineTo(n+h,_.y);p=_}}_drawLines(e){var t,i,s,r;if(!this._data.items.length)return;let n,o,l;const c=.25*this._data.barSpacing,h=a.coordinateIsValid;e.beginPath();const d=null!==(i=null===(t=this._data.visibleItemsRange)||void 0===t?void 0:t.startItemIndex)&&void 0!==i?i:0,u=(null!==(r=null===(s=this._data.visibleItemsRange)||void 0===s?void 0:s.endItemIndex)&&void 0!==r?r:this._data.items.length)-1,p=this._data.items[d];p&&e.moveTo(p.x,p.y);let _,m=e.strokeStyle,g=e.lineWidth;for(let t=d+1;t<=u;++t){let i,s,r;n=this._data.items[t-1],o=this._data.items[t],l=this._data.items[t+1],o.style&&!this._data.forceLineColor?(i=o.style.color,s=o.style.width,r=o.style.style):(i=this._data.lineColor,s=this._data.lineWidth,r=this._data.lineStyle),this._data.ignorePaletteLineWidth&&(s=this._data.lineWidth);(i!==m||s!==g||r!==_)&&(m=i,g=s,_=r,e.stroke(),e.beginPath(),e.strokeStyle=i,e.lineWidth=s,(0,a.setValidLineStyle)(e,r),e.moveTo(n.x,n.y)),f=n,S=l,h((v=o).y)&&(h(f.y)?e.lineTo(v.x,v.y):S&&h(S.y)?e.moveTo(v.x,v.y):(e.moveTo(v.x-c,v.y),e.lineTo(v.x+c,v.y)))}var f,v,S;e.stroke()}}},55776:(e,t,i)=>{"use strict";i.d(t,{RectangleRenderer:()=>d});var s=i(88537),r=i(86441),n=i(34026),o=i(4652),a=i(84346),l=i(68906),c=i(43891),h=i(42759);class d{constructor(e,t,i){this._data=null,this._hitTestResult=e||new a.HitTestResult(a.HitTestResult.MOVEPOINT), +this._backHitTestResult=t||new a.HitTestResult(a.HitTestResult.MOVEPOINT_BACKGROUND),this._forceOverrideTransparency=Boolean(i)}setData(e){this._data=e}hitTest(e,t){if(null===this._data||this._data.points.length<2||this._data.nohittest)return null;const[i,s]=this._getPointsInPhysicalSpace(t),n=new r.Point(s.x,i.y),a=new r.Point(i.x,s.y),l=new r.Point(e.x*t.pixelRatio,e.y*t.pixelRatio),c=this._extendAndHitTestLineSegment(l,i,n,t);if(null!==c)return c;const h=this._extendAndHitTestLineSegment(l,a,s,t);if(null!==h)return h;let d=(0,o.distanceToSegment)(n,s,l);return d.distance<=3?this._hitTestResult:(d=(0,o.distanceToSegment)(i,a,l),d.distance<=3?this._hitTestResult:this._data.fillBackground?this._hitTestBackground(l,i,s,t):null)}getColor(){const e=(0,s.ensure)(this._data);return void 0===e.transparency?e.backcolor:(0,l.generateColor)(e.backcolor,e.transparency,this._forceOverrideTransparency)}draw(e,t){if(null===this._data||this._data.points.length<2||this._data.linewidth<=0&&!this._data.fillBackground)return;e.save();const[i,s]=this._getPointsInPhysicalSpace(t),r=this._data.linewidth?Math.max(1,Math.floor(this._data.linewidth*t.pixelRatio)):0,n=this._data.fillBackground?this.getColor():void 0,o=Math.max(1,Math.floor(t.pixelRatio));(0,h.fillRectWithBorder)(e,i.x,i.y,s.x,s.y,n,this._data.color,r,c.LINESTYLE_SOLID,this._data.extendLeft,this._data.extendRight,"center",t.physicalWidth,this._data.includeRightEdge&&1===o?1:0),e.restore()}_getPointsInPhysicalSpace(e,t=0){const i=(0,s.ensureNotNull)(this._data),[n,o]=i.points,a=e.pixelRatio,l=Math.min(n.x,o.x),c=Math.max(n.x,o.x),h=Math.min(n.y,o.y),d=Math.max(n.y,o.y),u=Math.round(l*a)+t,p=Math.round(c*a)+t,_=Math.round(h*a)+t,m=Math.round(d*a)+t;return[new r.Point(u,_),new r.Point(p,m)]}_extendAndHitTestLineSegment(e,t,i,s){const r=this._extendAndClipLineSegment(t,i,s);if(null!==r){if((0,o.distanceToSegment)(r[0],r[1],e).distance<=3)return this._hitTestResult}return null}_extendAndClipLineSegment(e,t,i){const n=(0,s.ensureNotNull)(this._data);if((0,r.equalPoints)(e,t)&&!n.extendLeft&&!n.extendRight)return null;const o=i.physicalWidth,a=Math.min(e.x,t.x),l=Math.max(e.x,t.x),c=n.extendLeft?0:Math.max(a,0),h=n.extendRight?o:Math.min(l,o);return c>h||h<=0||c>=o?null:[new r.Point(c,e.y),new r.Point(h,t.y)]}_hitTestBackground(e,t,i,s){const o=this._extendAndClipLineSegment(t,i,s);return null!==o&&(0,n.pointInBox)(e,(0,r.box)(o[0],o[1]))?this._backHitTestResult:null}}},16282:(e,t,i)=>{"use strict";i.d(t,{ScaledPaneRenderer:()=>s,ScaledPaneRendererWrapper:()=>r});class s{draw(e,t){e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.translate(.5,.5),this._drawImpl(e,{...t,pixelRatio:1}),e.restore()}drawBackground(e,t){e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.translate(.5,.5),this._drawBackgroundImpl(e,{...t,pixelRatio:1}),e.restore()}_drawBackgroundImpl(e,t){}}class r{constructor(e){this._base=e}hitTest(e,t){return this._base.hitTest(e,t)}draw(e,t){e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.translate(.5,.5),this._base.draw(e,{...t,pixelRatio:1}),e.restore()}drawBackground(e,t){ +e.save(),e.scale(t.pixelRatio,t.pixelRatio),e.translate(.5,.5),this._base.drawBackground&&this._base.drawBackground(e,{...t,pixelRatio:1}),e.restore()}}},13632:(e,t,i)=>{"use strict";var s;i.d(t,{StatsPosition:()=>s}),function(e){e[e.Left=0]="Left",e[e.Center=1]="Center",e[e.Right=2]="Right"}(s||(s={}))},28113:(e,t,i)=>{"use strict";i.d(t,{StepLineDecoration:()=>s,PaneRendererStepLine:()=>g});var s,r=i(4652),n=i(84346),o=i(86441),a=i(29892),l=i(55257),c=i(49094),h=i(42759),d=i(68906);!function(e){e[e.None=0]="None",e[e.Diamonds=1]="Diamonds"}(s||(s={}));class u{initialize(e,t,i,s){var r,n,o,l;const c=e.lineStyle;t.lineCap="butt",t.lineJoin="round";const h=Math.max(Math.floor(null!==(n=null===(r=s.style)||void 0===r?void 0:r.width)&&void 0!==n?n:e.lineWidth*i.pixelRatio));void 0!==c&&(0,a.setLineStyle)(t,c);const d=h%2?.5:0;t.moveTo(Math.round(s.x*i.pixelRatio)+d,Math.round(s.y*i.pixelRatio)+d),t.strokeStyle=null!==(l=null===(o=s.style)||void 0===o?void 0:o.color)&&void 0!==l?l:e.lineColor,t.lineWidth=h}finishFragment(e){e.stroke()}hitTest(e,t,i,s,n){var a,l;const h=Math.round((i.x+s.x)/2),d=new o.Point(h,i.y),u=new o.Point(h,s.y),p=null!==(l=null===(a=i.style)||void 0===a?void 0:a.width)&&void 0!==l?l:e.lineWidth,_=(0,c.interactionTolerance)().series+p/2;return Math.min((0,r.distanceToSegment)(i,d,n).distance,(0,r.distanceToSegment)(d,u,n).distance,(0,r.distanceToSegment)(u,s,n).distance)<=_}applyColor(e,t){e.strokeStyle=t}applyLineWidth(e,t){e.lineWidth=t}drawItem(e,t,i,s){e.lineTo(i.x,i.y),void 0!==s&&(e.lineTo(s.x,i.y),e.lineTo(s.x,s.y))}}class p{constructor(){this._lineWidth=1}initialize(e,t,i,s){var r,n,o,a;this.applyColor(t,null!==(n=null===(r=s.style)||void 0===r?void 0:r.color)&&void 0!==n?n:e.lineColor),this._lineWidth=Math.max(Math.floor(null!==(a=null===(o=s.style)||void 0===o?void 0:o.width)&&void 0!==a?a:e.lineWidth*i.pixelRatio))}finishFragment(e){e.fill()}drawItem(e,t,i,s,r){if(r&&void 0!==s&&!Number.isNaN(s.y)){e.save(),e.translate(s.x,s.y),e.rotate(Math.PI/4);const i=this._scaleByLineWidth(this._lineWidth);e.scale(i,i),this._drawItemRotatedAndTranslated(e,t),e.restore()}}applyLineWidth(e,t){this._lineWidth=t}hitTest(e,t,i,s,r){var n,a;if(!s.valIsNotSameAsPrev)return!1;const l=Math.round((i.x+s.x)/2),c=new o.Point(l,s.y),h=r.subtract(c),d=Math.max(Math.floor(null!==(a=null===(n=i.style)||void 0===n?void 0:n.width)&&void 0!==a?a:e.lineWidth*t.pixelRatio));return this._hitTestTranslated(h,d)}_scaleByLineWidth(e){return Math.sqrt(e)}}class _ extends p{applyColor(e,t){e.fillStyle=t}_hitTestTranslated(e,t){return Math.abs(e.x)+Math.abs(e.y)<8*this._scaleByLineWidth(t)/2}_drawItemRotatedAndTranslated(e,t){(0,h.drawRoundRect)(e,-4,-4,8,8,2,!0)}}class m extends p{applyColor(e,t){e.fillStyle=(0,d.applyTransparency)(t,85)}_hitTestTranslated(e,t){return Math.abs(e.x)+Math.abs(e.y)<21*this._scaleByLineWidth(t)/2}_drawItemRotatedAndTranslated(e,t){(0,h.drawRoundRect)(e,-10.5,-10.5,21,21,5,!0)}}class g{constructor(e){this._data=null,this._data=null!=e?e:null}setData(e){this._data=e}hitTest(e,t){var i +;const r=this._data;if(null===r||0===r.items.length)return null;const o=r.items,a=(0,l.lowerbound)(o,e,(e,t)=>e.x<=t.x),c=Math.max(0,a-1),h=Math.min(o.length-1,a+1),d=function(e){switch(e){case s.Diamonds:return[new u,new m];default:return[new u]}}(null===(i=this._data)||void 0===i?void 0:i.decoration);for(let i=c;ii.hitTest(r,t,s,a,e)))return new n.HitTestResult(n.HitTestResult.REGULAR)}return null}draw(e,t){if(null===this._data||0===this._data.items.length)return;e.save();(function(e){switch(e){case s.Diamonds:return[new u,new _,new m];default:return[new u]}})(this._data.decoration).forEach(i=>this._drawImpl(e,t,i)),e.restore()}_drawImpl(e,t,i){var s,r,n,a,l,c,h,d,u,p,_,m,g,f,v,S;if(null===this._data||0===this._data.items.length)return;const{lineWidth:y,lineColor:b,items:w}=this._data,C=t.pixelRatio;let P=Math.max(Math.floor(null!==(r=null===(s=w[0].style)||void 0===s?void 0:s.width)&&void 0!==r?r:y*C)),T=P%2?.5:0;i.initialize(this._data,e,t,w[0]);const x=null!==(a=null===(n=this._data.visibleItemsRange)||void 0===n?void 0:n.startItemIndex)&&void 0!==a?a:0,I=null!==(c=null===(l=this._data.visibleItemsRange)||void 0===l?void 0:l.endItemIndex)&&void 0!==c?c:w.length;if(!(I<=x)){e.beginPath(),i.applyColor(e,null!==(d=null===(h=w[x].style)||void 0===h?void 0:h.color)&&void 0!==d?d:b);for(let s=x;s{"use strict";i.d(t,{calculateLabelPosition:()=>p,wordWrap:()=>g,TextRenderer:()=>M});var s=i(86441),r=i(88537),n=i(34026),o=i(62820),a=i(84346),l=i(42759),c=i(29892),h=i(80643),d=i(93435),u=i(43891);function p(e,t,i,r,n){const o=.5*(t.x+i.x);let a=i.y;return t.y>i.y?(a-=e.height/2+r.y,a=Math.max(e.height/2,a)):(a+=e.height/2+r.y,a=Math.min(n-e.height/2,a)),new s.Point(o,a)}let _;function m(){const e=document.createElement("canvas");e.width=0,e.height=0,_=(0,r.ensureNotNull)(e.getContext("2d"))}function g(e,t,i){_||m(),i=(0,h.isString)(i)?parseInt(i):i,e+="";const s=!(0,h.isNumber)(i)||!isFinite(i)||i<=0?e.split(/\r\n|\r|\n|$/):e.split(/[^\S\r\n]*(?:\r\n|\r|\n|$)/);if(s[s.length-1]||s.pop(),!(0,h.isNumber)(i)||!isFinite(i)||i<=0)return s;_.font=t;const r=[];for(let e=0;e0&&_.measureText(o.slice(0,3*--e-1).join("")).width>i;);if(e>0)r.push(o.slice(0,3*e-1).join("")),o.splice(0,3*e);else{const e=o[0]+(o[1]||"");if(a=1===a?1:~~(i/_.measureText(e).width*e.length),_.measureText(e.substring(0,a)).width<=i)for(;_.measureText(e.substring(0,a+1)).width<=i;)a++;else for(;a>1&&_.measureText(e.substring(0,--a)).width>i;);a<1&&(a=1),r.push(e.substring(0,a)),o[0]=e.substring(a),o[1]=""}if(_.measureText(o.join("")).width<=i){r.push(o.join(""));break}}}return r}function f(e,t,i){if(0===i)return e.clone();const r=(e.x-t.x)*Math.cos(i)-(e.y-t.y)*Math.sin(i)+t.x,n=(e.x-t.x)*Math.sin(i)+(e.y-t.y)*Math.cos(i)+t.y;return new s.Point(r,n)}function v(e,t){const i=Math.round(t+2*C(e)+2*b(e));return i%2?i-1:i}function S(e,t){return T(e)*t+P(e)*(t-1)+2*w(e)+2*y(e)}function y(e){return void 0!==e.boxPaddingVert?e.boxPaddingVert*I(e):void 0!==e.boxPadding?e.boxPadding*I(e):T(e)/3}function b(e){return void 0!==e.boxPaddingHorz?e.boxPaddingHorz*I(e):void 0!==e.boxPadding?e.boxPadding*I(e):T(e)/3}function w(e){return(e.backgroundVertInflate||0)*I(e)}function C(e){return(e.backgroundHorzInflate||0)*I(e)}function P(e){return(e.padding||0)*I(e)}function T(e){return Math.ceil(x(e)*I(e))}function x(e){return e.fontsize||e.fontSize||30}function I(e){const t=Math.min(1,Math.max(.2,Math.min(e.scaleX||1,e.scaleY||1)));if(1===t)return t;const i=x(e);return Math.ceil(t*i)/i}class M{constructor(e,t){this._data=null,this._internalData=null,this._boxSize=null,this._polygonPoints=null,this._linesInfo=null,this._fontInfo=null,this._hittest=t||new a.HitTestResult(a.HitTestResult.MOVEPOINT,{areaName:a.AreaName.Text}),void 0!==e&&this.setData(e)}setData(e){e.horzTextAlign||(e.horzTextAlign=e.horzAlign),function(e,t){if(null===e||null===t)return null===e==(null===t);if(void 0===e.points!=(void 0===t.points))return!1;if(void 0!==e.points&&void 0!==t.points){if(e.points.length!==t.points.length)return!1;for(let r=0;re){const i=(0,s.box)(new s.Point(0,0),new s.Point(e,t));return this._getPolygonPoints().every(e=>!(0,n.pointInBox)(e,i))}return!1}setPoints(e,t){(0,r.ensureNotNull)(this._data).points=e,this._hittest=t||new a.HitTestResult(a.HitTestResult.MOVEPOINT)}fontStyle(e){return null===this._data?"":this._getFontInfo().fontStyle}wordWrap(e,t,i){return g(e,i||this.fontStyle(),t)}draw(e,t){if(null===this._data||void 0===this._data.points||0===this._data.points.length)return;if(this.isOutOfScreen(t.cssWidth,t.cssHeight))return;const i=t.pixelRatio,s=this._getInternalData(),r=this._getRotationPoint().scaled(i);e.save(),e.translate(r.x,r.y),e.rotate(this._data.angle||0),e.translate(-r.x,-r.y);const n=this._getFontInfo().fontSize;e.textBaseline=s.textBaseLine,e.textAlign=s.textAlign,e.font=this.fontStyle();const{scaledLeft:o,scaledRight:a,scaledTop:h,scaledBottom:p}=function(e,t){const i=Math.round(e.boxLeft*t),s=Math.round(e.boxTop*t);return{scaledLeft:i,scaledRight:i+Math.round(e.boxWidth*t),scaledTop:s,scaledBottom:s+Math.round(e.boxHeight*t)}}(s,i);if(this._data.backgroundColor||this._data.borderColor||this._data.highlightBorder&&this._data.wordWrapWidth){const t=this._data.borderWidth||Math.max(n/12,1),s=Math.round(t*i),r=s/2;let d=!1;if(this._data.boxShadow){e.save();const{shadowColor:t,shadowBlur:i,shadowOffsetX:s=0,shadowOffsetY:r=0}=this._data.boxShadow;e.shadowColor=t,e.shadowBlur=i,e.shadowOffsetX=s,e.shadowOffsetY=r,d=!0}if(this._data.backgroundRoundRect)this._data.backgroundColor&&((0,l.drawRoundRect)(e,o,h,a-o,p-h,this._data.backgroundRoundRect*i),e.fillStyle=this._data.backgroundColor,e.fill(),d&&(e.restore(),d=!1)),this._data.borderColor&&((0,l.drawRoundRect)(e,o-r,h-r,a-o+s,p-h+s,this._data.backgroundRoundRect*i+s),e.strokeStyle=this._data.borderColor,e.lineWidth=s,e.stroke(),d&&(e.restore(),d=!1));else if(this._data.backgroundColor&&(e.fillStyle=this._data.backgroundColor,e.fillRect(o,h,a-o,p-h),d&&(e.restore(),d=!1)),this._data.borderColor||this._data.highlightBorder){let t;this._data.borderColor?(e.strokeStyle=this._data.borderColor,t=s):(e.strokeStyle=this._data.color,(0,c.setLineStyle)(e,u.LINESTYLE_DASHED),t=Math.max(1,Math.floor(i))), +e.lineWidth=t,e.beginPath(),e.moveTo(o-t/2,h-t/2),e.lineTo(o-t/2,p+t/2),e.lineTo(a+t/2,p+t/2),e.lineTo(a+t/2,h-t/2),e.lineTo(o-t/2,h-t/2),e.stroke(),d&&e.restore()}}e.fillStyle=this._data.color;const _=(o+Math.round(s.textStart*i))/i,m=.05*n;let g=(h+Math.round((s.textTop+m)*i))/i;const f=P(this._data),v=this._getLinesInfo();for(const t of v.lines)(0,d.drawScaled)(e,i,()=>e.fillText(t,_,g)),g+=n+f;e.restore()}_getLinesMaxWidth(e){if(_||m(),_.textBaseline="alphabetic",_.font=this.fontStyle(),null!==this._data&&this._data.wordWrapWidth&&!this._data.forceCalculateMaxLineWidth)return this._data.wordWrapWidth*I(this._data);let t=0;for(const i of e)t=Math.max(t,_.measureText(i).width);return t}_getInternalData(){if(null!==this._internalData)return this._internalData;const e=(0,r.ensureNotNull)(this._data),t=this._getBoxSize(),i=t.boxWidth,s=t.boxHeight,n=(0,r.ensureDefined)(e.points)[0];let a=n.y;switch(e.vertAlign){case"bottom":a-=s+e.offsetY;break;case"middle":a-=s/2;break;case"top":a+=e.offsetY}let l=n.x;const c=b(e),h=y(e),d=C(e)+c;let u;const p=a+(w(e)+h)+T(e)/2;let _;switch(e.horzAlign){case"left":l+=e.offsetX;break;case"center":l-=i/2;break;case"right":l-=i+e.offsetX}switch((0,r.ensureDefined)(e.horzTextAlign)){case"left":_="start",u=l+d,(0,o.isRtl)()&&(e.forceTextAlign?_="left":(u=l+i-d,_="right"));break;case"center":_="center",u=l+i/2;break;case"right":_="end",u=l+i-d,(0,o.isRtl)()&&e.forceTextAlign&&(_="right")}return this._internalData={boxLeft:l,boxTop:a,boxWidth:i,boxHeight:s,textStart:u-l,textTop:p-a,textAlign:_,textBaseLine:"middle"},this._internalData}_getLinesInfo(){if(null===this._linesInfo){const e=(0,r.ensureNotNull)(this._data);let t=this.wordWrap(e.text,e.wordWrapWidth);if(void 0!==e.maxHeight){const i=function(e){const t=(0,r.ensureDefined)(e.maxHeight),i=T(e),s=P(e);return Math.floor((t+s)/(i+s))}(e);t.length>i&&(t=t.slice(0,i))}this._linesInfo={linesMaxWidth:this._getLinesMaxWidth(t),lines:t}}return this._linesInfo}_getFontInfo(){if(null===this._fontInfo){const e=(0,r.ensureNotNull)(this._data),t=T(e),i=(e.bold?"bold ":"")+(e.italic?"italic ":"")+t+"px "+e.font;this._fontInfo={fontStyle:i,fontSize:t}}return this._fontInfo}_getBoxSize(){if(null===this._boxSize){const e=this._getLinesInfo(),t=(0,r.ensureNotNull)(this._data);this._boxSize={boxWidth:v(t,e.linesMaxWidth),boxHeight:S(t,e.lines.length)}}return this._boxSize}_getPolygonPoints(){if(null!==this._polygonPoints)return this._polygonPoints;if(null===this._data)return[];const e=this._data.angle||0,{boxLeft:t,boxTop:i,boxWidth:r,boxHeight:n}=this._getInternalData(),o=this._getRotationPoint();return this._polygonPoints=[f(new s.Point(t,i),o,e),f(new s.Point(t+r,i),o,e),f(new s.Point(t+r,i+n),o,e),f(new s.Point(t,i+n),o,e)],this._polygonPoints}_getRotationPoint(){const{boxLeft:e,boxTop:t,boxWidth:i,boxHeight:n}=this._getInternalData(),{horzAlign:o,vertAlign:a}=(0,r.ensureNotNull)(this._data);let l,c;switch(o){case"center":l=e+i/2;break;case"left":l=e;break;case"right":l=e+i}switch(a){case"middle":c=t+n/2;break;case"top":c=t;break;case"bottom":c=t+n} +return new s.Point(l,c)}}},63300:(e,t,i)=>{"use strict";i.d(t,{drawArrow:()=>d,TrendLineRenderer:()=>u});var s=i(88537),r=i(4652),n=i(49612),o=i(84346),a=i(29892),l=i(49094),c=i(42759);function h(e,t,i,s,r){t.save(),t.fillStyle="#000000",t.beginPath(),t.arc(e.x*r,e.y*r,i*r,0,2*Math.PI,!1),t.fill(),s.strokeWidth&&(t.lineWidth=s.strokeWidth,t.stroke()),t.restore()}function d(e,t,i,s,r,n=!1){if(t.subtract(e).length()<1)return;const o=(0,l.getArrowPoints)(e,t,s,n);for(let e=0;e0&&(l[0].x===l[1].x?(0,c.drawVerticalLine)(e,Math.round(l[0].x*s),l[0].y*s,l[1].y*s):l[0].y===l[1].y?(0,c.drawHorizontalLine)(e,Math.round(l[0].y*s),l[0].x*s,l[1].x*s):(0,a.drawLine)(e,l[0].x*s,l[0].y*s,l[1].x*s,l[1].y*s)),i.overlayLineEndings&&this._drawEnds(e,o,i.linewidth,s)}hitTest(e,t){const i=this._data;if(null===i)return null;if("points"in i&&i.points.length<2)return null;const s=(0,l.interactionTolerance)().line,n=i.points[0],o=i.points[1],a=this._extendAndClipLineSegment(n,o,t);if(null!==a){if((0,r.distanceToSegment)(a[0],a[1],e).distance<=s)return this._hittest}return null}_extendAndClipLineSegment(e,t,i){const r=(0,s.ensureNotNull)(this._data);return(0,l.extendAndClipLineSegment)(e,t,i.cssWidth,i.cssHeight,r.extendleft,r.extendright)}_drawEnds(e,t,i,r){const o=t[0],a=t[1],l=(0,s.ensureNotNull)(this._data);switch(l.leftend){case n.LineEnd.Arrow:d(a,o,e,i,r);break;case n.LineEnd.Circle:h(o,e,i,(0,s.ensureDefined)(l.endstyle),r)}switch(l.rightend){case n.LineEnd.Arrow:d(o,a,e,i,r);break;case n.LineEnd.Circle:h(a,e,i,(0,s.ensureDefined)(l.endstyle),r)}}}},44349:(e,t,i)=>{"use strict";i.d(t,{VerticalLineRenderer:()=>a});var s=i(84346),r=i(29892),n=i(42759),o=i(49094);class a{constructor(){this._data=null,this._hitTest=new s.HitTestResult(s.HitTestResult.MOVEPOINT)}setData(e){this._data=e}setHitTest(e){this._hitTest=e}hitTest(e){if(null===this._data||null===this._hitTest)return null;const t=(0,o.interactionTolerance)().line,i=Math.abs(e.x-this._data.x)<=t+this._data.linewidth/2,s=void 0===this._data.top||this._data.top-e.y<=t,r=void 0===this._data.bottom||e.y-this._data.bottom<=t;return i&&s&&r?this._hitTest:null}draw(e,t){if(null===this._data)return;if(this._data.linewidth<=0)return;if(this._data.x<-this._data.linewidth/2||this._data.x>t.cssWidth+this._data.linewidth/2)return;const i=t.pixelRatio;e.lineCap="butt",e.strokeStyle=this._data.color, +e.lineWidth=Math.max(1,Math.floor(this._data.linewidth*i)),void 0!==this._data.linestyle&&(0,r.setLineStyle)(e,this._data.linestyle);const s=void 0!==this._data.top?Math.max(this._data.top,0):0,o=void 0!==this._data.bottom?Math.min(this._data.bottom,t.cssHeight):t.cssHeight,a=Math.round(this._data.x*i),l=Math.floor(s*i),c=Math.ceil(o*i);(0,n.drawVerticalLine)(e,a,l,c)}}},59555:(e,t,i)=>{"use strict";i.d(t,{sortSourcesPreOrdered:()=>s,sortSources:()=>r});const s={ChartEventsSource:10000001,Dividends:10000002,Splits:10000003,Earnings:10000004,RollDates:10000005,LineToolOrder:10000006,LineToolPosition:10000007,LineToolExecution:10000008,AlertLabel:10000009};function r(e){return[...e].sort((e,t)=>e.zorder()-t.zorder())}},71053:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PlotRowSearchMode:()=>a,PlotList:()=>h,mergeMinMax:()=>d,mergePlotRows:()=>u});var s=i(88537),r=i(55257),n=i(2271);const o=(0,i(98125).getLogger)("Chart.PlotList");var a;!function(e){e[e.NearestLeft=-1]="NearestLeft",e[e.Exact=0]="Exact",e[e.NearestRight=1]="NearestRight"}(a||(a={}));function l(e){return e.index}function c(e){return e.value[0]}class h{constructor(e=null,t=null){this._items=[],this._start=0,this._end=0,this._shareRead=!1,this._minMaxCache=new Map,this._rowSearchCacheByIndex=new Map,this._rowSearchCacheByIndexWithoutEmptyValues=new Map,this._rowSearchCacheByTime=new Map,this._rowSearchCacheByTimeWithoutEmptyValues=new Map,this._plotFunctions=e||new Map,this._emptyValuePredicate=t}clear(){this._items=[],this._start=0,this._end=0,this._shareRead=!1,this._minMaxCache.clear(),this._invalidateSearchCaches()}first(){return this.size()>0?this._items[this._start]:null}last(){return this.size()>0?this._items[this._end-1]:null}firstIndex(){return this.size()>0?this._indexAt(this._start):null}lastIndex(){return this.size()>0?this._indexAt(this._end-1):null}size(){return this._end-this._start}isEmpty(){return 0===this.size()}contains(e){return null!==this.search(e,a.Exact)}valueAt(e){const t=this.search(e);return null!==t?t.value:null}add(e,t){if(this._shareRead)return o.logDebug("add: readonly collection modification attempt"),!1;const i={index:e,value:t},s=this._nonCachedSearch(e,a.Exact,l);return this._invalidateSearchCaches(),null===s?(this._items.splice(this._lowerbound(e,l),0,i),this._start=0,this._end=this._items.length,!0):(this._items[s]=i,!1)}search(e,t=a.Exact,i){return this._searchImpl(e,t,this._rowSearchCacheByIndex,this._rowSearchCacheByIndexWithoutEmptyValues,l,i)}searchByTime(e,t=a.Exact,i){return this._searchImpl(e,t,this._rowSearchCacheByTime,this._rowSearchCacheByTimeWithoutEmptyValues,c,i)}fold(e,t){let i=t;for(let t=this._start;t=i;--t){ +const i=this._indexAt(t),s=this._valueAt(t);if(e(i,s))return{index:i,value:s}}return null}each(e){for(let t=this._start;t!1,next:()=>{throw new Error("Invalid operation")}};let r=i-1;return{hasNext:()=>r(r+=1,this._items[r])}}minMaxOnRangeCached(e,t,i){if(this.isEmpty())return null;let s=null;for(const r of i){s=d(s,this._minMaxOnRangeCachedImpl(e-r.offset,t-r.offset,r.name))}return s}minMaxOnRange(e,t,i){if(this.isEmpty())return null;let s=null;for(const r of i){s=d(s,this._minMaxOnRange(e-r.offset,t-r.offset,r.name))}return s}merge(e){return this._shareRead?(o.logDebug("merge: readonly collection modification attempt"),null):0===e.length?null:this.isEmpty()||e[e.length-1].indexthis._items[this._items.length-1].index?this._append(e):1===e.length&&e[0].index===this._items[this._items.length-1].index?(this._updateLast(e[0]),e[0]):this._merge(e)}addTail(e,t=!1){let i=0;t&&this._end-this._start>0&&(i=1,this._items[this._end-this._start-1].value=e[0].value);for(let t=i;tvoid 0!==e).sort((e,t)=>e.index-t.index),this._invalidateSearchCaches(),this._minMaxCache.clear(),this._start=0,this._end=this._items.length}remove(e){if(this._shareRead)return o.logDebug("remove: readonly collection modification attempt"),null;const t=this._nonCachedSearch(e,a.NearestRight,l);if(null===t)return null;const i=this._items.splice(t);return this._end=this._items.length,this._minMaxCache.clear(),this._invalidateSearchCaches(),i.length>0?i[0]:null}state(){return{start:this._start,end:this._end,data:this._items,shareread:this._shareRead}}restoreState(e){e?(this._start=e.start,this._end=e.end,this._shareRead=e.shareread,this._items=e.data,this._minMaxCache.clear(),this._invalidateSearchCaches()):this.clear()}_indexAt(e){return this._items[e].index}_valueAt(e){return this._items[e].value}_length(){return this._items.length}_searchImpl(e,t,i,s,r,n){const o=void 0!==n?i:s,a=void 0!==n?1e4*(t+1)+n:t;let l=o.get(e);if(void 0!==l){const e=l.get(a) +;if(void 0!==e)return e}const c=this._nonCachedSearch(e,t,r,n);if(null===c)return null;const h={index:this._indexAt(c),value:this._valueAt(c)};return void 0===l&&(l=new Map,o.set(e,l)),l.set(a,h),h}_nonCachedSearch(e,t,i,s){const r=this._lowerbound(e,i),n=r===this._end||e!==i(this._items[r]);if(n&&t!==a.Exact)switch(t){case a.NearestLeft:return this._searchNearestLeft(r,s);case a.NearestRight:return this._searchNearestRight(r,s);default:throw new TypeError("Unknown search mode")}if(void 0===s||n||t===a.Exact)return n?null:r;switch(t){case a.NearestLeft:return this._nonEmptyNearestLeft(r,s);case a.NearestRight:return this._nonEmptyNearestRight(r,s);default:throw new TypeError("Unknown search mode")}}_nonEmptyNearestRight(e,t){const i=(0,s.ensure)(this._emptyValuePredicate),r=(0,s.ensure)(t);for(;e=this._start&&i(this._valueAt(e),r);)e-=1;return et(e)t.index>e,this._start,this._end)}_plotMinMax(e,t,i){let s=null;const r=this._plotFunctions.get(i);if(void 0===r)throw new Error(`Plot "${i}" is not registered`);for(let i=e;is.max&&(s.max=e)))}return s}_invalidateCacheForRow(e){const t=Math.floor(e.index/30);this._minMaxCache.forEach(e=>e.delete(t))}_prepend(e){return(0,s.assert)(!this._shareRead,"collection should not be readonly"),(0,s.assert)(0!==e.length,"plotRows should not be empty"),this._invalidateSearchCaches(),this._minMaxCache.clear(),this._items=e.concat(this._items),this._start=0,this._end=this._items.length,e[0]}_append(e){return(0,s.assert)(!this._shareRead,"collection should not be readonly"),(0,s.assert)(0!==e.length,"plotRows should not be empty"),this._invalidateSearchCaches(),this._minMaxCache.clear(),this._items=this._items.concat(e),this._start=0,this._end=this._items.length,e[0]}_updateLast(e){(0,s.assert)(!this.isEmpty(),"plot list should not be empty");const t=this._items[this._end-1];(0,s.assert)(t.index===e.index,"last row index should match new row index"),this._invalidateCacheForRow(e),this._invalidateSearchCaches(),this._items[this._end-1]=e}_merge(e){return(0,s.assert)(0!==e.length,"plot rows should not be empty"),this._invalidateSearchCaches(),this._minMaxCache.clear(),this._items=u(this._items,e),this._start=0,this._end=this._items.length,e[0]}_minMaxOnRangeCachedImpl(e,t,i){ +if(this.isEmpty())return null;let r=null;const n=(0,s.ensureNotNull)(this.firstIndex()),o=(0,s.ensureNotNull)(this.lastIndex()),a=Math.max(e,n),l=Math.min(t,o),c=30*Math.ceil(a/30),h=Math.max(c,30*Math.floor(l/30));r=d(r,this._minMaxOnRange(a,Math.min(c,t,l),i));let u=this._minMaxCache.get(i);void 0===u&&(u=new Map,this._minMaxCache.set(i,u));for(let e=Math.max(c+1,a);et[o].index?o++:(n++,o++,r--);return r}(e,t),s=new Array(i);let r=0,n=0;const o=e.length,a=t.length;let l=0;for(;rt[n].index?(s[l]=t[n],n++):(s[l]=t[n],r++,n++),l++;for(;r{"use strict";i.d(t,{PriceAxisView:()=>p});var s=i(86441),r=i(34026),n=i(71413),o=i(68906),a=i(62820),l=i(93435),c=i(84346),h=i(42759),d=i(56589);class u{constructor(e,t){this.setData(e,t)}setData(e,t){this._data=e,this._commonData=t}draw(e,t,i,s,r,n,c){var d,u,p;const _=this._data;if(!_.visible||this._isOutOfScreen(t,r))return;const m=this._commonData,g=void 0!==_.labelIcon,f=_.ignoreOffset?0:t.offsetSize,v=t.borderSize,S=t.paddingTop+m.additionalPaddingTop,y=t.paddingBottom+m.additionalPaddingBottom,b=t.paddingInner,w=t.paddingOuter,C=t.fontSize;let P=_.text,T=_.textColor||m.textColor,x=_.secondLine||"",I=m.secondLineTextColor||T,M=_.thirdLine||"";const L=m.thirdLineTextColor||T;0===x.length&&(x=M,I=L,M=""),0===P.length&&(P=x,T=I,x=M,I=L,M=""),e.save(),e.font=t.font;const A=i.yMidCorrection(e,P)*c,E=Math.ceil(i.measureText(e,P)),k=C+S+y,D=Boolean(x),V=Boolean(M),B=D?Math.ceil(i.measureText(e,x)):0,N=V?Math.ceil(i.measureText(e,M)):0,R=v+b+w+E+f,O=B>0?v+b+w+B+f:0,F=N>0?v+b+w+N+f:0,W=Math.max(R,O,F),H=Math.max(1,Math.floor(c));let z=Math.round(k*c);z%2!=H%2&&(z+=1);const U=Math.round((C+t.lineSpacing)*c),j=Math.round(2*(C+t.lineSpacing)*c),G=Math.max(1,Math.floor(v*c)),q=_.separatorVisible?G:0,Y=_.borderVisible?G:0,K=g?z:Math.round(W*c),$=Math.round(f*c),X=Math.ceil(s*c),Z=Math.ceil(b*c),J=Math.round((null!==(d=m.fixedCoordinate)&&void 0!==d?d:m.coordinate)*c)-Math.floor(.5*c),Q=Math.floor(J+H/2-z/2),ee=Q+z,te="right"===n,ie=te?X-q:q,se=X;let re,ne=ie;const oe=(0,o.resetTransparency)(null!==(u=_.backgroung)&&void 0!==u?u:m.background);e.fillStyle=oe;const ae=2*c;if(e.textAlign=te?"right":"left",e.textBaseline="middle",te?(ne=ie-K, +re=ie-$-Z-1):(ne=ie+K,re=ie+$+Z),P||g){const i=V?z+j:D?z+U:z;if(((t,s,r)=>{te?(0,h.drawRoundRectWithInnerBorder)(e,ne,Q,K,i,t,[ae,0,0,ae],Y,s,r):(0,h.drawRoundRectWithInnerBorder)(e,ie,Q,K,i,t,[0,ae,ae,0],Y,s,r)})(oe,null!==(p=m.borderColor)&&void 0!==p?p:oe,m.borderStyle),_.separatorVisible&&(e.fillStyle=t.paneBackgroundColor,e.fillRect(te?se-q:0,Q,q,ee-Q)),g){switch(_.labelIcon){case 0:this._drawPlusIcon(e,ie,ne,Q,J,ee,H);break;case 1:this._drawClockIcon(e,ie,ne,J,H,c)}return void e.restore()}e.save(),e.translate(re,(Q+ee)/2+A),(0,l.drawScaled)(e,c,()=>{e.fillStyle=T,e.fillText(P,0,0)}),e.restore()}D&&(e.fillStyle=I,e.save(),e.translate(re,(Q+ee)/2+A+U),(0,l.drawScaled)(e,c,()=>{e.fillText((0,a.startWithLTR)(x),0,0)}),e.restore()),V&&(e.fillStyle=L,e.save(),e.translate(re,(Q+ee)/2+A+j),(0,l.drawScaled)(e,c,()=>{e.fillText((0,a.startWithLTR)(M),0,0)}),e.restore()),e.restore()}height(e){const t=this._lines();return this._data.visible&&0!==t?t*e.fontSize+(t-1)*e.lineSpacing+e.paddingTop+this._commonData.additionalPaddingTop+e.paddingBottom+this._commonData.additionalPaddingBottom:0}hitTest(e){const t=this._data.hitTestData;if(void 0===t||!this._data.visible)return null;const i=(0,n.lastMouseOrTouchEventInfo)().isTouch?10:0,o=(0,s.box)(new s.Point(t.xl-i,t.y-i),new s.Point(t.xl+t.containerWidth+i,t.y+t.containerHeight+i)),a=t.left&&(0,r.pointInBox)(e,o),l=(0,s.box)(new s.Point(t.xr-i,t.y-i),new s.Point(t.xr+t.containerWidth+i,t.y+t.containerHeight+i)),h=t.right&&(0,r.pointInBox)(e,l);if(a||h){const i=a?"left":"right";return new c.HitTestResult(c.HitTestResult.CUSTOM,{cursorType:d.PaneCursorType.Default,clickHandler:void 0===t.clickHandler?void 0:t.clickHandler.bind(this,e,i),tapHandler:void 0===t.clickHandler?void 0:t.clickHandler.bind(this,e,i),tooltip:t.tooltip})}return null}_drawPlusIcon(e,t,i,s,r,n,o){e.fillStyle=this._commonData.textColor,e.strokeStyle=this._commonData.textColor,e.lineWidth=o;const a=Math.abs(t-i);let l=Math.round(.35*a);l%2!=o%2&&(l+=1);let c=Math.round(.65*a);c%2!=o%2&&(c+=1);const h=Math.floor((a-l)/2),d=Math.min(t,i),u=d+Math.floor(a/2-o/2);e.fillRect(d+h,r,l,o),e.fillRect(u,s+h,o,l),e.beginPath(),e.arc(u+o/2,r+o/2,c/2,0,2*Math.PI,!1),e.stroke()}_drawClockIcon(e,t,i,s,r,n){e.fillStyle=this._commonData.textColor,e.lineWidth=r;const o=Math.abs(t-i);let a=Math.round(.35*o);a%2!=r%2&&(a+=1);let l=Math.round(.65*o);l%2!=r%2&&(l+=1);const c=Math.min(t,i)+Math.floor(o/2-r/2);e.save(),e.translate(c+r/2-l/2,s+r/2-l/2),e.scale(n,n);const h=new Path2D("M7.5 0.8a1 1 0 0 0 0 13.4 1 1 0 0 0 0-13.4zm0 1a1 1 0 0 1 0 11 1 1 0 0 1 0-11zm-.97-.25A3.5 3.5 0 0 0 3.5 0 3.5 3.5 0 0 0 0 3.5a3.5 3.5 0 0 0 1.75 3.03l.5-.86A2.5 2.5 0 0 1 1 3.5 2.5 2.5 0 0 1 3.5 1a2.5 2.5 0 0 1 2.17 1.25zm6.72 4.78A3.5 3.5 0 0 0 15 3.5 3.5 3.5 0 0 0 11.5 0a3.5 3.5 0 0 0-3.03 1.75l.86.5A2.5 2.5 0 0 1 11.5 1 2.5 2.5 0 0 1 14 3.5a2.5 2.5 0 0 1-1.25 2.17zM7 5h1v5H7zm3 2v1H5V7z");e.fill(h),e.restore()}_lines(){const e=this._data;return(e.text?1:0)+(e.secondLine?1:0)+(e.thirdLine?1:0)}_isOutOfScreen(e,t){var i +;const s=this._commonData,r=null!==(i=s.fixedCoordinate)&&void 0!==i?i:s.coordinate,n=this.height(e),o=n/this._lines();return r-o/2-3>t||r+(n-o/2)+3<0}}class p{constructor(e){this._commonRendererData={coordinate:0,textColor:"#FFF",background:"#000",additionalPaddingBottom:0,additionalPaddingTop:0},this._axisRendererData={text:"",visible:!1,separatorVisible:!1,borderVisible:!1,ignoreOffset:!1},this._paneRendererData={text:"",visible:!1,separatorVisible:!0,borderVisible:!1,ignoreOffset:!0},this._invalidated=!0,this._axisRenderer=new(e||u)(this._axisRendererData,this._commonRendererData),this._paneRenderer=new(e||u)(this._paneRendererData,this._commonRendererData)}text(){return this._updateRendererDataIfNeeded(),this._axisRendererData.text}secondLineText(){return this._updateRendererDataIfNeeded(),this._axisRendererData.secondLine}thirdLineText(){return this._updateRendererDataIfNeeded(),this._axisRendererData.thirdLine}background(){return this._updateRendererDataIfNeeded(),this._commonRendererData.background}color(){return this._updateRendererDataIfNeeded(),this.generateTextColor(this.background())}generateTextColor(e){return(0,o.colorFromBackground)(e)}coordinate(){return this._updateRendererDataIfNeeded(),this._commonRendererData.coordinate}floatCoordinate(){var e;return this._updateRendererDataIfNeeded(),null!==(e=this._commonRendererData.floatCoordinate)&&void 0!==e?e:this._commonRendererData.coordinate}update(e){this._invalidated=!0}height(e){return this._updateRendererDataIfNeeded(),Math.max(this._axisRenderer.height(e),this._paneRenderer.height(e))}getFixedCoordinate(){return this._commonRendererData.fixedCoordinate||0}setFixedCoordinate(e){this._commonRendererData.fixedCoordinate=e}isVisible(){return this._updateRendererDataIfNeeded(),this._axisRendererData.visible||this._paneRendererData.visible}isAxisLabelVisible(){return this._updateRendererDataIfNeeded(),this._axisRendererData.visible}isPaneLabelVisible(){return this._updateRendererDataIfNeeded(),this._paneRendererData.visible}renderer(){return this._updateRendererDataIfNeeded(),this._axisRenderer}paneRenderer(){return this._updateRendererDataIfNeeded(),this._paneRenderer}setPaneRendererLabelIcon(e){this._paneRendererData.labelIcon=e}setPaneLabelVisible(e){this._paneRendererData.visible=e,this._invalidated=!0}ignoreAlignment(){return!1}_updateRendererDataIfNeeded(){this._invalidated&&(this._commonRendererData.fixedCoordinate=void 0,this._updateRendererData(this._axisRendererData,this._paneRendererData,this._commonRendererData),this._invalidated=!1)}}},22932:(e,t,i)=>{"use strict";i.d(t,{isPriceDataSource:()=>a,PriceDataSource:()=>l});var s=i(62443),r=i(2872),n=i.n(r),o=i(79680);function a(e){return e instanceof l}class l extends s.DataSource{constructor(e,t){super(t),this._formatterChanged=new(n()),this._priceStepChanged=new(n()),this._currencyChanged=new(n()),this._unitChanged=new(n()),this._priceRangeReadyChanged=new(n()),this._priceStep=null,this._priceRangeReady=!0,this._model=e}barColorer(){return null}base(){return 0}model(){return this._model} +currencyChanged(){return this._currencyChanged}isCurrencySource(){return!0}unitChanged(){return this._unitChanged}isUnitSource(){return!0}priceRange(e,t){return null}isDraggable(){return!0}priceLineColor(e){return e}formatterChanged(){return this._formatterChanged}priceStep(e){return this._priceStep}priceStepChanged(){return this._priceStepChanged}isIncludedInAutoScale(){return!0}correctScaleMargins(e){return e}priceRangeReady(){return this._priceRangeReady}priceRangeReadyChanged(){return this._priceRangeReadyChanged}disablePriceRangeReady(){const e=this.priceScale();null===e||e.isAutoScale()||e.mainSource()!==this||(this._priceRangeReady=!1,e.recalculatePriceRangeOnce()),this._priceRangeReadyChanged.fire(!1)}statusView(){return null}legendView(){return null}marketStatusModel(){return null}dataUpdatedModeModel(){return null}dataProblemModel(){return null}_enablePriceRangeReady(){this._priceRangeReady=!0,this._priceRangeReadyChanged.fire(!0)}_onSourceCurrencyChanged(){(0,o.isActingAsSymbolSource)(this)||this._currencyChanged.fire()}_onSourceUnitChanged(){(0,o.isActingAsSymbolSource)(this)||this._unitChanged.fire()}_onSourcePriceRangeReadyChanged(e){(0,o.isActingAsSymbolSource)(this)||e||this.disablePriceRangeReady()}}},55057:(e,t,i)=>{"use strict";i.d(t,{PriceLineAxisView:()=>c,SeriesPriceLineAxisView:()=>h,StudyPriceLineAxisView:()=>d});var s=i(97938),r=i(88537),n=i(29892),o=i(43891),a=i(42759);class l{constructor(e,t){this.setData(e,t)}setData(e,t){this._data=e,this._commonData=t}draw(e,t,i,s,l,c,h){var d;if(!this._data.visible)return;const u=null!==(d=this._commonData.fixedCoordinate)&&void 0!==d?d:this._commonData.coordinate;e.lineWidth=Math.max(1,Math.floor((0,r.ensureDefined)(this._data.linewidth)*h)),e.lineCap="butt",(0,n.setLineStyle)(e,void 0===this._data.linestyle?o.LINESTYLE_DOTTED:this._data.linestyle),e.strokeStyle=this._commonData.textColor,(0,a.drawHorizontalLine)(e,Math.round(u*h),0,Math.ceil(s*h))}height(e){return 0}}class c extends s.PriceAxisView{constructor(e){super(e||l)}ignoreAlignment(){return!0}_updateRendererData(e,t,i){if(t.visible=!1,e.visible=!1,!this._isVisible())return;const s=this._value();s.noData||(i.background="",i.textColor=this._priceLineColor(s.color),i.coordinate=s.coordinate,i.floatCoordinate=s.floatCoordinate,e.linewidth=this._lineWidth(),e.linestyle=this._lineStyle(),e.backgroundAreaVisible=this._backgroundAreaVisible(),e.backgroundAreaColor=this._backgroundAreaColor(),e.backgroundAreaHeight=this._backgroundAreaHeight(),e.visible=!0)}_lineStyle(){return o.LINESTYLE_DOTTED}_backgroundAreaVisible(){return!1}_backgroundAreaColor(){return""}_backgroundAreaHeight(){return 0}}class h extends c{constructor(e){super(),this._series=e}_value(){return this._series.lastValueData(void 0,!0)}_priceLineColor(e){return this._series.priceLineColor(e)}_lineWidth(){return this._series.properties().childs().priceLineWidth.value()}_isVisible(){const e=this._series.model().properties().childs().scalesProperties.childs().showSeriesLastValue.value() +;return this._series.properties().childs().showPriceLine.value()&&e}}class d extends c{constructor(e,t){super(),this._study=e,this._plotname=t}_value(){return this._study.lastValueData(this._plotname,!0)}_lineWidth(){return this._study.properties().styles[this._plotname].linewidth.value()}_lineStyle(){return o.LINESTYLE_DOTTED}_priceLineColor(e){return e}_isVisible(){const e=this._study.model().properties().childs().scalesProperties.childs().showStudyLastValue.value();return this._study.properties().styles[this._plotname].trackPrice.value()&&e}}},27402:(e,t,i)=>{"use strict";i.d(t,{PriceScaleBase:()=>L});var s=i(88537),r=i(80643),n=i(2872),o=i.n(n),a=i(55257),l=i(69927),c=i(74477),h=i(56972),d=i(22932),u=i(2015),p=i.n(u),_=i(81851),m=i(79680),g=i(37667),f=i(79222),v=i(59555),S=i(64514);class y{constructor(e,t){if(this._base=e,this._integralDividers=t,(0,S.isBaseDecimal)(this._base))this._fractionalDividers=[2,2.5,2];else{this._fractionalDividers=[];for(let e=this._base;1!==e;){if(e%2==0)this._fractionalDividers.push(2),e/=2;else{if(e%5!=0)throw new Error("unexpected base");this._fractionalDividers.push(2),this._fractionalDividers.push(2.5),e/=5}if(this._fractionalDividers.length>100)throw new Error("something wrong with base")}}}tickSpan(e,t,i){const s=0===this._base?0:1/this._base;let r=Math.pow(10,Math.max(0,Math.ceil((0,S.log10)(e-t)))),n=0,o=this._integralDividers[0];for(;;){const e=(0,S.greaterOrEqual)(r,s,1e-14)&&r>s+1e-14,t=(0,S.greaterOrEqual)(r,i*o,1e-14),a=(0,S.greaterOrEqual)(r,1,1e-14);if(!(e&&t&&a))break;r/=o,o=this._integralDividers[++n%this._integralDividers.length]}if(r<=s+1e-14&&(r=s),r=Math.max(1,r),this._fractionalDividers.length>0&&(0,S.equal)(r,1,1e-14))for(n=0,o=this._fractionalDividers[0];(0,S.greaterOrEqual)(r,i*o,1e-14)&&r>s+1e-14;)r/=o,o=this._fractionalDividers[++n%this._fractionalDividers.length];return r}}class b{constructor(e,t,i,s){this._marks=null,this._priceScale=e,this._base=t,this._coordinateToLogicalFunc=i,this._logicalToCoordinateFunc=s}base(){return this._base}setBase(e){if(e<0)throw new Error("base < 0");this._base=e}tickSpan(e,t,i=0){if(ei&&(l=c);const h=o.tickSpan(e,t,r);h>i&&(l=Math.min(l,h));const d=a.tickSpan(e,t,r);return d>i&&(l=Math.min(l,d)),l>0?l:e-t}rebuildTickMarks(){this._marks=null}marks(){return null===this._marks&&(this._marks=this._rebuildTickMarksImpl()),this._marks}_fontHeight(){return this._priceScale.fontSize()}_tickMarkHeight(){return Math.ceil(2.5*this._fontHeight())}_rebuildTickMarksImpl(){const e=this._priceScale,t=[],i=e.mainSource();if(e.isEmpty()||null===i)return t;let s=i.firstValue();null===s&&(s=0);const r=e.height(),n=this._coordinateToLogicalFunc(r-1,s),o=this._coordinateToLogicalFunc(0,s),a=Math.max(n,o),l=Math.min(n,o);if(a===l)return t;let c=this.tickSpan(a,l),h=a%c;h+=h<0?c:0;const d=a>=l?1:-1;let u=null +;const p=e.formatter();let _=NaN;for(let i=a-h;i>l;i-=c){i===_&&(c=this.tickSpan(a,l,c)),_=i;const r=this._logicalToCoordinateFunc(i,s);null!==u&&Math.abs(r-u)t!==e&&(0,d.isPriceDataSource)(t)&&!((0,_.isStudy)(t)&&t.isLinkedToSeries()))}updateAllViews(e){const t=this._getSourcesToUpdateViews();for(const i of t)i.updateAllViews(e)}logFormula(){return this._logFormula}state(){var e;const t=this._properties.childs();return{id:this._id,m_priceRange:(null===(e=this.priceRange())||void 0===e?void 0:e.serialize())||null,m_isAutoScale:this.isAutoScale(),m_isPercentage:t.percentage.value(),m_isIndexedTo100:t.indexedTo100.value(),m_isLog:t.log.value(),m_isLockScale:this.isLockScale(),m_isInverted:this.isInverted(),m_height:this.m_height,m_topMargin:this._margins.top,m_bottomMargin:this._margins.bottom,alignLabels:t.alignLabels.value(),logFormula:(0,r.clone)(this._logFormula)}}restoreState(e){let t=e.m_priceRange;if(void 0===t)throw new TypeError("invalid state");if(void 0===e.m_isAutoScale)throw new TypeError("invalid state");void 0!==e.id&&(this._id=e.id);const i={autoScale:e.m_isAutoScale};void 0!==e.m_isPercentage&&(i.percentage=e.m_isPercentage),void 0!==e.m_isIndexedTo100&&(i.indexedTo100=e.m_isIndexedTo100),void 0!==e.m_isLog&&(i.log=e.m_isLog),void 0!==e.m_isLockScale&&(i.lockScale=e.m_isLockScale),void 0!==e.m_isInverted&&this._properties.childs().isInverted.setValue(e.m_isInverted),void 0!==e.m_height&&this.setHeight(Math.max(0,e.m_height)),this.setMode(i),t?(t instanceof l.PriceRange||(t=new l.PriceRange(t)),this.setPriceRange(t,!0)):this.m_priceRange=null,e.logFormula&&(this._logFormula=e.logFormula),void 0!==e.m_topMargin&&(this._margins.top=e.m_topMargin),void 0!==e.m_bottomMargin&&(this._margins.bottom=e.m_bottomMargin),void 0!==e.alignLabels&&this._properties.childs().alignLabels.setValue(e.alignLabels),this._mainSource=null,this._scaleSeriesOnly=!1}priceToLogical(e){return this.isLog()&&e?(0,c.toLog)(e,this._logFormula):e}logicalToPrice(e){return this.isLog()?(0,c.fromLog)(e,this._logFormula):e}priceToCoordinate(e,t){const i=this._priceToPercentOrIndexedTo100IfNeeded(e,t);return this._logicalToCoordinate(i)}coordinateToPrice(e,t){let i=this._coordinateToLogical(e);return this.isPercentage()?i=(0,c.fromPercent)(i,t):this.isIndexedTo100()&&(i=(0,c.fromIndexedTo100)(i,t)),i}mainSource(){if(null!==this._mainSource)return this._mainSource;let e;for(const t of this.m_dataSources){if(t instanceof h.Series){e=t;break}!e&&(0,d.isPriceDataSource)(t)&&(e=t)}return this._mainSource=e||null, +this._correctedMarginsCache=null,this._mainSource}pricesArrayToCoordinates(e,t,i){this._makeSureItIsValid();const r=this.bottomPixelMargin(),n=(0,s.ensureNotNull)(this.priceRange()),o=n.minValue(),a=n.maxValue(),l=this.internalHeight()-1,h=this.isInverted(),d=l/(a-o);void 0===i&&(i=e.length);const u=this.isPercentage(),p=this.isIndexedTo100(),_=this.isLog(),m=this.m_height;let g,f;for(let s=0;se?(0,c.toLog)(e,this._logFormula):e),0===r.length)return;const d="open"in r[0],u="close"in r[0];if(null!==h)for(let e=0;ethis._currencyCache=null),e.unitChanged().subscribe(this,()=>this._unitCache=null),(0,m.isSymbolSource)(e)&&(this._seriesLikeSources.push(e),e.symbolResolved().subscribe(this,()=>{this._currencyCache=null,this._unitCache=null}),e.isActingAsSymbolSource().subscribe(this._boundOnSourceIsActingAsSymbolSourceChanged),e instanceof h.Series))){const t=e.properties();this._hasSeries||(t.childs().lockScale&&(this.setMode({lockScale:t.childs().lockScale.value()}),t.removeProperty("lockScale")),t.childs().pnfStyle.child("lockScale")&&t.childs().pnfStyle.removeProperty("lockScale")),this._hasSeries=!0}e.properties().visible.listeners().subscribe(this,this._dropScaleCache),(0,_.isStudy)(e)&&(e.onIsActualIntervalChange().subscribe(this,this._dropScaleCache),e.onHibernationStateChange().subscribe(this,this._dropScaleCache),0===this._studiesCount&&(0,C.hideAllIndicators)().subscribe(this,this._dropScaleCache),this._studiesCount++),(0,w.isLineTool)(e)&&(0===this._drawingCount&&(0,C.hideAllDrawings)().subscribe(this,this._dropScaleCache),this._drawingCount++),this.m_dataSources.push(e),this._mainSource=null,this._correctedMarginsCache=null,this._sourcesToUpdateViews=null,this._dropScaleCache(),this.updateFormatter(),this._initScaleProperties(),this.invalidateSourcesCache()}}removeDataSource(e){const t=this.m_dataSources.indexOf(e);if((0,s.assert)(-1!==t,"Source is not attached to scale"),e.properties().visible.listeners().unsubscribe(this,this._dropScaleCache),this.m_dataSources.splice(t,1),(0,d.isPriceDataSource)(e)){const t=this._priceDataSources.indexOf(e);if((0,s.assert)(-1!==t,"Source is not found"),this._priceDataSources.splice(t,1),(0,m.isSymbolSource)(e)){const t=this._seriesLikeSources.indexOf(e);(0,s.assert)(-1!==t,"Source is not found"),this._seriesLikeSources.splice(t,1),e.symbolResolved().unsubscribeAll(this),e.isActingAsSymbolSource().unsubscribe(this._boundOnSourceIsActingAsSymbolSourceChanged),e instanceof h.Series&&(this._hasSeries=!1)}e.currencyChanged().unsubscribeAll(this),e.unitChanged().unsubscribeAll(this)}this.mainSource()||this.setMode({autoScale:!0}),(0,_.isStudy)(e)&&(e.onIsActualIntervalChange().unsubscribe(this,this._dropScaleCache),e.onHibernationStateChange().unsubscribe(this,this._dropScaleCache),this._studiesCount--,0===this._studiesCount&&(0, +C.hideAllIndicators)().unsubscribe(this,this._dropScaleCache)),(0,w.isLineTool)(e)&&(this._drawingCount--,0===this._drawingCount&&(0,C.hideAllDrawings)().unsubscribe(this,this._dropScaleCache)),this._mainSource=null,this._correctedMarginsCache=null,this._sourcesForAutoscale=null,this._sourcesToUpdateViews=null,this.updateFormatter(),this.invalidateSourcesCache(),0===this.m_dataSources.length&&this._lastSourceRemoved.fire(),this._currencyCache=null,this._unitCache=null}currency(e){if(null!==this._currencyCache&&e.size()===this._currencyCache.availableCurrenciesCount)return this._currencyCache.value;let t;const i=new Set,r=new Set,n=new Set,o=new Map;let a,l=0===this._seriesLikeSources.length,c=!0,h=0,d=0;const u=this._seriesLikeSources.filter(m.isActingAsSymbolSource);for(const d of u){if(!d.isVisible())continue;const u=d.symbolInfo();if(null===u){t=null;break}const p=(0,g.symbolOriginalCurrency)(u);if(null===p){t=null;break}o.set(p,(0,s.ensureNotNull)((0,g.symbolOriginalCurrency)(u,!0)));const _=d.currency();if(null===_){t=null;break}o.set(_,(0,s.ensureNotNull)((0,g.symbolCurrency)(u,!0)));const m=(0,g.symbolBaseCurrency)(u);null!==m&&r.add(m),c=c&&p===_,n.add(_),i.add(p),void 0===a?a=_:null!==a&&a!==_&&(a=null),l||e.convertible(_)&&(0,g.symbolCurrencyConvertible)(u)||(l=!0),h+=1}if(null!==t)for(const i of this._priceDataSources){if(u.includes(i))continue;const r=i;if(!r.isCurrencySource()||!r.isVisible())continue;const c=r.currency();if(null===c){t=null;break}n.add(c),d+=1;const h=(0,s.ensureNotNull)(r.symbolSource()),p=r.currencySourceSymbolInfo();if(null===p){t=null;break}if(l||e.convertible(c)&&(0,g.symbolCurrencyConvertible)(p)||(l=!0),o.set(c,(0,s.ensureNotNull)((0,g.symbolCurrency)(p,!0))),u.includes(h)||(l=!0),void 0===a)a=c;else if(null!==a&&a!==c){a=null;break}}return void 0===t&&(t=0===h&&0===d?null:{readOnly:l,selectedCurrency:a||null,currencies:n,originalCurrencies:i,baseCurrencies:r,symbolSourceCount:h,allCurrenciesAreOriginal:c,displayedValues:o}),this._currencyCache={value:t,availableCurrenciesCount:e.size()},t}unit(e){if(null!==this._unitCache&&e.size()===this._unitCache.availableUnitsCount)return this._unitCache.value;let t;const i=new Set,r=new Set,n=new Map,o=new Map;let l,c=0===this._seriesLikeSources.length?new Set:e.allGroups(),h=!0,d=0,u=0;const p=this._seriesLikeSources.filter(m.isActingAsSymbolSource);for(const s of p){if(!s.isVisible())continue;const u=s.symbolInfo();if(null===u){t=null;break}const p=(0,g.symbolOriginalUnit)(u,s.model().unitConversionEnabled());if(null===p){t=null;break}n.set(p,e.name(p)),o.set(p,e.description(p));const _=s.unit();if(null===_){t=null;break}if(n.set(_,e.name(_)),o.set(_,e.description(_)),h=h&&p===_,r.add(_),i.add(p),void 0===l?l=_:null!==l&&l!==_&&(l=null),c.size>0){const t=(0,f.unitConvertibleGroups)(u,_,e);c=(0,a.intersect)(c,new Set(t))}d+=1}if(null!==t)for(const i of this._priceDataSources){if(p.includes(i))continue;const h=i;if(!h.isUnitSource()||!h.isVisible())continue;const d=h.unit();if(null===d){t=null;break}r.add(d),u+=1;const _=(0, +s.ensureNotNull)(h.symbolSource()),m=_.symbolInfo();if(null===m){t=null;break}if(c.size>0){const t=(0,f.unitConvertibleGroups)(m,d,e);c=(0,a.intersect)(c,new Set(t))}if(n.set(d,e.name(d)),o.set(d,e.description(d)),p.includes(_)||(c=new Set),void 0===l)l=d;else if(null!==l&&l!==d){l=null;break}}if(void 0===t)if(0===d&&0===u)t=null;else{t={availableGroups:c,selectedUnit:l||null,units:r,originalUnits:i,symbolSourceCount:d,allUnitsAreOriginal:h,names:n,descriptions:o}}return this._unitCache={value:t,availableUnitsCount:e.size()},t}setMargins(e){if(!(0,r.isNumber)(e.top)||!(0,r.isNumber)(e.bottom))throw new TypeError("invalid margin");if(e.top<0||e.top>30||e.bottom<0||e.bottom>30)throw new RangeError("invalid margin");this._margins.top===e.top&&this._margins.bottom===e.bottom||(this._margins=e,this._correctedMarginsCache=null,this._invalidateInternalHeightCache(),this._marksCache=null)}topMargin(){return this._correctedMargins().top}bottomMargin(){return this._correctedMargins().bottom}invalidateMargins(){this._correctedMarginsCache=null}topPixelMargin(){return this.isInverted()?this.bottomMargin()*this.height()+this._bottomPixelMargin:this.topMargin()*this.height()+this._topPixelMargin}bottomPixelMargin(){return this.isInverted()?this.topMargin()*this.height()+this._topPixelMargin:this.bottomMargin()*this.height()+this._bottomPixelMargin}marks(){return this._makeSureItIsValid(),null===this._marksCache&&(this._markBuilder.rebuildTickMarks(),this._marksCache=this._markBuilder.marks(),this._onMarksChanged.fire()),this._marksCache}onMarksChanged(){return this._onMarksChanged}priceRangeInPrice(){if(this.isEmpty())return null;const e=this.mainSource();if(null===e)return null;const t=(0,s.ensureNotNull)(e.firstValue()),i=this.height();return{from:this.coordinateToPrice(i-1,t),to:this.coordinateToPrice(0,t)}}setPriceRangeInPrice(e){if(this.isPercentage()||this.isIndexedTo100())return;const t=this.isInverted(),i=t?this.bottomMargin():this.topMargin(),s=t?this.topMargin():this.bottomMargin(),r=this.isLog();let n=r?(0,c.toLog)(e.from,this._logFormula):e.from,o=r?(0,c.toLog)(e.to,this._logFormula):e.to;const a=o-n;n+=s*a,o-=i*a,this.setMode({autoScale:!1}),this.setPriceRange(new l.PriceRange(n,o)),this._marksCache=null,this._onMarksChanged.fire()}hasMainSeries(){return this._hasSeries}getStudies(){return this.dataSources().filter(_.isStudy)}lastSourceRemoved(){return this._lastSourceRemoved}sourcesForAutoscale(){return this._mainSource&&this._scaleSeriesOnly!==this._scalesProperties.childs().scaleSeriesOnly.value()&&(this._sourcesForAutoscale=null),this._sourcesForAutoscale||(this._sourcesForAutoscale=this._recalculateSourcesForAutoscale()),this._sourcesForAutoscale}recalculatePriceRange(e){this._invalidatedForRange={visibleBars:e,isValid:!1}}internalHeightChanged(){return this._internalHeightChanged}orderedSources(){if(this._cachedOrderedSoruces)return this._cachedOrderedSoruces;let e=this.m_dataSources.slice();return e=(0,v.sortSources)(e),this._cachedOrderedSoruces=e,this._cachedOrderedSoruces}invalidateSourcesCache(){ +this._cachedOrderedSoruces=null,this._sourcesToUpdateViews=null}startScale(e){var t,i;this.isEmpty()||this.isPercentage()||this.isIndexedTo100()||null!==this._scaleStartPoint||null!==this._priceRangeSnapshot||(this._scaleStartPoint=this.m_height-e,this._priceRangeSnapshot=null!==(i=null===(t=this.priceRange())||void 0===t?void 0:t.clone())&&void 0!==i?i:null)}scaleTo(e){if(this.isPercentage()||this.isIndexedTo100()||null===this._scaleStartPoint)return;this.setMode({autoScale:!1}),(e=this.m_height-e)<0&&(e=0);let t=(this._scaleStartPoint+.2*(this.m_height-1))/(e+.2*(this.m_height-1));const i=(0,s.ensureNotNull)(this._priceRangeSnapshot).clone();t=Math.max(t,.1),i.scaleAroundCenter(t),this.setPriceRange(i)}endScale(){this.isPercentage()||this.isIndexedTo100()||null!==this._scaleStartPoint&&(this._scaleStartPoint=null,this._priceRangeSnapshot=null)}startTwoPointsScale(e,t){if(this.isEmpty()||this.isPercentage()||this.isIndexedTo100()||null!==this._twoPointsScaleStartPosition)return;const i=Math.min(e,t),s=Math.max(e,t);this._twoPointsScaleStartPosition={topLogical:this._coordinateToLogical(i),bottomLogical:this._coordinateToLogical(s)}}twoPointsScale(e,t){if(this.isPercentage()||this.isIndexedTo100()||null===this._twoPointsScaleStartPosition)return;this.setMode({autoScale:!1});const i=Math.min(e,t),s=Math.max(e,t),{topLogical:r,bottomLogical:n}=this._twoPointsScaleStartPosition,o=this.bottomPixelMargin(),a=this.internalHeight()-1,c=(this._invertedCoordinate(i)-o)/a,h=(n-r)/((this._invertedCoordinate(s)-o)/a-c),d=r-h*c,u=d+h;this.setPriceRange(new l.PriceRange(this.priceToLogical(d),this.priceToLogical(u)))}endTwoPointsScale(){this._twoPointsScaleStartPosition=null}startScroll(e){var t,i;this.isAutoScale()||null===this._scrollStartPoint&&null===this._priceRangeSnapshot&&(this.isEmpty()||(this._scrollStartPoint=e,this._priceRangeSnapshot=null!==(i=null===(t=this.priceRange())||void 0===t?void 0:t.clone())&&void 0!==i?i:null))}scrollTo(e){if(this.isAutoScale())return;if(null===this._scrollStartPoint||null===this._priceRangeSnapshot)return;const t=this.priceRange();if(null===t)return;let i=e-this._scrollStartPoint;this.isInverted()&&(i*=-1);const s=i*(t.length()/(this.internalHeight()-1)),r=this._priceRangeSnapshot.clone();r.shift(s),this.setPriceRange(r,!0),this._marksCache=null}endScroll(){this.isAutoScale()||null!==this._scrollStartPoint&&(this._scrollStartPoint=null,this._priceRangeSnapshot=null)}_recalculateSourcesForAutoscale(){this._mainSource&&(this._scaleSeriesOnly=this._scalesProperties.childs().scaleSeriesOnly.value());const e=this._scaleSeriesOnly&&this._hasSeries;return this.m_dataSources.filter(t=>!!(t.properties().visible.value()||t instanceof h.Series)&&(e?t instanceof h.Series:(0,_.isStudy)(t)?!t.isSourceHidden()&&t.isIncludedInAutoScale():t.isIncludedInAutoScale()))}_updateAutoScaleDisabledProperty(e){const t=this._properties.childs(),i=t.indexedTo100.value()||t.percentage.value()||t.lockScale.value();e?t.autoScaleDisabled.setValueSilently(i):t.autoScaleDisabled.setValue(i)} +_setAutoScaleValueWithDependentProperties(e){const t=this._properties.childs();t.autoScale.setValueSilently(e),e&&(t.percentage.setValueSilently(!1),t.indexedTo100.setValueSilently(!1),t.lockScale.setValueSilently(!1),t.logDisabled.setValueSilently(!1)),this._updateAutoScaleDisabledProperty(!0)}_setLockScaleValueWithDependentProperties(e){const t=this._properties.childs();t.lockScale.setValueSilently(e),e&&(t.autoScale.setValueSilently(!1),t.percentage.setValueSilently(!1),t.indexedTo100.setValueSilently(!1),t.log.setValueSilently(!1)),t.percentageDisabled.setValueSilently(e),t.logDisabled.setValueSilently(e),this._updateAutoScaleDisabledProperty(!0)}_setPercentageValueWithDependentProperties(e){const t=this._properties.childs();t.percentage.setValueSilently(e),e&&(t.autoScale.setValueSilently(!0),t.log.setValueSilently(!1),t.lockScale.setValueSilently(!1),t.indexedTo100.setValueSilently(!1)),this._updateAutoScaleDisabledProperty(!0)}_setIndexedTo100ValueWithDependentProperties(e){const t=this._properties.childs();t.indexedTo100.setValueSilently(e),e&&(t.autoScale.setValueSilently(!0),t.log.setValueSilently(!1),t.lockScale.setValueSilently(!1),t.percentage.setValueSilently(!1)),this._updateAutoScaleDisabledProperty(!0)}_setLogValueWithDependentProperties(e){const t=this._properties.childs();t.log.setValueSilently(e),e&&(t.lockScale.setValueSilently(!1),t.percentage.setValueSilently(!1),t.indexedTo100.setValueSilently(!1)),this._updateAutoScaleDisabledProperty(!0)}_recalculatePriceRangeImpl(){const e=this._invalidatedForRange.visibleBars;if(null===e)return;let t=null;const i=this.sourcesForAutoscale(),s=this.isPercentage(),r=this.isIndexedTo100();let n=0,o=0;for(const a of i){if(!a.properties().visible.value())continue;const i=a.firstValue();if(null===i||s&&0===i)continue;const l=e.firstBar(),h=e.lastBar(),d=a.autoScaleInfo(l,h);let u=d.range;u&&(s?u=(0,c.toPercentRange)(u,i):r&&(u=(0,c.toIndexedTo100Range)(u,i)),t=null===t?u:t.merge(u)),void 0!==d.topPixelMargin&&(n=Math.max(n,d.topPixelMargin)),void 0!==d.bottomPixelMargin&&(o=Math.max(o,d.bottomPixelMargin))}if((Math.abs(n-this._topPixelMargin)>0||Math.abs(o-this._bottomPixelMargin)>0)&&(this._bottomPixelMargin=o,this._topPixelMargin=n,this._marksCache=null,this._invalidateInternalHeightCache()),t){if(t.minValue()===t.maxValue()&&(t=new l.PriceRange(t.minValue()-.5,t.maxValue()+.5)),this.isLog()){const e=this._convertPriceRangeFromLog(t),i=(0,c.logFormulaForPriceRange)(e);if(!(0,c.logFormulasAreSame)(i,this._logFormula)){const s=this._priceRangeSnapshot?this._convertPriceRangeFromLog(this._priceRangeSnapshot):null;this._logFormula=i,t=this._convertPriceRangeToLog(e),s&&(this._priceRangeSnapshot=this._convertPriceRangeToLog(s))}}this.setPriceRange(t)}else this.m_priceRange||(this.setPriceRange(new l.PriceRange(-.5,.5)),this._logFormula=(0,c.logFormulaForPriceRange)(null));this._invalidatedForRange.isValid=!0;const a=this.mainSource();null!==a&&this._recalculatePriceRangeOnce&&(this._recalculatePriceRangeOnce=!a.priceRangeReady())}_makeSureItIsValid(){ +this._invalidatedForRange.isValid||(this._invalidatedForRange.isValid=!0,this._recalculatePriceRangeImpl())}_invalidateInternalHeightCache(){this._internalHeightCache=null,this._internalHeightChanged.fire()}_coordinateToLogical(e){if(this._makeSureItIsValid(),this.isEmpty())return 0;const t=this._invertedCoordinate(e),i=(0,s.ensureNotNull)(this.priceRange()),r=i.minValue()+(i.maxValue()-i.minValue())*((t-this.bottomPixelMargin())/(this.internalHeight()-1));return this.logicalToPrice(r)}_logicalToCoordinate(e){if(this._makeSureItIsValid(),this.isEmpty())return 0;e=this.priceToLogical(e);const t=(0,s.ensureNotNull)(this.priceRange()),i=this.bottomPixelMargin()+(this.internalHeight()-1)*(e-t.minValue())/(t.maxValue()-t.minValue());return this._invertedCoordinate(i)}_dropScaleCache(){this._sourcesForAutoscale=null,this._currencyCache=null,this._unitCache=null}_invertedCoordinate(e){return this.isInverted()?e:this.height()-1-e}_initScaleProperties(){const e=this.isLockScale(),t=this.properties().childs();e&&(t.percentage.setValue(!1),t.indexedTo100.setValue(!1),t.log.setValue(!1),t.autoScale.setValue(!1)),t.percentageDisabled.setValue(e),t.logDisabled.setValue(e),this._updateAutoScaleDisabledProperty(!1),t.percentage.value()&&(t.log.setValue(!1),t.indexedTo100.setValue(!1)),t.indexedTo100.value()&&(t.log.setValue(!1),t.percentage.setValue(!1))}_correctedMargins(){if(null===this._correctedMarginsCache){const e=this.mainSource();this._correctedMarginsCache=null!==e?e.correctScaleMargins(this._margins):this._margins}return this._correctedMarginsCache}_getSourcesToUpdateViews(){return this._sourcesToUpdateViews||(this._sourcesToUpdateViews=this.m_dataSources.filter(e=>!(0,w.isLineTool)(e)||e.isActualSymbol()&&e.isActualCurrency())),this._sourcesToUpdateViews}_mainSourceFormatter(){const e=this.mainSource();return(null==e?void 0:e.formatter())||I}_priceToPercentOrIndexedTo100IfNeeded(e,t){return this.isPercentage()?(0,c.toPercent)(e,t):this.isIndexedTo100()?(0,c.toIndexedTo100)(e,t):e}_onSourceIsActingAsSymbolSourceChanged(){this._dropScaleCache()}}},3825:(e,t,i)=>{"use strict";var s;i.d(t,{PriceAxisLastValueMode:()=>s}),function(e){e[e.LastPriceAndPercentageValue=0]="LastPriceAndPercentageValue",e[e.LastValueAccordingToScale=1]="LastValueAccordingToScale"}(s||(s={}))},74477:(e,t,i)=>{"use strict";i.r(t),i.d(t,{fromPercent:()=>o,toPercent:()=>a,toPercentRange:()=>l,fromIndexedTo100:()=>c,toIndexedTo100:()=>h,toIndexedTo100Range:()=>d,toLog:()=>u,fromLog:()=>p,logFormulaForPriceRange:()=>_,logFormulasAreSame:()=>m,getCurrentModePriceText:()=>g,getOppositeModePriceText:()=>f});var s=i(69927),r=i(64514);const n={logicalOffset:4,coordOffset:1e-4};function o(e,t){return t<0&&(e=-e),e/100*t+t}function a(e,t){const i=100*(e-t)/(t||1);return t<0?-i:i}function l(e,t){const i=a(e.minValue(),t),r=a(e.maxValue(),t);return new s.PriceRange(i,r)}function c(e,t){return t<0&&(e=-e),(e-=100)/100*t+t}function h(e,t){const i=100*(e-t)/t+100;return t<0?-i:i}function d(e,t){const i=h(e.minValue(),t),r=h(e.maxValue(),t);return new s.PriceRange(i,r) +}function u(e,t){const i=Math.abs(e);if(i<1e-15)return 0;const s=(0,r.log10)(i+t.coordOffset)+t.logicalOffset;return e<0?-s:s}function p(e,t){const i=Math.abs(e);if(i<1e-15)return 0;const s=Math.pow(10,i-t.logicalOffset)-t.coordOffset;return e<0?-s:s}function _(e){if(null===e)return n;const t=Math.abs(e.maxValue()-e.minValue());if(t>=1||t<1e-15)return n;const i=Math.ceil(Math.abs(Math.log10(t))),s=n.logicalOffset+i;return{logicalOffset:s,coordOffset:1/Math.pow(10,s)}}function m(e,t){return e.logicalOffset===t.logicalOffset&&e.coordOffset===t.coordOffset}function g(e,t){return e.isPercentage()?t.formattedPricePercentage:e.isIndexedTo100()?t.formattedPriceIndexedTo100:t.formattedPriceAbsolute}function f(e,t){return e.isPercentage()||e.isIndexedTo100()?t.formattedPriceAbsolute:t.formattedPricePercentage}},69927:(e,t,i)=>{"use strict";i.r(t),i.d(t,{PriceRange:()=>n});var s=i(80643);const r=(0,i(98125).getLogger)("Chart.PriceRange");class n{constructor(e,t){if(null!==e&&"object"==typeof e){const t=e;this._minValue=t.m_minValue,this._maxValue=t.m_maxValue}else{const i=e;this._minValue=i,void 0!==t&&(this._maxValue=t)}}equals(e){return this._minValue===e._minValue&&this._maxValue===e._maxValue}clone(){return new n(this._minValue,this._maxValue)}minValue(){return this._minValue}setMinValue(e){this._minValue=e}maxValue(){return this._maxValue}setMaxValue(e){this._maxValue=e}length(){return this._maxValue-this._minValue}isEmpty(){return this._maxValue===this._minValue||this._maxValue!=this._maxValue||this._minValue!=this._minValue}serialize(){return{m_maxValue:this._maxValue,m_minValue:this._minValue}}state(){return{max:this._maxValue,min:this._minValue}}merge(e){return new n(Math.min(this.minValue(),e.minValue()),Math.max(this.maxValue(),e.maxValue()))}apply(e,t){this._minValue=Math.min(this._minValue,e),this._maxValue=Math.max(this._maxValue,t)}set(e,t){this._minValue=e,this._maxValue=t}scaleAroundCenter(e){if(!(0,s.isNumber)(e))return void r.logDebug("PriceRange.scaleAroundCenter: invalid coeff");if(0===this._maxValue-this._minValue)return;const t=.5*(this._maxValue+this._minValue);let i=this._maxValue-t,n=this._minValue-t;i*=e,n*=e,this._maxValue=t+i,this._minValue=t+n}shift(e){(0,s.isNumber)(e)?(this._maxValue+=e,this._minValue+=e):r.logDebug("PriceRange.shift: invalid coeff")}containsStrictly(e){return e.minValue()>this._minValue&&e.maxValue(){"use strict";var s=i(2872),r=i(27402).PriceScaleBase,n=i(69927).PriceRange,o=i(9423).randomHash,a=i(74477),l=a.fromLog,c=a.toLog;class h extends r{constructor(e,t){super(t),this._scalesProperties=e;var i=this;this._modeChanged=new s,this._properties.isInverted.listeners().subscribe(this,h.prototype._onIsInvertedChanged),this._properties.listeners().subscribe(null,(function(){if(i.mainSource()&&i.mainSource().model()){var e=i.mainSource().model().paneForSource(i.mainSource());i.mainSource().model().updatePane(e)}})),this._scalesProperties.listeners().subscribe(this,(function(){ +this._marksCache=null})),this.setId(o())}_convertPriceRangeFromLog(e){if(null===e)return null;var t=l(e.minValue(),this._logFormula),i=l(e.maxValue(),this._logFormula);return new n(t,i)}_convertPriceRangeToLog(e){if(null===e)return null;var t=c(e.minValue(),this._logFormula),i=c(e.maxValue(),this._logFormula);return new n(t,i)}_canConvertPriceRangeFromLog(e){if(null===e)return!1;var t=l(e.minValue(),this._logFormula),i=l(e.maxValue(),this._logFormula);return isFinite(t)&&isFinite(i)}mode(){return{autoScale:this._properties.autoScale.value(),lockScale:this._properties.lockScale.value(),percentage:this._properties.percentage.value(),indexedTo100:this._properties.indexedTo100.value(),log:this._properties.log.value()}}setMode(e){var t={},i=this.mode(),s=this._properties.state(),r=null;void 0!==e.autoScale&&e.autoScale!==s.autoScale&&(t.autoScale=e.autoScale,this._setAutoScaleValueWithDependentProperties(e.autoScale)),void 0!==e.lockScale&&e.lockScale!==s.lockScale&&(t.lockScale=e.lockScale,this._setLockScaleValueWithDependentProperties(e.lockScale)),void 0!==e.percentage&&e.percentage!==s.percentage&&(t.percentage=e.percentage,this._setPercentageValueWithDependentProperties(e.percentage),this._invalidatedForRange.isValid=!1),void 0!==e.indexedTo100&&e.indexedTo100!==s.indexedTo100&&(t.indexedTo100=e.indexedTo100,this._setIndexedTo100ValueWithDependentProperties(e.indexedTo100),this._invalidatedForRange.isValid=!1),void 0!==e.log&&e.log!==s.log&&(t.log=e.log,this._setLogValueWithDependentProperties(e.log)),s.log&&!this._properties.log.value()&&(this._canConvertPriceRangeFromLog(this.m_priceRange)?null!==(r=this._convertPriceRangeFromLog(this.m_priceRange))&&this.setPriceRange(r):this.properties().autoScale.setValue(!0)),!s.log&&this._properties.log.value()&&null!==(r=this._convertPriceRangeToLog(this.m_priceRange))&&this.setPriceRange(r),s.autoScale!==this._properties.autoScale.value()&&this._properties.autoScale.listeners().fire(this._properties.autoScale),s.autoScaleDisabled!==this._properties.autoScaleDisabled.value()&&this._properties.autoScaleDisabled.listeners().fire(this._properties.autoScaleDisabled),s.lockScale!==this._properties.lockScale.value()&&this._properties.lockScale.listeners().fire(this._properties.lockScale),s.percentage!==this._properties.percentage.value()&&(this._properties.percentage.listeners().fire(this._properties.percentage),this.updateFormatter()),s.indexedTo100!==this._properties.indexedTo100.value()&&(this._properties.indexedTo100.listeners().fire(this._properties.indexedTo100),this.updateFormatter()),s.percentageDisabled!==this._properties.percentageDisabled.value()&&this._properties.percentageDisabled.listeners().fire(this._properties.percentageDisabled),s.log!==this._properties.log.value()&&this._properties.log.listeners().fire(this._properties.log),s.logDisabled!==this._properties.logDisabled.value()&&this._properties.logDisabled.listeners().fire(this._properties.logDisabled), +void 0===t.log&&void 0===t.percentage&&void 0===t.lockScale&&void 0===t.autoScale&&void 0===t.indexedTo100||this._modeChanged.fire(i,this.mode())}modeChanged(){return this._modeChanged}fontSize(){return this._scalesProperties.fontSize.value()}isEmpty(){return this._makeSureItIsValid(),0===this.m_height||!this.m_priceRange||this.m_priceRange.isEmpty()}_onIsInvertedChanged(){this._marksCache=null,this._markBuilder.rebuildTickMarks()}}t.PriceScale=h},32255:(e,t,i)=>{"use strict";i.d(t,{createPrimitiveProperty:()=>n});var s=i(2015),r=i.n(s);function n(e){return new(r())(e)}},45383:(e,t,i)=>{"use strict";i.d(t,{extractAllPropertiesKeys:()=>v,factoryDefaultsForCurrentTheme:()=>y,ThemedDefaultProperty:()=>w});var s=i(58121),r=i(99094),n=i(16230),o=i(98279),a=i(38651),l=i(88537),c=i(56840),h=i(98619),d=i(45345),u=i(26843),p=i(2015),_=i.n(p),m=i(59803),g=i(2872),f=i.n(g);function v(e){return new Set(Object.keys(e))}function S(e,t){const i={};for(const s of Object.keys(e))t.has(s)&&(i[s]=e[s]);return i}function y(e,t){var i;const r=null!==(i=d.watchedTheme.value())&&void 0!==i?i:u.StdTheme.Light,n=(0,h.deepCopy)(e);return(0,s.default)(n,(0,l.ensureDefined)(t.get(r))),n}function b(e,t){const i=(0,r.default)(e,(e,i,s)=>{if(void 0===t[s])return e;if(!(0,n.default)(i,t[s]))if((0,o.default)(i)&&(0,o.default)(t[s])){const r=b(i,t[s]);void 0!==r&&(e[s]=r)}else e[s]=i;return e},{});return(0,a.default)(i)?void 0:i}class w extends(_()){constructor(e,t,i,r,n){super(function(e,t,i){var r;const n=t(),o=(0,h.deepCopy)(null!==(r=c.getJSON(e,null))&&void 0!==r?r:{});return(0,s.default)(n,o),(0,s.default)(n,null!=i?i:{}),n}(e,t,n)),this._applyingThemeInProcess=!1,this._restoreFactoryDefaultsEvent=new(f()),this._defaultName=e,this._defaultsSupplier=t,this._notThemedDefaultsKeys=i,this._themedDefaultsKeys=r}restoreFactoryDefaults(){const e=this._defaultsSupplier();this.mergeAndFire(e),this.saveDefaults(),this._restoreFactoryDefaultsEvent.fire()}addExclusion(){}preferences(){const e=new Set([...this._themedDefaultsKeys,...this._notThemedDefaultsKeys]);return S(this.state(),e)}mergePreferences(e){const t=new Set([...this._themedDefaultsKeys,...this._notThemedDefaultsKeys]);this.mergeAndFire(S(e,t))}childChanged(e){super.childChanged(e),this._applyingThemeInProcess||this.saveDefaults()}saveDefaults(){const e=this.state(),t=this._defaultsSupplier();let i=b(S(e,this._notThemedDefaultsKeys),S(t,this._notThemedDefaultsKeys));const r=S(t,this._themedDefaultsKeys),n=S(e,this._themedDefaultsKeys),o=b(n,r);(0,a.default)(o)||(i=null!=i?i:{},(0,s.default)(i,n)),(0,m.saveDefaults)(this._defaultName,i)}}},65576:(e,t,i)=>{"use strict";i.d(t,{convertPropertyToWatchedValue:()=>n});var s=i(52714),r=i.n(s);function n(e){const t=new(r())(e.value());let i=!1;e.subscribe(t,()=>{i||(i=!0,t.setValue(e.value()),i=!1)});const s=()=>{i||(i=!0,e.setValue(t.value()),i=!1)};return t.subscribe(s),t.spawn(()=>{e.unsubscribeAll(t),t.unsubscribe(s)})}},81465:(e,t,i)=>{"use strict";i.d(t,{combineProperty:()=>o, +createWVFromGetterAndSubscription:()=>s.createWVFromGetterAndSubscription,createWVFromProperty:()=>r});var s=i(38021);i(3763);function r(e){return(0,s.createWVFromGetterAndSubscription)(()=>e.value(),e)}i(2015);var n=i(32255);function o(e,...t){const i=()=>e(...t.map(e=>e.value())),s=(0,n.createPrimitiveProperty)(i()),r=()=>s.setValue(i()),o={};for(const e of t)e.subscribe(o,r);return s.destroy=()=>{t.forEach(e=>e.unsubscribeAll(o))},s}},38021:(e,t,i)=>{"use strict";i.d(t,{createWVFromGetterAndSubscription:()=>n});var s=i(52714),r=i.n(s);function n(e,t){const i=new(r())(e()),s={};t.subscribe(s,()=>{i.setValue(e())});return i.readonly().spawn(()=>t.unsubscribeAll(s))}},3763:(e,t,i)=>{"use strict";i.d(t,{createWVFromGetterAndSubscriptions:()=>n});var s=i(52714),r=i.n(s);function n(e,t){const i=new(r())(e()),s={};t.forEach(t=>t.subscribe(s,()=>{i.setValue(e())}));return i.readonly().spawn(()=>t.forEach(e=>e.unsubscribeAll(s)))}},2015:(e,t,i)=>{"use strict";var s=i(2872),r=i(80643).isFunction;function n(e){if(this._listeners=new s,this._childs=[],this._muteChildChanges=!1,void 0!==e)if(this.isPrimitiveType(e))this._value=e;else for(var t in e)this.addProperty(t,e[t])}n.prototype.merge=function(e,t){var i=null;if(t)var s=(i=[]).length;if(void 0===e)return i;if(this.isPrimitiveType(e))return t&&this._value!==e&&i.push(this),this._value=e,i;if(Array.isArray(e))for(var r=0;rs&&i.push(this),i},n.prototype.mergeAndFire=function(e){var t=this.merge(e,!0);this._muteChildChanges=!0,t.forEach((function(e){e._muteChildChanges=!0})),t.forEach((function(e){e._muteChildChanges=!1,e.listeners().fire(e)})),this._muteChildChanges=!1,t.length>0&&this.listeners().fire(this)},n.prototype.state=function(e){var t=r(this.value)?this.value():void 0;void 0===t&&(t={});for(var i=0;i=0},n.prototype.addChild=function(e,t){this[e]&&this[e].unsubscribe(this,this.childChanged),this[e]=t,-1===this._childs.indexOf(e)&&this._childs.push(e),t.subscribe(this,this.childChanged)},n.prototype.childChanged=function(e,t){this._muteChildChanges||this.listeners().fire(this)},n.prototype.subscribe=function(e,t){this.listeners().subscribe(e,t,!1)},n.prototype.unsubscribe=function(e,t){this.listeners().unsubscribe(e,t)},n.prototype.unsubscribeAll=function(e){this.listeners().unsubscribeAll(e)},n.prototype.childs=function(){return this},e.exports=n},90810:(e,t,i)=>{"use strict";i.d(t,{QuotesProvider:()=>a});var s=i(39138),r=i(2872),n=i.n(r),o=i(9423);class a{constructor(e="full"){this._quotes=null,this._quoteSessionSymbol=null,this._quoteSessionClientId="",this._quotesUpdate=new(n()),this._quoteSymbolChanged=new(n()),this._multiplexerType=e}setQuotesSessionSymbol(e){this._quoteSessionSymbol!==e&&(this._quoteSessionClientId||(this._quoteSessionClientId="series-"+(0,o.guid)()),this._unsubscribeQuoteSession(),e&&this._subscribeQuoteSession(e),this._quoteSymbolChanged.fire())}quotesUpdate(){return this._quotesUpdate}quoteSymbolChanged(){return this._quoteSymbolChanged}quotes(){return this._quotes}destroy(){this._unsubscribeQuoteSession()}_onUpdate(e,t){this._quotes=e&&e.values||null,t&&t.values&&this._quotesUpdate.fire(e,t)}_subscribeQuoteSession(e){this._quoteSessionSymbol=e,(0,s.getQuoteSessionInstance)(this._multiplexerType).subscribe(this._quoteSessionClientId,this._quoteSessionSymbol,this._onUpdate.bind(this))}_unsubscribeQuoteSession(){this._quoteSessionSymbol&&((0,s.getQuoteSessionInstance)(this._multiplexerType).unsubscribe(this._quoteSessionClientId,this._quoteSessionSymbol),this._quoteSessionSymbol=null,this._quotes=null)}}},64237:(e,t,i)=>{"use strict";i.d(t,{rangesAreEqual:()=>n});var s=i(73383),r=i(29823);function n(e,t){return!!r.Interval.isEqual(e.res,t.res)&&(0,s.areEqualTimeFrames)(e.val,t.val)}},9315:(e,t,i)=>{"use strict";i.r(t),i.d(t,{normalizeIntervalString:()=>_,isAvailable:()=>m,setLastUsedResolution:()=>g,getRangeResolution:()=>f,getTimeBasedResolution:()=>v,getDefaultResolution:()=>S,getResolutionByChartStyle:()=>y,getServerInterval:()=>b,isResolutionMultiplierValid:()=>w,getMaxResolutionValue:()=>P,getResolutionsFromSettings:()=>T,convertResolutionsFromSettings:()=>x,mergeResolutions:()=>I,sortResolutions:()=>M,getCustomResolutions:()=>E,getTranslatedResolution:()=>k,getTranslatedResolutionModel:()=>D,isSecondsEnabled:()=>B,isTicksEnabled:()=>N});var s=i(28353),r=i(29823),n=i(37667),o=i(56840),a=i(82992),l=i(96397),c=i(80643),h=i(67337);const d={[r.ResolutionKind.Ticks]:1,[r.ResolutionKind.Seconds]:60,[r.ResolutionKind.Minutes]:1440, +[r.SpecialResolutionKind.Hours]:24,[r.ResolutionKind.Days]:365,[r.ResolutionKind.Weeks]:52,[r.ResolutionKind.Months]:12,[r.ResolutionKind.Range]:1e6,[r.ResolutionKind.Invalid]:NaN},u={[r.ResolutionKind.Ticks]:0,[r.ResolutionKind.Seconds]:1,[r.ResolutionKind.Minutes]:2,[r.SpecialResolutionKind.Hours]:3,[r.ResolutionKind.Days]:4,[r.ResolutionKind.Weeks]:5,[r.ResolutionKind.Months]:6,[r.ResolutionKind.Range]:7,[r.ResolutionKind.Invalid]:8},p={[r.ResolutionKind.Invalid]:"",[r.ResolutionKind.Ticks]:(0,s.t)("T",{context:"interval_short"}),[r.ResolutionKind.Seconds]:(0,s.t)("s",{context:"interval_short"}),[r.ResolutionKind.Minutes]:(0,s.t)("m",{context:"interval_short"}),[r.SpecialResolutionKind.Hours]:(0,s.t)("h",{context:"interval_short"}),[r.ResolutionKind.Days]:(0,s.t)("D",{context:"interval_short"}),[r.ResolutionKind.Weeks]:(0,s.t)("W",{context:"interval_short"}),[r.ResolutionKind.Months]:(0,s.t)("M",{context:"interval_short"}),[r.ResolutionKind.Range]:(0,s.t)("R",{context:"interval_short"})};function _(e){return r.Interval.parse(e).value()}function m(e){const t=r.Interval.parse(e);if(!B()&&t.isSeconds())return!1;if(!N()&&t.isTicks())return!1;const i=t.value(),s=a.linking.supportedResolutions.value();return void 0!==s?void 0!==s.find(e=>_(e)===i):t.isSeconds()?Boolean(a.linking.seconds.value()):t.isTicks()?Boolean(a.linking.ticks.value()):t.isIntraday()?Boolean(a.linking.intraday.value()):t.isDWM()}function g(e){r.Interval.isValid(e)&&(r.Interval.isRange(e)?o.setValue("chart.lastUsedRangeResolution",e):o.setValue("chart.lastUsedTimeBasedResolution",e))}function f(e){const t=o.getValue("chart.lastUsedRangeResolution");if(void 0!==t&&r.Interval.isRange(t))return t;let i="100R";for(const t of e){const e=r.Interval.parse(t);if(e.isRange()){const t=e.value();if("100R"===t)return t;i=t}}return i}function v(e){const t=o.getValue("chart.lastUsedTimeBasedResolution");if(void 0!==t&&r.Interval.isTimeBased(t))return t;let i="1D";for(const t of e){const e=r.Interval.parse(t);if(e.isTimeBased()){const t=e.value();if("1D"===t)return t;i=t}}return i}function S(e){return e?"100R":"1D"}function y(e,t,i){const s=n.isRangeStyle(e),o=r.Interval.isRange(t);return!s&&o?v(i):s&&!o?f(i):t}function b(e){return r.Interval.isRange(e)?"1":e}function w(e){const{interval:t,guiResolutionKind:i}=r.Interval.parseExt(e);if(!t.isValid())return!1;return(i===r.SpecialResolutionKind.Hours?t.multiplier()/60:t.multiplier())<=C(i)}function C(e){const t=d[e];return Number.isNaN(t)?1:t}function P(e){return C(r.Interval.parseExt(e).guiResolutionKind)}function T(e){const t=x(o.getJSON(e,[]));return(0,l.uniq)(t.filter(w).map(_))}function x(e){return Array.isArray(e)?e:Object.keys(e).map(r.Interval.normalize).filter(c.notNull)}function I(...e){let t=[].concat(...e);return t=(0,l.uniq)(t.filter(w).map(_)),M(t)}function M(e){return e.sort(A)}function L(e){const t=r.Interval.parse(e),i=t.multiplier()||1;return t.isMinuteHours()?[r.SpecialResolutionKind.Hours,i/60]:[t.kind(),i]}function A(e,t){const[i,s]=L(e),[r,n]=L(t);return i!==r?u[i]-u[r]:s-n}function E(){return[]} +function k(e){const{multiplier:t,shortKind:i}=D(e);return`${t}${i}`}function D(e,t){const i=r.Interval.parse(e);let s=i.multiplier(),n=i.kind();if(!i.isValid()){if(t)return null;throw new TypeError("Can't translate invalid interval")}return i.isMinuteHours()&&(s=Math.floor(s/60),n=r.SpecialResolutionKind.Hours),{multiplier:s.toString(),shortKind:V(n),hint:`${s} ${V(n,s)}`,mayOmitMultiplier:i.isDWM()&&1===s,mayOmitShortKind:i.isMinutes()&&!i.isMinuteHours()}}function V(e,t){if(!t)return p[e];switch(e){case r.ResolutionKind.Ticks:return(0,s.t)("tick",{plural:"ticks",count:t});case r.ResolutionKind.Days:return(0,s.t)("day",{plural:"days",count:t});case r.ResolutionKind.Weeks:return(0,s.t)("week",{plural:"weeks",count:t});case r.ResolutionKind.Months:return(0,s.t)("month",{plural:"months",count:t});case r.ResolutionKind.Seconds:return(0,s.t)("second",{plural:"seconds",count:t});case r.ResolutionKind.Minutes:return(0,s.t)("minute",{plural:"minutes",count:t});case r.SpecialResolutionKind.Hours:return(0,s.t)("hour",{plural:"hours",count:t});case r.ResolutionKind.Range:return(0,s.t)("range",{plural:"ranges",count:t});default:return e}}function B(){return h.enabled("seconds_resolution")}function N(){return h.enabled("tick_resolution")}},22423:(e,t,i)=>{"use strict";i.d(t,{scaleRatio:()=>r,priceRangeByScaleRatio:()=>n,barSpacingByScaleRatio:()=>o});var s=i(69927);function r(e,t){if(t.isLog()||e.isEmpty()||t.isEmpty())return null;const i=function(e){if(e.isEmpty())return null;const t=e.priceRange();if(null===t)return null;const i=t.length();return e.internalHeight()/i}(t);if(null===i)return null;return e.getValidBarSpacing()/Math.max(1e-10,i)}function n(e,t,i){if(e.isLog()||null===i||e.isEmpty())return null;const r=e.priceRange();if(null===r||r.isEmpty())return null;const n=e.internalHeight()/(t/i),o=r.length();if(n===o)return r;const a=(n-o)/2;return new s.PriceRange(r.minValue()-a,r.maxValue()+a)}function o(e,t){if(e.isLog()||null===t||e.isEmpty())return null;const i=e.priceRange();if(null===i)return null;const s=i.length();return e.internalHeight()/s*t}},74325:(e,t,i)=>{"use strict";i.d(t,{createPriceScaleSelectionStrategy:()=>l,allPriceScaleSelectionStrategyInfo:()=>c});var s=i(88537),r=i(28353),n=i(81851);class o{constructor(e){this._priceScalesLimit=8,this._metaInfo=e}metaInfo(){return this._metaInfo}findSuitableScale(e,t,i,s){if(void 0!==s)return this._tryToGetDesiredPriceScale(e,t,s,i);if((0,n.isStudy)(t)){const s=t.metaInfo();if("Volume"===s.shortId&&e.containsMainSeries())return e.createPriceScaleAtPosition("overlay");const r=t.desiredPriceScalePosition();if(null!==r)return this._tryToGetDesiredPriceScale(e,t,r,i);if(void 0!==i&&((0,n.isStudy)(i)||e.isMainPane())&&s.is_price_study)return this._getPriceScaleTheSameAsForSource(i,e)}let r=!1;if((0,n.isStudy)(t)){const i=t.metaInfo().groupingKey;if(void 0!==i){const t=e.model().findNonOverlayStudyWithGroupingKey(i,e);if(null!==t)return this._getPriceScaleTheSameAsForSource(t.study,t.pane)}r=Boolean(t.metaInfo().is_price_study)}else t===e.model().mainSeries()&&(r=!0) +;if(r){const t=this._findFirstScaleForPriceStudy(e);if(null!==t)return t}return this.createNewPriceScaleIfPossible(e)}canCreateNewPriceScale(e){return e.leftPriceScales().length+e.rightPriceScales().lengthi&&this._priceScaleIsPrice(e.rightPriceScales()[i],t))return e.rightPriceScales()[i];if(e.leftPriceScales().length>i&&this._priceScaleIsPrice(e.leftPriceScales()[i],t))return e.leftPriceScales()[i]}return null}_targetPriceScaleIndex(e,t){if(e.mainSource()===t.mainSeries())return 0}_tryToGetDesiredPriceScale(e,t,i,r){switch(i){case"left":return this.canCreateNewPriceScale(e)?e.createPriceScaleAtPosition("left"):e.createPriceScaleAtPosition("overlay");case"right":return this.canCreateNewPriceScale(e)?e.createPriceScaleAtPosition("right"):e.createPriceScaleAtPosition("overlay");case"as-series":return void 0!==r?(0,s.ensureNotNull)(r.priceScale()):e.isMainPane()?(0,s.ensureNotNull)((0,s.ensureNotNull)(e.mainDataSource()).priceScale()):this.createNewPriceScaleIfPossible(e);case"overlay":return e.createPriceScaleAtPosition("overlay")}}}const a=[{name:"left",title:(0,r.t)("Stack on the left"),ctor:class extends o{constructor(e){super(e)}apply(e){const t=e.model();e.rightPriceScales().slice(0).forEach(i=>e.movePriceScale(i,"left",this._targetPriceScaleIndex(i,t)))}createNewPriceScaleIfPossible(e){return this.canCreateNewPriceScale(e)?e.createPriceScaleAtPosition("left"):e.createPriceScaleAtPosition("overlay")}}},{name:"right",title:(0,r.t)("Stack on the right"),ctor:class extends o{constructor(e){super(e)}apply(e){const t=e.model();e.leftPriceScales().slice(0).forEach(i=>e.movePriceScale(i,"right",this._targetPriceScaleIndex(i,t)))}createNewPriceScaleIfPossible(e){return this.canCreateNewPriceScale(e)?e.createPriceScaleAtPosition("right"):e.createPriceScaleAtPosition("overlay")}}},{name:"auto",title:(0,r.t)("Auto"),ctor:class extends o{constructor(e){super(e)}apply(e){if(e.containsMainSeries()){const t=(0,s.ensureNotNull)((0,s.ensureNotNull)(e.mainDataSource()).priceScale());e.movePriceScale(t,"right",0)}const t=e.model();for(;e.leftPriceScales().length>e.rightPriceScales().length;){const i=e.leftPriceScales()[e.leftPriceScales().length-1];e.movePriceScale(i,"right",this._targetPriceScaleIndex(i,t))}for(;e.rightPriceScales().length-e.leftPriceScales().length>1;){const i=e.rightPriceScales()[e.rightPriceScales().length-1];e.movePriceScale(i,"left",this._targetPriceScaleIndex(i,t))}}createNewPriceScaleIfPossible(e){if(!this.canCreateNewPriceScale(e))return e.createPriceScaleAtPosition("overlay");const t=e.leftPriceScales().lengtht.name===e));return new t.ctor(t)}function c(){return a}},85847:(e,t,i)=>{"use strict";i.d(t,{SelectionIndexes:()=>r});var s=i(88537);class r{constructor(e){this._baseIndex=null,this._offsetInBar=null,this._offsetInTime=null,this._barsBetweenPoints=null,this._timescale=e}indexes(){const e=this._timescale.visibleBarsStrictRange();if(null===e)return[];const t=e.firstBar(),i=e.lastBar();if(null===this._offsetInTime||null===this._barsBetweenPoints){const e=this._timescale.barSpacing();this._barsBetweenPoints=Math.floor(120/e),this._offsetInBar=i%this._barsBetweenPoints,this._offsetInTime=this._timescale.indexToTimePoint(this._offsetInBar),this._baseIndex=this._timescale.baseIndex()}const r=this._timescale.baseIndex();this._baseIndex!==r&&(this._baseIndex=r,this._offsetInBar=(0,s.ensureNotNull)(this._timescale.timePointToIndex(this._offsetInTime)));const n=(0,s.ensureNotNull)(this._offsetInBar),o=[];let a=Math.floor((t-n)/this._barsBetweenPoints);const l=Math.floor((i-n)/this._barsBetweenPoints);for(;a<=l;a++)o.push(n+a*this._barsBetweenPoints);return o}clear(){this._offsetInBar=null,this._offsetInTime=null,this._baseIndex=null,this._barsBetweenPoints=null}}},41892:(e,t,i)=>{"use strict";i.d(t,{SelectionRenderer:()=>l});var s=i(34026),r=i(45112),n=i(84346),o=i(56589);const a=r.colorsPalette["color-tv-blue-600"];class l{constructor(e){this._data=e||null}setData(e){this._data=e}draw(e,t){if(null===this._data||!this._data.visible)return;const i=t.pixelRatio;e.strokeStyle=void 0!==this._data.color?this._data.color:a,e.lineCap="butt";const s=Math.max(1,Math.floor(i));e.lineWidth=s;const r=this._data.vertOffset||0;for(let t=0;t(0,s.pointInBox)(t,e))}_drawMarker(e,t,i,s,r){let n=Math.round(3.5*r*2);n%2!=s%2&&(n+=1);let o=Math.round(n+2*(.5*s+.75*r));o%2!=s%2&&(o+=1);const a=Math.round(t.x*r),l=Math.round((t.y+i)*r),c=s%2/2;e.beginPath(),e.arc(a+c,l+c,o/2,0,2*Math.PI,!0),e.closePath(),e.fill(),e.beginPath(),e.arc(a+c,l+c,n/2,0,2*Math.PI,!0),e.closePath(),e.stroke()}}},10590:(e,t,i)=>{"use strict";i.d(t,{SeriesBase:()=>Ht});var s=i(88537),r=i(49483),n=i(51768),o=i(76422),a=i(98125),l=i(22932),c=i(63948),h=i(71053),d=i(2015),u=i.n(d),p=i(37667),_=i(28930),m=i(97098),g=i(16654),f=i(45058),v=i(28353),S=i(67337),y=i(1570),b=i(50338),w=i(35218);function C(e){const t="QUANDL"===(e=e||{}).exchange,i={title:"",description:"",interval:"",exchange:"",provider:"",chartStyle:"", +sessionDescription:""};let s="";if(e.description&&t)if(2===e.description.split("/").length)s=e.description.split("/")[1];else{e.description.split("'").filter(e=>e.length).forEach(e=>{let t=[];t=e&&("/"===e[0]||/\d+\/\(?/.test(e))?[e]:e.split("/").filter(e=>e.length),s+=t[2===t.length?1:0]})}else s=e.description?e.description:e.symbol;if(e.ticker?(i.title=e.ticker,i.description=P(s)):i.title=P(s),e.interval&&(i.interval=(0,w.translatedIntervalString)(e.interval)),t&&e.description){const t=/[\w_]+\/[\w_]+/.exec(e.description);t&&t[0]?i.provider=P(t[0].split("/")[0]):i.provider=P(e.description.split("/")[0])}return e.exchange&&(i.exchange=P(e.exchange)),i.chartStyle=P(function(e){return e.inputs,8===e.style?(0,v.t)("Heikin Ashi"):""}(e)),e.branding&&!s.toUpperCase().includes("TradingView".toUpperCase())&&(i.branding="TradingView"),e.sessionDescription&&(i.sessionDescription=P(e.sessionDescription)),i}function P(e){return e.replace(/'/g,"")}const T=(0,v.t)("Symbol Error"),x=S.enabled("hide_unresolved_symbols_in_legend");class I extends b.StatusProviderBase{constructor(e,t,i,s){super(t),this._series=e,this._statusViewProperties=i,this._options=s||{}}text(){return function(e){const t=C(e);return(e.ticker?t.description:t.title)+(t.interval?", "+t.interval:"")+function(e,t=", "){return(e.provider?`${t}${e.provider}`:"")+(e.exchange?`${t}${e.exchange}`:"")+(e.chartStyle?`${t}${e.chartStyle}`:"")+(e.branding?`${t}${e.branding}`:"")+(e.sessionDescription?`${t}${e.sessionDescription}`:"")}(t)}(this._getTitleGenerationOptions())}getSplitTitle(){return C(this._getTitleGenerationOptions())}bold(){return!1}size(){return this._statusViewProperties.childs().fontSize.value()+"px"}errorStatus(){const e=this._series.seriesErrorMessage();return null!==e?{error:e,title:T}:null}_getTitleGenerationOptions(){const e=this._series.symbolInfo(),t=this._statusViewProperties.childs(),i=this._series.symbolTextSourceProxyProperty().value();let s;return t.showExchange.value()&&e&&(s=(0,p.isEconomicSymbol)(e)&&e.source?e.source:e.exchange),{description:"ticker"===i?e&&e.name||void 0:(0,y.getTranslatedSymbolDescription)({pro_name:e&&e.pro_name||void 0,short_name:e&&e.name||void 0,description:e&&e.description||void 0,short_description:e&&e.short_description||void 0,local_description:e&&e.local_description||void 0,language:e&&e.language||void 0}),exchange:s,symbol:x&&null===e?"":this._series.symbol(),interval:t.showInterval.value()&&!this._options.hideResolution?this._series.interval():void 0,style:this._series.properties().childs().style.value(),inputs:this._series.getInputsProperties().state(),boxSize:this._series.data().boxSize,reversalAmount:this._series.data().reversalAmount,ticker:"ticker-and-description"===i?e&&e.name||void 0:"",branding:this._options.branding}}}class M extends f.StatusView{constructor(e,t,i,s){super(new I(e,t,i,s)),this._invalidated=!0,this._series=e,this._series.onRestarted().subscribe(this,this.update),this._series.dataEvents().symbolResolved().subscribe(this,this.update), +this._series.dataEvents().completed().subscribe(this,this.update),this._series.boxSizeValue().subscribe(this.update.bind(this)),i.childs().symbolTextSource.listeners().subscribe(this,this.update)}getSeriesPrecision(){let e=4;const t=this._series.symbolInfo();return t&&t.pricescale&&(e=Math.round(Math.log(t.pricescale)/Math.log(10))),e}round(e){const t=this.getSeriesPrecision(),i=Math.round(e*Math.pow(10,t))/Math.pow(10,t);return i?i.toString():""}update(){this._invalidated=!0}text(){return this._updateImpl(),super.text()}color(){return this._updateImpl(),super.color()}bold(){return this._updateImpl(),super.bold()}size(){return this._updateImpl(),super.size()}getSplitTitle(){return this._updateImpl(),this._statusProvider.getSplitTitle()}_updateImpl(){this._invalidated&&(this._bold=this._statusProvider.bold(),this._size=this._statusProvider.size(),this._text=this._statusProvider.text(),this._invalidated=!1)}}var L=i(14445),A=i(85733),E=i(83393),k=i(14291);const D=r.CheckMobile.any(),V=S.enabled("hide_resolution_in_legend");class B extends L.DataWindowView{constructor(e,t){super(),this._invalidated=!0,this._series=e,this._model=t,this._valuesProvider=this._createValuesProvider(e,t),this._items=this._valuesProvider.getItems().map(e=>new L.DataWindowItem(e.title,"",e.unimportant)),this.update()}update(){this._invalidated=!0}items(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._items}series(){return this._series}_updateImpl(){const e=this._series.symbolInfo();if(e){const t=[e.name];V||t.push((0,w.translatedIntervalString)(this._series.interval())),(0,p.isEconomicSymbol)(e)&&e.source?t.push(e.source):t.push((0,r.onWidget)()||"forex"===e.type?e.exchange:e.listed_exchange),this._header=t.join(", "),this._title=e.description}else this._header=this._series.symbol();const t=this._model.crossHairSource().appliedIndex(),i=this._valuesProvider.getValues(t);for(let e=0;ee||t||i,i.showBarChange,i.showSeriesOHLC,i.showVolume),this._visibilityProperty.subscribe(this,this.update)}areValuesVisible(){return this._visibilityProperty.value()}additional(){return null}marketTitle(){const e=this._series.marketStatusModel().status().value();return this._showLastPriceAndChangeOnly()&&("pre_market"===e||"post_market"===e)?F+":":""}destroy(){this._backgroundColorSpawn.destroy(),this._visibilityProperty.destroy()}_createValuesProvider(e,t){return new R(e,t)}}var H=i(52714),z=i.n(H),U=i(90388),j=i(10480);function G(){const e=window.ChartApiInstance.serverTimeOffset();return Date.now()/1e3+e}function q(e,t,i){return e<=i?t<=i?1/0:t/1e3:Math.min(e,t)/1e3}class Y{constructor(e,t){this._marketStatus=new(z())(null),this._lastMarketStatus=null,this._sessionsSpec=null,this._nextSessionEdgeInternal=null,this._nextSessionEdge=new(z())(null),this._recalcNextSessionEdgeTimerId=null,this._quotesProvider=e,e.quotesUpdate().subscribe(this,this._update.bind(this)),e.quoteSymbolChanged().subscribe(this,()=>{this._nextSessionEdgeInternal=null,this._recalculateNextSessionEdge()}),this._resetSubscription=t,this._resetSubscription.subscribe(this,this._resetStatus)}destroy(){this._quotesProvider.quotesUpdate().unsubscribeAll(this),this._quotesProvider.quoteSymbolChanged().unsubscribeAll(this),this._resetSubscription.unsubscribeAll(this),null!==this._recalcNextSessionEdgeTimerId&&clearTimeout(this._recalcNextSessionEdgeTimerId)}setSymbolInfo(e){var t,i,s,r,n;if(this._nextSessionEdgeInternal=null,null===e)return void(this._sessionsSpec=null);const o=new U.SessionSpec(e.timezone,null!==(t=e.session_display)&&void 0!==t?t:e.session,e.session_holidays,e.corrections);let a,l;const c=null===(i=e.subsessions)||void 0===i?void 0:i.find(e=>"premarket"===e.id),h=null===(s=e.subsessions)||void 0===s?void 0:s.find(e=>"postmarket"===e.id);void 0!==c&&(a=new U.SessionSpec(e.timezone,null!==(r=c["session-display"])&&void 0!==r?r:c.session,e.session_holidays,c["session-correction"])),void 0!==h&&(l=new U.SessionSpec(e.timezone,null!==(n=h["session-display"])&&void 0!==n?n:h.session,e.session_holidays,h["session-correction"])),this._sessionsSpec={general:o,preMarket:a, +postMarket:l},this._recalculateNextSessionEdge()}status(){return this._marketStatus}nextSessionEdge(){return this._nextSessionEdge}_resetStatus(){this._marketStatus.setValue(null)}_update(e){void 0!==e&&void 0!==e.values.current_session&&(this._lastMarketStatus=e.values.current_session),null!==this._lastMarketStatus?this._marketStatus.setValue(this._lastMarketStatus):this._resetStatus()}_getNextSessionEdgeInternal(){var e;if(null===this._sessionsSpec||"24x7"===this._sessionsSpec.general.spec())return null;const t=1e3*G();if(null===this._nextSessionEdgeInternal||(null!==(e=this._nextSessionEdgeInternal.timestamp)&&void 0!==e?e:1/0)<=t/1e3){const{general:e,preMarket:i,postMarket:s}=this._sessionsSpec,r=(0,j.get_timezone)(e.timezone()),n=(0,j.utc_to_cal)(r,t),o=q((0,j.cal_to_utc)(r,e.alignToNearestSessionStart(n,1)),(0,j.cal_to_utc)(r,e.alignToNearestSessionEnd(n,1)),t),a=q(void 0!==i?(0,j.cal_to_utc)(r,i.alignToNearestSessionStart(n,1)):1/0,void 0!==i?(0,j.cal_to_utc)(r,i.alignToNearestSessionEnd(n,1)):1/0,t),l=q(void 0!==s?(0,j.cal_to_utc)(r,s.alignToNearestSessionStart(n,1)):1/0,void 0!==s?(0,j.cal_to_utc)(r,s.alignToNearestSessionEnd(n,1)):1/0,t),c=Math.min(o,a,l);c===1/0&&(this._nextSessionEdgeInternal={timestamp:null}),this._nextSessionEdgeInternal=c===l?{timestamp:c,status:"post_market"}:c===a?{timestamp:c,status:"pre_market"}:{timestamp:c}}return this._nextSessionEdgeInternal}_recalculateNextSessionEdge(){const e=this._getNextSessionEdgeInternal();if(null===e||null===e.timestamp)return void this._nextSessionEdge.setValue(null);const t={status:e.status,remainingSeconds:Math.max(0,e.timestamp-G())};if(null===this._recalcNextSessionEdgeTimerId){let e=Math.ceil(t.remainingSeconds%60);0===e&&(e+=60),this._recalcNextSessionEdgeTimerId=setTimeout(()=>this._recalculateNextSessionEdgeByTimer(),1e3*e)}this._nextSessionEdge.setValue(t)}_recalculateNextSessionEdgeByTimer(){this._recalcNextSessionEdgeTimerId=null,this._recalculateNextSessionEdge()}}var K=i(8175),$=i(29823),X=i(69177),Z=i(11075),J=i(9423);let Q=0;class ee{constructor(e,t){this._extrapolatedData=[],this._cacheForFuture=!1,this._modelId=Q++,this._builderCache=null,this._uniqueId=(0,J.randomHashN)(6),this._resolution=t,this._symbolInfo=e,this._valid=Boolean(e.timezone)&&Boolean(e.session),this._session=new X.SessionInfo(e.timezone,e.session,e.session_holidays,e.corrections)}syncSourceTarget(){return{uniqueId:this._uniqueId,resolution:this._resolution,symbolInfo:this._symbolInfo,session:this._session.state()}}getSymbolInfo(){return this._symbolInfo}getSession(){return this._session}getResolution(){return this._resolution}uniqueId(){return this._modelId}distance(e,t){if(!this.isValid())return{success:!1};if(e>t)return{success:!1};if(e===t)return{success:!0,result:0};let i=this._extrapolatedData.length,s=0!==i?this._extrapolatedData[0]:null,r=null!==s?this._extrapolatedData[i-1]:null;const n=er){const s=(0, +Z.extrapolateBarsFrontToTime)(this._barBuilder(),r||1e3*e,1e3*t,2e3,!0);this._extrapolatedData=this._extrapolatedData.concat(s.times),i=this._extrapolatedData.length,this._cacheForFuture=n}if(r=this._extrapolatedData[i-1],r<1e3*t)return{success:!1};const o=this._extrapolatedData.indexOf(1e3*t);return-1===o?{success:!1}:{success:!0,result:o}}projectTime(e,t){if(!this.isValid())return e;let i=this._extrapolatedData.length,s=i>0?this._extrapolatedData[0]:null,r=null!==s?this._extrapolatedData[i-1]:null;const n=t>=0;1e3*e===s&&this._cacheForFuture===n||(this._extrapolatedData=[1e3*e],i=1,s=null,r=null);const o=Math.abs(t);if(null===s||o>=i){const s=(0,Z.extrapolateBarsFrontByCount)(this._barBuilder(),r||1e3*e,Math.sign(t)*(o-i+1),!0);this._extrapolatedData=this._extrapolatedData.concat(s.times),i=this._extrapolatedData.length,this._cacheForFuture=n}return i0?le(e):function(e,t){return se().hasEodSymbols(e.full_name)||t===g.STATUS_EOD}(e,t)?(i.push("EOD"),i):i;var s}class he{constructor(e,t,i){this._dataUpdatedModeStatus=new(z())(null),this._symbolInfo=(0,te.createWVFromGetterAndSubscription)(e.getter,e.onChange),this._status=(0,te.createWVFromGetterAndSubscription)(t.getter,t.onChange),this._symbolInfo.subscribe(this._update.bind(this)),this._status.subscribe(this._update.bind(this)),this._resetSubscription=i,this._resetSubscription.subscribe(this,this._resetStatus)}destroy(){this._symbolInfo.destroy(),this._status.destroy(),this._resetSubscription.unsubscribeAll(this)}status(){return this._dataUpdatedModeStatus.readonly()}symbolName(){const e=this._symbolInfo.value();return null!==e?e.name:""}time(){const e=this._symbolInfo.value(),t=null!==e&&e.delay&&e.delay>0?e.delay:900;return Math.round(t/60)}listedExchange(){const e=this._symbolInfo.value();return null!==e?e.listed_exchange:""}async description(){const e=this._symbolInfo.value();if(null===e)return"";let t={};try{t=(0,s.ensureNotNull)(await async function(e){return null}())}catch(e){ae.logWarn("Cannot get exchange "+(0,oe.errorToString)(e))}return t.description||e.listed_exchange}exchange(){const e=this._symbolInfo.value();return null!==e?e.exchange:""}proName(){const e=this._symbolInfo.value();return null!==e?e.pro_name:""}firstReplacedByBatsExchange(){const e=this._symbolInfo.value();return e&&null}_resetStatus(){ +this._dataUpdatedModeStatus.setValue(null)}_update(){const e=this._symbolInfo.value();if(null===e)return void this._dataUpdatedModeStatus.setValue(null);const t=this._status.value();if("string"==typeof t)return void this._dataUpdatedModeStatus.setValue(null);if(t===g.STATUS_LOADING||t===g.STATUS_RESOLVING)return;const i=ce(e,t);0!==i.length?this._dataUpdatedModeStatus.setValue(i):this._dataUpdatedModeStatus.setValue(null)}}var de=i(40144),ue=i(80643);class pe{constructor(e,t){this._dataProblem=new de.WatchedObject(null),this._quotesProvider=e,this._quotesProvider.quotesUpdate().subscribe(this,this._update.bind(this)),this._resetSubscription=t,this._resetSubscription.subscribe(this,this._resetStatus)}destroy(){this._quotesProvider.quotesUpdate().unsubscribeAll(this),this._resetSubscription.unsubscribeAll(this)}status(){return this._dataProblem}_resetStatus(){this._dataProblem.setValue(null)}_update(e){void 0===e.values||void 0===e.values.data_problem?this._resetStatus():this._dataProblem.setValue((0,ue.clone)(e.values.data_problem))}}var _e=i(90810),me=i(68906),ge=i(97938),fe=i(3825);function ve(e){return e<10?"0"+e:e.toString()}var Se=i(74477),ye=i(33291);const be=[0,1,2,3,9,8,10],we=S.enabled("force_exchange_as_title"),Ce={alwaysShowGlobalLast:!1,visibleOnHistoryOnly:!1,showCountdown:!0,showSymbolLabel:!0};class Pe extends ge.PriceAxisView{constructor(e,t,i){super(),this._previousCountdown="",this._source=e,this._model=t,this._options={...Ce,...i}}updateCountdown(){this._countdownText()!==this._previousCountdown&&(this.update((0,ye.dataSourceChangeEvent)(this._source.id())),this._model.updateSourcePriceScale(this._source))}_getSource(){return this._source}_getModel(){return this._model}_isCountdownEnabled(){return this._options.showCountdown}_countdownText(){const e=$.Interval.parse(this._source.interval());if(e.isDWM()||e.isTicks()||e.isSeconds()&&1===e.multiplier())return"";const t=this._source.data().bars().last();if(null===t)return"";const i=1e3*(0,s.ensure)(t.value[0]),r=$.Interval.parse(this._source.interval()).inMilliseconds(),n=i.valueOf()+r;let o=Math.round((n-this._currentTime())/1e3);if(o<=0)return"";o=Math.min(o,r/1e3);let a=null;o>=3600&&(a=ve(Math.floor(o/3600))),o%=3600;const l=ve(Math.floor(o/60));o%=60;const c=ve(Math.floor(o));return null!==a?`${a}:${l}:${c}`:`${l}:${c}`}_updateRendererData(e,t,i){if(e.visible=!1,t.visible=!1,!this._source.isVisible())return;const s=this._source.properties().childs();if(12===s.style.value())return;const r=this._model.timeScale().visibleBarsStrictRange(),n=this._source.data().last();if(null===r||null===n)return;if(this._options.visibleOnHistoryOnly&&r.contains(n.index))return;const o=this._model.properties().childs().scalesProperties.childs();let a=o.showSeriesLastValue.value(),l=this._isCountdownEnabled()&&-1!==be.indexOf(s.style.value())&&s.showCountdown.value()&&(this._options.alwaysShowGlobalLast||r.contains(n.index)),c=this._options.showSymbolLabel&&o.showSymbolLabels.value() +;const h=o.seriesLastValueMode.value()===fe.PriceAxisLastValueMode.LastPriceAndPercentageValue,d=this._source.lastValueData(void 0,this._options.alwaysShowGlobalLast);if(d.noData)return;const u=8===s.style.value();if((a||l||c)&&u&&s.haStyle.childs().showRealLastPrice.value()){const e=this._source.lastValueData(void 0,!1),t=this._source.lastValueData(void 0,!0);e.noData||t.noData||e.index!==t.index||(a=!1,l=!1,c=!1)}if(i.background=this._source.priceLineColor(d.color),i.coordinate=d.coordinate,i.floatCoordinate=d.floatCoordinate,a||l){const t=this._axisFirstLineText(d,a);e.text=t,i.textColor=this.generateTextColor(i.background),e.textColor=i.textColor;const s=a&&h?(0,Se.getOppositeModePriceText)(this._source.priceScale(),d):"";e.secondLine=s,i.secondLineTextColor=i.textColor;const r=l?this._countdownText():"";this._previousCountdown=r,e.thirdLine=r,i.thirdLineTextColor=(0,me.generateColor)(i.textColor,25),0===t.length&&0===s.length&&0===r.length||(e.visible=!0)}c&&(t.text=this._paneText(c),t.visible=t.text.length>0)}_paneText(e){let t="";const i=this._source.symbolInfo();return we?t=(0,p.displayedSymbolExchange)(i):e&&(t=(0,p.displayedSymbolName)(i)),t}_axisFirstLineText(e,t){return t?(0,Se.getCurrentModePriceText)(this._source.priceScale(),e):""}_currentTime(){return Date.now()+1e3*this._source.serverTimeOffset()}}var Te=i(55057);class xe extends Pe{lastPrice(){return this._getSource().data().lastProjectionPrice}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const r=this._getModel(),n=this._getSource(),o=n.priceScale(),a=r.timeScale(),l=this.lastPrice();if(a.isEmpty()||o.isEmpty()||void 0===l)return;const c=a.visibleBarsStrictRange();if(null===c)return;const d=c.firstBar(),u=c.lastBar(),p=n.data(),_=p.search(u,h.PlotRowSearchMode.NearestLeft);if(null===_)return;const m=n.nearestIndex(d,h.PlotRowSearchMode.NearestRight);if(void 0===m)return;const g=n.model().properties().childs().scalesProperties.childs(),f=(0,s.ensureNotNull)(p.valueAt(m))[4];let v=i.background,S=g.showSeriesLastValue.value(),y=!1,b=!1,w=!1;const C=n.lastValueData(4,!1),P=n.properties().childs();if(8===P.style.value()&&P.haStyle.childs().showRealLastPrice.value()){const e=n.lastValueData(4,!0);if(e.noData||e.color===i.background||(v=e.color),!e.noData&&!C.noData){const t=e.index===C.index;y=t&&g.showSymbolLabels.value(),b=g.seriesLastValueMode.value()===fe.PriceAxisLastValueMode.LastPriceAndPercentageValue,S=S&&t,w=t&&this._isCountdownEnabled()&&P.showCountdown.value()}}else{v=n.barColorer().barStyle(_.index,!0).barColor}if(i.background=v,i.textColor=this.generateTextColor(v),i.secondLineTextColor=i.textColor,i.thirdLineTextColor=(0,me.generateColor)(i.textColor,25),i.coordinate=o.priceToCoordinate(l,f),e.visible=S||w,!C.noData){const i=n.priceScale().isPercentage();C.formattedPriceAbsolute=o.formatPriceAbsolute(l),C.formattedPricePercentage=o.formatPricePercentage(l,f,!0),C.text=i?C.formattedPricePercentage:C.formattedPriceAbsolute,e.text=this._axisFirstLineText(C,S),e.secondLine=S&&b?i?C.formattedPriceAbsolute:C.formattedPricePercentage:"", +e.thirdLine=w?this._countdownText():"",t.text=this._paneText(y)}t.visible=y}}var Ie=i(28978),Me=i(22221),Le=i(45112),Ae=i(43891);const Ee={light:{lineStyle:Ae.LINESTYLE_DOTTED,lineWidth:1,textColor:Le.colorsPalette["color-cold-gray-900"],backgroundColor:Le.colorsPalette["color-tv-blue-50"],lineColor:Le.colorsPalette["color-cold-gray-500"]},dark:{lineStyle:Ae.LINESTYLE_DOTTED,lineWidth:1,textColor:Le.colorsPalette["color-white"],backgroundColor:Le.colorsPalette["color-tv-blue-a800"],lineColor:Le.colorsPalette["color-cold-gray-500"]}};function ke(e){return e?Ee.dark:Ee.light}class De extends Me.HorizontalLinePaneView{constructor(e,t,i){super(),this._model=e,this._isVisible=t.lineVisible,this._lineColor=t.lineColor,this._lineWidth=t.lineWidth,this._getValue=i}_updateImpl(){const e=this._lineRendererData;if(e.visible=!1,!this._isVisible.value())return;const t=this._model.mainSeries(),i=t.priceScale(),s=t.firstValue(),r=this._getValue();if(null===s||null===r)return;const n=ke(this._model.isDark()),o=this._lineColor.value()?this._lineColor.value():n.lineColor,a=this._lineWidth.value()?this._lineWidth.value():n.lineWidth;e.visible=!0,e.y=i.priceToCoordinate(r,s),e.linestyle=n.lineStyle,e.linewidth=a,e.color=o}}class Ve extends ge.PriceAxisView{constructor(e,t,i,s){super(),this._model=e,this._label=t,this._isVisible=i,this._getValue=s}_updateRendererData(e,t,i){if(e.visible=!1,t.visible=!1,!this._isVisible.value())return;const s=this._model.mainSeries(),r=s.priceScale(),n=s.firstValue(),o=this._getValue();if(null===n||null===o)return;const a=ke(this._model.isDark());e.visible=!0,t.visible=!0,e.text=r.formatPriceAbsolute(o),t.text=this._label,i.coordinate=r.priceToCoordinate(o,n),i.background=a.backgroundColor,i.textColor=a.textColor}}class Be extends Te.PriceLineAxisView{constructor(e,t,i){super(),this._model=e,this._isLineVisible=t,this._getValue=i}_isVisible(){return this._isLineVisible.value()}_lineWidth(){return ke(this._model.isDark()).lineWidth}_lineStyle(){return ke(this._model.isDark()).lineStyle}_priceLineColor(e){return ke(this._model.isDark()).lineColor}_value(){const e=this._model.mainSeries(),t=e.priceScale(),i=e.firstValue(),s=this._getValue();if(null===i||null===s)return{noData:!0};const r=t.priceToCoordinate(s,i);return{noData:!1,floatCoordinate:r,coordinate:r,color:"",formattedPricePercentage:"",formattedPriceAbsolute:"",formattedPriceIndexedTo100:"",text:"",index:0}}}const Ne=(0,v.t)("High"),Re=(0,v.t)("Low");function Oe(e,t,i,s){const r=new De(e,i,s),n=new Ve(e,i.label,i.labelVisible,s);return{paneView:r,panePriceAxisView:new Ie.PanePriceAxisView(n,t,e),priceAxisView:n,priceLineAxisView:new Be(e,i.lineVisible,s)}}const Fe={light:{lineStyle:Ae.LINESTYLE_DOTTED,lineWidth:1,textColor:(0,Le.getHexColorByName)("color-cold-gray-900"),backgroundColor:(0,Le.getHexColorByName)("color-tv-blue-50"),lineColor:(0,Le.getHexColorByName)("color-cold-gray-500")},dark:{lineStyle:Ae.LINESTYLE_DOTTED,lineWidth:1,textColor:(0,Le.getHexColorByName)("color-white"),backgroundColor:(0,Le.getHexColorByName)("color-tv-blue-a800"), +lineColor:(0,Le.getHexColorByName)("color-cold-gray-500")}};function We(e){return e?Fe.dark:Fe.light}class He extends Me.HorizontalLinePaneView{constructor(e,t,i){super(),this._model=e,this._isVisible=t.lineVisible,this._lineColor=t.lineColor,this._lineWidth=t.lineWidth,this._getValue=i}_updateImpl(){const e=this._lineRendererData;if(e.visible=!1,!this._isVisible.value())return;const t=this._model.mainSeries(),i=t.priceScale(),s=t.firstValue(),r=this._getValue();if(null===s||null===r)return;const n=We(this._model.isDark()),o=this._lineColor.value()?this._lineColor.value():n.lineColor,a=this._lineWidth.value()?this._lineWidth.value():n.lineWidth;e.visible=!0,e.y=i.priceToCoordinate(r,s),e.linestyle=n.lineStyle,e.linewidth=a,e.color=o}}class ze extends ge.PriceAxisView{constructor(e,t,i,s){super(),this._model=e,this._label=t,this._isVisible=i,this._getValue=s}_updateRendererData(e,t,i){if(e.visible=!1,t.visible=!1,!this._isVisible.value())return;const s=this._model.mainSeries(),r=s.priceScale(),n=s.firstValue(),o=this._getValue();if(null===n||null===o)return;const a=We(this._model.isDark());e.visible=!0,t.visible=!0,e.text=r.formatPriceAbsolute(o),t.text=this._label,i.coordinate=r.priceToCoordinate(o,n),i.background=a.backgroundColor,i.textColor=a.textColor}}class Ue extends Te.PriceLineAxisView{constructor(e,t,i){super(),this._model=e,this._isLineVisible=t,this._getValue=i}_isVisible(){return this._isLineVisible.value()}_lineWidth(){return We(this._model.isDark()).lineWidth}_lineStyle(){return We(this._model.isDark()).lineStyle}_priceLineColor(e){return We(this._model.isDark()).lineColor}_value(){const e=this._model.mainSeries(),t=e.priceScale(),i=e.firstValue(),s=this._getValue();if(null===i||null===s)return{noData:!0};const r=t.priceToCoordinate(s,i);return{noData:!1,floatCoordinate:r,coordinate:r,color:"",formattedPricePercentage:"",formattedPriceAbsolute:"",formattedPriceIndexedTo100:"",text:"",index:0}}}const je=(0,v.t)("Avg");function Ge(e,t,i,s){const r=i.childs(),n=function(e,t,i,s){const r=new He(e,i,s),n=new ze(e,i.label,i.labelVisible,s),o=new Ie.PanePriceAxisView(n,t,e),a=new Ue(e,i.lineVisible,s);return{paneView:r,panePriceAxisView:o,priceAxisView:n,priceLineAxisView:a}}(e,t,{label:je,labelVisible:r.averageClosePriceLabelVisible,lineVisible:r.averageClosePriceLineVisible,lineColor:r.averagePriceLineColor,lineWidth:r.averagePriceLineWidth},()=>s(0));return{paneViews:[n.paneView],panePriceAxisViews:[n.panePriceAxisView],priceAxisViews:[n.priceAxisView],priceLineAxisViews:[n.priceLineAxisView]}}var qe=i(2872),Ye=i.n(qe),Ke=i(14791),$e=i(86441);class Xe{constructor(){this._data=null}setData(e){this._data=e}data(){return this._data}draw(e,t){const i=this._data;if(null===i)return;const s=t.pixelRatio;e.save();const r=Math.max(1,Math.floor(s)),n=r%2/2,o=Math.round(i.center.x*s)+n,a=i.center.y*s;e.fillStyle=i.seriesLineColor,e.beginPath();const l=Math.max(2,1.5*i.seriesLineWidth)*s;e.arc(o,a,l,0,2*Math.PI,!1),e.fill(),e.fillStyle=i.fillColor,e.beginPath(),e.arc(o,a,i.radius*s,0,2*Math.PI,!1),e.fill(), +e.lineWidth=r,e.strokeStyle=i.strokeColor,e.beginPath(),e.arc(o,a,i.radius*s+r/2,0,2*Math.PI,!1),e.stroke(),e.restore()}hitTest(e,t){return null}}function Ze(e){return e}const Je=[{start:0,end:.25,startRadius:4,endRadius:10,startFillAlpha:.25,endFillAlpha:0,startStrokeAlpha:.4,endStrokeAlpha:.8,easing:Ze},{start:.25,end:.525,startRadius:10,endRadius:14,startFillAlpha:0,endFillAlpha:0,startStrokeAlpha:.8,endStrokeAlpha:0,easing:Ze},{start:.525,end:1,startRadius:14,endRadius:14,startFillAlpha:0,endFillAlpha:0,startStrokeAlpha:0,endStrokeAlpha:0,easing:Ze}];function Qe(e,t,i,s){const r=i+(s-i)*t;return(0,me.applyTransparency)(e,(0,me.alphaToTransparency)(r))}function et(e,t){const i=e%2600/2600;let s;for(const e of Je)if(i>=e.start&&i<=e.end){s=e;break}if(void 0===s)throw new Error("Last price animation internal logic error");const r=s.easing((i-s.start)/(s.end-s.start));return{fillColor:Qe(t,r,s.startFillAlpha,s.endFillAlpha),strokeColor:Qe(t,r,s.startStrokeAlpha,s.endStrokeAlpha),radius:(n=r,o=s.startRadius,a=s.endRadius,o+(a-o)*n)};var n,o,a}class tt{constructor(e){this._renderer=new Xe,this._invalidated=!0,this._stageInvalidated=!0,this._startTime=performance.now(),this._endTime=this._startTime-1,this._series=e}update(e){if(this._invalidated=!0,"data-source-change"===e.type&&e.dataSourceId===this._series.id()||"viewport-change"===e.type||"global-change"===e.type){const e=performance.now(),t=this._endTime-e;if(t>0)return void(t<650&&(this._endTime+=2600));this._startTime=e,this._endTime=e+2600}}invalidateStage(){this._stageInvalidated=!0}animationActive(){return performance.now()<=this._endTime}stopAnimation(){this._endTime=this._startTime-1}renderer(e,t){return this._invalidated?(this._updateImpl(e,t),this._invalidated=!1,this._stageInvalidated=!1):this._stageInvalidated&&(this._updateRendererDataStage(),this._stageInvalidated=!1),this._renderer}_updateImpl(e,t){this._renderer.setData(null);const i=this._series.model().timeScale(),s=i.visibleBarsStrictRange(),r=this._series.firstValue(),n=this._series.lastValueData(void 0,!0,!0);if(null===s||null===r||void 0===n.index||void 0===n.price||!s.contains(n.index))return;const o=new $e.Point(i.indexToCoordinate(n.index),this._series.priceScale().priceToCoordinate(n.price,r)),a=n.color,l=this._series.properties().childs();let c;switch(this._series.style()){case 3:c=l.areaStyle.childs().linewidth.value();break;case 10:const t=l.baselineStyle,i=Math.round(e*(Math.abs(100-t.childs().baseLevelPercentage.value())/100));c=o.y<=i?t.childs().topLineWidth.value():t.childs().bottomLineWidth.value();break;default:c=l.lineStyle.childs().linewidth.value()}const h=et(this._duration(),a);this._renderer.setData({seriesLineColor:a,seriesLineWidth:c,fillColor:h.fillColor,strokeColor:h.strokeColor,radius:h.radius,center:o})}_updateRendererDataStage(){const e=this._renderer.data();if(null!==e){const t=et(this._duration(),e.seriesLineColor);e.fillColor=t.fillColor,e.strokeColor=t.strokeColor,e.radius=t.radius}}_duration(){return this.animationActive()?performance.now()-this._startTime:2599}} +var it=i(23653),st=i(59100),rt=i(95836),nt=i(9315),ot=i(38712);class at extends ot.SeriesHorizontalLinePaneView{constructor(e){super(e),this._lineRendererData.linestyle=Ae.LINESTYLE_DOTTED}_updateImpl(){this._lineRendererData.visible=!1;const e=this._series.properties().childs();if(!e.showPriceLine.value())return;if(12===e.style.value())return;const t=this._series.lastValueData(void 0,!0);t.noData||(this._lineRendererData.visible=!0,this._lineRendererData.y=t.coordinate,this._lineRendererData.color=this._series.priceLineColor(t.color),this._lineRendererData.linewidth=e.priceLineWidth.value())}}var lt=i(42169),ct=i(52640),ht=i(55257),dt=i(49094),ut=i(84346),pt=i(16282);class _t extends pt.ScaledPaneRenderer{constructor(){super(...arguments),this._data=null,this._barWidth=null}setData(e){this._data=e,this._barWidth=Math.max(1,Math.round((0,dt.optimalHiLoWidth)(e.barSpacing)))}hitTest(e){if(null===this._data||null===this._barWidth)return null;const t=this._data.bars,i=.5*this._data.barSpacing;if(0===t.length)return null;if(e.xt[t.length-1].time+i)return null;const s=t[(0,ht.lowerbound)(t,e.x-i,(e,t)=>e.times.time+i)return null;const r=(0,dt.interactionTolerance)().series+this._barWidth/2,n=Math.min(s.high,s.low),o=Math.max(s.high,s.low),a=this._data.fontSize;return n-r-a<=e.y&&e.y<=n+r||o-r<=e.y&&e.y<=o+r+a?new ut.HitTestResult(ut.HitTestResult.REGULAR):null}_drawImpl(e){if(null===this._data||null===this._barWidth)return;e.save(),e.translate(.5,.5),e.textAlign="center",e.fillStyle=this._data.labelColor,e.font=(0,ct.makeFont)(this._data.fontSize,this._data.font);const t=this._data.bars,i=this._data.inverted;for(let s=0;se.highLabelWidth<=n&&e.lowLabelWidth<=n),a={bars:this._bars,wickVisible:!1,bodyVisible:r.drawBody.value(),barSpacing:n,borderVisible:r.showBorders.value(),barWidth:(0,dt.optimalHiLoWidth)(n),font:St.CHART_FONT_FAMILY, +fontSize:r.fontSize.value(),labelColor:r.labelColor.value(),inverted:s.isInverted(),labelsPadding:3},l=new gt.CompositeRenderer;return this._candlesRenderer.setData(a),l.append(this._candlesRenderer),o&&(this._labelsRenderer.setData(a),l.append(this._labelsRenderer)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&l.append(new ft.SelectionRenderer(this._selectionData)),l}topPixelMargin(){return this._margin()}bottomPixelMargin(){return this._margin()}_margin(){const e=this._source.properties().childs().hiloStyle.childs();return e.showLabels.value()?e.fontSize.value()+6:0}_barUpdater(e,t,i,s){const r=i[2],n=i[3];if(!bt(r)||!bt(n))return!1;if(s.high=s.open=r,s.low=s.close=n,t){const t=s;t.highLabel=e.format(r),t.highLabelWidth=this._getLabelWidth(t.highLabel),t.lowLabel=e.format(n),t.lowLabelWidth=this._getLabelWidth(t.lowLabel)}return!0}_needLabels(){const e=this._model.timeScale().barSpacing();return this._source.properties().childs().hiloStyle.childs().showLabels.value()&&e>5}_getLabelWidth(e){return this._widthsCache.measureText(this._context,e)}}var Ct=i(81688),Pt=i(59153),Tt=i(66919),xt=i(85224),It=i(33837),Mt=i(34041);class Lt extends yt.SeriesBarCandlesPaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.priceScale();if(!i)return null;const s=this._source.properties().childs().haStyle.childs(),r=this._model.timeScale().barSpacing(),n={bars:this._bars,barSpacing:r,bodyVisible:s.drawBody.value(),borderVisible:s.drawBorder.value(),borderColor:s.borderColor.value(),wickColor:s.wickColor.value(),barWidth:(0,dt.optimalBarWidth)(r),wickVisible:s.drawWick.value(),isPriceScaleInverted:i.isInverted()},o=new gt.CompositeRenderer;return o.append(new mt.PaneRendererCandles(n)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&o.append(new ft.SelectionRenderer(this._selectionData)),o}}var At=i(30076),Et=i(35251),kt=i(69147);const Dt=S.enabled("price_scale_always_last_bar_value"),Vt=S.enabled("display_data_mode"),Bt=(r.CheckMobile.any(),!S.enabled("hide_series_legend_item")),Nt=S.enabled("hide_price_scale_global_last_bar_value"),Rt=S.enabled("show_average_close_price_line_and_label"),Ot=(0,a.getLogger)("Chart.Series"),Ft=S.enabled("pre_post_market_sessions"),Wt={countdownEnabled:!0,lastPriceAnimationEnabled:!0};class Ht extends l.PriceDataSource{constructor(e,t,i,r){super(e,"_seriesId"),this.chartWidgetInitialized=new(Ye()),this.requestingIntradayWhenNotSupported=new(Ye()),this.requestingResolutionWhenNotSupported=new(Ye()),this.requestingStyleIsNotSupported=new(Ye()),this.requestingStyleSupportRecovered=new(Ye()),this._paneView=null,this._futureBarsPaneView=null,this._projectionBarsPaneView=null,this._waterlineView=null,this._priceLineView=null,this._gotoDateView=null,this._baseHorizontalLineView=null,this._priceStep=null,this._symbolInfo=null,this._prevSymbolInfo=null,this._isPrePostMarketPricesAvailableProperty=new(u())(!1),this._isBackAdjustmentForbiddenProperty=new(u())(!0), +this._isSettlementAsCloseForbiddenProperty=new(u())(!0),this._highLowPriceCache=new Map,this._averagePriceCache=new Map,this._prevClosePriceAxisView=null,this._priceScaleChanged=new(Ye()),this._priceScaleAboutToBeChanged=new(Ye()),this._onRestarted=new(Ye()),this._onStatusChanged=new(Ye()),this._extendedHoursChanged=new(Ye()),this._tagsChanged=new(Ye()),this._intervalChanged=new(Ye()),this._sessionIdChanged=new(Ye()),this._currency=null,this._unit=null,this._requestMoreDataAvailable=!0,this._lineStyleLastPriceCirclePaneView=new tt(this),this._prevClosePriceLineView=null,this._dataPoweredBy=null,this._loading=!0,this._seriesLoaded=!1,this._status=0,this._symbolResolvingActive=new(z())(!1),this._predictBars=0,this._syncModel=null,this._data=null,this._endOfDataType=null,this._haStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(8,!0))},this._renkoStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(4,!0))},this._pbStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(7,!0))},this._kagiStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(5,!0))},this._pnfStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(6,!0))},this._rangeStyle={studyId:(0,s.ensureNotNull)((0,p.chartStyleStudyId)(11,!0))},this._boxSizeValue=new(z()),this._base=100,this._pointValue=1,this._formattingDeps=null,this._formatter=new m.PriceFormatter(this._base),this._ignoreMinMoveFormatter=new m.PriceFormatter(this._base),this._ignoreMinMovePriceStep=null,this._lastBarCloseTime=null,this._onSessionIdPropertyChangedBound=this._onSessionIdPropertyChanged.bind(this),this._ignoreSessionIdProxyPropertyChanges=!1,this._textSourceIsAlwaysTickerRestrictionEnabled=!1,this._lastPriceAnimationActive=!1,this._currentSession="out_of_session",this._onStyleChanged=new(Ye()),this._preventRestartOnChartStyleChange=!1,this._intervalObj=null,this._obsoleteZOrder=0,this._seriesErrorMessage=null,this._seriesAlwaysFalseHibernatedVW=new(z())(!1),this._styleToRecover=null,this._isActingAsSymbolSource=new(z())(!0),this._seriesSource=new st.SeriesDataSource(e.chartApi(),"s",r);const n=this._seriesSource.dataEvents();n.symbolResolved().subscribe(this,this._onSymbolResolved),n.symbolError().subscribe(this,this._onSymbolError),n.seriesTimeFrame().subscribe(this,this._onSeriesTimeFrame),n.seriesError().subscribe(this,this._onSeriesError),n.loading().subscribe(this,this._onSeriesLoading),n.completed().subscribe(this,this._onSeriesCompleted),n.dataUpdated().subscribe(this,this._onDataUpdated),n.barReceived().subscribe(this,this._onBarReceived),this._quotesProvider=new _e.QuotesProvider,this._quotesProvider.quotesUpdate().subscribe(this,this._onQuotesUpdate);const o=t.childs();if(t.hasChild("extendedHours")){(0,s.ensureDefined)(o.extendedHours).value()&&!t.hasChild("sessionId")&&t.addChild("sessionId",new(u())("extended")),t.removeProperty("extendedHours")}t.hasChild("sessionId")||t.addChild("sessionId",new(u())(_.SubsessionId.Regular)),this._setProperties(t),this._sessionIdProxyProperty=new(u())(o.sessionId.value()), +o.sessionId.subscribe(this,()=>this._updateSessionIdProxyProperty()),this._sessionIdProxyProperty.subscribe(this,this._onSessionIdProxyPropertyChanged),this._symbolTextSourceProxyProperty=new(u()),this._recalcSymbolTextSourceProxyProperty(),o.statusViewStyle.childs().symbolTextSource.subscribe(this,this._recalcSymbolTextSourceProxyProperty),this._symbolTextSourceProxyProperty.subscribe(this,()=>e.lightUpdate()),this._options=(0,ue.merge)((0,ue.clone)(Wt),i),this._prevChartStyle=o.style.value(),this._priceAxisView=new Pe(this,e,{alwaysShowGlobalLast:!Nt,showCountdown:i.countdownEnabled});let a=null;Dt||Nt||(a=new Pe(this,e,{visibleOnHistoryOnly:!0,showSymbolLabel:!1,showCountdown:!1,alwaysShowGlobalLast:!1})),this._priceLinePriceAxisView=new Te.SeriesPriceLineAxisView(this),this._priceLineAxisViews=[this._priceLinePriceAxisView];const l=new xe(this,e,{showCountdown:i.countdownEnabled});this._priceAxisViews=[this._priceAxisView,l],null!==a&&this._priceAxisViews.push(a),this._panePriceAxisView=new Ie.PanePriceAxisView(this._priceAxisView,this,e),this._historyPricePanePriceAxisView=null!==a?new Ie.PanePriceAxisView(a,this,e):null,this._projectionPriceAxisView=new Ie.PanePriceAxisView(l,this,e),this._labelPaneViews=[this._panePriceAxisView,this._projectionPriceAxisView],null!==this._historyPricePanePriceAxisView&&this._labelPaneViews.push(this._historyPricePanePriceAxisView),this._highLowAvgPaneViews=[],this._averagePaneViews=[],Rt&&this._createAverageViews(),this._createHighLowAvgViews(),this._subscribeRestartToSessionIdChange(),o.visible.subscribe(this,this._updateLastPriceAnimationActive),this._updateLastPriceAnimationActive(),this._dataWindowView=new B(this,e),this._legendView=new W(this,e);const c={branding:!1};this._statusView=new M(this,this._model.properties().childs().scalesProperties.childs().textColor,o.statusViewStyle,c),this._marketStatusModel=new Y(this._quotesProvider,o.symbol.listeners()),this._dataUpdatedModeModel=Vt?new he({getter:this.symbolInfo.bind(this),onChange:n.symbolResolved()},{getter:this.status.bind(this),onChange:this._onStatusChanged},o.symbol.listeners()):null,this._dataProblemModel=new pe(this._quotesProvider,o.symbol.listeners()),this._symbolResolvingActive.subscribe(()=>e.realignLineTools()),this._intervalChanged.subscribe(this,()=>e.realignLineTools())}supportsPressedChunks(){return!0}pressedChunks(e,t){return this.data().pressedChunks(e,t)}seriesErrorMessage(){return this._seriesErrorMessage}destroy(){this._quotesProvider.quotesUpdate().unsubscribeAll(this),this._quotesProvider.destroy(),this._model.timeScale().visibleBarsStrictRangeChanged().unsubscribeAll(this),this._unsubscribeRestartToSessionIdChange()}isActingAsSymbolSource(){return this._isActingAsSymbolSource.readonly()}createPaneView(){this._paneView=null,this._projectionBarsPaneView=null,this._waterlineView=null,this._priceLineView=this.hasClosePrice()?new at(this):null;const e=this._properties.childs().style.value();switch(e){case 0:this._paneView=new Tt.SeriesBarsPaneView(this,this._model);break;case 1: +this._paneView=new xt.SeriesCandlesPaneView(this,this._model);break;case 2:this._paneView=new It.SeriesLinePaneView(this,this._model);break;case 3:this._paneView=new Mt.SeriesAreaPaneView(this,this._model);break;case 8:this._paneView=new Lt(this,this._model);break;case 9:this._paneView=new At.SeriesHollowCandlesPaneView(this,this._model);break;case 13:this._paneView=new Pt.SeriesColumnsPaneView(this,this._model);break;case 10:{this._paneView=new Et.SeriesBaselinePaneView(this,this._model);const e=this._properties.childs().baselineStyle.childs();this._waterlineView=new lt.SeriesWaterlinePaneView({paneHeight:()=>this.priceScale().height(),color:()=>e.baselineColor.value(),baseLevelPercentage:()=>e.baseLevelPercentage.value()});break}case 12:this._paneView=new wt(this,this._model)}if(null===this._paneView)throw Error("Unknown chart style assigned: "+e)}properties(){return this._properties}zorder(){return 0}quotesProvider(){return this._quotesProvider}currentSession(){return this._currentSession}getRealVisibleRange(){const e=this.model().timeScale().visibleBarsStrictRange();if(null===e)return null;const t=this.data().search(e.firstBar(),h.PlotRowSearchMode.NearestRight),i=this.data().search(e.lastBar(),h.PlotRowSearchMode.NearestLeft);return null===t||null===i?null:new Ct.BarsRange(t.index,i.index)}syncModel(){if(!this._syncModel){const e=this.symbolInfo(),t=this.interval();if(!e||!t)return null;this._syncModel=new ee(e,t)}return this._syncModel}labelPaneViews(){return this._labelPaneViews}topPaneViews(){if(this._lastPriceAnimationActive){const e=this._lineStyleLastPriceCirclePaneView;return e.animationActive()&&setTimeout(()=>this._model.invalidate(it.InvalidationMask.cursor()),0),e.invalidateStage(),[e]}return null}priceAxisViews(e,t){return e.findTargetPriceAxisViews(this,t,this._priceAxisViews,this._priceLineAxisViews)}clearHighLowPriceCache(){this._highLowPriceCache.clear()}clearAveragePriceCache(){this._averagePriceCache.clear()}priceScaleChanged(){return this._priceScaleChanged}priceScaleAboutToBeChanged(){return this._priceScaleAboutToBeChanged}disconnect(){this._seriesSource.stop(),this.m_symbol=void 0,this._predictBars=0,this._status=0,this._model.isSnapshot()||(this._prevSymbolInfo=null,this._symbolInfo=null)}isStatusBad(){return 12===this.status()||4===this.status()||10===this.status()}isStatusError(){return 12===this.status()}actualSymbol(){return(0,p.actualSymbol)(this.symbolInfo(),this.symbol())}proSymbol(){return(0,p.proSymbol)(this.symbolInfo(),this.symbol())}onStyleChanged(){return this._onStyleChanged}style(){return this.properties().childs().style.value()}setStyle(e){this.setSymbolParams({style:e})}symbolSameAsCurrent(e){return(0,Ke.symbolSameAsCurrent)(e,this.m_symbol,this.symbolInfo())}status(){return this._status}symbolInfo(){return this._symbolInfo}symbolResolved(){return this.dataEvents().symbolResolved()}symbolResolvingActive(){return this._symbolResolvingActive}symbolHibernated(){return this._seriesAlwaysFalseHibernatedVW}formatter(e=!0){return e?this._formatter:this._ignoreMinMoveFormatter} +priceStep(e=!0){return e?this._priceStep:this._ignoreMinMovePriceStep}bars(){return this.data().bars()}nsBars(){return this.data().nsBars()}interval(){return this.properties().childs().interval.value()}setInterval(e){this.setSymbolParams({interval:e})}intervalObj(){const e=this.interval();if(null!==this._intervalObj&&this._intervalObj.resolutionString===e)return this._intervalObj.interval;const t=$.Interval.parse(e);return this._intervalObj={resolutionString:e,interval:t},t}prevClose(){const e=this.priceScale();if(e.isEmpty()||this.data().isEmpty())return null;const t=this.quotes(),i=this.firstValue();if(null===t||null===i)return null;const s=t.prev_close_price;return void 0===s?null:{coordinate:e.priceToCoordinate(s,i),floatCoordinate:e.priceToCoordinate(s,i),formattedPricePercentage:e.formatPricePercentage(s,i,!0),formattedPriceAbsolute:e.formatPriceAbsolute(s),formattedPriceIndexedTo100:e.formatPriceIndexedTo100(s,i)}}hasClosePrice(){return 12!==this.properties().childs().style.value()}lastValueData(e,t,i){const s={noData:!0},r=this.priceScale();if(this.model().timeScale().isEmpty()||r.isEmpty()||this.data().isEmpty())return s;const n=this.model().timeScale().visibleBarsStrictRange(),o=this.firstValue();if(null===n||null===o)return s;let a,l;if(t){const e=this.data().bars().last();if(null===e)return s;a=e.value,l=e.index}else{const e=this.data().bars().search(n.lastBar(),h.PlotRowSearchMode.NearestLeft);if(null===e)return s;a=e.value,l=e.index}const c=void 0!==e?a[e]:this._barFunction(a),d=this.barColorer().barStyle(l,!1),u=r.priceToCoordinate(c,o),p={...r.getFormattedValues(c,o,!0),noData:!1,color:d.barColor,floatCoordinate:u,coordinate:u,index:l};return i&&(p.price=c),p}isDWM(){return this.intervalObj().isDWM()}data(){var e;return null!==(e=this._data)&&void 0!==e?e:this._seriesSource.data()}clearData(){(0,s.assert)(null===this._data,"Cannot clear loaded data"),this._seriesSource.clearData()}nearestValue(e,t,i){const s=this.nearestData(e,i);return s?s.value[t]:void 0}onIntervalChanged(){return this._intervalChanged}onStatusChanged(){return this._onStatusChanged}onRestarted(){return this._onRestarted}onExtendedHoursChanged(){return this._extendedHoursChanged}sessionId(){return this.properties().childs().sessionId.value()}sessionIdChanged(){return this._sessionIdChanged}autoScaleInfo(e,t){const i=this.priceRange(e,t);if(null===this._paneView)return{range:i};const s=this._paneView;return{range:i,topPixelMargin:s.topPixelMargin?s.topPixelMargin():void 0,bottomPixelMargin:s.bottomPixelMargin?s.bottomPixelMargin():void 0}}onChartStyleChanged(){var e;this._updateBarFunction(),!this._preventRestartOnChartStyleChange&&this.isNeedRestart()&&(this.data().clear(),this.model().timeScale().scrollToRealtime(!1),this.restart());const t=this.properties();this._prevChartStyle=t.childs().style.value(),this._onStyleChanged.fire(t.childs().style.value()),this.invalidateBarStylesCache(),this._updateLastPriceAnimationActive(), +(null===(e=this._styleToRecover)||void 0===e?void 0:e.originalStyle)!==this.style()&&(this._styleToRecover=null)}setChartStyleWithIntervalIfNeeded(e,t){const i=this.interval(),s=null!=t?t:(0,nt.getResolutionByChartStyle)(e,i,this._model.defaultResolutions()),r=$.Interval.isEqual(s,i);this.setSymbolParams({interval:r?void 0:s,style:e})}styleStudyInfos(){return{haStyle:this._haStyle,renkoStyle:this._renkoStyle,pbStyle:this._pbStyle,kagiStyle:this._kagiStyle,pnfStyle:this._pnfStyle,rangeStyle:this._rangeStyle}}sessionIdProxyProperty(){return this._sessionIdProxyProperty}symbolTextSourceProxyProperty(){return this._symbolTextSourceProxyProperty}setTextSourceIsAlwaysTickerRestrictionEnabled(e){this._textSourceIsAlwaysTickerRestrictionEnabled=e,this._recalcSymbolTextSourceProxyProperty()}isPrePostMarketPricesAvailableProperty(){return this._isPrePostMarketPricesAvailableProperty}isSettlementAsCloseForbiddenProperty(){return this._isSettlementAsCloseForbiddenProperty}isBackAdjustmentForbiddenProperty(){return this._isBackAdjustmentForbiddenProperty}dataWindowView(){return this._dataWindowView}statusView(){return Bt?this._statusView:null}legendView(){return this._legendView}marketStatusModel(){return this._marketStatusModel}dataUpdatedModeModel(){return this._dataUpdatedModeModel}dataProblemModel(){return this._dataProblemModel}quotes(){return this.data().isEmpty()?null:this._quotesProvider.quotes()}base(){return this._base}pointValue(){return this._pointValue}barCloseTime(){return this._lastBarCloseTime}priceSource(){let e=null;const t=this._properties.childs();switch(t.style.value()){case 2:e=t.lineStyle.childs().priceSource.value();break;case 3:e=t.areaStyle.childs().priceSource.value();break;case 10:e=t.baselineStyle.childs().priceSource.value();break;case 13:e=t.columnStyle.childs().priceSource.value()}return e}updateAllViews(e){var t,i,s,r,n,o,a;null===(t=this._paneView)||void 0===t||t.update(e),this._dataWindowView.update(),this._legendView.update(),this._statusView.update(),this._averagePaneViews.forEach(t=>t.update(e)),this._highLowAvgPaneViews.forEach(t=>t.update(e)),this._labelPaneViews.forEach(t=>t.update(e)),this._priceAxisViews.forEach(t=>t.update(e)),this._priceLineAxisViews.forEach(t=>t.update(e)),null===(i=this._futureBarsPaneView)||void 0===i||i.update(e),null===(s=this._projectionBarsPaneView)||void 0===s||s.update(e),null===(r=this._waterlineView)||void 0===r||r.update(e),null===(n=this._priceLineView)||void 0===n||n.update(e),null===(o=this._gotoDateView)||void 0===o||o.update(e),null===(a=this._baseHorizontalLineView)||void 0===a||a.update(e);const l=this._model.activeStrategySource().value();null==l||l.updateAllViews(e),this._lineStyleLastPriceCirclePaneView.update(e)}barFunction(){return this._barFunction}setSymbolParams(e){const{symbol:t,interval:i,currency:s,unit:r,style:n}=e,o=this.properties().childs(),a=void 0!==t&&t!==o.symbol.value(),l=void 0!==s&&s!==o.currencyId.value(),c=void 0!==r&&r!==o.unitId.value(),h=void 0!==i&&i!==o.interval.value(),d=void 0!==n&&n!==o.style.value() +;a&&o.symbol.setValueSilently(t),l&&o.currencyId.setValueSilently(s),c&&o.unitId.setValueSilently(r),h&&o.interval.setValueSilently(i),d&&o.style.setValueSilently(n),a&&o.symbol.listeners().fire(o.symbol),l&&o.currencyId.listeners().fire(o.currencyId),c&&o.unitId.listeners().fire(o.unitId),h&&o.interval.listeners().fire(o.interval),d&&(a||l||c||h?(this._preventRestartOnChartStyleChange=!0,o.style.listeners().fire(o.style),this._preventRestartOnChartStyleChange=!1):o.style.listeners().fire(o.style))}setSymbol(e){this.setSymbolParams({symbol:e})}currency(){return this.properties().childs().currencyId.value()||null}setCurrency(e){this.setSymbolParams({currency:e})}isConvertedToOtherCurrency(){return(0,p.isConvertedToOtherCurrency)(this.symbolInfo())}unit(){return this.properties().childs().unitId.value()||null}setUnit(e){this.setSymbolParams({unit:e})}isConvertedToOtherUnit(){return(0,p.isConvertedToOtherUnit)(this.symbolInfo(),this._model.unitConversionEnabled())}symbolSource(){return this}title(){return this.symbolTitle()}name(){return this.symbolTitle()}symbolTitle(e,t,i="exchange"){let s=this.properties().childs().symbol.value();const r=this.symbolInfo();if(null!==r){const{type:t}=r;s=(0,p.symbolTitle)(r,e,"forex"===t?"exchange":i)}return t?s:`${s}, ${(0,w.translatedIntervalString)(this.properties().childs().interval.value())}`}setObsoleteZOrder(e){this._obsoleteZOrder=e}obsoleteZOrder(){return this._obsoleteZOrder}valuesProvider(){return new R(this,this.model())}statusProvider(e){return new I(this,this._model.properties().childs().scalesProperties.childs().textColor,this.properties().childs().statusViewStyle,e)}open(e){const t=this.data().valueAt(e);return t&&t[1]}high(e){const t=this.data().valueAt(e);return t&&t[2]}low(e){const t=this.data().valueAt(e);return t&&t[3]}close(e){const t=this.data().valueAt(e);return t&&t[4]}moveItem(e,t,i){if(10===this.style()&&0===t){const t=this.priceScale(),i=this.properties().childs().baselineStyle,s=t.height(),r=100-e.y/s*100,n=r<0?0:Math.round(10*r)/10;i.childs().baseLevelPercentage.setValue(Math.max(Math.min(n,100),0))}}requestMoreDataAvailable(){return this._requestMoreDataAvailable}endOfData(){return null!==this._endOfDataType}dataPoweredBy(){return null}boxSizeValue(){return this._boxSizeValue}isUserDeletable(){return!1}changeSymbol(){this.setSymbolIntervalCurrencyDelayed(),this.model().checkLineToolSelection()}changeInterval(){this.setSymbolIntervalCurrencyDelayed()}changeTimeFrame(){(0,n.trackEvent)("GUI","Change timeframe")}onTagsChanged(){return this._tagsChanged}state(e){const t=this.obsoleteZOrder();let i={type:"MainSeries",id:this.id(),zorder:t,haStyle:this._haStyle,renkoStyle:this._renkoStyle,pbStyle:this._pbStyle,kagiStyle:this._kagiStyle,pnfStyle:this._pnfStyle,rangeStyle:this._rangeStyle};const s=this.properties().state();return this._symbolInfo&&(this._symbolInfo.ticker&&(s.symbol=this._symbolInfo.ticker),i.formattingDeps={format:this._symbolInfo.format,pricescale:this._symbolInfo.pricescale,minmov:this._symbolInfo.minmov,fractional:this._symbolInfo.fractional, +minmove2:this._symbolInfo.minmove2}),this._model.unitConversionEnabled()||(s.unitId=null),i.state=s,e&&(i={...i,bars:this._barsState(this.bars()),nsBars:this._barsState(this.nsBars()),symbolInfo:this._symbolInfo,rtPrice:this.data().lastProjectionPrice,boxSize:this.data().boxSize,reversalAmount:this.data().reversalAmount}),i}restoreState(e,t){if(t&&this._setStatus(5),!this._model.unitConversionEnabled()&&e.state&&delete e.state.unitId,this._properties.mergeAndFire(e.state),this._properties.hasChild("esdBreaksStyle")&&this._properties.removeProperty("esdBreaksStyle"),this._prevChartStyle=this.properties().childs().style.value(),this.createPaneView(),t){const t=e;this.restoreData(t.bars,t.nsBars,t.symbolInfo,t.rtPrice,t.boxSize,t.reversalAmount)}e.formattingDeps&&(this._formattingDeps=e.formattingDeps,this._recreatePriceFormattingDependencies())}restoreData(e,t,i,s,r,n){this._status=5,this._data=new c.SeriesData,this._data.bars().restoreState(e),this._data.nsBars().restoreState(t),this._updateSymbolInfo(i,!1),this._data.lastProjectionPrice=s,this._data.boxSize=r;const o=this.properties().childs();r||(6===o.style.value()?this._data.boxSize=o.pnfStyle.childs().inputs.childs().boxSize.value():4===o.style.value()&&(this._data.boxSize=o.renkoStyle.childs().inputs.childs().boxSize.value())),this._data.reversalAmount=n,n||5===o.style.value()&&(this._data.reversalAmount=o.kagiStyle.childs().inputs.childs().reversalAmount.value()),this._loading=!1}_barsState(e){const t=e.state();return t.data.forEach(e=>e.value.splice(7,1)),t}_updateBarFunction(){if(12===this.properties().childs().style.value())this._barFunction=(0,c.barFunction)("low");else{const e=this.priceSource()||"close";this._barFunction=(0,c.barFunction)(e)}}_setProperties(e){e.hasChild("timeframe")||e.merge({timeframe:""}),e.hasChild("shortName")||e.merge({shortName:""}),e.hasChild("currencyId")||e.addChild("currencyId",new(u())(null)),e.hasChild("unitId")||e.addChild("unitId",new(u())(null)),this._properties=e;const t=e.childs();t.symbol.listeners().subscribe(this,this.changeSymbol),t.interval.listeners().subscribe(this,this.changeInterval),t.currencyId.listeners().subscribe(this,this._changeCurrency),t.unitId.listeners().subscribe(this,this._changeUnit),t.timeframe.listeners().subscribe(this,this.changeTimeFrame),e.subscribe(this,this._onPropertiesChanged)}_updateSessionIdProxyProperty(e){const t=this._properties.childs().sessionId.value();let i=t;if(e){const e=this.symbolInfo();null!==e&&(i=e.subsession_id||t)}this._ignoreSessionIdProxyPropertyChanges=!0,this._sessionIdProxyProperty.setValue(i),this._ignoreSessionIdProxyPropertyChanges=!1}_onSessionIdProxyPropertyChanged(){this._ignoreSessionIdProxyPropertyChanges||this._properties.childs().sessionId.setValue(this._sessionIdProxyProperty.value()),this._updateLastPriceAnimationActive()}_onSymbolResolved(e){var t;const i=this.properties().childs();S.enabled("charting_library_single_symbol_request")||(this.m_symbol=null!==(t=(0,p.extractSymbolNameFromSymbolInfo)(e,(0, +p.symbolForApi)(e,i.symbol.value())))&&void 0!==t?t:i.symbol.value()),this._seriesErrorMessage=null,this._updateSymbolInfo(e,!1),this._model.updateSource(this),this._model.onWidget()||((0,n.trackEvent)("Symbol",e.listed_exchange,e.name),(0,n.trackEvent)("Symbol Type",e.type,e.listed_exchange));const s=e.minmov/e.pricescale;4===i.style.value()&&i.renkoStyle.childs().inputs.childs().boxSize.value()s(0)),o=Oe(e,t,{label:Re,labelVisible:r.highLowPriceLabelsVisible,lineVisible:r.highLowPriceLinesVisible,lineColor:r.highLowPriceLinesColor,lineWidth:r.highLowPriceLinesWidth},()=>s(1));return{paneViews:[n.paneView,o.paneView],panePriceAxisViews:[n.panePriceAxisView,o.panePriceAxisView],priceAxisViews:[n.priceAxisView,o.priceAxisView],priceLineAxisViews:[n.priceLineAxisView,o.priceLineAxisView]}}(this._model,this,e,t);this._highLowAvgPaneViews.push(...i.paneViews),this._labelPaneViews.push(...i.panePriceAxisViews),this._priceAxisViews.push(...i.priceAxisViews),this._priceLineAxisViews.push(...i.priceLineAxisViews)}_createAverageViews(){const e=this.properties().childs().highLowAvgPrice,t=this._getAveragePrice.bind(this),i=Ge(this._model,this,e,t);this._averagePaneViews.push(...i.paneViews),this._labelPaneViews.push(...i.panePriceAxisViews),this._priceAxisViews.push(...i.priceAxisViews),this._priceLineAxisViews.push(...i.priceLineAxisViews)}_getHighLowPrice(e){if(!this._highLowPriceCache.has(e)){const e=this._model.timeScale().visibleBarsStrictRange();if(null===e)return null;const t=function(e,t,i){return e.minMaxOnRangeCached(t,i,[{name:"low",offset:0},{name:"high",offset:0}])}(this._model.mainSeries().bars(),e.firstBar(),e.lastBar());if(null===t)return null;this._highLowPriceCache.set(1,t.min),this._highLowPriceCache.set(0,t.max)}return this._highLowPriceCache.get(e)}_getAveragePrice(e){if(!this._averagePriceCache.has(e)){const e=this._model.timeScale().visibleBarsStrictRange();if(null===e)return null;const t=function(e,t,i){0;const s=(0,c.barFunction)("close");let r=0,n=0;for(let o=t;o<=i;o++){const t=e.valueAt(o);null!==t&&(r+=s(t),n++)} +return n?r/n:null}(this._model.mainSeries().bars(),e.firstBar(),e.lastBar());if(null===t)return null;this._averagePriceCache.set(0,t)}return this._averagePriceCache.get(e)}_onSessionIdPropertyChanged(){this._sessionIdChanged.fire(),this.isDWM()||(this.restart(),this._updateLastPriceAnimationActive())}_subscribeRestartToSessionIdChange(){this.properties().childs().sessionId.subscribe(this,this._onSessionIdPropertyChangedBound)}_unsubscribeRestartToSessionIdChange(){this.properties().childs().sessionId.unsubscribe(this,this._onSessionIdPropertyChangedBound)}_updateLastPriceAnimationActive(){if(!this._options.lastPriceAnimationEnabled)return;const e=this._lastPriceAnimationActive,t=this.properties().childs(),i=t.style.value();if(this._model.isSnapshot()||!t.visible.value()||3!==i&&10!==i&&2!==i)this._lastPriceAnimationActive=!1;else{const e=this.currentSession(),t=!(0,p.isRegularSessionId)(this.sessionIdProxyProperty().value())&&!this.isDWM();this._lastPriceAnimationActive="market"===e||t&&("pre_market"===e||"post_market"===e)}this._lastPriceAnimationActive&&e!==this._lastPriceAnimationActive&&this.model().invalidate(it.InvalidationMask.cursor())}_onPropertiesChanged(e){const t=this._properties.childs();e!==t.symbol&&e!==t.interval&&e!==t.timeframe&&(this._tagsChanged.fire(),this.createPaneView(),this.updateAllViews((0,ye.dataSourceChangeEvent)(this._id)),this.model().updateSource(this),(0,o.emit)("series_properties_changed",this._id))}_recalcSymbolTextSourceProxyProperty(){this._textSourceIsAlwaysTickerRestrictionEnabled?this._symbolTextSourceProxyProperty.setValue("ticker"):this._symbolTextSourceProxyProperty.setValue(this._properties.childs().statusViewStyle.childs().symbolTextSource.value())}}},16654:(e,t,i)=>{"use strict";i.r(t),i.d(t,{STATUS_OFFLINE:()=>s,STATUS_RESOLVING:()=>r,STATUS_LOADING:()=>n,STATUS_READY:()=>o,STATUS_INVALID_SYMBOL:()=>a,STATUS_SNAPSHOT:()=>l,STATUS_EOD:()=>c,STATUS_PULSE:()=>h,STATUS_DELAYED:()=>d,STATUS_DELAYED_STREAMING:()=>u,STATUS_NO_BARS:()=>p,STATUS_REPLAY:()=>_,STATUS_ERROR:()=>m,SERIES_STATUS_TEXT:()=>g,STYLE_LINE_TYPE_MARKERS:()=>f,STYLE_LINE_TYPE_STEP:()=>v,STYLE_LINE_TYPE_SIMPLE:()=>S,STYLE_BARS:()=>y,STYLE_CANDLES:()=>b,STYLE_LINE:()=>w,STYLE_AREA:()=>C,STYLE_RENKO:()=>P,STYLE_KAGI:()=>T,STYLE_PNF:()=>x,STYLE_PB:()=>I,STYLE_HEIKEN_ASHI:()=>M,STYLE_HOLLOW_CANDLES:()=>L,STYLE_BASELINE:()=>A,STYLE_RANGE:()=>E,STYLE_HILO:()=>k,STYLE_COLUMNS:()=>D,STYLE_SHORT_NAMES:()=>V,SYMBOL_STRING_DATA:()=>B});const s=0,r=1,n=2,o=3,a=4,l=5,c=6,h=7,d=8,u=9,p=10,_=11,m=12,g={[s]:"connecting",[r]:"loading",[n]:"loading",[o]:"realtime",[a]:"invalid",[l]:"snapshot",[c]:"endofday",[h]:"endofday",[d]:"delayed",[u]:"delayed_streaming",[p]:"forbidden",[_]:"replay",[m]:"error"},f=0,v=1,S=2,y=0,b=1,w=2,C=3,P=4,T=5,x=6,I=7,M=8,L=9,A=10,E=11,k=12,D=13,V={0:"bar",1:"candle",9:"hollowCandle",2:"line",3:"area",4:"renko",7:"pb",5:"kagi",6:"pnf",8:"ha",10:"baseline",11:"range",12:"hilo",13:"column"},B={4:{type:"BarSetRenko@tv-prostudies",basicStudyVersion:40},7:{type:"BarSetPriceBreak@tv-prostudies", +basicStudyVersion:34},5:{type:"BarSetKagi@tv-prostudies",basicStudyVersion:34},6:{type:"BarSetPnF@tv-prostudies",basicStudyVersion:34},8:{type:"BarSetHeikenAshi@tv-basicstudies",basicStudyVersion:60},11:{type:"BarSetRange@tv-basicstudies",basicStudyVersion:72}}},63948:(e,t,i)=>{"use strict";i.d(t,{seriesPlotFunctionMap:()=>c,barFunction:()=>h,SeriesData:()=>p});var s,r=i(88537),n=i(71053),o=i(55257);!function(e){e[e.FromLeft=-1]="FromLeft",e[e.FromRight=1]="FromRight"}(s||(s={}));const a={open:e=>e[1],high:e=>e[2],low:e=>e[3],close:e=>e[4],hl2:e=>(e[2]+e[3])/2,hlc3:e=>(e[2]+e[3]+e[4])/3,ohlc4:e=>(e[1]+e[2]+e[3]+e[4])/4},l=["open","high","low","close","hl2","hlc3","ohlc4"];function c(){const e=new Map;return l.forEach((t,i)=>{e.set(t,h(t))}),e}function h(e){return a[e]}function d(e,t){return null==e[t]}const u=[{barsToMerge:10,forBarspacingLargerThen:.03},{barsToMerge:30,forBarspacingLargerThen:.01},{barsToMerge:100,forBarspacingLargerThen:.003},{barsToMerge:500,forBarspacingLargerThen:0}];class p{constructor(){this._pressedChunks={chunks:new Map,priceSource:"uninitialized"},this.m_bars=new n.PlotList(c(),d),this.m_nsBars=new n.PlotList(c(),d),this._clearPressedChunks()}bars(){return this.m_bars}nsBars(){return this.m_nsBars}pressedChunks(e,t){if(t!==this._pressedChunks.priceSource){this._pressedChunks.priceSource=t;const e=this.m_bars.first();e&&(this._clearPressedChunks(),this._rebuildPressedChunks(e))}const i=(0,r.ensureDefined)(u.find(t=>t.forBarspacingLargerThen<=e));return(0,r.ensureDefined)(this._pressedChunks.chunks.get(i.barsToMerge))}mergeRegularBars(e){const t=this.m_bars.size(),i=this.m_bars.merge(e);return i&&"uninitialized"!==this._pressedChunks.priceSource&&(t===this.m_bars.size()&&i.index===this.m_bars.lastIndex()?this._updateLatestChunks():this._rebuildPressedChunks(i)),i}size(){return this.m_bars.size()+this.m_nsBars.size()}each(e){this.m_bars.each(e),this.m_nsBars.each(e)}clear(){this.m_bars.clear(),this.m_nsBars.clear(),this.lastProjectionPrice=void 0,this._clearPressedChunks()}isEmpty(){return this.m_bars.isEmpty()&&this.m_nsBars.isEmpty()}first(){return this.m_bars.isEmpty()?this.m_nsBars.first():this.m_bars.first()}last(){return this.m_nsBars.isEmpty()?this.m_bars.last():this.m_nsBars.last()}search(e,t){return this.nsBars().isEmpty()?this.bars().search(e,t):this.bars().isEmpty()||(0,r.ensureNotNull)(this.nsBars().firstIndex())<=e?this.nsBars().search(e,t):this.bars().search(e,t)}valueAt(e){const t=this.search(e);return null!==t?t.value:null}plotValueToTimePointIndex(e,t,i){if(i===s.FromRight){const i=(i,s)=>{const r=s[t];return null!=r&&e>=r},s=this.m_bars.findLast(i);if(null!==s)return s.index;const r=this.m_nsBars.findLast(i);return null!==r?r.index:this.m_bars.firstIndex()}if(i===s.FromLeft){const i=(i,s)=>{const r=s[t];return null!=r&&e<=r},s=this.m_bars.findFirst(i);if(null!==s)return s.index;const r=this.m_nsBars.findFirst(i);return null!==r?r.index:this.m_bars.lastIndex()}throw new Error("plotValueToTimePointIndex: unsupported search mode")}moveData(e){this.m_bars.move(e), +this.m_nsBars.move(e),this.m_bars.size()>0&&this._rebuildPressedChunks((0,r.ensureNotNull)(this.m_bars.first()))}_rebuildPressedChunks(e){const t=this._pressedChunks.priceSource;if("uninitialized"===t)return;const i=e.index,s=a[t],n=(e,t,i)=>{let r=null;for(;e.hasNext();){const n=e.next(),o=s(n.value);r&&n.index-r.startTime>=i.barsToMerge&&(t.push(r),r=null),r?(r.endTime=n.index,r.high=Math.max(r.high,o),r.low=Math.min(r.low,o),r.close=o):r={startTime:n.index,endTime:n.index,open:o,high:o,low:o,close:o}}r&&t.push(r)};u.forEach(e=>{const t=(0,r.ensureDefined)(this._pressedChunks.chunks.get(e.barsToMerge)),s=(0,o.lowerbound)(t,i,(e,t)=>e.endTime0){const i=t[0].startTime-1,s=(0,r.ensureNotNull)(this.m_bars.firstIndex()),o=this.m_bars.rangeIterator(s,i),a=[];n(o,a,e);const l=a.concat(t);this._pressedChunks.chunks.set(e.barsToMerge,l)}else{const i=(0,r.ensureNotNull)(this.m_bars.lastIndex());t.splice(s);let o=(0,r.ensureNotNull)(this.m_bars.firstIndex());t.length&&(o=t[t.length-1].endTime+1);const a=this.m_bars.rangeIterator(o,i);n(a,t,e)}})}_updateLatestChunks(){const e=(0,r.ensureNotNull)(this.m_bars.lastIndex());u.forEach(t=>{const i=(0,r.ensureDefined)(this._pressedChunks.chunks.get(t.barsToMerge)),s=this.m_bars.rangeIterator(e,e).next(),n=s.value[4],o=i[i.length-1];o.high=Math.max(o.high,n),o.low=Math.min(o.low,n),o.close=n,o.endTime=s.index})}_clearPressedChunks(){u.forEach(e=>this._pressedChunks.chunks.set(e.barsToMerge,[]))}}},34081:(e,t,i)=>{"use strict";i.d(t,{SeriesTimeRangeVolumeCalculator:()=>s});class s{constructor(e){this._value=null,this._series=e,this._series.dataEvents().dataUpdated().subscribe(this,this._onSeriesUpdated)}destroy(){this._series.dataEvents().dataUpdated().unsubscribeAll(this)}volume(e,t){if(null!==this._value&&this._value.from===e&&this._value.to===t)return this._value.value;let i=0;const s=this._series.data().bars(),r=s.firstIndex(),n=s.lastIndex();if(null!==r&&en&&t>n)i=NaN;else{const s=this._series.data().bars().rangeIterator(Math.min(e,t),Math.max(e,t));for(;s.hasNext();){const e=s.next().value[5];if(void 0===e){i=NaN;break}i+=e}}return this._value={from:e,to:t,value:i},i}_onSeriesUpdated(e,t){if(null===this._value)return;if(t)return void(this._value=null);const i=this._series.data().bars().lastIndex();(null===i||i<=this._value.to)&&(this._value=null)}}},37667:(e,t,i)=>{"use strict";i.r(t),i.d(t,{isRequiringRestartSeriesStyles:()=>y,isRangeBasedStyle:()=>b,isRangeStyle:()=>w,isTimeBasedStyle:()=>C,isValidStyle:()=>P,isSingleValueBasedStyle:()=>T,setLastUsedStyle:()=>x,getLastUsedStyle:()=>I,getLastUsedSingleValueBasedStyle:()=>M,getDefaultStyle:()=>L,getChartStyleByResolution:()=>A,chartStyleStudyId:()=>E,preparePriceAxisProperties:()=>k,hasProjection:()=>V,isPriceSourceStyle:()=>B,getSeriesPriceFormattingState:()=>N,createSeriesFormatter:()=>R,symbolCurrencyConvertible:()=>O,symbolCurrency:()=>F,symbolOriginalCurrency:()=>W,symbolBaseCurrency:()=>H,isConvertedToOtherCurrency:()=>z,symbolUnitConvertible:()=>U,symbolUnit:()=>j, +symbolOriginalUnit:()=>G,isConvertedToOtherUnit:()=>q,symbolUnitConvertibleGroupsIfExist:()=>Y,symbolCurrentContract:()=>K,symbolHasPreOrPostMarket:()=>$,symbolHasSeveralSessions:()=>X,symbolHasEconomicEvents:()=>Z,extractSymbolNameFromSymbolInfo:()=>J,symbolTitle:()=>Q,displayedSymbolName:()=>ee,displayedSymbolExchange:()=>te,actualSymbol:()=>ie,proSymbol:()=>se,symbolForApi:()=>re,isRegularSessionId:()=>ne,isCloseBasedSymbol:()=>oe,isMeasureUnitSymbol:()=>ae,measureUnitId:()=>le,hasVolume:()=>ce,isEconomicSymbol:()=>he,getStudySymbolExchange:()=>de,isFutureContinuousSymbolWithBackajustment:()=>ue,isCryptoSymbol:()=>pe});var s=i(56840),r=i(16654),n=i(29823),o=i(97098),a=i(67337),l=i(88537),c=i(67802),h=i(26811);const d=a.enabled("pay_attention_to_ticker_not_symbol"),u=a.enabled("uppercase_instrument_names"),p=a.enabled("charting_library_single_symbol_request"),_=a.enabled("use_ticker_on_symbol_info_update"),m=a.enabled("hide_object_tree_and_price_scale_exchange_label"),g=[4,5,6,7,8],f=[4,5,6,7,11],v=[0,1,9,2,3,10,8,13],S=[2,10,3,13];function y(e){return-1!==g.indexOf(e)}function b(e){return-1!==f.indexOf(e)}function w(e){return 11===e}function C(e){return-1!==v.indexOf(e)}function P(e){return b(e)||C(e)}function T(e){switch(e){case 3:case 10:case 2:case 13:return!0;default:return!1}}function x(e,t){P(e)&&(11!==e&&s.setValue("chart.lastUsedStyle",e),oe(t)&&T(e)&&s.setValue("chart.lastUsedSingleValueBasedStyle",e))}function I(){const e=s.getInt("chart.lastUsedStyle");return void 0===e?1:e}function M(){const e=s.getInt("chart.lastUsedSingleValueBasedStyle");return void 0===e?2:e}function L(e){return e?11:1}function A(e,t){const i=w(t),s=n.Interval.isRange(e);return!i&&s?L(!0):i&&!s?L(!1):t}function E(e,t){const i=r.SYMBOL_STRING_DATA[e];return void 0===i?null:t?`${i.type}-${i.basicStudyVersion}`:i.type}function k(e){const t=e.priceAxisProperties,i=t.lockScale.value(),s=6===e.style.value();(s||i)&&(t.log.setValue(!1),t.percentage.setValue(!1)),t.logDisabled.setValue(!(!s&&!i)),t.percentageDisabled.setValue(!(!s&&!i))}const D=[4,7,5,6];function V(e){return-1!==D.indexOf(e)}function B(e){return S.includes(e)}function N(e,t="default",i=!1){let s,r,n=100,o=1;if("default"===t)null!=e&&(n=e.pricescale,o=e.minmov,s=e.fractional,r=e.minmove2);else{let e=t.split(",");3!==e.length&&(e=["100","1","false"]),n=parseInt(e[0]),o=parseInt(e[1]),s="true"===e[2]}return i&&(o=1),{priceScale:n,minMove:o,fractional:s,minMove2:r}}function R(e,t,i=!1){if("default"===t&&null!=e){const t=e.formatter||e.format;if("volume"===t)return new c.VolumeFormatter(2);if("percent"===t)return new h.PercentageFormatter(e.pricescale)}const{priceScale:s,minMove:r,fractional:n,minMove2:a}=N(e,t,i);return new o.PriceFormatter(s,r,n,a)}function O(e){return null!==e&&"spread"!==e.type}function F(e,t,i){if(null===e)return null;const s=!t||i?e.currency_id:e.currency_code;return void 0===s||""===s?null:s}function W(e,t){const i=t?e.original_currency_code:e.original_currency_id;return null!=i?i:F(e,t)}function H(e){return e.base_currency_id||null}function z(e){ +return!(null===e||!O(e))&&(void 0!==e.original_currency_id&&e.original_currency_id!==e.currency_id)}function U(e,t){return t&&null!==e&&"spread"!==e.type}function j(e,t){if(null===e||!t)return null;const i=e.unit_id;return void 0===i||""===i?null:i}function G(e,t){return t?e.original_unit_id||j(e,t):null}function q(e,t){return!(null===e||!U(e,t))&&(void 0!==e.original_unit_id&&e.original_unit_id!==e.unit_id)}function Y(e,t){return null!==e&&U(e,t)?e.unit_conversion_types||null:[]}function K(e){return"futures"===e.type&&e.front_contract||null}function $(e){return null!==e&&void 0!==e.subsessions&&e.subsessions.some(e=>"premarket"===e.id||"postmarket"===e.id)}function X(e){return null!==e&&void 0!==e.subsessions&&e.subsessions.filter(e=>!e.private).length>1}function Z(e){return null!==e&&("forex"===e.type||"cfd"===e.type||pe(e))}function J(e,t){let i=e&&(e.pro_name||e.full_name||e.name);return p&&t?i=t:_&&e&&e.ticker&&(i=e.ticker),u&&i&&(i=i.toUpperCase()),i}function Q(e,t,i="exchange"){return t||m?e.name:`${e.name}, ${e[i]}`}function ee(e){let t=e&&(K(e)||e.name)||"";return t.length>40&&(t=t.substring(0,37)+"..."),t.trim()}function te(e){const t=e?e.exchange:"";return u?t.toUpperCase():t}function ie(e,t){return null!==e?e.full_name:t}function se(e,t){return null!==e?e.pro_name:t}function re(e,t){return d&&e?(0,l.ensureDefined)(e.ticker):ie(e,t)}function ne(e){return"regular"===e||"us_regular"===e}function oe(e){return"c"===(null==e?void 0:e.visible_plots_set)}function ae(e){return null!==e&&("unit"===e.measure&&null!==le(e))}function le(e){var t;return null!==(t=null==e?void 0:e.value_unit_id)&&void 0!==t?t:null}function ce(e){return void 0!==e.visible_plots_set?"ohlcv"===e.visible_plots_set:!e.has_no_volume}function he(e){return null!==e&&"economic"===e.type}function de(e){return he(e)&&e.source?e.source:e.exchange&&0!==e.exchange.length?e.exchange:void 0}function ue(e){var t;return null!==e&&"futures"===e.type&&Boolean(e.has_backadjustment&&(null===(t=e.typespecs)||void 0===t?void 0:t.includes("continuous")))}function pe(e){var t;return(null===(t=e.typespecs)||void 0===t?void 0:t.includes("crypto"))||"crypto"===e.type||"bitcoin"===e.type}},56972:(e,t,i)=>{"use strict";var s=i(2872),r=i(2015),n=i(69927).PriceRange;TradingView.DEFAULT_BAR_COUNT=300,TradingView.TIME_PLOT=0,TradingView.OPEN_PLOT=1,TradingView.HIGH_PLOT=2,TradingView.LOW_PLOT=3,TradingView.CLOSE_PLOT=4,TradingView.ADT_PLOT=6,TradingView.STYLE_PLOT=7;var o=i(88537).ensureNotNull,a=i(10590).SeriesBase,l=i(67337);const{dataSourceChangeEvent:c}=i(33291);var h=i(33981).SeriesBarColorer,d=i(71053),u=d.PlotRowSearchMode,p=d.mergeMinMax,_=(i(51768).trackEvent,i(98125).getLogger("Chart.Series")),m=i(16654),g=i(37667),f=i(9315).getServerInterval,v=i(29823).Interval,S=i(73532).SeriesHorizontalBaseLinePaneView,y=i(15840).deepExtend,b=i(19234).encodeExtendedSymbolOrGetSimpleSymbolString,w=i(76422),C=i(73383).TIMEFRAMETYPE,P=i(23653).InvalidationMask,T=i(37667).isSingleValueBasedStyle;const x=l.enabled("pre_post_market_sessions");class I extends a{ +constructor(e,t,i,r){t.removeProperty("currencyId"),super(e,t,i,r),this._symbolIntervalChanged=new s,this.requestingIntradayWhenNotSupported=new s,this.requestingResolutionWhenNotSupported=new s,this._onInReplayStateChanged=new s,this._replayExitedDueUnsupportedInterval=new s,this._replayExitedDueUnavailableForUserInterval=new s,this._onTimeFrameApplied=new s,this._chartApi=e._chartApi,this.createPaneView(),this._replaySubscriber=null,this._isReplayResolutionAvailableForUser=null,this._properties.addExclusion&&(this._properties.addExclusion("visible"),this._properties.addExclusion("currencyId")),this._futureBarsPaneView=null,this.properties().minTick.listeners().subscribe(this,I.prototype._recreateFormatter);var n=this;this.properties().minTick.listeners().subscribe(null,(function(){n._model.fullUpdate()})),this._priceLineView=null,this._baseHorizontalLineView=new S(this),this._gotoDateResultCleared=!1,this._gotoDateView=null,this.bindStyleChange(),this.bindJapChartsInputs(),this._createIsDWMProperty(),this._symbolIntervalChanged.subscribe(this,this._checkInterval),this.properties().showCountdown.listeners().subscribe(this,I.prototype._onChangeShowCountdown),this._onChangeShowCountdown(this.properties().showCountdown),this._recreatePriceFormattingDependencies(),this.properties().lineStyle.priceSource.listeners().subscribe(this,this._updateBarFunction),this.properties().areaStyle.priceSource.listeners().subscribe(this,this._updateBarFunction),this.properties().baselineStyle.priceSource.listeners().subscribe(this,this._updateBarFunction),this.properties().columnStyle.priceSource.listeners().subscribe(this,this._updateBarFunction),this._updateBarFunction()}isLoading(){return this._loading}isSymbolInvalid(){return this._status===I.STATUS_INVALID_SYMBOL}styleStudyInfo(e){return this.styleStudyInfos()[e]}priceLineColor(e){return this.properties().priceLineColor.value()||e}serverTimeOffset(){return this._chartApi.serverTimeOffset()}_onChangeShowCountdown(e){var t=this;e.value()?this._countdownUpdateTimer=this._model.setInterval((function(){t._priceAxisView.updateCountdown()}),500):(this._model.clearInterval(this._countdownUpdateTimer),delete this._countdownUpdateTimer)}_createIsDWMProperty(){this._isDWMProperty=new r(this.isDWM()),this._onRestarted.subscribe(this,(function(){this._isDWMProperty.setValue(this.isDWM())}))}isDWMProperty(){return this._isDWMProperty}fixLastBar(e){0}isPulse(){return this._symbolInfo&&this._symbolInfo.resolutions.length>0}onSymbolIntervalChanged(){return this._symbolIntervalChanged}_clearStylePlot(e,t){if(0!==e.size()){var i=t||o(e.firstIndex()),s=o(e.lastIndex())+1;e.range(i,s).each((function(e,t){t[TradingView.STYLE_PLOT]=null}))}}invalidateBarStylesCache(e){_.logDebug("Invalidate style cache starting from "+e),this._clearStylePlot(this.bars(),e),this._clearStylePlot(this.nsBars())}invalidateBarColorerCache(){delete this._barColorerCache,this.invalidateBarStylesCache()}barColorer(){if(this._barColorerCache)return this._barColorerCache +;for(var e=null,t=this._model.dataSources(),i=t.length-1;i>=0;i--){var s=t[i];if(s.metaInfo&&TradingView.isInherited(s.constructor,TradingView.Study)&&s.hasBarColorer()&&!s.isSourceHidden()){var r=s.barColorer();null===e?e=r:e.pushBackBarColorer(r)}}return null===e?e=new h(this):e.pushBackBarColorer(new h(this)),this._barColorerCache=e,this._barColorerCache}alertCreationAvailable(){const e=this.symbolInfo();return this.hasStateForAlert()&&e&&!g.isEconomicSymbol(e)}hasStateForAlert(){return!1}stateForAlert(){throw new Error("Not implemented")}idForAlert(){return a.prototype.idForAlert.call(this)}seriesSource(){return this._seriesSource}_onSeriesTimeFrame(e,t,i,s,r){var n=T(this.style())?e+.5:e,o=t;if(void 0===r)null!==i&&i.type!==C.PeriodBack||(o+=this._model.studyAwareDefaultRightOffset());else if(r.applyDefaultRightMargin)o+=this._model.studyAwareDefaultRightOffset();else if(r.percentRightMargin){var a=t-n+1,l=Math.max(0,Math.min(.99,r.percentRightMargin/100));o+=l*a/(1-l)}this._model.setTimeViewport(n,o)}_onSeriesError(e){this._loading=!1;var t=e.error;if(e.ctx){var i={};Object.entries(e.ctx).forEach((function(e,t){i[e]=t.toString()})),t=t.format(i)}l.enabled("charting_library_debug_mode")&&_.logNormal("Error reason: "+t),this._seriesErrorMessage=t;const s="unknown_symbol"!==t?I.STATUS_ERROR:l.enabled("no_bars_status")&&this._symbolInfo?I.STATUS_NO_BARS:I.STATUS_INVALID_SYMBOL;this._setStatus(s),this._seriesLoaded=!0,this._enablePriceRangeReady()}_onSeriesCompleted(e,t,i){if(this._setSymbolIntervalDelay){if(this._willSymbolIntervalCurrencyChanged())return void _.logNormal("command comes during symbol/interval changing");_.logNormal("series_completed comes when symbol interval delay present but symbol/interval should not be changed")}this._loading=!1,this._seriesErrorMessage=null;var s=e;switch("pulsed"===s&&(s="delayed"),s){case"streaming":this._setStatus(I.STATUS_READY);break;case"endofday":this._setStatus(I.STATUS_EOD);break;case"delayed":this._setStatus(I.STATUS_DELAYED);break;case"pulsed":this._setStatus(I.STATUS_PULSE);break;case"replay":this._setStatus(I.STATUS_REPLAY)}s.match(/delayed_streaming/)&&this._setStatus(I.STATUS_DELAYED_STREAMING),this._endOfDataType=void 0!==i?i.data_completed:null;var r=this._model.paneForSource(this);r.recalculatePriceScale(this.priceScale(),c(this.id()));var n=P.full();null!==this._model.appliedTimeFrame().value()&&n.lockVisibleTimeRangeOnResize(),this._model.invalidate(n),this.model().recalcVisibleRangeStudies(!0),this.model().recalcStudyBasedLineTools(),!this.m_priceScale.isLockScale()||this.model().timeScale().isEmpty()||this._seriesLoaded||(this.model().timeScale()._correctOffset(),this.model().timeScale().correctBarSpacing(),this.model().resetPriceScale(r,this.priceScale())),this._seriesLoaded=!0,this._enablePriceRangeReady()}_onBarReceived(e){this.model().recalcVisibleRangeStudies(!0)}isStarted(){return this._seriesSource.isStarted()}restart(){if(this._status!==I.STATUS_SNAPSHOT){this._loading=!0,this._onRestarted.fire(),this._setStatus(I.STATUS_RESOLVING), +this._updateSymbolInfo(null,!0);var e=this._properties.interval.value();this._checkIntervalWillChanged(e)&&this._notifyIntervalChanged(e);var t=null;this._pendingTimeRange&&(t=this._pendingTimeRange,delete this._pendingTimeRange),this._onBeforeModifySeries(this.getSymbolString(),e),this._onTimeFrameApplied.fire(t),e=f(e),this._data=null,this._seriesSource.modifySeries(this._getResolvingSymbolObject(),e,t),this._seriesSource.isStarted()||this._seriesSource.start(),this.m_symbol=this._properties.symbol.value(),this._currency=this._properties.currencyId.value(),this._unit=this._properties.unitId.value(),this.m_interval=this._properties.interval.value()}}hasDelayedSymbolIntervalChange(){return!!this._setSymbolIntervalDelay}setSymbolIntervalCurrencyDelayed(){this._willSymbolIntervalCurrencyChanged()&&(this._setSymbolIntervalDelay&&(_.logNormal("Clear timeout to change symbol/interval #"+this._setSymbolIntervalDelay),clearTimeout(this._setSymbolIntervalDelay)),this._setSymbolIntervalDelay=setTimeout(function(){const e=this._properties;_.logNormal("Timeout #"+this._setSymbolIntervalDelay+' fired, new symbol will be "'+e.symbol.value()+'"'),delete this._setSymbolIntervalDelay,this._setSymbolInterval(e.symbol.value(),e.interval.value(),e.currencyId.value(),e.unitId.value())}.bind(this),30),_.logNormal("Started timeout #"+this._setSymbolIntervalDelay+' to change symbol/interval from "'+this.m_symbol+'" to "'+this._properties.symbol.value()+'"'))}rerequestData(){this._setSymbolInterval(this.m_symbol,this.m_interval,this._currency,this._unit,!0)}_notifyIntervalChanged(e){var t={timeframe:this._pendingTimeRange};this._intervalChanged.fire(e,t),this._pendingTimeRange=t.timeframe}_setSymbolInterval(e,t,i,s,r){this.clearGotoDateResult(),v.isRange(t)&&this._properties.rangeStyle.inputs.range.setValue(v.parse(t).multiplier());var n=this._checkSymbolWillChanged(e),o=this._checkIntervalWillChanged(t),a=this._checkCurrencyWillChanged(i),l=this._checkUnitWillChanged(s);if(n||o||a||l||r)if(this._syncModel=null,this.m_symbol=e,this.m_interval=t,this._currency=i,this._unit=s,this._status!==I.STATUS_SNAPSHOT&&(!this._seriesSource.isStarted()||n||a||l)&&this._updateSymbolInfo(null,!n&&(a||l)),this._status!==I.STATUS_SNAPSHOT){this._loading=!0,this._setStatus(I.STATUS_RESOLVING),x&&this._updateIsPrePostMarketPricesForbiddenProperty(),this._symbolIntervalChanged.fire(),o&&this._notifyIntervalChanged(this.m_interval),this._onRestarted.fire(),this._seriesLoaded=!1,this._lineStyleLastPriceCirclePaneView.stopAnimation();var c=null;this._pendingTimeRange&&(c=this._pendingTimeRange,delete this._pendingTimeRange),this._onTimeFrameApplied.fire(c),this._onBeforeModifySeries(this.getSymbolString(),t),this._data=null,this._seriesSource.modifySeries(this._getResolvingSymbolObject(),f(t),c,r),this._seriesSource.isStarted()||(this._predictBars=0,this._seriesSource.start()),(n||a||l)&&this.disablePriceRangeReady()}else this._model.realignLineTools();else this._model.realignLineTools()}setDefaultTimeframe(e){this._pendingTimeRange=e}symbol(){ +return this.properties().symbol.value()}hl2(e){return(this.high(e)+this.low(e))/2}hlc3(e){return(this.high(e)+this.low(e)+this.close(e))/3}ohlc4(e){return(this.open(e)+this.high(e)+this.low(e)+this.close(e))/4}priceRange(e,t){if(!TradingView.isInteger(e))return _.logDebug("Series.priceRange: incorrect startBar"),null;if(!TradingView.isInteger(t))return _.logDebug("Series.priceRange: incorrect endBar"),null;if(this.data().isEmpty())return null;if(this.m_priceScale.isLockScale()){var i=this._model.mainSeriesScaleRatio();if(null!==i){var s=this.priceScale().internalHeight()/(this.model().timeScale().barSpacing()/i),r=this.data().search(t,u.NearestLeft),o=(r.value[TradingView.HIGH_PLOT]+r.value[TradingView.LOW_PLOT])/2;return new n(o-.5*s,o+.5*s)}}var a=this.priceSource();if(null!==a)var l=this.data().bars().minMaxOnRangeCached(e,t,[{name:a,offset:0}]),c=this.data().nsBars().minMaxOnRangeCached(e,t,[{name:a,offset:0}]);else l=this.data().bars().minMaxOnRangeCached(e,t,[{name:"low",offset:0},{name:"high",offset:0}]),c=this.data().nsBars().minMaxOnRange(e,t,[{name:"low",offset:0},{name:"high",offset:0}]);var h=null!==(l=p(l,c))?l.min===l.max?new n(l.min-.5,l.max+.5):new n(l.min,l.max):new n(-.5,.5);return this.priceScale().isLog()?new n(this.priceScale().priceToLogical(h.minValue()),this.priceScale().priceToLogical(h.maxValue())):h}nearestData(e,t){if(TradingView.isInteger(e)){var i=this.data().search(e,t);return null!==i?i:void 0}_.logDebug("Series.nearestData: incorrect logicalPoint")}nearestIndex(e,t){var i=this.nearestData(e,t);return i?i.index:void 0}paneViews(){if(!this.properties().visible.value())return null;var e=[this._baseHorizontalLineView,this._paneView];return this._futureBarsPaneView&&e.push(this._futureBarsPaneView),this._projectionBarsPaneView&&e.push(this._projectionBarsPaneView),null!==this._waterlineView&&e.push(this._waterlineView),null!==this._priceLineView&&e.push(this._priceLineView),null!==this._gotoDateView&&e.push(this._gotoDateView),e.push(...this._highLowAvgPaneViews),e.push(...this._averagePaneViews),e}purgeSymbolInfo(){this._symbolInfo=null}requestMoreData(e){if((this._status===I.STATUS_READY||this._status===I.STATUS_PULSE||this._status===I.STATUS_DELAYED||this._status===I.STATUS_DELAYED_STREAMING||this._status===I.STATUS_EOD||this._status===I.STATUS_REPLAY)&&!this._model.timeScale().isEmpty()){var t=this._model.timeScale().visibleBarsStrictRange();if(null!==t&&0!==this.bars().size()){var i=t.lastBar()-o(this.data().last()).index;if(this._predictBars{this._gotoDateResultCleared||(this._gotoDateView=new t(this,e),this._model.updateSource(this))})}clearGotoDateResult(e){this._gotoDateView=null,this._gotoDateResultCleared=!0}getSourceIcon(){return{type:"loadSvg",svgId:"series."+this.properties().style.value()}}isStyleSupported(e){return!0}isIntervalSupported(e){return!0}isStyleSupportedForReplay(e){return g.isTimeBasedStyle(e)}isInReplay(){return null!==this._replaySubscriber}onTimeFrameApplied(){return this._onTimeFrameApplied}onInReplayStateChanged(){throw new Error("Not implemented")}replayExitedDueUnsupportedInterval(){throw new Error("Not implemented")}replayExitedDueUnavailableForUserInterval(){throw new Error("Not implemented")}switchToReplay(e,t){throw new Error("Not implemented")}switchToRealtime(){throw new Error("Not implemented")}_removeReplaySubscriber(){throw new Error("Not implemented")}_onBeforeModifySeries(e,t){0}destroy(){this._replayExitedDueUnsupportedInterval.destroy(),this._replayExitedDueUnavailableForUserInterval.destroy(),this._quotesProvider.quotesUpdate().unsubscribeAll(this),this._quotesProvider.destroy(),this.clearGotoDateResult(),this._legendView.destroy(),this._marketStatusModel.destroy(),null!==this._dataUpdatedModeModel&&this._dataUpdatedModeModel.destroy(),this._dataProblemModel.destroy(),this._paneView&&this._paneView.destroy&&this._paneView.destroy(),this._onTimeFrameApplied.destroy(),this._seriesSource.destroy(),super.destroy()}dataEvents(){return this._seriesSource.dataEvents()}moveData(e){return this._seriesSource.moveData(e)}}Object.assign(I,m),TradingView.Series=I,t.Series=I,t.isSeries=function(e){return e instanceof I}},34041:(e,t,i)=>{"use strict";i.d(t,{SeriesAreaPaneView:()=>l});var s=i(68906),r=i(84705),n=i(94804),o=i(41892),a=i(83150);class l extends a.SeriesSingleLinePaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1) +;const i=this._source.priceScale();if(!i)return null;const a=this._source.properties().childs().areaStyle.childs(),l=a.transparency.value(),c={simpleMode:!1,barSpacing:this._model.timeScale().barSpacing(),items:this._items,lineColor:a.linecolor.value(),lineStyle:a.linestyle.value(),lineWidth:a.linewidth.value(),isSeries:!0,withMarkers:!1,bottom:i.height(),color1:(0,s.generateColor)(a.color1.value(),l),color2:(0,s.generateColor)(a.color2.value(),l)},h=new n.CompositeRenderer;return h.append(new r.PaneRendererArea(c)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&h.append(new o.SelectionRenderer(this._selectionData)),h}}},89128:(e,t,i)=>{"use strict";function s(e,t){return 100*(t-e)/Math.abs(e||1)}i.d(t,{barPercentChange:()=>s})},71263:(e,t,i)=>{"use strict";i.d(t,{PaneRendererBars:()=>n});var s=i(49094),r=i(52403);class n extends r.PaneRendererSeriesBase{constructor(e){super(),this._bars=e.bars,this._barSpacing=e.barSpacing,this._dontDrawOpen=e.dontDrawOpen,this._thinBars=e.thinBars}draw(e,t){e.save();const i=t.pixelRatio;if(this._barWidth=this._calcBarWidth(i),this._barWidth>=2){Math.max(1,Math.floor(i))%2!=this._barWidth%2&&this._barWidth--}this._barLineWidth=this._thinBars?Math.min(this._barWidth,Math.floor(i)):this._barWidth;let s=null;const r=this._barLineWidth<=this._barWidth&&this._barSpacing>=Math.floor(1.5*t.pixelRatio);for(const t of this._bars){s!==t.color&&(e.fillStyle=t.color,s=t.color);const n=Math.floor(.5*this._barLineWidth),o=Math.round(t.time*i),a=o-n,l=this._barLineWidth,c=a+l-1,h=Math.min(t.high,t.low),d=Math.max(t.high,t.low),u=Math.round(h*i)-n,p=Math.round(d*i)+n,_=Math.max(p-u,this._barLineWidth);e.fillRect(a,u,l,_);const m=Math.ceil(1.5*this._barWidth);if(r){const s=o-m,r=o+m,h=Math.min(a-s,r-c);if(!this._dontDrawOpen){let r=Math.max(u,Math.round(t.open*i)-n),o=r+l-1;o>u+_-1&&(o=u+_-1,r=o-l+1),e.fillRect(s,r,h,o-r+1)}let d=Math.max(u,Math.round(t.close*i)-n),p=d+l-1;p>u+_-1&&(p=u+_-1,d=p-l+1),e.fillRect(c+1,d,h,p-d+1)}}e.restore()}_getTolerance(){const e=this._calcBarWidth(1),t=this._thinBars?Math.min(e,1):e;return(0,s.interactionTolerance)().series+t/2}_getBarSpacing(){return this._barSpacing}_calcBarWidth(e){const t=Math.floor(e);return Math.max(t,Math.floor((0,s.optimalBarWidth)(this._barSpacing,e)))}}},66919:(e,t,i)=>{"use strict";i.d(t,{SeriesBarsPaneView:()=>a});var s=i(94804),r=i(41892),n=i(79035),o=i(71263);class a extends n.SeriesBarCandlesPaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.properties().childs(),n={bars:this._bars,barSpacing:this._model.timeScale().barSpacing(),dontDrawOpen:i.barStyle.childs().dontDrawOpen.value(),thinBars:11===i.style.value()?i.rangeStyle.childs().thinBars.value():i.barStyle.childs().thinBars.value()},a=new s.CompositeRenderer;return a.append(new o.PaneRendererBars(n)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&a.append(new r.SelectionRenderer(this._selectionData)),a}}},35251:(e,t,i)=>{"use strict" +;i.d(t,{SeriesBaselinePaneView:()=>m});var s=i(68906),r=i(94804),n=i(86441),o=i(5531),a=i(4652),l=i(49094),c=i(55257),h=i(16282),d=i(84346);class u extends h.ScaledPaneRenderer{constructor(){super(...arguments),this._data=null}setData(e){this._data=e}hitTest(e){if(null===this._data)return null;const{items:t,topLineWidth:i,bottomLineWidth:s}=this._data,r=(0,l.interactionTolerance)().series+(i+s)/4,o=(0,c.lowerbound)(t,e,(e,t)=>e.x<=t.x),h=Math.max(1,o-1),u=Math.min(t.length-1,o+1);for(let i=h;i<=u;++i){const s=t[i-1],o=t[i],{distance:l}=(0,a.distanceToSegment)(new n.Point(s.x,s.y),new n.Point(o.x,o.y),new n.Point(e.x,e.y));if(l<=r)return new d.HitTestResult(d.HitTestResult.REGULAR)}return null}_drawImpl(e){if(null===this._data)return;const{items:t,baseLevelCoordinate:i,bottom:s,bottomFillColor1:r,bottomFillColor2:a,topFillColor1:c,topFillColor2:h,topLineColor:d,bottomLineColor:u,topLineWidth:p,bottomLineWidth:_}=this._data;if(!function(e){if(0===e.length)return!1;const t=e.findIndex(e=>(0,l.coordinateIsValid)(e.y));if(-1===t)return!1;let i=e.length-1;for(;i>t&&!(0,l.coordinateIsValid)(e[i].y);)i--;return!(t>i)}(t))return;const{topItems:m,bottomItems:g}=function(e,t){const i=[],s=[];let r=null;for(let a=0;a=t&&s.push(c),r=c;else{if(null===r)continue;c=r}if((0,l.coordinateIsValid)(h.y)&&(c.y>t&&h.yt))if(Math.abs(c.x-h.x)<1){const e=new n.Point(c.x,t);i.push(e),s.push(e)}else{const e=(0,o.intersectLineSegments)(c,h,new n.Point(c.x,t),new n.Point(h.x,t));if(null!==e){const t=c.add(h.subtract(c).scaled(e));i.push(t),s.push(t)}}}return{topItems:i,bottomItems:s}}(t,i);e.lineCap="round",e.lineJoin="round",0!==m.length&&(e.beginPath(),e.moveTo(m[0].x,i),this._makeLine(e,m,!0,0),e.closePath(),e.fillStyle=this._makeLinearGradient(e,c,h,i-s,i),e.fill(),e.beginPath(),this._makeLine(e,m,!1,0),e.lineWidth=p,e.strokeStyle=d,e.stroke()),0!==g.length&&(e.beginPath(),e.moveTo(g[0].x,i),this._makeLine(e,g,!0,1),e.closePath(),e.fillStyle=this._makeLinearGradient(e,r,a,i,i+s),e.fill(),e.beginPath(),this._makeLine(e,g,!1,1),e.lineWidth=_,e.strokeStyle=u,e.stroke())}_makeLine(e,t,i,s){if(null===this._data)return;const r=t.findIndex(e=>(0,l.coordinateIsValid)(e.y));if(-1===r)return;const{barSpacing:n,baseLevelCoordinate:o}=this._data,a=.25*n;let c;const h=t.length;for(let n=r;n=o&&h.y>=o){e.moveTo(h.x,h.y);continue}}else if(c&&c.y<=o&&h.y<=o){e.moveTo(h.x,h.y);continue}if(c&&(0,l.coordinateIsValid)(c.y))e.lineTo(h.x,h.y),i&&!(0,l.coordinateIsValid)(d.y)&&e.lineTo(h.x,o);else if(d&&(0,l.coordinateIsValid)(d.y))i?(n!==r&&e.lineTo(h.x,o),e.lineTo(h.x,h.y)):e.moveTo(h.x,h.y);else if(i){if(0===n)continue;n!==r&&e.lineTo(h.x-a,o),e.lineTo(h.x-a,h.y),e.lineTo(h.x+a,h.y),e.lineTo(h.x+a,o)}else e.moveTo(h.x-a,h.y),e.lineTo(h.x+a,h.y);c=h}}}_makeLinearGradient(e,t,i,s,r){const n=e.createLinearGradient(0,s,0,r);return n.addColorStop(0,t), +n.addColorStop(1,i),n}}var p=i(41892),_=i(83150);class m extends _.SeriesSingleLinePaneView{constructor(){super(...arguments),this._renderer=new u,this._topFillColor1="",this._topFillColor2="",this._bottomFillColor1="",this._bottomFillColor2="",this._topLineColor="",this._bottomLineColor="",this._topLineWidth=0,this._bottomLineWidth=0,this._barSpacing=0,this._bottom=0,this._baseLevelCoordinate=0}renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._renderer.setData({items:this._items,topFillColor1:this._topFillColor1,topFillColor2:this._topFillColor2,bottomFillColor1:this._bottomFillColor1,bottomFillColor2:this._bottomFillColor2,topLineColor:this._topLineColor,bottomLineColor:this._bottomLineColor,topLineWidth:this._topLineWidth,bottomLineWidth:this._bottomLineWidth,barSpacing:this._barSpacing,baseLevelCoordinate:this._baseLevelCoordinate,bottom:this._bottom});const i=new r.CompositeRenderer;return i.append(this._renderer),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&i.append(new p.SelectionRenderer(this._selectionData)),i}_updateImpl(){super._updateImpl();const e=this._source.priceScale();if(!e)return;const t=this._source.properties().childs().baselineStyle.childs(),i=t.transparency.value();this._topFillColor1=(0,s.generateColor)(t.topFillColor1.value(),i),this._topFillColor2=(0,s.generateColor)(t.topFillColor2.value(),i),this._bottomFillColor1=(0,s.generateColor)(t.bottomFillColor1.value(),i),this._bottomFillColor2=(0,s.generateColor)(t.bottomFillColor2.value(),i),this._topLineColor=t.topLineColor.value(),this._bottomLineColor=t.bottomLineColor.value(),this._topLineWidth=t.topLineWidth.value(),this._bottomLineWidth=t.bottomLineWidth.value(),this._barSpacing=this._model.timeScale().barSpacing(),this._bottom=e.height(),this._baseLevelCoordinate=Math.round(this._bottom*(Math.abs(100-t.baseLevelPercentage.value())/100))}}},42169:(e,t,i)=>{"use strict";i.d(t,{SeriesWaterlinePaneView:()=>a});var s=i(22221),r=i(56589),n=i(84346),o=i(43891);class a extends s.HorizontalLinePaneView{constructor(e){super(),this._getters=e;const t={cursorType:r.PaneCursorType.VerticalResize,activeItem:0,areaName:n.AreaName.SourceItemMove};this._lineRenderer.setHitTest(new n.HitTestResult(n.HitTestResult.MOVEPOINT,t)),this._lineRendererData.visible=!0,this._lineRendererData.linestyle=o.LINESTYLE_SPARSE_DOTTED}_updateImpl(){const{baseLevelPercentage:e,paneHeight:t,color:i}=this._getters,s=Math.abs(100-e());this._lineRendererData.y=Math.round(t()*(s/100)),this._lineRendererData.color=i()}}},52403:(e,t,i)=>{"use strict";i.d(t,{PaneRendererSeriesBase:()=>r});var s=i(84346);class r{constructor(){this._bars=[]}hitTest(e){const t=this._bars,i=this._getBarSpacing(),s=i/2;if(0===t.length)return null;const r=this._getTolerance(),n=t[0],o=t[t.length-1];if(e.xo.time+s+r)return null;let a=0,l=t.length-1,c=-1;for(;a<=l;){const i=Math.floor((a+l)/2),h=t[i];let d=s;if(h!==n&&h!==o||(d+=r),Math.abs(h.time-e.x)<=d){c=i;break}e.x-h.time>s?a=i+1:l=i-1} +if(-1!==c){const n=Math.ceil(r/i);if(0!==n){const i=Math.max(0,c-n),o=Math.min(t.length-1,c+n);for(let n=i;n<=o;n++)if(Math.abs(e.x-t[n].time)<=s+r&&this._isPointAtBar(t[n],e.y,r))return this._getHitTest()}else if(this._isPointAtBar(t[c],e.y,r))return this._getHitTest()}return null}_getHitTest(){return new s.HitTestResult(s.HitTestResult.REGULAR)}_isPointAtBar(e,t,i){const s=Math.min(e.high,e.low),r=Math.max(e.high,e.low);return s-i<=t&&t<=r+i}}},48998:(e,t,i)=>{"use strict";i.d(t,{PaneRendererCandles:()=>l});var s=i(88537),r=i(84346),n=i(42759),o=i(49094),a=i(52403);class l extends a.PaneRendererSeriesBase{constructor(e){super(),this._barSpacing=1,this._barWidth=1,this._borderVisible=!1,this._barBorderWidth=1,this._wickVisible=!1,this._bodyVisible=!0,this._borderColor=void 0,this._wickColor=void 0,this._hittest=void 0,this._isPriceScaleInverted=!1,e&&this.setData(e)}setData(e){this._bars=e.bars,this._barSpacing=e.barSpacing,this._borderVisible=e.borderVisible,this._bodyVisible=e.bodyVisible,this._wickVisible=e.wickVisible,this._borderColor=e.borderColor,this._wickColor=e.wickColor,this._hittest=e.hittest,this._isPriceScaleInverted=e.isPriceScaleInverted}hitTest(e){return this._wickVisible||this._borderVisible||this._bodyVisible?super.hitTest(e):null}draw(e,t){if(0===this._bars.length)return;const i=t.pixelRatio;if(this._barWidth=(0,o.optimalCandlestickWidth)(this._barSpacing,i),this._barWidth>=2){Math.floor(i)%2!=this._barWidth%2&&this._barWidth--}this._wickVisible&&this._drawWicks(e,i),this._borderVisible&&this._drawBorder(e,i),this._bodyVisible&&this._drawCandles(e,i)}_getTolerance(){return(0,o.interactionTolerance)().series+this._barBorderWidth/2}_getBarSpacing(){return this._barSpacing}_getHitTest(){return this._hittest||new r.HitTestResult(r.HitTestResult.REGULAR)}_isPointAtBar(e,t,i){const s=this._bodyVisible||this._borderVisible,r=this._wickVisible;if(!s&&!r)return!1;if(s){const s=r?Math.min(e.high,e.low):Math.min(e.open,e.close),n=r?Math.max(e.high,e.low):Math.max(e.open,e.close);return s-i<=t&&t<=n+i}{const s=Math.min(e.open,e.close),r=Math.max(e.open,e.close);return e.high-i<=t&&t<=s+i||r-i<=t&&t<=e.low+i}}_drawWicks(e,t){const i=this._bars;let r="",n=Math.min(Math.floor(t),Math.floor(this._barSpacing*t));n=Math.max(Math.floor(t),Math.min(n,this._barWidth));const o=Math.floor(.5*n);let a=null;for(const l of i){const i=l.wickColor?l.wickColor:(0,s.ensureDefined)(this._wickColor);i!==r&&(e.fillStyle=i,r=i);let c=Math.round(Math.min(l.open,l.close)*t),h=Math.round(Math.max(l.open,l.close)*t);this._isPriceScaleInverted&&([h,c]=[c,h]);const d=Math.round(l.high*t),u=Math.round(l.low*t);let p=Math.round(t*l.time)-o;const _=p+n-1;null!==a&&(p=Math.max(a+1,p),p=Math.min(p,_));const m=_-p+1;e.fillRect(p,d,m,c-d),e.fillRect(p,h+1,m,u-h-1),a=_}}_calculateBorderWidth(e){let t=Math.floor(1*e);this._barWidth<=2*t&&(t=Math.floor(.5*(this._barWidth-1)));const i=Math.max(Math.floor(e),t);return this._barWidth<=2*i?Math.max(Math.floor(e),Math.floor(1*e)):i}_drawBorder(e,t){let i="";const r=this._calculateBorderWidth(t) +;let o=null;for(const a of this._bars){if(a.borderColor!==i&&(e.fillStyle=a.borderColor?a.borderColor:(0,s.ensureDefined)(this._borderColor),i=a.borderColor),this._bodyVisible&&a.hollow)continue;let l=Math.round(a.time*t)-Math.floor(.5*this._barWidth);const c=l+this._barWidth-1,h=Math.round(Math.min(a.open,a.close)*t),d=Math.round(Math.max(a.open,a.close)*t);if(null!==o&&(l=Math.max(o+1,l),l=Math.min(l,c)),this._barSpacing*t>2*r)(0,n.fillRectInnerBorder)(e,l,h,c-l+1,d-h+1,r);else{const t=c-l+1;e.fillRect(l,h,t,d-h+1)}o=c}}_drawCandles(e,t){let i="";const s=this._calculateBorderWidth(t);for(const r of this._bars){if(this._borderVisible&&this._barWidth<=2*s&&!r.hollow)continue;let o=Math.round(Math.min(r.open,r.close)*t),a=Math.round(Math.max(r.open,r.close)*t),l=Math.round(r.time*t)-Math.floor(.5*this._barWidth),c=l+this._barWidth-1;if(r.color!==i){const t=r.color;e.fillStyle=t,i=t}if(r.hollow)e.fillStyle=r.color,(0,n.fillRectInnerBorder)(e,l,o,c-l+1,a-o+1,s);else{if(this._borderVisible&&(l+=s,o+=s,c-=s,a-=s),o>a)continue;e.fillRect(l,o,c-l+1,a-o+1)}}}}},85224:(e,t,i)=>{"use strict";i.d(t,{SeriesCandlesPaneView:()=>l});var s=i(94804),r=i(49094),n=i(41892),o=i(79035),a=i(48998);class l extends o.SeriesBarCandlesPaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.priceScale();if(!i)return null;const o=this._source.properties().childs().candleStyle.childs(),l=this._model.timeScale().barSpacing(),c={bars:this._bars,barSpacing:l,bodyVisible:o.drawBody.value(),borderVisible:o.drawBorder.value(),borderColor:o.borderColor.value(),wickColor:o.wickColor.value(),barWidth:(0,r.optimalBarWidth)(l),wickVisible:o.drawWick.value(),isPriceScaleInverted:i.isInverted()},h=new s.CompositeRenderer;return h.append(new a.PaneRendererCandles(c)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&h.append(new n.SelectionRenderer(this._selectionData)),h}}},59153:(e,t,i)=>{"use strict";i.d(t,{SeriesColumnsPaneView:()=>p});var s=i(88537),r=i(86441),n=i(67337),o=i(3308),a=i(84346),l=i(94804),c=i(71053),h=i(85847),d=i(41892),u=i(68617);class p{constructor(e,t){this._items=[],this._invalidated=!0,this._isMarkersEnabled=(0,n.enabled)("source_selection_markers"),this._selectionData=null,this._histogramBase=0,this._source=e,this._model=t,this._selectionIndexer=new h.SelectionIndexes(t.timeScale())}update(){this._invalidated=!0}renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i={barSpacing:this._model.timeScale().barSpacing(),items:this._items,lineColor:"",histogramBase:this._histogramBase},s=new l.CompositeRenderer;return s.append(new u.PaneRendererColumns(i)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&s.append(new d.SelectionRenderer(this._selectionData)),s}_updateImpl(){this._items=[];const e=this._model.timeScale(),t=this._source.priceScale();if(e.isEmpty()||!t||t.isEmpty())return;const i=e.visibleBarsStrictRange();if(null===i)return +;if(0===this._source.bars().size())return;const n=this._source.nearestIndex(i.firstBar(),c.PlotRowSearchMode.NearestRight),l=this._source.nearestIndex(i.lastBar(),c.PlotRowSearchMode.NearestLeft);if(void 0===n||void 0===l)return;const h=this._source.bars().range(n,l),d=this._source.barColorer(),u={},p=this._source.barFunction(),_=h.reduce((e,t,s)=>{var n;const a=p(s);if(!(0,o.default)(a))return e;u.value=s;const l=null!==(n=s[7])&&void 0!==n?n:d.barStyle(t,!1,u),c=new r.Point(t,a);return c.style=l,c.timePointIndex=t,this._items.push(c),u.previousValue=s,i.contains(t)&&null!=e?e:a},null);if(null!==_)if(t.pointsArrayToCoordinates(this._items,_),e.timedValuesToCoordinates(this._items),this._histogramBase=t.isInverted()?0:t.height(),this._model.selection().isSelected(this._source)){const i=this._selectionIndexer.indexes();this._selectionData={points:[],bgColors:[],visible:!0,barSpacing:e.barSpacing(),hittestResult:a.HitTestResult.REGULAR};const n=(0,s.ensureNotNull)(this._model.paneForSource(this._source)).height();this._selectionData.hittestResult=a.HitTestResult.REGULAR;for(let s=0;s{"use strict";i.d(t,{SeriesHollowCandlesPaneView:()=>l});var s=i(94804),r=i(49094),n=i(41892),o=i(48998),a=i(79035);class l extends a.SeriesBarCandlesPaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.priceScale();if(!i)return null;const a=this._source.properties().childs().hollowCandleStyle.childs(),l=this._model.timeScale().barSpacing(),c={bars:this._bars,barSpacing:l,bodyVisible:a.drawBody.value(),borderVisible:a.drawBorder.value(),borderColor:a.borderColor.value(),wickColor:a.wickColor.value(),barWidth:(0,r.optimalBarWidth)(l),wickVisible:a.drawWick.value(),isPriceScaleInverted:i.isInverted()},h=new s.CompositeRenderer;return h.append(new o.PaneRendererCandles(c)),this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData&&h.append(new n.SelectionRenderer(this._selectionData)),h}}},33837:(e,t,i)=>{"use strict";i.d(t,{SeriesLinePaneView:()=>h});var s=i(84346),r=i(94804),n=i(46214),o=i(28113),a=i(41892),l=i(16654),c=i(83150);class h extends c.SeriesSingleLinePaneView{renderer(e,t){this._invalidated&&(this._updateImpl(),this._invalidated=!1);const i=this._source.properties().childs().lineStyle.childs(),c={barSpacing:this._model.timeScale().barSpacing(),items:this._items,lineColor:i.color.value(),lineStyle:i.linestyle.value(),withMarkers:i.styleType.value()===l.STYLE_LINE_TYPE_MARKERS,lineWidth:i.linewidth.value(),simpleMode:!0,hitTestResult:s.HitTestResult.REGULAR};let h,d;if(h=i.styleType.value()===l.STYLE_LINE_TYPE_STEP?new o.PaneRendererStepLine(c):new n.PaneRendererLine(c), +this._model.selection().isSelected(this._source)&&this._isMarkersEnabled&&this._selectionData){const e=new r.CompositeRenderer;e.append(h),e.append(new a.SelectionRenderer(this._selectionData)),d=e}else d=h;return d}}},79035:(e,t,i)=>{"use strict";i.d(t,{SeriesBarCandlesPaneView:()=>c});var s=i(86441),r=i(67337),n=i(85847),o=i(71053),a=i(84346);function l(e,t){const i=e[1],s=e[2],r=e[3],n=e[4];return void 0!==i&&void 0!==s&&void 0!==r&&void 0!==n&&null!==i&&null!==s&&null!==r&&null!==n&&(t.open=i,t.high=s,t.low=r,t.close=n,!0)}class c{constructor(e,t){this._bars=[],this._invalidated=!0,this._isMarkersEnabled=(0,r.enabled)("source_selection_markers"),this._selectionData=null,this._source=e,this._model=t,this._selectionIndexer=new n.SelectionIndexes(t.timeScale())}items(){return this._bars}update(){this._invalidated=!0}_updateImpl(e){const t=null!=e?e:l,i=this._model.timeScale(),r=this._source.priceScale();if(this._bars=[],i.isEmpty()||!r||r.isEmpty())return;const n=i.visibleBarsStrictRange();if(null===n)return;if(0===this._source.bars().size())return;let c=this._source.nearestIndex(n.firstBar(),o.PlotRowSearchMode.NearestRight);const h=this._source.nearestIndex(n.lastBar(),o.PlotRowSearchMode.NearestLeft);if(void 0===c||void 0===h)return;for(;c<=h;c++){if(null!==this._source.bars().valueAt(c))break}if(c>h)return;const d=this._source.bars().range(c,h),u=this._source.barColorer(),p={};if(d.each((e,i)=>{var s;const r={time:Math.round(e),exactTime:Math.round(e),open:NaN,high:NaN,low:NaN,close:NaN,color:""};if(!t(i,r))return!1;p.value=i;const n=null!==(s=i[7])&&void 0!==s?s:u.barStyle(e,!1,p);return i[7]=n,p.previousValue=i,r.color=n.barColor,r.borderColor=n.barBorderColor,r.wickColor=n.barWickColor,r.hollow=n.isBarHollow,this._bars.push(r),!1}),0===this._bars.length)return;const _=this._source.firstValue();if(null!==_)if(r.barPricesToCoordinates(this._bars,_),i.barIndexesToCoordinates(this._bars),this._model.selection().isSelected(this._source)){const e=this._selectionIndexer.indexes();this._selectionData={points:[],bgColors:[],visible:!0,hittestResult:a.HitTestResult.REGULAR,barSpacing:i.barSpacing()};const t=this._model.paneForSource(this._source);if(!t)return;const n=t.height();for(let t=0;t{"use strict";i.d(t,{SeriesDataSource:()=>S});var s=i(88537),r=i(80643),n=i(19234),o=i(29823),a=i(63948),l=i(51344),c=i(95836),h=i(2872),d=i.n(h);class u{constructor(){this._modified=new(d()),this._loading=new(d()),this._completed=new(d()),this._error=new(d()),this._symbolError=new(d()),this._symbolResolved=new(d()),this._seriesError=new(d()),this._symbolNotPermitted=new(d()),this._symbolInvalid=new(d()),this._symbolGroupNotPermitted=new(d()), +this._chartTypeNotPermitted=new(d()),this._intradaySpreadNotPermitted=new(d()),this._intradayExchangeNotPermitted=new(d()),this._customIntervalNotPermitted=new(d()),this._secondsIntervalNotPermitted=new(d()),this._tickMarksRangeChanged=new(d()),this._barReceived=new(d()),this._seriesTimeFrame=new(d()),this._dataUpdated=new(d())}destroy(){this._modified.destroy(),this._loading.destroy(),this._completed.destroy(),this._error.destroy(),this._symbolError.destroy(),this._symbolResolved.destroy(),this._seriesError.destroy(),this._symbolInvalid.destroy(),this._symbolNotPermitted.destroy(),this._symbolGroupNotPermitted.destroy(),this._chartTypeNotPermitted.destroy(),this._intradaySpreadNotPermitted.destroy(),this._intradayExchangeNotPermitted.destroy(),this._customIntervalNotPermitted.destroy(),this._secondsIntervalNotPermitted.destroy(),this._tickMarksRangeChanged.destroy(),this._barReceived.destroy(),this._seriesTimeFrame.destroy(),this._dataUpdated.destroy()}modified(){return this._modified}loading(){return this._loading}completed(){return this._completed}error(){return this._error}symbolError(){return this._symbolError}symbolResolved(){return this._symbolResolved}seriesError(){return this._seriesError}symbolInvalid(){return this._symbolInvalid}symbolNotPermitted(){return this._symbolNotPermitted}symbolGroupNotPermitted(){return this._symbolGroupNotPermitted}chartTypeNotPermitted(){return this._chartTypeNotPermitted}intradaySpreadNotPermitted(){return this._intradaySpreadNotPermitted}intradayExchangeNotPermitted(){return this._intradayExchangeNotPermitted}customIntervalNotPermitted(){return this._customIntervalNotPermitted}secondsIntervalNotPermitted(){return this._secondsIntervalNotPermitted}tickMarksRangeChanged(){return this._tickMarksRangeChanged}barReceived(){return this._barReceived}seriesTimeFrame(){return this._seriesTimeFrame}dataUpdated(){return this._dataUpdated}fireCompleted(e,t,i){this._completed.fire(e,t,i)}fireModified(){this._modified.fire()}fireLoading(e){this._loading.fire(e)}fireError(){this._error.fire()}fireSymbolError(e){this._symbolError.fire(e),this.fireError()}fireSymbolResolved(e){this._symbolResolved.fire(e)}fireSeriesError(e){this._seriesError.fire(e),this.fireError()}fireSymbolInvalid(){this._symbolInvalid.fire()}fireSymbolNotPermitted(e){this._symbolNotPermitted.fire(e)}fireSymbolGroupNotPermitted(e){this._symbolGroupNotPermitted.fire(e)}fireChartTypeNotPermitted(e){this._chartTypeNotPermitted.fire(e),this.fireError()}fireIntradaySpreadNotPermitted(){this._intradaySpreadNotPermitted.fire(),this.fireError()}fireIntradayExchangeNotPermitted(){this._intradayExchangeNotPermitted.fire(),this.fireError()}fireCustomIntervalNotPermitted(){this._customIntervalNotPermitted.fire(),this.fireError()}fireSecondsIntervalNotPermitted(){this._secondsIntervalNotPermitted.fire(),this.fireError()}fireTickMarksRangeChanged(e){this._tickMarksRangeChanged.fire(e)}fireBarReceived(e){this._barReceived.fire(e)}fireSeriesTimeFrame(e,t,i,s,r){this._seriesTimeFrame.fire(e,t,i,s,r)}fireDataUpdated(e,t,i){ +this._dataUpdated.fire(e,t,i)}}var p=i(98125),_=i(37667);const m=(0,p.getLogger)("Chart.SeriesDataSource");var g;!function(e){e[e.Idle=0]="Idle",e[e.AwaitingConnection=1]="AwaitingConnection",e[e.AwaitingFirstDataUpdate=2]="AwaitingFirstDataUpdate",e[e.Active=3]="Active"}(g||(g={}));let f=1;let v=1;class S{constructor(e,t,i,r){var n;this._symbol=null,this._resolvedSymbolName=null,this._instanceId=null,this._symbolInstanceId=null,this._resolution=null,this._timeFrame=null,this._data=new a.SeriesData,this._dataEvents=new u,this._status=g.Idle,this._turnaroundCounter=1,this._boundOnGatewayIsConnectedChanged=this._onGatewayIsConnectedChanged.bind(this),this._ongoingDataUpdate=Promise.resolve(),this._gateway=e,this._turnaroundPrefix=t,this._createSeriesParams=(n=null!=i?i:{count:300}).startDate?n.endDate||n.count?n.endDate?["from_to",n.startDate,n.endDate]:["bar_count",n.startDate,(0,s.ensure)(n.count)]:["from_to",n.startDate]:n.count||300,this._timeFrame=r||null,this._gateway.isConnected().subscribe(this._boundOnGatewayIsConnectedChanged)}destroy(){this.stop(),this._gateway.isConnected().unsubscribe(this._boundOnGatewayIsConnectedChanged)}modifySeries(e,t,i=null,n=!1){n&&(m.logNormal("Due to force flag clearing symbol & resolution to force re-requesting data."),this._symbol=null,this._resolution=null);const a=this._symbol,l=this._resolution;if(this._symbol=e,this._resolution=t,null===this._instanceId)return void(this._timeFrame=i);const c=!(0,r.deepEquals)(a,e)[0]||null!==this._resolvedSymbolName&&this._resolvedSymbolName!==this._getSymbolNameString(e),h=null===l||!o.Interval.isEqual(l,t);(c||h||null!==i)&&(this._timeFrame=null,(c||h)&&this._turnaroundCounter++,c&&this._resolveSymbol(),this._gateway.modifySeries(this._instanceId,this.turnaround(),(0,s.ensureNotNull)(this._symbolInstanceId),this._resolution,i,this._onMessage.bind(this)),this._dataEvents.fireModified())}requestMoreData(e){null!==this._instanceId&&this._gateway.requestMoreData(this._instanceId,e,this._onMessage.bind(this))}requestMoreTickmarks(e){null!==this._instanceId&&this._gateway.requestMoreTickmarks(this._instanceId,e,this._onMessage.bind(this))}isStarted(){return this._status!==g.Idle}isActive(){return this._status===g.Active}resolution(){return this._resolution}start(){this.isStarted()?m.logNormal("start: data source is already started, nothing to do"):((0,s.assert)(null!==this._symbol,"symbol must be set before start"),(0,s.assert)(null!==this._resolution,"resolution must be set before start"),this._gateway.isConnected().value()?this._createSeries():this._changeStatusTo(g.AwaitingConnection))}stop(){this.isStarted()?(null!==this._instanceId&&(this._gateway.removeSeries(this._instanceId),this._instanceId=null),this._changeStatusTo(g.Idle)):m.logNormal("stop: data source is already stopped, nothing to do")}instanceId(){return this._instanceId}data(){return this._data}clearData(){this.isStarted()?this._enqueueUpdate(()=>this._clearDataImpl()):this._clearDataImpl()}dataEvents(){return this._dataEvents}turnaround(){ +return`${this._turnaroundPrefix}${this._turnaroundCounter}`}symbolInstanceId(){return this._symbolInstanceId}symbol(){return this._symbol}moveData(e){this._enqueueUpdate(()=>this._data.moveData(e))}_resolveSymbol(){null!==this._symbol&&(this._symbolInstanceId=this._gateway.resolveSymbol("sds_sym_"+f++,(0,n.encodeExtendedSymbolOrGetSimpleSymbolString)(this._symbol),this._onMessage.bind(this)))}_clearDataImpl(){this._data.clear()}_changeStatusTo(e){(0,s.assert)(this._status!==e,"Source and destination status should be distinct"),m.logNormal(`Status changed from ${g[this._status]} to ${g[e]}`),this._status=e}_createSeries(){(0,s.assert)(this._status!==g.Active,'Status should not be "Active" when creating a study'),this._instanceId="sds_"+v++,this._resolveSymbol(),this._gateway.createSeries(this._instanceId,this.turnaround(),(0,s.ensureNotNull)(this._symbolInstanceId),(0,s.ensureNotNull)(this._resolution),this._createSeriesParams,this._timeFrame,this._onMessage.bind(this)),this._timeFrame=null,this._changeStatusTo(g.AwaitingFirstDataUpdate)}_onGatewayIsConnectedChanged(e){e?this._onGatewayConnected():this._onGatewayDisconnected()}_onGatewayConnected(){this._status===g.AwaitingConnection&&this._createSeries()}_onGatewayDisconnected(){this._status!==g.Idle&&this._status!==g.AwaitingConnection&&(this._instanceId=null,this._changeStatusTo(g.AwaitingConnection)),this._turnaroundCounter=1}_onMessage(e){this._enqueueUpdate(()=>this._onMessageImpl(e))}async _onMessageImpl(e){switch(e.method){case"symbol_resolved":{const[t,i]=e.params;if(t!==this._symbolInstanceId){m.logNormal(`Resolve for old symbol, expected: ${this._symbolInstanceId}, actual ${e.params[0]}`);break}this._onSymbolResolved(i);break}case"symbol_error":if(e.params[0]!==this._symbolInstanceId){m.logNormal(`Symbol error for old symbol, expected: ${this._symbolInstanceId}, actual ${e.params[0]}`);break}this._onSymbolError(e);break;case"series_timeframe":{const[t,i,s,r,n,o,a]=e.params;if(!this._checkTurnaround(t,i)){m.logNormal(`Time frame for old data, expected: ${this._symbolInstanceId} (${this.turnaround()}), actual ${t} (${i})`);break}this._onSeriesTimeFrame(s,r,n,o,a);break}case"series_error":{const[t,i]=e.params;if(!this._checkTurnaround(t,i)){m.logNormal(`Series error for old data, expected: ${this._symbolInstanceId} (${this.turnaround()}), actual ${t} (${i})`);break}this._onSeriesError(e.params[2]);break}case"series_loading":{const[t,i]=e.params;if(!this._checkTurnaround(t,i))break;this._onSeriesLoading(e.time);break}case"series_completed":{const[t,i,s,r]=e.params;if(!this._checkTurnaround(t,s)){m.logNormal(`Series completed for old data, expected: ${this._symbolInstanceId} (${this.turnaround()}), actual ${t} (${s})`);break}this._onSeriesCompleted(i,e.time,r);break}case"data_update":if(!this._checkTurnaround(e.params.customId,e.params.turnaround)){m.logNormal(`Data update for old data, expected: ${this._symbolInstanceId} (${this.turnaround()}), actual ${e.params.customId} (${e.params.turnaround})`);break} +await this._onDataUpdate(e.params.plots,e.params.nonseries,e.params.lastBar);break;case"clear_data":if(e.params.turnaround!==this.turnaround()){m.logNormal(`Clear data for old data, expected: ${this.turnaround()}, actual ${e.params.turnaround}`);break}this._clearDataImpl(),this._dataEvents.fireDataUpdated(void 0,!1,null)}}_onSeriesError(e){let t,i;if("string"==typeof e)i={error:e},t=e;else if(i=e,e.ctx){const i={};Object.entries(e.ctx).forEach(([e,t])=>{i[e]=t.toString()}),t=e.error.format(i)}else t=e.error;if(t.startsWith("study_not_auth:")){const e=t.split(":",2)[1].split("@",2)[0];["BarSetRenko","BarSetPriceBreak","BarSetKagi","BarSetPnF"].includes(e)?this._dataEvents.fireChartTypeNotPermitted(e):"BarSetSpread"===e?this._dataEvents.fireIntradaySpreadNotPermitted():"BarSetRange"===e&&this._dataEvents.fireCustomIntervalNotPermitted()}else"resolution_not_entitled"===t?this._dataEvents.fireIntradayExchangeNotPermitted():"custom_resolution"===t?this._dataEvents.fireCustomIntervalNotPermitted():"seconds_not_entitled"===t&&this._dataEvents.fireSecondsIntervalNotPermitted();this._dataEvents.fireSeriesError(i)}_onSeriesTimeFrame(e,t,i,s,r){this._dataEvents.fireSeriesTimeFrame(e,t,i,null==s||s,r)}_onSymbolError(e){if(e.params[1]===c.permissionDenied)switch(e.params[2]){case c.SymbolErrorPermissionDeniedReason.Symbol:this._dataEvents.fireSymbolNotPermitted(e.params[3]);break;case c.SymbolErrorPermissionDeniedReason.GroupPermission:this._dataEvents.fireSymbolGroupNotPermitted(e.params[3]);break;default:this._dataEvents.fireSymbolNotPermitted(e.params[2])}else e.params[1]===c.invalidSymbol&&this._dataEvents.fireSymbolInvalid();this._dataEvents.fireSymbolError(e.params[1])}_onSymbolResolved(e){this._resolvedSymbolName=(0,_.symbolForApi)(e,this._getSymbolNameString((0,s.ensureNotNull)(this._symbol))),this._dataEvents.fireSymbolResolved(e)}_getSymbolNameString(e){return"string"==typeof e.symbol?e.symbol:e.symbol.symbol}async _onDataUpdate(e,t,i){this._onDataUnpacked(e,i,await async function(e){if(void 0===e)return{projectionPlots:[],boxSize:null};if(""===e.d||"nochange"===e.indexes)return null;const t=await(0,l.unpackNonSeriesData)(e.d);if(null===t||t.indexes_replace)return null;const i=e.indexes,{bars:s,price:r,boxSize:n,reversalAmount:o}=t.data,a=(s||[]).map(e=>{let t;return"factor"in e?t=e.factor:"additionalPrice"in e&&(t=e.additionalPrice),{index:i[e.time],value:[0,e.open,e.high,e.low,e.close,e.volume,t,void 0]}});return{lastPrice:r,projectionPlots:a,reversalAmount:o,boxSize:n}}(t))}_enqueueUpdate(e){return this._ongoingDataUpdate=this._ongoingDataUpdate.then(e,e),this._ongoingDataUpdate}_onDataUnpacked(e,t,i){if(this._status===g.Idle)return;this._status===g.AwaitingFirstDataUpdate&&(this._changeStatusTo(g.Active),this._clearDataImpl());const s=this._data.bars().size(),r=this._data.bars().firstIndex(),n=this._data.mergeRegularBars(e);null!==i&&(this._data.nsBars().clear(),this._data.nsBars().merge(i.projectionPlots),this._data.lastProjectionPrice=i.lastPrice,null!==i.boxSize&&(this._data.boxSize=i.boxSize), +this._data.reversalAmount=i.reversalAmount);const o=null===r||null!==n&&n.index{"use strict";i.d(t,{SeriesHorizontalBaseLinePaneView:()=>r});var s=i(38712);class r extends s.SeriesHorizontalLinePaneView{constructor(e){super(e)}_updateImpl(){this._lineRendererData.visible=!1;const e=this._series.priceScale().mode();if(!e.percentage&&!e.indexedTo100)return;const t=this._series.firstValue();null!==t&&(this._lineRendererData.visible=!0,this._lineRendererData.y=this._series.priceScale().priceToCoordinate(t,t),this._lineRendererData.color=this._series.properties().childs().baseLineColor.value())}}},38712:(e,t,i)=>{"use strict";i.d(t,{SeriesHorizontalLinePaneView:()=>r});var s=i(22221);class r extends s.HorizontalLinePaneView{constructor(e){super(),this._series=e,this._model=e.model()}}},83150:(e,t,i)=>{"use strict";i.d(t,{SeriesSingleLinePaneView:()=>d});var s=i(3308),r=i(86441),n=i(88537),o=i(67337),a=i(85847),l=i(71053),c=i(84346),h=i(55257);class d{constructor(e,t){this._items=[],this._invalidated=!0,this._isMarkersEnabled=(0,o.enabled)("source_selection_markers"),this._selectionData=null,this._source=e,this._model=t,this._selectionIndexer=new a.SelectionIndexes(t.timeScale())}update(){this._invalidated=!0}_updateImpl(){var e,t;this._items=[];const i=this._model.timeScale(),o=this._source.priceScale();if(i.isEmpty()||!o||o.isEmpty())return;const a=i.visibleBarsStrictRange();if(null===a)return;if(0===this._source.bars().size())return;const d=null!==(e=this._source.nearestIndex(a.firstBar()-1,l.PlotRowSearchMode.NearestLeft))&&void 0!==e?e:a.firstBar()-1,u=null!==(t=this._source.nearestIndex(a.lastBar()+1,l.PlotRowSearchMode.NearestRight))&&void 0!==t?t:a.lastBar()+1,p=this._source.barFunction();let _=null;const m=this._model.timeScale().barSpacing();if(m<.1&&this._source.supportsPressedChunks()){_=this._source.firstValue();const e=this._source.pressedChunks(m,(0,n.ensureNotNull)(this._source.priceSource())),t=(0,h.lowerbound)(e,d,(e,t)=>e.startTimee.endTime{const i=new r.Point(t.startTime,e);this._items.push(i)})}}else{_=this._source.bars().range(d,u).reduce((e,t,i)=>{const n=p(i);if(!(0,s.default)(n))return e;const o=new r.Point(t,n);return this._items.push(o),a.contains(t)?null!=e?e:n:e},null)}if(null!==_)if(o.pointsArrayToCoordinates(this._items,_),i.timedValuesToCoordinates(this._items),this._model.selection().isSelected(this._source)){const e=this._selectionIndexer.indexes();this._selectionData={points:[],bgColors:[],visible:!0,barSpacing:i.barSpacing(),hittestResult:c.HitTestResult.REGULAR};const t=(0, +n.ensureNotNull)(this._model.paneForSource(this._source)).height();this._selectionData.hittestResult=c.HitTestResult.REGULAR;for(let s=0;s{"use strict";i.d(t,{calculateColor:()=>P,SeriesValuesProvider:()=>T});var s=i(88537),r=i(93751),n=i(24377),o=i(28353),a=i(49483),l=(i(67337),i(68906)),c=i(62820),h=i(71053),d=i(14291),u=i(85733),p=i(26811),_=i(67802),m=i(33981),g=i(89128),f=i(88129),v=i(57626);const S=a.CheckMobile.any(),y=S&&!0,b=new p.PercentageFormatter,w=new _.VolumeFormatter(2),C=`${v.notAvailable} (${v.notAvailable}%)`;function P(e,t){const i=(0,n.parseRgb)(t),s=(0,n.parseRgb)(e);return(0,n.distanceRgb)(i,s)<70?(0,n.rgbToHexString)((0,n.invertRgb)(i)):t}class T{constructor(e,t){this._series=e,this._model=t,this._emptyValues=[{title:(0,o.t)("Open"),visible:!1,value:"",index:0,id:""},{title:(0,o.t)("High"),visible:!1,value:"",index:1,id:""},{title:(0,o.t)("Low"),visible:!1,value:"",index:2,id:""},{title:(0,o.t)("Close"),visible:!1,value:"",index:3,id:""},{title:"",visible:!1,value:"",index:4,id:""},{title:"",visible:!1,value:"",index:5,id:""},{title:(0,o.t)("Change"),visible:!1,value:"",index:6,id:""},{title:(0,o.t)("Vol"),visible:!1,value:"",index:7,id:""}]}getItems(){return this._emptyValues}getValues(e){const t=this._showLastPriceAndChangeOnly(),i=this._emptyValues.map(e=>({...e,visible:!t}));i[0].value=v.notAvailable,i[1].value=v.notAvailable,i[2].value=v.notAvailable,i[3].value=v.notAvailable,i[6].value=C,i[7].value=v.notAvailable,i[5].visible=!1;const n=i[4];if(n.value=v.notAvailable,n.visible=!1,this._model.timeScale().isEmpty()||0===this._series.bars().size()||this._series.priceScale().isEmpty())return i;(0,r.isNumber)(e)||(e=(0,s.ensureNotNull)(this._series.data().last()).index);const o=this._series.nearestIndex(e,h.PlotRowSearchMode.NearestLeft);if(void 0===o)return i;const a=this._series.data().valueAt(o),d=this._model.backgroundTopColor().value();if(null===a)return i;const u=a[1],p=a[2],_=a[3],g=a[4],{values:S}=this._changesData(g,o,t),T=(0,f.getPriceValueFormatterForSource)(this._series);if((0,f.shouldBeFormattedAsPercent)(this._series)||(0,f.shouldBeFormattedAsIndexedTo100)(this._series))i[6].value="";else if(void 0!==S){const e=this._series.formatter();i[6].value=(0,c.forceLTRStr)(`${e.format(S.change,!0)} (${b.format(S.percentChange,!0)})`)}if(t)i[5].value=null==g?v.notAvailable:T(g),i[5].visible=!0,i[6].visible=!0;else{i[0].value=null==u?v.notAvailable:T(u),i[1].value=null==p?v.notAvailable:T(p),i[2].value=null==_?v.notAvailable:T(_),i[3].value=null==g?v.notAvailable:T(g),i[4].value=T(this._series.barFunction()(a));const e=a[5];(0,r.isNumber)(e)?i[7].value=w.format(e):i[7].visible=!1}let x=null +;if(t&&!y)x=void 0===S||S.change>=0?m.SeriesBarColorer.upColor(this._series.properties()):m.SeriesBarColorer.downColor(this._series.properties());else{const e=this._series.barColorer().barStyle(o,!1);x=P(d,null!=e.barBorderColor?e.barBorderColor:e.barColor)}x=(0,l.resetTransparency)(P(d,x));for(const e of i)e.color=x;return i}_showLastPriceAndChangeOnly(){return S&&(null===this._model.crossHairSource().pane||(0,d.isLineToolName)(u.tool.value())||null!==this._model.lineBeingEdited())}_changesData(e,t,i){var s;if(i&&!y){const e=this._series.quotes();if(null!==e)return{values:{change:e.change,percentChange:e.change_percent}}}else{const i=this._series.data().search(t-1,h.PlotRowSearchMode.NearestLeft),r=null!==(s=null==i?void 0:i.value[4])&&void 0!==s?s:null;if(null!==r&&null!=e)return{values:{change:e-r,percentChange:(0,g.barPercentChange)(r,e)}}}return{}}}},47484:(e,t,i)=>{"use strict";i.d(t,{sessionsPreferencesDefault:()=>r});var s=i(45112);const r={graphics:{backgrounds:{outOfSession:{color:s.colorsPalette["color-tv-blue-500"],transparency:92,visible:!1},preMarket:{color:"#FF9800",transparency:92,visible:!1},postMarket:{color:s.colorsPalette["color-tv-blue-500"],transparency:92,visible:!1}},vertlines:{sessBreaks:{color:"#4985e7",style:2,visible:!1,width:1}}}}},50338:(e,t,i)=>{"use strict";i.d(t,{StatusProviderBase:()=>s});class s{constructor(e){this._colorProperty=e}size(){return"13px"}bold(){return!1}color(){return this._colorProperty.value()}}},45058:(e,t,i)=>{"use strict";i.d(t,{StatusView:()=>s});class s{constructor(e){this._text="",this._color="",this._size="13px",this._bold=!1,this._statusProvider=e}text(){return this._text}getSplitTitle(){return[this._text]}color(){return this._statusProvider.color()}bold(){return this._bold}size(){return this._size}}},245:(e,t,i)=>{"use strict";var s;i.d(t,{StoriesTimeLineItemType:()=>s}),function(e){e[e.Image=0]="Image",e[e.Emoji=1]="Emoji"}(s||(s={}))},70581:(e,t,i)=>{"use strict";i.d(t,{seriesPrice:()=>n,positionVisualDirection:()=>a,positionToCoordinate:()=>l,noDataBasePosition:()=>c,seriesBasePosition:()=>h,getNoDataPosition:()=>d,getSeriesPosition:()=>u});var s=i(88537),r=i(71053);function n(e,t,i){const s=e.barFunction();switch(e.style()){case 3:case 10:case 2:return s(t.value);default:return t.value[-1===i?3:2]}}function o(e){return e>=0?1:-1}function a(e,t){return-1===o(e)!==t?-1:1}function l(e,t,i,s){const r=Math.min(t,Math.max(0,1===s?i:t-i));return i-s*Math.abs(r*e/100)}function c(e,t,i){const s=e.index();return null===s?null:{index:s,price:t.coordinateToPrice(t.height()/2,i)}}function h(e,t){const i=e.data().bars(),s=i.first(),a=i.last();if(null===s||null===a)return null;let l;const c=t.index();if(null===c){if(void 0===t.time)return null;const e=t.time(),n=s.value[0],o=a.value[0];if(eo)return null;l=i.searchByTime(e,r.PlotRowSearchMode.NearestRight,4)}else l=i.search(c);return null===l?null:{index:l.index,price:n(e,l,o(t.position()))}}function d(e,t,i){const s=c(e,t,i);if(null===s)return null;const r=a(e.position(),t.isInverted());return{ +index:s.index,price:s.price,poleStartY:t.height(),visualDirection:1,positionPointDirection:r,startsOnSeriesData:!1}}function u(e,t,i=!0){const r=h(e,t),n=e.priceScale(),o=(0,s.ensureNotNull)(e.firstValue());if(null===r)return d(t,n,o);let l=0;const c=e.properties().childs(),u=e.model().timeScale(),p=n.priceToCoordinate(r.price,o);if(i)switch(e.style()){case 3:l=c.areaStyle.childs().linewidth.value()/2;break;case 2:l=c.lineStyle.childs().linewidth.value()/2;break;case 10:const e=Math.abs(100-c.baselineStyle.childs().baseLevelPercentage.value());l=n.height()*e/100>p?c.baselineStyle.childs().topLineWidth.value()/2:c.baselineStyle.childs().bottomLineWidth.value()/2;break;case 1:case 9:case 8:case 12:l=3;break;case 0:l=c.barStyle.childs().thinBars.value()?3:Math.max(3,.25*u.barSpacing());break;case 11:l=c.rangeStyle.childs().thinBars.value()?3:Math.max(3,.25*u.barSpacing());break;case 4:case 7:l=3;break;case 5:l=Math.max(4,.25*u.barSpacing());break;case 6:l=Math.max(5,.25*u.barSpacing())}const _=a(t.position(),n.isInverted()),m=p-_*l;return{index:r.index,price:r.price,poleStartY:m,visualDirection:_,positionPointDirection:_,startsOnSeriesData:!0}}},26582:(e,t,i)=>{"use strict";i.d(t,{materializeBackground:()=>o,dematerializeBackground:()=>a});var s=i(88537),r=i(2271),n=i(51344);function o(e,t){if(e.start>=t.length||e.stop>=t.length)return null;const i=t[e.start],n=t[e.stop];return n===r.INVALID_TIME_POINT_INDEX?null:((0,s.assert)(i===r.INVALID_TIME_POINT_INDEX||i<=n,"start should not exceed stop"),{start:i===r.INVALID_TIME_POINT_INDEX?null:i,stop:n})}function a(e,t,i){return{id:t,start:(0,n.ensureTimePointIndexIndex)(i.indexOf(null!==e.start?e.start:r.INVALID_TIME_POINT_INDEX)),stop:(0,n.ensureTimePointIndexIndex)(i.indexOf(e.stop))}}},54376:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LiveStudyGraphics:()=>o.LiveStudyGraphics,StaticStudyGraphics:()=>n.StaticStudyGraphics,createGraphicsPaneViews:()=>u,createGraphicsPriceAxisViews:()=>_,emptyStudyGraphics:()=>n.emptyStudyGraphics,isStudyGraphicsEmpty:()=>r.isStudyGraphicsEmpty,loadStudyGraphics:()=>n.loadStudyGraphics,saveStudyGraphics:()=>n.saveStudyGraphics});var s=i(98125),r=i(82065),n=i(81064),o=i(75871),a=i(97938);class l extends a.PriceAxisView{constructor(e,t){super(),this._source=e,this._data=t}_updateRendererData(e,t,i){e.visible=!1;const s=this._source.priceScale(),r=this._source.properties().visible.value();if(!s||s.isEmpty()||!r)return;const n=this._source.properties().graphics[this._data.lineType][this._data.styleId];if(!(n.visible&&n.visible.value()&&n.showPrice&&n.showPrice.value()&&this._isLabelVisibleAccordinglyToProperties()))return;const o=this._source.firstValue();if(null===o)return;const a=this._data.line.level,l=n.color.value();i.background=l,i.textColor=this.generateTextColor(l),i.coordinate=s.priceToCoordinate(a,o),e.text=s.formatPrice(a,o,!0),e.visible=!0}_isLabelVisibleAccordinglyToProperties(){return!!this._source.model().properties().childs().scalesProperties.childs().showStudyLastValue.value()&&this._source.properties().showLabelsOnPriceScale.value()}} +const c=(0,s.getLogger)("Chart.StudyGraphics"),h=new Set(["dwgtablecells"]);async function d(e,t,s,r){switch(e){case"hhists":return new((await i.e(507).then(i.bind(i,93742))).HHistPaneView)(t,s,r);case"horizlines":return new((await i.e(507).then(i.bind(i,22107))).HorizLinePaneView)(t,s,r);case"vertlines":return new((await i.e(507).then(i.bind(i,59778))).VertLinePaneView)(t,s,r);case"polygons":return new((await i.e(507).then(i.bind(i,54077))).PolygonPaneView)(t,s,r);case"backgrounds":return new((await i.e(507).then(i.bind(i,72984))).BackgroundPaneView)(t,s,r)}return null}async function u(e,t,i){const s=[],r=Object.keys(e.graphicsInfo());r.sort((e,t)=>p(e)-p(t));for(const n of r){const r=await d(n,e,t,i);null!==r?s.push(r):h.has(n)||c.logWarn(n+" is not supported by this build of graphics subsystem, skipping")}return s}function p(e){switch(e){case"polygons":return-100;case"trendchannels":return-90;default:return 0}}function _(e){const t=Object.keys(e.graphicsInfo()),i=[];for(const s of t)switch(s){case"hlines":e.graphics().hlines().forEach((t,r)=>{t.forEach(t=>{void 0!==t.level&&i.push(new l(e,{line:{level:t.level},styleId:r,lineType:s}))})});break;case"horizlines":e.graphics().horizlines().forEach((t,r)=>{t.forEach(t=>{void 0!==t.level&&i.push(new l(e,{line:{level:t.level},styleId:r,lineType:s}))})})}return i}},95018:(e,t,i)=>{"use strict";i.d(t,{HHistDirection:()=>s,HHistLocation:()=>r,HHistVolumeMode:()=>n,materializeHHist:()=>c,dematerializeHHist:()=>h});var s,r,n,o=i(88537),a=i(2271),l=i(51344);function c(e,t){if(e.firstBarTime>=t.length||e.lastBarTime>=t.length)return null;const i=t[e.firstBarTime],s=t[e.lastBarTime];return i===a.INVALID_TIME_POINT_INDEX||s===a.INVALID_TIME_POINT_INDEX?null:((0,o.assert)(i<=s,"firstBarTime should not exceed lastBarTime"),(0,o.assert)(e.priceLow<=e.priceHigh,"priceLow should not exceed priceHigh"),{firstBarTime:i,lastBarTime:s,rate:e.rate,priceHigh:e.priceHigh,priceLow:e.priceLow})}function h(e,t,i){const s=(0,l.ensureTimePointIndexIndex)(i.indexOf(e.firstBarTime)),r=(0,l.ensureTimePointIndexIndex)(i.indexOf(e.lastBarTime));return{id:t,...e,firstBarTime:s,lastBarTime:r}}!function(e){e.LeftToRight="left_to_right",e.RightToLeft="right_to_left"}(s||(s={})),function(e){e.Relative="relative",e.Absolute="absolute"}(r||(r={})),function(e){e.UpDown="Up/Down",e.Total="Total",e.Delta="Delta"}(n||(n={}))},15513:(e,t,i)=>{"use strict";i.d(t,{materializeHorizLine:()=>o,dematerializeHorizLine:()=>a});var s=i(88537),r=i(2271),n=i(51344);function o(e,t){if(e.startIndex>=t.length||e.endIndex>=t.length)return null;const i=t[e.startIndex],n=t[e.endIndex];return i===r.INVALID_TIME_POINT_INDEX||n===r.INVALID_TIME_POINT_INDEX?null:((0,s.assert)(i<=n,"startIndex should not exceed endIndex"),{startIndex:i,endIndex:n,level:e.level,extendLeft:e.extendLeft,extendRight:e.extendRight})}function a(e,t,i){const s=(0,n.ensureTimePointIndexIndex)(i.indexOf(e.startIndex)),r=(0,n.ensureTimePointIndexIndex)(i.indexOf(e.endIndex));return{id:t,...e,startIndex:s,endIndex:r}}},75871:(e,t,i)=>{"use strict";i.d(t,{ +LiveStudyGraphics:()=>d});var s=i(88537),r=i(95018),n=i(15513),o=i(57987),a=i(39834),l=i(26582),c=i(82065),h=i(81064);class d{constructor(){this._indexes=[],this._horizlines=new Map,this._vertlines=new Map,this._lines=new Map,this._hlines=new Map,this._textmarks=new Map,this._shapemarks=new Map,this._backgrounds=new Map,this._polygons=new Map,this._trendchannels=new Map,this._hhists=new Map,this._dwglabels=new Map,this._dwgboxes=new Map,this._dwglines=new Map,this._dwgtables=new Map,this._dwgtablecells=new Map,this._dwglinefills=new Map,this._hhistsByTimePointIndex=new Map}horizlines(){return this._horizlines}vertlines(){return this._vertlines}lines(){return this._lines}hlines(){return this._hlines}textmarks(){return this._textmarks}shapemarks(){return this._shapemarks}backgrounds(){return this._backgrounds}polygons(){return this._polygons}trendchannels(){return this._trendchannels}hhists(){return this._hhists}dwglabels(){return this._dwglabels}dwglines(){return this._dwglines}dwgboxes(){return this._dwgboxes}dwgtables(){return this._dwgtables}dwgtablecells(){return this._dwgtablecells}dwglinefills(){return this._dwglinefills}hhistsByTimePointIndex(){return this._hhistsByTimePointIndex}clear(){this._indexes=[],this._clearPrimitives()}extract(){const e=e=>e.extract(),t={indexes:this._indexes,horizlines:p(this._horizlines,e),vertlines:p(this._vertlines,e),lines:p(this._lines,e),hlines:p(this._hlines,e),textmarks:p(this._textmarks,e),shapemarks:p(this._shapemarks,e),backgrounds:p(this._backgrounds,e),polygons:p(this._polygons,e),trendchannels:p(this._trendchannels,e),hhists:p(this._hhists,e),dwglabels:p(this._dwglabels,e),dwglines:p(this._dwglines,e),dwgboxes:p(this._dwgboxes,e),dwgtables:p(this._dwgtables,e),dwgtablecells:p(this._dwgtablecells,e),dwglinefills:p(this._dwglinefills,e)};return this._hhistsByTimePointIndex=new Map,new h.StaticStudyGraphics("data",t)}replaceIndexesTo(e){this._indexes=e;const t=e=>e.replaceIndexesTo(this._indexes);this._horizlines.forEach(t),this._vertlines.forEach(t),this._lines.forEach(t),this._hlines.forEach(t),this._textmarks.forEach(t),this._shapemarks.forEach(t),this._backgrounds.forEach(t),this._polygons.forEach(t),this._trendchannels.forEach(t),this._hhists.forEach(t),this._dwglabels.forEach(t),this._dwgboxes.forEach(t),this._dwglines.forEach(t),this._dwgtables.forEach(t),this._dwgtablecells.forEach(t),this._dwglinefills.forEach(t),this._hhistsByTimePointIndex=(0,c.splitHHistsByTimePointIndex)(this._hhists)}processCommands(e,t){void 0!==e.erase&&this._processEraseCommands(e.erase),void 0!==e.create&&this._processCreateCommands(e.create,t)}_processCreateCommands(e,t){for(const i in e){if(!e.hasOwnProperty(i))continue;const c=i;switch((0,s.assert)(c in t,`There is a '${c}' in study response, but it doesn't present in graphics info!`),c){case"hhists":_(this._hhists,e[c],t[c],this._indexes,r.materializeHHist);break;case"horizlines":_(this._horizlines,e[c],t[c],this._indexes,n.materializeHorizLine);break;case"vertlines":_(this._vertlines,e[c],t[c],this._indexes,o.materializeVertLine) +;break;case"polygons":_(this._polygons,e[c],t[c],this._indexes,a.materializePolygon);break;case"backgrounds":_(this._backgrounds,e[c],t[c],this._indexes,l.materializeBackground)}}this._hhistsByTimePointIndex=(0,c.splitHHistsByTimePointIndex)(this._hhists)}_processEraseCommands(e){for(const t of e)if("all"===t.action)this._clearPrimitives();else{const e=e=>e.deleteById(t.id);switch(t.type){case"horizlines":this._horizlines.forEach(e);break;case"vertlines":this._vertlines.forEach(e);break;case"lines":this._lines.forEach(e);break;case"hlines":this._hlines.forEach(e);break;case"textmarks":this._textmarks.forEach(e);break;case"shapemarks":this._shapemarks.forEach(e);break;case"backgrounds":this._backgrounds.forEach(e);break;case"polygons":this._polygons.forEach(e);break;case"trendchannels":this._trendchannels.forEach(e);break;case"hhists":this._hhists.forEach(e);break;case"dwglabels":this._dwglabels.forEach(e);break;case"dwglines":this._dwglines.forEach(e);break;case"dwgboxes":this._dwgboxes.forEach(e);break;case"dwgtables":this._dwgtables.forEach(e);break;case"dwgtablecells":this._dwgtablecells.forEach(e);break;case"dwglinefills":this._dwglinefills.forEach(e)}}this._hhistsByTimePointIndex=(0,c.splitHHistsByTimePointIndex)(this._hhists)}_clearPrimitives(){this._horizlines.clear(),this._vertlines.clear(),this._lines.clear(),this._hlines.clear(),this._textmarks.clear(),this._shapemarks.clear(),this._backgrounds.clear(),this._polygons.clear(),this._trendchannels.clear(),this._hhists.clear(),this._dwglabels.clear(),this._dwgboxes.clear(),this._dwglines.clear(),this._dwgtables.clear(),this._dwgtablecells.clear(),this._dwglinefills.clear(),this._hhistsByTimePointIndex=new Map}}class u{constructor(e,t){this._primitivesDataById=new Map,this._primitiveById=new Map,this._materializePrimitive=e,this._indexes=t}forEach(e,t){this._primitiveById.forEach(i=>{e.call(t,i,i,this)})}has(e){let t=!1;return this._primitiveById.forEach(i=>{t=t||i===e}),t}get size(){return this._primitiveById.size}[Symbol.iterator](){throw new Error("Not implemented")}entries(){throw new Error("Not implemented")}keys(){throw new Error("Not implemented")}values(){throw new Error("Not implemented")}hasId(e){return this._primitiveById.has(e)}addData(e){this._primitivesDataById.set(e.id,e),this._tryMaterialize(e)}deleteById(e){this._primitiveById.delete(e),this._primitivesDataById.delete(e)}clear(){this._primitivesDataById.clear(),this._primitiveById.clear()}replaceIndexesTo(e){this._indexes=e,this._primitiveById.clear(),this._primitivesDataById.forEach(this._tryMaterialize,this)}extract(){const e=new Set(this._primitivesDataById.values());return this._primitivesDataById=new Map,this._primitiveById.clear(),e}_tryMaterialize(e){const t=this._materializePrimitive(e,this._indexes);null!==t&&((0,s.assert)(!this._primitiveById.has(e.id),"primitive with specified id should not exist"),this._primitiveById.set(e.id,t))}}function p(e,t){const i=new Map;return e.forEach((e,s)=>i.set(s,t(e))),i}function _(e,t,i,r,n){if(void 0!==t)for(const o of t){const t=o.styleId +;void 0!==i&&(0,s.assert)(t in i,"Every style used by graphics primitive should be declared in study metainfo");let a=e.get(t);void 0===a&&(a=new u(n,r),e.set(t,a)),o.data.forEach(a.addData.bind(a))}}},39834:(e,t,i)=>{"use strict";i.d(t,{materializePolygon:()=>n,dematerializePolygon:()=>o});var s=i(2271),r=i(51344);function n(e,t){for(const i of e.points){if(i.index>=t.length)return null;if(t[i.index]===s.INVALID_TIME_POINT_INDEX)return null}return{points:e.points.map(e=>({index:t[e.index],offset:e.offset,level:e.level}))}}function o(e,t,i){return{id:t,points:e.points.map(e=>({...e,index:(0,r.ensureTimePointIndexIndex)(i.indexOf(e.index))}))}}},81064:(e,t,i)=>{"use strict";i.d(t,{StaticStudyGraphics:()=>h,emptyStudyGraphics:()=>_,loadStudyGraphics:()=>m,saveStudyGraphics:()=>g});var s=i(2271),r=i(15513),n=i(57987),o=i(95018),a=i(39834),l=i(26582),c=i(82065);class h{constructor(e,t){if(this._indexes=[],this._horizlines=new Map,this._vertlines=new Map,this._lines=new Map,this._hlines=new Map,this._textmarks=new Map,this._shapemarks=new Map,this._backgrounds=new Map,this._polygons=new Map,this._trendchannels=new Map,this._hhists=new Map,this._dwglabels=new Map,this._dwglines=new Map,this._dwgboxes=new Map,this._dwgtables=new Map,this._dwgtablecells=new Map,this._dwglinefills=new Map,"data"===e){const e=t;this._indexes=e.indexes,this._vertlines=d(e.vertlines,this._indexes,n.materializeVertLine),this._horizlines=d(e.horizlines,this._indexes,r.materializeHorizLine),this._polygons=d(e.polygons,this._indexes,a.materializePolygon),this._hhists=d(e.hhists,this._indexes,o.materializeHHist),this._backgrounds=d(e.backgrounds,this._indexes,l.materializeBackground)}else if("state"===e){const e=t;this._indexes=e.indexes||[],this._vertlines=u(e.vertlines,this._indexes,n.materializeVertLine),this._horizlines=u(e.horizlines,this._indexes,r.materializeHorizLine),this._polygons=u(e.polygons,this._indexes,a.materializePolygon),this._hhists=u(e.hhists,this._indexes,o.materializeHHist),this._backgrounds=u(e.backgrounds,this._indexes,l.materializeBackground)}this._hhistsByTimePointIndex=(0,c.splitHHistsByTimePointIndex)(this._hhists)}horizlines(){return this._horizlines}vertlines(){return this._vertlines}lines(){return this._lines}hlines(){return this._hlines}textmarks(){return this._textmarks}shapemarks(){return this._shapemarks}backgrounds(){return this._backgrounds}polygons(){return this._polygons}trendchannels(){return this._trendchannels}hhists(){return this._hhists}dwglabels(){return this._dwglabels}dwglines(){return this._dwglines}dwgboxes(){return this._dwgboxes}dwgtables(){return this._dwgtables}dwgtablecells(){return this._dwgtablecells}dwglinefills(){return this._dwglinefills}hhistsByTimePointIndex(){return this._hhistsByTimePointIndex}}function d(e,t,i){const s=new Map;return e.forEach((e,r)=>{const n=s.get(r)||new Set;e.forEach(e=>{const s=i(e,t);null!==s&&n.add(s)}),s.set(r,n)}),s}function u(e,t,i){const s=new Map;if(void 0===e)return s;for(const r of e){const e=r.styleId,n=s.get(e)||new Set;r.data.forEach(e=>{const s=i(e,t) +;null!==s&&n.add(s)}),s.set(e,n)}return s}function p(e,t,i,s){const r=[];return e.forEach((e,n)=>{e.forEach(e=>{!function(e,t,i){let s=null;for(const i of e)i.styleId===t&&(s=i);null===s&&(s={styleId:t,data:[]},e.push(s)),s.data.push(i)}(r,n,s(e,t(e),i))})}),r.length>0?r:void 0}function _(){return new h}function m(e){return new h("state",e)}function g(e){const t=function(e){const t=new Set;e.horizlines().forEach((e,i)=>{e.forEach(e=>{t.add(e.startIndex),t.add(e.endIndex)})}),e.vertlines().forEach((e,i)=>{e.forEach(e=>{t.add(e.index)})}),e.lines().forEach((e,i)=>{e.forEach(e=>{t.add(e.startIndex),t.add(e.endIndex)})}),e.textmarks().forEach((e,i)=>{e.forEach(e=>{t.add(e.time)})}),e.shapemarks().forEach((e,i)=>{e.forEach(e=>{t.add(e.time)})}),e.backgrounds().forEach((e,i)=>{e.forEach(e=>{t.add(null!==e.start?e.start:s.INVALID_TIME_POINT_INDEX),t.add(e.stop)})}),e.polygons().forEach((e,i)=>{e.forEach(e=>{e.points.forEach(e=>{t.add(e.index)})})}),e.trendchannels().forEach((e,i)=>{e.forEach(e=>{t.add(e.startIndex),t.add(e.endIndex)})}),e.hhists().forEach((e,i)=>{e.forEach(e=>{t.add(e.firstBarTime),t.add(e.lastBarTime)})}),e.dwglabels().forEach((e,i)=>{e.forEach(e=>{t.add(e.x)})}),e.dwglines().forEach((e,i)=>{e.forEach(e=>{var i,r;t.add(null!==(i=e.x1)&&void 0!==i?i:s.INVALID_TIME_POINT_INDEX),t.add(null!==(r=e.x2)&&void 0!==r?r:s.INVALID_TIME_POINT_INDEX)})}),e.dwgboxes().forEach((e,i)=>{e.forEach(e=>{var i,r;t.add(null!==(i=e.left)&&void 0!==i?i:s.INVALID_TIME_POINT_INDEX),t.add(null!==(r=e.right)&&void 0!==r?r:s.INVALID_TIME_POINT_INDEX)})});const i=Array.from(t);return i.sort((e,t)=>e-t),i}(e),i={indexes:t};let c=0;const h=()=>++c;return i.vertlines=p(e.vertlines(),h,t,n.dematerializeVertLine),i.horizlines=p(e.horizlines(),h,t,r.dematerializeHorizLine),i.polygons=p(e.polygons(),h,t,a.dematerializePolygon),i.hhists=p(e.hhists(),h,t,o.dematerializeHHist),i.backgrounds=p(e.backgrounds(),h,t,l.dematerializeBackground),i}},95936:(e,t,i)=>{"use strict";var s,r,n,o;i.d(t,{MarkLocation:()=>s,HAlign:()=>r,LineStyle:()=>o}),function(e){e.AboveBar="AboveBar",e.BelowBar="BelowBar",e.Top="Top",e.Bottom="Bottom",e.Right="Right",e.Left="Left",e.Absolute="Absolute",e.AbsoluteUp="AbsoluteUp",e.AbsoluteDown="AbsoluteDown"}(s||(s={})),function(e){e.Left="left",e.Center="center",e.Right="right"}(r||(r={})),function(e){e.Top="top",e.Middle="middle",e.Bottom="bottom"}(n||(n={})),function(e){e[e.Solid=0]="Solid",e[e.Dotted=1]="Dotted",e[e.Dashed=2]="Dashed"}(o||(o={}))},82065:(e,t,i)=>{"use strict";i.d(t,{isStudyGraphicsEmpty:()=>r,splitHHistsByTimePointIndex:()=>n});const s=["horizlines","vertlines","lines","hlines","textmarks","shapemarks","backgrounds","polygons","trendchannels","hhists","dwglabels","dwglines","dwgboxes","dwgtables","dwgtablecells","dwglinefills"];function r(e){return!s.some(t=>e[t]().size>0)}function n(e){const t=new Map;return e.forEach((e,i)=>{e.forEach(e=>{const s={...e,styleId:i},r=e.firstBarTime;let n=t.get(r);void 0===n&&(n=new Set,t.set(r,n)),n.add(s)})}),t}},57987:(e,t,i)=>{"use strict";i.d(t,{ +materializeVertLine:()=>n,dematerializeVertLine:()=>o});var s=i(2271),r=i(51344);function n(e,t){if(e.index>=t.length)return null;const i=t[e.index];return i===s.INVALID_TIME_POINT_INDEX?null:{startPrice:e.startPrice,endPrice:e.endPrice,index:i,extendTop:e.extendTop,extendBottom:e.extendBottom}}function o(e,t,i){const s=(0,r.ensureTimePointIndexIndex)(i.indexOf(e.index));return{id:t,...e,index:s}}},99682:(e,t,i)=>{"use strict";i.d(t,{HHistBasedValuesProvider:()=>_});var s=i(93751),r=i(88537),n=i(49483),o=i(71053),a=i(85733),l=i(67802),c=i(95018),h=i(44601),d=i(57626);function u(e,t="",i=""){return{id:t,index:e,title:i,value:"",visible:!1}}const p=n.CheckMobile.any();class _{constructor(e,t){this._emptyValues=[],this._study=e,this._model=t,void 0!==this._study.metaInfo().graphics.hhists&&this._emptyValues.push(u(0),u(1),u(2))}getItems(){return this._emptyValues}getValues(e){const t=this._emptyValues.map(e=>({...e}));t.forEach(e=>{e.visible=this._study.isVisible(),e.value=d.notAvailable});const i=this._study.properties().child("inputs").child("volume").value();switch(i){case c.HHistVolumeMode.UpDown:t[0].title="Up",t[1].title="Down",t[2].title="Total";break;case c.HHistVolumeMode.Total:t[0].title="Total",t[1].visible=!1,t[2].visible=!1;break;case c.HHistVolumeMode.Delta:t[0].title="Delta",t[1].title="Max(Up, Down)",t[2].title="Total"}const n=this._study.priceScale(),a=this._model.timeScale();if(null===n||n.isEmpty()||a.isEmpty()||this._hideValues())return t;if(null===e||!isFinite(e)){const i=this._study.data().last();if(null===i)return t;e=i.index}const h=this._model.crossHairSource(),u=h.price;if(!isFinite(h.y)&&null===(e=function(e,t){var i;const s=null===(i=e.visibleBarsStrictRange())||void 0===i?void 0:i.lastBar();if(!s)return null;const r=t.data().search(s,o.PlotRowSearchMode.NearestLeft);return r?r.index:null}(this._model.timeScale(),this._model.mainSeries())))return t;const p=function(e,t,i,s){if(0===e.size)return null;if(!i){const e=(0,r.ensureNotNull)(s.data().valueAt(t));i=s.barFunction()(e)}const n=function(e,t){let i=null;return e.forEach((e,s)=>{s<=t&&(null===i||s>i)&&(i=s)}),i}(e,t);if(null===n)return null;const o=e.get(n);if(!o||0===o.size)return null;return function(e,t){let i=null;return e.forEach(e=>{e.priceLow<=t&&t{e.value="0"}),t;const _=this._study.metaInfo().graphics.hhists;if(void 0===_)return t;if(void 0===_[p.styleId])return t;const m=this._study.properties().child("graphics").child("hhists").child(p.styleId),g=new l.VolumeFormatter,f=e=>(0,s.isNumber)(e)?g.format(e):"";if(i!==c.HHistVolumeMode.Delta){if(p.rate.forEach((e,i)=>{t[i].value=f(e),t[i].color=m.colors[i].value()}),i===c.HHistVolumeMode.UpDown){const e=p.rate[0]+p.rate[1];t[2].value=f(e),t[2].color=m.valuesColor.value()}}else{const e=p.rate[0]>p.rate[1]?0:1,i=m.colors[e].value(),s=p.rate[0]+p.rate[1];[2*p.rate[e]-s,p.rate[e],s].forEach((e,s)=>{t[s].value=f(e),t[s].color=i})}return t} +_hideValues(){return p&&(null===this._model.crossHairSource().pane||(0,h.isLineToolName)(a.tool.value())||null!==this._model.lineBeingEdited())}}},72857:(e,t,i)=>{"use strict";i.d(t,{makeNextSymbolId:()=>r,makeNextStudyId:()=>o});let s=0;function r(){return s++,"ss_"+s}let n=0;function o(){return n++,"st"+n}},5402:(e,t,i)=>{"use strict";i.d(t,{migrateMetaInfoAndPropState:()=>_});var s=i(88537),r=i(67072),n=i.n(r),o=i(80643);const a=["Moving Average@tv-basicstudies","Moving Average Exponential@tv-basicstudies"];class l{targetMetaInfoVersion(){return 53}migrateMetaInfo(e){const t=e;e._metainfoVersion=53,a.includes(t.id)}migratePropState(e){var t,i,s;a.includes(e.id)&&(e.inputs.length=null!==(t=e.inputs.length)&&void 0!==t?t:e.inputs.in_0,e.inputs.source=null!==(i=e.inputs.source)&&void 0!==i?i:e.inputs.in_1,e.inputs.offset=null!==(s=e.inputs.offset)&&void 0!==s?s:e.inputs.in_2,delete e.inputs.in_0,delete e.inputs.in_1,delete e.inputs.in_2,e.plots[1]={id:"smoothedMA",type:"line"},e.styles.smoothedMA={display:0,linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:0,color:"#0496ff",histogramBase:0,joinPoints:!1,title:"Smoothed MA"})}}const c=["Volume@tv-basicstudies"];class h{targetMetaInfoVersion(){return 53}migrateMetaInfo(e){const t=e;e._metainfoVersion=53,c.includes(t.id)}migratePropState(e){var t;c.includes(e.id)&&(e.inputs.maLength=null!==(t=e.inputs.length)&&void 0!==t?t:e.inputs.maLength,delete e.inputs.length,delete e.inputs.offset,delete e.inputs.source,e.plots[1]={id:"smoothedMA",type:"line"},e.styles.smoothedMA={display:0,linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:0,color:"#0496ff",histogramBase:0,joinPoints:!1,title:"Smoothed MA"})}}const d=["Relative Strength Index@tv-basicstudies","Commodity Channel Index@tv-basicstudies","On Balance Volume@tv-basicstudies"];class u{targetMetaInfoVersion(){return 53}migrateMetaInfo(e){const t=e;e._metainfoVersion=53,d.includes(t.id)}migratePropState(e){d.includes(e.id)&&(e.plots[1]={id:"smoothedMA",type:"line"},e.styles.smoothedMA={display:0,linestyle:0,linewidth:1,plottype:0,trackPrice:!1,transparency:0,color:"#0496ff",histogramBase:0,joinPoints:!1,title:"Smoothed MA"})}}const p=[new class{targetMetaInfoVersion(){return 47}migrateMetaInfo(e){const t=e,i=e;if(i._metainfoVersion=47,!t.defaults||void 0===t.defaults.precision)return void(i.format={type:"inherit"});const s=t.defaults&&t.defaults.precision,r=(0,o.isNumber)(s)?s:parseInt(s);0===r?i.format={type:"volume"}:isFinite(r)?i.format={type:"price",precision:r}:i.format={type:"inherit"},delete t.defaults.precision}migratePropState(e){}},new class{targetMetaInfoVersion(){return 50}migrateMetaInfo(e){const t=e,i=e;if(i._metainfoVersion=50,void 0===t.defaults||void 0===t.defaults.ohlcPlots||void 0===t.ohlcPlots)return;const r=t.ohlcPlots,n=t.defaults.ohlcPlots,o=(0,s.ensureDefined)((0,s.ensureDefined)(i.defaults).ohlcPlots);for(const e of Object.keys(n)){const t=n[e];if("ohlc_candles"===t.plottype){let i=!1;const s=r[e];void 0!==s&&(i=!!s.drawBorder,delete s.drawBorder),o[e]={borderColor:"#000000", +drawBorder:i,...t}}}}migratePropState(e){}}];function _(e,t){const i=n().versionOf(e),r=e;void 0===r._serverMetaInfoVersion&&(r._serverMetaInfoVersion=i),p.forEach(r=>{i<0||i>=r.targetMetaInfoVersion()||(r.migrateMetaInfo(e),void 0!==t&&r.migratePropState(t),(0,s.assert)(e._metainfoVersion===r.targetMetaInfoVersion()))})}p.push(new l),p.push(new h),p.push(new u),p.sort((function(e,t){return e.targetMetaInfoVersion()-t.targetMetaInfoVersion()}))},13672:(e,t,i)=>{"use strict";i.d(t,{NonSeriesStudy:()=>n});var s=i(88537),r=i(66101);class n extends r.Study{clearData(){this._customData=null,this._indexes=null}restoreData(e,t,i){super.restoreData(e),this._customData=t,this._indexes=i}state(e){const t=super.state(e);return e&&(t.nonSeriesData=this._customData,t.indexes=this._indexes),t}customData(){return this._customData}_setPaneViews(e){this._paneViews=e,this.model().lightUpdate()}_onDataUpdated(e,t,i){null!==t&&(t.indexes_replace?((0,s.assert)("nochange"!==i),this._indexes=i):(this._customData=t.data,"nochange"!==i&&(this._indexes=i))),super._onDataUpdated(e,t,i)}}},52457:(e,t,i)=>{"use strict";i.d(t,{OverlayLegendValuesProvider:()=>C});var s=i(37667),r=i(93751),n=i(28353),o=i(49483),a=i(68906),l=i(62820),c=i(26811),h=i(83393),d=i(71053),u=i(14291),p=i(85733),_=i(89128),m=i(33981),g=i(88129),f=i(57626);const v=o.CheckMobile.any(),S=v&&!0,y=new c.PercentageFormatter,b=f.notAvailable,w=`${b} (${b}%)`;class C extends class{constructor(e,t){this._study=e,this._model=t,this._emptyValues=[{title:(0,n.t)("Open"),visible:!1,value:"",index:0,id:""},{title:(0,n.t)("High"),visible:!1,value:"",index:1,id:""},{title:(0,n.t)("Low"),visible:!1,value:"",index:2,id:""},{title:(0,n.t)("Close"),visible:!1,value:"",index:3,id:""},{title:"",visible:!1,value:"",index:4,id:""},{title:"",visible:!1,value:"",index:5,id:""},{title:(0,n.t)("Change"),visible:!1,value:"",index:6,id:""}]}getItems(){return this._emptyValues}getValues(e){const t=this._emptyValues.map(e=>({...e}));if(this._model.timeScale().isEmpty())return t;if(0===this._study.data().size())return t;const i=this._showLastPriceAndChangeOnly();if((0,r.isNumber)(e)||(i?e=this._study.data().lastIndex():(e=this._model.crossHairSource().appliedIndex(),(0,r.isNumber)(e)||(e=this._study.data().lastIndex()))),null===e||!(0,r.isNumber)(e))return t;const s=this._study.data().search(e,d.PlotRowSearchMode.NearestLeft,1),n=this._model.backgroundTopColor().value();if(null===s)return t;const o=s.index,c=s.value,u=c[1],p=c[2],_=c[3],f=c[4];t[0].value=b,t[1].value=b,t[2].value=b,t[3].value=b,t[6].value=w;for(const e of t)e.visible=!i;const v=t[4];v.visible=!1;const{values:C}=this._changesData(f,u,o,i),P=(0,g.getPriceValueFormatterForSource)(this._study);if((0,g.shouldBeFormattedAsPercent)(this._study)||(0,g.shouldBeFormattedAsIndexedTo100)(this._study))t[6].value="";else if(void 0!==C){const e=this._study.formatter();t[6].value=(0,l.forceLTRStr)(`${e.format(C.change,!0)} (${y.format(C.percentChange,!0)})`)}i?(t[5].value=null==f?b:P(f),t[5].visible=!0,t[6].visible=!0):(t[0].value=null==u?b:P(u), +t[1].value=null==p?b:P(p),t[2].value=null==_?b:P(_),t[3].value=null==f?b:P(f),v.value=P(this._study.barFunction()(c)),t[5].visible=!1);let T=null;if(i&&!S)T=void 0===C||C.change>=0?m.SeriesBarColorer.upColor(this._study.properties()):m.SeriesBarColorer.downColor(this._study.properties());else{const e=this._study.barColorer().barStyle(o,!1),t=null!=e.barBorderColor?e.barBorderColor:e.barColor;T=(0,h.calculateColor)(n,t)}T=(0,a.resetTransparency)((0,h.calculateColor)(n,T));for(const e of t)e.color=T;return t}_showLastPriceAndChangeOnly(){return v&&(null===this._model.crossHairSource().pane||(0,u.isLineToolName)(p.tool.value())||null!==this._model.lineBeingEdited())}_changesData(e,t,i,s){var r;if(s&&!S){const e=this._study.quotes();if(null!==e)return{values:{change:e.change,percentChange:e.change_percent},priceDirection:{basedOnCurrentBar:e.change>=0?0:1,basedOnPrevClose:e.change>=0?0:1}}}else{const s=this._study.data().search(i-1,d.PlotRowSearchMode.NearestLeft,1),n=null!==(r=null==s?void 0:s.value[4])&&void 0!==r?r:null;if(null!==n&&null!=e&&null!=t)return{values:{change:e-n,percentChange:(0,_.barPercentChange)(n,e)},priceDirection:{basedOnCurrentBar:e>=t?0:1,basedOnPrevClose:e>=n?0:1}}}return null==e||null==t?{}:{priceDirection:{basedOnCurrentBar:e>=t?0:1,basedOnPrevClose:e>=t?0:1}}}}{constructor(e,t){super(e,t);const i=t.properties().childs().paneProperties.childs().legendProperties.childs();this._showBarChange=i.showBarChange,this._showSeriesOHLC=i.showSeriesOHLC,this._seriesStyle=e.properties().childs().style}getValues(e){const t=super.getValues(e);if(!this._showLastPriceAndChangeOnly()){const e=(0,s.isPriceSourceStyle)(this._seriesStyle.value()),i=this._showSeriesOHLC.value(),r=i&&!e,n=i&&e;t[0].visible=r,t[1].visible=r,t[2].visible=r,t[3].visible=r,t[6].visible=this._showBarChange.value(),t[4].visible=n}return t}}},79284:(e,t,i)=>{"use strict";i.d(t,{OverlayStatusProvider:()=>r});var s=i(40529);class r extends s.StudyStatusProvider{getSplitTitle(){return this._source.titleInParts(!0,void 0,!1,!1)}text(){return this._source.isActualInterval()?this._source.isFailed()?`${this._source.title(!0,void 0,!1,!1)}: ${this.sourceStatusText()}`:`${this._source.title(!0,void 0,!1,!1)} ${this.sourceStatusText()}`:this._source.title(!0,void 0,!1,!1)}}},28283:(e,t,i)=>{"use strict";i.d(t,{PivotPointsStandardLastPricesView:()=>o});var s=i(71053);const r=["p","s1","r1","s2","r2","s3","r3","s4","r4","s5","r5"],n={P:"P",S1:"S1/R1",S2:"S2/R2",S3:"S3/R3",S4:"S4/R4",S5:"S5/R5",R1:"S1/R1",R2:"S2/R2",R3:"S3/R3",R4:"S4/R4",R5:"S5/R5"};class o{constructor(e){this._visiblePivots=new Set,this._invidated=!0,this._prices=[],this._source=e}visiblePivots(){return this._visiblePivots}update(){this._invidated=!0}prices(){return this._invidated&&(this._updateImpl(),this._invidated=!1),this._prices}_updateImpl(){this._visiblePivots.clear();const e=this._source.model(),t=this._source.priceScale();if(null===t)return;if(e.timeScale().isEmpty()||t.isEmpty())return;const i=e.timeScale().visibleBarsStrictRange();if(null===i)return +;if(!this._source.customData()||!this._source.customData().pivots)return;const o=e.mainSeries().bars().search(i.lastBar(),s.PlotRowSearchMode.NearestLeft);if(null===o)return;const a=o.index,l=this._source.customData().pivots,c=this._source.indexes(),h=this._source.properties(),d=this._source.firstValue();for(let e=0;e=a||o)){this._visiblePivots.add(l[e]),this._prices=[];for(let i=0;i{"use strict";i.d(t,{PaneRendererStandardPivotLabel:()=>r});var s=i(84346);class r{constructor(e,t,i){this._drawRects=[],this._cacheProvider=e,this._point=t,this._label=i}draw(e,t){const i=this._cacheProvider(t);e.save(),e.setTransform(1,0,0,1,0,0);const s=t.pixelRatio;this._drawRects=[];const r=t=>{const r=i.labelRectByIndex(t),n={left:Math.round(this._point.x-r.width+o),top:Math.round(this._point.y-r.height/2),width:r.width,height:r.height};return e.drawImage(i.canvas(),Math.round(r.left*s),Math.round(r.top*s),r.width*s,r.height*s,Math.round(n.left*s),Math.round(n.top*s),n.width*s,n.height*s),this._drawRects.push(n),r.width},n=this._label.split("/");let o=0;for(let e=0;e0&&(o+=r(t+11)/2),o+=r(t)/2}e.restore()}hitTest(e){for(const t of this._drawRects)if(e.x>=t.left&&e.x<=t.left+t.width&&e.y>=t.top&&e.y<=t.top+t.height)return new s.HitTestResult(s.HitTestResult.REGULAR);return null}}},66632:(e,t,i)=>{"use strict";i.d(t,{StandardPivotPointsImageCache:()=>n});var s=i(93435),r=i(88537);class n{constructor(e,t,i,r){this._priceAxisFontSize=11,this._prices=[],this._labelWidth=0,this._paneRenderParams=e,this._recreateCanvasAndContext(new s.Size(0,0)),this.reset({font:t,fontSize:i,backColors:r})}destroy(){delete this._canvas,delete this._cache}canvas(){return this._canvas}reset(e){this._renderParams=e,this._prices=[],this._cache.font=e.fontSize+"px "+e.font,this._labelWidth=["P","S1","R1","S2","R2","S3","R3","S4","R4","S5","R5","/"].reduce((e,t)=>{const i=this._cache.measureText(t).width;return Math.max(i,e)},0)}rowHeight(){return this._priceAxisFontSize+4}labelRectByIndex(e){return{left:0,top:Math.round(this._topByIndex(e)),width:Math.round(this._labelWidth+4),height:Math.round(this._renderParams.fontSize+8)}}setPrices(e){let t=!1;const i=(e,t)=>{const i=void 0===e,s=void 0===t;return(!i&&!s||i===s)&&(0,r.ensureDefined)(e).formatted===(0,r.ensureDefined)(t).formatted};if(e.length!==this._prices.length)t=!0;else for(let s=0;s{this._cache.translate(.5,.5),this._cache.font=this._renderParams.fontSize+"px "+this._renderParams.font,this._cache.textBaseline="middle";for(let e=0;e{"use strict";i.d(t,{StandardPivotPointsPriceAxisView:()=>n});var s=i(97938);const r=["P","S1","R1","S2","R2","S3","R3","S4","R4","S5","R5"];class n extends s.PriceAxisView{constructor(e,t){super(),this._source=e,this._data=t;const i=t.name;this._completeName="P"===i.toUpperCase()?"P":`S${i[1]}/R${i[1]}`}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const s=this._source.properties();if(!s.visible.value())return;const n=this._completeName,o=s.levelsStyle.visibility;if(!o[n]||!o[n].value())return;const a=this._source.model().timeScale(),l=this._source.priceScale();if(a.isEmpty()||null===a.visibleBarsStrictRange()||null!==l&&l.isEmpty())return;const c=this._source.customData();if(!c||!c.pivots)return;const h=this._source.pricesView().prices()[r.indexOf(this._data.name.toUpperCase())];if(!h)return;i.background=h.color,i.textColor=this.generateTextColor(h.color),i.coordinate=h.coordinate,i.floatCoordinate=h.floatCoordinate;const d=this._source.model().properties().childs().scalesProperties.childs();d.showStudyLastValue.value()&&(e.text=h.formatted,e.visible=!0),d.showStudyPlotLabels.value()&&(t.text=this._source.priceLabelText(this._data.name),t.visible=!0)}}},46319:(e,t,i)=>{"use strict";var s=i(69927).PriceRange,r=i(86441).Point,n=i(190).StudyStatusView,o=i(26179).StudyDataWindowView,a=i(13672).NonSeriesStudy,l=i(37157).StandardPivotPointsPriceAxisView,c=i(28978).PanePriceAxisView,h=i(84346).HitTestResult,d=i(94804).CompositeRenderer,u=i(15712).areEqualPaneRenderParams,p=i(66632).StandardPivotPointsImageCache,_=i(28283).PivotPointsStandardLastPricesView,m=i(19722).PaneRendererStandardPivotLabel,g=i(40254).HorizontalLineRenderer,f=i(22799);class v{constructor(e,t){this._model=e,this._source=t,this._pivots=[],this._textCache={}}setCache(e){this._cache=e}priceAxisViews(e,t){return this._priceAxisViews}mergeLabel(e,t,i){var s=""+t;void 0===e[s]?(e[s]={},e[s].text=i,e[s].ids=[this.complete(i)]):(e[s].text+="/"+i,e[s].ids.push(this.complete(i)))}complete(e){return"P"===e?e:"S"+e[1]+"/R"+e[1]}update(){this._invalidated=!0}_updateImpl(){if(this._source.pricesView().prices(), +this._pivots=[],this._source.customData()&&this._source.customData().pivots&&this._source.properties().visible.value()){var e=this._source.customData().pivots,t=this._source._indexes,i=this._model.timeScale(),s=this._source.priceScale();if(s&&!s.isEmpty()&&!i.isEmpty()&&e){var r=i.visibleBarsStrictRange(),n=r.firstBar(),o=r.lastBar();if(this._source.ownerSource())for(var a=this._source.ownerSource().firstValue(),l=0;lo)){var d={},u=this._source.properties().levelsStyle.visibility;u.P.value()&&this.mergeLabel(d,e[l].p,"P"),u["S1/R1"].value()&&(this.mergeLabel(d,e[l].s1,"S1"),this.mergeLabel(d,e[l].r1,"R1")),u["S2/R2"].value()&&(this.mergeLabel(d,e[l].s2,"S2"),this.mergeLabel(d,e[l].r2,"R2")),u["S3/R3"].value()&&(this.mergeLabel(d,e[l].s3,"S3"),this.mergeLabel(d,e[l].r3,"R3")),u["S4/R4"].value()&&(this.mergeLabel(d,e[l].s4,"S4"),this.mergeLabel(d,e[l].r4,"R4")),u["S5/R5"].value()&&(this.mergeLabel(d,e[l].s5,"S5"),this.mergeLabel(d,e[l].r5,"R5"));var p=i.indexToCoordinate(c),_=i.indexToCoordinate(h);for(var m in d){var g=parseFloat(m),f=s.priceToCoordinate(g,a);this._pivots.push({x1:p,x2:_,y:f,label:d[m].text,labelIds:d[m].ids,src:e[l]})}}}}}}renderer(){this._invalidated&&(this._updateImpl(),this._invalidated=!1);for(var e=new d,t=this._source.properties().levelsStyle.colors,i=this._source.properties().levelsStyle.widths,s=this._source.visiblePivots(),n=0;nt)){var l=[],c=this._properties.levelsStyle.visibility;c.P.value()&&l.push(i[o].p),c["S1/R1"].value()&&l.push(i[o].s1,i[o].r1),c["S2/R2"].value()&&l.push(i[o].s2,i[o].r2),c["S3/R3"].value()&&l.push(i[o].s3,i[o].r3),c["S4/R4"].value()&&l.push(i[o].s4,i[o].r4),c["S5/R5"].value()&&l.push(i[o].s5,i[o].r5);for(var h=0;h{"use strict";function s(e){e.lineWidth=void 0,e.lineStyle=void 0;for(let t=0;ts,createEmptyStyle:()=>r})},68617:(e,t,i)=>{"use strict";i.d(t,{PaneRendererColumns:()=>r});var s=i(84346);class r{constructor(e){this._data=null, +this._precalculatedCache=[],this.setData(e)}setData(e){this._data=e,this._precalculatedCache=[]}draw(e,t){var i,s,r,n;if(null===this._data||0===this._data.items.length)return;const o=t.pixelRatio;this._precalculatedCache.length||this._fillPrecalculatedCache(o);const a=Math.max(1,Math.floor(o)),l=Math.round(this._data.histogramBase*o)-Math.floor(a/2),c=l+a,h=this._data.lineColor,d=null!==(s=null===(i=this._data.visibleItemsRange)||void 0===i?void 0:i.startItemIndex)&&void 0!==s?s:0,u=(null!==(n=null===(r=this._data.visibleItemsRange)||void 0===r?void 0:r.endItemIndex)&&void 0!==n?n:this._data.items.length)-1;for(let t=d;t<=u;t++){const i=this._data.items[t],s=this._precalculatedCache[t-d],r=Math.round(i.y*o),n=i.style?i.style.color:h;let u,p;e.fillStyle=n,r<=l?(u=r,p=c):(u=l,p=r-Math.floor(a/2)+a),e.fillRect(s.left,u,s.right-s.left+1,p-u)}}hitTest(e){if(null===this._data)return null;const t=.5*this._data.barSpacing,i=e.x-t,r=e.x+t;for(const t of this._data.items){const n=t.x;if(n>=i&&n<=r){const i=t.y;if(e.y>=Math.min(i,this._data.histogramBase)&&e.y<=Math.max(i,this._data.histogramBase))return new s.HitTestResult(s.HitTestResult.REGULAR)}}return null}_fillPrecalculatedCache(e){var t,i,s,r;if(null===this._data||0===this._data.items.length)return void(this._precalculatedCache=[]);const n=Math.ceil(this._data.barSpacing*e)<=1?0:Math.max(1,Math.floor(e)),o=Math.round(this._data.barSpacing*e)-n,a=null!==(i=null===(t=this._data.visibleItemsRange)||void 0===t?void 0:t.startItemIndex)&&void 0!==i?i:0,l=(null!==(r=null===(s=this._data.visibleItemsRange)||void 0===s?void 0:s.endItemIndex)&&void 0!==r?r:this._data.items.length)-1,c=l-a+1;if(c<=0)return void(this._precalculatedCache=[]);this._precalculatedCache=new Array(c);for(let t=a;t<=l;t++){const i=this._data.items[t],s=Math.round(i.x*e);let r,n;if(o%2){const e=(o-1)/2;r=s-e,n=s+e}else{const e=o/2;r=s-e,n=s+e-1}this._precalculatedCache[t-a]={left:r,right:n,roundedCenter:s,center:i.x*e,time:i.timePointIndex}}for(let e=a+1;e<=l;e++){const t=this._precalculatedCache[e-a],i=this._precalculatedCache[e-a-1];t.time===i.time+1&&(t.left-i.right!==n+1&&(i.roundedCenter>i.center?i.right=t.left-n-1:t.left=i.right+n+1))}let h=Math.ceil(this._data.barSpacing*e);for(let e=a+1;e<=l;e++){const t=this._precalculatedCache[e-a];t.right0&&h<4)for(let e=a+1;e<=l;e++){const t=this._precalculatedCache[e-a];t.right-t.left+1>h&&(t.roundedCenter>t.center?t.right-=1:t.left+=1)}}}},2662:(e,t,i)=>{"use strict";i.d(t,{StudyPlotPaneView:()=>V});var s=i(88537),r=i(86441),n=i(24377),o=i(67337),a=i(64514),l=i(80643),c=i(68906),h=i(98619);function d(e,t){const i=new Map;return function(...s){const r=""+(t?t.apply(null,s):s[0]);if(!i.has(r)){const t=e.apply(this,s);return i.set(r,t),t}return i.get(r)}}var u=i(84346),p=i(84705),_=i(94804),m=i(46214),g=i(28113),f=i(85847),v=i(41892),S=i(31175),y=i(49094),b=i(49483);class w{constructor(e){this._data=e}draw(e,t){var i,s,r,n +;const o=this._data,a=t.pixelRatio,c=Math.max(1,Math.floor(a))%2?.5:0,h=o.vertOffset||0,d=o.lineColor||o.color,u=o.lineWidth||o.height/2;let p="",_=!1;const m=null!==(s=null===(i=o.visibleItemsRange)||void 0===i?void 0:i.startItemIndex)&&void 0!==s?s:0,g=null!==(n=null===(r=o.visibleItemsRange)||void 0===r?void 0:r.endItemIndex)&&void 0!==n?n:o.items.length;for(let t=m;t{const t=(0,n.rgbToHsl)((0,n.parseRgb)(e)),i=t[0]+.05;return t[0]=i-Math.floor(i),(0,n.rgbToHexString)((0,n.hslToRgb)(t))},k=d(E);function D(e,t){if(null===e)return t;const i=e.firstIndex,s=t.firstIndex,r=e.clearData||t.clearData;return{firstIndex:r||void 0===i||void 0===s?void 0:Math.min(i,s),clearData:r}}class V{constructor(e,t,i,s){this._histogramBase=null,this._items=[],this._selectionData=null,this._lineColor="",this._lineWidth=1,this._color1="",this._color2="",this._dataInvalidated=null,this._viewportInvalidated=!1,this._renderer=new _.CompositeRenderer,this._isMarkersEnabled=o.enabled("source_selection_markers"),this._study=e,this._series=t,this._model=i,this._plotName=s,this._plotIndex=e.metaInfo().plots.findIndex(e=>e.id===s),this._colorProvider=(0,M.createStudyPlotColorProvider)(e.metaInfo(),e.properties(),s),this._selectionIndexer=new f.SelectionIndexes(i.timeScale())}items(){return this._items}update(e){if("global-change"===e.type)return this._dataInvalidated=D(this._dataInvalidated,{}),void(this._viewportInvalidated=!0);if("data-source-change"!==e.type)this._viewportInvalidated=!0;else{if(e.dataSourceId===this._study.id()){const t=D(this._dataInvalidated,{firstIndex:e.firstUpdatedTimePointIndex,clearData:e.clearData});this._dataInvalidated=t}}}renderer(){return this._dataInvalidated?this._updateImplFull(this._viewportInvalidated)&&(this._dataInvalidated=null):this._viewportInvalidated&&this._updateImplLight(),this._viewportInvalidated=!1,this._renderer}_getTranspValue(){const e=this._study.properties(),t=e.styles[this._plotName];let i=0;const s=this._study.metaInfo();return"Volume@tv-basicstudies"===s.id&&s.version<=46&&"transparency"in e?(i=e.transparency.value(),i=(0,l.isNumber)(i)?i:0,i):(t.transparency&&(i=t.transparency.value(),i=(0,l.isNumber)(i)?i:0),i)}_updateImplFull(e){var t,i,n,o;const l=this._study.properties().styles[this._plotName];if(this._renderer.clear(),(null===(t=this._dataInvalidated)||void 0===t?void 0:t.clearData)&&(this._items=[]),!l.visible.value())return!1;if(!this._study.priceScale())return!1;const h=this._study.firstValue();if(null===h)return!1;const d=this._study.priceScale();if(null===d)return!1;this._histogramBase=null;const u=this._study.data(),p=u.size();if(0===p)return!1 +;const _=this._study.offset(this._plotName);let m=null===(i=this._dataInvalidated)||void 0===i?void 0:i.firstIndex;const g=l.plottype.value(),f=[I.LineStudyPlotStyle.Line,I.LineStudyPlotStyle.Area,I.LineStudyPlotStyle.Circles,I.LineStudyPlotStyle.Cross].indexOf(g)>=0;if(p!==this._items.length){const e=void 0!==m?m+_:void 0;if(void 0===e||0===this._items.length||e<(0,s.ensureDefined)(this._items[0].timePointIndex))this._items=[],u.each((e,t)=>{const i=t[this._plotIndex+1];if(f&&null==i||e<=-1e6)return!1;const s=new r.Point(NaN,NaN);return s.origPrices=new r.Point(NaN,NaN),s.timePointIndex=e+_,this._items.push(s),!1}),m=this._items.length?(0,s.ensureDefined)(this._items[0].timePointIndex)-_:void 0;else{const e=this._items[this._items.length-1].timePointIndex,t=(0,s.ensureDefined)(e)-_,i=(0,s.ensureNotNull)(u.lastIndex())+1,n=u.rangeIterator(t+1,i);for(;n.hasNext();){const e=n.next(),t=e.value[this._plotIndex+1],i=null==t;if(f&&i||e.index<-1e6)continue;const s=new r.Point(NaN,NaN);s.origPrices=new r.Point(NaN,NaN),s.timePointIndex=e.index+_,this._items.push(s)}}}let v=NaN,y=NaN;const b=new Map,w=(e,t)=>{let i=b.get(e);void 0===i&&(i=new Map,b.set(e,i));let s=i.get(t);if(void 0===s){const r=!this._plotName||"vol"!==this._plotName;s=(0,c.generateColor)(e,t,r),i.set(t,s)}return s},C=(0,S.createEmptyStyle)(),P=(0,a.clamp)(this._getTranspValue(),0,100),T=this._model.timeScale().visibleBarsStrictRange();if(null===T)return!1;const{startBar:x,endBar:M}=this._calculateStartEnd(T);if(null===x||null===M||0===this._items.length)return!1;const A=null!=m?m:(0,s.ensureNotNull)(u.firstIndex()),E=u.rangeIterator(A,(0,s.ensureNotNull)(u.lastIndex())+1),k=(0,L.lowerbound)(this._items,A+_,(e,t)=>e.timePointIndex0){const e=this._items[D-1].timePointIndex,i=new r.Point(t-1,NaN);i.origPrices=new r.Point(t-1,NaN),i.timePointIndex=e,De.timePointIndexe.timePointIndexe.timePointIndexe.timePointIndex0?(s-=n,r+=n):(s+=n,r-=n);const o=this._study.getMinFirstBarIndexForPlot(this._plotName)+n+1;return o>r+1?{startBar:null,endBar:null}:(s=Math.max(o,s),{startBar:s,endBar:r})}_createRenderer(e,t){var i;this._renderer.clear();const r=this._study.properties().styles[this._plotName],n=r,o=(0,a.clamp)(this._getTranspValue(),0,100);this._lineColor=(0,c.generateColor)(n.color.value(),o),this._lineWidth=n.linewidth.value();let d=n.color.value();const u=this._colorProvider.getDefaultPlotPointStyle();u&&(d=u.colors[0],this._lineWidth=null!==(i=u.lineWidth)&&void 0!==i?i:this._lineWidth,this._lineColor=d?(0,c.generateColor)(d,o):this._lineColor),this._color2=(0,c.generateColor)(d,o);const _=this._study.metaInfo().isRGB?E(d):k(d);this._color1=(0,c.generateColor)(_,o);const f={};f.barSpacing=this._model.timeScale().barSpacing(),f.items=this._items,f.histogramBase=this._histogramBase?this._histogramBase:(0,s.ensureNotNull)(this._study.priceScale()).height(),f.lineIndex=0,f.lineStyle=r.linestyle.value(),f.lineColor=this._lineColor,f.lineWidth=this._lineWidth,f.lineWidth=(0,l.isNumber)(f.lineWidth)?f.lineWidth:1,f.color1=this._color1,f.color2=this._color2,f.bottom=f.histogramBase,f.visibleItemsRange={startItemIndex:e,endItemIndex:t}, +f.simpleMode=this._colorProvider.singleColor();const S=this._renderer,y=!!r.joinPoints&&r.joinPoints.value();switch(r.plottype.value()){case I.LineStudyPlotStyle.Line:case I.LineStudyPlotStyle.LineWithBreaks:S.append(new m.PaneRendererLine(f));break;case I.LineStudyPlotStyle.Area:case I.LineStudyPlotStyle.AreaWithBreaks:S.append(new p.PaneRendererArea(f));break;case I.LineStudyPlotStyle.Histogram:S.append(new x(f));break;case I.LineStudyPlotStyle.Columns:S.append(new C.PaneRendererColumns(f));break;case I.LineStudyPlotStyle.Cross:if(S.append(new T(f)),y){const e=(0,h.deepCopy)(f);e.lineWidth=1,e.forceLineWidth=!0,S.append(new m.PaneRendererLine(e))}break;case I.LineStudyPlotStyle.Circles:if(S.append(new w(f)),y){const e=(0,h.deepCopy)(f);e.lineWidth=1,e.ignorePaletteLineWidth=!0,S.append(new m.PaneRendererLine(e))}break;case I.LineStudyPlotStyle.StepLine:case I.LineStudyPlotStyle.StepLineWithDiamonds:{f.decoration=n.plottype.value()===I.LineStudyPlotStyle.StepLineWithDiamonds?g.StepLineDecoration.Diamonds:g.StepLineDecoration.None;const e=new g.PaneRendererStepLine;e.setData(f),S.append(e);break}default:S.append(new m.PaneRendererLine(f))}this._model.selection().isSelected(this._study)&&this._isMarkersEnabled&&this._selectionData&&S.append(new v.SelectionRenderer(this._selectionData))}_createSelection(e){const t=this._study.priceScale();if(null!==t)if(this._model.selection().isSelected(this._study)){const i=this._selectionIndexer.indexes();this._selectionData={points:[],bgColors:[],visible:!0,hittestResult:u.HitTestResult.REGULAR,barSpacing:this._model.timeScale().barSpacing()};const n=(0,s.ensureNotNull)(this._model.paneForSource(this._study)).height(),o=this._study.offset(this._plotName);for(let s=0;s{"use strict";i.d(t,{createStudyPlotColorProvider:()=>p});var s=i(50993),r=i(88537),n=i(31175);const o=new Map([[0,"color"],[2,"textColor"],[3,"borderColor"],[4,"wickColor"],[5,"colorup"],[6,"colordown"]]);class a{constructor(e){this._plotStyle=e}getPlotPointStyle(e,t){const i=t?(0,n.clearStyle)(t):(0,n.createEmptyStyle)();return o.forEach((e,t)=>{this._plotStyle[e]&&(i.colors[t]=this._plotStyle[e].value())}),i.lineWidth=this._plotStyle.linewidth?this._plotStyle.linewidth.value():void 0,i.lineStyle=this._plotStyle.linestyle?this._plotStyle.linestyle.value():void 0,i}isColorDefined(){return!0}singleColor(){return!0}getDefaultPlotPointStyle(){return null}}const l=[0,1,2,3,4,5,6];class c{constructor(e,t,i,s){this._palettesColors=new Map,this._defaultPlotColors=new Map,this._indexes=s;const n=t.styles[i];if(n)for(const[e,t]of o)this._defaultPlotColors.set(e,n[t]);const a=(0, +r.ensureDefined)(e.palettes),l=e.plots;s.forEach((e,i)=>{const s=l[e];if(s&&"palette"in s){const e=a[s.palette],r=t.palettes[s.palette];if(e&&r){const{valToIndex:t}=e,{colors:s}=r,n={...s};t&&Object.keys(t).forEach(e=>{const i=t[e];void 0!==i&&(n[e]=s[i])}),this._palettesColors.set(i,n)}}})}getPlotPointStyle(e,t){const i=t?(0,n.clearStyle)(t):(0,n.createEmptyStyle)();return l.forEach(t=>{var s,n;if(this._palettesColors.has(t)){const n=e[(0,r.ensureDefined)(this._indexes.get(t))+1];if("number"==typeof n){const e=null===(s=this._palettesColors.get(t))||void 0===s?void 0:s[n];0===t&&e&&(i.lineWidth=e.width.value(),i.lineStyle=e.style.value()),i.colors[t]=null==e?void 0:e.color.value()}else i.colors[t]="transparent"}else i.colors[t]=null===(n=this._defaultPlotColors.get(t))||void 0===n?void 0:n.value()}),i}getDefaultPlotPointStyle(){var e;const t=null===(e=this._palettesColors.get(0))||void 0===e?void 0:e[0];if(void 0!==t){return{colors:[t.color.value(),void 0,void 0,void 0,void 0,void 0,void 0],lineStyle:void 0,lineWidth:t.width.value()}}return null}isColorDefined(){return!!this._palettesColors.size}singleColor(){return!1}}var h=i(68906);class d{constructor(e){this._indexes=e}getPlotPointStyle(e,t){const i=t?(0,n.clearStyle)(t):(0,n.createEmptyStyle)();return this._indexes.forEach((t,s)=>{const r=e[t+1];if(null!=r){const e=(0,h.rgbaFromInteger)(r);i.colors[s]=e}else i.colors[s]="transparent"}),i}isColorDefined(){return!0}singleColor(){return!1}getDefaultPlotPointStyle(){return null}}const u=new Map([[0,function(e,t){const i=(0,s.isColorerPlot)(t)||(0,s.isOhlcColorerPlot)(t);return"target"in t&&t.target===e&&i}],[2,function(e,t){const i=(0,s.isTextColorerPlot)(t);return"target"in t&&t.target===e&&i}],[1,function(e,t){return(0,s.isBgColorerPlot)(t)&&t.id===e}],[3,function(e,t){const i=(0,s.isCandleBorderColorerPlot)(t);return"target"in t&&t.target===e&&i}],[4,function(e,t){const i=(0,s.isCandleWickColorerPlot)(t);return"target"in t&&t.target===e&&i}],[5,function(e,t){const i=(0,s.isUpColorerPlot)(t);return"target"in t&&t.target===e&&i}],[6,function(e,t){const i=(0,s.isDownColorerPlot)(t);return"target"in t&&t.target===e&&i}]]);function p(e,t,i){const{colorers:s}=function(e,t){const i=e.plots,s=i.findIndex(e=>e.id===t),r=new Map;return i.forEach((e,i)=>{u.forEach((s,n)=>{s(t,e)&&r.set(n,i)})}),{plotIndex:-1===s?null:s,colorers:r}}(e,i);if(s.size)return e.isRGB?new d(s):new c(e,t,i,s);{const e=t.ohlcPlots;if(e&&e[i])return new a(e[i]);const s=t.styles[i];return new a(s)}}},50993:(e,t,i)=>{"use strict";var s,r;function n(e){return"line"===e.type}function o(e){return"shapes"===e.type}function a(e){return"chars"===e.type}function l(e){return"arrows"===e.type}function c(e){return"dataoffset"===e.type}function h(e){return"ohlc_open"===e.type}function d(e){return"ohlc_high"===e.type}function u(e){return"ohlc_low"===e.type}function p(e){return"ohlc_close"===e.type}function _(e){return h(e)||d(e)||u(e)||p(e)}function m(e){return"colorer"===e.type}function g(e){return"bar_colorer"===e.type}function f(e){return"bg_colorer"===e.type} +function v(e){return"text_colorer"===e.type}function S(e){return"ohlc_colorer"===e.type}function y(e){return"wick_colorer"===e.type}function b(e){return"border_colorer"===e.type}function w(e){return"up_colorer"===e.type}function C(e){return"down_colorer"===e.type}function P(e){return"alertcondition"===e.type}function T(e){return"Plot"!==e}function x(e){return"ohlc_bars"===e.plottype}function I(e){return"ohlc_candles"===e.plottype}function M(e){return m(e)||g(e)||f(e)||c(e)||S(e)||P(e)||w(e)||C(e)||b(e)||y(e)||v(e)}function L(e){return m(e)||v(e)||g(e)||c(e)||S(e)||y(e)||b(e)||w(e)||C(e)||P(e)}i.r(t),i.d(t,{LineStudyPlotStyle:()=>s,isLinePlot:()=>n,isShapesPlot:()=>o,isCharsPlot:()=>a,isArrowsPlot:()=>l,isDataOffsetPlot:()=>c,isOhlcOpenPlot:()=>h,isOhlcHighPlot:()=>d,isOhlcLowPlot:()=>u,isOhlcClosePlot:()=>p,isOhlcPlot:()=>_,isColorerPlot:()=>m,isBarColorerPlot:()=>g,isBgColorerPlot:()=>f,isTextColorerPlot:()=>v,isOhlcColorerPlot:()=>S,isCandleWickColorerPlot:()=>y,isCandleBorderColorerPlot:()=>b,isUpColorerPlot:()=>w,isDownColorerPlot:()=>C,isAlertConditionPlot:()=>P,isPlotTitleDefined:()=>T,isOhlcPlotStyleBars:()=>x,isOhlcPlotStyleCandles:()=>I,PlotSymbolSize:()=>r,isPlotWithTechnicalValues:()=>M,isNonVisualPlot:()=>L}),function(e){e[e.Line=0]="Line",e[e.Histogram=1]="Histogram",e[e.Cross=3]="Cross",e[e.Area=4]="Area",e[e.Columns=5]="Columns",e[e.Circles=6]="Circles",e[e.LineWithBreaks=7]="LineWithBreaks",e[e.AreaWithBreaks=8]="AreaWithBreaks",e[e.StepLine=9]="StepLine",e[e.StepLineWithDiamonds=10]="StepLineWithDiamonds"}(s||(s={})),function(e){e.Auto="auto",e.Tiny="tiny",e.Small="small",e.Normal="normal",e.Large="large",e.Huge="huge"}(r||(r={}))},81851:(e,t,i)=>{"use strict";i.r(t),i.d(t,{createStudy:()=>B,isESDOrRollDatesStudy:()=>k,isESDStudy:()=>A,isFundamentalStudy:()=>L,isFundamentalStudyMetaInfo:()=>D,isRollDatesStudy:()=>E,isStudy:()=>x,isStudyStrategy:()=>I,isStudyStub:()=>M,studyColorRotationMode:()=>N,useSameColorRotationComparator:()=>O});var s=i(67337),r=i(67072),n=i.n(r),o=i(66101),a=i(46319),l=i(9771),c=i(55153),h=i(67509),d=i(25270);const u=s.enabled("hide_main_series_symbol_from_indicator_legend");class p extends o.Study{constructor(e,t,i,s){super(e,t,i,s),this.properties().styles.vol_ma.visible.listeners().subscribe(this,()=>this.invalidateTitleCache())}base(){return 1}destroy(){this.properties().styles.vol_ma.visible.listeners().unsubscribeAll(this),super.destroy()}_titleInputs(){const e={symbolsForDisplay:!0,skipHiddenInputs:!0,fakeInputsForDisplay:!0,asObject:!1,skipOptionalEmptySymbolInputs:u};return this.properties().styles.vol_ma.visible.value()?this.inputs(e):this.inputs({...e,skippedInputs:["length"]})}}var _=i(88537),m=i(52714),g=i.n(m),f=i(2015),v=i.n(f),S=i(37667),y=i(14791);class b extends o.Study{constructor(e,t,i,s){super(e,function(e){return e.hasChild("currencyId")||e.addChild("currencyId",new(v())(null)),e.hasChild("unitId")||e.addChild("unitId",new(v())(null)),e.addExclusion("currencyId"),e.addExclusion("unitId"),e}(t),i,s),this._isActingAsSymbolSource=new(g())(!1), +this._symbolHibernated=new(g())(!1),this._symbolResolvingActive=new(g())(!1),this._realignToolsLastParams=null,this._onIsActingAsSymbolSourceChanged=()=>{this._realignLineToolsIfParamsChanged()},this._recalculateIsActingAsSymbolSource(),this._isActingAsSymbolSource.subscribe(this._onIsActingAsSymbolSourceChanged);const r=this.properties().childs().inputs.childs().symbol;this._previousSymbolInputValue=r.value()}destroy(){this._isActingAsSymbolSource.unsubscribe(this._onIsActingAsSymbolSourceChanged),super.destroy()}isActingAsSymbolSource(){return this._isActingAsSymbolSource.readonly()}properties(){return this._properties}symbol(){return this._isActingAsSymbolSource.value()?this.properties().childs().inputs.childs().symbol.value():this.symbolSource().symbol()}interval(){return this.model().mainSeries().interval()}style(){return(0,_.ensureNotNull)(this.parentSource().symbolSource()).style()}currency(){return this._isActingAsSymbolSource.value()?this.properties().childs().currencyId.value()||null:this.symbolSource().currency()}unit(){return this._isActingAsSymbolSource.value()?this.properties().childs().unitId.value()||null:this.symbolSource().unit()}setSymbolParams(e){this._setSymbolParamsInternal(e)}setSymbol(e){this.setSymbolParams({symbol:e})}symbolInfo(){if(!this._isActingAsSymbolSource.value())return super.symbolSource().symbolInfo();if(void 0===this._resolvedSymbols)return null;const e=this.symbol(),t=this._getSymbolForResolve(e);return this._resolvedSymbols[t]||null}symbolSource(){return this._isActingAsSymbolSource.value()?this:super.symbolSource()}symbolResolved(){return this.symbolsResolved()}symbolResolvingActive(){return this._symbolResolvingActive}symbolHibernated(){return this._symbolHibernated}isVisible(){const e=super.isVisible();return this._symbolHibernated.setValue(!e),e}symbolSameAsCurrent(e){return(0,y.symbolSameAsCurrent)(e,this.symbol(),this.symbolInfo())}setCurrency(e){this.setSymbolParams({currency:e})}isConvertedToOtherCurrency(){return(0,S.isConvertedToOtherCurrency)(this.symbolInfo())}setUnit(e){this.setSymbolParams({unit:e})}isConvertedToOtherUnit(){return(0,S.isConvertedToOtherUnit)(this.symbolInfo(),this._model.unitConversionEnabled())}setInterval(e){}setStyle(e){}symbolTitle(e,t){return this.title(!0,{},!1,e)}measureUnitId(){return(0,S.measureUnitId)(this.symbolInfo())}bars(){return super.data()}_onPropertiesChanged(){this._recalculateIsActingAsSymbolSource(),super._onPropertiesChanged(),this._realignLineToolsIfParamsChanged()}_tryChangeInputs(){var e;const t=this._resolvedSymbolsByInput[this.symbol()]||null;(0,y.symbolSameAsCurrent)(this._previousSymbolInputValue,this.symbol(),t)||this._setSymbolParamsInternal({currency:null,unit:null}),super._tryChangeInputs(),this._formatter=null,null===(e=this.priceScale())||void 0===e||e.updateFormatter(),this._previousSymbolInputValue=this.properties().childs().inputs.childs().symbol.value()}_getSymbolObject(e){const t={symbol:e},i=this.currency();null!==i&&(t["currency-id"]=i);const s=this.unit() +;return this._model.unitConversionEnabled()&&null!==s&&(t["unit-id"]=s),t}_getSymbolForApi(e){return(0,S.symbolForApi)(this._resolvedSymbolsByInput[e]||null,e)}_onSymbolResolved(e,t,i){super._onSymbolResolved(e,t,i),this._recreatePriceFormattingDependencies();const s=t===this.symbol()?(0,S.extractSymbolNameFromSymbolInfo)(i,this.symbol()):null;null!==s&&(this._previousSymbolInputValue=s);const r=(0,S.symbolCurrency)(i),n=(0,S.symbolUnit)(i,this._model.unitConversionEnabled());this._setSymbolParamsInternal({symbol:null!=s?s:void 0,currency:r,unit:n},i),this._symbolResolvingActive.setValue(!1)}_onSymbolResolvingStart(){super._onSymbolResolvingStart(),this._symbolResolvingActive.setValue(!0)}_onSymbolError(){super._onSymbolError(),this._symbolResolvingActive.setValue(!1)}_onCurrencyMayChange(){this.isActingAsSymbolSource()?super._onCurrencyMayChange():this._onCurrencyChanged()}_recalculateIsActingAsSymbolSource(){var e,t;const i=null!==(t=""!==(null===(e=this._currencySourceSymbolInputProperty)||void 0===e?void 0:e.value()))&&void 0!==t&&t;this._isActingAsSymbolSource.setValue(i)}_setSymbolParamsInternal(e,t){const{symbol:i,currency:s,unit:r}=e,n=this.properties().childs(),o=n.inputs.childs().symbol.value(),a=n.currencyId.value(),l=n.unitId.value();if(void 0!==i&&i!==o&&n.inputs.childs().symbol.setValueSilently(i),void 0!==s&&s!==a&&n.currencyId.setValueSilently(s),void 0!==r&&r!==l&&n.unitId.setValueSilently(r),t)this._resolvedSymbolsByInput[this.symbol()]=t,this._resolvedSymbols[this._getSymbolForResolve(this.symbol())]=t,this._realignToolsLastParams=null;else{const e=this.symbolInfo();null!==e&&(n.currencyId.setValueSilently((0,S.symbolCurrency)(e)),n.unitId.setValueSilently((0,S.symbolUnit)(e,this._model.unitConversionEnabled())))}n.inputs.childs().symbol.value()!==o&&n.inputs.childs().symbol.listeners().fire(n.inputs.childs().symbol),n.currencyId.value()!==a&&n.currencyId.listeners().fire(n.currencyId),n.unitId.value()!==l&&n.unitId.listeners().fire(n.unitId),this._realignLineToolsIfParamsChanged()}_realignLineToolsIfParamsChanged(){const e=this.symbol(),t=this.interval(),i=this.currency(),s=this.unit();null!==this._realignToolsLastParams&&this._realignToolsLastParams.symbol===e&&this._realignToolsLastParams.interval===t&&this._realignToolsLastParams.currency===i&&this._realignToolsLastParams.unit===s||(this._model.realignLineTools(this),this._realignToolsLastParams={symbol:e,interval:t,currency:i,unit:s})}}var w=i(69927);class C extends o.Study{priceRange(e,t){let i=!1;this.graphics().hhists().forEach((e,t)=>{i=i||this.properties().child("graphics").child("hhists").child(t).child("showValues").value()});const s=function(e,t,i,s){let r=null;return e.forEach((e,s)=>{e.forEach(e=>{e.firstBarTime<=i&&e.lastBarTime>=t&&(null===r?r={low:{l:e.priceLow,h:e.priceHigh},high:{h:e.priceHigh}}:(e.priceLow{"use strict";i.d(t,{StudyColorRotatorFactory:()=>h});var s=i(45112),r=i(24377),n=i(68906),o=i(81851);const a=["color-sky-blue-400","color-banana-yellow-700","color-deep-blue-500","color-grapes-purple-a700","color-iguana-green-500","color-minty-green-a700","color-ripe-red-a200","color-berry-pink-200","color-tv-blue-a100","color-tan-orange-a200","color-sky-blue-a400","color-deep-blue-a100","color-grapes-purple-400","color-iguana-green-a700","color-minty-green-200","color-ripe-red-200","color-berry-pink-a200","color-ripe-red-500","color-grapes-purple-500","color-deep-blue-400","color-tv-blue-a200","color-sky-blue-500","color-iguana-green-400","color-minty-green-400","color-banana-yellow-600","color-tan-orange-500","color-berry-pink-400","color-ripe-red-300","color-grapes-purple-300","color-deep-blue-300","color-tv-blue-300","color-sky-blue-300","color-iguana-green-300","color-minty-green-300","color-banana-yellow-400","color-tan-orange-300","color-berry-pink-300","color-tan-orange-a700"];class l{constructor(e){this._offset=0,this._offset=e}getColor(e){if(0===this._offset)return e;const t=a[(this._offset-1)%a.length],i=s.colorsPalette[t],o=(0,n.isHexColor)(e)?1:(0,r.parseRgba)(e)[3];return(0,n.generateColor)(i,(0,n.alphaToTransparency)(o))}}class c{constructor(e,t){this._offset=e,this._modelStartOffset=t}getColor(e){if((0,n.isHexColor)(e)){const t=(0,r.parseRgb)(e);return(0,r.rgbToHexString)((0, +r.shiftRgb)(t,this._offset,this._modelStartOffset))}{const t=(0,r.parseRgba)(e);return(0,r.rgbaToString)((0,r.shiftRgba)(t,this._offset,this._modelStartOffset))}}}class h{constructor(e){this._chartModel=e}getColorRotator(e){const t=(0,o.studyColorRotationMode)(e);if(null===t)return null;const i=this._calcDefaultColorsOffset(e);switch(t){case"loop":return new l(i);case"shift":{const e=this._chartModel.getStudyShiftColorStartOffset();return new c(i,e)}}}_calcDefaultColorsOffset(e){let t=0;const i=(0,o.useSameColorRotationComparator)(e);return this._chartModel.dataSources().filter(o.isStudy).forEach(s=>{i(e,s.metaInfo())&&t++}),t}}},27982:(e,t,i)=>{"use strict";i.d(t,{StudyDataSource:()=>_});var s,r=i(88537),n=i(2872),o=i.n(n),a=i(71053),l=i(51344),c=i(72857),h=i(8671),d=i(75871);!function(e){e[e.Undefined=0]="Undefined",e[e.Loading=1]="Loading",e[e.Completed=2]="Completed",e[e.Error=3]="Error"}(s||(s={}));const u=(0,i(98125).getLogger)("Chart.StudyDataSource");var p;!function(e){e[e.Idle=0]="Idle",e[e.AwaitingConnection=1]="AwaitingConnection",e[e.AwaitingParent=2]="AwaitingParent",e[e.AwaitingFirstDataUpdate=3]="AwaitingFirstDataUpdate",e[e.Active=4]="Active"}(p||(p={}));class _{constructor(e,t,i,r){this._inputs=null,this._status=p.Idle,this._studyId=null,this._turnaroundCounter=1,this._studyStatus={type:s.Undefined},this._studyStatusChanged=new(o()),this._graphics=new d.LiveStudyGraphics,this._dataCleared=new(o()),this._dataUpdated=new(o()),this._boundOnGatewayIsConnectedChanged=this._onGatewayIsConnectedChanged.bind(this),this._ongoingDataUpdate=Promise.resolve(),this._gateway=e,this._metaInfo=r,this._seriesSource=t,this._turnaroundPrefix=i,this._plots=new a.PlotList((0,h.studyPlotFunctionMap)(r),h.studyEmptyPlotValuePredicate),this._gateway.isConnected().subscribe(this._boundOnGatewayIsConnectedChanged)}destroy(){this.stop(),this._gateway.isConnected().unsubscribe(this._boundOnGatewayIsConnectedChanged),this._dataUpdated.destroy(),this._dataCleared.destroy(),this._studyStatusChanged.destroy()}metaInfo(){return this._metaInfo}inputs(){return this._inputs}setInputs(e){this._inputs=e,null!==this._studyId&&(this._turnaroundCounter++,this._onStudyStatusChangedTo({type:s.Undefined}),this._gateway.modifyStudy(this._studyId,this._turnaround(),e,this._onMessage.bind(this)),this._status===p.Active&&this._changeStatusTo(p.AwaitingFirstDataUpdate))}isStarted(){return this._status!==p.Idle}isActive(){return this._status===p.Active}start(){this.isStarted()?u.logNormal("start: data source is already started, nothing to do"):((0,r.assert)(null!==this._inputs,"Inputs should be defined when starting a study data source"),this._gateway.isConnected().value()?this._createStudy():this._changeStatusTo(p.AwaitingConnection))}stop(){this.isStarted()?(null!==this._studyId&&(this._gateway.removeStudy(this._studyId),this._studyId=null,this._onStudyStatusChangedTo({type:s.Undefined})),this._changeStatusTo(p.Idle)):u.logNormal("stop: data source is already stopped, nothing to do")}studyId(){return this._studyId}studyStatus(){ +return this._studyStatus}studyStatusChanged(){return this._studyStatusChanged}plots(){return this._plots}graphics(){return this._graphics}clearData(){this._plots.clear(),this._graphics.clear(),this._dataCleared.fire()}stopAndStealData(){(0,r.assert)(this._status===p.Active,"Couldn't steal data from non-active data source"),this.stop();const e=this._plots,t=this._graphics.extract();return this._plots=new a.PlotList((0,h.studyPlotFunctionMap)(this._metaInfo),h.studyEmptyPlotValuePredicate),{plots:e,graphics:t}}dataCleared(){return this._dataCleared}dataUpdated(){return this._dataUpdated}moveData(e){this._ongoingDataUpdate=this._ongoingDataUpdate.then(()=>{this._plots.move(e)})}pendingUpdatesReady(){return this._ongoingDataUpdate}_changeStatusTo(e){(0,r.assert)(this._status!==e,"Source and destination status should be distinct"),u.logNormal(`Status changed from ${p[this._status]} to ${p[e]}`),this._status=e}_createStudy(){const e=this._seriesSource.instanceId();null!==e?this._createStudyUsingParentId(e):(this._changeStatusTo(p.AwaitingParent),this._seriesSource.dataEvents().completed().subscribe(this,this._onSeriesCompleted,!0))}_createStudyUsingParentId(e){(0,r.assert)(this._status!==p.Active,'Status should not be "Active" when creating a study'),(0,r.assert)(this._studyStatus.type===s.Undefined,'Study status should be "Undefined" when creating a study'),(0,r.assert)(null===this._studyId,"Study id should be empty when creating a study"),this._studyId=(0,c.makeNextStudyId)(),this._gateway.createStudy(this._studyId,this._turnaround(),e,this._metaInfo.fullId+("tv-basicstudies"===this._metaInfo.packageId?"":"!"),(0,r.ensureNotNull)(this._inputs),this._onMessage.bind(this)),this._changeStatusTo(p.AwaitingFirstDataUpdate)}_onGatewayIsConnectedChanged(e){e?this._onGatewayConnected():this._onGatewayDisconnected()}_onGatewayConnected(){this._status===p.AwaitingConnection&&this._createStudy()}_onGatewayDisconnected(){this._status!==p.Idle&&this._status!==p.AwaitingConnection&&(this._studyId=null,this._changeStatusTo(p.AwaitingConnection),this._studyStatus.type!==s.Undefined&&this._onStudyStatusChangedTo({type:s.Undefined})),this._turnaroundCounter=1}_onSeriesCompleted(){this._status===p.AwaitingParent&&this._createStudyUsingParentId((0,r.ensure)(this._seriesSource.instanceId()))}_onStudyStatusChangedTo(e){const t=this._studyStatus;this._studyStatus=e,u.logNormal(`Study status type changed from ${s[t.type]} to ${s[e.type]}`),this._studyStatusChanged.fire(t,e)}_onMessage(e){if("data_update"===e.method){const{customId:t,turnaround:i,plots:s,nonseries:n}=e.params;t===this._studyId&&this._checkTurnaround(i)&&this._onDataUpdate(s,(0,r.ensureDefined)(n))}else if("study_loading"===e.method){const[t,i,s]=e.params;t===this._studyId&&this._checkTurnaround(i)&&this._onStudyLoading(s)}else if("study_completed"===e.method){const[t,i,s]=e.params;t===this._studyId&&this._checkTurnaround(i)&&this._onStudyCompleted(s)}else if("study_error"===e.method){const[t,i,s,r,n]=e.params;t===this._studyId&&this._checkTurnaround(i)&&this._onStudyError(s,r,n) +}else"clear_data"===e.method&&this._checkTurnaround(e.params.turnaround)&&this.clearData()}_onDataUpdate(e,t){const i=(0,l.unpackNonSeriesData)(t.d);return this._ongoingDataUpdate=this._ongoingDataUpdate.then(()=>i,()=>i).then(this._onDataUnpacked.bind(this,e,t.indexes)),this._ongoingDataUpdate}_onDataUnpacked(e,t,i){this._status!==p.Idle&&(this._status===p.AwaitingFirstDataUpdate&&(this._changeStatusTo(p.Active),this.clearData()),this._mergePlots(e),null!==i&&(i.indexes_replace?((0,r.assert)("nochange"!==t),this._graphics.replaceIndexesTo(t)):("nochange"!==t&&this._graphics.replaceIndexesTo(t),void 0!==i.graphicsCmds&&this._graphics.processCommands(i.graphicsCmds,this._metaInfo.graphics))),this._dataUpdated.fire(e,i,t))}_onStudyLoading(e){this._onStudyStatusChangedTo({type:s.Loading,startTime:Date.now()})}_onStudyError(e,t,i){this.clearData();const r="string"==typeof e?{error:e.split(":",2)[0]}:e;this._onStudyStatusChangedTo({type:s.Error,errorDescription:r})}_onStudyCompleted(e){this._onStudyStatusChangedTo({type:s.Completed})}_mergePlots(e){this._plots.merge(e)}_turnaround(){return`${this._turnaroundPrefix}${this._turnaroundCounter}`}_checkTurnaround(e){const t=this._turnaround();return e===t||e===this._seriesSource.turnaround()||e===`${this._seriesSource.turnaround()}_${t}`}}},26179:(e,t,i)=>{"use strict";i.d(t,{StudyDataWindowView:()=>o});var s=i(14445),r=i(89027),n=i(99682);class o extends s.DataWindowView{constructor(e,t){super(),this._invalidated=!0,this._study=e,this._model=t,this._valueProvider=this._createValuesProvider(e,t),this._items=this._valueProvider.getItems().map(e=>new s.DataWindowItem(e.title,"")),this.update()}update(){this._invalidated=!0}items(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._items}study(){return this._study}_updateImpl(){this._header=this._study.title(!0),this._title=this._study.title();const e=this._valueProvider.getValues(this._currentIndex());for(let t=0;t{"use strict";function s(e){const t=new Map;return e.plots.forEach((e,i)=>{t.set(e.id,e=>e[i+1])}),t}function r(e,t){return null==e[t]}i.d(t,{studyPlotFunctionMap:()=>s,studyEmptyPlotValuePredicate:()=>r})},88145:(e,t,i)=>{"use strict";function s(e,t){return`${e}@${t}`}function r(e){return e.replace(/(@[^-]+-[^-]+).*$/,"$1")}i.d(t,{studyIdString:()=>s,extractStudyId:()=>r})},33266:(e,t,i)=>{"use strict";function s(e){return["text","integer","float","price","session","resolution"].includes(e.type)&&e.hasOwnProperty("options")}function r(e,t,i){for(const s of e)if(t[s.id]!==i[s.id])return!1;return!0}function n(e){ +return("time"===e.type||"price"===e.type)&&!0!==e.isHidden}function o(e){return[]}i.d(t,{isStudyInputOptionsInfo:()=>s,areStudyInputsEqual:()=>r,isTimeOrPriceNotHiddenInput:()=>n,editableStudyInputs:()=>o})},90998:(e,t,i)=>{"use strict";i.d(t,{StudyInserter:()=>a});var s,r=i(67072),n=i.n(r);!function(e){e.StudyCannotBeChild="cannot_be_child",e.StubWasRemoved="stub_was_removed",e.CannotGetMetainfo="cannot_get_metainfo",e.Cancelled="cancelled",e.Unknown="unknown"}(s||(s={}));const o=(0,i(98125).getLogger)("Chart.Studies.StudyInserter");class a{constructor(e,t,i){this._parentSource=void 0,this._propsState=void 0,this._preferredPriceScale=void 0,this._allowChangeCurrency=!1,this._allowChangeUnit=!1,this._paneSize=void 0,this._forceOverlay=!1,this._studyMetaInfoRepository=t,this._inserterImpl=i,this._studyDescriptor=e}setParentSource(e){this._parentSource=e||void 0}setPaneSize(e){this._paneSize=e}setPreferredPriceScale(e){this._preferredPriceScale=e}setAllowChangeCurrency(e){this._allowChangeCurrency=e}setAllowChangeUnit(e){this._allowChangeUnit=e}setForceOverlay(e){this._forceOverlay=e}setPropertiesState(e){this._propsState=e}setTargetPriceScaleMode(e){this._targetPriceScaleMode=e}async insert(e,t){const i=void 0!==(r=this._inserterImpl).createStub&&void 0!==r.removeStub?this._inserterImpl.createStub():null;var r;let n,a=!0;try{n=await this._studyMetaInfoRepository.findById(this._studyDescriptor)}catch(e){return o.logWarn("Cannot get study "+JSON.stringify(this._studyDescriptor)),Promise.reject(s.CannotGetMetainfo)}finally{null!==i&&(a=this._inserterImpl.removeStub(i))}if(!a)return Promise.reject(s.StubWasRemoved);if(void 0!==t&&t.cancelled)return Promise.reject(s.Cancelled);if(!this._canApplyStudyToParent(n))return Promise.reject(s.StudyCannotBeChild);const l={...n.defaults.inputs};let c={};if(void 0!==e){const t=await e(l,n.inputs,n);c=t.inputs,void 0===this._parentSource&&t.parentSource&&(this._parentSource=t.parentSource)}if(void 0!==t&&t.cancelled)return Promise.reject(s.Cancelled);const h=this._insertStudy(n,c);return null===h?Promise.reject(s.Unknown):h}_insertStudy(e,t){return this._inserterImpl.createStudy(e,t,null,this._propsState,this._forceOverlay,this._parentSource,this._preferredPriceScale,this._allowChangeCurrency,this._allowChangeUnit,this._paneSize,this._targetPriceScaleMode)}_canApplyStudyToParent(e){return void 0===this._parentSource||n().canBeChild(e)}}},22458:(e,t,i)=>{"use strict";i.d(t,{StudyLegendValuesProvider:()=>n});var s=i(89027),r=i(99682);class n{constructor(e,t){this._study=e,this._model=t,this._showStudyValues=t.properties().childs().paneProperties.childs().legendProperties.childs().showStudyValues,void 0!==e.metaInfo().graphics.hhists?this._valuesProvider=new r.HHistBasedValuesProvider(e,t):this._valuesProvider=new s.StudyValuesProvider(e,t)}getItems(){return this._valuesProvider.getItems()}getValues(e){const t=this._valuesProvider.getValues(e),i=this._study.properties(),s=this._showStudyValues.value()&&i.showLegendValues.value();for(const e of t)e.visible=e.visible&&s;return t}}}, +43181:(e,t,i)=>{"use strict";i.d(t,{StudyMetaInfoRepository:()=>h});var s=i(28353),r=i(88537),n=i(67072),o=i.n(n),a=i(5402),l=i(15625);const c=(0,i(98125).getLogger)("Chart.Studies.StudyMetaInfoRepository",{color:"#606"});class h{constructor(e){this._nextRequestNumber=1,this._rawStudiesMetaInfo=[],this._isReady=!1,this._metaInfoQueryQueue=[],this._javaMetaInfoQueryQueue=[],this._javaStudiesMetaInfo=[],this._pineMetaInfoCache=[],this._studiesMigrations=[],this._gateway=e}requestMetaInfo(){this._requestStarted();const e=this._makeNextRequestId();return c.logNormal("Requesting metainfo #"+e),new Promise(t=>{c.logNormal("Requesting studies metadata #"+e),this._gateway.requestMetadata(e,i=>{c.logNormal(`Requesting studies metadata #${e} finished`);const s=i.params[1].metainfo.slice();this._processLibraryMetaInfo(s),this._requestFinished(),t()})})}findById(e){if(!this._isReady)return this._enqueueMetaInfoQuery(e);const t=this._findStudyMetaInfo(e);return null!==t?Promise.resolve(t):"pine"===e.type?this._compilePine(e):Promise.reject(`unexpected study id=${e.studyId} with type=${e.type}`)}findByIdSync(e){return this._findStudyMetaInfo(e)}isReady(){return this._isReady}findAllJavaStudies(){return this._isReady?Promise.resolve(this._javaStudiesMetaInfo):this._enqueueJavaMetaInfoQuery()}getInternalMetaInfoArray(){return this._javaStudiesMetaInfo}getMigrations(){return this._studiesMigrations}addPineMetaInfo(e){return u(this._pineMetaInfoCache,e)}_processMigrations(e){throw new Error("not implemented")}_processSiteMetaInfo(e,t){throw new Error("not implemented")}_processLibraryMetaInfo(e){for(const t of e)d(t),u(this._javaStudiesMetaInfo,t);this._javaStudiesMetaInfo=this._javaStudiesMetaInfo.sort((e,t)=>{const i=e.description_localized||e.description,s=t.description_localized||t.description;return i>s?1:i{this._metaInfoQueryQueue.push({studyDescriptor:e,resolver:t})})}_enqueueJavaMetaInfoQuery(){return new Promise(e=>{this._javaMetaInfoQueryQueue.push({resolver:e})})}_processPendingMetaInfoQueries(){for(;this._metaInfoQueryQueue.length;){const e=this._metaInfoQueryQueue.shift();this.findById(e.studyDescriptor).then(e.resolver)}}_processPendingFullMetaInfoQueries(){for(;this._javaMetaInfoQueryQueue.length;){this._javaMetaInfoQueryQueue.shift().resolver(this._javaStudiesMetaInfo)}}_findStudyMetaInfo(e){return"java"===e.type?this._javaStudiesMetaInfo.find(t=>t.id===e.studyId)||null:this._pineMetaInfoCache.find(t=>t.scriptIdPart===e.pineId&&(void 0===e.pineVersion||(0,r.ensureDefined)(t.pine).version===e.pineVersion))||null}_makeNextRequestId(){return"metadata_"+this._nextRequestNumber++}_compilePine(e){throw new Error("unsupported")}}function d(e){ +e.description_localized=(0,s.t)(e.description,{context:"study"})}function u(e,t){const i=new(o())(t);(0,a.migrateMetaInfoAndPropState)(i);let s=!0;const r=e.findIndex(e=>e.id===i.id);if(-1===r)e.push(i);else{const t=e[r],n=void 0!==t.pine?l.Version.parse(t.pine.version):null,o=void 0!==i.pine?l.Version.parse(i.pine.version):null;null===o||null===n||o.isGreaterOrEqual(n)?(t.removeDefaults(),e[r]=i):s=!1}return s&&i.createDefaults(),i}},45090:(e,t,i)=>{"use strict";i.d(t,{StudyStatusProviderBase:()=>c});var s=i(50338),r=i(13933),n=i(28353);const o={NONE:"Default"},a=(0,n.t)("No volume data"),l=new Map;class c extends s.StatusProviderBase{constructor(e,t){super(t),this._source=e}getSplitTitle(){return this._source.titleInParts(!0,o,void 0,!1)}text(){return this._source.isActualInterval()?this._source.isFailed()?`${this._source.title(!0,o,void 0,!1)}: ${this.sourceStatusText()}`:`${this._source.title(!0,o,void 0,!1)} ${this.sourceStatusText()}`:this._source.title(!0,o,void 0,!1)}sourceStatusText(){return(0,r.convertStudyStatusToString)(this._source.status(),!0)}sourceStatusSolutionId(){const e=this._source.status();if(e.type===r.StudyStatusType.Error)return e.errorDescription.solution_id?e.errorDescription.solution_id:function(e){for(const t of Array.from(l.keys()))if(e.includes(t))return l.get(t)}(e.errorDescription.error)}errorStatus(){if(!this._source.isActualInterval()||this._source.isSymbolInvalid())return null;return this._source.status().type===r.StudyStatusType.Error?{error:this.sourceStatusText(),solutionId:this.sourceStatusSolutionId(),title:this.sourceStatusTitle()}:null}sourceStatusTitle(){const e=this._source.status();if(e.type===r.StudyStatusType.Error)return-1!==e.errorDescription.error.toLowerCase().indexOf("the data vendor doesn't provide volume data for this symbol.")?a:void 0}}},40529:(e,t,i)=>{"use strict";i.d(t,{StudyStatusProvider:()=>n});var s=i(28353),r=(i(13933),i(45090));(0,s.t)("Fundamental studies are no longer available on charts");class n extends r.StudyStatusProviderBase{constructor(e,t){super(e,t),this._study=e}color(){return this._study.isFailed()||this._study.metaInfo&&this._study.metaInfo().isTVScriptStub?"#ff0000":super.color()}sourceStatusText(){this._study.status();return super.sourceStatusText()}}},190:(e,t,i)=>{"use strict";i.d(t,{StudyStatusView:()=>r});var s=i(45058);class r extends s.StatusView{constructor(e){super(e.statusProvider())}color(){return this._statusProvider.color()}getSplitTitle(){return this._statusProvider.getSplitTitle()}update(){this._text=this._statusProvider.text()}}},13933:(e,t,i)=>{"use strict";i.r(t),i.d(t,{StudyStatusType:()=>n,convertStudyStatusToString:()=>o});var s=i(28353);const r=(0,s.t)("loading...");var n;function o(e,t){if(e.type===n.Loading)return t?r:"loading...";if(e.type===n.Error){const i=e.errorDescription,r=t?(0,s.t)(i.error):i.error;if(i.ctx){const e={};return Object.entries(i.ctx).forEach(([t,i])=>{e[t]=i.toString()}),r.format(e)}return r}return""}!function(e){e[e.Undefined=0]="Undefined",e[e.Loading=1]="Loading", +e[e.Completed=2]="Completed",e[e.Error=3]="Error"}(n||(n={}))},25270:(e,t,i)=>{"use strict";i.d(t,{StudyStub:()=>m});var s=i(190),r=i(22932),n=i(97098),o=i(2872),a=i.n(o),l=i(2015),c=i.n(l),h=i(45090);class d extends h.StudyStatusProviderBase{text(){return this._source.isActualInterval()?`${this._source.title()} ${this.sourceStatusText()}`:this._source.title()}}var u=i(13933);class p{getItems(){return[]}getValues(e){return[]}}const _=new(a());class m extends r.PriceDataSource{constructor(e,t,i){super(e),this._priceStep=.01,this._status={type:u.StudyStatusType.Undefined},this._statusChanged=new(a()),this._formatter=new n.PriceFormatter(100),this._origState=t,this._title=i;this._properties=new(c())({visible:!0}),this._statusView=new s.StudyStatusView(this)}properties(){return this._properties}statusView(){return this._statusView}legendView(){return null}state(e){return this._origState}setStatus(e){this._status=e,this._statusChanged.fire()}formatter(){return this._formatter}name(){return this._title}title(){return this._title}titleInParts(){return[this._title]}isFailed(){return this._status.type===u.StudyStatusType.Error}isLoading(){return this._status.type===u.StudyStatusType.Loading}setFailed(e){this.setStatus({type:u.StudyStatusType.Error,errorDescription:{error:e}}),this._model.updateSource(this)}isSymbolInvalid(){return!1}isActualInterval(){return!0}onIsActualIntervalChange(){return _}start(){}status(){return this._status}onStatusChanged(){return this._statusChanged}firstValue(){return null}currency(){return null}sessionId(){return this._model.mainSeries().sessionId()}sessionIdChanged(){return this._model.mainSeries().sessionIdChanged()}unit(){return null}symbolSource(){return this._model.mainSeries()}valuesProvider(){return new p}statusProvider(e){return new d(this,this._model.properties().childs().scalesProperties.childs().textColor)}}},89027:(e,t,i)=>{"use strict";i.d(t,{StudyValuesProvider:()=>g});var s=i(93751),r=i(49483),n=i(68906),o=i(67337),a=i(71053),l=i(14291),c=i(85733),h=i(50993),d=i(99220),u=i(88129),p=i(57626);const _=r.CheckMobile.any(),m=o.enabled("hide_last_na_study_output");class g{constructor(e,t){this._emptyValues=[],this._colorProviders=new Map,this._study=e,this._model=t;const i=this._study.metaInfo().plots;i&&i.forEach((e,t)=>{if((0,h.isPlotWithTechnicalValues)(e))return;const i=e.id;this._emptyValues.push(function(e,t="",i=""){return{id:t,index:e,title:i,value:"",visible:!1}}(t,i,this._study.guiPlotName(i)));const s=(0,h.isOhlcPlot)(e)?e.target:i;this._colorProviders.set(s,(0,d.createStudyPlotColorProvider)(this._study.metaInfo(),this._study.properties(),s))})}getItems(){return this._emptyValues}getValues(e){const t=this._emptyValues.map(e=>({...e}));let i=null;const r=this._study.data().lastIndex();if(null!==r)for(const e of t){if(!this._study.properties().styles[e.id].visible.value())continue;const t=this._study.nearestIndex(r,a.PlotRowSearchMode.NearestLeft,e.index+1);if(void 0===t)continue;const s=t+this._study.offset(e.id);i=null!==i?Math.max(s,i):s}(null===e||null!==i&&e>i)&&(e=i) +;const o=this._hideValues(),l=this._study.isVisible()&&!o?p.notAvailable:"";for(const e of t)e.value=l;if(o)return t;m&&t.length&&(t[t.length-1].value="");const c=this._study.priceScale();if(!this._study.isVisible()||null===e||null===c||c.isEmpty()||this._model.timeScale().isEmpty())return t;const d=this._study.metaInfo().plots,_=(0,u.getPriceValueFormatterForSource)(this._study),g={};for(const i of t){let t=i.id;const o=this._study.properties().styles[t].visible.value();if(i.visible=o,!o)continue;const l=i.index,c=e-this._study.offset(t),u=null!==r&&c>r?a.PlotRowSearchMode.NearestLeft:a.PlotRowSearchMode.Exact,p=this._study.nearestIndex(c,u);if(void 0===p)continue;let m=g[t];if(void 0===m&&(m=this._study.getMinFirstBarIndexForPlot(t),Number.isFinite(m)&&(g[t]=m)),m>p)continue;const f=this._study.data().last(),v=this._study.data().valueAt(p)||(null!==f?f.value:null);if(null===v)continue;const S=v[l+1];if(!(0,s.isNumber)(S))continue;const y=S>0;i.value=_(S);const b=this._study.properties().styles[t];let w=b.color.value();const C=d[l];(0,h.isOhlcPlot)(C)?(t=C.target||t,w=this._study.properties().ohlcPlots[t].color.value()):(0,h.isArrowsPlot)(C)&&(w=y?b.colorup.value():b.colordown.value());let P=w;const T=this._colorProviders.get(t),x=T&&T.getPlotPointStyle(v);x&&((0,h.isArrowsPlot)(C)?(y&&void 0!==x.colors[5]&&(P=x.colors[5]),y||void 0===x.colors[6]||(P=x.colors[6])):void 0!==x.colors[0]&&(P=x.colors[0])),"transparent"===P&&(P=w),P=(0,n.resetTransparency)(P),i.color=P}return t}_hideValues(){return _&&(null===this._model.crossHairSource().pane||(0,l.isLineToolName)(c.tool.value())||null!==this._model.lineBeingEdited())}}},69774:(e,t,i)=>{"use strict";i.d(t,{StudyBase:()=>gt});var s=i(16230),r=i(88537),n=i(28353),o=i(98125),a=i(49483),l=i(2872),c=i.n(l),h=i(51344),d=i(22932),u=i(69927),p=i(71053),_=i(67072),m=i.n(_),g=i(54376),f=i(95936),v=i(26179),S=i(22458);class y extends v.StudyDataWindowView{constructor(e,t){super(e,t),this._showStudyValues=t.properties().childs().paneProperties.childs().legendProperties.childs().showStudyValues,this._showStudyValues.subscribe(this,this.update),this._study.properties().showLegendValues.subscribe(this,this.update)}areValuesVisible(){return this._showStudyValues.value()}additional(){return null}destroy(){this._showStudyValues.unsubscribeAll(this),this._study.properties().showLegendValues.unsubscribeAll(this)}_createValuesProvider(e,t){return new S.StudyLegendValuesProvider(e,t)}}var b=i(85733),w=i(190),C=i(19234),P=i(72857),T=i(95836),x=i(40529),I=i(80643),M=i(95505),L=i(50993),A=(i(33266),i(67337)),E=i(86441),k=i(68906),D=i(94804);class V{constructor(e){this._data=e}draw(e,t){}drawBackground(e,t){e.save();const i=this._data,s=t.pixelRatio;let r=null;const n=Math.round(this._data.w*s);for(let t=0;t0){i.items[t-1].index===o.index-1&&null!==r&&(l=r+1)}const c=a+n,h=c-l+1;e.fillRect(l,Math.round(i.y*s),h,Math.round(i.h*s)),r=c}e.restore()}hitTest(e){ +return null}}var B=i(99220);class N{constructor(e,t,i,s){this._items=[],this._invalidated=!0,this._isMarkersEnabled=A.enabled("source_selection_markers"),this._study=e,this._series=t,this._model=i,this._plotName=s;const n=this._study.metaInfo().plots;for(let e=0;e0?(i-=n,s+=n):(i+=n,s-=n);const o=this._study.getMinFirstBarIndexForPlot(this._plotName);if(o>s)return;i=Math.max(o,i);const a=this._study.data().rangeIterator(i,s);for(;a.hasNext();){const e=a.next();let i=e.index;const s=e.value;i+=n;const o=new E.Point(Math.floor(i)-.5,NaN);let l=(0,I.isNumber)(t)?t:50;l=Math.min(l,100),l=Math.max(l,0);const c=this._colorProvider.getPlotPointStyle(s);void 0!==c.colors[1]&&(o.color=(0,k.generateColor)((0,r.ensureDefined)(c.colors[1]),l)),o.index=i,this._items.push(o)}this._model.timeScale().timedValuesToCoordinates(this._items)}}var R,O,F=i(11372),W=i(41892),H=i(56138),z=i(64514),U=i(84346),j=i(85847),G=i(63948),q=i(31175),Y=i(34026),K=i(40236),$=i(52640),X=i(93435);!function(e){e.Left="left",e.Right="right",e.Center="center"}(R||(R={})),function(e){e.Top="top",e.Bottom="bottom",e.Middle="middle"}(O||(O={}));const Z=(0,X.createDisconnectedCanvas)(document,new X.Size(0,0),1);class J{constructor(e,t,i,s,n,o="center",a=0){this._lines=e.split(/[^\S\r\n]*(?:\r\n|\r|\n)/),this._font=function(e,t,i,s){return(0,$.makeFont)(s,i,`${e?"bold ":""}${t?"italic ":""}`)}(t,i,s,n),this._fontSize=n,this._verticalPadding=~~(n/6),this._textAlign=o,this._lineSpacing=a;const l=(0,r.ensureNotNull)(Z.getContext("2d"));l.font=this._font,l.textBaseline="top";let c=0;for(let e=0;e{for(const t of this._lines)e.fillText(t,l,c),c+=this._fontSize,c+=this._lineSpacing}),e.restore()}}class Q extends K.AbstractMapContainer{constructor(e){super(),this._maxSize=e,this._keysQueue=[]}get(e){const{fontSize:t,text:i,align:s,lineSpacing:r=0}=e;if(!i||!t||!s)return null;const n=(0,K.getDefault3)(this._map,r,s,t,new Map);let o=n.get(i);return void 0!==o||(this._size>=this._maxSize?this._deleteFirstKey():++this._size,this._keysQueue.push([t,s,r,i]),o=new J(i,e.bold,e.italic,e.font,t,s,r),n.set(i,o)),o}_deleteFirstKey(){const e=this._keysQueue.shift(),[t,i,s,n]=e,o=(0,r.ensureDefined)(this._map.get(s)),a=(0,r.ensureDefined)(o.get(i)),l=(0,r.ensureDefined)(a.get(t));l.delete(n),0===l.size&&a.delete(t),0===a.size&&o.delete(i),0===o.size&&this._map.delete(s)}}var ee=i(22799);class te{constructor(e,t={skipRenderingOptimizations:!1}){this._items=[],this._barSpacing=0,this._vertOffset=0,this._textCache=t.textCache||new Q(5e3),this._drawOperation=t.skipRenderingOptimizations?this._drawWithoutOptimizations.bind(this):this._drawWithOptimizations.bind(this),null!==e&&this.setData(e)}draw(e,t){this._preDrawInit(),this._drawOperation(e,t)}hitTest(e){const t=U.HitTestResult.REGULAR;let i=null;for(const s of this._items){if(!s)continue;const r=this._calcBoundingBox(s);if(r&&(0,Y.pointInBox)(e,r)){const e={tooltip:this._getTooltip(s,r)};i=new U.HitTestResult(t,e)}}return i}setData(e){this._height=void 0!==e.height?e.height:e.width,this._width=void 0!==e.width?e.width:e.height,this._color=e.color,this._borderColor=e.borderColor,this._vertOffset=e.vertOffset||0,e.text&&(this._text=e.text,this._fontSize=e.fontSize,this._lineSpacing=e.lineSpacing,this._textColor=e.textColor,this._textAlign=e.textAlign||"center"),void 0!==e.items&&void 0!==e.barSpacing&&this.setItems(e.items,e.barSpacing)}setItems(e,t){this._setBaseData(e,t)}_calcBoundingBox(e){const t=e.vertOffset,i=this._getTextCache(e);if(!i)return;const s=i.textImageWidth,r=i.textImageHeight,n=s/2,o=e.y+t+e.textVertOffset,a=t>0?0:-r,l=t>0?r:0,c=new E.Point(e.x-n,o+a),h=new E.Point(e.x+n,o+l);return(0,E.box)(c,h)}_unionBox(e,t){ +const i=Math.min(e.min.x,t.min.x),s=Math.max(e.max.x,t.max.x),r=Math.min(e.min.y,t.min.y),n=Math.max(e.max.y,t.max.y),o=new E.Point(i,r),a=new E.Point(s,n);return(0,E.box)(o,a)}_getTooltip(e,t){if(e.tooltip)return{content:{type:"text",data:e.tooltip},tooltipDelay:200,extendMargin:!0,rect:{x:t.min.x,y:t.min.y,w:Math.abs(t.max.x-t.min.x),h:Math.abs(t.max.y-t.min.y)}}}_setBaseData(e,t){this._items.length=0,this._barSpacing=t;for(const t of e){const e=void 0===t.width?(0,r.ensureDefined)(this._width):t.width,i=void 0===t.height?(0,r.ensureDefined)(this._height):t.height,s=void 0===t.vertOffset?this._vertOffset:t.vertOffset,n=s>0?i:-i;this._items.push({width:e,height:i,vertOffset:s,textVertOffset:n,shapeWidth:0,shapeHeight:0,stepX:0,stepY:0,...t})}}_drawItemText(e,t,i){const s=this._getTextCache(i);if(null===s)return;const r=i.x,n=i.vertOffset,o=i.y+n+i.textVertOffset;let a;a=i.style&&void 0!==i.style.textColor?i.style.textColor:this._textColor,s.paintTo(e,t,a,r,o,R.Center,n>0?O.Top:O.Bottom)}_drawWithOptimizations(e,t){let i,s,r=null,n=!1;for(const o of this._items)o.style&&void 0!==o.style.color?(i=o.style.color||"rgba(0, 0, 0, 0)",s=o.style.borderColor||"rgba(0, 0, 0, 0)"):(i=this._color,s=this._borderColor),(r!==i||a.isSafari)&&(r=i,n&&this._endPath(e),this._startPath(e,t,i,s)),this._drawItemShape(e,t,o),n=!0;n&&this._endPath(e);for(const i of this._items)this._drawItemText(e,t,i)}_drawWithoutOptimizations(e,t){let i,s;for(const n of this._items){const o=(0,r.ensureDefined)(n.style);i=o.color||"rgba(0, 0, 0, 0)",s=o.borderColor||"rgba(0, 0, 0, 0)",this._startPath(e,t,i,s),this._drawItemShape(e,t,n),this._endPath(e),this._drawItemText(e,t,n)}}_drawItemShape(e,t,i){(0,X.drawScaled)(e,t.pixelRatio,()=>this._drawItemShapeUsingCSSPixels(e,i))}_drawItemShapeUsingCSSPixels(e,t){}_preDrawInit(){}_startPath(e,t,i,s){}_endPath(e){}_getTextCache(e){var t;const i=e.text||this._text,s=e.fontSize||this._fontSize,r=null!==(t=e.lineSpacing)&&void 0!==t?t:this._lineSpacing,n=e.textAlign||this._textAlign;return this._textCache.get({text:i,bold:!1,italic:!1,font:ee.CHART_FONT_FAMILY,fontSize:s,lineSpacing:r,align:n})}}class ie extends te{_startPath(e,t,i,s){e.beginPath(),e.lineWidth=this._lineWidth(t),e.lineCap="butt",e.strokeStyle=i}_endPath(e){e.stroke()}_lineWidth(e){return Math.max(1,Math.floor(2*e.pixelRatio))}}class se extends te{_startPath(e,t,i,s){e.beginPath(),e.lineWidth=this._lineWidth(t),e.lineCap="butt",e.fillStyle=i,e.strokeStyle=s}_endPath(e){e.fill(),e.stroke()}_lineWidth(e){return Math.max(1,Math.floor(e.pixelRatio))}}class re extends se{constructor(){super(...arguments),this._sign=0,this._thinArrow=!1,this._thinArrowLineWidth=0,this._headHeight=0,this._arrowWidth=0}setItems(e,t){this._setBaseData(e,t)}_drawItemShape(e,t,i){const s=t.pixelRatio,r=this._lineWidth(t)%2?.5:0,n=this._sign,o=this._arrowWidth,a=this._headHeight,l=Math.abs(i.height),c=Math.round(i.x*s)+r,h=i.vertOffset,d=Math.round((i.y+h+n*l/2)*s)+r,u=(0,z.ceiledEven)(o*s),p=u/2,_=Math.round(l*s),m=Math.round(a*s);e.translate(c,d), +this._thinArrow?(e.moveTo(0,0),e.lineTo(-p,-p*n),e.moveTo(0,0),e.lineTo(p,-p*n),e.moveTo(0,0),e.lineTo(0,-_*n),e.moveTo(-p,-_*n),e.lineTo(p,-_*n)):(e.moveTo(0,0),_=0?e.vertOffset:e.vertOffset-e.shapeHeight}}),he.set("PaneRendererLabelDown",class extends oe{_calcBoundingBox(e){const t=e.x-e.shapeWidth/2,i=e.x+e.shapeWidth/2,s=e.y-e.shapeHeight+e.vertOffset,r=e.y+e.vertOffset,n=new E.Point(t,s),o=new E.Point(i,r);return(0,E.box)(n,o)}_drawItemShape(e,t,i){const s=t.pixelRatio,r=this._lineWidth(t)%2?.5:0,n=Math.max(1,Math.floor(s))%2?.5:0,o=this._getArrowSize(i);let a=Math.round(o*s);(n+a)%1!=r%1&&(a+=.5);let l=Math.round(i.shapeWidth/2*s);(n+l)%1!=r%1&&(l+=.5);const c=Math.round(i.x*s)+n,h=Math.round((i.y+i.vertOffset)*s)+r,d=c+a,u=Math.round((i.y+i.vertOffset-o)*s)+r,p=c-a,_=c+l,m=Math.round((i.y+i.vertOffset-i.shapeHeight)*s)+r,g=c-l;e.moveTo(d,u),e.lineTo(c,h),e.lineTo(p,u),i.shapeWidth<=2*o?(e.lineTo(g,u),this._drawCorner(e,g,m,le.leftUp,s),this._drawCorner(e,_,m,le.rightUp,s),e.lineTo(_,u)):(this._drawCorner(e,g,u,le.leftDown,s),this._drawCorner(e,g,m,le.leftUp,s),this._drawCorner(e,_,m,le.rightUp,s),this._drawCorner(e,_,u,le.rightDown,s)),e.lineTo(d,u)}_getVerticalTextOffset(e){return-e.shapeHeight/2-this._getArrowSize(e)/2}_calcVertOffset(e){return Math.sign(e.vertOffset)<=0?e.vertOffset:e.vertOffset+e.shapeHeight}}),he.set("PaneRendererSquare",class extends se{_drawItemShape(e,t,i){const s=t.pixelRatio,r=Math.max(1,Math.floor(s))%2?.5:0,n=this._lineWidth(t)%2?.5:0;let o=Math.round(i.height/2*s);(r+o)%1!=n%1&&(o+=.5);const a=Math.round(i.x*s)+r,l=Math.round((i.y+i.vertOffset)*s)+r,c=a-o,h=l-o,d=a+o,u=l+o;e.rect(c,h,d-c,u-h)}_calcBoundingBox(e){const t=e.height,i=Math.round(t/2),s=e.x-i,r=e.vertOffset,n=e.y+r-i,o=s,a=s+t,l=n,c=n+t,h=new E.Point(o,l),d=new E.Point(a,c);let u=(0,E.box)(h,d);const p=super._calcBoundingBox(e);return p&&(u=this._unionBox(u,p)),u}}),he.set("PaneRendererTriangleApexUp",class extends ce{_drawItemShape(e,t,i){const s=i.width,r=i.height,n=Math.round(r/3),o=i.vertOffset-2*n,a=t.pixelRatio,l=this._lineWidth(t)%2?.5:0,c=Math.max(1,Math.floor(a)),h=c%2?.5:0;let d=Math.round(s*a);d%2!=c%2&&(d+=1);const u=Math.round(i.x*a)+h,p=Math.round((i.y+o)*a),_=u+d/2,m=Math.round((i.y+o+r)*a)+l,g=u-d/2;e.moveTo(u,p),e.lineTo(_,m),e.lineTo(g,m),e.lineTo(u,p)}}),he.set("PaneRendererTriangleApexDown",class extends ce{_drawItemShape(e,t,i){const s=i.width,r=i.height,n=Math.round(r/3),o=i.vertOffset-n,a=t.pixelRatio,l=this._lineWidth(t)%2?.5:0,c=Math.max(1,Math.floor(a)),h=c%2?.5:0;let d=Math.round(s*a);d%2!=c%2&&(d+=1);const u=Math.round(i.x*a)+h,p=Math.round((i.y+o)*a)+l,_=u+d/2,m=Math.round((i.y+o+r)*a),g=u-d/2;e.moveTo(g,p),e.lineTo(_,p),e.lineTo(u,m),e.lineTo(g,p)}}),he.set("PaneRendererXCross",class extends ie{_drawItemShapeUsingCSSPixels(e,t){const i=t.width,s=t.height,r=t.x-i/2,n=t.vertOffset,o=t.y-s/2+n;e.moveTo(r,o),e.lineTo(r+i,o+s),e.moveTo(r,o+s),e.lineTo(r+i,o)}_calcBoundingBox(e){const t=e.width,i=e.height,s=e.x-t/2,r=e.vertOffset,n=e.y-i/2+r,o=s,a=s+t,l=n,c=n+i,h=new E.Point(o,l),d=new E.Point(a,c);let u=(0,E.box)(h,d);const p=super._calcBoundingBox(e) +;return p&&(u=this._unionBox(u,p)),u}});class de{constructor(e,t,i,s){this._items=[],this._invalidated=!1,this._renderer=null,this._isMarkersEnabled=A.enabled("source_selection_markers"),this._selectionData=null,this._plotIndex=null,this._topCoord=0,this._bottomCoord=0,this._study=e,this._series=t,this._model=i,this._plotName=s;const r=e.metaInfo().plots;for(let e=0;e0?(s-=o,n+=o):(s+=o,n-=o);const a=this._study.getMinFirstBarIndexForPlot(this._plotName);if(a>n)return;s=Math.max(a,s);const l=this._study.data(),c=this._study.firstValue();if(null===c)return;const h=l.rangeIterator(s,n),d=this._getTranspValue();let u=[];const _=this._model.selection().isSelected(this._study);_?(u=this._selectionIndexer.indexes(),this._selectionData={points:[],hittestResult:U.HitTestResult.REGULAR,vertOffset:0,bgColors:[],barSpacing:e.barSpacing(),visible:!0}):(this._selectionIndexer.clear(),this._selectionData=null);const m=this._series.properties().childs().style.value(),g=2===m?"lineStyle":3===m?"areaStyle":null;let f,v;g?(f=this._series.properties().childs()[g].childs().priceSource.value(),v=f):(f="high",v="low");const S=t.isInverted(),y=t.coordinateToPrice(t.height()*t.topMargin(),c),b=t.coordinateToPrice(t.height()*(1-t.bottomMargin()),c);this._topCoord=S?b:y,this._bottomCoord=S?y:b;const w=(0,r.ensureNotNull)(this._model.paneForSource(this._study)).height(),C=this._study.properties().styles[this._plotName],P=C.color.value(),T=C.textColor?C.textColor.value():void 0,x=P,I=P,M=void 0===T?void 0:T,L=(0,r.ensureNotNull)(this._plotIndex),A=(0,q.createEmptyStyle)();for(;h.hasNext();){const e=h.next(),t=e.index,i=e.value,s=Math.floor(t+o),r=i[L+1];if(null==r)continue;const n=this._createItem(s,r,f,v);if(null!==n){if(this._colorProvider.isColorDefined()){n.style={color:x,borderColor:I,textColor:M};const e=this._colorProvider.getPlotPointStyle(i,A);this._fillItemWithPointStyle(n,e,d)} +_&&-1!==u.indexOf(t)&&null!==this._selectionData&&(this._selectionData.points.push(n),this._selectionData.bgColors.push(this._model.backgroundColorAtYPercentFromTop(n.y/w))),this._items.push(n)}}this._convertItemsToCoordinates()}_fillItemWithPointStyle(e,t,i){const s=(0,r.ensureDefined)(e.style);if(void 0!==t.colors[0]){s.color=(0,k.generateColor)((0,r.ensureDefined)(t.colors[0]),i);const e=i>9?i-10:0;s.borderColor=(0,k.generateColor)(s.color,e)}void 0!==t.colors[2]&&(s.textColor=(0,k.generateColor)((0,r.ensureDefined)(t.colors[2]),i))}_updateRenderer(e){this._updateImpl();const t=this._model.timeScale(),i={},s=this._getTranspValue(),r=t.barSpacing(),n=this._calculateShapeHeight(r),o=this._study.properties().styles[this._plotName].location.value(),a=this._calculateVerticalOffset(o,n+n/2);i.barSpacing=r,i.items=this._items,i.color=(0,k.generateColor)(this._study.properties().styles[this._plotName].color.value(),s),i.height=n,i.vertOffset=a;const l=this._study.properties().styles[this._plotName].plottype.value(),c=H.plotShapesData[l],h=new D.CompositeRenderer;c&&h.append(this._createRenderer(c.paneRendererClass,i)),this._model.selection().isSelected(this._study)&&this._isMarkersEnabled&&null!==this._selectionData&&(this._selectionData.vertOffset=a,h.append(new W.SelectionRenderer(this._selectionData))),this._renderer=h}_createRenderer(e,t){const i=he.get(e);return new((0,r.ensureDefined)(i))(t)}_getSeriesVal(e,t){const i=(0,G.barFunction)(e),s=this._series.data().valueAt(t);return null===s?null:i(s)}_getTranspValue(){let e=0;this._study.properties().transparency&&(e=this._study.properties().transparency.value(),e=(0,I.isNumber)(e)?e:50);const t=this._study.properties().styles[this._plotName];return t.transparency&&(e=t.transparency.value(),e=(0,I.isNumber)(e)?e:50),(0,z.clamp)(e,0,100)}_createItem(e,t,i,s){const n=this._study.properties().styles[this._plotName].location.value();if((null===t||0===t)&&n!==f.MarkLocation.Absolute)return null;let o;switch(n){case f.MarkLocation.AboveBar:const a=this._getSeriesVal(i,e);if(null===a)return null;o=a;break;case f.MarkLocation.BelowBar:const l=this._getSeriesVal(s,e);if(null===l)return null;o=l;break;case f.MarkLocation.Top:o=this._topCoord;break;case f.MarkLocation.Bottom:o=this._bottomCoord;break;case f.MarkLocation.Absolute:o=(0,r.ensureNotNull)(t);break;default:throw new Error("Bad value: "+n)}return new E.Point(e,o)}_convertItemsToCoordinates(){const e=this._model.timeScale(),t=this._study.priceScale();e.timedValuesToCoordinates(this._items);const i=(0,r.ensureNotNull)(this._study.firstValue());(0,r.ensureNotNull)(t).pointsArrayToCoordinates(this._items,i)}_calculateVerticalOffset(e,t){let i=0;switch(e){case f.MarkLocation.AboveBar:case f.MarkLocation.Bottom:i=-t;break;case f.MarkLocation.BelowBar:case f.MarkLocation.Top:i=t}return(0,r.ensureNotNull)(this._study.priceScale()).isInverted()&&(i*=-1),i}_calculateShapeHeight(e,t){let i=e;switch(t){case L.PlotSymbolSize.Tiny:i=.3*e;break;case L.PlotSymbolSize.Small:i=.6*e;break;case L.PlotSymbolSize.Normal:i=e;break +;case L.PlotSymbolSize.Large:i=1.5*e;break;case L.PlotSymbolSize.Huge:i=2*e}return i}}class ue extends de{renderer(){const e=this._study.properties().styles[this._plotName];return e.visible&&e.visible.value()&&this._scalesReady()?(this._invalidated&&(this._updateRenderer(e),this._invalidated=!1),this._renderer):null}_updateRenderer(e){this._updateImpl();const t=this._model.timeScale(),i={},s=this._getTranspValue(),r=t.barSpacing();let n;if(e.size){const t=e.size.value();n=this._calculateShapeHeight(25,t)}else n=Math.round(r/2);n=Math.max(n,1);const o=e.location.value(),a=(0,k.generateColor)(e.color.value(),s),l=s>19?s-10:0,c=this._calculateVerticalOffset(o,Math.round(1.5*n));i.barSpacing=r,i.items=this.items(),i.color=a,i.borderColor=(0,k.generateColor)(e.color.value(),l),i.height=n,i.vertOffset=c;const h=e.plottype.value(),d=H.plotShapesData[h],u=new D.CompositeRenderer,p=e.text?e.text.value():void 0;if(void 0!==p&&""!==p.trim()){let t=p.trim().replace(/\\n/gm,"\n");t=(0,F.cleanButAmpersand)(t,!0),i.text=t,i.fontSize=12;const r=e.textColor?e.textColor.value():void 0;i.textColor=r?(0,k.generateColor)(r,s):a}u.append(super._createRenderer(d.paneRendererClass,i)),this._model.selection().isSelected(this._study)&&this._isMarkersEnabled&&null!==this._selectionData&&(this._selectionData.vertOffset=c,u.append(new W.SelectionRenderer(this._selectionData))),this._renderer=u}}var pe=i(87795),_e=i.n(pe),me=i(49094);class ge extends te{constructor(e,t){super(null,t),this._fontSizeEnsured=0,this._ch="",this._fontFamily=ee.CHART_FONT_FAMILY,this._charCache=null,null!==e&&this.setData(e)}setData(e){super.setData(e),this._fontSizeEnsured=(0,r.ensureDefined)(this._height);const t=e.char.slice(0,40);this._ch=_e()(t)[0]||" ",this._fontFamily=e.fontFamily||ee.CHART_FONT_FAMILY}hitTest(e){const t=(0,me.interactionTolerance)().series+this._fontSizeEnsured/2;for(const i of this._items){if(new E.Point(i.x,i.y+i.vertOffset).subtract(e).length()<=t)return new U.HitTestResult(U.HitTestResult.REGULAR)}return null}_drawItemShape(e,t,i){const s=i.x,r=i.vertOffset>0?1:-1,n=i.y+i.vertOffset-r*Math.round(this._fontSizeEnsured/2);let o;o=i.style&&void 0!==i.style.color?i.style.color:this._color;const a=this._textImageCache(),l=t.pixelRatio;if(this._fontSizeEnsured<=4/l){e.save();const t=Math.max(1,Math.floor(l));let r=Math.max(1,Math.floor(a.textImageWidth*l));r%2!=t%2&&(r+=r>1?-1:1);const c=Math.round(n*l)+(i.vertOffset>=0?0:-r);return e.fillStyle=o,e.fillRect(Math.round(s*l)+(l%2?.5:0)-r/2,c,r,r),void e.restore()}a.paintTo(e,t,o,s,n,R.Center,i.vertOffset>0?O.Top:O.Bottom)}_startPath(e,t,i,s){}_endPath(e){}_textImageCache(){return null!==this._charCache&&this._charCache.fontFamily===this._fontFamily&&this._charCache.fontSize===this._fontSizeEnsured||(this._charCache={fontSize:this._fontSizeEnsured,fontFamily:this._fontFamily,cache:new J(this._ch,!1,!1,this._fontFamily,this._fontSizeEnsured,"center",0)}),this._charCache.cache}}class fe extends de{constructor(){super(...arguments),this._compositeRenderer=new D.CompositeRenderer, +this._charRenderer=new ge(null)}renderer(){const e=this._study.properties().styles[this._plotName];return e.visible&&e.visible.value()&&this._scalesReady()?(this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._compositeRenderer):null}_updateImpl(){if(this._compositeRenderer.clear(),super._updateImpl(),0===this._items.length)return;const e=this._getTranspValue(),t=this._model.timeScale().barSpacing();let i;const s=this._study.properties().styles[this._plotName];if(s.size){const e=s.size.value();i=this._calculateShapeHeight(50,e)}else i=Math.round(t);const r=s.location.value(),n=(0,k.generateColor)(s.color.value(),e),o=this._calculateVerticalOffset(r,i),a={items:this.items(),barSpacing:t,char:s.char.value(),height:i,vertOffset:o,color:n},l=s.text?s.text.value():void 0;if(void 0!==l&&""!==l.trim()){let t=l.trim().replace(/\\n/gm,"\n");t=(0,F.cleanButAmpersand)(t,!0),a.text=t,a.fontSize=12;const i=s.textColor?s.textColor.value():void 0;a.textColor=i?(0,k.generateColor)(i,e):n}this._charRenderer.setData(a),this._compositeRenderer.append(this._charRenderer),this._model.selection().isSelected(this._study)&&this._isMarkersEnabled&&null!==this._selectionData&&(this._selectionData.vertOffset=o,this._compositeRenderer.append(new W.SelectionRenderer(this._selectionData)))}}var ve=i(24377);class Se extends E.Point{constructor(e,t,i,s){super(e,t),this.height=i,this.isUp=s,this.style={}}}function ye(e){return Math.round(e/4)}function be(e){return Math.round(e/2)}class we{constructor(e){this._data=e}draw(e,t){var i;const s=t.pixelRatio,r=this._data,n=be(r.barSpacing),o=ye(r.barSpacing),a=n<4,l=Math.max(n/2,1),c=(0,z.ceiledEven)(n*s),h=c/2,d=Math.round(n*s);e.lineCap="butt",e.lineWidth=Math.max(1,Math.floor(s));const u=e.lineWidth%2?.5:0;for(const t of r.items){const n=t.isUp?-1:1,p=Math.round(Math.abs(t.height)*s),_=Math.round(t.x*s)+u,m=Math.round((t.y-n*o)*s)+u;e.beginPath(),e.translate(_,m);const g=null!==(i=t.style&&t.style.color)&&void 0!==i?i:t.isUp?r.colorup:r.colordown;a?(e.moveTo(0,0),e.lineTo(-h,-h*n),e.moveTo(0,0),e.lineTo(h,-h*n),e.moveTo(0,0),e.lineTo(0,-p*n),e.moveTo(-h,-p*n),e.lineTo(h,-p*n),e.lineWidth=l,e.strokeStyle=g,e.stroke()):(e.moveTo(0,0),pthis._maxAbsValue&&(this._maxAbsValue=Math.abs(t));const r=t>0;let n;if(r){const t=this._getSeriesVal(s,e);if(null===t)return null;n=t}else{const t=this._getSeriesVal(i,e);if(null===t)return null;n=t}return new Se(e,n,t,r)}_convertItemsToCoordinates(){const e=this._model.timeScale(),t=(0,r.ensureNotNull)(this._study.priceScale());e.timedValuesToCoordinates(this._items),t.pointsArrayToCoordinates(this._items,(0,r.ensureNotNull)(this._study.firstValue()));let i=Math.abs(this._study.properties().styles[this._plotName].minHeight.value()),s=Math.abs(this._study.properties().styles[this._plotName].maxHeight.value());if(i>s){const e=i;i=s,s=e}const n=(s-i)/this._maxAbsValue,o=this._items;for(let e=0;es)return;i=Math.max(n,i);const o=this._study.data(),a=this._study.firstValue();if(null===a)return;const l=o.rangeIterator(i,s),c=this._study.properties().ohlcPlots[this._plotName],h=new Map,d=(e,t)=>{const i=e+"@"+t;if(!h.has(i)){const s=(0,k.generateColor)(e,t);return h.set(i,s),s}return h.get(i)},u=(0,q.createEmptyStyle)();for(;l.hasNext();){const e=l.next();let t=e.index;const i=e.value;t=Math.floor(t);let s=!0;const n=new Map;for(let e=1;e<=4;++e){const t=this._ohlcPlotIndexes.get(e);if(void 0===t){s=!1;break}const r=i[t+1];if(null==r){s=!1;break}n.set(e,r)}if(!s)continue;const o=(0,r.ensureDefined)(n.get(1)),a=(0,r.ensureDefined)(n.get(4)),h=(0,r.ensureDefined)(n.get(2)),p=(0,r.ensureDefined)(n.get(3)),_=Math.max(o,h,p,a),m=Math.min(o,h,p,a);let g=(0,r.ensureDefined)(d(c.color.value(),0));const f=this._colorProvider.getPlotPointStyle(i,u);void 0!==f.colors[0]&&(g=(0,r.ensureDefined)(f.colors[0]));const v={time:Math.round(t),exactTime:t,open:o,high:_,low:m,close:a,color:g,wickColor:f.colors[4],borderColor:f.colors[3],hollow:null};this._bars.push(v)}if(e.barPricesToCoordinates(this._bars,a),this._model.timeScale().barIndexesToCoordinates(this._bars),this._model.selection().isSelected(this._study)){const t=this._selectionIndexer.indexes();this._selectionData={points:[],hittestResult:U.HitTestResult.REGULAR,bgColors:[],visible:!0,barSpacing:this._model.timeScale().barSpacing()};const i=(0,r.ensureNotNull)(this._model.paneForSource(this._study)).height(),s=(0,r.ensureDefined)(this._ohlcPlotIndexes.get(4));for(let r=0;rthis._actualLength?this._items[this._actualLength]:null;return null!==e&&Boolean(e.invalidateCache)&&e.invalidateCache(),e}invalidateCache(){this._invalidations+=1,3e3===this._invalidations&&(this._items.splice(this._actualLength),this._invalidations=0),this._actualLength=0}at(e){return this._items[e]}data(){return this._items}length(){return this._actualLength}}class Re{constructor(){this._map=new Map,this._usedKeys=new Set,this._invalidations=0}invalidateCache(){this._invalidations+=1,50===this._invalidations&&(this._deleteUnused(),this._invalidations=0),this._usedKeys.clear(),this._map.forEach((e,t)=>e.invalidateCache())}get(e){const t=this._map.get(e);return void 0!==t&&this._usedKeys.add(e),t}set(e,t){this._usedKeys.add(e),this._map.set(e,t)}forEach(e){this._map.forEach((t,i)=>{this._usedKeys.has(i)&&e(t,i)})}delete(e){const t=this._map.get(e);void 0!==t&&t.invalidateCache(),this._usedKeys.delete(e)}_deleteUnused(){const e=[];this._map.forEach((t,i)=>{this._usedKeys.has(i)||e.push(i)});for(const t of e)this._map.delete(t)}}class Oe extends Ne{constructor(){super(), +this.points1=new Ne,this.points2=new Ne,this.push(this.points1),this.push(this.points2)}addPoints1Point(e,t){let i=this.points1.newItem();null!==i?(i.x=e,i.y=t):i={x:e,y:t},this.points1.push(i)}addPoints2Point(e,t){let i=this.points2.newItem();null!==i?(i.x=e,i.y=t):i={x:e,y:t},this.points2.push(i)}invalidateCache(){this.points1.invalidateCache(),this.points2.invalidateCache()}}class Fe extends Be.ScaledPaneRenderer{constructor(){super(...arguments),this._data=null}setData(e){this._data=e}hitTest(e,t){return null}_drawImpl(e,t){if(null===this._data)return;const i=.25*this._data.barSpacing,s=this._data.transparency;this._data.colorAreas.forEach((t,r)=>{e.beginPath();for(let s=0;s=0;t--)e.lineTo(r.points2.at(t).x,r.points2.at(t).y)}else{const t=r.points2.at(0).x,s=r.points2.at(0).y;e.lineTo(n+i,o),e.lineTo(t+i,s),e.lineTo(t-i,s),e.lineTo(n-i,o)}}e.closePath(),e.fillStyle=(0,k.generateColor)(r,s),e.fill()})}}var We=i(81688);class He extends Ne{constructor(){super(...arguments),this._startIndex=0}setStartIndex(e){this._startIndex=e}at(e){const t=e-this._startIndex;for(;t>=this._actualLength;){if(this._items.length<=t)this._items.push({plot1Value:void 0,plot2Value:void 0,colorIndex:void 0});else{const e=this._items[this._actualLength];e.plot1Value=void 0,e.plot2Value=void 0,e.colorIndex=void 0}this._actualLength+=1}return this._items[t]}}class ze{constructor(e,t,i=!1){this._isHlineFill=!1,this._bandAKey=null,this._bandBKey=null,this._colorPlotIndex=null,this._colorValues=[],this._colors=new Ne,this._areaRenderer=new Fe,this._invalidated=!0,this._plIndex1=null,this._plIndex2=null,this._level1=0,this._level2=0,this._studyValuesCache=new He,this._points1=new Ne,this._points2=new Ne,this._timePoints=new Ne,this._colorAreas=new Re,this._source=e,this._model=t,this._fillGaps=i}update(){this._invalidated=!0}renderer(e,t){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._areaRenderer}_correctVisibleRange(e){const t=this._source.data(),i=t.search(e.firstBar(),p.PlotRowSearchMode.NearestLeft,this._plotIndex1()),s=t.search(e.firstBar(),p.PlotRowSearchMode.NearestLeft,this._plotIndex2()),r=t.search(e.lastBar(),p.PlotRowSearchMode.NearestRight,this._plotIndex1()),n=t.search(e.lastBar(),p.PlotRowSearchMode.NearestRight,this._plotIndex2()),o=null!==i?i.index:e.firstBar(),a=null!==s?s.index:e.firstBar(),l=null!==r?r.index:e.lastBar(),c=null!==n?n.index:e.lastBar();return[Math.min(o,a),Math.max(l,c)]}_plotNames(){return this._source.metaInfo().plots.map(e=>e.id)}_plotIndex1(){return null===this._plIndex1&&(this._plIndex1=this._plotNames().indexOf(this._plotAId())+1),this._plIndex1}_plotIndex2(){return null===this._plIndex2&&(this._plIndex2=this._plotNames().indexOf(this._plotBId())+1),this._plIndex2} +_updateImpl(){var e,t,i;if(this._areaRenderer.setData(null),!this._visible())return;const s=this._source.priceScale(),n=this._model,o=n.timeScale();if(!s||s.isEmpty()||o.isEmpty())return;if(n.mainSeries().bars().isEmpty())return;const a=this._source.firstValue();if(null===a)return;if(this._isHlineFill){const e=this._source.properties().bands[(0,r.ensureNotNull)(this._bandAKey)],t=this._source.properties().bands[(0,r.ensureNotNull)(this._bandBKey)];this._level1=s.priceToCoordinate(e.value.value(),a),this._level2=s.priceToCoordinate(t.value.value(),a)}const l=o.visibleBarsStrictRange();if(null===l)return;this._timePoints.invalidateCache(),this._points1.invalidateCache(),this._points2.invalidateCache(),null===(e=this._colors)||void 0===e||e.invalidateCache(),this._colorAreas.invalidateCache();const[c,h]=this._correctVisibleRange(l),d=this._isPerBarColoringSupported()?this._colors:null,u=this._source.offset(this._plotAId()),p=this._source.offset(this._plotBId()),_=Math.min(u,p),m=Math.max(u,p),g=this._plotIndex1(),f=this._plotIndex2(),v=this._source.data();if(v.isEmpty())return;let S,y;const b=(0,r.ensureNotNull)(v.firstIndex()),w=(0,r.ensureNotNull)(v.lastIndex()),C=b-Math.max(0,-_),P=w+Math.max(0,m),T=Math.max(c-1,C),x=Math.min(h+1,P),M=this._studyValuesCache;M.invalidateCache();const L=T-m,A=v.rangeIterator(L,x-_),E=Math.max(l.firstBar()-1,Math.min(L-m-1,L-1+_));M.setStartIndex(E);const k=new We.BarsRange(l.firstBar()-1,l.lastBar()+1);for(;A.hasNext();){const e=A.next(),t=e.index,i=e.value,s=i[g],n=i[f],o=t+u,a=t+p;if(o===a&&k.contains(o)){const e=M.at(o);e.plot1Value=s,e.plot2Value=n}else{if(k.contains(o)){M.at(o).plot1Value=s}if(k.contains(a)){M.at(a).plot2Value=n}}if(null!==d){const e=t-1+_;if(l.contains(e)){const t=i[(0,r.ensureNotNull)(this._colorPlotIndex)+1];M.at(e).colorIndex=t}}}const D=this._timePoints,V=this._points1,B=this._points2;let N=null;const R=E+M.length();for(let e=E;e<=R;e++){if(!this._fillGaps&&(null===S||null===y)){const t=e-1;D.push(t),V.push(NaN),B.push(NaN),null==d||d.push(null)}const s=M.at(e);if(null!==d){const e=s.colorIndex;N=null==e?null:this._getColorByPlotValue(e)}if(this._isHlineFill){D.push(e),null!==d&&d.push(N);continue}const r=null!==(t=s.plot1Value)&&void 0!==t?t:null,n=null!==(i=s.plot2Value)&&void 0!==i?i:null;(null!==r||null!==n||Number.isFinite(S)||Number.isFinite(y))&&(S=r,y=n,V.push(r),B.push(n),D.push(e),null!==d&&d.push(N))}s.pricesArrayToCoordinates(V.data(),a,V.length()),s.pricesArrayToCoordinates(B.data(),a,B.length()),o.indexesToCoordinates(D.data(),D.length());const O=this._transparency();let F=(0,I.isNumber)(O)?O:50;F=Math.min(F,100),F=Math.max(F,0);const W={barSpacing:this._model.timeScale().barSpacing(),transparency:F,colorAreas:this._getFilledAreas(D,V,B,d)};this._areaRenderer.setData(W)}_getFilledAreas(e,t,i,s){const r=this._isHlineFill;if(!r&&(0===t.length()||0===i.length()))return new Re;const n=this._colorAreas;let o=null,a=null;const l=this._color();for(let c=0;c{null===this._bandAKey&&i.id===e&&(this._bandAKey=s),null===this._bandBKey&&i.id===t&&(this._bandBKey=s)})}}var Xe=i(13933),Ze=i(36759),Je=i(23653),Qe=i(33291),et=i(52714),tt=i.n(et),it=i(37667),st=i(8175),rt=i(97098),nt=i(67802),ot=i(26811),at=i(69147);const lt=(0,o.getLogger)("Chart.Study"),ct=(0,n.t)("Invalid Symbol");const ht={symbolsForDisplay:!1, +symbolsForChartApi:!0,skipHiddenInputs:!1,skipFakeInputs:!1,skipBooleanInputs:A.enabled("dont_show_boolean_study_arguments"),asObject:!0,skippedGroups:[],skippedInputs:[],noExchanges:!1,noResolution:!1,keepOptionalSymbolsEmpty:!1,skipColorInputs:!1,skipTimeInputs:!1,skipOptionalEmptySymbolInputs:!1,skipTextareaInputs:!0,priceInputsForDisplay:!1},dt=A.enabled("study_symbol_ticker_description"),ut=A.enabled("hide_main_series_symbol_from_indicator_legend");function pt(e,t){const i=e.plots[t];if(!i||!(0,L.isOhlcPlot)(i))return!1;const s=i.target,r=e.defaults.styles&&e.defaults.styles[s],n=e.defaults.ohlcPlots&&e.defaults.ohlcPlots[s],o=e.ohlcPlots&&e.ohlcPlots[s];return r&&(0,L.isOhlcPlotStyleBars)(r)||n&&(0,L.isOhlcPlotStyleBars)(n)||!!o&&(0,L.isOhlcPlotStyleBars)(o)}function _t(e,t){const i=e.plots[t];if(!i||!(0,L.isOhlcPlot)(i))return!1;const s=i.target,r=e.defaults.styles&&e.defaults.styles[s],n=e.defaults.ohlcPlots&&e.defaults.ohlcPlots[s],o=e.ohlcPlots&&e.ohlcPlots[s];return r&&(0,L.isOhlcPlotStyleCandles)(r)||n&&(0,L.isOhlcPlotStyleCandles)(n)||!!o&&(0,L.isOhlcPlotStyleCandles)(o)}function mt(e,t){(0,r.assert)(void 0!==e,"zOrder must be defined"),(0,r.assert)(!t.has(e),"zOrder must be unique")}class gt extends d.PriceDataSource{constructor(e,t,i,s){super(e),this.onStart=new(c()),this._onHibernationStateChange=new(c()),this._symbolsResolved=new(c()),this._statusChanged=new(c()),this._paneViews=[],this._legendView=null,this._priceAxisViews=[],this._inputsAnchorsPaneView=null,this._inputsLinesPaneView=null,this._inputsTimeAxisPaneViews=[],this._inputsPriceAxisPaneViews=[],this._resolvedSymbols={},this._resolvedSymbolsByInput={},this._source=null,this._isChildStudy=!1,this._status={type:Xe.StudyStatusType.Undefined},this._wasCompletedBefore=!1,this._studyId=null,this._isSubscribedToSessionId=!1,this._titleStrCache={},this._titleInPartsCache={},this._children=[],this._numericFormatter=new M.NumericFormatter,this._priceAxisViewsBase=[],this._priceLinesAxisViews=[],this._labelPaneViews=[],this._ownFirstValue=null,this._plotOffsets={},this._formatter=null,this._ongoingDataUpdate=Promise.resolve(),this._studyModified=!1,this._isDestroyed=!1,this._graphics=new g.LiveStudyGraphics,this._tagsChanged=new(c()),this._currencySourceSymbolInputProperty=null,this._pendingResolveSymbols=new Map,this._onIsActualIntervalChange=new(c()),this._lastNonEmptyPlotRowCache={},this._startMovingPoint=null,this._processHibernateBound=this.processHibernate.bind(this,1),this._maxOffset=new(tt())(0),this._currencySourceSymbolInfo=null,this._chartApi=e.chartApi(),this._properties=t,this._metaInfo=s,this._series=this._model.mainSeries(),this._series.onIntervalChanged().subscribe(this,this._calcIsActualInterval),this._showStudyArgumentsProperty=e.properties().childs().paneProperties.childs().legendProperties.childs().showStudyArguments,e.collapsed().subscribe(this._processHibernateBound),i instanceof gt&&(this._source=i,this._isChildStudy=!0,this._source.setChild(this));const r=this.parentSource() +;r.currencyChanged().subscribe(this,this._onSourceCurrencyChanged),r.unitChanged().subscribe(this,this._onSourceUnitChanged),r.priceRangeReadyChanged().subscribe(this,this._onSourcePriceRangeReadyChanged),r.formatterChanged().subscribe(this,this._onSourceFormatterChanged),r.priceStepChanged().subscribe(this,this._onSourcePriceStepChanged),dt&&this._model.mainSeries().properties().childs().statusViewStyle.childs().symbolTextSource.listeners().subscribe(this,()=>{this.invalidateTitleCache(!0)}),this._properties.subscribe(this,this._onPropertiesChanged),this._properties.visible.subscribe(this,this._visibleChanged),this._properties.visible.subscribe(this,this.processHibernate),this._properties.intervalsVisibilities.subscribe(this,this._calcIsActualInterval),this._properties.inputs.listeners().subscribe(this,this._updateMaxOffsetValue),void 0!==this._properties.offsets&&this._properties.offsets.listeners().subscribe(this,this._updateMaxOffsetValue),void 0!==this._properties.offset&&this._properties.offset.listeners().subscribe(this,this._updateMaxOffsetValue),this._initializeCurrencySource(),b.hideAllIndicators().subscribe(this,this._visibleChanged);for(let e=0;e=0?e:0}}return this._isChildStudy&&m().patchChildStudyMetaInfoState(l),l}restoreData(e){var t,i;this._invalidateLastNonEmptyPlotRowCache(),this.data().restoreState(e),this._resolvedSymbols=null!==(t=e.symbols)&&void 0!==t?t:{},this._graphics=e.graphics?(0,g.loadStudyGraphics)(e.graphics):(0,g.emptyStudyGraphics)(),this._postProcessGraphics(),this._plotOffsets=null!==(i=e.plotOffsets)&&void 0!==i?i:{},this._setStatus({type:Xe.StudyStatusType.Completed},!0)}hasStateForAlert(){return!1}stateForAlert(){throw new Error("Not implemented")}hasBarColorer(){return(0,r.ensureNotNull)(this._metaInfo).plots.some(L.isBarColorerPlot)}disconnect(){this._studyId=null,this._model.isSnapshot()||(this._resolvedSymbols={},this._resolvedSymbolsByInput={})}isChildStudy(){return this._isChildStudy}hasChildren(){return this._children.length>0}isActualInterval(){return this._isActualInterval}onIsActualIntervalChange(){return this._onIsActualIntervalChange}isVisible(){if(this._model.collapsed().value()||!this.properties().visible.value()||!this.isActualInterval())return!1;const e=this.metaInfo();if(e.plots.length>0)return!0;for(const t of Object.keys(e.graphics))for(const i of Object.keys(e.graphics[t])){const e=this.properties().graphics[t][i];if(!e.visible||e.visible.value())return!0}return!(!e.isTVScriptStrategy&&!e.hasAlertFunction)}inputs(e){const t=(0,I.merge)((0,I.clone)(ht),e||{}) +;return t.skipOptionalEmptySymbolInputs&&(t.keepOptionalSymbolsEmpty=!0),this._buildInputs(t)}metaInfo(){return this._metaInfo}status(){return this._status}name(e){return e?this.metaInfo().shortDescription||this._properties.shortDescription&&this._properties.shortDescription.value()||"Study":this.metaInfo().description||this._properties.description&&this._properties.description.value()||"Study"}title(e,t,i,s){i=void 0===i?!this._showStudyArgumentsProperty.value():i;const r=JSON.stringify([e,t,i,s]);if(this._titleStrCache[r])return this._titleStrCache[r];if(this._titleInPartsCache[r])return this._joinTitlesParts(this._titleInPartsCache[r]);const n=this._title(e,t,i,s);return this._titleStrCache[r]=n,n}titleInParts(e,t,i,s){i=void 0===i?!this._showStudyArgumentsProperty.value():i;const r=JSON.stringify([e,t,i,s]);if(this._titleInPartsCache[r])return this._titleInPartsCache[r];const n=this._titleInParts(e,t,i,s);return this._titleInPartsCache[r]=n,n}invalidateTitleCache(e){if(this._titleStrCache={},this._titleInPartsCache={},!0===e&&this._children)for(let t=0;tt.update(e)),this._labelPaneViews.forEach(t=>t.update(e)),null===(t=this._dataWindowView)||void 0===t||t.update(),null===(i=this._legendView)||void 0===i||i.update(),null===(s=this._statusView)||void 0===s||s.update(),this._priceAxisViews.forEach(t=>t.update(e)),this._priceLinesAxisViews.forEach(t=>t.update(e)),null===(r=this._inputsLinesPaneView)||void 0===r||r.update(e),null===(n=this._inputsAnchorsPaneView)||void 0===n||n.update(e),this._inputsTimeAxisPaneViews.forEach(t=>t.update(e)),this._inputsPriceAxisPaneViews.forEach(t=>t.update(e))}isPine(){return void 0!==this._metaInfo.pine}isStandardPine(){return this.isPine()&&m().isStandardPine(this._metaInfo.id)}isLinkedToSeries(){return!0===this._metaInfo.linkedToSeries}defaultPlotIdForAlert(){return this._metaInfo.plots.length?this._metaInfo.plots[0].id:null}resolvedSymbolInfoBySymbol(e){return this._resolvedSymbols&&e&&this._resolvedSymbols[this._getSymbolForResolve(e)]||null}currency(){if(null!==this._currencySourceSymbolInfo)return(0,it.symbolCurrency)(this._currencySourceSymbolInfo);const e=this.metaInfo();return Boolean(e)&&e.is_price_study?this.parentSource().currency():null}currencySourceSymbolInfo(){var e,t,i;return null!==(e=this._currencySourceSymbolInfo)&&void 0!==e?e:null!==(i=null===(t=this.symbolSource())||void 0===t?void 0:t.symbolInfo())&&void 0!==i?i:null}unit(){const e=this.metaInfo();return Boolean(e)&&e.is_price_study?this.parentSource().unit():null}dataWindowView(){return this._dataWindowView}statusView(){return this._statusView}legendView(){return this._legendView}inputsForAlertState(){return this.inputs()}sessionId(){return this.parentSource().sessionId()}sessionIdChanged(){return this.parentSource().sessionIdChanged()}getSymbolString(e){return""===e?"":(0,C.encodeExtendedSymbolOrGetSimpleSymbolString)(this._getSymbolObject(e))}onStatusChanged(){return this._statusChanged}symbolsResolved(){return this._symbolsResolved}onHibernationStateChange(){return this._onHibernationStateChange}valuesProvider(){return new S.StudyLegendValuesProvider(this,this.model())}statusProvider(e){return new x.StudyStatusProvider(this,this._model.properties().childs().scalesProperties.childs().textColor)}correctScaleMargins(e){if("Volume"===this.metaInfo().shortId){const t=this.model().paneForSource(this);return null!==t&&t.isOverlay(this)&&t.containsMainSeries()?{top:.75,bottom:0}:{top:e.top,bottom:0}}return e}canBeHiddenByGlobalFlag(){return!0}isSourceHidden(){return!this.isVisible()||this.canBeHiddenByGlobalFlag()&&b.hideAllIndicators().value()}paneViews(e){if(this.isSourceHidden()||!e.hasPriceDataSource(this))return null;const t=[];return!this._startMovingPoint&&this._wasCompletedBefore&&t.push(...this._paneViews),this._inputsLinesPaneView&&(this._startMovingPoint||this._model.selection().isSelected(this))&&t.push(this._inputsLinesPaneView),this._inputsAnchorsPaneView&&t.push(this._inputsAnchorsPaneView),t}timeAxisViews(){ +return this._model.selection().isSelected(this)?this._inputsTimeAxisPaneViews:null}priceAxisViews(e,t){if(this.properties().oldShowLastValue&&!this.properties().oldShowLastValue.value())return null;let i=this._priceAxisViews.slice();return this._model.selection().isSelected(this)&&(i=i.concat(this._inputsPriceAxisPaneViews)),e.findTargetPriceAxisViews(this,t,i,this._priceLinesAxisViews)}movable(){return null!==this._inputsAnchorsPaneView}startMoving(e,t,i,s){this._startMovingPoint=e,this.stop()}move(e,t,i,s){if(void 0!==e.logical&&null!==this._startMovingPoint){if(Array.isArray(t)){const i=t;this._updateInputValue(e.logical,i[0]),this._updateInputValue(e.logical,i[1])}else this._updateInputValue(e.logical,t);this.updateAllViews((0,Qe.dataSourceChangeEvent)(this.id()))}}endMoving(e,t){return this._startMovingPoint=null,this.start(),{indexesChanged:!1,pricesChanged:!1}}clearData(){var e;this._invalidateLastNonEmptyPlotRowCache(),this.data().clear(),this._graphics instanceof g.LiveStudyGraphics&&(null===(e=this._graphics)||void 0===e||e.clear()),this._plotOffsets={},this.hasBarColorer()&&this._model.mainSeries().invalidateBarStylesCache(),this.updateAllViews((0,Qe.dataSourceChangeEvent)(this.id(),void 0,!0))}convertYCoordinateToPriceForMoving(e,t){const i=this.priceScale();if(!t||!i||i.isEmpty())return null;const s=t.firstValue();return null===s?null:i.coordinateToPrice(e,s)}processHibernate(e){const t=this.isVisible();if(!this.isStarted()&&t&&(this._isChildStudy&&(0,r.ensureNotNull)(this._source).processHibernate(),this.start(void 0,void 0,e),this._onHibernationStateChange.fire(!1)),this.isHibernationAllowed()&&this.isStarted()&&!t){for(const e of this._children)e.processHibernate();this.stop(void 0,e),this._onHibernationStateChange.fire(!0)}}isHibernationAllowed(){return!this.metaInfo().historyCalculationMayChange&&(!this.hasChildren()||!!this._model.collapsed().value()&&this._children.every(e=>e.isHibernationAllowed()))}recalculate(){const e=this._model.paneForSource(this);this._model.recalculatePane(e,(0,Qe.dataSourceChangeEvent)(this.id())),this._model.updateSource(this)}maxOffset(){return this._maxOffset}_transformData(e){}_updateMaxOffsetValue(){let e=-1/0;for(const t of this._metaInfo.plots)e=Math.max(this.offset(t.id),e);this._maxOffset.setValue(e)}_rightOffsetToUnixTime(e){if(this._series.bars().size()>=e){const t=(0,r.ensureNotNull)(this._series.bars().lastIndex())-e;return(0,r.ensureNotNull)(this._series.bars().valueAt(t))[0]}return null}_invalidateLastNonEmptyPlotRowCache(){this._lastNonEmptyPlotRowCache={}}_collectDepsForAlert(){throw new Error("Not implemented")}isHibernated(){return!this.isVisible()&&!this.isStarted()}_createViews(){var e,t;this._priceAxisViewsBase=[],this._priceLinesAxisViews=[],this._paneViews=[],this._labelPaneViews=[];const i=new Set,s=this.metaInfo(),n=Boolean(s.usePlotsZOrder),o=new Map;if(s.plots)for(let t=0;t{const i=this._properties.bands[t];if(i&&i.visible.value()){const t=new qe(i,this),s=n?(0,r.ensureDefined)(e.zorder):o.size;mt(s,o),o.set(s,{paneViews:[t]})}}),this._properties.bandsBackground&&((0,r.assert)(!n,"'usePlotsZOrder' flag does not supported"),o.set(o.size,{paneViews:[new Ke(this)]}));const a=this._paneViews;(0,g.createGraphicsPaneViews)(this,this.model()).then(e=>{for(let t=0;ts.plots.some(t=>(0,L.isColorerPlot)(t)&&t.target===e);if(this._properties.filledAreas&&s.filledAreas)for(let e=0;ee-t);for(let e=0;e0){const t=this.barColorer().firstColoredBar(e[0].index);this._model.mainSeries().invalidateBarStylesCache(t)}null!==t&&this._postProcessGraphics();const r=this._model.paneForSource(this);this._model.recalculatePane(r,(0,Qe.dataSourceChangeEvent)(this.id(),null!=s?s:void 0)),this._updateSources()}_updateSources(){this._model.updateSource(this),this.hasBarColorer()&&this._model.updateSource(this._model.mainSeries())}_titleInputs(e,t){return this.inputs(this._titleInputsOptions(e,t))}_titleInputsOptions(e,t){return{symbolsForDisplay:!0,skipHiddenInputs:!0,skipFakeInputs:!1,fakeInputsForDisplay:!0,asObject:!1,skippedGroups:[],noExchanges:e,noResolution:t,skipColorInputs:!0,skipTimeInputs:!0,priceInputsForDisplay:!0,skipOptionalEmptySymbolInputs:ut}}_subscribeToSessionId(){!this._isSubscribedToSessionId&&this.hasSymbolInputs()&&(this.sessionIdChanged().subscribe(this,this._onSessionIdChanged),this._isSubscribedToSessionId=!0)}_unsubscribeToSessionId(){this._isSubscribedToSessionId&&(this.sessionIdChanged().unsubscribe(this,this._onSessionIdChanged),this._isSubscribedToSessionId=!1)}_onSessionIdChanged(){this.restart(!0)}_title(e,t,i,s){const r=this._titleInParts(e,t,i,s);return this._joinTitlesParts(r)}_formatterByMetaInfo(){var e,t;const i=this.metaInfo().format;if("inherit"===i.type)return null;const s=this.series().symbolInfo(),r=(0,I.isNumber)(i.precision)?Math.pow(10,i.precision):void 0;{const s=null!==(t=null===(e=null===at.customFormatters||void 0===at.customFormatters?void 0:at.customFormatters.studyFormatterFactory)||void 0===e?void 0:e.call(at.customFormatters,i,this.symbolSource().symbolInfo()))&&void 0!==t?t:null +;if(null!==s)return s}switch(i.type){case"price":return new rt.PriceFormatter(r);case"volume":{let e=i.precision;return void 0===e&&(e=s&&(0,I.isNumber)(s.volume_precision)?s.volume_precision:0),new nt.VolumeFormatter(e)}case"percent":return new ot.PercentageFormatter(r);default:return lt.logWarn("Unsupported format type: "+i.type),null}}_postProcessPriceRange(e){if(e&&e.minValue()===e.maxValue()&&!this.metaInfo().is_price_study){const t=.005*e.minValue();e=new u.PriceRange(e.minValue()-t,e.maxValue()+t)}const t=this.priceScale();return t&&t.isLog()&&e?new u.PriceRange(t.priceToLogical(e.minValue()),t.priceToLogical(e.maxValue())):e}_joinTitlesParts(e){const t=e[1]?e[1].join(", "):"";return e[0]+(t.length>0?" ("+t+")":"")}_titleInParts(e,t,i,s){var r;const o=this.name(e);t=t||{};const a=[(0,n.t)(o,{context:"study"})];let l=[];if(!i){const i=this._getMTFResolutionInputTitle();null!==i&&i.length>0&&a.push(i);const n=this.metaInfo(),o=this._titleInputs(s,!0)||[];if(o.length>0){const i={};if(this._isChildStudy)for(let t=0;t=0&&this._source){const t=this._source.metaInfo(),n=this._source.title(e,{},!0,s);if(1===t.plots.length)i[l]=n;else{const e=l.split("$")[1],s=null===(r=t.plots[parseInt(e)])||void 0===r?void 0:r.id,o=t.styles&&t.styles[s],a=o&&o.title||s;i[l]=n+": "+a}}break}l=o.map(e=>{let s=(0,I.isNumber)(e)?this._numericFormatter.format(e):i&&i[e.toString()]||e.toString();return t&&t[s.toString()]&&(s=t[s.toString()]),s})}}return[a.join(" · "),l]}_getMTFResolutionInputTitle(){const e=this.metaInfo();for(let t=0;t"line"===e.type)}_hasAlertConditions(){if(this.metaInfo().plots.some(L.isAlertConditionPlot))return!0;const e=this.stateForAlert();return Boolean(e.alerts&&e.alerts.conditions)}_hasAlertFunction(){const e=this.metaInfo();return Boolean(e.hasAlertFunction)}_onDataUpdate(e,t){this._studyModified&&(this.clearData(),this._studyModified=!1);const i=(0,h.unpackNonSeriesData)(t.d);return this._ongoingDataUpdate=this._ongoingDataUpdate.then(()=>i,()=>i).then(this._onDataUnpacked.bind(this,e,t.indexes)),this._ongoingDataUpdate}_mergeData(e){var t,i;return this._invalidateLastNonEmptyPlotRowCache(),null!==(i=null===(t=this.data().merge(e))||void 0===t?void 0:t.index)&&void 0!==i?i:null}_getSymbolForResolve(e){return this.getSymbolString(this._getSymbolForApi(e))}_allSymbolsAreResolved(){const e=this.metaInfo(),t=[];let i=!1;for(let s=0;sthis._symbolsResolved.fire()):e}return Promise.all(t).catch(e=>(this._setStatus({type:Xe.StudyStatusType.Error,errorDescription:{error:ct}}),this.stop(!0),this._model.updateSource(this),Promise.reject("Invalid symbol, "+e))).then(()=>{null!==this._studyId&&this.stop(!0),this.start(!0),this._symbolsResolved.fire(),this._recheckLineToolsActuality()})}_getSymbolForApi(e){return e}_resolveSymbol(e,t){if(""===e)return Promise.resolve();let i=this._pendingResolveSymbols.get(e);return void 0!==i||(i=new Promise((i,s)=>{this._onSymbolResolvingStart(),this._chartApi.resolveSymbol((0,P.makeNextSymbolId)(),e,r=>{switch(this._pendingResolveSymbols.delete(e),r.method){case"symbol_resolved":this._setStatus({type:Xe.StudyStatusType.Undefined}),this._resolvedSymbols[e]=r.params[1],this._resolvedSymbolsByInput[t]=r.params[1],this._onSymbolResolved(e,t,r.params[1]),this.invalidateTitleCache(!0),i();break;case"symbol_error":if(this._setStatus({type:Xe.StudyStatusType.Error,errorDescription:{error:r.params[1]}}),this._onSymbolError(),r.params[1]===T.permissionDenied&&r.params[2])switch(r.params[2]){case T.SymbolErrorPermissionDeniedReason.Symbol:if(r.params[3])return void this._resolveSymbol(r.params[3],t).then(i);break;default:return void this._resolveSymbol(r.params[2],t).then(i)}0,s()}})}),this._pendingResolveSymbols.set(e,i)),i}_recheckLineToolsActuality(){const e=this._model.paneForSource(this);null!==e&&e.sourcesByGroup().lineSourcesForAllSymbols().forEach(e=>{e.ownerSource()===this&&e.calcIsActualSymbol()})}_getSymbolObject(e){const t={symbol:e},i=this.currency();return null!==this._currencySourceSymbolInputProperty&&null!==this._currencySourceSymbolInfo&&this._getSymbolForApi(this._currencySourceSymbolInputProperty.value())===e&&(t["currency-id"]=i),t.session=this.sessionId(),t}_onSymbolResolved(e,t,i){this._onCurrencyMayChange()}_onSymbolResolvingStart(){}_onSymbolError(){}_setStatus(e,t){var i;this._status=e,e.type===Xe.StudyStatusType.Completed?this._wasCompletedBefore=!0:e.type!==Xe.StudyStatusType.Error&&e.type!==Xe.StudyStatusType.Undefined||(this._wasCompletedBefore=!1),t||(null===(i=this._statusView)||void 0===i||i.update(),this._model.updateSource(this),this._statusChanged.fire(e))}_bandsFirstValue(e){const t=this._metaInfo;if(!t.bands)return null;for(let i=0;ivoid 0!==i[e],1e3),null===i?null:(this._lastNonEmptyPlotRowCache[e]=i,i)}_onCurrencyChanged(){"alwaysOff"!==(0,st.currencyUnitVisibilityProperty)().value()&&this._model.fullUpdate(),this.isStarted()&&this._tryChangeInputs(),this._currencyChanged.fire()}_tryChangeInputs(){const e=(0,r.ensureDefined)((0,I.clone)(this._inputs));this.isStarted()&&this._chartApi.isConnected().value()?this._allInputsAreValid()?this._allSymbolsAreResolved().then(()=>{const t=this.inputs({keepOptionalSymbolsEmpty:!0}),i=JSON.stringify(t)!==JSON.stringify(this._inputs);this._isStopped()?i&&this.disablePriceRangeReady():i&&(this._changeInputsImpl(t,e),this._inputs=t)}).catch(e=>{lt.logError("ERROR: "+this._debugId()+" _tryChangeInputs: cannot modify study, "+e)}):this.stop():(this.stop(!0),this.start(!0)),this._tagsChanged.fire()}_debugId(){const e=[];return this._studyId&&e.push(this._studyId),e.push(this._metaInfo.fullId),e.push(this._metaInfo.description),JSON.stringify({study:e})}_onCurrencyMayChange(){if(null!==this._currencySourceSymbolInputProperty){const e=this.currency();this._updateCurrencySourceSymbolInfo(),e!==this.currency()&&this._onCurrencyChanged()}}_isStopped(){return!this.isStarted()}_onDataUnpacked(e,t,i){if(this._isDestroyed)return;"nochange"!==t&&this._processPlotOffsets(i),this._transformData(e);const s=this._mergeData(e);null!==i&&(i.indexes_replace?((0,r.assert)("nochange"!==t),this._graphics.replaceIndexesTo(t)):("nochange"!==t&&this._graphics.replaceIndexesTo(t),void 0!==i.graphicsCmds&&this._graphics.processCommands(i.graphicsCmds,this._metaInfo.graphics))),this._onDataUpdated(e,i,t,s),this.priceRangeReady()||this._enablePriceRangeReady()}_processPlotOffsets(e){if(e&&e.indexes_replace)return;const t=this._plotOffsets;this._plotOffsets=e&&e.offsets||{},(0,s.default)(t,this._plotOffsets)||this.updateAllViews((0,Qe.dataSourceChangeEvent)(this.id(),void 0,!0)),this._updateMaxOffsetValue()}_applyPlotToPrecalculatedAutoscaleInfo(e,t,i,s){const r=s.id,n=this.properties().styles[r],o=(0,L.isShapesPlot)(s)||(0,L.isCharsPlot)(s);i.useMainSeriesRange=i.useMainSeriesRange||(0,L.isArrowsPlot)(s);let a=(0,L.isLinePlot)(s)||(0,L.isOhlcPlot)(s);if(o){const e=n.location.value(),t=[f.MarkLocation.Absolute,f.MarkLocation.Top,f.MarkLocation.Bottom].indexOf(e)<0 +;i.useMainSeriesRange=i.useMainSeriesRange||o&&t,a=a||e===f.MarkLocation.Absolute}if(!a)return i;const l={name:r,offset:this.offset(r)},c=n.plottype.value();if(!this.properties().skipHistogramBaseOnAutoScale&&[L.LineStudyPlotStyle.Histogram,L.LineStudyPlotStyle.Columns,L.LineStudyPlotStyle.Area].indexOf(c)>=0){const s=n.histogramBase.value(),r=this.data().minMaxOnRangeCached(e,t,[l]);return(0,I.isNumber)(s)&&null!==r&&(i.baseValueMinMax=(0,p.mergeMinMax)(i.baseValueMinMax,{min:s,max:s}),i.baseValueMinMax=(0,p.mergeMinMax)(i.baseValueMinMax,r)),i}return i.fields.push(l),i}_fillPrecalculatedAutoscaleInfo(e,t){return this._metaInfo.plots.filter(e=>!(0,L.isPlotWithTechnicalValues)(e)).filter(e=>{const t=e.id;let i;if((0,L.isOhlcPlot)(e)){const t=e.target;i=this.properties().ohlcPlots[t]}else i=this.properties().styles[t];return i.visible.value()}).reduce((i,s)=>this._applyPlotToPrecalculatedAutoscaleInfo(e,t,i,s),{fields:[],useMainSeriesRange:!1,baseValueMinMax:null})}_buildInputs(e){(0,r.assert)(!!e,"options not set");let t={};try{t=this._prepareInputs(e)}catch(e){lt.logWarn("Failed to prepare study inputs: "+e)}if(e.asObject){const e={};return Object.keys(t).forEach(i=>{null!=t[i]&&(e[i]=t[i])}),e}{const e=[];return Object.keys(t).forEach(i=>{null!=t[i]&&e.push(t[i])}),e}}_prepareInput(e,t){const i=this._prepareInputValue(e,t);return!e.isFake||t.fakeInputsForDisplay||t.onlyAtomValues?i:{v:i,f:!0,t:e.type}}_plotsForAlert(){return[]}_dependenciesForAlerts(){throw new Error("Not implemented")}_calcIsActualInterval(){const e=this._isActualInterval;this._isActualInterval=(0,Ze.isActualInterval)(this._series.intervalObj(),this.properties().intervalsVisibilities),e!==this._isActualInterval&&(this._onIsActualIntervalChange.fire(),this._visibleChanged(),this.processHibernate())}_visibleChanged(){this._series.invalidateBarColorerCache()}_getNonPriceParent(){const e=this.source();if(e instanceof gt){const t=e.metaInfo();return t.is_price_study&&"Compare@tv-basicstudies"!==t.id?e._getNonPriceParent():e}return null}_updateInputValue(e,t){const i=this._properties.inputs;if(i[t.id])if("price"===t.type)i[t.id].setValue(e.price);else if("time"===t.type){const s=this._model.timeScale().indexToTimePoint(e.index);null!==s&&i[t.id].setValue(1e3*s)}}_initializeStudyInputsPaneViews(){}_updateCurrencySourceSymbolInfo(){var e;null!==this._currencySourceSymbolInputProperty&&(this._currencySourceSymbolInfo=null!==(e=this._resolvedSymbolsByInput[this._currencySourceSymbolInputProperty.value()])&&void 0!==e?e:null)}_initializeCurrencySource(){var e,t;const i=this.metaInfo(),s="symbolInputSymbolSource"===(null===(e=i.symbolSource)||void 0===e?void 0:e.type)&&(null===(t=i.symbolSource)||void 0===t?void 0:t.inputId),r=i.inputs.find(e=>e.id===s),n="symbol"===(null==r?void 0:r.type);if("string"==typeof s&&n&&i.is_price_study){const e=this._properties.inputs[s];null!=e&&(e.subscribe(this,this._onCurrencyMayChange),this._currencySourceSymbolInputProperty=e)}}}},55153:(e,t,i)=>{"use strict";i.d(t,{StudyCompare:()=>N}) +;var s=i(88537),r=i(8175),n=i(66101),o=i(37667),a=i(2015),l=i.n(a),c=i(67337),h=i(3825),d=i(97938),u=i(74477);const p=c.enabled("force_exchange_as_title");class _ extends d.PriceAxisView{constructor(e,t){super(),this._studyCompare=e,this._data=t}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const s=this._studyCompare.priceScale(),r=this._studyCompare.lastValueData(this._data.plotIndex,!1);if(r.noData||null===s||s.isEmpty())return;i.background=r.color,i.textColor=this.generateTextColor(r.color),i.coordinate=r.coordinate,i.floatCoordinate=r.floatCoordinate;const n=this._studyCompare.model().properties().childs().scalesProperties.childs();n.showSeriesLastValue.value()&&(e.text=(0,u.getCurrentModePriceText)(s,r),n.seriesLastValueMode.value()!==h.PriceAxisLastValueMode.LastPriceAndPercentageValue?e.secondLine="":e.secondLine=(0,u.getOppositeModePriceText)(s,r),e.visible=!0),t.text="",n.showSymbolLabels.value()&&(t.text=this._paneText(),t.visible=t.text.length>0)}_paneText(){let e="";const t=this._studyCompare.symbolInfo();return p?e=(0,o.displayedSymbolExchange)(t):this._studyCompare.model().properties().childs().scalesProperties.childs().showSymbolLabels.value()&&(e=(0,o.displayedSymbolName)(t)),e}}i(28353);var m=i(26179),g=i(44601),f=i(85733),v=i(49483),S=i(80643),y=i(89027);class b extends y.StudyValuesProvider{constructor(e,t){super(e,t),this._emptyValues[0].title=e.guiPlotName("")}_hideValues(){return!1}}const w=v.CheckMobile.any();class C extends m.StudyDataWindowView{constructor(e,t){super(e,t),this._studyCompare=e}_hideValues(){return!1}_createValuesProvider(e,t){return new b(e,t)}_currentIndex(){const e=this._model.crossHairSource().lockedIndex;let t;return w&&(null===this._model.crossHairSource().pane&&void 0===e||(0,g.isLineToolName)(f.tool.value())||null!==this._model.lineBeingEdited())?t=this._study.data().lastIndex():(t=this._model.crossHairSource().appliedIndex(),(0,S.isNumber)(t)||(t=this._study.data().lastIndex())),t}}class P extends C{constructor(e,t){super(e,t),this._additional=null,this._showSeriesOHLC=t.properties().childs().paneProperties.childs().legendProperties.childs().showSeriesOHLC,this._showSeriesOHLC.subscribe(this,this.update)}areValuesVisible(){return this._showSeriesOHLC.value()}destroy(){this._showSeriesOHLC.unsubscribeAll(this)}additional(){return this._additional}_updateImpl(){super._updateImpl()}}var T=i(190),x=i(40529);class I extends x.StudyStatusProvider{getSplitTitle(){return this._source.titleInParts(!0,void 0,!1,!1)}text(){return this._source.isActualInterval()?this._source.isFailed()?`${this._source.title(!0,void 0,!1,!1)}: ${this.sourceStatusText()}`:`${this._source.title(!0,void 0,!1,!1)} ${this.sourceStatusText()}`:this._source.title(!0,void 0,!1,!1)}}var M=i(14791),L=i(52714),A=i.n(L);const E=c.enabled("study_overlay_compare_legend_option"),k=c.enabled("force_exchange_as_title"),D=c.enabled("uppercase_instrument_names"),V=!c.enabled("hide_study_compare_legend_item"),B=c.enabled("hide_unresolved_symbols_in_legend");class N extends n.Study{constructor(e,t,i,s){ +super(e,function(e){return e.hasChild("currencyId")||e.addChild("currencyId",new(l())(null)),e.hasChild("unitId")||e.addChild("unitId",new(l())(null)),e.addExclusion("currencyId"),e.addExclusion("unitId"),e}(t),i,s),this._isActingAsSymbolSource=new(A())(!0),this._realignToolsLastParams=null,this.properties().childs().minTick.subscribe(null,()=>this._recreatePriceFormattingDependencies()),this.properties().childs().minTick.subscribe(null,()=>this._model.fullUpdate()),this.properties().childs().currencyId.subscribe(this,this._onCurrencyChanged),this.properties().childs().unitId.subscribe(this,this._onUnitChanged),this.properties().merge({skipHistogramBaseOnAutoScale:!0}),this._symbolResolvingActive=new(A())(!1),this._symbolHibernated=new(A())(!1),e.mainSeries().onIntervalChanged().subscribe(this,()=>e.realignLineTools(this))}destroy(){this._model.mainSeries().onIntervalChanged().unsubscribeAll(this),super.destroy()}properties(){return super.properties()}isActingAsSymbolSource(){return this._isActingAsSymbolSource.readonly()}createPriceAxisView(e){return new _(this,{plotIndex:"compare"})}setSymbolParams(e){this._setSymbolCurrencyUnitInternal(e)}symbol(){return this._properties.inputs.symbol.value()}setSymbol(e){this.setSymbolParams({symbol:e})}symbolInfo(){if(!this._resolvedSymbols)return null;const e=this._properties.inputs.symbol.value();if(!e)return null;let t;return t=this._resolvedSymbols[this._getSymbolForResolve(e)]||null,t}symbolResolved(){return this.symbolsResolved()}symbolResolvingActive(){return this._symbolResolvingActive}symbolHibernated(){return this._symbolHibernated}isVisible(){const e=super.isVisible();return this._symbolHibernated.setValue(!e),e}symbolSameAsCurrent(e){return(0,M.symbolSameAsCurrent)(e,this.symbol(),this.symbolInfo())}currency(){return this._properties.currencyId.value()||null}setCurrency(e){this.setSymbolParams({currency:e})}isConvertedToOtherCurrency(){return(0,o.isConvertedToOtherCurrency)(this.symbolInfo())}unit(){return this._properties.unitId.value()||null}setUnit(e){this.setSymbolParams({unit:e})}isConvertedToOtherUnit(){return(0,o.isConvertedToOtherUnit)(this.symbolInfo(),this._model.unitConversionEnabled())}style(){return 2}setStyle(e){}interval(){return this._model.mainSeries().interval()}setInterval(e){}symbolSource(){return this}state(e,t){const i=super.state(e,t);return this._model.unitConversionEnabled()||delete i.state.unitId,e&&((0,s.ensureDefined)(i.data).symbols={___snapshot:this.symbolInfo()||void 0}),i}symbolTitle(e,t){return this.title(!0,{},!1,e)}titleInParts(e,t,i,s){const r=this._titleInParts(e,t,i,s).join(", ");return[D?r.toUpperCase():r]}tags(){const e=this.symbol();return e?[e]:[]}statusView(){return V?super.statusView():null}guiPlotName(e){return this.properties().childs().inputs.childs().symbol.value()}canOverrideMinTick(){return!0}canBeHiddenByGlobalFlag(){return!1}valuesProvider(){return new b(this,this.model())}statusProvider(e){return new I(this,this._model.properties().childs().scalesProperties.childs().textColor)}_createViews(){ +this._legendView||(this._legendView=new P(this,this._model)),this._dataWindowView||(this._dataWindowView=new C(this,this._model)),this._statusView||(this._statusView=new T.StudyStatusView(this)),super._createViews()}_showLastValueOnPriceScale(){return this._model.properties().childs().scalesProperties.childs().showSeriesLastValue.value()}_onUnitChanged(){"alwaysOff"!==(0,r.currencyUnitVisibilityProperty)().value()&&this._model.fullUpdate(),this._model.unitConversionEnabled()&&this.isStarted()&&this._tryChangeInputs(),this._unitChanged.fire()}_getSymbolObject(e){const t=super._getSymbolObject(e),i=this.currency();null!==i&&(t["currency-id"]=i);const s=this.unit();return this._model.unitConversionEnabled()&&null!==s&&(t["unit-id"]=s),t}_getSymbolForApi(e){return(0,o.symbolForApi)(this._resolvedSymbolsByInput[e]||null,e)}_onSymbolResolvingStart(){super._onSymbolResolvingStart(),this._symbolResolvingActive.setValue(!0)}_onSymbolError(){super._onSymbolError(),this._symbolResolvingActive.setValue(!1)}_onSymbolResolved(e,t,i){super._onSymbolResolved(e,t,i),this._recreatePriceFormattingDependencies();const s=t===this.symbol()?(0,o.extractSymbolNameFromSymbolInfo)(i,this.symbol()):null,r=(0,o.symbolCurrency)(i),n=(0,o.symbolUnit)(i,this._model.unitConversionEnabled());this._setSymbolCurrencyUnitInternal({symbol:null!=s?s:void 0,currency:r,unit:n},i),this._symbolResolvingActive.setValue(!1)}_changeInputsImpl(e,t){super._changeInputsImpl(e,t),this._realignLineToolsIfParamsChanged()}_createStudyOnServer(){super._createStudyOnServer(),this._realignLineToolsIfParamsChanged()}_tryCreateFormatter(){const e=this.symbolInfo();return(0,o.createSeriesFormatter)(e,this.properties().childs().minTick.value())}_titleInParts(e,t,i,s){const r=this.symbolInfo();let n;if(r){const e=(0,o.getStudySymbolExchange)(r);if(k&&e)n=e;else if(n=r.name,E)switch(this._model.mainSeries().symbolTextSourceProxyProperty().value()){case"description":n=r.description;break;case"ticker-and-description":n=`${r.name}, ${r.description}`}else if(e&&!s)return[n,[e]]}else n=B?"":this.properties().childs().inputs.childs().symbol.value();return[n]}_setSymbolCurrencyUnitInternal(e,t){const{symbol:i,currency:s,unit:r}=e,n=this.properties().childs(),a=n.inputs.childs().symbol.value(),l=n.currencyId.value(),c=n.unitId.value();if(void 0!==i&&i!==a&&n.inputs.childs().symbol.setValueSilently(i),void 0!==s&&s!==l&&n.currencyId.setValueSilently(s),void 0!==r&&r!==c&&n.unitId.setValueSilently(r),t)this._resolvedSymbolsByInput[this.symbol()]=t,this._resolvedSymbols[this._getSymbolForResolve(this.symbol())]=t,this._realignToolsLastParams=null;else{const e=this.symbolInfo();null!==e&&(n.currencyId.setValueSilently((0,o.symbolCurrency)(e)),n.unitId.setValueSilently((0,o.symbolUnit)(e,this._model.unitConversionEnabled())))}n.inputs.childs().symbol.value()!==a&&n.inputs.childs().symbol.listeners().fire(n.inputs.childs().symbol),n.currencyId.value()!==l&&n.currencyId.listeners().fire(n.currencyId),n.unitId.value()!==c&&n.unitId.listeners().fire(n.unitId), +this._realignLineToolsIfParamsChanged()}_realignLineToolsIfParamsChanged(){const e=this.symbol(),t=this.interval(),i=this.currency(),s=this.unit();null!==this._realignToolsLastParams&&this._realignToolsLastParams.symbol===e&&this._realignToolsLastParams.interval===t&&this._realignToolsLastParams.currency===i&&this._realignToolsLastParams.unit===s||(this._model.realignLineTools(this),this._realignToolsLastParams={symbol:e,interval:t,currency:i,unit:s})}}},82927:(e,t,i)=>{"use strict";i.d(t,{StudyOverlayBase:()=>le});var s=i(88537),r=i(49483),n=i(98125),o=i(66101),a=i(8175),l=i(63948),c=i(37667),h=i(2015),d=i.n(h),u=i(19234),p=i(67337),_=i(90810),m=i(14791),g=i(59100),f=i(9315),v=i(71053),S=i(80643),y=i(69927),b=i(52714),w=i.n(b),C=i(33291),P=i(190),T=i(42169),x=i(97938),I=i(3825),M=i(74477);const L=p.enabled("force_exchange_as_title");class A extends x.PriceAxisView{constructor(e){super(),this._source=e}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const s=this._source.lastValueData("close",!1);if(s.noData)return;const r=this._source.model(),n=this._source.priceScale();if(null===n)return;if(!r.isPriceScaleVisible(n))return;i.background=s.color,i.textColor=this.generateTextColor(s.color),i.coordinate=s.coordinate,i.floatCoordinate=s.floatCoordinate;const o=this._source.model().properties().childs().scalesProperties.childs();o.showSeriesLastValue.value()&&(e.text=(0,M.getCurrentModePriceText)(n,s),o.seriesLastValueMode.value()!==I.PriceAxisLastValueMode.LastPriceAndPercentageValue?e.secondLine="":e.secondLine=(0,M.getOppositeModePriceText)(n,s),e.visible=!0),t.text="",o.showSymbolLabels.value()&&(t.text=this._paneText(),t.visible=t.text.length>0)}_paneText(){let e="";const t=this._source.symbolInfo();return L?e=(0,c.displayedSymbolExchange)(t):this._source.model().properties().childs().scalesProperties.childs().showSymbolLabels.value()&&(e=(0,c.displayedSymbolName)(t)),e}}var E=i(55057);class k extends E.PriceLineAxisView{constructor(e){super(),this._study=e}_value(){return this._study.lastValueData("",!0)}_priceLineColor(e){return e}_lineWidth(){return 1}_isVisible(){const e=this._study.model().properties().childs().scalesProperties.childs().showSeriesLastValue.value();return this._study.properties().childs().showPriceLine.value()&&e}}var D=i(43891),V=i(40254);class B{constructor(e){this._lineRenderer=new V.HorizontalLineRenderer,this._visible=!1,this._source=e}update(){if(this._visible=!1,!this._source.properties().childs().showPriceLine.value())return;const e=this._source.lastValueData("",!0);e.noData||(this._visible=!0,this._lineRenderer.setData({y:e.coordinate,color:e.color,linewidth:1,linestyle:D.LINESTYLE_DOTTED,visible:this._visible}))}renderer(){return this._visible?this._lineRenderer:null}}var N=i(93751),R=i(14445),O=i(44601),F=i(85733),W=i(22458);const H=r.CheckMobile.any();class z extends R.DataWindowView{constructor(e,t){super(),this._invalidated=!0,this._study=e,this._model=t,this._valueProvider=this._createValuesProvider(e,t), +this._items=this._valueProvider.getItems().map(e=>new R.DataWindowItem(e.title,"")),this.update()}items(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._items}update(){this._invalidated=!0}study(){return this._study}_updateImpl(){this._header=this._study.title();let e;this._showLastPriceAndChangeOnly()?e=this._study.data().lastIndex():(e=this._model.crossHairSource().appliedIndex(),(0,N.isNumber)(e)||(e=this._study.data().lastIndex()));const t=this._valueProvider.getValues(e);for(let e=0;ee||t,i.showBarChange,i.showSeriesOHLC),this._visibilityProperty.subscribe(this,this.update)}areValuesVisible(){return this._visibilityProperty.value()}additional(){return this._additional}destroy(){this._backgroundColorSpawn.destroy(),this._visibilityProperty.destroy()}_updateImpl(){super._updateImpl()}_createValuesProvider(e,t){return new U.OverlayLegendValuesProvider(e,t)}}var q=i(28978),Y=i(66919),K=i(85224),$=i(33837),X=i(34041),Z=i(35251),J=i(30076),Q=i(59153);const ee=r.CheckMobile.any()&&!1,te=p.enabled("uppercase_instrument_names"),ie=p.enabled("study_overlay_compare_legend_option"),se=p.enabled("secondary_series_extend_time_scale"),re=p.enabled("hide_unresolved_symbols_in_legend"),ne=!p.enabled("hide_study_overlay_legend_item"),oe=(0,n.getLogger)("Chart.StudyOverlay");function ae(e,t){return null==e[t]}class le extends o.Study{constructor(e,t,i,s){super(e,function(e){return e.hasChild("currencyId")||e.addChild("currencyId",new(d())(null)),e.hasChild("unitId")||e.addChild("unitId",new(d())(null)),e.addExclusion("currencyId"),e.addExclusion("unitId"),e}(t),i,s),this._quotesProvider=new _.QuotesProvider,this._seriesSource=null,this._symbolResolvingActive=new(w())(!1),this._symbolHibernated=new(w())(!1),this._styleToRecover=null,this._isActingAsSymbolSource=new(w())(!0),this._realignToolsLastParams=null,this.m_data=new v.PlotList((0,l.seriesPlotFunctionMap)(),ae),ee&&this._quotesProvider.quotesUpdate().subscribe(this,this._onQuotesUpdate);const r=this.properties().childs();r.currencyId.subscribe(this,this._onCurrencyChanged),r.unitId.subscribe(this,this._onUnitChanged),r.allowExtendTimeScale.subscribe(this,this._onAllowExtendTimeScaleChanged),this._onAllowExtendTimeScaleChanged(),r.style.subscribe(this,this._onChartStyleChanged), +r.lineStyle.childs().priceSource.subscribe(this,this._updateBarFunction),r.areaStyle.childs().priceSource.subscribe(this,this._updateBarFunction),r.baselineStyle.childs().priceSource.subscribe(this,this._updateBarFunction),r.columnStyle.childs().priceSource.subscribe(this,this._updateBarFunction),this._updateBarFunction(),this._formatter=null,e.mainSeries().onIntervalChanged().subscribe(this,()=>e.realignLineTools(this))}destroy(){this._model.mainSeries().onIntervalChanged().unsubscribeAll(this),super.destroy()}isActingAsSymbolSource(){return this._isActingAsSymbolSource.readonly()}properties(){return this._properties}setSymbolParams(e){this._setSymbolParamsInternal(e)}symbol(){return this.properties().childs().inputs.childs().symbol.value()}setSymbol(e){this.setSymbolParams({symbol:e})}symbolInfo(){if(!this._resolvedSymbols)return null;const e=this._properties.inputs.symbol.value();if(!e)return null;let t;return t=this._resolvedSymbols[this._getSymbolForResolve(e)]||null,t}supportsPressedChunks(){return!1}pressedChunks(e,t){throw new Error("Pressed chunks are not supported")}data(){return null===this._seriesSource?super.data():this._seriesSource.data().bars()}symbolResolved(){return this.symbolsResolved()}symbolResolvingActive(){return this._symbolResolvingActive}symbolHibernated(){return this._symbolHibernated}isVisible(){const e=super.isVisible();return this._symbolHibernated.setValue(!e),e}symbolSameAsCurrent(e){return(0,m.symbolSameAsCurrent)(e,this.symbol(),this.symbolInfo())}priceSource(){switch(this._properties.style.value()){case 2:return this._properties.lineStyle.priceSource.value();case 3:return this._properties.areaStyle.priceSource.value();case 10:return this._properties.baselineStyle.priceSource.value();case 13:return this._properties.columnStyle.priceSource.value()}return null}barFunction(){return this._barFunction}quotes(){return this._quotesProvider.quotes()}currency(){return this._properties.currencyId.value()||null}setCurrency(e){this.setSymbolParams({currency:e})}isConvertedToOtherCurrency(){return(0,c.isConvertedToOtherCurrency)(this.symbolInfo())}unit(){return this._properties.unitId.value()||null}setUnit(e){this.setSymbolParams({unit:e})}isConvertedToOtherUnit(){return(0,c.isConvertedToOtherUnit)(this.symbolInfo(),this._model.unitConversionEnabled())}style(){return this.properties().childs().style.value()}setStyle(e){this.setSymbolParams({style:e})}interval(){return this._model.mainSeries().interval()}setInterval(e){}symbolSource(){return this}state(e,t){const i=super.state(e,t);return this._model.unitConversionEnabled()||delete i.state.unitId,e&&((0,s.ensureDefined)(i.data).symbols={___snapshot:this.symbolInfo()||void 0}),i}symbolTitle(e,t){return this.title(!0,{},!1,e)}title(e,t,i,s){const r=this._titleInParts(e,t,i,s).join(", ");return te?r.toUpperCase():r}titleInParts(e,t,i,s){const r=this._titleInParts(e,t,i,s).join(", ");return[te?r.toUpperCase():r]}isStarted(){return null===this._seriesSource?super.isStarted():this._seriesSource.isStarted()}sourceId(){ +return null===this._seriesSource?super.sourceId():(0,s.ensureNotNull)(this._seriesSource.instanceId())}moveData(e){null===this._seriesSource?super.moveData(e):this._seriesSource.moveData(e)}firstValue(){const e=this._model.timeScale().visibleBarsStrictRange();if(null===e)return null;const t=e.firstBar();if(0===this.data().size())return this._ownFirstValue;const i=this.data().search(t,v.PlotRowSearchMode.NearestRight,1);return this._ownFirstValue=null!==i?this._barFunction(i.value):null,this._ownFirstValue}lastValueData(e,t,i){const s={noData:!0},r=this.priceScale();if(this._model.timeScale().isEmpty()||null===r||r.isEmpty()||this.data().isEmpty())return s;const n=this._model.timeScale().visibleBarsStrictRange();if(null===n)return s;const o=this.properties().childs();if(!o.visible.value())return s;const a=this.nearestIndex(n.lastBar(),v.PlotRowSearchMode.NearestLeft,1);if(void 0===a)return s;const l=this.firstValue();if(null===l)return s;const c=this._lastNonEmptyPlotRow(4),h=null!==c&&n.contains(c.index),d=null!==c?c.value:null,u=t||h?d:this.data().valueAt(a);if(null===u)return s;const p=this._barFunction(u);if(!(0,S.isNumber)(p))return s;const _=r.priceToCoordinate(p,l);let m;switch(o.style.value()){case 0:m=u[1]<=u[4]?o.barStyle.childs().upColor.value():o.barStyle.childs().downColor.value();break;case 1:case 9:m=u[1]<=u[4]?o.candleStyle.childs().upColor.value():o.candleStyle.childs().downColor.value();break;case 13:m=u[1]<=u[4]?o.columnStyle.childs().upColor.value():o.columnStyle.childs().downColor.value();break;case 2:m=o.lineStyle.childs().color.value();break;case 3:m=o.areaStyle.childs().color1.value();break;case 10:{const e=o.baselineStyle.childs();m=_(0,s.ensureNotNull)(this.priceScale()).height(),color:()=>e.baselineColor.value(),baseLevelPercentage:()=>e.baseLevelPercentage.value()});break}}r&&this._paneViews.push(r),null!==i&&this._paneViews.push(i),this._paneViews.push(new B(this)), +this._dataWindowView||(this._dataWindowView=new z(this,this._model)),this._legendView||(this._legendView=new G(this,this._model)),this._statusView||(this._statusView=new P.StudyStatusView(this)),this._priceAxisViews=[...this._priceAxisViewsBase],this._labelPaneViews.push(new q.PanePriceAxisView(e,this,this._model))}_createStudyOnServer(){null===this._seriesSource?super._createStudyOnServer():this._modifyStudyOnServer((0,s.ensureDefined)(this._inputs)),this._realignLineToolsIfParamsChanged()}_modifyStudyOnServer(e){null===this._seriesSource?super._modifyStudyOnServer(e):(this._seriesSource.modifySeries((0,u.decodeExtendedSymbol)(e.symbol),(0,f.getServerInterval)(this._series.properties().childs().interval.value())),this._seriesSource.isStarted()||this._seriesSource.start())}_stopStudyOnServer(){null===this._seriesSource?super._stopStudyOnServer():this._seriesSource.stop()}_titleInParts(e,t,i,s){const r=this.symbolInfo();let n;if(r){if(n=r.name,ie)switch(this._model.mainSeries().symbolTextSourceProxyProperty().value()){case"description":n=r.description;break;case"ticker-and-description":n=`${r.name}, ${r.description}`}const e=!s&&(0,c.getStudySymbolExchange)(r);if(e)return[n,[e]]}else n=re?"":this.properties().childs().inputs.childs().symbol.value();return[n]}_onAllowExtendTimeScaleChanged(){const e=this.isStarted();if(e&&this.stop(!0),se&&this.properties().childs().allowExtendTimeScale.value()){this._seriesSource=new g.SeriesDataSource(this._model.chartApi(),"st_o_");const e=this._seriesSource.dataEvents();e.seriesError().subscribe(this,e=>{this._onStudyError(this._convertSeriesErrorToStudy(e))}),e.loading().subscribe(this,this._onStudyLoading),e.completed().subscribe(this,(e,t)=>{this._onStudyCompleted(t)}),e.dataUpdated().subscribe(this,()=>{this._studyModified=!1;const e=this._model.paneForSource(this);this._model.recalculatePane(e,(0,C.dataSourceChangeEvent)(this.id())),this._updateSources(),this.priceRangeReady()||this._enablePriceRangeReady()})}else{if(null!==this._seriesSource){const e=this._seriesSource.dataEvents();e.seriesError().unsubscribeAll(this),e.loading().unsubscribeAll(this),e.completed().unsubscribeAll(this),e.dataUpdated().unsubscribeAll(this),this._seriesSource.destroy()}this._seriesSource=null}e&&this.start(!0)}_convertSeriesErrorToStudy(e){return{error:e.error,ctx:e.ctx,solution_id:e.solution_id}}_setSymbolParamsInternal(e,t){const{symbol:i,currency:s,unit:r,style:n}=e,o=this.properties().childs(),a=o.inputs.childs().symbol.value(),l=o.currencyId.value(),h=o.unitId.value(),d=o.style.value();if(void 0!==i&&i!==a&&o.inputs.childs().symbol.setValueSilently(i),void 0!==s&&s!==l&&o.currencyId.setValueSilently(s),void 0!==r&&r!==h&&o.unitId.setValueSilently(r),void 0!==n&&o.style.setValueSilently(n),t)this._resolvedSymbolsByInput[this.symbol()]=t,this._resolvedSymbols[this._getSymbolForResolve(this.symbol())]=t,this._realignToolsLastParams=null;else{const e=this.symbolInfo();null!==e&&(o.currencyId.setValueSilently((0,c.symbolCurrency)(e)),o.unitId.setValueSilently((0, +c.symbolUnit)(e,this._model.unitConversionEnabled())))}o.inputs.childs().symbol.value()!==a&&o.inputs.childs().symbol.listeners().fire(o.inputs.childs().symbol),o.currencyId.value()!==l&&o.currencyId.listeners().fire(o.currencyId),o.unitId.value()!==h&&o.unitId.listeners().fire(o.unitId),o.style.value()!==d&&o.style.listeners().fire(o.style),this._checkStyle(),this._realignLineToolsIfParamsChanged()}_updateBarFunction(){var e;const t=null!==(e=this.priceSource())&&void 0!==e?e:"close";this._barFunction=(0,l.barFunction)(t)}_onChartStyleChanged(){var e;this._updateBarFunction(),(null===(e=this._styleToRecover)||void 0===e?void 0:e.originalStyle)!==this.style()&&(this._styleToRecover=null)}_checkStyle(){const e=this.style();(0,c.isCloseBasedSymbol)(this.symbolInfo())?(0,c.isSingleValueBasedStyle)(e)||(this.setStyle(2),this._styleToRecover={correctedStyle:this.style(),originalStyle:e}):null!==this._styleToRecover&&(this.setStyle(this._styleToRecover.originalStyle),this._styleToRecover=null)}_realignLineToolsIfParamsChanged(){const e=this.symbol(),t=this.interval(),i=this.currency(),s=this.unit();null!==this._realignToolsLastParams&&this._realignToolsLastParams.symbol===e&&this._realignToolsLastParams.interval===t&&this._realignToolsLastParams.currency===i&&this._realignToolsLastParams.unit===s||(this._model.realignLineTools(this),this._realignToolsLastParams={symbol:e,interval:t,currency:i,unit:s})}}},41855:(e,t,i)=>{"use strict";i.d(t,{StudyPriceAxisView:()=>r});var s=i(97938);class r extends s.PriceAxisView{constructor(e,t){super(),this._model=e.model(),this._source=e,this._data=t}_updateRendererData(e,t,i){e.visible=!1,t.visible=!1;const s=this._source.model(),r=this._source.priceScale();if(null===r)return;if(!s.isPriceScaleVisible(r))return;const n=this._source.lastValueData(this._data.plotIndex,!1);if(n.noData)return;i.background=n.color;let o=n.color;"transparent"===o&&(o=this._model.properties().childs().scalesProperties.childs().backgroundColor.value()),i.textColor=this.generateTextColor(o),i.coordinate=n.coordinate,i.floatCoordinate=n.floatCoordinate,this._showAxisLabel()&&(e.text=n.text,e.visible=!0),this._updatePaneRendererData(t)}_showPaneLabel(){return!!this._model.properties().childs().scalesProperties.childs().showStudyPlotLabels.value()&&this._source.properties().showLabelsOnPriceScale.value()}_showAxisLabel(){return!!this._model.properties().childs().scalesProperties.childs().showStudyLastValue.value()&&this._source.properties().showLabelsOnPriceScale.value()}_updatePaneRendererData(e){e.text="",this._showPaneLabel()&&(e.text=this._source.priceLabelText(this._data.plotIndex),e.visible=!0)}}},59572:(e,t,i)=>{"use strict";i.d(t,{applyOverridesToStudy:()=>c,applyOverridesToStudyDefaults:()=>h});var s=i(88537),r=i(50993);const n=(0,i(98125).getLogger)("Chart.Model.StudyPropertiesOverrider");var o,a;function l(e,t,i,s){const r=i.split(".");if(0===r.length||0===r[0].length)return;const l=function(e){const t=e.split(":");return{name:t[0],type:2===t.length?t[1]:null} +}(r[0]),c=l.name,h=l.type,d=null!==h,u=!d||"band"===h,p=!d||"area"===h,_=!d||"input"===h,m=!d||"plot"===h?a.getPlotIdByTitle(e,c):null,g=u?a.getBandIndexByName(e,c):null,f=p?a.getFilledAreaIdByTitle(e,c):null,v=_?a.getInputByName(e,c):null,S=t.hasOwnProperty(c);if((null!==m?1:0)+(null!==g?1:0)+(null!==f?1:0)+(null!==v?1:0)+(S?1:0)>1)return void n.logWarn(`Study '${e.description}' has ambiguous identifier '${c}'`);const y=r[1];if(null!==m){if(1===r.length)return void n.logWarn(`Path of sub-property of '${c}' plot for study '${e.description}' must be not empty`);const i=r.slice(1);o.applyPlotProperty(e,t,m,i,s)}else if(null!==v)o.applyInputValue(t,v,s);else if(null!==g){if(void 0===y)return void n.logWarn(`Property name of '${c}' band for study '${e.description}' must be set`);o.applyBandProperty(t,g,y,s)}else if(null!==f){if(void 0===y)return void n.logWarn(`Property name of '${c}' area for study '${e.description}' must be set`);o.applyFilledAreaProperty(t,f,y,s)}else S?o.setRootProperty(t,r,s):n.logWarn(`Study '${e.description}' has no plot or input '${c}'`)}function c(e,t){const i=e.properties(),s=i.state();for(const i in t)t.hasOwnProperty(i)&&l(e.metaInfo(),s,i,t[i]);i.mergeAndFire(s)}function h(e,t,i){for(const s in e){if(!e.hasOwnProperty(s))continue;const r=s.indexOf(".");if(-1===r)continue;const o=s.substring(0,r),c=a.getMetaInfoByDescription(t,o);if(null===c){n.logWarn("There is no such study "+o);continue}const h=i(c);null!==h?l(c,h,s.substring(r+1),e[s]):n.logWarn("Cannot apply overrides for study "+o)}}!function(e){const t={line:r.LineStudyPlotStyle.Line,histogram:r.LineStudyPlotStyle.Histogram,cross:r.LineStudyPlotStyle.Cross,area:r.LineStudyPlotStyle.Area,columns:r.LineStudyPlotStyle.Columns,circles:r.LineStudyPlotStyle.Circles,line_with_breaks:r.LineStudyPlotStyle.LineWithBreaks,area_with_breaks:r.LineStudyPlotStyle.AreaWithBreaks};e.applyPlotProperty=function(e,i,o,a,l){if(void 0===i.styles)return void n.logWarn("Study does not have styles");const c=a[0];if("color"===c){return void function(e,t,i,r,o){if(void 0!==e.styles)if(null===t&&!isNaN(r)&&r>0)n.logWarn("Study plot does not have color #"+r);else{if(0===r||isNaN(r)){(0,s.ensureDefined)(e.styles[i]).color=String(o),r=0}null!==t&&((0,s.ensureDefined)(t.colors[r]).color=String(o))}else n.logWarn("Study does not have styles")}(i,function(e,t,i){if(void 0===e.plots)return null;for(const s of e.plots){if(!(0,r.isColorerPlot)(s)||void 0===t.palettes)continue;const e=t.palettes[s.palette];if(s.target===i&&void 0!==e)return e}return null}(e,i,o),o,a.length>1?parseInt(a[1]):NaN,l)}const h=i.styles[o];if(void 0!==h&&h.hasOwnProperty(c)){if("plottype"===c){const e=t[String(l)];if(void 0===e)return void n.logWarn("Unsupported plot type for plot: "+l);l=e}h[c]=l}else n.logWarn(`Study plot does not have property '${c}'`)},e.applyBandProperty=function(e,i,s,r){if(void 0===e.bands)return void n.logWarn("Study does not have bands");const o=e.bands[i];if(void 0!==o&&o.hasOwnProperty(s)){if("plottype"===s){const e=t[String(r)] +;if(void 0===e)return void n.logWarn("Unsupported plot type for band: "+r);r=e}o[s]=r}else n.logWarn(`Study band does not have property '${s}'`)},e.applyFilledAreaProperty=function(e,t,i,s){if(void 0===e.filledAreasStyle)return void n.logWarn("Study does not have areas");const r=e.filledAreasStyle[t];void 0!==r&&r.hasOwnProperty(i)?r[i]=s:n.logWarn(`Study area does not have property '${i}'`)},e.applyInputValue=function(e,t,i){void 0!==e.inputs&&e.inputs.hasOwnProperty(t)?e.inputs[t]=i:n.logWarn(`Study does not have input '${t}'`)},e.setRootProperty=function(e,t,i){if(0===t.length)return;let s=e;for(const e of t.slice(0,-1)){if(null==s||!s.hasOwnProperty(e))break;s=s[e]}const r=t[t.length-1];null!=s&&s.hasOwnProperty(r)?s[r]=i:n.logWarn("Study does not have property "+t.join("."))}}(o||(o={})),function(e){e.getInputByName=function(e,t){if(void 0===e.inputs)return null;t=t.toLowerCase();for(const i of e.inputs)if(i.name.toLowerCase()===t)return i.id;return null},e.getPlotIdByTitle=function(e,t){if(void 0===e.styles)return null;t=t.toLowerCase();for(const i in e.styles){const s=e.styles[i];if((void 0!==s&&void 0!==s.title?s.title:i).toLowerCase()===t)return i}return null},e.getFilledAreaIdByTitle=function(e,t){if(void 0===e.filledAreas)return null;t=t.toLowerCase();for(const i of e.filledAreas)if(i.title.toLowerCase()===t)return i.id;return null},e.getBandIndexByName=function(e,t){if(void 0===e.bands)return null;t=t.toLowerCase();for(let i=0;i{"use strict";var s=i(2015),r=i(2872),n=i(88537).assert,o=i(37667).symbolTitle,a=i(33981).StudyBarColorer,l=i(41855).StudyPriceAxisView,c=i(54376).createGraphicsPriceAxisViews,h=i(84801).ChartApiInterface,d=i(88564).DefaultProperty,u=i(97098).PriceFormatter,p=i(71053).PlotList,_=i(67072),m=i(76422),g=i(50993),f=g.LineStudyPlotStyle,v=i(55057).StudyPriceLineAxisView,S=i(8671).studyPlotFunctionMap,y=i(8671).studyEmptyPlotValuePredicate,b=i(72857).makeNextStudyId,w=i(67337),C=i(69774).StudyBase,P=i(13933);const{dataSourceChangeEvent:T}=i(33291);var x=i(20838).IntervalsVisibilitiesProperty,I=P.StudyStatusType,M=i(68906).colorToInteger,L=i(52418).intervalsVisibilitiesDefaults,A=i(98125).getLogger("Chart.Study"),E=w.enabled("datasource_copypaste"),k=w.enabled("study_symbol_ticker_description"),D=w.enabled("hide_unresolved_symbols_in_legend");function V(e,t,i){var s=new d(t,i,!0);s.removeProperty("intervalsVisibilities"),s.addChild("intervalsVisibilities",new x(i&&i.intervalsVisibilities)),s.addExclusion("visible"),s.addExclusion("precision"),s.addExclusion("minTick"),s.addExclusion("intervalsVisibilities");for(var r=0;r=0?c:l}return l}if(this._metaInfo.isTVScript||this._metaInfo.pine){if("text"===i)return this._metaInfo.defaults.inputs.text;if("pineId"===i)return this._metaInfo.scriptIdPart;if("pineVersion"===i)return this._metaInfo.pine?this._metaInfo.pine.version:"-1";if("color"===e.type&&this._metaInfo.isRGB){var h=this._properties.inputs[i].value();return M(h)}if("price"===e.type){var d=this._properties.inputs[i].value();return t.priceInputsForDisplay?this.formatter().format(d):d}return this._properties.inputs[i].value()}return this._properties.inputs[i].value()}_rebindToSource(e,t){var i=this.parentSource();if(this._isChildStudy){var s;this._source.unsetChild(this);var r=null;if(e===this._model.mainSeries())this._source=null,this._isChildStudy=!1,this._ownerSource=null,s=this._series.seriesSource().instanceId(),r=h.REBIND_STUDY_CHILD_TO_STANDALONE;else{if(!(e instanceof R))return A.logError("Unable to rebind study to source of this type"),!1;this._ownerSource=e,this._source=e,s=this._source.sourceId(),this._source.setChild(this),this._source.isHibernated()&&this._source.start()}this._incrementTurnaround(),this.disablePriceRangeReady(),this._chartApi.rebindStudy(this._studyId,this._turnaround,s,this._studyName,t,this._handler,r)}else{if(!(e instanceof R))return A.logError("Unable to rebind study to source of this type"),!1;var n=e.isHibernated();n&&e.start();var o=!1;if(this._canCreateStudyWithRebindType(h.REBIND_STUDY_STANDALONE_TO_CHILD)&&(this._incrementTurnaround(),this.disablePriceRangeReady(),o=this._chartApi.rebindStudy(this._studyId,this._turnaround,e.sourceId(),this._studyName,t,this._handler,h.REBIND_STUDY_STANDALONE_TO_CHILD)),!o)return n&&e.stop(),!1;this._isChildStudy=!0,this._ownerSource=e,this._source=e,this._source.setChild(this),this._childStudyByRebind.fire()}var a=this.m_priceScale,l=e.priceScale();if(a!==l){var c=this._model.paneForSource(this),d=this._model.paneForSource(e);c===d&&d.move(this,l,!0)}const u=this.parentSource() +;return i.formatterChanged().unsubscribe(this,this._onSourceFormatterChanged),u.formatterChanged().subscribe(this,this._onSourceFormatterChanged),i.priceStepChanged().unsubscribe(this,this._onSourcePriceStepChanged),u.priceStepChanged().subscribe(this,this._onSourcePriceStepChanged),i.currencyChanged().unsubscribeAll(this),u.currencyChanged().subscribe(this,this._onSourceCurrencyChanged),i.unitChanged().unsubscribeAll(this),u.unitChanged().subscribe(this,this._onSourceUnitChanged),i.priceRangeReadyChanged().unsubscribeAll(this),u.priceRangeReadyChanged().subscribe(this,this._onSourcePriceRangeReadyChanged),this._recreatePriceFormattingDependencies(),!0}childStudyByRebind(){return this._childStudyByRebind}_changeInputsImpl(e,t){var i=this.source(),s=this._properties.inputs&&this._properties.inputs.state(),r=_.getSourceIdByInputs(this._metaInfo.inputs,s),n=!0;if(r)if("high"===r||"open"===r||"low"===r||"close"===r||"hl2"===r||"ohl3"===r||"ohlc4"===r)i=this._model.mainSeries();else for(var o=this._model.dataSources().filter((function(e){return e instanceof R&&e.canHaveChildren()})),a=0;a=0&&(e="_v"+this._metaInfo.pine.version),{symbol:this.series().actualSymbol(),resolution:this.series().interval(),study:this._metaInfo.shortId+e}}_sendTelemetryReport(e,t,i){void 0===i&&(i=this._getTelemetryAdditionalData());var s=Object.assign(t,{additional:i});(void 0).sendChartReport(e,s)}_sendTelemetryCounter(e,t){this._sendTelemetryReport(e,{count:1},t)}onAboutToBeDestroyed(){return this._aboutToBeDestroyed}destroy(){this._aboutToBeDestroyed.fire(), +this._isDestroyed=!0,null!==this._definitionsViewModel&&(this._definitionsViewModel.destroy(),this._definitionsViewModel=null),this._properties.precision.listeners().unsubscribe(this,this._precisionChanged),this._showStudyArgumentsProperty.listeners().unsubscribe(this,this.invalidateTitleCache),this._properties.description.listeners().unsubscribe(this,this.invalidateTitleCache),this._properties.shortDescription&&this._properties.shortDescription.listeners().unsubscribe(this,this.invalidateTitleCache),this._model.mainSeries().dataEvents().symbolResolved().unsubscribeAll(this),this.hasBarColorer()&&this._properties.visible.listeners().unsubscribe(this._model.mainSeries(),this._model.mainSeries().invalidateBarStylesCache),this._model.mainSeries().dataEvents().symbolResolved().unsubscribe(this,this._recreatePriceFormattingDependencies),void 0!==this._properties.offsets&&this._properties.offsets.listeners().unsubscribe(this,this._updateMaxOffsetValue),void 0!==this._properties.offset&&this._properties.offset.listeners().unsubscribe(this,this._updateMaxOffsetValue),super.destroy()}desiredPriceScalePosition(){return this.metaInfo().isTVScriptStub?"overlay":this.metaInfo().linkedToSeries?"as-series":void 0===this.metaInfo().priceScale?null:["right","left","overlay"][this.metaInfo().priceScale]}guiPlotName(e){var t=this.properties().styles;return t&&t[e]&&t[e].title?t[e].title.value():this.title()}formatterChanged(){return this._formatterChanged}copiable(){return E&&!this.isChildStudy()}setPriceScale(e){super.setPriceScale(e),m.emit("study_event",this.id(),"price_scale_changed")}getStudyName(){return this._studyName}}TradingView.Study=R,t.Study=R,t.prepareStudyProperties=function(e,t,r,o,a){return function(e,t,r,o,a,l){var c=function(e,t,r,o){var a=i(31752);if(_.versionOf(e)<1)throw new Error("This function cannot work with metainfo of the old format version. Required format version >= 1");var l=TradingView.clone(defaults("study"));B(l,e);var c=_.getStudyPropertyRootName(e),h=TradingView.clone(defaults(c,o));h.intervalsVisibilities=TradingView.clone(L),("Overlay"===e.shortId||"Compare"===e.shortId)&&(h.currencyId=null,h.unitId=null);e.isTVScript&&e.TVScriptSourceCode!==h.TVScriptSourceCode&&(h=TradingView.clone(TradingView.factoryDefaults(c,o)));TradingView.merge(l,h),t&&(n(!(t instanceof s),"propsState should not be an instance of Property"),TradingView.merge(l,t));var d=TradingView.clone(e),u={};a.mergeInputsObjPart(u,d.defaults.inputs),a.mergeInputsObjPart(u,l.inputs),l.inputs=u,delete d.inputs,delete d.defaults.inputs;var p={};if(TradingView.merge(p,d.defaults),TradingView.merge(p,TradingView.factoryDefaults(c)),TradingView.merge(p,l),TradingView.merge(p,d),delete p.defaults,l=p,null!==r){var m=r.model().studiesColorRotatorFactory().getColorRotator(e);null!==m&&("Overlay@tv-basicstudies"===e.id?l.lineStyle.color=m.getColor(l.lineStyle.color,e):TradingView.merge(l,function(e,t){for(var i in e.styles){var s=e.styles[i].color;s&&(e.styles[i].color=t.getColor(s))}return e}(l,m)))}t&&TradingView.merge(l.styles,t.styles) +;return l}(e,t,r,o),h=_.getSourceInputIds(e);if(h.length>0){var d=h[0];l instanceof R?c.inputs[d]="{pid}$0":void 0!==c.inputs[d]&&-1!==c.inputs[d].indexOf("$")&&(c.inputs[d]="close")}return V(e,a,c)}(e,t,r,o,_.getStudyPropertyRootName(e),a)},t.prepareStudyPropertiesForLoadChart=function(e,t,s,r,n,o){return function(e,t,s,r,n,o,a){var l=function(e,t,s,r,n,o){var a=i(31752);e.version&&s.version&&e.version!==s.version&&A.logWarn("Serialized metaInfo version "+e.version+" is not equal to the saved state version "+s.version);var l=TradingView.clone(defaults("study"));l.intervalsVisibilities=TradingView.clone(L),TradingView.merge(l,TradingView.factoryDefaults(_.getStudyPropertyRootName(e))),B(l,e),TradingView.merge(l,s),l=n.updateStudyState(l,e,t),void 0!==o&&(l=o(s,l,e,t));var c=TradingView.clone(t||e);if(c&&_.versionOf(c)>=1){var h={};a.mergeInputsObjPart(h,(c.defaults||{}).inputs),a.mergeInputsObjPart(h,l.inputs),l.inputs=h,delete c.inputs,c.defaults&&delete c.defaults.inputs;var d={};TradingView.merge(d,c.defaults),TradingView.merge(d,TradingView.factoryDefaults(_.getStudyPropertyRootName(c))),TradingView.merge(d,l),delete c.defaults,TradingView.merge(d,c),l=d}return l}(e,t,s,0,n,a);return V(t||e,o,l)}(e,t,s,0,n,_.getStudyPropertyRootName(e),o)}},56138:(e,t,i)=>{"use strict";i.d(t,{plotShapesData:()=>r});var s=i(28353);const r={shape_arrow_down:{guiName:(0,s.t)("Arrow Down"),id:"shape_arrow_down",paneRendererClass:"PaneRendererArrowDown",pineName:"shape.arrowdown",icon:"arrow_down"},shape_arrow_up:{guiName:(0,s.t)("Arrow Up"),id:"shape_arrow_up",paneRendererClass:"PaneRendererArrowUp",pineName:"shape.arrowup",icon:"arrow_up"},shape_circle:{guiName:(0,s.t)("Circle"),id:"shape_circle",paneRendererClass:"PaneRendererCircleShape",pineName:"shape.circle",icon:"circle"},shape_cross:{guiName:(0,s.t)("Cross"),id:"shape_cross",paneRendererClass:"PaneRendererCrossShape",pineName:"shape.cross",icon:"cross"},shape_diamond:{guiName:(0,s.t)("Diamond"),id:"shape_diamond",paneRendererClass:"PaneRendererDiamond",pineName:"shape.diamond",icon:"diamond"},shape_flag:{guiName:(0,s.t)("Flag"),id:"shape_flag",paneRendererClass:"PaneRendererFlagShape",pineName:"shape.flag",icon:"flag"},shape_label_down:{guiName:(0,s.t)("Label Down"),id:"shape_label_down",paneRendererClass:"PaneRendererLabelDown",pineName:"shape.labeldown",icon:"label_down"},shape_label_up:{guiName:(0,s.t)("Label Up"),id:"shape_label_up",paneRendererClass:"PaneRendererLabelUp",pineName:"shape.labelup",icon:"label_up"},shape_square:{guiName:(0,s.t)("Square"),id:"shape_square",paneRendererClass:"PaneRendererSquare",pineName:"shape.square",icon:"square"},shape_triangle_down:{guiName:(0,s.t)("Triangle Down"),id:"shape_triangle_down",paneRendererClass:"PaneRendererTriangleApexDown",pineName:"shape.triangledown",icon:"triangle_down"},shape_triangle_up:{guiName:(0,s.t)("Triangle Up"),id:"shape_triangle_up",paneRendererClass:"PaneRendererTriangleApexUp",pineName:"shape.triangleup",icon:"triangle_up"},shape_xcross:{guiName:(0,s.t)("X Cross"),id:"shape_xcross", +paneRendererClass:"PaneRendererXCross",pineName:"shape.xcross",icon:"x_cross"}}},27306:(e,t,i)=>{"use strict";var s=i(15625).Version,r=i(98125).getLogger("Chart.StudyMigration");function n(e){this._studyId=e,this._maxToVers=s.ZERO,this._maxFromVers=s.ZERO,this._migrs=[]}n.prototype.addMigration=function(e,t,i){var r=s.parse(e),n=s.parse(t);r.isGreater(this._maxFromVers)&&(this._maxFromVers=r),n.isGreater(this._maxToVers)&&(this._maxToVers=n),this._migrs.push({fromVers:r,toVers:n,rules:i})},n.prototype.updateInputs=function(e,t,i){if(!i)return i;for(var s=TradingView.clone(i),n=e;n.isLess(t);){var o=this._findMigration(n);if(null==o)break;if(r.logNormal("Migrating study inputs from "+o.fromVers+" to "+o.toVers+" version, studyId: "+this._studyId+", migration: "+JSON.stringify(o)+", inputs: "+JSON.stringify(i)),s=this._applyMigration(s,o),!n.isLess(o.toVers))throw new Error("Problems in study migration process... Possible infinite cycle has been detected and stopped.");n=o.toVers}return n>e&&r.logNormal("Study inputs migration is done, studyId: "+this._studyId+", inputs: "+JSON.stringify(s)),s},n.prototype._findMigration=function(e){for(var t=-1,i=this._maxFromVers,s=0;s=0||t.indexOf(e)>=0},n._applyInputChangedMinMaxRule=function(e,t){if("adjustValIfNeeded"!==t.action)throw new Error("Unknown action "+t.action+" for rule with type "+t.type) +;var i=e[t.inputId];return it.maxVal&&(e[t.inputId]=t.maxVal),r.logNormal("Input "+t.inputId+"="+i+" adjusted to value "+e[t.inputId]),e},n._applyInputChangedOptionsRule=function(e,t){if(!(["text"].indexOf(t.inputType)>=0&&"resetToDefValIfNeeded"===t.action))throw new Error("Unexpected rule.inputType="+t.inputType+" in rule.action="+t.action);var i=e[t.inputId];return t.options.indexOf(i)<0&&(e[t.inputId]=t.defVal,r.logNormal("Input "+t.inputId+"="+i+" reset to default value "+t.defVal)),e},e.exports=n},9771:(e,t,i)=>{"use strict";var s=i(66101).Study,r=i(52457).OverlayLegendValuesProvider,n=i(79284).OverlayStatusProvider,o=i(33981).SeriesBarColorer,a=i(82927).StudyOverlayBase;t.study_Overlay=class extends a{constructor(e,t,i,s){super(e,t,i,s),this._paneView=null;var r=this;this.properties().minTick.listeners().subscribe(null,(function(){r._recreatePriceFormattingDependencies(),r.updateAllViews(),r._model.fullUpdate()}))}_showLastValueOnPriceScale(){return this._model.properties().scalesProperties.showSeriesLastValue.value()}barColorer(){return new o(this)}_tryChangeInputs(){s.prototype._tryChangeInputs.call(this),this.m_formatter=null,this.priceScale().updateFormatter()}_onQuotesUpdate(e,t){!this._legendView||void 0===t.values.change&&void 0===t.values.change_percent||(this._legendView.update(),this._model.updateSource(this))}destroy(){this._quotesProvider.quotesUpdate().unsubscribeAll(this),this._quotesProvider.destroy(),super.destroy()}tags(){var e=[],t=this.symbolInfo();return t?e.push(t.name):this._properties.inputs.symbol.value()&&e.push(this._properties.inputs.symbol.value()),e}async _getPropertyDefinitionsViewModelClass(){return(await Promise.all([i.e(1369),i.e(7387),i.e(8623),i.e(607)]).then(i.bind(i,55976))).StudyOverlayDefinitionsViewModel}defaultPlotIdForAlert(){return""}changeStyles(){this.data().each((function(e,t){t[TradingView.STYLE_PLOT]=null})),s.prototype.changeStyles.call(this)}valuesProvider(){return new r(this,this.model())}statusProvider(e){return new n(this,this.model())}}},67509:(e,t,i)=>{"use strict";var s=i(88537).assert,r=i(80643).clone,n=i(66101).Study,o=i(71053).PlotList,a=i(8671).studyPlotFunctionMap,l=i(8671).studyEmptyPlotValuePredicate;class c{constructor(e,t,i){this._strategyPlotIndex=e,this._targetPlotIndex=t,this._startIndex=i}rebuildData(e){var t=this._targetPlotIndex+1,i=this._strategyPlotIndex+1,s=null,r=null;e.range(this._startIndex||e.firstIndex(),e.lastIndex()).each((function(n,o){var a=o[t],l=o[i]?Math.round(o[i]):null;if(o[t]=null,o[i]=null,!l||l>0)return!1;var c=n+l,h={pointIndex:c,value:a};if(r){if(r.pointIndex!==h.pointIndex){c>=0&&(e.valueAt(c)[t]=a);var d=!1;s&&(d=s.value<=r.value&&r.value<=a||s.value>=r.value&&r.value>=a),d?r.pointIndex>=0&&(e.valueAt(r.pointIndex)[t]=null):s=r,r=h}}else r=h;return!1}))}}t.study_ScriptWithDataOffset=class extends n{constructor(e,t,i,s){super(e,t,i,s),this._underlyingData=new o(a(s),l)}clearData(){super.clearData(),this._underlyingData.clear()}_mergeData(e){this._invalidateLastNonEmptyPlotRowCache() +;var t=this._underlyingData.firstIndex();this._underlyingData.merge(e),t!==this._underlyingData.firstIndex()&&(this.m_data=new o(a(this._metaInfo),l));var i=this.m_data.lastIndex();this._underlyingData.range(i,this._underlyingData.lastIndex()).each(function(e,t){return this.m_data.add(e,r(t)),!1}.bind(this)),this._plotsForStrategyProcessing().forEach((function(e){new c(e.strategyIndex,e.targetIndex,i).rebuildData(this.m_data)}),this)}_plotsForStrategyProcessing(){var e=[];return this._metaInfo.plots.forEach((function(t,i){if("dataoffset"===t.type){var r=this._metaInfo.plots.findIndex((function(e){return e.id===t.target}));s(r>=0,"target plot not found for strategy plot "+t.id);var n={strategyIndex:i,targetIndex:r};e.push(n)}}),this),e}}},31752:(e,t,i)=>{"use strict";var s=i(88537).assert,r=i(15625).Version,n=i(98125).getLogger("Chart.Study.Versioning"),o=i(76861),a=i(67072),l=i(14905).extractPineId,c=i(5402).migrateMetaInfoAndPropState;function h(e,t){if(!e)throw new Error("No studies metainfo");var s=i(27306);if(this._studiesMetainfo=e,!t)throw new Error("No studies migrations");this._studiesMigrations=t,this._migrations={};for(var r=0;r=22)return t;for(var i={},s=0,r=0;;){var n=t[r];if(void 0===n)break;var o=t[n.id];n.isFake&&(n.id="in_"+s++),i[r]=n,i[n.id]=o,r++}return i}]}h.prototype.updateMetaInfo=function(e){if(!e)return e;s(!e.isTVScript,"This method should update only built-in java indicators metaInfo. For Pine indicators use updateMetaInfoAsync");for(var t=null,i=this._studiesMetainfo,r=0;r=12&&l<=26){var c={};for(o=0;o=12&&c<=26){var d=r.columns;r.columns=[];for(var u=0;ut&&n.logWarn("Bad integer input max value in metaInfo id="+e.id+" title="+e.description))}},h._fixInputsMaxValue=function(e,t){if(!TradingView.isAbsent(t)){var i=h.INPUT_MAX_VALUE;if(t.inputs)for(var s=0;si&&(a.max=i))}if(e&&e.inputs){var r=h.splitInputs(e.inputs),n=r.arr;for(var o in n){var a;"integer"===(a=n[o]).type&&(a.max&&a.max>i&&(a.max=i))}e.inputs=TradingView.merge(r.obj,r.arr)}}},h.prototype.patchPropsStateAndMetaInfo=function(e,t,i){"Script$BOOKER"!==t.productId||t.alerts||delete e.alerts,h._fixInputsOrder(e,t),h._fixInputsMaxValue(e,t);var s=h.splitInputs(e.inputs);e.inputs=s.obj;var r=a.versionOf(t);ri&&(i=r))}e[i+1]=t},h.splitInputs=function(e){var t={},i={};for(var s in e)isNumber(parseInt(s,10))?t[s]=e[s]:i[s]=e[s];return{arr:t,obj:i}},h.findInputKeyById=function(e,t){var i=null;for(var s in e)if(isNumber(parseInt(s,10))&&e[s].id===t){i=s;break}return i},h.getInputKeyById=function(e,t){var i=h.findInputKeyById(e,t);if(!i)throw new Error("Cannot find input with id: "+t);return i},e.exports=h},14791:(e,t,i)=>{"use strict";i.d(t,{areEqualSymbols:()=>r,symbolSameAsCurrent:()=>o});const s=i(67337).enabled("uppercase_instrument_names");function r(e,t){return void 0===e?void 0===t:void 0!==t&&(s?e.toUpperCase()===t.toUpperCase():e===t)}function n(e,t){return e.some(e=>r(t,e))}function o(e,t,i){if(r(t,e))return!0;if(i){if(r(i.full_name,e)||r(i.pro_name,e))return!0 +;if(r(i.ticker,e))return!0;if(i.aliases&&n(i.aliases,e))return!0;if(i.alternatives&&n(i.alternatives,e))return!0;if(0===e.indexOf("FRA:")&&r(i.pro_name,e.replace("FRA:","FWB:")))return!0}return!1}},76818:(e,t,i)=>{"use strict";i.d(t,{TextWidthCache:()=>s});class s{constructor(e=150){this._actualSize=0,this._usageTick=1,this._oldestTick=1,this._tick2Labels=new Map,this._cache=new Map,this._maxSize=e}reset(){this._actualSize=0,this._cache.clear(),this._usageTick=1,this._oldestTick=1,this._tick2Labels.clear()}measureText(e,t){return this.getMetrics(e,t).width}yMidCorrection(e,t){const i=this.getMetrics(e,t);return"actualBoundingBoxAscent"in i&&"actualBoundingBoxDescent"in i?(i.actualBoundingBoxAscent-i.actualBoundingBoxDescent)/2:0}getMetrics(e,t){const i=this._cache.get(t);if(void 0!==i)return i.metrics;if(this._actualSize===this._maxSize){const e=this._tick2Labels.get(this._oldestTick);this._tick2Labels.delete(this._oldestTick),this._cache.delete(e),this._oldestTick++,this._actualSize--}e.save(),e.textBaseline="middle";const s=e.measureText(t);return e.restore(),0===s.width&&t.length||(this._cache.set(t,{metrics:s,tick:this._usageTick}),this._tick2Labels.set(this._usageTick,t),this._actualSize++,this._usageTick++),s}}},5231:(e,t,i)=>{"use strict";var s=i(2872);function r(){this._marksByIndex=new Map,this._marksBySpan=[],this.changed=new s,this.minIndex=void 0,this.maxIndex=void 0}r.prototype.reset=function(){this._resetImpl(),this.changed.fire()},r.prototype._resetImpl=function(){this._marksByIndex=new Map,this._marksBySpan=[],this.minIndex=void 0,this.maxIndex=void 0,this._cache=void 0},r.prototype.merge=function(e){if(0!==e.length){var t=e[0].index,i=e[e.length-1].index;t<=this.minIndex&&i>=this.maxIndex&&this._resetImpl();for(var s=this._marksBySpan,r=new Set,n=0;n=this.maxIndex&&this.maxIndex--,this.maxIndex2;){if(1e3*this._marksByIndex.get(t).time===e)return t;if(1e3*this._marksByIndex.get(i).time===e)return i;var s=Math.round((t+i)/2);1e3*this._marksByIndex.get(s).time>e?i=s:t=s}return t},r.prototype.build=function(e,t){var i=Math.ceil(t/e);if(this._maxbar===i&&this._cache)return this._cache;this._maxbar=i;for(var s=[],r=this._marksBySpan.length;r--;)if(this._marksBySpan[r]){var n=s;s=[];for(var o=n.length,a=0,l=this._marksBySpan[r],c=l.length,h=1/0,d=-1/0,u=0;u=i&&_-d>=i&&(s.push(p),d=_)}for(;a{"use strict";i.d(t,{TimeAxisView:()=>o});var s=i(68906),r=i(93435);class n{constructor(){this._data=null}setData(e){this._data=e}draw(e,t,i){if(null===this._data||!this._data.visible||0===this._data.text.length)return;const s=this._data;e.font=t.font;const n=Math.round(t.widthCache.measureText(e,s.text));if(n<=0)return;e.save();const o=t.paddingHorizontal,a=n+2*o,l=a/2;let c=s.coordinate,h=Math.floor(c-l)+.5;if(s.alwaysInViewPort){const e=s.width;h<0?(c+=Math.abs(0-h),h=Math.floor(c-l)+.5):h+a>e&&(c-=Math.abs(e-(h+a)),h=Math.floor(c-l)+.5)}const d=h+a,u=Math.ceil(0+t.borderSize+t.offsetSize+t.paddingTop+t.fontSize+t.paddingBottom);e.fillStyle=s.background;const p=Math.round(h*i),_=Math.round(0*i),m=Math.round(d*i),g=Math.round(u*i),f=Math.round(2*i);e.beginPath(),e.moveTo(p,_),e.lineTo(p,g-f),e.arcTo(p,g,p+f,g,f),e.lineTo(m-f,g),e.arcTo(m,g,m,g-f,f),e.lineTo(m,_),e.fill();const v=0+t.borderSize+t.offsetSize+t.paddingTop+t.fontSize/2;e.textAlign="left",e.textBaseline="middle",e.fillStyle=s.color;const S=t.widthCache.yMidCorrection(e,"Apr0");e.translate((h+o)*i,(v+S)*i),(0,r.drawScaled)(e,i,()=>e.fillText(s.text,0,0)),e.restore()}}class o{constructor(e){this._renderer=new n,this._rendererData={background:"",color:"",coordinate:0,text:"",visible:!1,width:0, +alwaysInViewPort:!0},this._invalidated=!0,this._model=e,this._renderer.setData(this._rendererData)}update(){this._invalidated=!0}renderer(){return this._invalidated&&(this._updateImpl(),this._invalidated=!1),this._renderer}coordinate(){return this._rendererData.coordinate}_getAlwaysInViewPort(){return!0}_updateImpl(){const e=this._rendererData;if(e.visible=!1,this._model.timeScale().isEmpty()||!this._isVisible())return;const t=this._getIndex();if(null===t)return;e.visible=!0,e.width=this._model.timeScale().width(),e.background=this._getBgColor(),e.color=(0,s.colorFromBackground)(e.background),e.coordinate=this._model.timeScale().indexToCoordinate(t),e.alwaysInViewPort=this._getAlwaysInViewPort();const i=this._model.timeScale().indexToUserTime(t);e.text=null!==i?this._model.dateTimeFormatter().format(i):"",this._invalidated=!1}}},2271:(e,t,i)=>{"use strict";i.d(t,{INVALID_TIME_POINT_INDEX:()=>s});const s=-2e6},5816:(e,t,i)=>{"use strict";i.r(t),i.d(t,{MINUTE_SPAN:()=>s,HOUR_SPAN:()=>r,DAY_SPAN:()=>n,WEEK_SPAN:()=>o,MONTH_SPAN:()=>a,YEAR_SPAN:()=>l,DEFAULT_BAR_SPACING:()=>c});const s=20,r=30,n=40,o=50,a=60,l=70,c=6},23075:(e,t,i)=>{"use strict";i.d(t,{trackDrawingCreated:()=>r,trackDrawingPasted:()=>n,trackDrawingCloned:()=>o,trackChartStyleChanged:()=>a});i(88537),i(16654);function s(e,t){0}function r(e){s()}function n(e){s()}function o(e){s()}function a(e){0}},35218:(e,t,i)=>{"use strict";i.d(t,{translatedIntervalString:()=>r});i(28353);var s=i(9315);function r(e){const t=(0,s.getTranslatedResolutionModel)(e,!0);return null===t?e:t.multiplier+(t.mayOmitShortKind?"":t.shortKind)}},17691:(e,t,i)=>{"use strict";i.d(t,{ApplyLineToolTemplateUndoCommand:()=>r});var s=i(35762);class r extends s.UndoCommand{constructor(e,t,i){super(i),this._source=e,this._newState=t,this._oldState=e.properties().state()}redo(){this._source.applyTemplate(this._newState)}undo(){this._source.applyTemplate(this._oldState)}}},79495:(e,t,i)=>{"use strict";i.d(t,{ExcludeLineToolsFromGroupUndoCommand:()=>l});var s=i(88537),r=(i(94419),i(28353)),n=i(24980),o=i(35762);const a=new n.TranslatedString("exclude line tools from group {group}",(0,r.t)("exclude line tools from group {group}"));class l extends o.UndoCommand{constructor(e,t,i){super(a.format({group:t.name()})),this._model=e,this._groupId=t.id,this._groupName=t.name(),this._lineToolsIds=i.map(e=>e.id())}redo(){const e=(0,s.ensureNotNull)(this._model.lineToolsGroupModel().groupForId(this._groupId)),t=this._lineToolsIds.map(e=>this._model.dataSourceForId(e));e.excludeLineTools(t),0===e.lineTools().length&&this._model.lineToolsGroupModel().removeGroup(e)}undo(){const e=this._lineToolsIds.map(e=>this._model.dataSourceForId(e)),t=this._model.lineToolsGroupModel().groupForId(this._groupId);null!==t?t.addLineTools(e):this._model.lineToolsGroupModel().createGroup(e,this._groupName,this._groupId)}}},8597:(e,t,i)=>{"use strict";i.d(t,{MergeUpUndoCommand:()=>o,MergeDownUndoCommand:()=>a,MergeToTargetPane:()=>l});var s=i(88537),r=i(21749);class n extends r.MoveSourceUndoCommand{constructor(e,t,i){ +super(e,t,i),this._restorePane=!1}redo(){const e=this._chartModel.panes().length,t=this._chartModel.panes()[this._targetPaneIndex()],i=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId)),r=(0,s.ensureNotNull)(this._chartModel.paneForSource(i)),n=this._chartModel.children(i,!0);r.bulkActionMacro(()=>{n.forEach(e=>this._chartModel.detachSource(e)),this._restorePane=this._chartModel.detachSource(i)});const o="overlay"===this._initialPriceScalePosition?this._initialPriceScalePosition:void 0,a=t.findSuitableScale(i,void 0,o),l=0===a.dataSources().length;if(t.bulkActionMacro(()=>{t.addDataSource(i,a,!1),n.forEach(e=>t.addDataSource(e,a,!1))}),i===this._chartModel.mainSeries()){const e=t.priceScalePosition(a);t.movePriceScale(a,e,0)}if(l){(0,s.ensureNotNull)(i.priceScale()).restoreState(this._newPriceScaleState(t.isOverlay(i)))}this._chartModel.fullUpdate(),e!==this._chartModel.panes().length&&this._chartModel.setShouldBeSavedEvenIfHidden(!0)}undo(){let e;e=this._restorePane?this._chartModel.createPane(this._initialPaneIndex):this._chartModel.panes()[this._initialPaneIndex];const t=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId)),i=(0,s.ensureNotNull)(this._chartModel.paneForSource(t)),r=this._chartModel.children(t,!0);i.bulkActionMacro(()=>{r.forEach(e=>this._chartModel.detachSource(e)),this._chartModel.detachSource(t)});let n=e.getPriceScaleById(this._initialPriceScaleId);null===n&&(n=e.createPriceScaleAtPosition(this._initialPriceScalePosition,this._initialPriceScaleIndex)),e.bulkActionMacro(()=>{e.addDataSource(t,n,!0),r.forEach(t=>e.addDataSource(t,n,!1))}),(0,s.ensureNotNull)(t.priceScale()).restoreState(this._originalPriceScaleState()),this._chartModel.fullUpdate()}}class o extends n{constructor(e,t,i){super(e,t,i)}_targetPaneIndex(){return this._initialPaneIndex-1}}class a extends n{constructor(e,t,i){super(e,t,i)}_targetPaneIndex(){return this._initialPaneIndex+1}}class l extends n{constructor(e,t,i,s){super(e,t,s),this._targetPane=i}_targetPaneIndex(){return this._targetPane}}},21749:(e,t,i)=>{"use strict";i.d(t,{MoveSourceUndoCommand:()=>n});var s=i(88537),r=i(35762);class n extends r.UndoCommand{constructor(e,t,i){super(i),this._chartModel=e,this._sourceId=t.id();const r=(0,s.ensureNotNull)(t.priceScale());this._initialPriceScaleId=r.id(),this._initialPriceScaleState=(0,s.ensureNotNull)(t.priceScale()).state();const n=(0,s.ensureNotNull)(e.paneForSource(t));this._initialPriceScalePosition=n.priceScalePosition(r),this._initialPriceScaleIndex=n.priceScaleIndex(r,this._initialPriceScalePosition),this._initialPaneIndex=e.panes().indexOf(n)}_newPriceScaleState(e){const t={...this._initialPriceScaleState};return delete t.m_isLockScale,delete t.id,delete t.m_topMargin,delete t.m_bottomMargin,t}_originalPriceScaleState(){return this._initialPriceScaleState}}},27579:(e,t,i)=>{"use strict";i.d(t,{MoveToNewPriceScaleUndoCommand:()=>o,MoveToExistingPriceScaleUndoCommand:()=>a});var s=i(88537),r=i(21749);class n extends r.MoveSourceUndoCommand{constructor(e,t,i,s){super(e,t,s), +this._sourcePaneRemoved=!1,this._targetPaneIndex=e.panes().indexOf(i)}redo(){const e=this._chartModel.panes()[this._initialPaneIndex],t=this._chartModel.panes()[this._targetPaneIndex],i=e!==t,r=this._targetPriceScale(t),n=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId)),o=this._chartModel.children(n,!0);for(const e of o)i?(this._chartModel.detachSource(e),t.addDataSource(e,r,!1)):t.move(e,r);i?(this._sourcePaneRemoved=this._chartModel.detachSource(n),t.addDataSource(n,r,!1)):t.move(n,r);const a=t.priceScalePosition(r);t.movePriceScale(r,a,this._targetPriceScaleIndex(n)),this._chartModel.fullUpdate()}undo(){this._sourcePaneRemoved&&this._chartModel.createPane(this._initialPaneIndex);const e=this._chartModel.panes()[this._initialPaneIndex],t=e!==this._chartModel.panes()[this._targetPaneIndex],i=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId));let r=e.getPriceScaleById(this._initialPriceScaleId);null===r&&(r=e.createPriceScaleAtPosition(this._initialPriceScalePosition,this._initialPriceScaleIndex));const n=this._chartModel.children(i,!0);for(const i of n)t?(this._chartModel.detachSource(i),e.addDataSource(i,r,!1)):e.move(i,r);t?(this._chartModel.detachSource(i),e.addDataSource(i,r,!1)):e.move(i,r),(0,s.ensureNotNull)(i.priceScale()).restoreState(this._originalPriceScaleState()),this._chartModel.fullUpdate()}}class o extends n{constructor(e,t,i,s,r){super(e,t,i,r),this._targetPriceScalePosition=s}_targetPriceScale(e){const t=e.createPriceScaleAtPosition(this._targetPriceScalePosition);return t.restoreState(this._newPriceScaleState("overlay"===this._targetPriceScalePosition)),t}_targetPriceScaleIndex(e){return e===this._chartModel.mainSeries()?0:void 0}}class a extends n{constructor(e,t,i,s,r){super(e,t,i,r),this._targetPriceScaleId=s.id()}_targetPriceScale(e){return(0,s.ensureNotNull)(e.getPriceScaleById(this._targetPriceScaleId))}_targetPriceScaleIndex(e){}}},69746:(e,t,i)=>{"use strict";i.d(t,{PriceScaleChangeUndoCommand:()=>h});var s=i(88537),r=i(28353),n=i(24980),o=i(98125),a=i(35762);const l=(0,o.getLogger)("Chart.ChartUndoModel"),c=new n.TranslatedString("scale price",(0,r.t)("scale price"));class h extends a.UndoCommand{constructor(e,t,i,s,r){super(c,!1),this._newPriceScaleState=null,this._model=e,this._paneIndex=e.panes().indexOf(t),this._priceScaleId=i.id(),this._state=s,this._timestamp=r?performance.now():null}undo(){if(null!==this._newPriceScaleState)return void l.logDebug("PriceScaleChangeUndoCommand.undo: Command is already undone");const[e,t]=this._paneAndScale();this._newPriceScaleState=t.state(),this._model.restorePriceScaleState(e,t,this._state)}redo(){if(null===this._newPriceScaleState)return void l.logDebug("PriceScaleChangeUndoCommand.redo: Command is not undone");const[e,t]=this._paneAndScale();this._model.restorePriceScaleState(e,t,this._newPriceScaleState),this._newPriceScaleState=null}canMerge(e){ +return e instanceof h&&null!==this._timestamp&&null!==e._timestamp&&null===this._newPriceScaleState&&e._model===this._model&&e._paneIndex===this._paneIndex&&e._priceScaleId===this._priceScaleId&&Math.abs(e._timestamp-this._timestamp)<1e3}merge(e){this._timestamp=e._timestamp}_paneAndScale(){const e=this._model.panes()[this._paneIndex],t=(0,s.ensureNotNull)(e.getPriceScaleById(this._priceScaleId));return[e,t]}}},65284:(e,t,i)=>{"use strict";i.d(t,{RemoveSourcesCommand:()=>m});var s=i(88537),r=i(28353),n=i(24980),o=i(35762),a=i(14291),l=i(98125),c=i(52546),h=i(81851),d=i(79495);class u extends o.UndoCommand{constructor({title:e,chartModel:t,lineDataSourceIds:i}){super(e),this._excludeLineToolsFromGroupUndoCommands=[],this._undoState=[],this._chartModel=t,this._lineDataSourceIds=i}redo(){const e=this._lineDataSourceIds.map(e=>(0,s.ensureNotNull)(this._chartModel.dataSourceForId(e)));this._groupLineToolsByGroups(e).forEach((e,t)=>{const i=new d.ExcludeLineToolsFromGroupUndoCommand(this._chartModel,t,e);i.redo(),this._excludeLineToolsFromGroupUndoCommands.push(i)}),e.forEach(e=>{this._undoState.push({state:e.state(!1),paneIndex:this._chartModel.panes().indexOf((0,s.ensureNotNull)(this._chartModel.paneForSource(e))),sharingMode:e.sharingMode().value()}),this._chartModel.removeSource(e)})}undo(){var e;for(let t=this._undoState.shift();t;t=this._undoState.shift())null===(e=this._chartModel.restoreSource(!1,t.paneIndex,null,t.state,null))||void 0===e||e.share(t.sharingMode);this._excludeLineToolsFromGroupUndoCommands.forEach(e=>e.undo())}_groupLineToolsByGroups(e){const t=this._chartModel.lineToolsGroupModel();return e.reduce((e,i)=>{const s=t.groupForLineTool(i);if(null!==s){const t=e.get(s)||[];t.push(i),e.set(s,t)}return e},new Map)}}const p=(0,l.getLogger)("Chart.RemoveSourcesCommand"),_=new n.TranslatedString("remove line data sources",(0,r.t)("remove line data sources"));class m extends o.UndoCommand{constructor(e,t,i){super(i),this._removeLineDataSourcesUndoCommand=null,this._initialPriceScaleMode=null;const[r,n]=(0,c.closeSourcesSet)(e,t).reduce((e,t)=>((0,a.isLineTool)(t)?e[1].push(t.id()):e[0].push(t.id()),e),[[],[]]);this._chartModel=e,this._sourceIds=r,this._lineDataSourceIds=n,this._sourceStates=[],this._paneIndexes=[],this._priceScalePositionIds=[],this._paneStates=[],this._restorePanes=[];const o=t[0];1===t.length&&(0,h.isStudy)(o)&&(this._initialPriceScaleMode=(0,s.ensureNotNull)(o.priceScale()).mode())}removedIds(){return[...this._sourceIds,...this._lineDataSourceIds]}redo(){this._chartModel.panes().length;const e=this._sourceIds.map(e=>(0,s.ensureNotNull)(this._chartModel.dataSourceForId(e)));this._sourceStates=e.map(e=>(0,s.ensureNotNull)(e.state(!1)));const t=e.map(e=>(0,s.ensureNotNull)(this._chartModel.paneForSource(e)));this._paneIndexes=t.map(e=>this._chartModel.panes().indexOf(e)),this._lineDataSourceIds.length>0&&(this._removeLineDataSourcesUndoCommand=new u({title:_,chartModel:this._chartModel,lineDataSourceIds:this._lineDataSourceIds}),this._removeLineDataSourcesUndoCommand.redo()), +this._priceScalePositionIds=e.map((e,i)=>{const s=e.priceScale();if(null===s)return null;const r=t[i].priceScalePosition(s);return{id:s.id(),position:r,priceScaleIndex:t[i].priceScaleIndex(s,r)}});const i=new Set;e.forEach((e,t)=>{i.add(this._paneIndexes[t])}),this._paneStates=e.map((e,s)=>{const r=this._paneIndexes[s];return i.has(r)?t[s].state(!1,!0):null}),this._restorePanes=e.map(e=>this._chartModel.removeSource(e))}undo(){const e=[];for(let t=this._sourceStates.length-1;t>=0;t--){const i=this._chartModel.restoreSource(this._restorePanes[t],this._paneIndexes[t],this._paneStates[t],this._sourceStates[t],this._priceScalePositionIds[t]);i&&e.push(i)}e.some((t,i)=>t.id()!==this._sourceIds[e.length-i-1])&&p.logError("Source was restored improperly - source ids does not match"),null!==this._initialPriceScaleMode&&(0,s.ensureNotNull)(e[0].priceScale()).setMode(this._initialPriceScaleMode),this._removeLineDataSourcesUndoCommand&&this._removeLineDataSourcesUndoCommand.undo()}}},91794:(e,t,i)=>{"use strict";i.d(t,{RestoreDefaultsPreferencesUndoCommand:()=>p});var s=i(88537),r=i(28353),n=i(24980),o=i(35762),a=i(67396),l=i(21761),c=i(13647),h=i(92033),d=i(76166);const u=new n.TranslatedString("apply all chart properties",(0,r.t)("apply all chart properties"));class p extends o.UndoCommand{constructor(e){super(u),this._trading=null,this._oldShowSellBuyButtons=null,this._oldNoConfirmEnabled=null,this._oldShowOnlyRejectionNotifications=null,this._oldShowPricesWithZeroVolume=null,this._oldShowPricesWithSpread=null,this._oldOrderExecutedSoundEnabled=null,this._prevWatermarkPreferences=null,this._model=e,this._trading=(0,h.tradingService)(),null!==this._trading&&(this._oldShowSellBuyButtons=this._trading.showSellBuyButtons.value(),this._oldNoConfirmEnabled=this._trading.noConfirmEnabled.value(),this._oldShowOnlyRejectionNotifications=this._trading.showOnlyRejectionNotifications.value(),this._oldShowPricesWithZeroVolume=this._trading.showPricesWith().zeroVolume.value(),this._oldShowPricesWithSpread=this._trading.showPricesWith().spread.value(),this._oldOrderExecutedSoundEnabled=this._trading.orderExecutedSoundParams.enabled.value()),this._defaultsPreferences=(0,a.defaultsPreferencesByWhiteList)(this._model,this._model.mainSeries()),this._oldPreferences=e.preferences(),this._prevDateFormat=l.dateFormatProperty.value(),this._prevAddPlusButton=d.addPlusButtonProperty.value(),this._prevShowOpenMarkerStatus=c.showMarketOpenStatusProperty.value();const t=this._model.watermarkSource();null!==t&&(this._prevWatermarkPreferences=t.properties().state())}redo(){null!==this._trading&&(this._trading.showSellBuyButtons.setValue(!0),this._trading.noConfirmEnabled.setValue(!1),this._trading.showOnlyRejectionNotifications.setValue(!1),this._trading.showPricesWith().zeroVolume.setValue(!0),this._trading.showPricesWith().spread.setValue(!0),this._trading.orderExecutedSoundParams.enabled.setValue(!1)),this._model.applyPreferences(this._defaultsPreferences),this._model.mainSeries().onChartStyleChanged(),this._model.updateScales(),(0, +l.restoreDateFormatSettingsValue)(),(0,d.restoreAddPlusButtonSettingsValue)(),(0,c.restoreShowMarketOpenStatusProperty)();const e=this._model.watermarkSource();null!==e&&e.restorePropertiesDefaults()}undo(){null!==this._trading&&(this._trading.showSellBuyButtons.setValue((0,s.ensureNotNull)(this._oldShowSellBuyButtons)),this._trading.noConfirmEnabled.setValue((0,s.ensureNotNull)(this._oldNoConfirmEnabled)),this._trading.showOnlyRejectionNotifications.setValue((0,s.ensureNotNull)(this._oldShowOnlyRejectionNotifications)),this._trading.showPricesWith().zeroVolume.setValue((0,s.ensureNotNull)(this._oldShowPricesWithZeroVolume)),this._trading.showPricesWith().spread.setValue((0,s.ensureNotNull)(this._oldShowPricesWithSpread)),this._trading.orderExecutedSoundParams.enabled.setValue((0,s.ensureNotNull)(this._oldOrderExecutedSoundEnabled))),this._model.applyPreferences(this._oldPreferences),this._model.mainSeries().onChartStyleChanged(),this._model.updateScales(),l.dateFormatProperty.setValue(this._prevDateFormat),c.showMarketOpenStatusProperty.setValue(this._prevShowOpenMarkerStatus),d.addPlusButtonProperty.setValue(this._prevAddPlusButton);const e=this._model.watermarkSource();null!==e&&null!==this._prevWatermarkPreferences&&e.properties().mergeAndFire(this._prevWatermarkPreferences)}}},97401:(e,t,i)=>{"use strict";i.d(t,{SetPriceScaleCurrencyUndoCommand:()=>o});var s=i(88537),r=i(35762),n=i(37667);class o extends r.UndoCommand{constructor(e,t,i,r){super(r),this._newSourcesCurrencies=new Map,this._oldSourcesCurrencies=new Map,this._showFade=!1,this._chartWidget=i;const o=i.model().mainSeries();for(const i of e.seriesLikeSources()){if(!i.isVisible()||!i.isActingAsSymbolSource().value())continue;const e=t||(0,n.symbolOriginalCurrency)((0,s.ensureNotNull)(i.symbolInfo()));this._newSourcesCurrencies.set(i.id(),e),this._oldSourcesCurrencies.set(i.id(),i.currency()),this._showFade=this._showFade||i===o&&i.currency()!==e}}redo(){this._applyCurrencies(this._newSourcesCurrencies)}undo(){this._applyCurrencies(this._oldSourcesCurrencies)}_applyCurrencies(e){this._showFade&&this._chartWidget.screen.show();const t=this._chartWidget.model().model();e.forEach((e,i)=>{(0,s.ensureNotNull)(t.dataSourceForId(i)).setCurrency(e)}),this._chartWidget.model().selectionMacro(e=>{e.clearSelection()})}}},59836:(e,t,i)=>{"use strict";i.d(t,{SetPriceScaleModeCommand:()=>o});var s=i(88564),r=i(35762),n=i(33291);class o extends r.UndoCommand{constructor(e,t,i,s){super(i),this._newMode=e,this._priceScaleId=t.id(),this._model=s,this._oldMode=t.mode()}redo(){this._applyMode(this._newMode)}undo(){this._applyMode(this._oldMode)}_applyMode(e){const t=this._findPriceScaleById();null!==t&&((0,s.saveDefaultProperties)(!0),t.setMode(e),(0,s.saveDefaultProperties)(!1),this._model&&(this._model.recalculateAllPanes((0,n.viewportChangeEvent)()),this._model.lightUpdate()))}_findPriceScaleById(){const e=this._model.panes();for(let t=0;t{"use strict" +;i.d(t,{SetPriceScaleSelectionStrategyCommand:()=>a});var s=i(88537),r=i(35762),n=i(74325);class o{constructor(e){this._leftScales=e.leftPriceScales().map(e=>e.id()),this._rightScales=e.rightPriceScales().map(e=>e.id())}restorePane(e){this._leftScales.reverse().map(t=>(0,s.ensureNotNull)(e.getPriceScaleById(t))).forEach(t=>e.movePriceScale(t,"left")),this._rightScales.reverse().map(t=>(0,s.ensureNotNull)(e.getPriceScaleById(t))).forEach(t=>e.movePriceScale(t,"right"))}}class a extends r.UndoCommand{constructor(e,t,i){super(i),this._chartModel=e,this._targetStrategy=(0,n.createPriceScaleSelectionStrategy)(t),this._initialState=e.panes().map(e=>new o(e))}redo(){this._chartModel.panes().forEach(e=>e.setPriceScaleSelectionStrategy(this._targetStrategy)),this._chartModel.fullUpdate()}undo(){const e=this._chartModel.panes();for(let t=0;t{"use strict";i.d(t,{SetPriceScaleUnitUndoCommand:()=>o});var s=i(88537),r=i(35762),n=i(37667);class o extends r.UndoCommand{constructor(e,t,i,r){super(r),this._newSourcesUnits=new Map,this._oldSourcesUnits=new Map,this._showFade=!1,this._chartWidget=i;const o=i.model().mainSeries();for(const i of e.seriesLikeSources()){if(!i.isVisible()||!i.isActingAsSymbolSource().value())continue;const e=t||(0,n.symbolOriginalUnit)((0,s.ensureNotNull)(i.symbolInfo()),this._chartWidget.model().model().unitConversionEnabled());this._newSourcesUnits.set(i.id(),e),this._oldSourcesUnits.set(i.id(),i.unit()),this._showFade=this._showFade||i===o&&i.unit()!==e}}redo(){this._applyUnits(this._newSourcesUnits)}undo(){this._applyUnits(this._oldSourcesUnits)}_applyUnits(e){this._showFade&&this._chartWidget.screen.show();const t=this._chartWidget.model().model();e.forEach((e,i)=>{(0,s.ensureNotNull)(t.dataSourceForId(i)).setUnit(e)}),this._chartWidget.model().selectionMacro(e=>{e.clearSelection()})}}},870:(e,t,i)=>{"use strict";i.d(t,{SetScaleRatioPropertiesCommand:()=>o});var s=i(35762),r=i(88564),n=i(33291);class o extends s.UndoCommand{constructor(e,t,i,s){super(i),this._property=e,this._newValue=t,this._model=s,this._priceScale=this._model.mainSeries().priceScale(),this._oldValue=this._property.value(),this._oldMode=this._priceScale.mode()}redo(){this._oldValue=this._property.value(),this._oldMode=this._priceScale.mode(),(0,r.saveDefaultProperties)(!0),this._priceScale.setMode({autoScale:!1,percentage:!1,log:!1}),this._property.setValue(this._newValue),(0,r.saveDefaultProperties)(!1),this._model.recalculateAllPanes((0,n.viewportChangeEvent)()),this._model.lightUpdate()}undo(){(0,r.saveDefaultProperties)(!0),this._property.setValue(this._oldValue),this._priceScale.setMode(this._oldMode),(0,r.saveDefaultProperties)(!1),this._model.recalculateAllPanes((0,n.viewportChangeEvent)()),this._model.lightUpdate()}}},52546:(e,t,i)=>{"use strict";function s(e,t){const i=new Set,s=t=>{e.children(t,!1).forEach(e=>{i.has(e)||(i.add(e),s(e))})};return t.forEach(s),t.filter(e=>!i.has(e)).map(t=>function e(t,i){let s=[] +;const r=t.children(i,!1);for(let i=0;ie.concat(t),[])}i.d(t,{closeSourcesSet:()=>s})},13339:(e,t,i)=>{"use strict";i.d(t,{TimeScaleChangeUndoCommand:()=>o});var s=i(98125),r=i(35762);const n=(0,s.getLogger)("Chart.ChartUndoModel");class o extends r.UndoCommand{constructor(e,t,i){super(i,!1),this._newRightOffsetAndBarSpacing=null,this.setCustomFlag("doesnt_affect_save",!0),this._model=e,this._rightOffsetAndBarSpacing=t}undo(){if(null!==this._newRightOffsetAndBarSpacing)return void n.logDebug("TimeScaleChangeUndoCommand.undo: Command is already undone");const e=this._model.timeScale();this._newRightOffsetAndBarSpacing={barSpacing:e.barSpacing(),rightOffset:e.rightOffset()},e.setBarSpacing(this._rightOffsetAndBarSpacing.barSpacing),e.setRightOffset(this._rightOffsetAndBarSpacing.rightOffset),this._model.lightUpdate()}redo(){if(null===this._newRightOffsetAndBarSpacing)return void n.logDebug("TimeScaleChangeUndoCommand.redo: Command is not undone");const e=this._model.timeScale();e.setBarSpacing(this._newRightOffsetAndBarSpacing.barSpacing),e.setRightOffset(this._newRightOffsetAndBarSpacing.rightOffset),this._model.lightUpdate(),this._newRightOffsetAndBarSpacing=null}}},35762:(e,t,i)=>{"use strict";i.d(t,{UndoCommand:()=>r});var s=i(24980);class r{constructor(e,t=!0){this._customFlags={},this._text=e||new s.TranslatedString("",""),this._executeOnPush=t}text(){return this._text}executeOnPush(){return this._executeOnPush}customFlag(e){return this._customFlags[e]}setCustomFlag(e,t){this._customFlags[e]=t}canMerge(e){return!1}merge(e){throw new Error("Should be re-implemented in child classes")}}},52940:(e,t,i)=>{"use strict";i.d(t,{createUndoHistory:()=>u});var s=i(88537),r=i(44556),n=i(16757),o=i(35762);class a extends o.UndoCommand{constructor(e,t,i){super(i),this._wv=e,this._newValue=t,this._oldValue=e.value()}redo(){this._wv.setValue(this._newValue)}undo(){this._wv.setValue(this._oldValue)}}var l=i(98125),c=i(2872),h=i.n(c);const d=(0,l.getLogger)("Common.UndoHistory");function u(){const e=[],t=new r.UndoStack,i=new r.UndoStack,o=new(h());function l(s){if(e.length>0)e[e.length-1].addCommand(s);else{i.clear();const e=t.head(),r=e&&e.text().originalText();e&&e.canMerge(s)?e.merge(s):t.push(s);const n=s.text().originalText();""!==n&&n!==r&&d.logNormal("DO: "+n)}s.executeOnPush()&&s.redo(),e.length||o.fire(c())}function c(){const e=t.head(),s=i.head();return{enableUndo:!t.isEmpty(),undoText:void 0===e?void 0:e.text().translatedText(),enableRedo:!i.isEmpty(),redoText:void 0===s?void 0:s.text().translatedText()}}return{beginUndoMacro:function(t){const i=new n.UndoMacroCommand(t);return e.push(i),i},clearStack:function(){t.clear(),i.clear(),o.fire(c())},createUndoCheckpoint:function(){return{lastActualCommand:t.isEmpty()?null:t.head()}},endUndoMacro:function(){const t=(0,s.ensureDefined)(e.pop());t.isEmpty()||l(t)},pushUndoCommand:l,redo:function(){if(i.isEmpty())return!1;const e=i.pop();return!!e&&(e.redo(),t.push(e), +d.logNormal("REDO: "+e.text().originalText()),o.fire(c()),!0)},redoStack:function(){return i},setWatchedValue:function(e,t,i,s){if(e.value()!==t){const r=new a(e,t,i);r.setCustomFlag("doesnt_affect_save",!!s),l(r),r.redo()}},undo:function(){if(t.isEmpty())return!1;const e=t.pop();return!!e&&(e.undo(),i.push(e),d.logNormal("UNDO: "+e.text().originalText()),o.fire(c()),!0)},undoStack:function(){return t},undoToCheckpoint:function(e){for(;!t.isEmpty()&&e.lastActualCommand!==t.head();)t.pop().undo();i.clear(),o.fire(c())},state:c,onChange:function(){return o}}}},16757:(e,t,i)=>{"use strict";i.d(t,{UndoMacroCommand:()=>r});var s=i(35762);class r extends s.UndoCommand{constructor(e){super(e,!1),this._subcommands=[]}addCommand(e){this._subcommands.push(e)}isEmpty(){return 0===this._subcommands.length}redo(){for(let e=0;e=0;e--)this._subcommands[e].undo()}commands(){return this._subcommands}}},44556:(e,t,i)=>{"use strict";i.d(t,{UndoStack:()=>a});var s=i(35762),r=i(2872),n=i.n(r);const o=(0,i(98125).getLogger)("Common.UndoStack");class a{constructor(){this._commands=[],this._onChange=new(n())}onChange(){return this._onChange}isEmpty(){return 0===this._commands.length}clear(){this.isEmpty()||(this._commands.length=0,this._onChange.fire())}push(e){if(!(e instanceof s.UndoCommand))throw new TypeError("argument must be an instance of UndoCommand");this._commands.push(e),this._onChange.fire(e)}pop(){if(this.isEmpty())return void o.logDebug("pop: undo stack is empty");const e=this._commands.pop();return this._onChange.fire(e),e}head(){if(!this.isEmpty())return this._commands[this._commands.length-1]}}},36551:(e,t,i)=>{"use strict";i.d(t,{UnmergeDownUndoCommand:()=>o,UnmergeUpUndoCommand:()=>a,UnmergeToNewBottomPane:()=>l});var s=i(88537),r=i(21749);class n extends r.MoveSourceUndoCommand{constructor(e,t,i){super(e,t,i)}redo(){const e=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId)),t=(0,s.ensureNotNull)(this._chartModel.paneForSource(e)),i=this._chartModel.children(e,!0);t.bulkActionMacro(()=>{i.forEach(e=>this._chartModel.detachSource(e)),this._chartModel.detachSource(e)});const r=this._chartModel.createPane(this.targetPaneIndex()),n=r.findSuitableScale(e);r.bulkActionMacro(()=>{r.addDataSource(e,n,!1),i.forEach(e=>r.addDataSource(e,n,!1))}),(0,s.ensureNotNull)(e.priceScale()).restoreState(this._newPriceScaleState(r.isOverlay(e))),this._chartModel.fullUpdate(),this._chartModel.setShouldBeSavedEvenIfHidden(!0)}undo(){const e=(0,s.ensureNotNull)(this._chartModel.dataSourceForId(this._sourceId)),t=(0,s.ensureNotNull)(this._chartModel.paneForSource(e)),i=this._chartModel.children(e,!0);t.bulkActionMacro(()=>{i.forEach(e=>this._chartModel.detachSource(e));const t=this._chartModel.detachSource(e);(0,s.assert)(t,"Undo of detaching must remove pane")});const r=this._chartModel.panes()[this._initialPaneIndex];let n=r.getPriceScaleById(this._initialPriceScaleId) +;null===n&&(n=r.createPriceScaleAtPosition(this._initialPriceScalePosition,this._initialPriceScaleIndex)),r.bulkActionMacro(()=>{r.addDataSource(e,n,!0),i.forEach(e=>r.addDataSource(e,n,!1))}),(0,s.ensureNotNull)(e.priceScale()).restoreState(this._originalPriceScaleState()),this._chartModel.fullUpdate()}}class o extends n{constructor(e,t,i){super(e,t,i)}targetPaneIndex(){return this._initialPaneIndex+1}}class a extends n{constructor(e,t,i){super(e,t,i)}targetPaneIndex(){return this._initialPaneIndex}}class l extends n{constructor(e,t,i){super(e,t,i)}targetPaneIndex(){return this._chartModel.panes().length}}},79222:(e,t,i)=>{"use strict";i.d(t,{unitConvertibleGroups:()=>n,sourceNewUnitOnPinningToPriceScale:()=>o});var s=i(79680),r=i(37667);function n(e,t,i){const s=(0,r.symbolUnitConvertibleGroupsIfExist)(e,!0);if(null!==s)return s;const n=i.unitGroupById(t);return null===n?[]:[n]}function o(e,t,i,r){let o=null;if(i.unitConversionEnabled()&&(0,s.isSymbolSource)(e)){const s=i.availableUnits(),a=t.unit(s),l=e.unit(),c=null===l?[]:n(e.symbolInfo(),l,s);null!==a&&null!==a.selectedUnit&&!a.allUnitsAreOriginal&&a.selectedUnit!==l&&(r&&null===l||null!==l&&s.convertible(l,c))&&(o=a.selectedUnit)}return o}},10133:(e,t,i)=>{"use strict";i.d(t,{createVisibilityController:()=>l});var s=i(28353),r=i(32563),n=i(32255),o=i(56840);function a(e){return"alwaysOn"===e||"alwaysOff"===e?e:"visibleOnMouseOver"}function l(e,t){let i,l;function c(){if(!i){i=(0,n.createPrimitiveProperty)();let s=o.getValue(e);void 0===s&&void 0!==t&&(s=o.getValue(t)),i.setValue(a(s)),i.subscribe(i,t=>{o.setValue(e,a(t.value()))})}return i}return{property:c,availableValues:function(){return[{id:"visibleOnMouseOver",value:"visibleOnMouseOver",title:(0,s.t)("Visible on mouse over")},{id:"alwaysOn",value:"alwaysOn",title:(0,s.t)("Always visible")},{id:"alwaysOff",value:"alwaysOff",title:(0,s.t)("Always invisible")}]},actualBehavior:function(){if(!l){l=(0,n.createPrimitiveProperty)();const e=c(),t=()=>{let t=e.value();"alwaysOn"!==t&&"alwaysOff"!==t&&(t=r.mobiletouch?"alwaysOn":"visibleOnMouseOver"),l&&l.setValue(t)};e.subscribe(l,t),t()}return l}}}},62587:(e,t,i)=>{"use strict";i.r(t),i.d(t,{watermarkProperty:()=>h,restoreWatermarkPropertyDefaults:()=>d});var s=i(24377),r=i(56840),n=i(2015),o=i.n(n);const a={visibility:!1,color:"rgba(80, 83, 94, 0.25)"};function l(){const e=r.getJSON("symbolWatermark");let t=Object.assign({},a,e);if(void 0===e){if(void 0!==r.getJSON("chartproperties")){const e=r.getJSON("chartproperties").symbolWatermarkProperties;if(void 0!==e){const i=(0,s.tryParseRgba)(e.color);t=Object.assign(t,e),null!==i&&(0!==i[3]?t.visibility=!0:(i[3]=.25,t.color=(0,s.rgbaToString)(i)))}}delete t.transparency}return t}let c=null;function h(){return null===c&&(c=new(o())(l()),r.onSync.subscribe(null,()=>{null!==c&&c.mergeAndFire(l())}),c.listeners().subscribe(null,()=>{null!==c&&r.setJSON("symbolWatermark",c.state())})),c}function d(){null!==c&&c.mergeAndFire(a)}},39094:(e,t,i)=>{"use strict" +;var s=i(35218).translatedIntervalString,r=i(1570).getTranslatedSymbolDescription,n=i(22799).CHART_FONT_FAMILY,o=i(62587),a=o.watermarkProperty,l=o.restoreWatermarkPropertyDefaults,c=i(93435).drawScaled,h=i(59803).applyDefaultsOverrides,d=i(59803).applyPropertiesOverrides;t.Watermark=function(e,t){var i={},o=a();function u(e,t){var s=e.font;return i.hasOwnProperty(s)||(i[s]={}),i[s].hasOwnProperty(t)||(i[s][t]=e.measureText(t).width),i[s][t]}h(o,void 0,!1,"symbolWatermarkProperties"),o.listeners().subscribe(this,(function(){e.updateSource(this)})),this.destroy=function(){o.listeners().unsubscribeAll(this)},this.properties=function(){return o},this.restorePropertiesDefaults=function(){l()},this.applyOverrides=function(e){d(o,void 0,!1,e,"symbolWatermarkProperties")};var p={renderer:function(e,i){return{draw:function(a,l){c(a,l.pixelRatio,(function(){var l=t.symbolInfo();a.fillStyle=o.color.value();var c,h=l.name;/QUANDL/.test(l.exchange)&&((c=h.split(/\//)).length&&(h=c[c.length-1]));for(var d={description:l.description,short_description:l.short_description,pro_name:l.pro_name,short_name:l.name,local_description:l.local_description,language:l.language},p=[{text:h?h+", "+s(t.interval()):"",font:"96px "+n,lineHeight:117,vertOffset:0},{text:r(d)||"",font:"48px "+n,lineHeight:58,vertOffset:5}],_=0,m=0;mi?i/g:1,_+=v.lineHeight*v.zoom}}var f=Math.max((e-_)/2,0);for(m=0;m{"use strict";i.d(t,{reorderDataSourcesStateZOrder:()=>S,newLineToolZOrder:()=>w,newStudyZOrder:()=>C,moveAfterSource:()=>E,moveBeforeSource:()=>k});var s=i(14291),r=i(81851),n=i(56972),o=i(50669),a=i(55257);function l(e){return(0,s.isLineTool)(e)&&!e.isSpeciallyZOrderedSource()}function c(e){return(0,r.isStudy)(e)&&!e.isSpeciallyZOrderedSource()}function h(e,t){return e.zorder-t.zorder}function d(e,t){(0,o.isMainSeriesState)(e)?e.zorder=0:e.zorder=t}function u(e,t){e.setZorder(t)}function p(e){return e.zorder()}function _(e){return Math.round(1e3*e)/1e3}function m(e,t){const i=Math.max(e,t),s=Math.min(e,t);return Math.max(0,Math.ceil(i)-Math.floor(s)-1)}function g(e,t,i){let s=0;const r=(n=t,o=e,Math.abs(1e3*o-1e3*n)/1e3);var n,o,a;return r>i?(e=Math.trunc(e),s=Math.floor(r/(i+1))):(a=r/(i+1),s=Math.floor(1e3*a)/1e3),{startZOrder:e,zOrderStep:s}}function f(e,t,i,s){let r=e.length,n=t;for(let t=e.length-1;t>=-1;t--)if(-1===t||s(e[t])){const s=t;let o=T(n);if(r-1===s)s>=0&&i(e[s],o);else{const t=m(r,s);let a=0;for(;0===a;){const e=g(n,o,t);n=e.startZOrder,a=e.zOrderStep,0===a&&(o-=1e4,0===o&&(o-=1e4))}let l=r-1;for(;l>s;){const t=_(n-a);i(e[l],t),n=t,l--}s>=0&&i(e[s],o)}n=o,r=s}}function v(e,t,i,s){let r=-1,n=t +;for(let t=0;t<=e.length;t++)if(t===e.length||s(e[t])){const s=t;let o=P(n);if(r+1===s)s<=e.length-1&&i(e[s],o);else{const t=m(r,s);let a=0;for(;0===a;){const e=g(n,o,t);n=e.startZOrder,a=e.zOrderStep,0===a&&(o+=1e4,0===o&&(o+=1e4))}let l=r+1;for(;l<=s-1;){const t=_(n+a);i(e[l],t),n=t,l++}s<=e.length-1&&i(e[s],o)}n=o,r=s}}function S(e){!function(e,t,i,s,r,n){let o=null;const a=[];for(const r of e)t(r)?(a.push(r),o=r):(i(r)||s(r))&&a.push(r);a.sort(n),null!==o&&r(o,0);const l=null===o?-1:a.indexOf(o);-1!==l?(f(a.slice(0,l),0,r,i),v(a.slice(l+1),0,r,i)):v(a,0,r,i)}(e,o.isMainSeriesState,o.isStudyState,o.isLineToolState,d,h)}function y(e,t){const i=Math.floor(e/1e4);let s=t.get(i);return void 0===s&&(s=[],t.set(i,s)),s}function b(e,t,i,s,r,n){let o=-1/0,a=1/0,l=-1/0,c=0;const h=new Map;for(let s=0;sr(e)-r(t));let p=T(r(u[0]));const m=P(p),f=g(p,m,u.length+1).zOrderStep;return 0!==f?(u.forEach(e=>{const t=_(p+f);s(e,t),p=t}),_(p+f)):_(m+5e3)}function w(e,t){return b(e,l,c,u,p,t)}function C(e){let t=-1e4;for(const i of e)c(i)&&(t=Math.min(t,i.zorder()-1e4));return 0===t?-1e4:t}function P(e){const t=1e4*Math.ceil(e/1e4);return t===e?t+1e4:t}function T(e){const t=1e4*Math.floor(e/1e4);return t===e?t-1e4:t}function x(e,t,i,s,r,n,o){const l=t.length,{newItems:c,movedItemsStartIndex:h}=i>0?(0,a.moveAfter)(e,t,i-1):(0,a.moveBefore)(e,t,0);let d=!1;for(let t=h;tr(e))?function(e,t,i,s,r,n){let o,a,l=-1,c=-1;0===i?(c=I(e,i+t,s),a=n(e[c])):i+t===e.length?(l=M(e,i-1,s),o=n(e[l])):(l=M(e,i-1,s),o=n(e[l]),c=I(e,i+t,s),a=n(e[c]));if((void 0===o||o<0)&&void 0!==a&&a<=0)f(e.slice(0,c),a,r,s);else if((void 0===a||a>0)&&void 0!==o&&o>=0)v(e.slice(l+1),o,r,s);else{const n=i+t,o=e.length-i;n0)&&void 0!==a&&a>=0){c=a;const e=void 0!==l?l:P(a),s=g(c,e,t);c=s.startZOrder,p=s.zOrderStep,d=i,u=d+t,h=1}if(0!==p)for(;d!==u;){const t=_(c+h*p);n(e[d],t),c=t,d+=h}else{const t=e.findIndex(e=>r(e));-1!==t?(f(e.slice(0,t),0,n,s),v(e.slice(t+1),0,n,s)):v(e,0,n,s)}}(c,l,h,r,s,n,o)}function I(e,t,i){for(;t=0&&i(e[t]);)t--;return Math.max(0,t)}function L(e,t,i,s,r,n,o){const a=e.indexOf(i)+1 +;x(e,t,a,s,r,n,o)}function A(e,t,i,s,r,n,o){const a=e.indexOf(i);x(e,t,a,s,r,n,o)}function E(e,t,i){L(e,t,i,n.isSeries,c,u,p)}function k(e,t,i){A(e,t,i,n.isSeries,c,u,p)}},89453:(e,t,i)=>{"use strict";i.d(t,{setSymbolSearchCompleteOverrideFunction:()=>r,getSymbolSearchCompleteOverrideFunction:()=>n});let s=e=>Promise.resolve(e);function r(e){s=e}function n(){return s}},67072:(e,t,i)=>{"use strict";e=i.nmd(e);var s=i(2015),r=i(98125).getLogger("Chart.Study.MetaInfo"),n=i(59572).applyOverridesToStudyDefaults,o={};function a(e){TradingView.merge(this,{palettes:{},inputs:[],plots:[],graphics:{},defaults:{}}),TradingView.merge(this,e);var t=e.fullId||e.id;TradingView.merge(this,a.parseIdString(t))}a.VERSION_STUDY_ARG_SOURCE=41,a.METAINFO_FORMAT_VERSION_SOS_V2=42,a.VERSION_PINE_PROTECT_TV_4164=43,a.CURRENT_METAINFO_FORMAT_VERSION=52,a.VERSION_NEW_STUDY_PRECISION_FORMAT=46,a.CHILD_STUDY_ALLOWED_PLOT_TYPES=["line"],a.canPlotBeSourceOfChildStudy=function(e){return a.CHILD_STUDY_ALLOWED_PLOT_TYPES.includes(e)},a.CHILD_STUDY_EXCLUDE_IDS=["CorrelationCoefficient@tv-basicstudies","Correlation - Log@tv-basicstudies-1"],a.CHILD_STUDY_PARENT_EXCLUDE_IDS=[],a.FilledArea={},a.FilledArea.TYPE_PLOTS="plot_plot",a.FilledArea.TYPE_HLINES="hline_hline",a.versionOf=function(e){var t="_metainfoVersion"in e&&isNumber(e._metainfoVersion)?e._metainfoVersion:0;return t<0&&r.logError("Metainfo format version cannot be negative: "+t),t},a.parseIdString=function(e){var t={};if(-1===e.indexOf("@"))t.shortId=e,t.packageId="tv-basicstudies",t.id=e+"@"+t.packageId,t.version=1;else{var i=e.split("@");t.shortId=i[0];var s=i[1].split("-");if(3===s.length)t.packageId=s.slice(0,2).join("-"),t.id=t.shortId+"@"+t.packageId,t.version=s[2];else if(1===s.length&&"decisionbar"===s[0])t.packageId="les-"+s[0],t.id=t.shortId+"@"+t.packageId,t.version=1;else{if(1!==s.length)throw new Error("unexpected study id:"+e);t.packageId="tv-"+s[0],t.id=t.shortId+"@"+t.packageId,t.version=1}}if(t.fullId=t.id+"-"+t.version,"tv-scripting"===t.packageId){var r=t.shortId;if(0===r.indexOf("Script$")||0===r.indexOf("StrategyScript$")){var n=r.indexOf("_");t.productId=n>=0?r.substring(0,n):t.packageId}else t.productId=t.packageId}else t.productId=t.packageId;return t},a.getPackageName=function(e){return(/^[^@]+@([^-]+-[^-]+)/.exec(e||"")||[0,"tv-basicstudies"])[1]},a.cutDollarHash=function(e){var t=e.indexOf("$"),i=e.indexOf("@");return-1===t?e:e.substring(0,t)+(i>=0?e.substring(i):"")},a.hasUserIdSuffix=function(e){return/^USER;[\d\w]+;\d+$/.test(e)},a.isStandardPine=function(e){return/^(Strategy)?Script\$STD;.*@tv-scripting$/.test(e)},a.getSourceIdByInputs=function(e,t){if(!Array.isArray(e)||!t)return null;for(var i=0;i0){var l=o.replace(/^[^\$]+/,t);i.inputs[n.id].setValue(l)}}}},a.patchChildStudyMetaInfoState=function(e){e.state&&function e(t){if("object"==typeof t)for(var i in t)"string"==typeof t[i]&&/^[^\$]+\$\d+$/.test(t[i])?t[i]=t[i].replace(/^[^\$]+/,"{pid}"):e(t[i])}(e.state.inputs),e.state.isChildStudy=!0},a.getStudyIdWithLatestVersion=function(e){const t=a.cutDollarHash(e.id);let i=t;return t.indexOf("@tv-scripting")>=0?i+="-101!":i+="-"+e.version,i},a.prototype.parseValue=function(e,t){return"bool"===e?TradingView.parseBool(t):t},a.prototype.defaultInputs=function(){for(var e=[],t=0;t0?e[0].id:null},a.prototype.createDefaults=function(){if(this.defaults){var e=TradingView.clone(this.defaults);e.precision="default";var t=a.getStudyPropertyRootName(this);defaults.create(t,e)}},a.prototype.removeDefaults=function(){defaults.remove(a.getStudyPropertyRootName(this))},a.findStudyMetaInfoByDescription=function(e,t){if(e){for(var i=0;i{"use strict";window.TradingView=window.TradingView||{},window.requireAll=function(e){return e.keys().map(e)},i(28353),i(32563).setClasses(),i(9196),i(56186).install(),i(49483),i(80643),i(29892),i(94419),i(11417),i(11372),i(37562),i(56840)},97881:(e,t,i)=>{"use strict";var s=i(28353).t;i(70606);var r=i(88537).assert;i(96488),i(59803),i(87980);const n=i(67337);JSON.parse(urlParams.disabledFeatures).forEach((function(e){n.setEnabled(e,!1)})),JSON.parse(urlParams.enabledFeatures).forEach((function(e){n.setEnabled(e,!0)})),function(){window.__settingsOverrides=window.parent[window.urlParams.uid].settingsOverrides||{};var e=window.parent[window.urlParams.uid].settingsAdapter;null!=e?(TVSettings.setSettingsAdapter(e),TVSettings.sync()):n.enabled("use_localstorage_for_settings")&&TVSettings.sync()}();var o=i(22799).setChartFontFamily;window.urlParams.customFontFamily&&o(window.urlParams.customFontFamily);var a=i(84120).RestrictedToolsetBootloader,l=i(9753).HeaderToolbarBootloader,c=i(84746).DrawingToolbarBootloader,h=i(85593).isDrawingToolbarVisible;(0,i(32563).setClasses)();var d=i(6087),u=i(45345).setTheme,p=i(33225),_=i(17437),m=i(25760),g=i(47193).migrateShortcut,f=i(76900).ChartSaver,v=i(41051).SaveChartService,S=i(86879).LoadChartService,y=i(46723).StudyTemplates,b=i(22668).FavoriteStudyTemplateService,w=i(82992).linking,C=i(76422),P=i(97098).formatterOptions,T=i(69147).customFormatters,x=i(34615).StudyMarket,I=i(21097).TVXWindowEvents,M=i(81836).createDeferredPromise,L=i(15840).deepExtend,A=i(9423).randomHash,E=i(65576).convertPropertyToWatchedValue,k=i(95707).property,D=i(62428).property,V=i(21761).dateFormatProperty,B=i(43370).default,N=i(29823).Interval,R=i(89356).Root,O=i(28325).ChartPage,F=i(39138).destroyQuoteSessions,W=i(73383).TIMEFRAMETYPE,H=new O(new R(window).allocate()),z=H.allocate({areaName:"center"}),U=(window.parent[urlParams.uid].brokerFactory,Boolean(!1)),j=i(54427).CHART_WIDGET_COLLECTION_SERVICE,G=i(16216);i(65235);var q=i(43425),Y=i(12409).createFavoriteDrawingToolbar,K=i(77317).setupChartEventHint,$=i(81602).setupChartScreenshotHint,X=i(87983),Z=i(67072),J=i(28399);i(27595),i(15495) +;var Q=i(78136).setSearchRequestDelay,ee=i(16654),te=i(216),ie=i(17937).addBrandingSource,se=i(13221).setAdditionalSymbolInfoFields,re=i(89453).setSymbolSearchCompleteOverrideFunction,ne=i(52741).DropdownApi,oe=i(97056).ContextMenuManager;const ae=new AbortController;var le=window.parent[urlParams.uid].getCustomIndicators,ce=M(),he=M(),de=n.enabled("left_toolbar");if(void 0!==window.parent[urlParams.uid].contextMenu){var ue=window.parent[urlParams.uid].contextMenu;void 0!==ue.items_processor&&oe.setCustomItemsProcessor(ue.items_processor),void 0!==ue.renderer_factory&&oe.setCustomRendererFactory(ue.renderer_factory)}if(Promise.all([ce.promise,he.promise]).then((function(){window.ChartApiInstance.start()})),"function"==typeof le){var pe=le(te);pe&&pe.then?pe.then((function(e){if(!Array.isArray(e))return console.warn("custom_indicators_getter should be a function that returns a Promise object which result is an array of custom indicators"),void ce.resolve();JSServer.studyLibrary.push.apply(JSServer.studyLibrary,e),ce.resolve(),console.log("{0} custom indicators loaded.".format(e.length))})).catch((function(e){console.warn("Error loading custom indicators "+e),ce.resolve()})):(console.warn("custom_indicators_getter should be a function that returns a Promise object"),ce.resolve())}else ce.resolve();window.widgetReady=function(e){C.subscribe("onChartReady",e)};var _e=urlParams.theme&&urlParams.theme.toLowerCase();function me(e){window.__defaultsOverrides=window.__defaultsOverrides||{},L(window.__defaultsOverrides,e),void 0!==TradingView.defaultProperties&&void 0!==TradingView.defaultProperties.chartproperties&&(window.applyDefaultsOverrides(TradingView.defaultProperties.chartproperties),window.applyDefaultOverridesToLinetools())}!function(e){d.themes[e]&&u(e)}(_e),window.applyStudiesOverrides=function(e){e&&(window.chartWidgetCollection?window.chartWidgetCollection.applyStudiesOverrides(e):Z.mergeDefaultsOverrides(e))},window.applyOverrides=function(e){me(e),window.chartWidgetCollection&&window.chartWidgetCollection.applyOverrides(e)},window.doWhenApiIsReady=function(e){window.tradingViewApi?e():he.promise.then(e)},window.applyTradingCustomization=function(e){for(var t in e.order)TradingView.defaultProperties.linetoolorder[t]=e.order[t];for(var t in e.position)TradingView.defaultProperties.linetoolposition[t]=e.position[t]},window.changeTheme=function(e,t){var i=d.themes[e.toLowerCase()];return i?window.tradingViewApi.themes().setStdTheme(i.name,!0,t&&t.disableUndo):Promise.resolve()},window.getTheme=function(){return window.tradingViewApi.themes().getCurrentThemeName()},window.is_authenticated=!1;JSON.parse(window.urlParams.brokerConfig);s("charts by TradingView"),s("powered by TradingView"),s("by TradingView");var ge=null,fe=M(),ve=null,Se=function(){if(n.setEnabled("charting_library_debug_mode","true"===urlParams.debug),n.setEnabled("chart_property_page_trading",!1),n.enabled("remove_library_container_border")){var e=document.querySelector("#library-container");null!==e&&(e.style.border="0px",e.style.padding="1px")} +n.enabled("no_min_chart_width")&&(window.document.body.style.minWidth="0px"),null!=urlParams.studiesOverrides&&Z.mergeDefaultsOverrides(JSON.parse(urlParams.studiesOverrides)),r(void 0===TradingView.defaultProperties,"Default properties are inited before applying overrides"),me(JSON.parse(urlParams.overrides)),urlParams.numeric_formatting=urlParams.numeric_formatting&&JSON.parse(urlParams.numeric_formatting),urlParams.numeric_formatting&&"string"==typeof urlParams.numeric_formatting.decimal_sign&&(P.decimalSign=urlParams.numeric_formatting.decimal_sign[0]),window.ChartApiInstance=new X(window.parent[urlParams.uid].datafeed),window.parent[urlParams.uid].customFormatters&&(window.parent[urlParams.uid].customFormatters.timeFormatter&&(T.timeFormatter=window.parent[urlParams.uid].customFormatters.timeFormatter),window.parent[urlParams.uid].customFormatters.dateFormatter&&(T.dateFormatter=window.parent[urlParams.uid].customFormatters.dateFormatter),window.parent[urlParams.uid].customFormatters.tickMarkFormatter&&(T.tickMarkFormatter=window.parent[urlParams.uid].customFormatters.tickMarkFormatter),window.parent[urlParams.uid].customFormatters.priceFormatterFactory&&(T.priceFormatterFactory=window.parent[urlParams.uid].customFormatters.priceFormatterFactory),window.parent[urlParams.uid].customFormatters.studyFormatterFactory&&(T.studyFormatterFactory=window.parent[urlParams.uid].customFormatters.studyFormatterFactory)),window.ChartApiInstance.setStudiesAccessController(window.ChartApiInstance.createStudiesAccessController(urlParams.studiesAccess));var t=urlParams.chartContent?JSON.parse(urlParams.chartContent).json:void 0,o=urlParams.chartContentExtendedData?JSON.parse(urlParams.chartContentExtendedData):t?t.extendedData:void 0,u=urlParams.interval||"D",_=function(e){var t=/(\d+)(\w+)/;return e.map((function(e){var i=t.exec(e.text),r=i[2].toLowerCase(),n=parseInt(i[1]),o="y"===r?12*n+"M":n+r,a=N.parse(e.resolution);return{text:s(e.title)||n+s(r,{context:"dates",count:n}),description:e.description||"",value:{value:o.toUpperCase(),type:W.PeriodBack},targetResolution:a.value(),requiresIntraday:a.isIntraday()}}))}(JSON.parse(urlParams.timeFrames)),m={resizerBridge:z,padding:n.enabled("border_around_the_chart")?2:0,content:t,widgetOptions:{addToWatchlistEnabled:!1,hideIdeas:!0,addVolume:window.ChartApiInstance.studiesAccessController.isToolEnabled("Volume"),muteSessionErrors:!0,timezone:urlParams.timezone,defSymbol:urlParams.symbol,defInterval:u,compareSymbols:urlParams.compareSymbols&&JSON.parse(urlParams.compareSymbols),defTimeframe:window.parent[urlParams.uid].timeframe,paneContextMenuEnabled:n.enabled("pane_context_menu"),paneContextMenu:{mainSeriesTrade:U},priceScaleContextMenuEnabled:n.enabled("scales_context_menu"),currencyConversionEnabled:n.enabled("pricescale_currency"),unitConversionEnabled:n.enabled("pricescale_unit"),legendWidgetEnabled:n.enabled("legend_widget"),legendWidget:{contextMenu:{settings:n.enabled("show_chart_property_page"),showOpenMarketStatus:n.enabled("display_market_status")}},sourceStatusesWidget:{ +errorSolution:!1},marketStatusWidgetEnabled:n.enabled("display_market_status"),chartWarningWidget:{subscriptionFullInfo:!1},timeScaleWidget:{contextMenuEnabled:n.enabled("scales_context_menu"),timezoneMenuEnabled:n.enabled("timezone_menu"),priceAxisLabelsOptions:{showLabels:n.enabled("main_series_scale_menu")}},timeScale:{preserveBarSpacing:!1,lockVisibleTimeRangeOnResize:n.enabled("lock_visible_time_range_on_resize"),rightBarStaysOnScroll:n.enabled("right_bar_stays_on_scroll"),minBarSpacing:urlParams.time_scale&&JSON.parse(urlParams.time_scale).min_bar_spacing},goToDateEnabled:n.enabled("go_to_date"),crossHair:{menuEnabled:n.enabled("chart_crosshair_menu")},handleScale:{mouseWheel:n.enabled("mouse_wheel_scale"),pinch:n.enabled("pinch_scale"),axisPressedMouseMove:{time:n.enabled("axis_pressed_mouse_move_scale"),price:n.enabled("axis_pressed_mouse_move_scale")}},handleScroll:{mouseWheel:n.enabled("mouse_wheel_scroll"),pressedMouseMove:n.enabled("pressed_mouse_move_scroll"),horzTouchDrag:n.enabled("horz_touch_drag_scroll"),vertTouchDrag:n.enabled("vert_touch_drag_scroll")},shiftVisibleRangeOnNewBar:n.enabled("shift_visible_range_on_new_bar"),croppedTickMarks:n.enabled("cropped_tick_marks"),countdownEnabled:n.enabled("countdown"),indicatorsDialogShortcutEnabled:n.enabled("insert_indicator_dialog_shortcut")},seriesControlBarEnabled:n.enabled("timeframes_toolbar"),seriesControlBar:{timeFramesWidgetEnabled:!0,timeFramesWidget:{goToDateEnabled:n.enabled("go_to_date"),availableTimeFrames:function(e,t){return e?t!==ee.STATUS_DELAYED&&t!==ee.STATUS_DELAYED_STREAMING&&t!==ee.STATUS_READY?[]:_.filter((function(t){return!(t.requiresIntraday&&!e.has_intraday)&&!(e.supported_resolutions&&!e.supported_resolutions.includes(t.targetResolution))})):[]}},timeWidgetEnabled:!0,timeWidget:{timezoneMenuEnabled:n.enabled("timezone_menu")},adjustForDividendsButtonEnabled:!1,sessionIdButtonEnabled:n.enabled("pre_post_market_sessions"),backAdjustmentButtonEnabled:!1,settlementAsCloseButtonEnabled:!1,percentageScaleButtonEnabled:!0,logScaleButtonEnabled:!0,autoScaleButtonEnabled:!0,fullscreenButtonEnabled:!0,mobileChangeLayoutEnabled:!1},globalEvents:!0,snapshotUrl:urlParams.snapshotUrl,mobileForceChartMaximizeEnabled:!1,saveChartEnabled:n.enabled("save_shortcut")};de&&(Y(),m.widgetOptions.isDrawingToolbarVisible=h),o&&(m.metaInfo={id:o.uid,name:o.name,description:o.description,uid:o.uid,username:"",tags:""}),window.parent[urlParams.uid].additionalSymbolInfoFields&&se(window.parent[urlParams.uid].additionalSymbolInfoFields),window.parent[urlParams.uid].symbolSearchComplete&&re(window.parent[urlParams.uid].symbolSearchComplete);var g=window.chartWidgetCollection=new q(m);let M=!1;g.onAboutToBeDestroyed.subscribe(null,()=>{M=!0},!0),ie(g),window.studyMarket=new x(g),void 0!==G&&G.registerService(j,g),g.activeChartWidget.subscribe((function(e){C.emit("activeChartChanged",g.getAll().indexOf(e))})),window.saver=new f(g);var L=new v(g,window.saver),A=new S(g);window.chartWidget=g.activeChartWidget.value(),window.pro=new TradingView.Pro +;var E=function(e){if(!n.enabled("header_widget"))return null;var t=H.allocate({areaName:"top"}),s=new(0,i(68425).ChartChangesWatcher)(e.chartWidgetCollection.undoHistory,e.chartWidgetCollection.lineToolsSynchronizerHasChanges,window.saver,C),r=JSON.parse(urlParams.favorites);r.intervals=r.intervals.map((function(e){var t=""+e;return t.match(/1[DWMYdwmy]/)&&(t=t.slice(1)),t}));var o=null;n.enabled("study_templates")&&(o=new b(I,TVSettings),ve=new y({chartWidgetCollection:e.chartWidgetCollection,favoriteStudyTemplatesService:o}));var c=void 0,h=urlParams.header_widget_buttons_mode;"fullsize"===h&&(c=["full"]);"compact"===h&&(c=["small"]);return new l(new a,{chartSaver:window.saver,chartApiInstance:ChartApiInstance,chartWidgetCollection:e.chartWidgetCollection,defaultFavoriteStyles:r.chartTypes,defaultFavoriteIntervals:r.intervals,hideStudyTemplates:!0,resizerBridge:t,studyMarket:window.studyMarket,studyTemplates:ve,favoriteStudyTemplatesService:o,allowedModes:c,saveChartService:e.saveChartService,loadChartService:e.loadChartService,chartChangesWatcher:s,onClick:Me,snapshotUrl:e.snapshotUrl})}({chartWidgetCollection:g,saveChartService:L,loadChartService:A,snapshotUrl:urlParams.snapshotUrl});null!==E?E.load().then((function(e){ge=e.getComponent(),fe.resolve()})):(fe.promise.catch((function(){})),fe.reject("header widget is not loaded"));var k=function(e){if(de){var t=urlParams.toolbarbg&&/^[0-9a-f]+$/i.test(urlParams.toolbarbg)?String(urlParams.toolbarbg):void 0;if(t){var i=document.createElement("style");i.textContent="body,.chart-controls-bar,#footer-chart-panel{background-color:#"+t+" !important}",document.head.appendChild(i)}return new c({bgColor:t,chartWidgetCollection:e,drawingsAccess:urlParams.drawingsAccess?JSON.parse(urlParams.drawingsAccess):void 0,resizerBridge:H.allocate({areaName:"left"}),onClick:Me})}return null}(g),D=null;window.tradingViewApi=new J({chartWidgetCollection:g,chartApiInstance:window.ChartApiInstance,saveChartService:L,loadChartService:A});if(w.bindToChartWidgetCollection(g),TradingView.isNaN(urlParams.studyCountLimit)||(TradingView.STUDY_COUNT_LIMIT=Math.max(2,+urlParams.studyCountLimit)),!TradingView.isNaN(urlParams.ssreqdelay)){var V=Math.max(0,+urlParams.ssreqdelay);Q(V)}window.ChartApiInstance.connect(),Promise.all([i.e(5514),i.e(9129),i.e(2e3),i.e(6363),i.e(3466),i.e(7836),i.e(8463),i.e(3921),i.e(7427),i.e(1112),i.e(6909),i.e(5998),i.e(6416),i.e(7419),i.e(3520),i.e(9042),i.e(323),i.e(2849),i.e(880),i.e(1075),i.e(9505),i.e(1890),i.e(1784),i.e(7210),i.e(2306)]).then(i.t.bind(i,87805,23)).then(({default:e})=>{M||(window.lineToolPropertiesToolbar=new e(g))});var R=document.querySelector(".tv-content");function O(){k&&k.load(ae.signal),D&&D.load(ae.signal).then((function(e){window.footerWidget=e.getComponent()}))}null!==R&&R.addEventListener("contextmenu",(function(e){null!==e.target&&"input"!==e.target.tagName.toLowerCase()&&"textarea"!==e.target.tagName.toLowerCase()&&e.preventDefault()})),he.resolve(),g.undoHistory.undoStack().onChange().subscribe(null,B((function(e){ +e&&!e.customFlag("doesnt_affect_save")&&C.emit("onAutoSaveNeeded")}),1e3*(urlParams.autoSaveDelay||5),{leading:!1,trailing:!0})),window.chartWidget.withModel(null,(function(){if(ChartApiInstance.on("realtime_tick",(function(e){C.emit("onTick",e)})),!d.savedThemeName()&&_e){var e=d.getStdTheme(_e);e&&e.content&&void 0===t&&g.applyTheme({theme:e.content,onlyActiveChart:!1,restoreNonThemeDefaults:!1,themeName:_e,standardTheme:!0,syncState:!0,noUndo:!0}).then(()=>window.applyOverrides(window.__defaultsOverrides))}n.enabled("charting_library_debug_mode")&&C.subscribeToAll((function(){var e=Array.prototype.slice.call(arguments);console.log('Event "{0}", arguments: {1}'.format(e[0],JSON.stringify(e.slice(1))))})),K&&(K(g),K=null),$&&($(g,{seriesControlBarEnabled:n.enabled("timeframes_toolbar")}),$=null)})),p.isAnyChartWidgetInitialized(g)?O():p.waitAnyChartWidgetInitialized(g,O),C.subscribe("chart_load_requested",(function(e){window.tradingViewApi.loadChart({json:JSON.parse(e.content),extendedData:e})}))};window.addEventListener("unload",(function(){ae.abort(),window.widgetbar&&(window.widgetbar.destroy(),window.widgetbar=null),window.chartWidgetCollection&&(window.chartWidgetCollection.destroy(),window.chartWidgetCollection=null),window.ChartApiInstance&&window.ChartApiInstance.disconnect(),F(),window.ChartApiInstance&&(window.ChartApiInstance.destroy(),window.ChartApiInstance=null)})),n.enabled("saveload_storage_customization")&&(window.parent[urlParams.uid].saveLoadAdapter?_.setCustomAdapter(window.parent[urlParams.uid].saveLoadAdapter):void 0!==urlParams.chartsStorageUrl&&urlParams.chartsStorageUrl&&void 0!==urlParams.clientId&&urlParams.clientId?_.initialize(urlParams.clientId,urlParams.userId,urlParams.chartsStorageUrl,urlParams.chartsStorageVer||"1.0"):(n.setEnabled("saveload_storage_customization",!1),n.setEnabled("header_saveload",!1)));var ye=M();function be(){ye.resolve()}window.parent[urlParams.uid].loadLastChart&&n.enabled("saveload_storage_customization")?_.getCharts().then((function(e){if(0!==e.length){var t=e.sort((function(e,t){return t.modified_iso-e.modified_iso}))[0];_.getChartContent(t).then((function(e){var t=JSON.parse(e.content);t.extendedData=e,urlParams.chartContent=JSON.stringify({json:t}),be()})).catch(be)}else be()})).catch(be):be();var we,Ce,Pe=M();Promise.all([Pe.promise,ye.promise,window.loadedCustomCss]).then((function(){var e,t,i,s,r,o,a=document.querySelector(".loading-indicator");if(a&&(a.style.display="none"),setTimeout(Se,0),n.enabled("14851")&&Math.random()<=.02){e=window,t=document,i="script",s="ga",e.GoogleAnalyticsObject=s,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,r=t.createElement(i),o=t.getElementsByTagName(i)[0],r.async=1,r.src="//www.google-analytics.com/analytics.js",o.parentNode.insertBefore(r,o);var l=document.URL.match(new RegExp("(:?.*://)([^/]+)/.*"))[2];ga("create","UA-112911840-1","auto"),ga("set","anonymizeIp",!0),ga("set",{hostname:l,page:l,referrer:l}),ga("send","pageview")}})),we=!0, +window.parent[urlParams.uid].datafeed.onReady((function(e){we&&console.warn("`onReady` should return result asynchronously. Use `setTimeout` with 0 interval to execute the callback function."),window.configurationData=e,Pe.resolve()})),we=!1,window.getFunctionFromArguments=function(e){return window.parent[urlParams.uid][e]},window.createShortcutAction=(Ce=m.createGroup({desc:"API"}),function(e,t){Ce.add({hotkey:g(e),handler:t})}),window.initializationFinished=function(){window.chartWidgetCollection.undoHistory.clearStack()},window.headerReady=function(){return fe.promise},window.createButton=function(e){if(null===ge)throw new Error("Cannot create button: header widget is not ready or is not loaded - use `headerReady` to wait until header is ready");return(e=e||{}).align=e.align||"left",e.useTradingViewStyle=e.useTradingViewStyle||!1,ge.addButton(A(),e)},window.createDropdown=function(e){if(void 0===e)throw new Error("Cannot create dropdown without any parameters. Please refer to the documentation");void 0===e.align&&(e.align="left");const t=A();return ge?(ge.addDropdown(t,e),Promise.resolve(new ne(ge,t))):fe.promise.then(()=>(ge.addDropdown(t,e),new ne(ge,t)))},window.getAllFeatures=function(){const e=n.getAllFeatures();return Object.keys(e).forEach((function(t){isNaN(parseFloat(t))||delete e[t]})),e};var Te=null;window.getNavigationButtonsVisibility=function(){return null===Te&&(Te=E(k())),Te};var xe=null;window.getPaneButtonsVisibility=function(){return null===xe&&(xe=E(D())),xe};var Ie=null;function Me(e){var t=TradingView.bottomWidgetBar;t&&t.turnOffMaximize()}window.getDateFormat=function(){return null===Ie&&(Ie=E(V)),Ie}},11372:(e,t,i)=>{e=i.nmd(e),TradingView.cleanButAmpersand=function(e,t){var i=t?["&"]:["&"];return TradingView.clean(e,t,i)},TradingView.strip_tags=function(e){return e&&e.replace?e.replace(/(<([^>]+)>)/gi,""):e},TradingView.encodeSpread=function(e){return encodeURIComponent(e)},TradingView.clean=function(e,t,i){var s=[["&","&"],["<","<"],[">",">"],['"',"""],["'","'"],["'","'"]],r=e;if(!e||!e.replace)return r;for(var n=0;n{"use strict";i.r(t);var s=i(21097),r=i(51768),n=i(38780);function o(e,t=!1){"loading"!==document.readyState?t?setTimeout(()=>e(),1):e():document.addEventListener("DOMContentLoaded",()=>e())}new Promise(e=>{o(e)});function a(e,t="x"){let i=!1;return"x"!==t&&"both"!==t||(i=i||e.offsetWidth{document.addEventListener("mouseenter",e=>{const t=e.target;if(t instanceof HTMLElement&&t.matches(".apply-overflow-tooltip")){let e="x";if(t.matches(".apply-overflow-tooltip--direction_both")?e="both":t.matches(".apply-overflow-tooltip--direction_y")&&(e="y"), +t.matches(".apply-overflow-tooltip--check-children")){let i=!1;const s=t.children;for(let t=0;t(t.nodeType===Node.TEXT_NODE&&e.push(t.textContent||""),e),[]).join("").trim(),(0,n.showOnElement)(t,{text:i});const s=()=>{(0,n.hide)(),["mouseleave","mousedown"].forEach(e=>t.removeEventListener(e,s))};["mouseleave","mousedown"].forEach(e=>t.addEventListener(e,s))}},!0)});var l=i(2872),c=i.n(l),h=i(11417),d=i(15840);let u;function p(e){window.iframeAuthWidget&&!1===window.user.profile_data_filled&&(window.iframeAuthWidget.preventClose=!0);const t=window.user.available_offers||{};window.TVSettings&&window.TVSettings.sync(window.user.settings),window.is_authenticated?(e||(initOfferLoginStateChangeButton(),onGoPro()&&window.user.is_pro&&window.location.reload()),!1===window.user.profile_data_filled&&((0,r.trackEvent)("Conversion","First login"),delete window.user.profile_data_filled)):(Object.keys(t).forEach(e=>{const i=e;t[i].available_for_anons||delete t[i]}),window.user={username:"Guest",following:"0",followers:"0",ignore_list:[],available_offers:t},h.TVLocalStorage.removeItem("trial_availiable"))}u=window.loginStateChange?window.loginStateChange:window.loginStateChange=new(c()),u.subscribe(null,p),s.TVXWindowEvents.on("loginStateChange",e=>{const t=JSON.parse(e);window.user=t.user,window.is_authenticated=!!t.is_authenticated,u.fire()}),s.TVXWindowEvents.on("signOut",()=>{!function(){if(window.initData.lfs){const e=document.getElementsByClassName("js-admin-warning")[0];document.body.removeChild(e)}let e=!0;[/^\/chart\//,/^\/share-your-love\//].forEach(t=>{t.test(window.location.pathname)&&(e=!1)}),e&&window.location.reload()}()}),(()=>{const e={};window.crossTabSyncUserAttr=e=>{const t={};e instanceof Array?e.forEach(e=>{t[e]=window.user[e]}):t[e]=window.user[e],s.TVXWindowEvents.emit("user-obj-changed",JSON.stringify(t))},s.TVXWindowEvents.on("user-obj-changed",t=>{const i=JSON.parse(t);let s;for(s in i)if(i.hasOwnProperty(s)){window.user[s]=i[s];(e[s]||[]).forEach(e=>{e.fire(i[s])})}})})(),window.TradingView.changeLoginState=e=>{window.is_authenticated=!!e,s.TVXWindowEvents.emit("loginStateChange",JSON.stringify({is_authenticated:window.is_authenticated,user:window.user})),u.fire()},window.loginUser=function(e,t){window.TVDialogs&&window.TVDialogs.signModal&&window.TVDialogs.signModal.close(),window.user=(0,d.deepExtend)({},e),window.TradingView.changeLoginState(!0),"function"==typeof t&&window.TVDialogs&&window.TVDialogs.signModal?window.TVDialogs.signModal.on("signinSuccess",()=>{t()}):"function"==typeof t&&t()},window.loginRequiredDelegate=new(c()),window.runOrSignIn=(e,t)=>{t||(t={}),e()},window.onLoginStateChange=p,window.TradingView.setTrialAvailiable=e=>{h.TVLocalStorage.setItem("trial_availiable",e?"1":"0")},window.TradingView.notificationsChanged=new(c())},68906:(e,t,i)=>{ +"use strict";i.r(t),i.d(t,{generateColor:()=>r,alphaToTransparency:()=>n,transparencyToAlpha:()=>o,applyTransparency:()=>a,resetTransparency:()=>l,getLuminance:()=>c,isHexColor:()=>h,colorFromBackground:()=>d,gradientColorAtPercent:()=>u,isColorDark:()=>p,rgbaFromInteger:()=>_,rgbaToInteger:()=>m,colorToInteger:()=>g});var s=i(24377);function r(e,t,i){if(t=t||0,!h(e))return i?(0,s.rgbaToString)((0,s.rgba)((0,s.parseRgb)(e),(0,s.normalizeAlphaComponent)(o(t)))):e;const[r,n,a]=(0,s.parseRgb)(e),l=(0,s.normalizeAlphaComponent)(o(t));return(0,s.rgbaToString)([r,n,a,l])}function n(e){return 100*(1-e)}function o(e){if(e<0||e>100)throw new Error("invalid transparency");return 1-e/100}function a(e,t){if("transparent"===e)return e;const i=(0,s.parseRgba)(e),r=i[3];return(0,s.rgbaToString)((0,s.rgba)(i[0],i[1],i[2],o(t)*r))}function l(e){return"transparent"===e||h(e)?e:(0,s.rgbaToString)((0,s.rgba)((0,s.parseRgb)(e),(0,s.normalizeAlphaComponent)(1)))}function c(e){const t=(0,s.parseRgb)(e).map(e=>(e/=255)<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4));return Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function h(e){return 0===e.indexOf("#")}function d(e){return"black"===(0,s.rgbToBlackWhiteString)((0,s.parseRgb)(e),150)?"#ffffff":"#000000"}function u(e,t,i){const[r,n,o,a]=(0,s.parseRgba)(e),[l,c,h,d]=(0,s.parseRgba)(t),u=(0,s.rgba)(Math.round(r+i*(l-r)),Math.round(n+i*(c-n)),Math.round(o+i*(h-o)),a+i*(d-a));return(0,s.rgbaToString)(u)}function p(e){return c(l(e))<.5}function _(e){const t=(e=Math.round(e))%256;e-=t;const i=(e/=256)%256;e-=i;const s=(e/=256)%256;e-=s;return`rgba(${t},${i},${s},${(e/=256)/255})`}function m(e){const t=Math.round(255*e[3]);return e[0]+256*e[1]+65536*e[2]+16777216*t}function g(e){const t=(0,s.tryParseRgba)(e);return null===t?0:m(t)}},59199:(e,t,i)=>{"use strict";i.d(t,{doAnimate:()=>n});const s={from:0,duration:250,easing:i(68587).easingFunc.easeOutCubic};class r{constructor(e){this._doing=!0,this._completed=!1,this._options={...s,...e};const t=performance.now();window.requestAnimationFrame(e=>{this._animation(t,this._options.from,e)})}stop(){this._doing=!1}completed(){return this._completed}_animation(e,t,i){if(!this._doing)return void this._finishAnimation();const s=(i=!i||i<1e12?performance.now():i)-e,r=s>=this._options.duration||t===this._options.to,n=(o=this._options.from,a=this._options.to,l=this._options.easing(s/this._options.duration),o*(1-l)+a*l);var o,a,l;const c=r?this._options.to:n,h=c-t;this._options.onStep(h,c),r?this._finishAnimation():window.requestAnimationFrame(t=>{this._animation(e,c,t)})}_finishAnimation(){this._options.onComplete&&this._options.onComplete(),this._completed=!0}}function n(e){return new r(e)}},85198:(e,t,i)=>{"use strict";i.d(t,{fetch:()=>s});(0,i(98125).getLogger)("Fetch");function s(e,t,i={}){return window.fetch(e,t)}},98125:(e,t,i)=>{"use strict";i.r(t),i.d(t,{LOGLEVEL:()=>n,getLogLevel:()=>_,isHighRateEnabled:()=>m,setLogLevel:()=>g,getRawLogHistory:()=>f,serializeLogHistoryEntry:()=>v,getLogHistory:()=>S,getLogger:()=>b,loggingOn:()=>C, +loggingOff:()=>P});const s="undefined"!=typeof window?window:{};let r=!1;try{localStorage.getItem(""),r=!0}catch(e){}var n;!function(e){e[e.ERROR=1]="ERROR",e[e.WARNING=2]="WARNING",e[e.INFO=3]="INFO",e[e.NORMAL=4]="NORMAL",e[e.DEBUG=5]="DEBUG"}(n||(n={}));let o=0;const a=[];let l=null,c=null,h=null,d=NaN,u=n.WARNING,p=!1;function _(){return u}function m(){return p}function g(e){e=Math.max(n.ERROR,Math.min(n.DEBUG,e)),u=e,T()}function f(e,t){let i=a.reduce((e,t)=>e.concat(t),[]);return i.sort((e,t)=>e.id-t.id),void 0!==t&&(i=i.filter(e=>e.subSystemId===t)),"number"==typeof e&&(i=i.slice(-e)),i}function v(e){return new Date(e.timestamp).toISOString()+":"+e.subSystemId+":"+e.message.replace(/"/g,"'")}function S(e,t){return function(e,t){let i,s=0,r=0;for(i=e.length-1;i>=1&&(s+=8*(1+encodeURIComponent(e[i]).length),!(i-1>0&&(r=8*(1+encodeURIComponent(e[i-1]).length),s+r>t)));i--);return e.slice(i)}(f(e,t).map(v),75497472)}function y(e,t,i,r){if(t===c&&r.id===h)return;const a=new Date;if(e<=n.NORMAL&&function(e,t,i,r,n){"function"===s.structuredClone&&(t=s.structuredClone(t));const a={id:o,message:t,subSystemId:r,timestamp:Number(e)};o+=1,i.push(a),void 0!==n&&i.length>n&&i.splice(0,1)}(a,t,i,r.id,r.maxCount),e<=u&&(!r.highRate||m())&&(!l||r.id.match(l))){const i=a.toISOString()+":"+r.id+":"+t;switch(e){case n.DEBUG:console.debug(i);break;case n.INFO:case n.NORMAL:r.color?console.log("%c"+i,"color: "+r.color):console.log(i);break;case n.WARNING:console.warn(i);break;case n.ERROR:console.error(i)}c=t,h=r.id,d&&clearTimeout(d),d=setTimeout(()=>{c=null,h=null,d=NaN},1e3)}}function b(e,t={}){const i=[];a.push(i);const s=Object.assign(t,{id:e});function r(e){return t=>y(e,String(t),i,s)}return{logDebug:r(n.DEBUG),logError:r(n.ERROR),logInfo:r(n.INFO),logNormal:r(n.NORMAL),logWarn:r(n.WARNING)}}const w=b("logger"),C=s.lon=(e,t)=>{g(n.DEBUG),w.logNormal("Debug logging enabled"),p=Boolean(e),l=t||null,T()},P=s.loff=()=>{g(n.INFO),w.logInfo("Debug logging disabled")};function T(){try{r&&(localStorage.setItem("tv.logger.logHighRate",String(p)),localStorage.setItem("tv.logger.loglevel",String(u)))}catch(e){w.logWarn(`Cannot save logger state (level: ${u}, high-rate: ${p}) to localStorage: ${e.message}`)}}!function(){p=!!r&&"true"===localStorage.getItem("tv.logger.logHighRate");let e=parseInt(r&&localStorage.getItem("tv.logger.loglevel")||"");Number.isNaN(e)&&(e=n.WARNING),g(e),w.logNormal(`Init with settings - level: ${u}, high-rate: ${p}`)}(),s.performance&&s.performance.now?w.logNormal("Sync logger and perf times, now is "+s.performance.now()):w.logWarn("Perf time is not available")},52640:(e,t,i)=>{"use strict";function s(e,t,i,s){return`${s?s+" ":""}${i?i+" ":""}${e}px ${t}`}i.d(t,{makeFont:()=>s,parseFont:()=>n});const r=/(bold )?(italic )?(\d+)(px|pt) (.*)$/;function n(e){const t=r.exec(e);return null===t?null:{family:t[5],size:parseInt(t[3])*("pt"===t[4]?.75:1),bold:Boolean(t[1]),italic:Boolean(t[2])}}},45415:(e,t,i)=>{"use strict";i.d(t,{visitObject:()=>n});var s=i(80643);function r(e,t,i){return(0, +s.isArray)(e)?function(e,t,i){return e.map(e=>{const s=r(e,t,i),n=t(s);return void 0!==n?n:s})}(e,t,i):(0,s.isObject)(e)&&((0,s.isHashObject)(e)||i&&i.visitInstances)?function(e,t,i){const s={};return Object.keys(e).forEach(n=>{const o=r(e[n],t,i),a=t(o);s[n]=void 0!==a?a:o}),s}(e,t,i):e}function n(e,t,i){const s=r(e,t,i),n=t(s);return void 0!==n?n:s}},28789:(e,t,i)=>{"use strict";function s(e){return e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&")}i.d(t,{regExpEscape:()=>s})},62820:(e,t,i)=>{"use strict";i.r(t),i.d(t,{isRtl:()=>r,stripLTRMarks:()=>o,startWithLTR:()=>a,forceLTRStr:()=>l,forceLTRStrSsr:()=>c,forceRTLStr:()=>h,getLTRScrollLeft:()=>d,getLTRScrollLeftOffset:()=>u,detectAutoDirection:()=>m});var s=i(64531);const r=()=>"rtl"===window.document.dir,n=new RegExp("‎|‪|‫|‬","g");function o(e){return""!==e&&r()&&null!=e?e.replace(n,""):e}function a(e){return""!==e&&r()&&null!=e?"‎"+e:e}function l(e){return""!==e&&r()&&null!=e?"‪"+e+"‬":e}function c(e){return"‪"+e+"‬"}function h(e){return""!==e&&r()&&null!=e?"‫"+e+"‬":e}function d(e){return(0,s.getNormalizedScrollLeft)(e,"rtl")}function u(e,t){const i=(0,s.detectScrollType)();if("indeterminate"===i)return 0;switch(i){case"negative":t=e.clientWidth-e.scrollWidth+t;break;case"reverse":t=e.scrollWidth-e.clientWidth-t}return t}const p=/[^\u0000-\u0040\u005B-\u0060\u007B-\u00BF\u00D7\u00F7\u02B9-\u02FF\u2000-\u200E\u2010-\u2029\u202C\u202F-\u2BFF]/,_=/[\u0590-\u07FF\u200F\u202B\u202E\uFB1D-\uFDFD\uFE70-\uFEFC]/;function m(e){const t=p.exec(e);return t?_.test(t[0])?"rtl":"ltr":""}},68587:(e,t,i)=>{"use strict";i.d(t,{CubicBezier:()=>s.CubicBezier,dur:()=>s.dur,easingFunc:()=>s.easingFunc});var s=i(74991)},51193:(e,t,i)=>{"use strict";function s(){return Promise.all([i.e(5514),i.e(9129),i.e(4194),i.e(9289),i.e(4017),i.e(3016),i.e(2077)]).then(i.bind(i,30349))}i.d(t,{loadChangeIntervalDialog:()=>s})},8636:(e,t,i)=>{"use strict";i.d(t,{showChangeIntervalDialogAsync:()=>n});var s=i(51193);let r=null;function n(e){const t=r=(0,s.loadChangeIntervalDialog)().then(i=>{t===r&&i.showChangeIntervalDialog(e)});return t}},94420:(e,t,i)=>{"use strict";function s(e){return Promise.all([i.e(5514),i.e(9129),i.e(4194),i.e(2e3),i.e(7962),i.e(8986),i.e(6363),i.e(8463),i.e(9289),i.e(7345),i.e(7176),i.e(8268),i.e(9055),i.e(2358),i.e(5802),i.e(9837),i.e(3016),i.e(1075),i.e(6085),i.e(1859)]).then(i.bind(i,54801)).then(t=>t.showGoToDateDialog(e))}i.d(t,{showGoToDateDialog:()=>s})},65645:(e,t,i)=>{"use strict";i.d(t,{showTooManyStudiesNotice:()=>n});var s=i(28353),r=i(3615);function n(e){"number"!=typeof e&&(e=TradingView.STUDY_COUNT_LIMIT),(0,r.showWarning)({title:(0,s.t)("Warning"),text:(0,s.t)("Studies limit exceeded: {number} studies per layout.\nPlease, remove some studies.").format({number:e})})}},34615:(e,t,i)=>{"use strict";i.d(t,{StudyMarket:()=>n});var s=i(52714),r=i.n(s);class n{constructor(e,t){this._visibility=new(r())(!1),this._dialogPromise=null,this._dialog=null,this._chartWidgetCollection=e,this._options=t}visible(){return this._visibility.readonly()}show(e,t){var i +;null===this._dialog&&this._requestDialog(e,t),null===(i=this._dialog)||void 0===i||i.open(e,void 0,t)}hide(){var e;null===(e=this._dialog)||void 0===e||e.hide()}resetAllPages(){var e;null===(e=this._dialog)||void 0===e||e.resetAllStudies()}_requestDialog(e,t){if(null===this._dialogPromise){let s;s=Promise.all([i.e(5514),i.e(9129),i.e(4194),i.e(7962),i.e(8986),i.e(8463),i.e(5774),i.e(1112),i.e(9637),i.e(775),i.e(3016),i.e(6456)]).then(i.bind(i,54127)).then(e=>new e.IndicatorsLibraryContainer(this._chartWidgetCollection,this._options)),this._dialogPromise=s.then(i=>{this._dialog=i,this._dialog.visible().subscribe(e=>{this._visibility.setValue(e)}),this._dialog.open(e,void 0,t)})}return this._dialogPromise}}},13221:(e,t,i)=>{"use strict";i.d(t,{setAdditionalSymbolInfoFields:()=>r,getAdditionalSymbolInfoFields:()=>n});let s=[];function r(e){s=e}function n(){return s}},88679:(e,t,i)=>{"use strict";function s(e,t){Promise.all([i.e(5514),i.e(9129),i.e(4194),i.e(6324),i.e(3016),i.e(9374)]).then(i.t.bind(i,65398,19)).then(i=>{i.showSymbolInfoDialog(e,t)})}i.d(t,{showSymbolInfoDialog:()=>s})},89330:(e,t,i)=>{"use strict";i.d(t,{ChartSaverBase:()=>s});class s{constructor(e){this._chartWidgetCollection=e}saveChartLineTools(e,t,i){return Promise.reject("Line tools storage is not supported")}_getCommonSavingInfo(e){const t=this._chartWidgetCollection,i=this._chartWidgetCollection.chartsSymbols(),s=i[t.activeChartWidget.value().id()],r={...(n=s,{...n,legs:JSON.stringify(null!==(o=n.legs)&&void 0!==o?o:[])})};var n,o;const a=t.metaInfo;return a.id.value()&&(r.id=a.id.value()),r.name=a.name.value()||"",r.description=a.description.value()||"",r.charts_symbols=function(e){const t={};for(const i of Object.keys(e))t[i]={symbol:e[i].symbol};return JSON.stringify(t)}(i),r.is_realtime=r.is_realtime=e?"0":"1",r}async _saveLineToolsToStorage(){return Promise.resolve()}}},76900:(e,t,i)=>{"use strict";var s=i(2872),r=i(28353).t,n=i(88537).assert,o=i(80643).deepEquals,a=i(43007).backend,l=i(89330).ChartSaverBase;r("The publication preview could not be loaded. Please disable your browser extensions and try again."),r("Failed to save library"),r("Failed to save script");function c(e,t){e.content=JSON.stringify(t)}t.ChartSaver=class extends l{constructor(e){super(e),this._chartAboutToBeSavedDelegate=new s,this._chartSavedDelegate=new s,this._prevChartState=null,this._chartSizeLimitExceededDelegate=new s}chartSizeLimitExceeded(){return this._chartSizeLimitExceededDelegate}chartAboutToBeSaved(){return this._chartAboutToBeSavedDelegate}chartSaved(){return this._chartSavedDelegate}whenReadyToSave(e){var t=this._chartWidgetCollection.activeChartWidget.value().model().mainSeries();if(t.hasDelayedSymbolIntervalChange()){var i,s=null;i=function(){t.dataEvents().symbolError().unsubscribe(null,s,!0),e()},s=function(){t.dataEvents().symbolResolved().unsubscribe(null,i,!0)},t.dataEvents().symbolResolved().subscribe(null,i,!0),t.dataEvents().symbolError().subscribe(null,s,!0)}else e()}saveToJSON(){var e=this._getCommonSavingInfo(!1) +;return c(e,this._getChartWidgetCollectionState(!1,!0)),e}_getChartWidgetCollectionState(e,t,i,s,r){return e||(t=!0,s=!1),t?this._chartWidgetCollection.state(!!e,i,s,r):this._chartWidgetCollection.activeChartWidget.value().state(!!e,i,s,r)}publishChart(e){}publishScript(e,t,i){}onPublish(e,t){}_saveChartImpl(e,t,i,s,r,n){var o=i,l=s;if(o=function(s){t.id.value()||(t.id.setValue(s),t.uid.setValue(s)),"function"==typeof i&&i(t,e)},!e.name)return console.warn("Saving chart with empty name is not allowed"),void s();a.saveChart(e.name,e.short_name,e.resolution,e,t).then(o.bind(this)).catch(l.bind(this))}_saveChart(e,t,i,s){var r=this._chartWidgetCollection.metaInfo,n=function(n){return o(this._prevChartState,n)[0]&&null!=r.id.value()?(this._chartSavedDelegate.fire(!0),void(t&&t(r,n))):this._saveChartImpl(n,r,t,i,s,e)}.bind(this);this._saveLineToolsToStorage().then((function(){var t=e(!0);return n(t)})).catch((function(t){var i=e(!1);return n(i)}))}saveChartSilently(e,t,i){i=i||{};var s=function(e){var t=e&&!1,s=this._getChartWidgetCollectionState(!1,void 0,void 0,void 0,t),r=this._getCommonSavingInfo(!1,t);return c(r,s),i.chartName&&(r.name=i.chartName),r.name&&0!==r.name.length||!i.defaultChartName||(r.name=i.defaultChartName),i.autoSave&&(r.autoSave=!0),r}.bind(this);this._isSaveInProcess=!0,this._chartAboutToBeSavedDelegate.fire(),this._saveChart(s,function(t,i){n(!this._chartWidgetCollection.readOnly(),"Trying to save layout in read-only mode"),this._chartWidgetCollection.metaInfo.name.setValue(i.name),this._prevChartState=i,this._chartSavedDelegate.fire(!0),this._isSaveInProcess=!1,e&&e({uid:t.uid.value(),data:i}),delete this._prevChartState.savingToken}.bind(this),function(){this._chartSavedDelegate.fire(!1),this._isSaveInProcess=!1,t&&t.apply(null,arguments)}.bind(this),i)}isSaveInProcess(){return this._isSaveInProcess}}},1570:(e,t,i)=>{"use strict";i.d(t,{getTranslatedSymbolDescription:()=>s});i(28353);function s(e){return e.description||""}},82724:(e,t,i)=>{"use strict";function s(e){return e+"…"}i.d(t,{appendEllipsis:()=>s})},8128:(e,t,i)=>{"use strict";function s(e){if(!o(e))throw e}function r(e){return(null==e?void 0:e.aborted)?Promise.reject(n()):new Promise((t,i)=>{null==e||e.addEventListener("abort",()=>i(n()),{once:!0})})}function n(){return new DOMException("Aborted","AbortError")}function o(e){return e instanceof Error&&"AbortError"===e.name}function a(e,t){return Promise.race([r(e),t])}async function l(e,t){let i;try{await a(e,new Promise(e=>{i=setTimeout(e,t)}))}finally{clearTimeout(i)}}i.d(t,{skipAbortError:()=>s,isAbortError:()=>o,respectAbort:()=>a,delay:()=>l})},98619:(e,t,i)=>{"use strict";function s(e){let t;if("object"!=typeof e||null==e||"number"==typeof e.nodeType)t=e;else if(e instanceof Date)t=new Date(e.valueOf());else if(Array.isArray(e)){t=[];let i=0;const r=e.length;for(;is})},15840:(e,t,i)=>{"use strict" +;function s(e,...t){return e&&"object"==typeof e?(0===t.length||t.forEach(t=>{null!=t&&"object"==typeof t&&Object.keys(t).forEach(i=>{const n=e[i],o=t[i];if(o===e)return;const a=Array.isArray(o);if(o&&(r(o)||a)){let t;t=a?n&&Array.isArray(n)?n:[]:n&&r(n)?n:{},e[i]=s(t,o)}else void 0!==o&&(e[i]=o)})}),e):e}function r(e){if(!e||"[object Object]"!==Object.prototype.toString.call(e))return!1;const t=Object.getPrototypeOf(e);if(!t)return!0;const i=Object.hasOwnProperty.toString,s=t.hasOwnProperty("constructor")&&t.constructor;return"function"==typeof s&&i.call(s)===i.call(Object)}i.d(t,{deepExtend:()=>s})},88461:(e,t,i)=>{"use strict";function s(e){if(void 0===e)return"";if(e instanceof Error){let t=e.message;return e.stack&&(t+=" "+e.stack),t}return"string"==typeof e?e.toString():JSON.stringify(e)}i.d(t,{errorToString:()=>s})},72077:(e,t,i)=>{"use strict";i.d(t,{getTwemojiUrl:()=>r});var s=i(18438);function r(e,t){let i="";return s.default.parse(e,e=>(i=s.default.base+("svg"===t?`svg/${e}.svg`:`72x72/${e}.png`),!1)),i}s.default.base="https://cdnjs.cloudflare.com/ajax/libs/twemoji/13.0.1/"},9423:(e,t,i)=>{"use strict";i.r(t),i.d(t,{guid:()=>r,randomHash:()=>n,randomHashN:()=>o});const s="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function r(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})}function n(){return o(12)}function o(e){let t="";for(let i=0;i{"use strict";i.d(t,{parseHtml:()=>r,parseHtmlElement:()=>n});const s=new WeakMap;function r(e,t){let i,r;return i=null==t?document.documentElement:9===t.nodeType?t.documentElement:t,s&&(r=s.get(i)),r||(r=i.ownerDocument.createRange(),r.selectNodeContents(i),s&&s.set(i,r)),r.createContextualFragment(e)}function n(e,t){const i=r(e,t),s=i.firstElementChild;return null!==s&&i.removeChild(s),s}},54475:(e,t,i)=>{"use strict";function s(e){e.preventDefault()}i.d(t,{preventDefault:()=>s,preventDefaultForContextMenu:()=>n});const r=["input:not([type])",'input[type="text"]','input[type="email"]','input[type="password"]','input[type="search"]','input[type="number"]','input[type="url"]',"textarea","a[href]",'*[contenteditable="true"]',"[data-allow-context-menu]"];function n(e){const t=e.target;t&&!t.closest(r.join(", "))&&e.preventDefault()}},80054:(e,t,i)=>{"use strict";i.d(t,{htmlEscape:()=>n,removeSpaces:()=>o,capitalizeFirstLetterInWord:()=>a});const s=/[<"'&>]/g,r=e=>`&#${e.charCodeAt(0)};`;function n(e){return e.replace(s,r)}function o(e=""){return e.replace(/\s+/g,"")}function a(e=""){return e.replace(/\b\w/g,e=>e.toUpperCase())}},96397:(e,t,i)=>{"use strict";function s(e){return e.reduce((function(e,t,i){return~e.indexOf(t)||e.push(t),e}),[])}i.r(t),i.d(t,{uniq:()=>s})},38881:(e,t,i)=>{"use strict";i.d(t,{ChunkLoader:()=>r});var s=i(8128);class r{constructor(){this._retries=5,this._cache=null,this._tryLoad=(e,t)=>{this._retries=this._retries-1 +;this._startLoading(e).then(t,0!==this._retries?i=>{(0,s.isAbortError)(i)||setTimeout(()=>this._tryLoad(e,t),3e3)}:void 0)}}load(e){return this._cache||(this._cache=new Promise(this._tryLoad.bind(this,null!=e?e:null))),this._cache}}},65446:(e,t,i)=>{"use strict";function s(e,t){const i=e.files&&e.files.length>0;if(!i&&t&&t.eventPhase>0)return r(t,e),Promise.resolve();if(!i){let t=!1;const i=i=>{i.stopImmediatePropagation(),r(i,e),t=!0};try{document.addEventListener("copy",i,!0),document.execCommand("copy")}finally{document.removeEventListener("copy",i,!0)}if(t)return Promise.resolve()}return async function(e){if(!navigator.clipboard||!navigator.clipboard.write||!window.ClipboardItem)throw new DOMException("ClipboardApi is not supported","NotSupportedError");const t={};for(const i of e.files||[])t[i.type]=i;e.text&&(t["text/plain"]=e.text);e.html&&(t["text/html"]=e.html);return navigator.clipboard.write([new window.ClipboardItem(t)])}(e)}function r(e,t){e.preventDefault();const i=e.clipboardData;t.text&&i.setData("text/plain",t.text),t.html&&i.setData("text/html",t.html)}async function n(e,t){if("text/plain"===t&&!navigator.clipboard.write){const t=await e;return navigator.clipboard.writeText(await t.text())}if(!navigator.clipboard||!navigator.clipboard.write||!window.ClipboardItem)throw new DOMException("ClipboardApi is not supported","NotSupportedError");let i=null;try{i=new window.ClipboardItem({[t]:e})}catch(s){i=new window.ClipboardItem({[t]:await e})}if(i)return navigator.clipboard.write([i]);throw new Error("ClipboardApi is not supported")}i.d(t,{writeImpl:()=>s,writePromiseUsingApi:()=>n})},5370:(e,t,i)=>{"use strict";function s(e){if(void 0===e)return null;const t=e.match(/(delayed_streaming)_([\d]{1,4})/);return null===t?null:{mode:t[1],interval:parseInt(t[2])}}i.d(t,{parseUpdateMode:()=>s})},84917:(e,t,i)=>{"use strict";var s,r;i.r(t),i.d(t,{WeekDays:()=>s,Months:()=>r}),function(e){e[e.SUNDAY=1]="SUNDAY",e[e.MONDAY=2]="MONDAY",e[e.TUESDAY=3]="TUESDAY",e[e.WEDNESDAY=4]="WEDNESDAY",e[e.THURSDAY=5]="THURSDAY",e[e.FRIDAY=6]="FRIDAY",e[e.SATURDAY=7]="SATURDAY"}(s||(s={})),function(e){e[e.JANUARY=0]="JANUARY",e[e.FEBRUARY=1]="FEBRUARY",e[e.MARCH=2]="MARCH",e[e.APRIL=3]="APRIL",e[e.MAY=4]="MAY",e[e.JUNE=5]="JUNE",e[e.JULY=6]="JULY",e[e.AUGUST=7]="AUGUST",e[e.SEPTEMBER=8]="SEPTEMBER",e[e.OCTOBER=9]="OCTOBER",e[e.NOVEMBER=10]="NOVEMBER",e[e.DECEMBER=11]="DECEMBER"}(r||(r={}))},81836:(e,t,i)=>{"use strict";function s(){let e,t;return{promise:new Promise((i,s)=>{e=i,t=s}),reject:t,resolve:e}}i.d(t,{createDeferredPromise:()=>s})},76861:(e,t,i)=>{"use strict";function s(e=location.host){ +return-1!==["i18n.tradingview.com","partial.tradingview.com","www.tradingview.com","wwwcn.tradingview.com"].indexOf(e)||-1!==["d33t3vvu2t2yu5.cloudfront.net","dwq4do82y8xi7.cloudfront.net","s.tradingview.com","s3.tradingview.com"].indexOf(e)||e.match(/^[a-z]{2}\.tradingview\.com/)||e.match(/prod-[^.]+.tradingview.com/)?"battle":e.includes("tradingview.com")||e.includes("staging")?"staging":e.match(/webcharts/)?"staging_local":(e.match(/^localhost(:\d+)?$/),"local")}function r(){return"local"===s()}function n(){return"battle"===s()}function o(){return!n()}i.r(t),i.d(t,{environment:()=>s,isLocal:()=>r,isProd:()=>n,isDebug:()=>o})},80007:(e,t,i)=>{"use strict";i.d(t,{preventDefault:()=>r,wrapHandlerWithPreventEvent:()=>n,preventScrollByWheelClick:()=>o});var s=i(49483);function r(e){e.cancelable&&e.preventDefault()}function n(e){return t=>{r(t),e()}}function o(e){s.isChrome&&e.addEventListener("mousedown",e=>{if(1===e.button)return e.preventDefault(),!1})}},46627:(e,t,i)=>{"use strict";i.d(t,{FeatureToggleWatchedValue:()=>n});var s=i(52714),r=i.n(s);class n extends(r()){constructor(e,t){super(function(e,t){return t}(0,t))}destroy(){0}}},56186:(e,t,i)=>{"use strict";function s(e){if(e instanceof Error)return e.stack||e.message;try{return e.outerHTML.slice(0,1024)}catch(e){}try{if(void 0!==e)return JSON.stringify(e).slice(0,1024)}catch(e){}return String(e)}function r(){window.__tv_js_errors||(window.__tv_js_errors=[]),window.addEventListener("error",e=>{const t=(new Date).toISOString();window.__tv_js_errors.push(`${t} ${e.message||"JS error"}. ${e.filename||""}, line ${e.lineno}, col ${e.colno}.\nError: `+s(e.error))},!1),window.addEventListener("unhandledrejection",e=>{const t=(new Date).toISOString();window.__tv_js_errors.push(t+" Unhandled rejection.\nReason: "+s(e.reason))},!1),document.addEventListener("securitypolicyviolation",e=>{var t,i;const r=(new Date).toISOString(),n="report"===e.disposition?"CSP report-only":"CSP violation";window.__tv_js_errors.push(`${r} ${n}: ${e.violatedDirective||e.effectiveDirective}. ${e.sourceFile||""}, line ${null!==(t=e.lineno)&&void 0!==t?t:e.lineNumber}, col ${null!==(i=e.colno)&&void 0!==i?i:e.columnNumber}.\nBlocked URI: ${e.blockedURL||e.blockedURI}\nSample: ${e.sample}\nTarget: `+s(e.target))},!1)}i.d(t,{install:()=>r})},76422:(e,t,i)=>{"use strict";i.r(t),i.d(t,{unsubscribe:()=>l,on:()=>c,subscribe:()=>h,subscribeToAll:()=>d,emit:()=>u,emitOnce:()=>p});var s=i(2872),r=i.n(s);const n={},o=[],a={};function l(e,t,i){n[e].unsubscribe(i,t)}function c(e,t,i){h(e,t,i)}function h(e,t,i,s){n.hasOwnProperty(e)||(n[e]=new(r())),a[e]?t.call(i):n[e].subscribe(i,t,s)}function d(e){o.push(e)}function u(e,...t){const i=[e].concat(t);o.forEach(e=>{e.apply(null,i)}),n.hasOwnProperty(e)&&n[e].fire.apply(n[e],t)}function p(e){a[e]&&console.warn(`Something went wrong: emitOnce called multiple times with same event (${e})`),a[e]=!0,u.apply(null,arguments)}},25760:(e,t,i)=>{"use strict";i.r(t),i.d(t,{Modifiers:()=>s.Modifiers,createGroup:()=>u,pressedKeys:()=>d, +registerWindow:()=>p,unregisterWindow:()=>_});var s=i(68335),r=i(35749),n=i(52714),o=i.n(n);var a=i(51768);class l{constructor(e,t){this._group=e,this.hotkey=t.hotkey,this.handler=t.handler,this.desc=t.desc,this.element=t.element||null,t.isDisabled?"function"==typeof t.isDisabled?this.isDisabled=t.isDisabled:this.isDisabled=()=>!0:this.isDisabled=()=>!1}destroy(){this._group&&(this._group.remove(this),this._group=null)}}class c{constructor(e,t){this._actions=[],this._manager=e,this.modal=!(!t||!t.modal),t&&(this.desc=t.desc),t&&t.isDisabled?"function"==typeof t.isDisabled?this.isDisabled=t.isDisabled:this.isDisabled=()=>!0:this.isDisabled=()=>!1,this._manager.registerGroup(this)}add(e){const t=new l(this,e);return this._actions.push(t),t}remove(e){for(let t=this._actions.length;t-- >0;)this._actions[t]===e&&this._actions.splice(t,1)}handleHotkey(e,t){for(let i=this._actions.length;i-- >0;){const r=this._actions[i];if(r.hotkey===e&&((!r.element||t.target&&r.element.contains(t.target))&&!r.isDisabled()))return r.handler(t),t.preventDefault(),(0,a.trackEvent)("Keyboard Shortcuts",(0,s.humanReadableHash)(e)),!0}return!1}promote(){this._manager.promoteGroup(this)}destroy(){this._actions.length=0,this._manager.unregisterGroup(this)}}const h=new class{constructor(){this._groups=[],this._pressedKeys=new(o())(0),this._keyDownListener=e=>{if(e.defaultPrevented)return;const t=(0,s.hashFromEvent)(e);if(this._pressedKeys.setValue(t),!(0,r.isNativeUIInteraction)(t,e.target))for(let i=this._groups.length;i-- >0;){const s=this._groups[i];if(!s.isDisabled()){if(s.handleHotkey(t,e))return;if(s.modal)return}}},this._keyUpListener=e=>{const t=(0,s.hashFromEvent)(e);this._pressedKeys.setValue(t)},this._blurEvent=()=>{this._pressedKeys.setValue(0)},this._mouseEvent=e=>{const t=(0,s.modifiersFromEvent)(e),i=255&this._pressedKeys.value();this._pressedKeys.setValue(t|i)}}listen(e){e.addEventListener("keydown",this._keyDownListener),e.addEventListener("keyup",this._keyUpListener),e.addEventListener("blur",this._blurEvent),e.addEventListener("mousemove",this._mouseEvent)}unlisten(e){e.removeEventListener("keydown",this._keyDownListener),e.removeEventListener("keyup",this._keyUpListener),e.removeEventListener("blur",this._blurEvent),e.removeEventListener("mousemove",this._mouseEvent)}registerGroup(e){this._groups.push(e)}unregisterGroup(e){for(let t=this._groups.length;t--;)this._groups[t]===e&&this._groups.splice(t,1)}promoteGroup(e){let t=this._groups.length-1;for(let i=this._groups.length;i--;){if(this._groups[i]===e)return void(i!==t&&(this._groups.splice(i,1),this._groups.splice(t,0,e)));this._groups[i].modal&&(t=i-1)}}pressedKeys(){return this._pressedKeys}},d=h.pressedKeys();function u(e){return new c(h,e)}function p(e){h.listen(e)}function _(e){h.unlisten(e)}p(window)},68335:(e,t,i)=>{"use strict";i.r(t),i.d(t,{isMacKeyboard:()=>r,Modifiers:()=>n,modifiersFromEvent:()=>o,hashFromEvent:()=>a,hashShiftPlusEnter:()=>l,humanReadableModifiers:()=>c,humanReadableHash:()=>d});var s=i(49483);const r=(0,s.isMac)()||s.CheckMobile.iOS();var n +;function o(e){let t=0;return e.shiftKey&&(t+=1024),e.altKey&&(t+=512),e.ctrlKey&&(t+=256),e.metaKey&&(t+=2048),t}function a(e){return o(e)|e.keyCode}!function(e){e[e.None=0]="None",e[e.Alt=512]="Alt",e[e.Shift=1024]="Shift",e[e.Mod=r?2048:256]="Mod",e[e.Control=256]="Control",e[e.Meta=2048]="Meta"}(n||(n={}));const l=1037;function c(e,t=!r){let i="";return 256&e&&(i+=r?"^":"Ctrl",t&&(i+=" + ")),512&e&&(i+=r?"⌥":"Alt",t&&(i+=" + ")),1024&e&&(i+=r?"⇧":"Shift",t&&(i+=" + ")),2048&e&&(i+=r?"⌘":"Win",t&&(i+=" + ")),i}const h={9:"⇥",13:"↵",27:"Esc",8:r?"⌫":"Backspace",32:"Space",35:"End",36:"Home",37:"←",38:"↑",39:"→",40:"↓",45:"Ins",46:"Del",188:",",191:"/"};for(let e=1;e<=16;e++)h[e+111]="F"+e;function d(e){let t=c(e);const i=255&e;return t+=i in h?h[i]:String.fromCharCode(i),t}},47193:(e,t,i)=>{"use strict";i.d(t,{migrateShortcut:()=>o});var s=i(68335);function r(e){if("number"==typeof e)return e;switch(e.toLowerCase()){case"ctrl":return s.Modifiers.Control;case"shift":return s.Modifiers.Shift;case"alt":return s.Modifiers.Alt;default:return e.toUpperCase().charCodeAt(0)}}function n(e){let t=0;for(let i=0;i{"use strict";i.d(t,{isTextEditingField:()=>r,isNativeUIInteraction:()=>n});var s=i(68335);function r(e){if("INPUT"===e.tagName){const t=e.type;return"text"===t||"email"===t||"number"===t||"password"===t||"search"===t||"tel"===t||"url"===t}return"TEXTAREA"===e.tagName||e.isContentEditable}function n(e,t){if(!t)return!1;const i=255&e;if(27===i||i>>>4==7)return!1;switch(e^i){case s.Modifiers.Alt:return(38===i||40===i)&&"SELECT"===t.tagName||r(t);case s.Modifiers.Alt+s.Modifiers.Shift:return r(t);case s.Modifiers.Mod:if(67===i||!s.isMacKeyboard&&45===i){const e=t.ownerDocument&&t.ownerDocument.getSelection();if(e&&!e.isCollapsed)return!0}return r(t);case s.Modifiers.Mod+s.Modifiers.Shift:return i>=33&&i<=40&&r(t);case s.Modifiers.Shift:case 0:return!!(9!==i||t.ownerDocument&&t!==t.ownerDocument.body&&t!==t.ownerDocument.documentElement)&&((13===i||32===i||!function(e){if("BUTTON"===e.tagName)return!0;if("INPUT"===e.tagName){const t=e.type;if("submit"===t||"button"===t||"reset"===t||"checkbox"===t||"radio"===t)return!0}return!1}(t))&&("form"in t||t.isContentEditable))}return!1}},82992:(e,t,i)=>{"use strict";i.d(t,{linking:()=>u});var s=i(4889),r=i(52714),n=i.n(r),o=i(67337),a=i(37667),l=i(98125),c=i(15943);const h=(0,l.getLogger)("Linking");var d;!function(e){e[e.NotBound=0]="NotBound",e[e.BoundToWidget=1]="BoundToWidget",e[e.BoundToModel=2]="BoundToModel"}(d||(d={}));const u=new class{constructor(){this._watchedSymbol=new(n()),this._seriesShortSymbol=new(n()),this._proSymbol=new(n()),this._watchedInterval=new(n()),this._watchedIntraday=new(n()),this._watchedSeconds=new(n()),this._watchedTicks=new(n()),this._watchedRange=new(n()),this._watchedSupportedResolutions=new(n()),this._watchedSupportedChartStyles=new(n())([]),this._symbolNamesList=new(n()), +this._chartWidgetBindingState=d.NotBound,this._activeChartWidget=null,this._watchedSymbolListenerBound=this._watchedSymbolListener.bind(this),this._watchedIntervalListenerBound=this._watchedIntervalListener.bind(this),this._onSymbolLinkBound=this._onSymbolLink.bind(this),this._searchCharts=null,this._searchChartsLoadDebounced=null,this._selfEmit=!1,this._preventFeedBySymbol=!1,this._feedBySymbolDebounceCounter=0}get symbol(){return this._watchedSymbol}get proSymbol(){return this._proSymbol}get symbolNamesList(){return this._symbolNamesList}get seriesShortSymbol(){return this._seriesShortSymbol.readonly()}get interval(){return this._watchedInterval}get intraday(){return this._watchedIntraday.readonly()}get seconds(){return this._watchedSeconds.readonly()}get ticks(){return this._watchedTicks.readonly()}get range(){return this._watchedRange.readonly()}get supportedResolutions(){return this._watchedSupportedResolutions.readonly()}get supportedChartStyles(){return this._watchedSupportedChartStyles.readonly()}get preventFeedBySymbol(){return this._preventFeedBySymbol}bindToChartWidget(e){if(this.unbindFromChartWidget(),this._activeChartWidget=e,e.hasModel())return void this._onChartModelCreated(e.model());e.modelCreated().subscribe(this,this._onChartModelCreated),this._chartWidgetBindingState=d.BoundToWidget;const t=e.properties().childs().mainSeriesProperties.childs();this._watchedSymbol.setValue(t.symbol.value()),this._watchedInterval.setValue(t.interval.value())}unbindFromChartWidget(){switch(this._chartWidgetBindingState){case d.BoundToWidget:if(!this._activeChartWidget)throw new Error("ChartWidget is undefined");this._activeChartWidget.modelCreated().unsubscribe(this,this._onChartModelCreated);break;case d.BoundToModel:this._symbolProperty().unsubscribe(this,this._onSymbolPropertyChange),this._watchedSymbol.unsubscribe(this._watchedSymbolListenerBound),this._mainSeries().dataEvents().symbolResolved().unsubscribe(this,this._updateSeriesSymbolInfo),this._mainSeries().dataEvents().symbolError().unsubscribe(this,this._updateSeriesSymbolInfo),this._intervalProperty().unsubscribe(this,this._onIntervalPropertyChange),this._watchedInterval.unsubscribe(this._watchedIntervalListenerBound),delete this._watchedSymbol.hook,delete this._watchedSymbol.writeLock}this._activeChartWidget=null,this._chartWidgetBindingState=d.NotBound}getChartWidget(){return this._activeChartWidget}bindToChartWidgetCollection(e){this._chartWidgetCollection=e,this.unbindFromChartWidget(),e.activeChartWidget.subscribe(e=>{this.unbindFromChartWidget(),this.bindToChartWidget(e)},{callWithLast:!0})}bindToSearchCharts(e){this.unbindFromSearchCharts(),this._searchCharts=e,e.onSearchBySymbol.subscribe(this,this._onSearchBySymbol),e.loadingSymbol.subscribe(e=>{!1===e&&(this._feedBySymbolDebounceCounter=0)}),this._watchedSymbol.subscribe(this._onSymbolLinkBound)}unbindFromSearchCharts(){this._searchCharts&&(this._searchCharts.onSearchBySymbol.unsubscribe(this,this._onSearchBySymbol),this._watchedSymbol.unsubscribe(this._onSymbolLinkBound),this._searchCharts=null) +}setPreventFeedBySymbol(e){this._preventFeedBySymbol=e}_onSearchBySymbol(e){if(!e.resolved_symbol)throw new Error("no resolved_symbol");this._selfEmit=!0,this._watchedSymbol.setValue(e.resolved_symbol),this._selfEmit=!1}_onSymbolLink(e){if(!this._selfEmit){if(!this._searchCharts){const e="No search charts defined";throw h.logError(e),new Error(e)}this._preventFeedBySymbol||this._loadSearchCharts(e)}}_loadSearchCharts(e){if(!this._searchCharts){const e="No search charts defined";throw h.logError(e),new Error(e)}if(this._searchChartsLoadDebounced)return void(this._feedBySymbolDebounceCounter<100&&(this._feedBySymbolDebounceCounter++,this._searchChartsLoadDebounced(e)));const t=e=>this._searchCharts?(!0===this._searchCharts.loadingSymbol.value()?this._feedBySymbolDebounceCounter<100&&(this._feedBySymbolDebounceCounter++,this._searchChartsLoadDebounced=(0,s.default)(t,2e3),this._searchChartsLoadDebounced(e)):this._searchChartsLoadDebounced=null,this._searchCharts.feedBySymbol.call(this._searchCharts,e)):()=>{};!0===this._searchCharts.loadingSymbol.value()?this._feedBySymbolDebounceCounter<100&&(this._feedBySymbolDebounceCounter++,this._searchChartsLoadDebounced=(0,s.default)(t,2e3),this._searchChartsLoadDebounced(e)):this._searchCharts.feedBySymbol(e)}_mainSeries(){if(!this._activeChartWidget)throw new Error("ChartWidget is undefined");return this._activeChartWidget.model().mainSeries()}_properties(){return this._mainSeries().properties()}_symbolProperty(){return this._properties().symbol}_intervalProperty(){return this._properties().interval}_watchedSymbolListener(e){this._symbolProperty().value()!==e&&this._chartWidgetCollection.setSymbol(e)}_sendSnowplowAnalytics(){if(!window.user.do_not_track)throw new Error("unsupported")}_onSymbolPropertyChange(){const e=this._symbolProperty().value()!==this._watchedSymbol.value();this._watchedSymbol.setValue(this._symbolProperty().value()),e&&this._chartWidgetCollection.setSymbol(this._symbolProperty().value())}_onSymbolResolved(e){const t=this._mainSeries().symbolInfo();t&&this._applyValuesFromSymbolInfo(t)}_applyValuesFromSymbolInfo(e){const t=e.pro_name||o.enabled("trading_terminal")&&(e.full_name||e.name)||"";this._proSymbol.setValue(t),e.aliases&&this._symbolNamesList.setValue(e.aliases)}_updateSeriesSymbolInfo(){this._seriesShortSymbol.setValue(this._properties().shortName.value());const e=this._mainSeries().symbolInfo();if(e){this._applyValuesFromSymbolInfo(e);{const t=e.supported_resolutions;t?this._watchedSupportedResolutions.setValue(t):this._watchedSupportedResolutions.setValue(void 0)}let t=(0,c.allChartStyles)();(0,a.isCloseBasedSymbol)(e)&&(t=t.filter(e=>(0,a.isSingleValueBasedStyle)(e))),this._watchedSupportedChartStyles.setValue(t),this._watchedIntraday.setValue(!!e.has_intraday),this._watchedSeconds.setValue(!!e.has_seconds),this._watchedTicks.setValue(!(0,a.isCloseBasedSymbol)(e)&&!!e.has_ticks),this._watchedRange.setValue(!(0,a.isCloseBasedSymbol)(e))}else this._watchedIntraday.deleteValue(),this._watchedSeconds.deleteValue(),this._watchedTicks.deleteValue(), +this._watchedRange.deleteValue(),this._proSymbol.deleteValue()}_watchedIntervalListener(e){this._intervalProperty().value()!==e&&this._chartWidgetCollection.setResolution(e)}_onIntervalPropertyChange(){const e=this._intervalProperty().value()!==this._watchedInterval.value();this._watchedInterval.setValue(this._intervalProperty().value()),e&&this._chartWidgetCollection.setResolution(this._intervalProperty().value())}_onChartModelCreated(e){if(!this._activeChartWidget)throw new Error("ChartWidget is undefined");this._chartWidgetBindingState=d.BoundToModel,this._activeChartWidget.modelCreated().unsubscribe(this,this._onChartModelCreated);const t=this._symbolProperty();t.subscribe(this,this._onSymbolPropertyChange),this._watchedSymbol.setValue(t.value()),this._watchedSymbol.subscribe(this._watchedSymbolListenerBound);const i=this._mainSeries();i.dataEvents().symbolResolved().subscribe(this,this._onSymbolResolved),this._watchedSymbol.hook=e=>(i.symbolSameAsCurrent(e)&&(e=i.symbol()),e),i.dataEvents().symbolResolved().subscribe(this,this._updateSeriesSymbolInfo),i.dataEvents().symbolError().subscribe(this,this._updateSeriesSymbolInfo),i.dataEvents().symbolNotPermitted().subscribe(this,this._updateSeriesSymbolInfo),i.dataEvents().symbolGroupNotPermitted().subscribe(this,this._updateSeriesSymbolInfo),this._updateSeriesSymbolInfo();const s=this._intervalProperty();s.subscribe(this,this._onIntervalPropertyChange),this._watchedInterval.setValue(s.value()),this._watchedInterval.subscribe(this._watchedIntervalListenerBound),this._activeChartWidget.readOnly()&&(this._watchedSymbol.writeLock=!0)}};window.TradingViewApi||(window.TradingViewApi={linking:u})},11417:(e,t,i)=>{"use strict";const{getLogger:s}=i(98125),r=s("TVLocalStorage");var n=function(){try{this.isAvailable=!0,this.localStorage=window.localStorage,this.localStorage.setItem("tvlocalstorage.available","true")}catch(e){delete this.isAvailable,delete this.localStorage}this._updateLength();try{this._report()}catch(e){}};n.prototype._report=function(){if(this.isAvailable){const e=10,t=[];for(let e=0;et.length-e.length);const i=t.slice(0,e);t.sort((e,t)=>t.key.length-e.key.length);const s=t.slice(0,e);r.logNormal("Total amount of keys in Local Storage: "+this.length),r.logNormal(`Top ${e} keys with longest values: ${JSON.stringify(i)}`),r.logNormal(`Top ${e} longest key names: ${JSON.stringify(s)}`);try{navigator.storage.estimate().then(e=>{r.logNormal("Storage estimate: "+JSON.stringify(e))})}catch(e){}}},n.prototype.length=0,n.prototype.isAvailable=!1,n.prototype.localStorage={"tvlocalstorage.available":"false"},n.prototype._updateLength=function(){if(this.isAvailable)this.length=this.localStorage.length;else{var e,t=0;for(e in this.localStorage)this.localStorage.hasOwnProperty(e)&&t++;this.length=t}},n.prototype.key=function(e){return this.isAvailable?this.localStorage.key(e):Object.keys(this.localStorage)[e]},n.prototype.getItem=function(e){ +return this.isAvailable?this.localStorage.getItem(e):void 0===this.localStorage[e]?null:this.localStorage[e]},n.prototype.setItem=function(e,t){this.isAvailable?this.localStorage.setItem(e,t):this.localStorage[e]=t,this._updateLength()},n.prototype.removeItem=function(e){this.isAvailable?this.localStorage.removeItem(e):delete this.localStorage[e],this._updateLength()},n.prototype.clear=function(){this.isAvailable?this.localStorage.clear():this.localStorage={},this._updateLength()};var o=function(e){this.storage=e};o.prototype.getItem=function(e){return Promise.resolve(this.storage.getItem(e))},o.prototype.setItem=function(e,t){return Promise.resolve(this.storage.setItem(e,t))},window.TVLocalStorage=new n,window.TVLocalStorageAsync=new o(window.TVLocalStorage),e.exports={TVLocalStorage:window.TVLocalStorage,TVLocalStorageAsync:window.TVLocalStorageAsync}},84015:(e,t,i)=>{"use strict";function s(e,t=!1){return!1}function r(e){return e}i.d(t,{isOnMobileAppPage:()=>s,urlWithMobileAppParams:()=>r})},19334:(e,t,i)=>{"use strict";function s(){}i.d(t,{addPerfMark:()=>o});const r=console.timeStamp?console.timeStamp.bind(console):s,n=window.performance&&performance.mark?performance.mark.bind(performance):s;window.performance&&performance.measure&&performance.measure.bind(performance),window.performance&&performance.clearMarks&&performance.clearMarks.bind(performance);function o(e){r(e),n(e)}},14905:(e,t,i)=>{"use strict";function s(e){return e===r(e)}function r(e){const t=e.indexOf("$"),i=e.indexOf("@");return t<0&&i>=0?null:e.substring(Math.max(t+1,0),i>=0?i:e.length)}i.d(t,{isPineIdString:()=>s,extractPineId:()=>r})},16216:(e,t,i)=>{"use strict";i.r(t),i.d(t,{registerService:()=>o,unregisterService:()=>a,hasService:()=>l,service:()=>c,waitServiceRegistered:()=>h});var s=i(81836);const r={},n=new Map;function o(e,t){if(l(e))throw new Error("Service already registered");r[e.id]=t;const i=n.get(e.id);void 0!==i&&(n.delete(e.id),i.resolve(t))}function a(e){if(!l(e))throw new Error("Service not found");r[e.id]=void 0}function l(e){return void 0!==r[e.id]}function c(e){const t=r[e.id];if(void 0===t)throw new Error("ServiceLocator: Service "+e.id+" not found");return t}function h(e){if(l(e))return Promise.resolve(c(e));let t=n.get(e.id);return void 0===t&&(t=(0,s.createDeferredPromise)(),n.set(e.id,t)),t.promise}},56840:(e,t,i)=>{"use strict";e=i.nmd(e),i(49483);i(85198).fetch;var s=i(28789).regExpEscape,r=i(21097).TVXWindowEvents,n=i(11417).TVLocalStorage,o=i(2872),a=i(67337),l=["s.tradingview.com","betacdn.tradingview.com"],c=a.enabled("use_localstorage_for_settings"),h=window.TVSettings=function(){var e=!1,t=null;function i(){return!t&&c}try{e=!TradingView.onWidget()&&parent&&parent!==window&&!!parent.IS_DEMO_PAGE}catch(e){}if(e){var d={"widgetbar.layout-settings":{widgets:{},settings:{minimized:!0}},notShowMainWizard:!0},u=function(e,t,i){var s=d[e];return null==s?t:s},p=function(){};return{loaded:!1,loadedModel:!1,getValue:u,getJSON:u,getBool:u,getFloat:u,getInt:u,setValue:p,setJSON:p,remove:p,keys:function(){ +return Object.keys(d)},keysMask:function(){return[]},sync:p,onSync:{subscribe:function(){}}}}window.environment;var _,m=TradingView.onWidget()?"tradingview-widget":"tradingview",g=m+".",f={},v=[/^widgetbar\.widget\.watchlist.+/,/.+quicks$/,/^widgetbar\.layout-settings$/,/^ChartSideToolbarWidget\.visible$/,/^onwidget\.watchlist$/,/^domepanel.visible$/,/^orderpanel.visible$/,/^chart\.favoriteDrawings$/,/^chart\.favoriteDrawingsPosition$/,/^loadChartDialog.favorites$/,/^ChartFavoriteDrawingToolbarWidget\.visible/,/^trading\.chart\.proterty$/,/^trading_floating_toolbar\.position$/,/^trading\.orderWidgetMode\./,/^symbolWatermark$/,/^pinereference\.size$/,/^pinereference\.position$/,/^hint\.+/,/^ChartDrawingToolbarWidget\.visible/];function S(e){return g+e}function y(e,t){var i=f[e];return null==i?t:i}function b(e,t,i){i=i||{};var s=""+t;return f[e]!==s&&(f[e]=s,C(e)),i.forceFlush&&!_&&(_=setTimeout((function(){_=void 0,P()}),10)),h}function w(e,t){return t=t||{},null!=f[e]&&(delete f[e],C(e)),t.forceFlush&&P(),h}function C(e){if(t)null==f[e]?t.removeValue(e):t.setValue(e,f[e]);else if(i())try{null==f[e]?n.removeItem(S(e)):n.setItem(S(e),f[e])}catch(e){}else 0;r.emit("settings",JSON.stringify({key:e,value:f[e]}))}function P(e){}function T(){return Object.keys(f)}function x(e){for(var t=0;t=0;n--)e.test(i[n])&&r.push(i[n]),e.lastIndex=0;return r},sync:function(e){null!==e?(t?M(t.initialSettings||{}):i()?(function(){if(TradingView.onWidget()&&l.includes(window.location.host))for(var e=n.length;e--;){var t=n.key(e);if(0===t.indexOf("tradingview.")){var i=t.replace("tradingview.",m+".");n.setItem(i,n.getItem(t)),n.removeItem(t)}}}(), +function(){f={};for(var e=!a.enabled("save_chart_properties_to_local_storage"),t=n.length;t--;){var i=n.key(t);if(i&&I(i)){var s=i.substring(g.length);e&&!x(s)||(f[s]=n.getItem(i))}}}()):M(e||{}),L.fire()):!0},onSync:L,setSettingsAdapter:function(e){t=e}}}();e&&e.exports&&(e.exports=h)},26843:(e,t,i)=>{"use strict";i.d(t,{StdTheme:()=>a.StdTheme,getStdChartTheme:()=>h,getStdThemeNames:()=>c,isStdTheme:()=>u,translateThemeName:()=>d});var s=i(28353),r=i(24377) ;const n=JSON.parse('{"content":{"chartProperties":{"scalesProperties":{"textColor":"#131722","lineColor":"rgba(42, 46, 57, 0)","backgroundColor":"#ffffff"},"paneProperties":{"vertGridProperties":{"color":"rgba(42, 46, 57, 0.06)"},"horzGridProperties":{"color":"rgba(42, 46, 57, 0.06)"},"crossHairProperties":{"color":"#9598A1"},"background":"#ffffff","backgroundGradientStartColor":"#ffffff","backgroundGradientEndColor":"#ffffff","separatorColor":"#E0E3EB"}},"sessions":{"graphics":{"backgrounds":{"outOfSession":{"color":"#2962FF","transparency":92},"preMarket":{"color":"#FF9800","transparency":92},"postMarket":{"color":"#2962FF","transparency":92}},"vertlines":{"sessBreaks":{"color":"#4985e7","style":2,"width":1}}}},"mainSourceProperties":{"baseLineColor":"#B2B5BE","candleStyle":{"borderColor":"#378658","upColor":"#089981","wickColor":"#737375","wickUpColor":"#089981","wickDownColor":"#F23645","downColor":"#F23645","borderUpColor":"#089981","borderDownColor":"#F23645"},"haStyle":{"borderColor":"#378658","upColor":"#089981","wickColor":"#737375","wickUpColor":"#089981","wickDownColor":"#F23645","downColor":"#F23645","borderUpColor":"#089981","borderDownColor":"#F23645"},"barStyle":{"downColor":"#F23645","upColor":"#089981"},"pnfStyle":{"downColor":"#F23645","upColor":"#089981","upColorProjection":"#a9dcc3","downColorProjection":"#f5a6ae"},"baselineStyle":{"baselineColor":"#758696","topFillColor1":"rgba(8, 153, 129, 0.28)","topFillColor2":"rgba(8, 153, 129, 0.05)","bottomFillColor1":"rgba(242, 54, 69, 0.05)","bottomFillColor2":"rgba(242, 54, 69, 0.28)","topLineColor":"#089981","bottomLineColor":"#F23645"},"areaStyle":{"transparency":100,"color1":"rgba(41, 98, 255, 0.28)","color2":"#2962FF","linecolor":"#2962FF","linewidth":2,"linestyle":0},"renkoStyle":{"upColor":"#089981","downColor":"#F23645","borderUpColor":"#089981","borderDownColor":"#F23645","upColorProjection":"#a9dcc3","downColorProjection":"#f5a6ae","borderUpColorProjection":"#a9dcc3","borderDownColorProjection":"#f5a6ae","wickUpColor":"#089981","wickDownColor":"#F23645"},"lineStyle":{"color":"#2962FF","linewidth":2,"linestyle":0},"kagiStyle":{"downColor":"#F23645","upColor":"#089981","upColorProjection":"#a9dcc3","downColorProjection":"#f5a6ae"},"pbStyle":{"upColor":"#089981","downColor":"#F23645","borderUpColor":"#089981","borderDownColor":"#F23645","upColorProjection":"#a9dcc3","downColorProjection":"#f5a6ae","borderUpColorProjection":"#a9dcc3","borderDownColorProjection":"#f5a6ae"},"rangeStyle":{"upColor":"#089981","downColor":"#F23645","upColorProjection":"#a9dcc3","downColorProjection":"#f5a6ae"}}}}'),o=JSON.parse('{"content":{"chartProperties":{"scalesProperties":{"textColor":"#B2B5BE","lineColor":"rgba(240, 243, 250, 0)","backgroundColor":"#ffffff"},"paneProperties":{"vertGridProperties":{"color":"rgba(240, 243, 250, 0.06)"},"horzGridProperties":{"color":"rgba(240, 243, 250, 0.06)"},"crossHairProperties":{"color":"#9598A1"},"background":"#131722","backgroundGradientStartColor":"#181C27","backgroundGradientEndColor":"#131722","backgroundType":"gradient","separatorColor":"#2A2E39"}},"sessions":{"graphics":{"backgrounds":{"outOfSession":{"color":"#2962FF","transparency":92},"preMarket":{"color":"#FF9800","transparency":92},"postMarket":{"color":"#2962FF","transparency":92}},"vertlines":{"sessBreaks":{"color":"#4985e7","style":2,"width":1}}}},"mainSourceProperties":{"baseLineColor":"#5d606b","candleStyle":{"borderColor":"#378658","upColor":"#089981","wickColor":"#B5B5B8","wickUpColor":"#089981","wickDownColor":"#F23645","downColor":"#F23645","borderUpColor":"#089981","borderDownColor":"#F23645"},"haStyle":{"borderColor":"#378658","upColor":"#089981","wickColor":"#B5B5B8","wickUpColor":"#089981","wickDownColor":"#F23645","downColor":"#F23645","borderUpColor":"#089981","borderDownColor":"#F23645"},"barStyle":{"downColor":"#F23645","upColor":"#089981"},"pnfStyle":{"downColor":"#F23645","upColor":"#089981","upColorProjection":"#336854","downColorProjection":"#7f323f"},"baselineStyle":{"baselineColor":"#758696","topFillColor1":"rgba(8, 153, 129, 0.28)","topFillColor2":"rgba(8, 153, 129, 0.05)","bottomFillColor1":"rgba(242, 54, 69, 0.05)","bottomFillColor2":"rgba(242, 54, 69, 0.28)","topLineColor":"#089981","bottomLineColor":"#F23645"},"areaStyle":{"transparency":100,"color1":"rgba(41, 98, 255, 0.28)","color2":"#2962FF","linecolor":"#2962FF","linewidth":2,"linestyle":0},"renkoStyle":{"upColor":"#089981","downColor":"#F23645","borderUpColor":"#089981","borderDownColor":"#F23645","upColorProjection":"#336854","downColorProjection":"#7f323f","borderUpColorProjection":"#336854","borderDownColorProjection":"#7f323f","wickUpColor":"#089981","wickDownColor":"#F23645"},"lineStyle":{"color":"#2962FF","linewidth":2,"linestyle":0},"kagiStyle":{"downColor":"#F23645","upColor":"#089981","upColorProjection":"#336854","downColorProjection":"#7f323f"},"pbStyle":{"upColor":"#089981","downColor":"#F23645","borderUpColor":"#089981","borderDownColor":"#F23645","upColorProjection":"#336854","downColorProjection":"#7f323f","borderUpColorProjection":"#336854","borderDownColorProjection":"#7f323f"},"rangeStyle":{"upColor":"#089981","downColor":"#F23645","upColorProjection":"#336854","downColorProjection":"#7f323f"}}}}') ;var a=i(24633);function l(){return{[a.StdTheme.Light]:JSON.parse(JSON.stringify(n)),[a.StdTheme.Dark]:JSON.parse(JSON.stringify(o))}}function c(){return[a.StdTheme.Light,a.StdTheme.Dark]}function h(e){return l()[e]}function d(e){return{[a.StdTheme.Light]:s.t("Light",{context:"colorThemeName"}),[a.StdTheme.Dark]:s.t("Dark",{context:"colorThemeName"})}[e]||e}function u(e){const t=l();return c().some(i=>p(t[i],e))}function p(e,t){let i=e.content===t.content;return function(e={},t){try{!function e(t,i,s){for(const r in t)if(t.hasOwnProperty(r)){const n=i.concat(r);if("object"==typeof t[r])e(t[r],n,s);else if(s(n,t[r]))throw new Error("exit")}}(e,[],t)}catch(e){return}}(e.content,(e,s)=>{const n=function(e,t={}){let i=t;for(let t=0;t{"use strict";var s;i.d(t,{StdTheme:()=>s}),function(e){e.Light="light",e.Dark="dark"}(s||(s={}))},6087:(e,t,i)=>{"use strict";i.r(t),i.d(t,{DEFAULT_THEME:()=>p,extractThemeFromModel:()=>R,getCurrentTheme:()=>S,getStdTheme:()=>L,getStdThemeNames:()=>I,getStdThemedValue:()=>A,getTheme:()=>T,getThemeNames:()=>x,getThemedColor:()=>y,isPublicTheme:()=>v,isStdTheme:()=>N,isStdThemeName:()=>M,isStdThemedDefaultValue:()=>E,isThemeExist:()=>V,loadTheme:()=>b,removeTheme:()=>D,restoreTheme:()=>w,saveTheme:()=>k,savedThemeName:()=>C,syncTheme:()=>P,themes:()=>f,translateStdThemeName:()=>B});var s=i(24377),r=i(59803),n=i(56840);function o(){return(0,n.getValue)("current_theme.name")||null}var a=i(85198);const l=(0,i(98125).getLogger)("Themes.Provider");let c=null;function h(e){return(0,a.fetch)("/theme/?themeName="+encodeURIComponent(e),{credentials:"include",method:"GET"}).then(e=>e.json()).then(e=>{const t={};return e.content&&(t.content=JSON.parse(e.content)),t})}var d=i(26843),u=i(45345);const p="light";var _=i(28353) ;const m=JSON.parse('{"color-bg-primary":"color-cold-gray-850","color-bg-primary-hover":"color-cold-gray-800","color-bg-secondary":"color-cold-gray-900","color-bg-highlight":"color-cold-gray-900","color-bg-scroll-buttons":"color-cold-gray-800","color-legacy-bg-scroll-buttons":"color-cold-gray-550","color-legacy-bg-widget":"color-cold-gray-900","color-text-primary":"color-cold-gray-200","color-text-secondary":"color-cold-gray-500","color-text-tertiary":"color-cold-gray-400","color-text-disabled":"color-cold-gray-650","color-accent-content":"color-white","color-divider":"color-cold-gray-700","color-divider-hover":"color-cold-gray-800","color-divider-secondary":"color-cold-gray-800","color-box-shadow":"color-cold-gray-900","color-active-hover-text":"color-cold-gray-300","color-alert-text":"color-cold-gray-200","color-border":"color-cold-gray-750","color-border-chat-fields":"color-cold-gray-750","color-border-hover":"color-cold-gray-650","color-border-table":"color-cold-gray-800","color-brand":"color-tv-blue-500","color-brand-hover":"color-tv-blue-600","color-brand-active":"color-tv-blue-700","color-button-hover-bg":"color-cold-gray-850","color-chart-page-bg":"color-cold-gray-800","color-common-tooltip-bg":"color-cold-gray-750","color-danger":"color-ripe-red-600","color-danger-hover":"color-ripe-red-500","color-danger-active":"color-ripe-red-400","color-depthrenderer-fill-style":"color-cold-gray-150","color-depthrenderer-stroke-style":"color-cold-gray-650","color-disabled-border-and-color":"color-cold-gray-800","color-disabled-input":"color-cold-gray-750","color-empty-container-message":"color-cold-gray-500","color-highlight-new":"color-tv-blue-a800","color-icons":"color-cold-gray-500","color-input-bg":"color-cold-gray-800","color-input-textarea-readonly":"color-cold-gray-650","color-input-placeholder-text":"color-cold-gray-700","color-input-publish-bg":"color-cold-gray-900","color-item-active-blue":"color-tv-blue-a800","color-item-hover-active-bg":"color-cold-gray-800","color-item-hover-bg":"color-cold-gray-800","color-item-hover-blue":"color-tv-blue-a800","color-item-selected-blue":"color-tv-blue-a800","color-item-active-text":"color-cold-gray-200","color-item-active-bg":"color-tv-blue-500","color-link":"color-tv-blue-500","color-link-hover":"color-tv-blue-600","color-link-active":"color-tv-blue-700","color-list-item":"color-cold-gray-500","color-list-nth-child-bg":"color-cold-gray-850","color-news-highlight":"color-cold-gray-800","color-pane-bg":"color-cold-gray-900","color-pane-secondary-bg":"color-cold-gray-850","color-placeholder":"color-cold-gray-650","color-popup-menu-item-hover-bg":"color-cold-gray-800","color-popup-menu-separator":"color-cold-gray-700","color-row-hover-active-bg":"color-cold-gray-800","color-sb-scrollbar-body-bg":"color-cold-gray-650","color-screener-description":"color-cold-gray-200","color-section-separator-border":"color-cold-gray-750","color-search-button-hover":"color-cold-gray-700","color-separator-table-chat":"color-cold-gray-750","color-success":"color-minty-green-700","color-success-hover":"color-minty-green-600","color-success-active":"color-minty-green-500","color-tag-active-bg":"color-cold-gray-750","color-tag-hover-bg":"color-cold-gray-800","color-text-regular":"color-cold-gray-200","color-toolbar-button-text":"color-cold-gray-300","color-toolbar-button-text-hover":"color-cold-gray-300","color-toolbar-button-text-active":"color-tv-blue-500","color-toolbar-button-text-active-hover":"color-tv-blue-600","color-toolbar-button-background-hover":"color-cold-gray-800","color-toolbar-button-background-secondary-hover":"color-cold-gray-750","color-toolbar-toggle-button-background-active":"color-tv-blue-500","color-toolbar-toggle-button-background-active-hover":"color-tv-blue-600","color-toolbar-interactive-element-text-normal":"color-cold-gray-300","color-toolbar-interactive-element-text-hover":"color-cold-gray-250","color-toolbar-opened-element-bg":"color-cold-gray-800","color-tooltip-bg":"color-cold-gray-750","color-tv-button-checked":"color-cold-gray-500","color-tv-dialog-caption":"color-cold-gray-50","color-tv-dropdown-item-hover-bg":"color-cold-gray-800","color-underlined-text":"color-cold-gray-300","color-widget-pages-bg":"color-cold-gray-900","color-warning":"color-tan-orange-700","color-forex-icon":"color-white","color-list-item-active-bg":"color-tv-blue-500","color-list-item-hover-bg":"color-cold-gray-800","color-list-item-text":"color-cold-gray-200","color-price-axis-label-back":"color-cold-gray-800","color-price-axis-label-text":"color-cold-gray-500","color-price-axis-gear":"color-cold-gray-500","color-price-axis-gear-hover":"color-cold-gray-400","color-price-axis-highlight":"color-cold-gray-800","color-bid":"color-tv-blue-500","color-scroll-bg":"color-cold-gray-750","color-scroll-border":"color-cold-gray-850","color-widget-border":"color-cold-gray-800","color-scroll-buttons-arrow":"color-white","color-control-intent-default":"color-cold-gray-650","color-control-intent-success":"color-minty-green-600","color-control-intent-primary":"color-tv-blue-500","color-control-intent-warning":"color-tan-orange-500","color-control-intent-danger":"color-ripe-red-700","color-growing":"color-minty-green-600","color-falling":"color-ripe-red-600","color-pre-market":"color-tan-orange-600","color-pre-market-bg":"color-tan-orange-400","color-post-market":"color-tv-blue-500","color-post-market-bg":"color-tv-blue-400","color-market-open":"color-minty-green-500","color-market-open-bg":"color-minty-green-400","color-market-closed":"color-cold-gray-400","color-market-holiday":"color-cold-gray-400","color-invalid-symbol":"color-ripe-red-400","color-invalid-symbol-hover":"color-ripe-red-500","color-replay-mode":"color-tv-blue-500","color-replay-mode-icon":"color-tv-blue-50","color-replay-mode-hover":"color-tv-blue-600","color-notaccurate-mode":"color-berry-pink-700","color-notaccurate-mode-bg":"color-berry-pink-400","color-delay-mode":"color-tan-orange-700","color-delay-mode-bg":"color-tan-orange-400","color-eod-mode":"color-grapes-purple-700","color-eod-mode-bg":"color-grapes-purple-400","color-data-problem":"color-ripe-red-600","color-data-problem-bg":"color-ripe-red-400","color-data-problem-hover":"color-ripe-red-500","color-list-item-bg-highlighted":"color-tv-blue-a900","color-list-item-bg-selected":"color-tv-blue-a800","color-list-item-bg-highlighted-hover":"color-tv-blue-a800","color-list-item-bg-selected-hover":"color-tv-blue-a700","color-screener-header-bg":"color-cold-gray-850","color-screener-header-bg-hover":"color-cold-gray-800","color-overlay":"color-cold-gray-950","color-card-border":"color-cold-gray-700","color-card-border-hover":"color-cold-gray-600","color-background-special-primary":"color-black","color-stroke-special-primary":"color-cold-gray-800","color-selection-bg":"color-tv-blue-a700"}') diff --git a/charting_library/charting_library.cjs.js b/charting_library/charting_library.cjs.js index 7846c402..6f1ad102 100644 --- a/charting_library/charting_library.cjs.js +++ b/charting_library/charting_library.cjs.js @@ -1 +1 @@ -"use strict";function t(e,n){const i={...e};for(const o in n)"object"!=typeof e[o]||null===e[o]||Array.isArray(e[o])?void 0!==n[o]&&(i[o]=n[o]):i[o]=t(e[o],n[o]);return i}Object.defineProperty(exports,"__esModule",{value:!0});const e={mobile:{disabled_features:["left_toolbar","header_widget","timeframes_toolbar","edit_buttons_in_legend","context_menus","control_bar","border_around_the_chart"],enabled_features:[]}},n={width:800,height:500,interval:"1D",timezone:"Etc/UTC",container:"",library_path:"",locale:"en",widgetbar:{details:!1,watchlist:!1,watchlist_settings:{default_symbols:[]}},overrides:{"mainSeriesProperties.showCountdown":!1},studies_overrides:{},trading_customization:{position:{},order:{}},brokerConfig:{configFlags:{}},fullscreen:!1,autosize:!1,disabled_features:[],enabled_features:[],debug:!1,logo:{},time_frames:[{text:"5y",resolution:"1W"},{text:"1y",resolution:"1W"},{text:"6m",resolution:"120"},{text:"3m",resolution:"60"},{text:"1m",resolution:"30"},{text:"5d",resolution:"5"},{text:"1d",resolution:"1"}],client_id:"0",user_id:"0",charts_storage_api_version:"1.0",favorites:{intervals:[],chartTypes:[]}};let i=!1;function o(t){var e;const n=/\.woff(\d*)/.exec(t);return``}function s(t,e){const n=new URL(`${t||""}`,location.href).href,i=JSON.parse('["bundles/runtime.1c5f2159678050219bc6.js","bundles/5386.eb112967859403067d3d.css","bundles/5386.eb112967859403067d3d.rtl.css","bundles/1857.10c97feeb46d934b8a25.js","bundles/library.7336148543ee0b93bdab.js","bundles/b1a63a011fd92dfb93db6db243bb036c.woff2","bundles/40f9a03d174178efb12303caa9bc7cd8.woff2","bundles/3293616ec0c605c7c2db25829a0a509e.woff"]'),s=JSON.parse('[{"iso":"ar","dir":"rtl","language":"ar"},{"iso":"pt","dir":"ltr","language":"pt"},{"iso":"cs","dir":"ltr","language":"cs"},{"iso":"de","dir":"ltr","language":"de"},{"iso":"en","dir":"ltr","language":"en"},{"iso":"es","dir":"ltr","language":"es"},{"iso":"fa","dir":"rtl","language":"fa"},{"iso":"fr","dir":"ltr","language":"fr"},{"iso":"he","dir":"rtl","language":"he_IL"},{"iso":"hu","dir":"ltr","language":"hu_HU"},{"iso":"id","dir":"ltr","language":"id_ID"},{"iso":"en","dir":"ltr","language":"en"},{"iso":"it","dir":"ltr","language":"it"},{"iso":"ja","dir":"ltr","language":"ja"},{"iso":"ko","dir":"ltr","language":"ko"},{"iso":"ms","dir":"ltr","language":"ms_MY"},{"iso":"pl","dir":"ltr","language":"pl"},{"iso":"ru","dir":"ltr","language":"ru"},{"iso":"sv","dir":"ltr","language":"sv"},{"iso":"th","dir":"ltr","language":"th"},{"iso":"tr","dir":"ltr","language":"tr"},{"iso":"vi","dir":"ltr","language":"vi"},{"iso":"zh-Hans","dir":"ltr","language":"zh"},{"iso":"zh-Hant","dir":"ltr","language":"zh_TW"},{"iso":"el","dir":"ltr","language":"el"},{"iso":"nl","dir":"ltr","language":"nl_NL"},{"iso":"ro","dir":"ltr","language":"ro"}]'),r=encodeURIComponent(e),a=s.find((t=>t.language===r)),d=`lang="${a.iso}" dir="${a.dir}"`,l=`\n${function(t,e){if(void 0===t)return"";const n=[],i=[],s=[],r=/\.css$/i,a=/\.rtl\.css$/i;for(const d of t)d.endsWith(".js")?i.push(`