@qrvey/widget-configurability 0.0.0-beta.4657 → 0.0.0-beta.4707

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/README.md +23 -1
  2. package/dist/cjs/doc/dashboard.structure.doc.js +3 -2
  3. package/dist/cjs/doc/dashboard.structure.doc.js.map +1 -1
  4. package/dist/cjs/index.js +4 -1
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/metadata/customization-docs.js +200 -0
  7. package/dist/cjs/metadata/customization-docs.js.map +1 -0
  8. package/dist/cjs/metadata/customization-metadata.js +80 -24
  9. package/dist/cjs/metadata/customization-metadata.js.map +1 -1
  10. package/dist/cjs/metadata/index.js +4 -1
  11. package/dist/cjs/metadata/index.js.map +1 -1
  12. package/dist/cjs/metadata/labels/chart-panel.defaults.js +15 -0
  13. package/dist/cjs/metadata/labels/chart-panel.defaults.js.map +1 -0
  14. package/dist/cjs/metadata/labels/chart-panel.labels.js +457 -44
  15. package/dist/cjs/metadata/labels/chart-panel.labels.js.map +1 -1
  16. package/dist/cjs/metadata/labels/dashboard.defaults.js +451 -0
  17. package/dist/cjs/metadata/labels/dashboard.defaults.js.map +1 -0
  18. package/dist/cjs/metadata/labels/dashboard.labels.js +1075 -179
  19. package/dist/cjs/metadata/labels/dashboard.labels.js.map +1 -1
  20. package/dist/cjs/metadata/labels/submodule.labels.js +11 -0
  21. package/dist/cjs/metadata/labels/submodule.labels.js.map +1 -0
  22. package/dist/cjs/structures/dashboard.structure.v1.js +5 -1
  23. package/dist/cjs/structures/dashboard.structure.v1.js.map +1 -1
  24. package/dist/cjs/structures/download-manager.structure.v1.js +1 -1
  25. package/dist/cjs/structures/download-manager.structure.v1.js.map +1 -1
  26. package/dist/cjs/structures/download-modal.structure.v1.js +13 -2
  27. package/dist/cjs/structures/download-modal.structure.v1.js.map +1 -1
  28. package/dist/cjs/utils/defaults.helpers.js +10 -0
  29. package/dist/cjs/utils/defaults.helpers.js.map +1 -1
  30. package/dist/esm/index.mjs +43 -8
  31. package/dist/esm/index.mjs.map +1 -1
  32. package/dist/esm/metadata.mjs +2129 -272
  33. package/dist/esm/metadata.mjs.map +1 -1
  34. package/dist/types/index.d.ts +9 -46
  35. package/dist/types/metadata.d.ts +74 -8
  36. package/dist/types/structure.models-BqVB4VLP.d.ts +89 -0
  37. package/package.json +1 -1
  38. package/dist/types/customization.models-CCSWjfb2.d.ts +0 -47
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/metadata/labels/chart-panel.labels.ts","../../src/metadata/labels/dashboard.labels.ts","../../src/constants/structure.constants.ts","../../src/utils/defaults.helpers.ts","../../src/structures/download-modal.structure.v1.ts","../../src/structures/dashboard.structure.v1.ts","../../src/structures/download-manager.structure.v1.ts","../../src/structures/report.structure.v1.ts","../../src/structures/chart-panel.structure.v1.ts","../../src/structures/chart-gallery.structure.v1.ts","../../src/structures/chart-builder.structure.v1.ts","../../src/constants/configs.ts","../../src/models/conditions.models.ts","../../src/utils/conditions.helpers.ts","../../src/utils/merge.helpers.ts","../../src/utils/layers.helpers.ts","../../src/utils/logger.helpers.ts","../../src/utils/structural.helpers.ts","../../src/structural-manager.ts","../../src/utils/scope.helpers.ts","../../src/metadata/customization-metadata.ts"],"names":["CHART_PANEL_LABELS","header","label","floatingMenu","menuLayout","body","optionMenu","optionDateGrouping","dashFilterScope","tabFilterScope","panelFilterScope","qChartName","qFitPanel","qChartSelection","qColumnSection","qSorting","qColumnReplacement","qColumnAggregation","qColumnGrouping","qDateGrouping","qColumnSelection","qResetColumnsWidth","qSmartAnalyzer","qEditChart","qDuplicateChart","qDownloadChart","qChartJPG","qChartPDF","qChartCSV","qChartSummary","qChartExcel","qFilter","qAddFilter","qEditFilter","qDeleteFilter","qYear","qQuarter","qQuarterOnly","qMonth","qMonthOnly","qWeek","qDay","qDayOnly","qHour","qHourOnly","qMinute","qMinuteOnly","qSecond","qSecondOnly","qComparativeAnalysis","DASHBOARD_LABELS","navBar","assetList","controlBarLeft","controlBarRight","menuBar","toolBar","configPanel","filterPanel","downloadModal","canvas","duplicateModal","grid","containerFilterScope","viewOnlyFilterScope","edit","file","insert","options","timezone","qAppTitle","qBackButton","qQvTokenExpiredMessage","qGoToDashBackButton","qCreateDash","qSwitchView","qFilterBy","qSortBy","qSearch","qSelectColumn","qStatus","qPreview","qPublish","qUnpublish","qDesign","qEditDash","qUseDash","qRenameDash","qDeleteDash","qManageTags","qTags","qFilterByTags","qDuplDash","qDuplDashAndCharts","qManageSharing","qFavorite","qCreatedDate","qLastModifDate","qNumberOfCharts","qSharing","qSharingIcon","qOwner","qDescription","qDashFavorite","qDashName","qDashDesc","qMnuCreateDash","qMnuOpenDash","qMnuDuplicateDash","qMnuDuplicateDashAndCharts","qMnuCanvasSize","qMnuThemes","qMnuDeleteDash","qMnuDownloadDash","qCreateDataset","qCreateCustomDataset","qViewCustomDataset","qUndoRedo","qCopyElement","qPasteElement","qCutElement","qRemoveElement","qDuplElement","qSelectAllElem","qSelectAllContElem","qMnuInsertChart","qMnuExistingChart","qMnuNewChart","qMnuNewChartAI","qMnuInsertFilterCtrl","qMnuDatePicker","qMnuInputBox","qMnuMultiSelectList","qMnuSingleSelectList","qMnuInsertShape","qMnuLine","qMnuRectangle","qMnuEllipse","qMnuInsertText","qMnuInsertImage","qMnuInsertButton","qMnuInsertContainer","qMnuInsertHeader","qMnuInsertTabs","qMnuArrange","qMnuBringToFront","qMnuSendToBack","qMnuAlign","qMnuDisplayGrid","qMnuSnapToGrid","qMnuSwitchGrid","qCanvasSize","qInsertChart","qExistingChart","qNewChart","qNewChartAI","qInsertFilterCtrl","qDatePicker","qInputBox","qMultiSelectList","qSingleSelectList","qInsertShape","qLine","qRectangle","qEllipse","qSnapToGrid","qDisplayGrid","qSwitchGrid","qDownloadDash","qDashPDF","qDashCSV","qDashExcel","qDashDataset","qArrange","qBringToFront","qSendToBack","qResponsiveView","qDesktop","qTablet","qMobile","qBreakpoints","qAlign","qAlignRight","qAlignLeft","qAlignCenter","qAlignTop","qAlignMiddle","qAlignBottom","qInsertText","qInsertImage","qInsertButton","qInsertContainer","qRespGridMargins","qRespGridColumns","qThemes","qDashVersion","qGetDashVersion","qSourceDashBanner","qHiddenItems","qDiscard","qSave","qSwitchMode","qHideToolBar","qDownloadList","qChangeLayout","qEnabDisabAllFilters","qDeleteAllFilters","qFilterSettings","qEnabDisabFilter","qScheduleOption","qSubscribeOption","qSubscribeExternalUsers","qSubscribeBanner","qOwnerLabel","qSubscribeOrganization","qSubscribeMyself","qSubscribeSpecificPeople","qSubscribeOwner","qIncludeHeader","qIncludeHyperlinks","qExportVersion","qSavedVersionWarning","qUnsavedVersionWarning","qCharts","qFilters","qDashActions","STRUCTURE_SECTION_NAME_SEPARATOR","STRUCTURE_VIEW_NAME_SEPARATOR","STRUCTURE_RESERVED_WORDS","Widget","WIDGET_SUBMODULE_NAMES","WIDGET_STRUCTURE_SCOPE_KIND","WIDGET_STRUCTURE_SCOPE_FORMAT","WidgetVersion","FONT_SIZES","applyValidation","currentObj","validatorMap","parentKey","sanitize","validatedObj","Object","keys","forEach","key","fullKey","value","Array","isArray","validateDefaults","obj","isANumber","_value","Number","isNaN","undefined","numberMinMaxValue","maxValue","minValue","fontSizeMinMaxValue","minSize","maxSize","inputSize","parseInt","includes","validFontSizes","filter","size","length","closestSize","smallestDiff","Math","abs","diff","fontColorValue","normalizedColor","toLowerCase","validateBoolean","validateUnsavedChangesBehavior","validateType","validValues","receivedValue","toUpperCase","DX_VALIDATOR_MAP","unsavedChangesBehavior","DOWNLOAD_MODAL_VALIDATOR_MAP","subscribeMyself","DOWNLOAD_MODAL_V1_KEYS","DOWNLOAD_MODAL_V1_KEEP_INHERITANCE","hostKeepInheritance","section","fromEntries","entries","map","alias","DOWNLOAD_MODAL_V1_DEFAULTS","downloadModalV1Config","version","keepInheritance","baseStructure","defaults","DOWNLOAD_MODAL_HOST_KEYS","dashboardV1Config","views","list","design","preview","endUser","endUserTopBar","assetListViewMode","asset","card","table","removeElement","dragElement","resizeElement","qOptionsMenu","subModules","chartPanel","chartGallery","chartBuilder","downloadManagerV1Config","main","detail","controlBar","filters","qFilterByFileType","qFilterByExecution","qFilterByWidget","qFilterByAsset","qFilterByOrganization","qFilterByOwner","qRemoveFilters","qScheduleDetail","qFilesExported","qMoreInfo","bottomBar","moreInfoModal","reportV1Config","tabBar","qDownloadReport","dataPanel","tabDataset","tabParameters","repoFilterScope","optionMenuChildren","headerConfig","floatingMenuConfig","item","chartPanelV1Config","chartGalleryV1Config","chartTypeFilter","showSummary","inputSearch","switch","title","chartBuilderV1Config","widgetConfigs","DASHBOARD","v1","latest","REPORT","DOWNLOAD_MANAGER","DOWNLOAD_MODAL","CHART_PANEL","CHART_GALLERY","CHART_BUILDER","widgetValidators","allowedOperators","isOperator","getValue","condition","state","field","_evalConditionOperator","operator","OPERATOR_MAP","a","b","startsWith","endsWith","contains","evaluateCondition","conditions","every","c","_evalCondition","evalFn","checkConditions","cond","effect","result","mergeDeep","obj1","obj2","settings","defaultSettings","mergeExistingValues","mergeMissingProperties","isValid","objectCopy","val1","val2","isObject","prototype","hasOwnProperty","call","toString","SUBMODULES_KEY","isPlainObject","stringList","normalizeCondition","conditionValue","normalizeSubmodules","name","submodule","normalizeLayer","allowViews","layer","remove","keep","conditional","flatMap","rest","view","viewLayer","mergeDefaults","previous","next","mergeLayerDefaults","layers","last","viewNames","Set","_a","rootDefaults","reduce","merged","viewDefaults","effective","isSubmodulesKey","asItemObject","intersectItem","current","other","otherItem","childMap","intersectViewMaps","hasDefaults","hasChildMap","collectSubmoduleLayers","maps","collection","LOG_PREFIX","logWarning","message","console","warn","getWidgetStructure","config","customization","validationMap","calculateViewMap","permissionMap","keepAliases","assign","calculateSpecificViewMap","customDefaults","calculateCustomDefaults","prevDefaults","submodules","calculateSubmodules","conditionMaps","calculateConditions","calculatePermissionMap","calculateRootDefaults","calculateDefaults","viewDefinition","viewConditionals","viewKeys","viewPrefix","getViewPrefix","getStructureKey","viewValue","matchWildcard","pattern","regexPattern","RegExp","replace","test","keyIsIncludedInKeep","keyIsIncludedInRemove","canInsertInCustomization","validateKeepOption","includedInRemove","includedInKeep","canInsert","keepValue","keepResult","conditionAffect","evalInsertKey","hasKeepOption","customizationView","custCanInsert","custViewCanInsert","some","x","canInsertKey","checkCondition","addKeyToPermissions","keyAttr","addDefaultKey","addChildMapKey","getConditionsForKey","pathPrefix","previousKeepOption","currentKeepOption","nodeHasKeepOption","configValue","currentKey","newPrefix","canInsertResult","calculatePermissionMapArray","mapValue","push","rootConditionals","customConditionals","viewSubmodules","customRootSubmodules","customSubmodules","mergeObjects","customRootDefaults","defaultObj","structureDefaults","itemDefaults","baseDefaults","prevObj","newObj","mapObjKeys","mapArrayKeys","nodeKeys","defaultsSimple","option","fullPath","getWidgetConfig","widget","versionSet","widgetConfigurability","Error","buildStructure","buildLayeredStructure","error","structureMap","WidgetStructureInstance","inline","engineOptions","layerMaps","layerMap","constructor","viewMap","submoduleLayers","isVisible","getChildMap","getSubmodule","module","getSubmoduleLayers","getDefaults","getRootDefaults","scope","prefixKey","present","sectionPath","split","pop","namespace","defaultsNamespace","sectionDefaults","childPrefix","structureVersion","slice","JSON","parse","stringify","kind","format","source","structureFromSubmodule","parent","find","widgetMetadata","labels","widgetOfSubmodule","resolveTarget","target","embedded","structureKeysOf","prefix","humanize","id","char","getCustomizationLabel","getCustomizationTree","resolved","ordered","roots","nodes","Map","ensure","existing","get","parts","description","node","set","join","children","instanceFor","instance","matches","scopesOf","own","root","lockOf","hiddenParent","verb","rootRemove","viewRemove","getCustomizationTreeState","tree","instances","walk","hiddenParents","states","visible","Boolean","locks","index","lockedBy","childParents","stateNode","isEmptyObject","toggleCustomizationKey","chain","step","holder","block","property"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGO,IAAMA,kBAAAA,GAA4C;EACrDC,MAAAA,EAAQ;IAAEC,KAAAA,EAAO;AAAe,GAAA;EAChCC,YAAAA,EAAc;IAAED,KAAAA,EAAO;AAAgB,GAAA;EACvCE,UAAAA,EAAY;IAAEF,KAAAA,EAAO;AAAc,GAAA;EACnCG,IAAAA,EAAM;IAAEH,KAAAA,EAAO;AAAa,GAAA;EAC5B,cAAA,EAAgB;IAAEA,KAAAA,EAAO;AAAgB,GAAA;EACzCI,UAAAA,EAAY;IAAEJ,KAAAA,EAAO;AAAqB,GAAA;EAC1CK,kBAAAA,EAAoB;IAAEL,KAAAA,EAAO;AAAwB,GAAA;EACrDM,eAAAA,EAAiB;IAAEN,KAAAA,EAAO;AAAoB,GAAA;EAC9CO,cAAAA,EAAgB;IAAEP,KAAAA,EAAO;AAAc,GAAA;EACvCQ,gBAAAA,EAAkB;IAAER,KAAAA,EAAO;AAAgB,GAAA;EAC3CS,UAAAA,EAAY;IAAET,KAAAA,EAAO;AAAa,GAAA;EAClCU,SAAAA,EAAW;IAAEV,KAAAA,EAAO;AAAe,GAAA;EACnCW,eAAAA,EAAiB;IAAEX,KAAAA,EAAO;AAAuB,GAAA;EACjDY,cAAAA,EAAgB;IAAEZ,KAAAA,EAAO;AAAiB,GAAA;EAC1Ca,QAAAA,EAAU;IAAEb,KAAAA,EAAO;AAAU,GAAA;EAC7Bc,kBAAAA,EAAoB;IAAEd,KAAAA,EAAO;AAAqB,GAAA;EAClDe,kBAAAA,EAAoB;IAAEf,KAAAA,EAAO;AAAqB,GAAA;EAClDgB,eAAAA,EAAiB;IAAEhB,KAAAA,EAAO;AAAkB,GAAA;EAC5CiB,aAAAA,EAAe;IAAEjB,KAAAA,EAAO;AAAgB,GAAA;EACxCkB,gBAAAA,EAAkB;IAAElB,KAAAA,EAAO;AAAmB,GAAA;EAC9CmB,kBAAAA,EAAoB;IAAEnB,KAAAA,EAAO;AAAsB,GAAA;EACnDoB,cAAAA,EAAgB;IAAEpB,KAAAA,EAAO;AAAiB,GAAA;EAC1CqB,UAAAA,EAAY;IAAErB,KAAAA,EAAO;AAAa,GAAA;EAClCsB,eAAAA,EAAiB;IAAEtB,KAAAA,EAAO;AAAkB,GAAA;EAC5CuB,cAAAA,EAAgB;IAAEvB,KAAAA,EAAO;AAAW,GAAA;EACpCwB,SAAAA,EAAW;IAAExB,KAAAA,EAAO;AAAM,GAAA;EAC1ByB,SAAAA,EAAW;IAAEzB,KAAAA,EAAO;AAAM,GAAA;EAC1B0B,SAAAA,EAAW;IAAE1B,KAAAA,EAAO;AAAM,GAAA;EAC1B2B,aAAAA,EAAe;IAAE3B,KAAAA,EAAO;AAAU,GAAA;EAClC4B,WAAAA,EAAa;IAAE5B,KAAAA,EAAO;AAAQ,GAAA;EAC9B6B,OAAAA,EAAS;IAAE7B,KAAAA,EAAO;AAAU,GAAA;EAC5B8B,UAAAA,EAAY;IAAE9B,KAAAA,EAAO;AAAa,GAAA;EAClC+B,WAAAA,EAAa;IAAE/B,KAAAA,EAAO;AAAc,GAAA;EACpCgC,aAAAA,EAAe;IAAEhC,KAAAA,EAAO;AAAgB,GAAA;EACxCiC,KAAAA,EAAO;IAAEjC,KAAAA,EAAO;AAAO,GAAA;EACvBkC,QAAAA,EAAU;IAAElC,KAAAA,EAAO;AAAU,GAAA;EAC7BmC,YAAAA,EAAc;IAAEnC,KAAAA,EAAO;AAAe,GAAA;EACtCoC,MAAAA,EAAQ;IAAEpC,KAAAA,EAAO;AAAQ,GAAA;EACzBqC,UAAAA,EAAY;IAAErC,KAAAA,EAAO;AAAa,GAAA;EAClCsC,KAAAA,EAAO;IAAEtC,KAAAA,EAAO;AAAO,GAAA;EACvBuC,IAAAA,EAAM;IAAEvC,KAAAA,EAAO;AAAM,GAAA;EACrBwC,QAAAA,EAAU;IAAExC,KAAAA,EAAO;AAAW,GAAA;EAC9ByC,KAAAA,EAAO;IAAEzC,KAAAA,EAAO;AAAO,GAAA;EACvB0C,SAAAA,EAAW;IAAE1C,KAAAA,EAAO;AAAY,GAAA;EAChC2C,OAAAA,EAAS;IAAE3C,KAAAA,EAAO;AAAS,GAAA;EAC3B4C,WAAAA,EAAa;IAAE5C,KAAAA,EAAO;AAAc,GAAA;EACpC6C,OAAAA,EAAS;IAAE7C,KAAAA,EAAO;AAAS,GAAA;EAC3B8C,WAAAA,EAAa;IAAE9C,KAAAA,EAAO;AAAc,GAAA;EACpC+C,oBAAAA,EAAsB;IAAE/C,KAAAA,EAAO;AAAuB;AAC1D,CAAA;;;ACjDO,IAAMgD,gBAAAA,GAA0C;;EAEnDC,MAAAA,EAAQ;IAAEjD,KAAAA,EAAO;AAAiB,GAAA;EAClCkD,SAAAA,EAAW;IAAElD,KAAAA,EAAO;AAAiB,GAAA;EACrC,iBAAA,EAAmB;IAAEA,KAAAA,EAAO;AAAiB,GAAA;EAC7C,4BAAA,EAA8B;IAAEA,KAAAA,EAAO;AAAyB,GAAA;EAChE,sBAAA,EAAwB;IAAEA,KAAAA,EAAO;AAAY,GAAA;EAC7C,uBAAA,EAAyB;IAAEA,KAAAA,EAAO;AAAa,GAAA;EAC/CmD,cAAAA,EAAgB;IAAEnD,KAAAA,EAAO;AAAmB,GAAA;EAC5CoD,eAAAA,EAAiB;IAAEpD,KAAAA,EAAO;AAAoB,GAAA;EAC9CD,MAAAA,EAAQ;IAAEC,KAAAA,EAAO;AAAmB,GAAA;EACpC,qBAAA,EAAuB;IAAEA,KAAAA,EAAO;AAAyB,GAAA;EACzDqD,OAAAA,EAAS;IAAErD,KAAAA,EAAO;AAAW,GAAA;EAC7B,cAAA,EAAgB;IAAEA,KAAAA,EAAO;AAAY,GAAA;EACrC,cAAA,EAAgB;IAAEA,KAAAA,EAAO;AAAY,GAAA;EACrC,gBAAA,EAAkB;IAAEA,KAAAA,EAAO;AAAc,GAAA;EACzCsD,OAAAA,EAAS;IAAEtD,KAAAA,EAAO;AAAU,GAAA;EAC5BuD,WAAAA,EAAa;IAAEvD,KAAAA,EAAO;AAAsB,GAAA;EAC5CwD,WAAAA,EAAa;IAAExD,KAAAA,EAAO;AAAe,GAAA;EACrCyD,aAAAA,EAAe;IAAEzD,KAAAA,EAAO;AAAiB,GAAA;EACzC0D,MAAAA,EAAQ;IAAE1D,KAAAA,EAAO;AAAS,GAAA;EAC1B2D,cAAAA,EAAgB;IAAE3D,KAAAA,EAAO;AAAkB,GAAA;EAC3C,wBAAA,EAA0B;IAAEA,KAAAA,EAAO;AAAoB,GAAA;EACvD4D,IAAAA,EAAM;IAAE5D,KAAAA,EAAO;AAAO,GAAA;EACtBM,eAAAA,EAAiB;IAAEN,KAAAA,EAAO;AAAoB,GAAA;EAC9CO,cAAAA,EAAgB;IAAEP,KAAAA,EAAO;AAAc,GAAA;EACvC6D,oBAAAA,EAAsB;IAAE7D,KAAAA,EAAO;AAAoB,GAAA;EACnDQ,gBAAAA,EAAkB;IAAER,KAAAA,EAAO;AAAgB,GAAA;EAC3C8D,mBAAAA,EAAqB;IAAE9D,KAAAA,EAAO;AAAoB,GAAA;EAClD+D,IAAAA,EAAM;IAAE/D,KAAAA,EAAO;AAAY,GAAA;EAC3BgE,IAAAA,EAAM;IAAEhE,KAAAA,EAAO;AAAY,GAAA;EAC3BiE,MAAAA,EAAQ;IAAEjE,KAAAA,EAAO;AAAc,GAAA;EAC/BkE,OAAAA,EAAS;IAAElE,KAAAA,EAAO;AAAU,GAAA;EAC5BmE,QAAAA,EAAU;IAAEnE,KAAAA,EAAO;AAAW,GAAA;;EAG9BoE,SAAAA,EAAW;IAAEpE,KAAAA,EAAO;AAAoB,GAAA;EACxCqE,WAAAA,EAAa;IAAErE,KAAAA,EAAO;AAAc,GAAA;EACpCsE,sBAAAA,EAAwB;IAAEtE,KAAAA,EAAO;AAA0B,GAAA;EAC3DuE,mBAAAA,EAAqB;IAAEvE,KAAAA,EAAO;AAAkC,GAAA;EAChEwE,WAAAA,EAAa;IAAExE,KAAAA,EAAO;AAAmB,GAAA;EACzCyE,WAAAA,EAAa;IAAEzE,KAAAA,EAAO;AAAoB,GAAA;EAC1C0E,SAAAA,EAAW;IAAE1E,KAAAA,EAAO;AAAY,GAAA;EAChC2E,OAAAA,EAAS;IAAE3E,KAAAA,EAAO;AAAU,GAAA;EAC5B4E,OAAAA,EAAS;IAAE5E,KAAAA,EAAO;AAAS,GAAA;EAC3B6E,aAAAA,EAAe;IAAE7E,KAAAA,EAAO;AAAmB,GAAA;EAC3C8E,OAAAA,EAAS;IAAE9E,KAAAA,EAAO;AAAS,GAAA;EAC3B+E,QAAAA,EAAU;IAAE/E,KAAAA,EAAO;AAAU,GAAA;EAC7BgF,QAAAA,EAAU;IAAEhF,KAAAA,EAAO;AAAU,GAAA;EAC7BiF,UAAAA,EAAY;IAAEjF,KAAAA,EAAO;AAAY,GAAA;EACjCkF,OAAAA,EAAS;IAAElF,KAAAA,EAAO;AAAS,GAAA;EAC3BmF,SAAAA,EAAW;IAAEnF,KAAAA,EAAO;AAAiB,GAAA;EACrCoF,QAAAA,EAAU;IAAEpF,KAAAA,EAAO;AAAgB,GAAA;EACnCqF,WAAAA,EAAa;IAAErF,KAAAA,EAAO;AAAmB,GAAA;EACzCsF,WAAAA,EAAa;IAAEtF,KAAAA,EAAO;AAAmB,GAAA;EACzCuF,WAAAA,EAAa;IAAEvF,KAAAA,EAAO;AAAc,GAAA;EACpCwF,KAAAA,EAAO;IAAExF,KAAAA,EAAO;AAAO,GAAA;EACvByF,aAAAA,EAAe;IAAEzF,KAAAA,EAAO;AAAiB,GAAA;EACzC0F,SAAAA,EAAW;IAAE1F,KAAAA,EAAO;AAAsB,GAAA;EAC1C2F,kBAAAA,EAAoB;IAAE3F,KAAAA,EAAO;AAAiC,GAAA;EAC9D4F,cAAAA,EAAgB;IAAE5F,KAAAA,EAAO;AAAiB,GAAA;EAC1C6F,SAAAA,EAAW;IAAE7F,KAAAA,EAAO;AAAW,GAAA;EAC/B8F,YAAAA,EAAc;IAAE9F,KAAAA,EAAO;AAAe,GAAA;EACtC+F,cAAAA,EAAgB;IAAE/F,KAAAA,EAAO;AAAqB,GAAA;EAC9CgG,eAAAA,EAAiB;IAAEhG,KAAAA,EAAO;AAAmB,GAAA;EAC7CiG,QAAAA,EAAU;IAAEjG,KAAAA,EAAO;AAAU,GAAA;EAC7BkG,YAAAA,EAAc;IAAElG,KAAAA,EAAO;AAAe,GAAA;EACtCmG,MAAAA,EAAQ;IAAEnG,KAAAA,EAAO;AAAQ,GAAA;EACzBoG,YAAAA,EAAc;IAAEpG,KAAAA,EAAO;AAAc,GAAA;;EAGrCqG,aAAAA,EAAe;IAAErG,KAAAA,EAAO;AAAW,GAAA;EACnCsG,SAAAA,EAAW;IAAEtG,KAAAA,EAAO;AAAiB,GAAA;EACrCuG,SAAAA,EAAW;IAAEvG,KAAAA,EAAO;AAAwB,GAAA;;EAG5CwG,cAAAA,EAAgB;IAAExG,KAAAA,EAAO;AAAgB,GAAA;EACzCyG,YAAAA,EAAc;IAAEzG,KAAAA,EAAO;AAAiB,GAAA;EACxC0G,iBAAAA,EAAmB;IAAE1G,KAAAA,EAAO;AAAsB,GAAA;EAClD2G,0BAAAA,EAA4B;IAAE3G,KAAAA,EAAO;AAAiC,GAAA;EACtE4G,cAAAA,EAAgB;IAAE5G,KAAAA,EAAO;AAAc,GAAA;EACvC6G,UAAAA,EAAY;IAAE7G,KAAAA,EAAO;AAAS,GAAA;EAC9B8G,cAAAA,EAAgB;IAAE9G,KAAAA,EAAO;AAAmB,GAAA;EAC5C+G,gBAAAA,EAAkB;IAAE/G,KAAAA,EAAO;AAAW,GAAA;EACtCgH,cAAAA,EAAgB;IAAEhH,KAAAA,EAAO;AAAiB,GAAA;EAC1CiH,oBAAAA,EAAsB;IAAEjH,KAAAA,EAAO;AAAwB,GAAA;EACvDkH,kBAAAA,EAAoB;IAAElH,KAAAA,EAAO;AAAsB,GAAA;EACnDmH,SAAAA,EAAW;IAAEnH,KAAAA,EAAO;AAAc,GAAA;EAClCoH,YAAAA,EAAc;IAAEpH,KAAAA,EAAO;AAAO,GAAA;EAC9BqH,aAAAA,EAAe;IAAErH,KAAAA,EAAO;AAAQ,GAAA;EAChCsH,WAAAA,EAAa;IAAEtH,KAAAA,EAAO;AAAM,GAAA;EAC5BuH,cAAAA,EAAgB;IAAEvH,KAAAA,EAAO;AAAS,GAAA;EAClCwH,YAAAA,EAAc;IAAExH,KAAAA,EAAO;AAAY,GAAA;EACnCyH,cAAAA,EAAgB;IAAEzH,KAAAA,EAAO;AAAa,GAAA;EACtC0H,kBAAAA,EAAoB;IAAE1H,KAAAA,EAAO;AAA0B,GAAA;EACvD2H,eAAAA,EAAiB;IAAE3H,KAAAA,EAAO;AAAQ,GAAA;EAClC4H,iBAAAA,EAAmB;IAAE5H,KAAAA,EAAO;AAAiB,GAAA;EAC7C6H,YAAAA,EAAc;IAAE7H,KAAAA,EAAO;AAAY,GAAA;EACnC8H,cAAAA,EAAgB;IAAE9H,KAAAA,EAAO;AAAoB,GAAA;EAC7C+H,oBAAAA,EAAsB;IAAE/H,KAAAA,EAAO;AAAiB,GAAA;EAChDgI,cAAAA,EAAgB;IAAEhI,KAAAA,EAAO;AAAc,GAAA;EACvCiI,YAAAA,EAAc;IAAEjI,KAAAA,EAAO;AAAY,GAAA;EACnCkI,mBAAAA,EAAqB;IAAElI,KAAAA,EAAO;AAAoB,GAAA;EAClDmI,oBAAAA,EAAsB;IAAEnI,KAAAA,EAAO;AAAqB,GAAA;EACpDoI,eAAAA,EAAiB;IAAEpI,KAAAA,EAAO;AAAQ,GAAA;EAClCqI,QAAAA,EAAU;IAAErI,KAAAA,EAAO;AAAO,GAAA;EAC1BsI,aAAAA,EAAe;IAAEtI,KAAAA,EAAO;AAAY,GAAA;EACpCuI,WAAAA,EAAa;IAAEvI,KAAAA,EAAO;AAAU,GAAA;EAChCwI,cAAAA,EAAgB;IAAExI,KAAAA,EAAO;AAAO,GAAA;EAChCyI,eAAAA,EAAiB;IAAEzI,KAAAA,EAAO;AAAQ,GAAA;EAClC0I,gBAAAA,EAAkB;IAAE1I,KAAAA,EAAO;AAAS,GAAA;EACpC2I,mBAAAA,EAAqB;IAAE3I,KAAAA,EAAO;AAAY,GAAA;EAC1C4I,gBAAAA,EAAkB;IAAE5I,KAAAA,EAAO;AAAS,GAAA;EACpC6I,cAAAA,EAAgB;IAAE7I,KAAAA,EAAO;AAAO,GAAA;EAChC8I,WAAAA,EAAa;IAAE9I,KAAAA,EAAO;AAAU,GAAA;EAChC+I,gBAAAA,EAAkB;IAAE/I,KAAAA,EAAO;AAAiB,GAAA;EAC5CgJ,cAAAA,EAAgB;IAAEhJ,KAAAA,EAAO;AAAe,GAAA;EACxCiJ,SAAAA,EAAW;IAAEjJ,KAAAA,EAAO;AAAQ,GAAA;EAC5BkJ,eAAAA,EAAiB;IAAElJ,KAAAA,EAAO;AAAe,GAAA;EACzCmJ,cAAAA,EAAgB;IAAEnJ,KAAAA,EAAO;AAAe,GAAA;EACxCoJ,cAAAA,EAAgB;IAAEpJ,KAAAA,EAAO;AAAc,GAAA;;EAGvCqJ,WAAAA,EAAa;IAAErJ,KAAAA,EAAO;AAAc,GAAA;EACpCsJ,YAAAA,EAAc;IAAEtJ,KAAAA,EAAO;AAAe,GAAA;EACtCuJ,cAAAA,EAAgB;IAAEvJ,KAAAA,EAAO;AAAiB,GAAA;EAC1CwJ,SAAAA,EAAW;IAAExJ,KAAAA,EAAO;AAAY,GAAA;EAChCyJ,WAAAA,EAAa;IAAEzJ,KAAAA,EAAO;AAAoB,GAAA;EAC1C0J,iBAAAA,EAAmB;IAAE1J,KAAAA,EAAO;AAAwB,GAAA;EACpD2J,WAAAA,EAAa;IAAE3J,KAAAA,EAAO;AAAc,GAAA;EACpC4J,SAAAA,EAAW;IAAE5J,KAAAA,EAAO;AAAY,GAAA;EAChC6J,gBAAAA,EAAkB;IAAE7J,KAAAA,EAAO;AAAoB,GAAA;EAC/C8J,iBAAAA,EAAmB;IAAE9J,KAAAA,EAAO;AAAqB,GAAA;EACjD+J,YAAAA,EAAc;IAAE/J,KAAAA,EAAO;AAAe,GAAA;EACtCgK,KAAAA,EAAO;IAAEhK,KAAAA,EAAO;AAAO,GAAA;EACvBiK,UAAAA,EAAY;IAAEjK,KAAAA,EAAO;AAAY,GAAA;EACjCkK,QAAAA,EAAU;IAAElK,KAAAA,EAAO;AAAU,GAAA;EAC7BmK,WAAAA,EAAa;IAAEnK,KAAAA,EAAO;AAAe,GAAA;EACrCoK,YAAAA,EAAc;IAAEpK,KAAAA,EAAO;AAAe,GAAA;EACtCqK,WAAAA,EAAa;IAAErK,KAAAA,EAAO;AAAc,GAAA;EACpCsK,aAAAA,EAAe;IAAEtK,KAAAA,EAAO;AAAW,GAAA;EACnCuK,QAAAA,EAAU;IAAEvK,KAAAA,EAAO;AAAM,GAAA;EACzBwK,QAAAA,EAAU;IAAExK,KAAAA,EAAO;AAAM,GAAA;EACzByK,UAAAA,EAAY;IAAEzK,KAAAA,EAAO;AAAQ,GAAA;EAC7B0K,YAAAA,EAAc;IAAE1K,KAAAA,EAAO;AAAU,GAAA;EACjC2K,QAAAA,EAAU;IAAE3K,KAAAA,EAAO;AAAU,GAAA;EAC7B4K,aAAAA,EAAe;IAAE5K,KAAAA,EAAO;AAAiB,GAAA;EACzC6K,WAAAA,EAAa;IAAE7K,KAAAA,EAAO;AAAe,GAAA;EACrC8K,eAAAA,EAAiB;IAAE9K,KAAAA,EAAO;AAAkB,GAAA;EAC5C+K,QAAAA,EAAU;IAAE/K,KAAAA,EAAO;AAAU,GAAA;EAC7BgL,OAAAA,EAAS;IAAEhL,KAAAA,EAAO;AAAS,GAAA;EAC3BiL,OAAAA,EAAS;IAAEjL,KAAAA,EAAO;AAAS,GAAA;EAC3BkL,YAAAA,EAAc;IAAElL,KAAAA,EAAO;AAAc,GAAA;EACrCmL,MAAAA,EAAQ;IAAEnL,KAAAA,EAAO;AAAQ,GAAA;EACzBoL,WAAAA,EAAa;IAAEpL,KAAAA,EAAO;AAAc,GAAA;EACpCqL,UAAAA,EAAY;IAAErL,KAAAA,EAAO;AAAa,GAAA;EAClCsL,YAAAA,EAAc;IAAEtL,KAAAA,EAAO;AAAe,GAAA;EACtCuL,SAAAA,EAAW;IAAEvL,KAAAA,EAAO;AAAY,GAAA;EAChCwL,YAAAA,EAAc;IAAExL,KAAAA,EAAO;AAAe,GAAA;EACtCyL,YAAAA,EAAc;IAAEzL,KAAAA,EAAO;AAAe,GAAA;EACtC0L,WAAAA,EAAa;IAAE1L,KAAAA,EAAO;AAAc,GAAA;EACpC2L,YAAAA,EAAc;IAAE3L,KAAAA,EAAO;AAAe,GAAA;EACtC4L,aAAAA,EAAe;IAAE5L,KAAAA,EAAO;AAAgB,GAAA;EACxC6L,gBAAAA,EAAkB;IAAE7L,KAAAA,EAAO;AAAmB,GAAA;EAC9C8L,gBAAAA,EAAkB;IAAE9L,KAAAA,EAAO;AAA0B,GAAA;EACrD+L,gBAAAA,EAAkB;IAAE/L,KAAAA,EAAO;AAA0B,GAAA;EACrDgM,OAAAA,EAAS;IAAEhM,KAAAA,EAAO;AAAS,GAAA;EAC3BiM,YAAAA,EAAc;IAAEjM,KAAAA,EAAO;AAAoB,GAAA;EAC3CkM,eAAAA,EAAiB;IAAElM,KAAAA,EAAO;AAAiB,GAAA;EAC3CmM,iBAAAA,EAAmB;IAAEnM,KAAAA,EAAO;AAAyB,GAAA;EACrDoM,YAAAA,EAAc;IAAEpM,KAAAA,EAAO;AAAe,GAAA;EACtCqM,QAAAA,EAAU;IAAErM,KAAAA,EAAO;AAAkB,GAAA;EACrCsM,KAAAA,EAAO;IAAEtM,KAAAA,EAAO;AAAe,GAAA;EAC/BuM,WAAAA,EAAa;IAAEvM,KAAAA,EAAO;AAA2B,GAAA;EACjDwM,YAAAA,EAAc;IAAExM,KAAAA,EAAO;AAAe,GAAA;EACtCyM,aAAAA,EAAe;IAAEzM,KAAAA,EAAO;AAAgB,GAAA;EACxC0M,aAAAA,EAAe;IAAE1M,KAAAA,EAAO;AAAgB,GAAA;;EAGxC8B,UAAAA,EAAY;IAAE9B,KAAAA,EAAO;AAAa,GAAA;EAClC2M,oBAAAA,EAAsB;IAAE3M,KAAAA,EAAO;AAA+B,GAAA;EAC9D4M,iBAAAA,EAAmB;IAAE5M,KAAAA,EAAO;AAAqB,GAAA;EACjD6M,eAAAA,EAAiB;IAAE7M,KAAAA,EAAO;AAAkB,GAAA;EAC5C+B,WAAAA,EAAa;IAAE/B,KAAAA,EAAO;AAAc,GAAA;EACpC8M,gBAAAA,EAAkB;IAAE9M,KAAAA,EAAO;AAA0B,GAAA;EACrDgC,aAAAA,EAAe;IAAEhC,KAAAA,EAAO;AAAgB,GAAA;;EAGxC+M,eAAAA,EAAiB;IAAE/M,KAAAA,EAAO;AAAW,GAAA;EACrCgN,gBAAAA,EAAkB;IAAEhN,KAAAA,EAAO;AAAY,GAAA;EACvCiN,uBAAAA,EAAyB;IAAEjN,KAAAA,EAAO;AAA2B,GAAA;EAC7DkN,gBAAAA,EAAkB;IAAElN,KAAAA,EAAO;AAAsB,GAAA;EACjDmN,WAAAA,EAAa;IAAEnN,KAAAA,EAAO;AAAQ,GAAA;EAC9BoN,sBAAAA,EAAwB;IAAEpN,KAAAA,EAAO;AAAyB,GAAA;EAC1DqN,gBAAAA,EAAkB;IAAErN,KAAAA,EAAO;AAAmB,GAAA;EAC9CsN,wBAAAA,EAA0B;IAAEtN,KAAAA,EAAO;AAA4B,GAAA;EAC/DuN,eAAAA,EAAiB;IAAEvN,KAAAA,EAAO;AAAkB,GAAA;EAC5CwN,cAAAA,EAAgB;IAAExN,KAAAA,EAAO;AAAiB,GAAA;EAC1CyN,kBAAAA,EAAoB;IAAEzN,KAAAA,EAAO;AAAqB,GAAA;EAClD0N,cAAAA,EAAgB;IAAE1N,KAAAA,EAAO;AAAiB,GAAA;EAC1C2N,oBAAAA,EAAsB;IAAE3N,KAAAA,EAAO;AAAuB,GAAA;EACtD4N,sBAAAA,EAAwB;IAAE5N,KAAAA,EAAO;AAAyB,GAAA;;EAG1D6N,OAAAA,EAAS;IAAE7N,KAAAA,EAAO;AAAS,GAAA;EAC3B8N,QAAAA,EAAU;IAAE9N,KAAAA,EAAO;AAAU,GAAA;EAC7B+N,YAAAA,EAAc;IAAE/N,KAAAA,EAAO;AAAoB;AAC/C,CAAA;;;ACnNO,IAAMgO,gCAAAA,GAAmC,GAAA;AACzC,IAAMC,6BAAAA,GAAgC,IAAA;AACtC,IAAMC,wBAAAA,GAA2B;AAAC,EAAA,OAAA;AAAS,EAAA,UAAA;AAAY,EAAA;;AAEvD,IAAKC,MAAAA,4BAAAA,OAAAA,EAAAA;;;;;;;;AAAAA,EAAAA,OAAAA,OAAAA;;AAWL,IAAMC,sBAAAA,GAA0D;AACnE,EAAA,CAAA,gBAAA,GAAyB,eAAA;AACzB,EAAA,CAAA,aAAA,GAAsB,YAAA;AACtB,EAAA,CAAA,eAAA,GAAwB,cAAA;AACxB,EAAA,CAAA,eAAA,GAAwB;AAC5B,CAAA;AAEO,IAAMC,2BAAAA,GAA8B,8BAAA;AACpC,IAAMC,6BAAAA,GAAgC,CAAA;AAEtC,IAAKC,aAAAA,4BAAAA,cAAAA,EAAAA;;;AAAAA,EAAAA,OAAAA,cAAAA;;;;ACrBZ,IAAMC,UAAAA,GAAuB;AACzB,EAAA,CAAA;AAAG,EAAA,CAAA;AAAG,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA,EAAA;AAAI,EAAA;;AAG9D,SAASC,eAAAA,CACLC,UAAAA,EACAC,YAAAA,EACAC,SAAAA,GAAY,IACZC,QAAAA,EAAqB;AAErB,EAAA,MAAMC,eAAwC,EAAC;AAE/CC,EAAAA,MAAAA,CAAOC,IAAAA,CAAKN,UAAAA,CAAAA,CAAYO,OAAAA,CAAQ,CAACC,GAAAA,KAAAA;AAC7B,IAAA,MAAMC,UAAUP,SAAAA,GAAY,CAAA,EAAGA,SAAAA,CAAAA,CAAAA,EAAaM,GAAAA,CAAAA,CAAAA,GAAQA,GAAAA;AACpD,IAAA,MAAME,KAAAA,GAAQV,WAAWQ,GAAAA,CAAAA;AACzB,IAAA,IACI,OAAOE,UAAU,QAAA,IACjB,CAACC,MAAMC,OAAAA,CAAQF,KAAAA,CAAAA,IACfA,KAAAA,KAAU,IAAA,EACZ;AACEN,MAAAA,YAAAA,CAAaI,GAAAA,CAAAA,GAAOT,eAAAA,CAChBW,KAAAA,EACAT,YAAAA,EACAQ,SACAN,QAAAA,CAAAA;IAER,CAAA,MAAA,IAAWF,YAAAA,CAAaQ,OAAAA,CAAAA,EAAU;AAC9BL,MAAAA,YAAAA,CAAaI,GAAAA,CAAAA,GAAOP,YAAAA,CAAaQ,OAAAA,EAASC,KAAAA,CAAAA;IAC9C,CAAA,MAAO;AACHN,MAAAA,YAAAA,CAAaI,GAAAA,IACTL,QAAAA,IAAY,OAAOO,UAAU,QAAA,GAAWP,QAAAA,CAASO,KAAAA,CAAAA,GAASA,KAAAA;AAClE,IAAA;EACJ,CAAA,CAAA;AAEA,EAAA,OAAON,YAAAA;AACX;AA/BSL,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAiCF,SAASc,gBAAAA,CACZC,GAAAA,EACAb,YAAAA,EACAE,QAAAA,EAAqB;AAErB,EAAA,OAAOJ,eAAAA,CAAgBe,GAAAA,EAAKb,YAAAA,EAAc,EAAA,EAAIE,QAAAA,CAAAA;AAClD;AANgBU,MAAAA,CAAAA,gBAAAA,EAAAA,kBAAAA,CAAAA;AAQhB,IAAME,SAAAA,2BAAaL,KAAAA,KAAAA;AACf,EAAA,MAAMM,MAAAA,GAASC,OAAOP,KAAAA,CAAAA;AACtB,EAAA,IAAI,CAACM,MAAAA,IAAUE,KAAAA,CAAMF,MAAAA,GAAS,OAAOG,MAAAA;AACrC,EAAA,OAAOH,MAAAA;AACX,CAAA,EAJkB,WAAA,CAAA;AAMlB,IAAMI,iBAAAA,mBACF,MAAA,CAAA,CAACC,QAAAA,EAAkBC,QAAAA,KAAsB,CAACZ,KAAAA,KAAAA;AACtC,EAAA,MAAMM,MAAAA,GAASD,UAAUL,KAAAA,CAAAA;AACzB,EAAA,IAAI,CAACM,QAAQ,OAAOG,MAAAA;AACpB,EAAA,IAAIG,QAAAA,IAAYN,MAAAA,GAASM,QAAAA,EAAU,OAAOA,QAAAA;AAC1C,EAAA,IAAIN,MAAAA,GAASK,UAAU,OAAOA,QAAAA;AAC9B,EAAA,OAAOL,MAAAA;AACX,CAAA,EANA,mBAAA,CAAA;AAQG,IAAMO,mBAAAA,mBACT,MAAA,CAAA,CAACC,OAAAA,EAAiBC,OAAAA,KAClB,CAACf,KAAAA,KAAAA;AACG,EAAA,MAAMgB,SAAAA,GAAYC,QAAAA,CAASjB,KAAAA,EAAO,EAAA,CAAA;AAElC,EAAA,IACIZ,WAAW8B,QAAAA,CAASF,SAAAA,KACpBA,SAAAA,IAAaF,OAAAA,IACbE,aAAaD,OAAAA,EACf;AACE,IAAA,OAAO,GAAGC,SAAAA,CAAAA,EAAAA,CAAAA;AACd,EAAA;AAGA,EAAA,MAAMG,cAAAA,GAAiB/B,WAAWgC,MAAAA,CAC9B,CAACC,SAASA,IAAAA,IAAQP,OAAAA,IAAWO,QAAQN,OAAAA,CAAAA;AAGzC,EAAA,IAAII,cAAAA,CAAeG,WAAW,CAAA,EAAG;AAC7B,IAAA,OAAOb,MAAAA;AACX,EAAA;AAGA,EAAA,IAAIc,WAAAA,GAAcJ,eAAe,CAAA,CAAA;AACjC,EAAA,IAAIK,YAAAA,GAAeC,IAAAA,CAAKC,GAAAA,CAAIV,SAAAA,GAAYO,WAAAA,CAAAA;AAExC,EAAA,KAAA,MAAWF,QAAQF,cAAAA,EAAgB;AAC/B,IAAA,MAAMQ,IAAAA,GAAOF,IAAAA,CAAKC,GAAAA,CAAIV,SAAAA,GAAYK,IAAAA,CAAAA;AAClC,IAAA,IAAIM,OAAOH,YAAAA,EAAc;AACrBA,MAAAA,YAAAA,GAAeG,IAAAA;AACfJ,MAAAA,WAAAA,GAAcF,IAAAA;AAClB,IAAA;AACJ,EAAA;AAGA,EAAA,OAAO,GAAGE,WAAAA,CAAAA,EAAAA,CAAAA;AACd,CAAA,EAnCA,qBAAA,CAAA;AAoCG,IAAMK,cAAAA,2BAAkB5B,KAAAA,KAAAA;AAE3B,EAAA,IAAI,OAAOA,KAAAA,KAAU,QAAA,EAAU,OAAOS,MAAAA;AACtC,EAAA,MAAMoB,eAAAA,GAAkB7B,MAAM8B,WAAAA,EAAW;AACzC,EAAA,OAAOD,eAAAA;AACX,CAAA,EAL8B,gBAAA,CAAA;AAOvB,IAAME,kCAAkB,MAAA,CAAA,CAAC/B,KAAAA,KAC5B,OAAOA,KAAAA,KAAU,SAAA,GAAYA,QAAQS,MAAAA,EADV,iBAAA,CAAA;AAG/B,IAAMuB,8BAAAA,2BAAkChC,KAAAA,KAAAA;AACpC,EAAA,IAAI,OAAOA,KAAAA,KAAU,QAAA,EAAU,OAAOS,MAAAA;AACtC,EAAA,OAAO;AAAC,IAAA,QAAA;AAAU,IAAA,UAAA;AAAY,IAAA;IAAWS,QAAAA,CAASlB,KAAAA,IAC5CA,KAAAA,GACAS,MAAAA;AACV,CAAA,EALuC,gCAAA,CAAA;AAOvC,IAAMwB,YAAAA,mBAAe,MAAA,CAAA,CAACC,WAAAA,KAA0B,CAAClC,KAAAA,KAAAA;AAC7C,EAAA,IAAI,OAAOA,KAAAA,KAAU,QAAA,EAAU,OAAOS,MAAAA;AACtC,EAAA,MAAM0B,aAAAA,GAAgBnC,MAAMoC,WAAAA,EAAW;AACvC,EAAA,OAAOF,WAAAA,CAAYhB,QAAAA,CAASiB,aAAAA,CAAAA,GAAiBA,aAAAA,GAAgB1B,MAAAA;AACjE,CAAA,EAJqB,cAAA,CAAA;AAMd,IAAM4B,gBAAAA,GAAkC;EAC3C,4BAAA,EAA8B3B,iBAAAA,CAAkB,KAAK,EAAA,CAAA;EACrD,4BAAA,EAA8BG,mBAAAA,CAAoB,GAAG,EAAA,CAAA;EACrD,6BAAA,EAA+Be,cAAAA;EAC/B,oCAAA,EAAsClB,iBAAAA,CAAkB,IAAI,CAAA,CAAA;EAC5D,6BAAA,EAA+BA,iBAAAA,CAAkB,IAAI,CAAA,CAAA;EACrD,oCAAA,EAAsCA,iBAAAA,CAAkB,IAAI,CAAA,CAAA;EAC5D,kCAAA,EAAoCA,iBAAAA,CAAkB,IAAI,CAAA,CAAA;EAC1D,qCAAA,EAAuCA,iBAAAA,CAAkB,KAAK,CAAA,CAAA;;AAG9D,EAAA,8BAAA,EAAgCuB,YAAAA,CAAa;AAAC,IAAA,MAAA;AAAQ,IAAA;AAAW,GAAA,CAAA;AACjE,EAAA,qCAAA,EAAuCA,YAAAA,CAAa;AAChD,IAAA,QAAA;AACA,IAAA;AACH,GAAA,CAAA;;AAGD,EAAA,sCAAA,EAAwCA,YAAAA,CAAa;AACjD,IAAA,QAAA;AACA,IAAA;AACH,GAAA,CAAA;;AAGD,EAAA,qCAAA,EAAuCA,YAAAA,CAAa;AAChD,IAAA,QAAA;AACA,IAAA;AACH,GAAA,CAAA;;EAGDK,sBAAAA,EAAwBN,8BAAAA;;EAGxB,+BAAA,EAAiCD;AACrC,CAAA;AAEO,IAAMQ,4BAAAA,GAA8C;EACvDC,eAAAA,EAAiBT;AACrB,CAAA;;;AC/JO,IAAMU,sBAAAA,GAAyB;AAClC,EAAA,iBAAA;AACA,EAAA,kBAAA;AACA,EAAA,yBAAA;AACA,EAAA,kBAAA;AACA,EAAA,aAAA;AACA,EAAA,iBAAA;AACA,EAAA,wBAAA;AACA,EAAA,kBAAA;AACA,EAAA,0BAAA;AACA,EAAA,oBAAA;AACA,EAAA;;AAMG,IAAMC,kCAAAA,GAGT;EACA5E,gBAAAA,EAAkB,kBAAA;EAClBC,WAAAA,EAAa,kBAAA;EACbI,eAAAA,EAAiB,kBAAA;EACjBH,sBAAAA,EAAwB,kBAAA;EACxBC,gBAAAA,EAAkB,kBAAA;EAClBC,wBAAAA,EAA0B;AAC9B,CAAA;AAGO,IAAMyE,mBAAAA,mBAAsB,MAAA,CAAA,CAC/BC,OAAAA,GAAU,eAAA,KAEVjD,OAAOkD,WAAAA,CACHlD,MAAAA,CAAOmD,OAAAA,CAAQJ,kCAAAA,EAAoCK,GAAAA,CAC/C,CAAC,CAACjD,GAAAA,EAAKkD,KAAAA,CAAAA,KAAW;EAAC,CAAA,EAAGJ,OAAAA,IAAW9C,GAAAA,CAAAA,CAAAA;EAAO,CAAA,EAAG8C,OAAAA,IAAWI,KAAAA,CAAAA;AAAQ,CAAA,CAAA,CAAA,EALvC,qBAAA,CAAA;AAS5B,IAAMC,0BAAAA,GAA6B;EACtCT,eAAAA,EAAiB;AACrB,CAAA;AAEA,IAAMU,qBAAAA,GAAsC;EACxCC,OAAAA,EAAS,KAAA;EACTC,eAAAA,EAAiBV,kCAAAA;EACjBW,aAAAA,EAAe,cAAA,CAAA;AACXC,IAAAA,QAAAA,EAAU,cAAA,CAAA,EAAA,EAAKL,0BAAAA;AACZtD,GAAAA,EAAAA,MAAAA,CAAOkD,WAAAA,CAAYJ,sBAAAA,CAAuBM,GAAAA,CAAI,CAACjD,GAAAA,KAAQ;AAACA,IAAAA,GAAAA;AAAK,IAAA;GAAK,CAAA,CAAA;AAE7E,CAAA;AAEA,IAAA,mCAAA,GAAeoD,qBAAAA;;;AChDf,IAAMK,wBAAAA,GAA2B;AAC7B,EAAA,gBAAA;AACA,EAAA,sBAAA;AACA,EAAA;;AAGJ,IAAMC,iBAAAA,GAAkC;EACpCL,OAAAA,EAAS,KAAA;AACTC,EAAAA,eAAAA,EAAiBT,oBAAoB,eAAA,CAAA;EACrCU,aAAAA,EAAe;IACXI,KAAAA,EAAO;MACHC,IAAAA,EAAM;AACF,QAAA,QAAA;AACA,QAAA,WAAA;AACA,QAAA,gBAAA;AACA,QAAA,iBAAA;AACA,QAAA,wBAAA;AACA,QAAA;;MAEJC,MAAAA,EAAQ;AACJ,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,iBAAA;AACA,QAAA,SAAA;AACA,QAAA,SAAA;AACA,QAAA,aAAA;AACA,QAAA,aAAA;AACA,QAAA,eAAA;AACA,QAAA,QAAA;AACA,QAAA,wBAAA;AACA,QAAA;;MAEJC,OAAAA,EAAS;AACL,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,iBAAA;AACA,QAAA,aAAA;AACA,QAAA,qBAAA;AACA,QAAA;;MAEJC,OAAAA,EAAS;AACL,QAAA,QAAA;AACA,QAAA,SAAA;AACA,QAAA,aAAA;AACA,QAAA,eAAA;AACA,QAAA,QAAA;AACA,QAAA,qBAAA;AACA,QAAA;;AAER,KAAA;IAEAhQ,MAAAA,EAAQ;AAAC,MAAA,WAAA;AAAa,MAAA;;IAEtBiQ,aAAAA,EAAe;AAAC,MAAA,WAAA;AAAa,MAAA;;IAE7BhQ,SAAAA,EAAW;MACPwP,QAAAA,EAAU;QACNS,iBAAAA,EAAmB;AACvB,OAAA;MACAC,KAAAA,EAAO;QACHhT,UAAAA,EAAY;AACR,UAAA,WAAA;AACA,UAAA,UAAA;AACA,UAAA,aAAA;AACA,UAAA,aAAA;AACA,UAAA,WAAA;AACA,UAAA,oBAAA;AACA,UAAA,gBAAA;AACA,UAAA;;QAEJiT,IAAAA,EAAM;AACF,UAAA,WAAA;AACA,UAAA,cAAA;AACA,UAAA,gBAAA;AACA,UAAA,SAAA;AACA,UAAA,iBAAA;AACA,UAAA,UAAA;AACA,UAAA,cAAA;AACA,UAAA,QAAA;AACA,UAAA,cAAA;AACA,UAAA;;QAEJC,KAAAA,EAAO;AACH,UAAA,WAAA;AACA,UAAA,cAAA;AACA,UAAA,gBAAA;AACA,UAAA,SAAA;AACA,UAAA,iBAAA;AACA,UAAA,UAAA;AACA,UAAA,cAAA;AACA,UAAA,QAAA;AACA,UAAA,cAAA;AACA,UAAA;;AAER;AACJ,KAAA;IAEA5P,MAAAA,EAAQ;MACJgP,QAAAA,EAAU;QACNa,aAAAA,EAAe,IAAA;QACfC,WAAAA,EAAa,IAAA;QACbC,aAAAA,EAAe;AACnB;AACJ,KAAA;IAEAtQ,cAAAA,EAAgB;AAAC,MAAA;;IAEjBC,eAAAA,EAAiB;AACb,MAAA,aAAA;AACA,MAAA,UAAA;AACA,MAAA,WAAA;AACA,MAAA,eAAA;AACA,MAAA,SAAA;AACA,MAAA,SAAA;AACA,MAAA,eAAA;AACA,MAAA,SAAA;AACA,MAAA,UAAA;AACA,MAAA,UAAA;AACA,MAAA,UAAA;AACA,MAAA,YAAA;AACA,MAAA,aAAA;AACA,MAAA,SAAA;AACA,MAAA;;IAGJrD,MAAAA,EAAQ;AACJ,MAAA,eAAA;AACA,MAAA,cAAA;AACA,MAAA,WAAA;AACA,MAAA,WAAA;AACA,MAAA,OAAA;AACA,MAAA;QACI2T,YAAAA,EAAc;AACV,UAAA,WAAA;AACA,UAAA,aAAA;AACA,UAAA,gBAAA;AACA,UAAA;;AAER;;IAGJrQ,OAAAA,EAAS;MACLW,IAAAA,EAAM;AACF,QAAA,gBAAA;AACA,QAAA,cAAA;AACA,QAAA,mBAAA;AACA,QAAA,4BAAA;AACA,QAAA,gBAAA;AACA,QAAA,YAAA;AACA,QAAA,gBAAA;AACA,QAAA,aAAA;AACA,QAAA,gBAAA;AACA,QAAA;UACIgD,cAAAA,EAAgB;AACZ,YAAA,sBAAA;AACA,YAAA;;UAEJD,gBAAAA,EAAkB;AACd,YAAA,UAAA;AACA,YAAA,UAAA;AACA,YAAA,YAAA;AACA,YAAA;;AAER;;MAEJhD,IAAAA,EAAM;AACF,QAAA,WAAA;AACA,QAAA,cAAA;AACA,QAAA,eAAA;AACA,QAAA,aAAA;AACA,QAAA,gBAAA;AACA,QAAA,cAAA;AACA,QAAA,gBAAA;AACA,QAAA;;MAEJH,IAAAA,EAAM;AAAC,QAAA,gBAAA;AAAkB,QAAA,iBAAA;AAAmB,QAAA;;MAC5CK,MAAAA,EAAQ;AACJ,QAAA;UACI0D,eAAAA,EAAiB;AACb,YAAA,mBAAA;AACA,YAAA,cAAA;AACA,YAAA;;UAEJI,oBAAAA,EAAsB;AAClB,YAAA,gBAAA;AACA,YAAA,cAAA;AACA,YAAA,qBAAA;AACA,YAAA;;UAEJK,eAAAA,EAAiB;AACb,YAAA,UAAA;AACA,YAAA,eAAA;AACA,YAAA;;AAER,SAAA;AACA,QAAA,gBAAA;AACA,QAAA,iBAAA;AACA,QAAA,kBAAA;AACA,QAAA,qBAAA;AACA,QAAA,kBAAA;AACA,QAAA;;MAEJU,WAAAA,EAAa;AACT,QAAA,kBAAA;AACA,QAAA,gBAAA;AACA,QAAA;UACIG,SAAAA,EAAW;AACP,YAAA,aAAA;AACA,YAAA,YAAA;AACA,YAAA,cAAA;AACA,YAAA,WAAA;AACA,YAAA,cAAA;AACA,YAAA;;AAER;;AAER,KAAA;IACA3F,OAAAA,EAAS;AACL,MAAA,aAAA;AACA,MAAA;QACIgG,YAAAA,EAAc;AAAC,UAAA,gBAAA;AAAkB,UAAA,WAAA;AAAa,UAAA;;QAC9CI,iBAAAA,EAAmB;AACf,UAAA,aAAA;AACA,UAAA,WAAA;AACA,UAAA,kBAAA;AACA,UAAA;;QAEJK,YAAAA,EAAc;AAAC,UAAA,OAAA;AAAS,UAAA,YAAA;AAAc,UAAA;;QACtCnG,IAAAA,EAAM;AAAC,UAAA,aAAA;AAAe,UAAA,cAAA;AAAgB,UAAA;;QACtC0G,aAAAA,EAAe;AACX,UAAA,UAAA;AACA,UAAA,UAAA;AACA,UAAA,YAAA;AACA,UAAA;;QAEJK,QAAAA,EAAU;AAAC,UAAA,eAAA;AAAiB,UAAA;;QAC5BG,eAAAA,EAAiB;AACb,UAAA,UAAA;AACA,UAAA,SAAA;AACA,UAAA,SAAA;AACA,UAAA;;QAEJK,MAAAA,EAAQ;AACJ,UAAA,aAAA;AACA,UAAA,YAAA;AACA,UAAA,cAAA;AACA,UAAA,WAAA;AACA,UAAA,cAAA;AACA,UAAA;;QAEJnE,cAAAA,EAAgB;AAAC,UAAA,sBAAA;AAAwB,UAAA;;AAC7C,OAAA;AACA,MAAA,aAAA;AACA,MAAA,cAAA;AACA,MAAA,eAAA;AACA,MAAA,kBAAA;AACA,MAAA,kBAAA;AACA,MAAA,kBAAA;AACA,MAAA,SAAA;AACA,MAAA,WAAA;;AAGA,MAAA,cAAA;AACA,MAAA,iBAAA;AACA,MAAA,mBAAA;AACA,MAAA,cAAA;AACA,MAAA,UAAA;AACA,MAAA,OAAA;AACA,MAAA,aAAA;AACA,MAAA,cAAA;AACA,MAAA,eAAA;AACA,MAAA;;IAEJ1C,sBAAAA,EAAwB,IAAA;IACxBC,mBAAAA,EAAqB,IAAA;IACrBhB,WAAAA,EAAa,IAAA;IACbC,WAAAA,EAAa;MACT1B,UAAAA,EAAY,IAAA;MACZ6K,oBAAAA,EAAsB,IAAA;MACtBC,iBAAAA,EAAmB,IAAA;MACnBC,eAAAA,EAAiB,IAAA;MACjB/I,mBAAAA,EAAqB,IAAA;MACrBxD,eAAAA,EAAiB;AACb,QAAA,aAAA;AACA,QAAA,kBAAA;AACA,QAAA;;MAEJC,cAAAA,EAAgB;AACZ,QAAA,aAAA;AACA,QAAA,kBAAA;AACA,QAAA;;MAEJsD,oBAAAA,EAAsB;AAClB,QAAA,aAAA;AACA,QAAA,kBAAA;AACA,QAAA;;MAEJrD,gBAAAA,EAAkB;AACd,QAAA,aAAA;AACA,QAAA,kBAAA;AACA,QAAA;;AAER,KAAA;IACAiD,aAAAA,EAAe;AAAIoO,MAAAA,GAAAA,sBAAAA;AAA2Bc,MAAAA,GAAAA;;IAC9ChP,cAAAA,EAAgB;AACZ,MAAA,SAAA;AACA,MAAA,UAAA;AACA,MAAA,cAAA;AACA,MAAA;QACIO,OAAAA,EAAS;UACLwO,QAAAA,EAAU;YACN7E,OAAAA,EAAS,IAAA;YACTC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc;AAClB;AACJ;AACJ;;IAEJ4F,UAAAA,EAAY;AACRC,MAAAA,UAAAA,EAAY,EAAC;AACbC,MAAAA,YAAAA,EAAc,EAAC;AACfC,MAAAA,YAAAA,EAAc;AAClB;AACJ;AACJ,CAAA;AAEA,IAAA,8BAAA,GAAelB,iBAAAA;;;ACvUf,IAAMmB,uBAAAA,GAAwC;EAC1CxB,OAAAA,EAAS,KAAA;AACTC,EAAAA,eAAAA,EAAiBT,oBAAoB,eAAA,CAAA;EACrCU,aAAAA,EAAe;IACXI,KAAAA,EAAO;MACHmB,IAAAA,EAAM;AACF,QAAA,QAAA;AACA,QAAA,YAAA;AACA,QAAA,WAAA;AACA,QAAA,eAAA;AACA,QAAA;;MAEJC,MAAAA,EAAQ;AACJ,QAAA,QAAA;AACA,QAAA,YAAA;AACA,QAAA,WAAA;AACA,QAAA,eAAA;AACA,QAAA,WAAA;AACA,QAAA;;AAER,KAAA;IACAlU,MAAAA,EAAQ;AAAC,MAAA;;IACTmU,UAAAA,EAAY;MACRxB,QAAAA,EAAU;AACNyB,QAAAA,OAAAA,EAAS;AACb,OAAA;MACAC,iBAAAA,EAAmB;AACf,QAAA,UAAA;AACA,QAAA,UAAA;AACA,QAAA,UAAA;AACA,QAAA,YAAA;AACA,QAAA;;MAEJC,kBAAAA,EAAoB;AAAC,QAAA,gBAAA;AAAkB,QAAA;;MACvCC,eAAAA,EAAiB;AACb,QAAA,gBAAA;AACA,QAAA,mBAAA;AACA,QAAA,aAAA;AACA,QAAA,mBAAA;AACA,QAAA,sBAAA;AACA,QAAA;;MAEJC,cAAAA,EAAgB,IAAA;MAChBC,qBAAAA,EAAuB,IAAA;MACvBC,cAAAA,EAAgB,IAAA;MAChB7P,OAAAA,EAAS,IAAA;MACT8P,cAAAA,EAAgB,IAAA;MAChBC,eAAAA,EAAiB,IAAA;MACjBC,cAAAA,EAAgB,IAAA;MAChBC,SAAAA,EAAW;AACf,KAAA;IAEA3R,SAAAA,EAAW;MACPkQ,KAAAA,EAAO;AACH,QAAA;UACIhT,UAAAA,EAAY;AACR,YAAA,SAAA;AACA,YAAA,WAAA;AACA,YAAA,iBAAA;AACA,YAAA,YAAA;AACA,YAAA,oBAAA;AACA,YAAA,cAAA;AACA,YAAA;;UAEJkT,KAAAA,EAAO;AACH,YAAA,OAAA;AACA,YAAA,WAAA;AACA,YAAA,OAAA;AACA,YAAA,eAAA;AACA,YAAA,iBAAA;AACA,YAAA,WAAA;AACA,YAAA,eAAA;AACA,YAAA;;AAER,SAAA;AACA,QAAA,gBAAA;AACA,QAAA,cAAA;AACA,QAAA;;AAER,KAAA;IAEAwB,SAAAA,EAAW;AACP,MAAA,iBAAA;AACA,MAAA,YAAA;AACA,MAAA,oBAAA;AACA,MAAA;;;IAIJrR,aAAAA,EAAe;AAAIoO,MAAAA,GAAAA;;IAEnBkD,aAAAA,EAAe;AACX,MAAA,WAAA;AACA,MAAA,SAAA;AACA,MAAA,QAAA;AACA,MAAA,cAAA;AACA,MAAA,OAAA;AACA,MAAA,eAAA;AACA,MAAA;;AAER;AACJ,CAAA;AAEA,IAAA,qCAAA,GAAehB,uBAAAA;;;AC3Gf,IAAMiB,cAAAA,GAA+B;EACjCzC,OAAAA,EAAS,KAAA;EAETE,aAAAA,EAAe;IACXI,KAAAA,EAAO;MACHC,IAAAA,EAAM;AAAC,QAAA,QAAA;AAAU,QAAA,WAAA;AAAa,QAAA,gBAAA;AAAkB,QAAA;;MAChDC,MAAAA,EAAQ;AACJ,QAAA,QAAA;AACA,QAAA,iBAAA;AACA,QAAA,SAAA;AACA,QAAA,SAAA;AACA,QAAA,aAAA;AACA,QAAA,aAAA;AACA,QAAA;;MAEJC,OAAAA,EAAS;AACL,QAAA,QAAA;AACA,QAAA,QAAA;AACA,QAAA,SAAA;AACA,QAAA,aAAA;AACA,QAAA,iBAAA;AACA,QAAA;;AAER,KAAA;IACA/P,MAAAA,EAAQ;AAAC,MAAA,WAAA;AAAa,MAAA;;IACtBgS,MAAAA,EAAQ;AAAC,MAAA,cAAA;AAAgB,MAAA;;IACzB/R,SAAAA,EAAW;MACPwP,QAAAA,EAAU;QACNS,iBAAAA,EAAmB;AACvB,OAAA;MACAC,KAAAA,EAAO;QACHhT,UAAAA,EAAY;AACR,UAAA,UAAA;AACA,UAAA,YAAA;AACA,UAAA,YAAA;AACA,UAAA;;AAER;AACJ,KAAA;IAEA+C,cAAAA,EAAgB;AAAC,MAAA;;IAEjBC,eAAAA,EAAiB;AACb,MAAA,aAAA;AACA,MAAA,UAAA;AACA,MAAA,WAAA;AACA,MAAA,SAAA;AACA,MAAA,SAAA;AACA,MAAA,UAAA;AACA,MAAA;;IAGJC,OAAAA,EAAS;MACLU,IAAAA,EAAM;AAAC,QAAA,cAAA;AAAgB,QAAA;;AAC3B,KAAA;IACAT,OAAAA,EAAS;AACL,MAAA,YAAA;AACA,MAAA;QACIyG,YAAAA,EAAc;AAAC,UAAA,OAAA;AAAS,UAAA,YAAA;AAAc,UAAA;;QACtCnG,IAAAA,EAAM;AAAC,UAAA,eAAA;AAAiB,UAAA;;QACxB+G,QAAAA,EAAU;AAAC,UAAA,eAAA;AAAiB,UAAA;;QAC5BQ,MAAAA,EAAQ;AACJ,UAAA,aAAA;AACA,UAAA,YAAA;AACA,UAAA,cAAA;AACA,UAAA,WAAA;AACA,UAAA,cAAA;AACA,UAAA;;QAEJ+J,eAAAA,EAAiB;AACb,UAAA,YAAA;AACA,UAAA;;AAER,OAAA;AACA,MAAA,WAAA;AACA,MAAA,eAAA;AACA,MAAA,eAAA;AACA,MAAA,cAAA;AACA,MAAA,aAAA;AACA,MAAA,kBAAA;AACA,MAAA,gBAAA;AACA,MAAA,eAAA;AACA,MAAA;;IAEJ3R,WAAAA,EAAa,IAAA;IACb4R,SAAAA,EAAW;MACPC,UAAAA,EAAY;AAAC,QAAA,gBAAA;AAAkB,QAAA;;MAC/BC,aAAAA,EAAe;AAAC,QAAA,eAAA;AAAiB,QAAA;;AACrC,KAAA;IACA7R,WAAAA,EAAa;MACT1B,UAAAA,EAAY,IAAA;MACZ6K,oBAAAA,EAAsB,IAAA;MACtBC,iBAAAA,EAAmB,IAAA;MACnBC,eAAAA,EAAiB,IAAA;MACjByI,eAAAA,EAAiB;AACb,QAAA,aAAA;AACA,QAAA,kBAAA;AACA,QAAA;;MAEJ/U,cAAAA,EAAgB;AACZ,QAAA,aAAA;AACA,QAAA,kBAAA;AACA,QAAA;;MAEJC,gBAAAA,EAAkB;AACd,QAAA,aAAA;AACA,QAAA,kBAAA;AACA,QAAA;;AAER,KAAA;IACAiD,aAAAA,EAAe;AACX,MAAA,iBAAA;AACA,MAAA,kBAAA;AACA,MAAA;;AAER;AACJ,CAAA;AAEA,IAAA,2BAAA,GAAeuR,cAAAA;;;ACtHf,IAAMO,kBAAAA,GAAqB;AACvB,EAAA,YAAA;AACA,EAAA,iBAAA;AACA,EAAA;IACIhU,cAAAA,EAAgB;AACZ,MAAA,WAAA;AACA,MAAA,WAAA;AACA,MAAA,WAAA;AACA,MAAA,eAAA;AACA,MAAA;;AAER;;AAGJ,IAAMiU,YAAAA,GAAe;AACjB,EAAA,YAAA;AACA,EAAA,WAAA;AACA,EAAA,iBAAA;AACA,EAAA,gBAAA;AACA,EAAA,UAAA;AACA,EAAA,oBAAA;AACA,EAAA,oBAAA;AACA,EAAA,iBAAA;AACA,EAAA,eAAA;AACA,EAAA,kBAAA;AACA,EAAA,oBAAA;AACA,EAAA,gBAAA;AACA,EAAA;IAAEpV,UAAAA,EAAYmV;AAAmB,GAAA;AACjC,EAAA;IACI1T,OAAAA,EAAS;AACL,MAAA,YAAA;AACA,MAAA;QAAEvB,eAAAA,EAAiB;AAAC,UAAA,aAAA;AAAe,UAAA;;AAAiB,OAAA;AACpD,MAAA;QAAEC,cAAAA,EAAgB;AAAC,UAAA,aAAA;AAAe,UAAA;;AAAiB,OAAA;AACnD,MAAA;QAAEC,gBAAAA,EAAkB;AAAC,UAAA,aAAA;AAAe,UAAA;;AAAiB;;AAE7D,GAAA;AACA,EAAA;IACIH,kBAAAA,EAAoB;AAChB,MAAA,UAAA;AACA,MAAA,QAAA;AACA,MAAA,YAAA;AACA,MAAA,UAAA;AACA,MAAA,cAAA;AACA,MAAA,OAAA;AACA,MAAA,OAAA;AACA,MAAA,MAAA;AACA,MAAA,OAAA;AACA,MAAA,WAAA;AACA,MAAA,SAAA;AACA,MAAA,aAAA;AACA,MAAA,SAAA;AACA,MAAA;;AAER;;AAGJ,IAAMoV,kBAAAA,GAAqB;KACpBD,YAAAA,CAAahF,MAAAA,CACZ,CAACkF,IAAAA,KAAS,OAAOA,SAAS,QAAA,IAAY,EAAE,gBAAgBA,IAAAA,CAAG,CAAA;AAE5DH,EAAAA,GAAAA;;AAGP,IAAMI,kBAAAA,GAAmC;EACrCpD,OAAAA,EAAS,KAAA;EACTE,aAAAA,EAAe;IACX1S,MAAAA,EAAQyV,YAAAA;IACRvV,YAAAA,EAAcwV,kBAAAA;IACdvV,UAAAA,EAAY;MAAEwS,QAAAA,EAAU;QAAExS,UAAAA,EAAY2P;AAAU;AAAE,KAAA;IAClD1P,IAAAA,EAAM;AAAC,MAAA,SAAA;AAAW,MAAA;;AACtB;AACJ,CAAA;AAEA,IAAA,gCAAA,GAAewV,kBAAAA;;;ACzEf,IAAMC,oBAAAA,GAAqC;EACvCrD,OAAAA,EAAS,KAAA;EACTE,aAAAA,EAAe;IACXoD,eAAAA,EAAiB,IAAA;IACjBC,WAAAA,EAAa,IAAA;IACbC,WAAAA,EAAa,IAAA;IACbC,MAAAA,EAAQ,IAAA;IACRrC,UAAAA,EAAY;MACRC,UAAAA,EAAY;QACRqC,KAAAA,EAAO;AACX;AACJ;AACJ;AACJ,CAAA;AACA,IAAA,kCAAA,GAAeL,oBAAAA;;;ACdf,IAAMM,oBAAAA,GAAqC;EACvC3D,OAAAA,EAAS,KAAA;EACTE,aAAAA,EAAe;IACXoD,eAAAA,EAAiB,IAAA;IACjBC,WAAAA,EAAa,IAAA;IACbC,WAAAA,EAAa,IAAA;IACbC,MAAAA,EAAQ,IAAA;IACRrC,UAAAA,EAAY;MACRC,UAAAA,EAAY;QACRqC,KAAAA,EAAO;AACX;AACJ;AACJ;AACJ,CAAA;AACA,IAAA,kCAAA,GAAeC,oBAAAA;;;ACDR,IAAMC,aAAAA,GAAkC;EAC3C,CAAChI,MAAAA,CAAOiI,SAAS,GAAG;IAChB,CAAC7H,aAAAA,CAAc8H,EAAE,GAAGzD,8BAAAA;IACpB,CAACrE,aAAAA,CAAc+H,MAAM,GAAG1D;AAC5B,GAAA;EACA,CAACzE,MAAAA,CAAOoI,MAAM,GAAG;IACb,CAAChI,aAAAA,CAAc8H,EAAE,GAAGrB,2BAAAA;IACpB,CAACzG,aAAAA,CAAc+H,MAAM,GAAGtB;AAC5B,GAAA;EACA,CAAC7G,MAAAA,CAAOqI,gBAAgB,GAAG;IACvB,CAACjI,aAAAA,CAAc8H,EAAE,GAAGtC,qCAAAA;IACpB,CAACxF,aAAAA,CAAc+H,MAAM,GAAGvC;AAC5B,GAAA;EACA,CAAC5F,MAAAA,CAAOsI,cAAc,GAAG;IACrB,CAAClI,aAAAA,CAAc8H,EAAE,GAAG/D,mCAAAA;IACpB,CAAC/D,aAAAA,CAAc+H,MAAM,GAAGhE;AAC5B,GAAA;EACA,CAACnE,MAAAA,CAAOuI,WAAW,GAAG;IAClB,CAACnI,aAAAA,CAAc8H,EAAE,GAAGV,gCAAAA;IACpB,CAACpH,aAAAA,CAAc+H,MAAM,GAAGX;AAC5B,GAAA;EACA,CAACxH,MAAAA,CAAOwI,aAAa,GAAG;IACpB,CAACpI,aAAAA,CAAc8H,EAAE,GAAGT,kCAAAA;IACpB,CAACrH,aAAAA,CAAc+H,MAAM,GAAGV;AAC5B,GAAA;EACA,CAACzH,MAAAA,CAAOyI,aAAa,GAAG;IACpB,CAACrI,aAAAA,CAAc8H,EAAE,GAAGH,kCAAAA;IACpB,CAAC3H,aAAAA,CAAc+H,MAAM,GAAGJ;AAC5B;AACJ,CAAA;AAGO,IAAMW,gBAAAA,GAA2D;EACpE,CAAC1I,MAAAA,CAAOiI,SAAS,GAAG3E,gBAAAA;EACpB,CAACtD,MAAAA,CAAOoI,MAAM,GAAG9E,gBAAAA;EACjB,CAACtD,MAAAA,CAAOqI,gBAAgB,GAAG/E,gBAAAA;EAC3B,CAACtD,MAAAA,CAAOsI,cAAc,GAAG9E;AAC7B,CAAA;;;ACpDO,IAAMmF,gBAAAA,GAAmB;AAC5B,EAAA,GAAA;AACA,EAAA,IAAA;AACA,EAAA,GAAA;AACA,EAAA,IAAA;AACA,EAAA,GAAA;AACA,EAAA,IAAA;AACA,EAAA,YAAA;AACA,EAAA,UAAA;AACA,EAAA;;;;ACCJ,SAASC,WAAW3H,KAAAA,EAAa;AAC7B,EAAA,OAAO0H,gBAAAA,CAAiBxG,SAASlB,KAAAA,CAAAA;AACrC;AAFS2H,MAAAA,CAAAA,UAAAA,EAAAA,YAAAA,CAAAA;AAIT,SAASC,QAAAA,CAASC,WAAsBC,KAAAA,EAAqB;AACzD,EAAA,OAAOA,KAAAA,CAAMD,UAAUE,KAAK,CAAA;AAChC;AAFSH,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA;AAIT,SAASI,sBAAAA,CACLH,SAAAA,EACAC,KAAAA,EACAG,QAAAA,EAA2D;AAE3D,EAAA,MAAMjI,KAAAA,GAAQ4H,QAAAA,CAASC,SAAAA,EAAWC,KAAAA,CAAAA;AAClC,EAAA,IAAI9H,KAAAA,IAAS,MAAM,OAAO,KAAA;AAC1B,EAAA,OAAOiI,QAAAA,CAASjI,KAAAA,EAAO6H,SAAAA,CAAU7H,KAAK,CAAA;AAC1C;AARSgI,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAUT,IAAME,YAAAA,GAAuD;EACzD,GAAA,kBAAK,MAAA,CAAA,CAACL,SAAAA,EAAWC,KAAAA,KACbE,sBAAAA,CAAuBH,SAAAA,EAAWC,KAAAA,EAAO,CAACK,CAAAA,EAAGC,CAAAA,KAAMD,CAAAA,IAAKC,CAAAA,CAAAA,EADvD,GAAA,CAAA;EAEL,IAAA,kBAAM,MAAA,CAAA,CAACP,SAAAA,EAAWC,KAAAA,KACdE,sBAAAA,CAAuBH,SAAAA,EAAWC,KAAAA,EAAO,CAACK,CAAAA,EAAGC,CAAAA,KAAMD,CAAAA,IAAKC,CAAAA,CAAAA,EADtD,IAAA,CAAA;EAEN,GAAA,kBAAK,MAAA,CAAA,CAACP,SAAAA,EAAWC,KAAAA,KACbE,sBAAAA,CAAuBH,SAAAA,EAAWC,KAAAA,EAAO,CAACK,CAAAA,EAAGC,CAAAA,KAAMD,CAAAA,GAAIC,CAAAA,CAAAA,EADtD,GAAA,CAAA;EAEL,IAAA,kBAAM,MAAA,CAAA,CAACP,SAAAA,EAAWC,KAAAA,KACdE,sBAAAA,CAAuBH,SAAAA,EAAWC,KAAAA,EAAO,CAACK,CAAAA,EAAGC,CAAAA,KAAMD,CAAAA,IAAKC,CAAAA,CAAAA,EADtD,IAAA,CAAA;EAEN,GAAA,kBAAK,MAAA,CAAA,CAACP,SAAAA,EAAWC,KAAAA,KACbE,sBAAAA,CAAuBH,SAAAA,EAAWC,KAAAA,EAAO,CAACK,CAAAA,EAAGC,CAAAA,KAAMD,CAAAA,GAAIC,CAAAA,CAAAA,EADtD,GAAA,CAAA;EAEL,IAAA,kBAAM,MAAA,CAAA,CAACP,SAAAA,EAAWC,KAAAA,KACdE,sBAAAA,CAAuBH,SAAAA,EAAWC,KAAAA,EAAO,CAACK,CAAAA,EAAGC,CAAAA,KAAMD,CAAAA,IAAKC,CAAAA,CAAAA,EADtD,IAAA,CAAA;AAGNC,EAAAA,UAAAA,0BAAaR,SAAAA,EAAWC,KAAAA,KACpBE,uBACIH,SAAAA,EACAC,KAAAA,EACA,CAACK,CAAAA,EAAGC,CAAAA,KACA,OAAOD,CAAAA,KAAM,QAAA,IACb,OAAOC,CAAAA,KAAM,QAAA,IACbD,EAAEE,UAAAA,CAAWD,CAAAA,CAAAA,CAAAA,EAPb,YAAA,CAAA;AAUZE,EAAAA,QAAAA,0BAAWT,SAAAA,EAAWC,KAAAA,KAClBE,uBACIH,SAAAA,EACAC,KAAAA,EACA,CAACK,CAAAA,EAAGC,CAAAA,KACA,OAAOD,CAAAA,KAAM,QAAA,IAAY,OAAOC,CAAAA,KAAM,QAAA,IAAYD,EAAEG,QAAAA,CAASF,CAAAA,CAAAA,CAAAA,EAL/D,UAAA,CAAA;AAQVG,EAAAA,QAAAA,0BAAWV,SAAAA,EAAWC,KAAAA,KAClBE,uBACIH,SAAAA,EACAC,KAAAA,EACA,CAACK,CAAAA,EAAGC,CAAAA,KACA,OAAOD,CAAAA,KAAM,QAAA,IAAY,OAAOC,CAAAA,KAAM,QAAA,IAAYD,EAAEjH,QAAAA,CAASkH,CAAAA,CAAAA,CAAAA,EAL/D,UAAA;AAOd,CAAA;AAEO,SAASI,iBAAAA,CACZV,UACGW,UAAAA,EAAuB;AAE1B,EAAA,IAAI,CAACX,OAAO,OAAO,KAAA;AACnB,EAAA,IAAIW,UAAAA,CAAWnH,MAAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AACpC,EAAA,OAAOmH,WAAWC,KAAAA,CAAM,CAACC,MAAMC,cAAAA,CAAed,KAAAA,EAAOa,CAAAA,CAAAA,CAAAA;AACzD;AAPgBH,MAAAA,CAAAA,iBAAAA,EAAAA,mBAAAA,CAAAA;AAShB,SAASI,cAAAA,CAAed,OAAuBD,SAAAA,EAAoB;AAC/D,EAAA,IAAI,CAACF,UAAAA,CAAWE,SAAAA,CAAUI,QAAQ,GAAG,OAAO,KAAA;AAC5C,EAAA,MAAMY,MAAAA,GAASX,YAAAA,CAAaL,SAAAA,CAAUI,QAAQ,CAAA;AAC9C,EAAA,OAAOY,MAAAA,CAAOhB,WAAWC,KAAAA,CAAAA;AAC7B;AAJSc,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAMF,SAASE,eAAAA,CACZhB,OACAW,UAAAA,EAAiC;AAEjC,EAAA,IAAI,CAACX,OAAO,OAAO,KAAA;AACnB,EAAA,KAAA,MAAWiB,QAAQN,UAAAA,EAAY;AAC3B,IAAA,IAAIM,IAAAA,CAAKC,WAAW,MAAA,EAAQ;AAC5B,IAAA,MAAMC,MAAAA,GAAST,iBAAAA,CAAkBV,KAAAA,EAAOiB,IAAAA,CAAKlB,SAAS,CAAA;AACtD,IAAA,IAAIoB,QAAQ,OAAO,KAAA;AACvB,EAAA;AACA,EAAA,OAAO,IAAA;AACX;AAXgBH,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;;;AC/ET,SAASI,SAAAA,CACZC,IAAAA,EACAC,IAAAA,EACAC,QAAAA,EAA4B;AAHhC,EAAA,IAAA,EAAA,EAAA,EAAA;AAKI,EAAA,MAAMC,eAAAA,GAAkB;IACpBC,mBAAAA,EAAAA,CAAqBF,EAAAA,GAAAA,QAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,QAAAA,CAAUE,wBAAVF,IAAAA,GAAAA,EAAAA,GAAiC,IAAA;IACtDG,sBAAAA,EAAAA,CAAwBH,EAAAA,GAAAA,QAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,QAAAA,CAAUG,2BAAVH,IAAAA,GAAAA,EAAAA,GAAoC;AAChE,GAAA;AAEA,EAAA,IAAI,CAACI,OAAAA,CAAQN,IAAAA,EAAMC,IAAAA,CAAAA,EAAO,OAAOM,WAAWP,IAAAA,CAAAA;AAE5C,EAAA,MAAMF,SAAchJ,KAAAA,CAAMC,OAAAA,CAAQiJ,IAAAA,CAAAA,GAAQ,KAAK,EAAC;AAEhD,EAAA,KAAA,MAAWrJ,OAAOqJ,IAAAA,EAAM;AACpB,IAAA,MAAMQ,IAAAA,GAAOR,KAAKrJ,GAAAA,CAAAA;AAClB,IAAA,MAAM8J,OAAOR,IAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,IAAAA,CAAOtJ,GAAAA,CAAAA;AAEpB,IAAA,IAAI+J,SAASF,IAAAA,CAAAA,IAAS1J,KAAAA,CAAMC,OAAAA,CAAQyJ,IAAAA,CAAAA,EAAO;AACvCV,MAAAA,MAAAA,CAAOnJ,GAAAA,CAAAA,GAAOoJ,SAAAA,CAAUS,IAAAA,EAAMC,MAAMN,eAAAA,CAAAA;IACxC,CAAA,MAAA,IAAWxJ,GAAAA,IAAOsJ,IAAAA,IAAQE,eAAAA,CAAgBC,mBAAAA,EAAqB;AAC3DN,MAAAA,MAAAA,CAAOnJ,GAAAA,CAAAA,GAAO8J,IAAAA;IAClB,CAAA,MAAO;AACHX,MAAAA,MAAAA,CAAOnJ,GAAAA,CAAAA,GAAO6J,IAAAA;AAClB,IAAA;AACJ,EAAA;AAEA,EAAA,IAAIL,gBAAgBE,sBAAAA,EAAwB;AACxC,IAAA,KAAA,MAAW1J,OAAOsJ,IAAAA,EAAM;AACpB,MAAA,IAAI,EAAEtJ,OAAOmJ,MAAAA,CAAAA,EAAS;AAClBA,QAAAA,MAAAA,CAAOnJ,GAAAA,CAAAA,GAAOsJ,IAAAA,CAAKtJ,GAAAA,CAAAA;AACvB,MAAA;AACJ,IAAA;AACJ,EAAA;AAEA,EAAA,OAAOmJ,MAAAA;AACX;AApCgBC,MAAAA,CAAAA,SAAAA,EAAAA,WAAAA,CAAAA;AAsChB,SAASO,OAAAA,CAAQN,MAAWC,IAAAA,EAAS;AACjC,EAAA,OACKS,QAAAA,CAASV,IAAAA,CAAAA,IAASU,QAAAA,CAAST,IAAAA,CAAAA,IAC3BnJ,KAAAA,CAAMC,OAAAA,CAAQiJ,IAAAA,CAAAA,IAASlJ,KAAAA,CAAMC,OAAAA,CAAQkJ,IAAAA,CAAAA;AAE9C;AALSK,MAAAA,CAAAA,OAAAA,EAAAA,SAAAA,CAAAA;AAOT,SAASC,WAAoBtJ,GAAAA,EAAM;AAC/B,EAAA,IAAIA,GAAAA,KAAQ,IAAA,IAAQ,OAAOA,GAAAA,KAAQ,UAAU,OAAOA,GAAAA;AAEpD,EAAA,IAAIH,KAAAA,CAAMC,OAAAA,CAAQE,GAAAA,CAAAA,EAAM;AACpB,IAAA,OAAOA,IAAI2C,GAAAA,CAAI,CAACuD,IAAAA,KAASoD,UAAAA,CAAWpD,IAAAA,CAAAA,CAAAA;AACxC,EAAA;AAEA,EAAA,MAAM2C,SAAc,EAAC;AACrB,EAAA,KAAA,MAAWnJ,OAAOM,GAAAA,EAAK;AACnB,IAAA,IAAIT,OAAOmK,SAAAA,CAAUC,cAAAA,CAAeC,IAAAA,CAAK5J,GAAAA,EAAKN,GAAAA,CAAAA,EAAM;AAChDmJ,MAAAA,MAAAA,CAAOnJ,GAAAA,CAAAA,GAAO4J,UAAAA,CAAYtJ,GAAAA,CAAYN,GAAAA,CAAI,CAAA;AAC9C,IAAA;AACJ,EAAA;AAEA,EAAA,OAAOmJ,MAAAA;AACX;AAfSS,MAAAA,CAAAA,UAAAA,EAAAA,YAAAA,CAAAA;AAiBT,SAASG,SAAS7J,KAAAA,EAAU;AACxB,EAAA,OACIA,KAAAA,KAAU,IAAA,IACV,OAAOA,KAAAA,KAAU,YACjB,CAACC,KAAAA,CAAMC,OAAAA,CAAQF,KAAAA,KACfL,MAAAA,CAAOmK,SAAAA,CAAUG,QAAAA,CAASD,IAAAA,CAAKhK,KAAAA,CAAAA,KAAW,iBAAA;AAElD;AAPS6J,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA;;;AC1DT,IAAMK,cAAAA,GAAiB,YAAA;AAQhB,IAAMC,gCAAgB,MAAA,CAAA,CACzBnK,KAAAA,KAEA,OAAOA,KAAAA,KAAU,QAAA,IACjBA,UAAU,IAAA,IACV,CAACC,MAAMC,OAAAA,CAAQF,KAAAA,KACfL,MAAAA,CAAOmK,SAAAA,CAAUG,SAASD,IAAAA,CAAKhK,KAAAA,MAAW,iBAAA,EANjB,eAAA,CAAA;AAQ7B,IAAMoK,UAAAA,mBAAa,MAAA,CAAA,CAACpK,KAAAA,KAChBC,KAAAA,CAAMC,QAAQF,KAAAA,CAAAA,GACRA,KAAAA,CAAMoB,MAAAA,CAAO,CAACkF,IAAAA,KAAyB,OAAOA,IAAAA,KAAS,QAAA,IACvD7F,MAAAA,EAHS,YAAA,CAAA;AAKnB,SAAS4J,mBAAmBrK,KAAAA,EAAc;AACtC,EAAA,IAAI,CAACmK,aAAAA,CAAcnK,KAAAA,CAAAA,EAAQ,OAAOS,MAAAA;AAClC,EAAA,MAAM,EAAEsH,KAAAA,EAAOE,QAAAA,EAAUjI,KAAAA,EAAOsK,gBAAc,GAAKtK,KAAAA;AACnD,EAAA,IAAI,OAAO+H,KAAAA,KAAU,QAAA,EAAU,OAAOtH,MAAAA;AACtC,EAAA,IAAI,CAACiH,gBAAAA,CAAiBxG,QAAAA,CAAS+G,QAAAA,GAAwB,OAAOxH,MAAAA;AAC9D,EAAA,IACI,OAAO6J,cAAAA,KAAmB,QAAA,IAC1B,OAAOA,cAAAA,KAAmB,UAE1B,OAAO7J,MAAAA;AACX,EAAA,OAAO;AAAEsH,IAAAA,KAAAA;AAAOE,IAAAA,QAAAA;IAAiCjI,KAAAA,EAAOsK;AAAe,GAAA;AAC3E;AAXSD,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAaT,SAASE,oBAAoBvK,KAAAA,EAAc;AACvC,EAAA,IAAI,CAACmK,aAAAA,CAAcnK,KAAAA,CAAAA,EAAQ,OAAOS,MAAAA;AAClC,EAAA,MAAMwI,SAA8C,EAAC;AACrDtJ,EAAAA,MAAAA,CAAOC,IAAAA,CAAKI,KAAAA,CAAAA,CAAOH,OAAAA,CAAQ,CAAC2K,IAAAA,KAAAA;AACxB,IAAA,MAAMC,SAAAA,GAAYC,cAAAA,CAAe1K,KAAAA,CAAMwK,IAAAA,CAAK,CAAA;AAC5C,IAAA,IAAIC,SAAAA,EAAWxB,MAAAA,CAAOuB,IAAAA,CAAAA,GAAQC,SAAAA;EAClC,CAAA,CAAA;AACA,EAAA,OAAOxB,MAAAA;AACX;AARSsB,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA;AAaF,SAASG,cAAAA,CACZ1K,KAAAA,EACA2K,UAAAA,GAAa,IAAA,EAAI;AAEjB,EAAA,IAAI,CAACR,aAAAA,CAAcnK,KAAAA,CAAAA,EAAQ,OAAOS,MAAAA;AAClC,EAAA,MAAMmK,QAA6B,EAAC;AACpC,EAAA,MAAMC,MAAAA,GAAST,UAAAA,CAAWpK,KAAAA,CAAM6K,MAAM,CAAA;AACtC,EAAA,MAAMC,IAAAA,GAAOV,UAAAA,CAAWpK,KAAAA,CAAM8K,IAAI,CAAA;AAClC,EAAA,IAAID,MAAAA,QAAcA,MAAAA,GAASA,MAAAA;AAC3B,EAAA,IAAIC,IAAAA,QAAYA,IAAAA,GAAOA,IAAAA;AACvB,EAAA,IAAIX,cAAcnK,KAAAA,CAAMsD,QAAQ,CAAA,EAAGsH,KAAAA,CAAMtH,WAAWtD,KAAAA,CAAMsD,QAAAA;AAC1D,EAAA,MAAMiB,UAAAA,GAAagG,mBAAAA,CAAoBvK,KAAAA,CAAMuE,UAAU,CAAA;AACvD,EAAA,IAAIA,UAAAA,QAAkBA,UAAAA,GAAaA,UAAAA;AACnC,EAAA,IAAItE,KAAAA,CAAMC,OAAAA,CAAQF,KAAAA,CAAM+K,WAAW,CAAA,EAAG;AAClCH,IAAAA,KAAAA,CAAMG,WAAAA,GAAc/K,KAAAA,CAAM+K,WAAAA,CAAYC,OAAAA,CAAQ,CAAC1E,IAAAA,KAAAA;AAC3C,MAAA,MAAMuB,YAAYsC,aAAAA,CAAc7D,IAAAA,IAC1B+D,kBAAAA,CAAmB/D,IAAAA,CAAKuB,SAAS,CAAA,GACjCpH,MAAAA;AACN,MAAA,MAAMwK,IAAAA,GAAOpD,SAAAA,GAAY6C,cAAAA,CAAepE,IAAAA,EAAM,KAAA,CAAA,GAAS7F,MAAAA;AACvD,MAAA,OAAOoH,aAAaoD,IAAAA,GAAO;AAAC,QAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAAKA,IAAAA,CAAAA,EAAL;AAAWpD,UAAAA;AAAU,SAAA;UAAK,EAAA;IAC1D,CAAA,CAAA;AACJ,EAAA;AACA,EAAA,IAAI8C,UAAAA,IAAcR,aAAAA,CAAcnK,KAAAA,CAAMyD,KAAK,CAAA,EAAG;AAC1C,IAAA,MAAMA,QAAQzD,KAAAA,CAAMyD,KAAAA;AACpBmH,IAAAA,KAAAA,CAAMnH,QAAQ,EAAC;AACf9D,IAAAA,MAAAA,CAAOC,IAAAA,CAAK6D,KAAAA,CAAAA,CAAO5D,OAAAA,CAAQ,CAACqL,IAAAA,KAAAA;AACxB,MAAA,MAAMC,SAAAA,GAAYT,cAAAA,CAAejH,KAAAA,CAAMyH,IAAAA,GAAO,KAAA,CAAA;AAC9C,MAAA,IAAIC,SAAAA,EAAWP,KAAAA,CAAMnH,KAAAA,CAAOyH,IAAAA,CAAAA,GAAQC,SAAAA;IACxC,CAAA,CAAA;AACJ,EAAA;AACA,EAAA,OAAOP,KAAAA;AACX;AA/BgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAiChB,SAASU,aAAAA,CACLC,UACAC,IAAAA,EAAa;AAEb,EAAA,IAAI,CAACnB,aAAAA,CAAcmB,IAAAA,CAAAA,EAAO,OAAOD,QAAAA;AACjC,EAAA,OAAOA,QAAAA,GAAWnC,SAAAA,CAAUmC,QAAAA,EAAUC,IAAAA,CAAAA,GAAQA,IAAAA;AAClD;AANSF,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAWF,SAASG,mBACZC,MAAAA,EAA6B;AArGjC,EAAA,IAAA,EAAA;AAuGI,EAAA,MAAMC,QAAOD,EAAAA,GAAAA,MAAAA,CAAOA,MAAAA,CAAOlK,SAAS,CAAA,CAAA,KAAvBkK,YAA6B,EAAC;AAC3C,EAAA,MAAME,YAAY,IAAIC,GAAAA,CAClBH,MAAAA,CAAOR,OAAAA,CAAQ,CAACJ,KAAAA,KAAAA;AAzGxB,IAAA,IAAAgB,GAAAA;AAyGkCjM,IAAAA,OAAAA,MAAAA,CAAOC,MAAKgL,GAAAA,GAAAA,KAAAA,CAAMnH,UAANmH,IAAAA,GAAAA,GAAAA,GAAe,EAAC,CAAA;GAAA,CAAA,CAAA;AAE1D,EAAA,MAAMiB,YAAAA,GAAeL,MAAAA,CAAOM,MAAAA,CACxB,CAACC,MAAAA,EAAQnB,KAAAA,KAAUQ,aAAAA,CAAcW,MAAAA,EAAQnB,KAAAA,CAAMtH,QAAQ,CAAA,EACvD7C,MAAAA,CAAAA;AAEJ,EAAA,MAAMgD,KAAAA,GAA6C,mBAAKgI,IAAAA,CAAKhI,KAAAA,CAAAA;AAC7DiI,EAAAA,SAAAA,CAAU7L,OAAAA,CAAQ,CAACqL,IAAAA,KAAAA;AAhHvB,IAAA,IAAAU,GAAAA;AAkHQ,IAAA,MAAMI,YAAAA,GAAeR,MAAAA,CAAOM,MAAAA,CACxB,CAACC,QAAQnB,KAAAA,KAAAA;AAnHrB,MAAA,IAAAgB,GAAAA,EAAA,EAAA;AAoHgBR,MAAAA,OAAAA,aAAAA,CACIA,aAAAA,CAAcW,MAAAA,EAAQnB,KAAAA,CAAMtH,QAAQ,CAAA,EAAA,CACpCsH,EAAAA,GAAAA,CAAAA,GAAAA,GAAAA,KAAAA,CAAMnH,KAAAA,KAANmH,IAAAA,GAAAA,MAAAA,GAAAA,GAAAA,CAAcM,IAAAA,CAAAA,KAAdN,mBAAqBtH,QAAAA,CAAAA;OAE7B7C,MAAAA,CAAAA;AAEJ,IAAA,IAAIuL,YAAAA,EAAc;AACdvI,MAAAA,KAAAA,CAAMyH,IAAAA,IAAQ,aAAA,CAAA,cAAA,CAAA,EAAA,EAAA,CAAKO,GAAAA,GAAAA,KAAKhI,KAAAA,KAALgI,IAAAA,GAAAA,MAAAA,GAAAA,IAAaP,IAAAA,CAAAA,CAAAA,EAAlB;QAAyB5H,QAAAA,EAAU0I;AAAa,OAAA,CAAA;AAClE,IAAA;EACJ,CAAA,CAAA;AACA,EAAA,MAAMC,YAAiC,cAAA,CAAA,EAAA,EAAKR,IAAAA,CAAAA;AAC5C,EAAA,IAAII,YAAAA,YAAwBvI,QAAAA,GAAWuI,YAAAA;AACvC,EAAA,IAAIH,SAAAA,CAAUrK,IAAAA,EAAM4K,SAAAA,CAAUxI,KAAAA,GAAQA,KAAAA;AACtC,EAAA,OAAOwI,SAAAA;AACX;AA9BgBV,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAgCT,IAAMW,eAAAA,mBAAkB,MAAA,CAAA,CAACpM,GAAAA,KAC5BA,GAAAA,KAAQoK,cAAAA,IAAkBpK,IAAIwI,QAAAA,CAAS,CAAA,EAAA,EAAK4B,cAAAA,CAAAA,CAAgB,CAAA,EADjC,iBAAA,CAAA;AAS/B,IAAMiC,YAAAA,2BAAgBnM,KAAAA,KAClBmK,aAAAA,CAAcnK,KAAAA,CAAAA,GAAUA,KAAAA,GAA0B,EAAC,EADlC,cAAA,CAAA;AAGrB,SAASoM,aAAAA,CACLC,SACAC,KAAAA,EAAwB;AAlJ5B,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAoJI,EAAA,MAAMhG,IAAAA,GAAO6F,aAAaE,OAAAA,CAAAA;AAC1B,EAAA,MAAME,SAAAA,GAAYJ,aAAaG,KAAAA,CAAAA;AAC/B,EAAA,MAAME,QAAAA,GAAWlG,IAAAA,CAAKkG,QAAAA,GAChBC,iBAAAA,CAAkBnG,IAAAA,CAAKkG,QAAAA,EAAAA,CAAUD,EAAAA,GAAAA,SAAAA,CAAUC,QAAAA,KAAVD,IAAAA,GAAAA,EAAAA,GAAsB,EAAC,CAAA,GACxD9L,MAAAA;AACN,EAAA,MAAMgI,UAAAA,GAAa;QACX8D,EAAAA,GAAAA,SAAAA,CAAU9D,UAAAA,KAAV8D,YAAwB,EAAA;QACxBjG,EAAAA,GAAAA,IAAAA,CAAKmC,UAAAA,KAALnC,YAAmB;;AAE3B,EAAA,MAAMoG,WAAAA,GACF,CAAC,CAACpG,IAAAA,CAAKhD,QAAAA,IAAY3D,OAAOC,IAAAA,CAAK0G,IAAAA,CAAKhD,QAAQ,CAAA,CAAEhC,MAAAA,GAAS,CAAA;AAC3D,EAAA,MAAMqL,WAAAA,GAAc,CAAC,CAACH,QAAAA,IAAY7M,OAAOC,IAAAA,CAAK4M,QAAAA,EAAUlL,MAAAA,GAAS,CAAA;AACjE,EAAA,IAAI,CAACoL,WAAAA,IAAe,CAACC,WAAAA,IAAe,CAAClE,WAAWnH,MAAAA,EAAQ;AACpD,IAAA,OAAO6I,aAAAA,CAAckC,OAAAA,CAAAA,GAAW,IAAA,GAAOA,OAAAA;AAC3C,EAAA;AACA,EAAA,OAAO,iDACCK,WAAAA,IAAe;AAAEpJ,IAAAA,QAAAA,EAAUgD,IAAAA,CAAKhD;AAAS,GAAA,CAAA,EACzCqJ,WAAAA,IAAe;AAAEH,IAAAA;AAAS,GAAA,CAAA,EAC1B/D,WAAWnH,MAAAA,IAAU;AAAEmH,IAAAA;AAAW,GAAA,CAAA;AAE9C;AAxBS2D,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AA6BF,SAASK,iBAAAA,CACZJ,SACAC,KAAAA,EAAoB;AAEpB,EAAA,MAAMrD,SAAwB,EAAC;AAC/BtJ,EAAAA,MAAAA,CAAOC,IAAAA,CAAKyM,OAAAA,CAAAA,CAASxM,OAAAA,CAAQ,CAACC,GAAAA,KAAAA;AAC1B,IAAA,IAAIoM,eAAAA,CAAgBpM,GAAAA,CAAAA,EAAM;AACtBmJ,MAAAA,MAAAA,CAAOnJ,GAAAA,CAAAA,GAAOuM,OAAAA,CAAQvM,GAAAA,CAAAA;AAC1B,IAAA,CAAA,MAAA,IAAWA,OAAOwM,KAAAA,EAAO;AACrBrD,MAAAA,MAAAA,CAAOnJ,GAAAA,IAAOsM,aAAAA,CAAcC,OAAAA,CAAQvM,GAAAA,CAAAA,EAAMwM,KAAAA,CAAMxM,GAAAA,CAAI,CAAA;AACxD,IAAA;EACJ,CAAA,CAAA;AACA,EAAA,OAAOmJ,MAAAA;AACX;AAbgBwD,MAAAA,CAAAA,iBAAAA,EAAAA,mBAAAA,CAAAA;AAkBT,SAASG,uBACZC,IAAAA,EAAqB;AAErB,EAAA,MAAM5D,SAA0B,EAAC;AACjC4D,EAAAA,IAAAA,CAAKhN,OAAAA,CAAQ,CAACkD,GAAAA,KAAAA;AACVpD,IAAAA,MAAAA,CAAOC,IAAAA,CAAKmD,GAAAA,CAAAA,CACP3B,MAAAA,CAAO8K,eAAAA,CAAAA,CACPrM,OAAAA,CAAQ,CAACC,GAAAA,KAAAA;AACN,MAAA,MAAMgN,UAAAA,GAAa/J,IAAIjD,GAAAA,CAAAA;AACvB,MAAA,IAAI,CAACqK,aAAAA,CAAc2C,UAAAA,CAAAA,EAAa;AAChCnN,MAAAA,MAAAA,CAAOC,IAAAA,CAAKkN,UAAAA,CAAAA,CAAYjN,OAAAA,CAAQ,CAAC2K,IAAAA,KAAAA;AAzMjD,QAAA,IAAA,EAAA,EAAA,EAAA;AA0MoB,QAAA,MAAMC,SAAAA,GAAYqC,WAAWtC,IAAAA,CAAAA;AAC7B,QAAA,IAAI,CAACL,aAAAA,CAAcM,SAAAA,CAAAA,EAAY;AAC/B,QAAA,IAAI,CAAC9K,MAAAA,CAAOC,IAAAA,CAAK6K,SAAAA,EAAWnJ,MAAAA,EAAQ;AACpC2H,QAAAA,MAAAA,CAAOnJ,GAAAA,CAAAA,GAAAA,CAAOmJ,EAAAA,GAAAA,MAAAA,CAAOnJ,GAAAA,CAAAA,KAAPmJ,YAAe,EAAC;AAC9BA,QAAAA,MAAAA,CAAOnJ,GAAAA,CAAAA,CAAK0K,IAAAA,CAAAA,GAAQ;AACZvB,UAAAA,GAAAA,CAAAA,EAAAA,GAAAA,MAAAA,CAAOnJ,GAAAA,CAAAA,CAAK0K,IAAAA,CAAAA,KAAZvB,YAAqB,EAAA;AACzBwB,UAAAA;;MAER,CAAA,CAAA;IACJ,CAAA,CAAA;EACR,CAAA,CAAA;AACA,EAAA,OAAO9K,MAAAA,CAAOC,IAAAA,CAAKqJ,MAAAA,CAAAA,CAAQ3H,SAAS2H,MAAAA,GAASxI,MAAAA;AACjD;AAvBgBmM,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;;;AC/LhB,IAAMG,UAAAA,GAAa,0BAAA;AAGZ,SAASC,WAAWC,OAAAA,EAAe;AAEtCC,EAAAA,OAAAA,CAAQC,IAAAA,CAAK,CAAA,EAAGJ,UAAAA,CAAAA,CAAAA,EAAcE,OAAAA,CAAAA,CAAS,CAAA;AAC3C;AAHgBD,MAAAA,CAAAA,UAAAA,EAAAA,YAAAA,CAAAA;;;ACgDT,SAASI,kBAAAA,CACZC,MAAAA,EACAC,aAAAA,EACAC,aAAAA,EACAzY,OAAAA,EAAgC;AAEhC,EAAA,OAAO0Y,iBACHH,MAAAA,CAAOhK,aAAAA,EACPiK,aAAAA,EACAC,aAAAA,EACA,iCACOzY,OAAAA,CAAAA,EADP;AAEIsO,IAAAA,eAAAA,EAAiBiK,MAAAA,CAAOjK;GAC5B,CAAA,CAAA;AAER;AAfgBgK,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AAiBT,SAASI,gBAAAA,CACZH,MAAAA,EACAC,aAAAA,EACAC,aAAAA,EACAzY,OAAAA,EAAwB;AAExB,EAAA,MAAM2Y,gBAA+B,EAAC;AACtC,EAAA,MAAMC,cAAc5Y,OAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAASsO,eAAAA;AAC7B,EAAA,IAAIiK,OAAO5J,KAAAA,EAAO;AACd,IAAA,KAAA,MAAWyH,IAAAA,IAAQmC,OAAO5J,KAAAA,EAAO;AAC7B9D,MAAAA,MAAAA,CAAOgO,MAAAA,CACHF,eACAG,wBAAAA,CACI1C,IAAAA,EACAmC,QACAC,aAAAA,EACAC,aAAAA,EACAzY,OAAAA,CAAAA,CAAAA;AAGZ,IAAA;EACJ,CAAA,MAAO;AACH,IAAA,MAAM+Y,iBAAiBC,uBAAAA,CACnBR,aAAAA,EACA7M,MAAAA,EACA8M,aAAAA,EACAzY,mCAAS2K,QAAAA,CAAAA;AAEb,IAAA,MAAMsO,eAAeV,MAAAA,CAAO/J,QAAAA;AAE5B,IAAA,MAAM0K,UAAAA,GAAaC,mBAAAA,CAAoBZ,MAAAA,EAAQC,aAAAA,CAAAA;AAC/C,IAAA,IAAIU,UAAAA,EAAY;AACZP,MAAAA,aAAAA,CAAclJ,UAAAA,GAAayJ,UAAAA;AAC/B,IAAA;AAEA,IAAA,MAAME,aAAAA,GAAgBC,mBAAAA,CAClBd,MAAAA,EACAC,aAAAA,EACA7M,QACAiN,WAAAA,CAAAA;AAGJ/N,IAAAA,MAAAA,CAAOgO,MAAAA,CACHF,aAAAA,EACAW,sBAAAA,CAAuBf,MAAAA,EAAQC,aAAAA,EAAe;AAC1CS,MAAAA,YAAAA;AACAF,MAAAA,cAAAA;AACAK,MAAAA,aAAAA;AACAR,MAAAA;AACJ,KAAA,CAAA,CAAA;AAER,EAAA;AACA,EAAA,OAAOD,aAAAA;AACX;AArDgBD,MAAAA,CAAAA,gBAAAA,EAAAA,kBAAAA,CAAAA;AA0DT,SAASa,qBAAAA,CACZhB,MAAAA,EACAC,aAAAA,EACAC,aAAAA,EACA9N,QAAAA,EAAqB;AAErB,EAAA,OAAO6O,iBAAAA,CACHjB,OAAO/J,QAAAA,EACP7C,MAAAA,EACAqN,wBACIR,aAAAA,EACA7M,MAAAA,EACA8M,aAAAA,EACA9N,QAAAA,CAAAA,CAAAA;AAGZ;AAhBgB4O,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AAkBhB,SAAST,wBAAAA,CACL1C,IAAAA,EACAmC,MAAAA,EACAC,aAAAA,EACAC,eACAzY,OAAAA,EAAwB;AAExB,EAAA,MAAMyZ,cAAAA,GAAiBlB,MAAAA,CAAO5J,KAAAA,CAAOyH,IAAAA,CAAAA;AACrC,EAAA,MAAMwC,cAAc5Y,OAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAASsO,eAAAA;AAC7B,EAAA,MAAMyK,iBAAiBC,uBAAAA,CACnBR,aAAAA,EACApC,IAAAA,EACAqC,aAAAA,EACAzY,mCAAS2K,QAAAA,CAAAA;AAEb,EAAA,MAAMsO,eAAeV,MAAAA,CAAO/J,QAAAA;AAE5B,EAAA,MAAMmK,gBAA+B,EAAC;AAEtC,EAAA,MAAMO,UAAAA,GAAaC,mBAAAA,CAAoBZ,MAAAA,EAAQC,aAAAA,EAAepC,IAAAA,CAAAA;AAC9D,EAAA,IAAI8C,UAAAA,EAAY;AACZP,IAAAA,aAAAA,CAAc,CAAA,EAAGvC,IAAAA,CAAAA,YAAAA,CAAkB,CAAA,GAAI8C,UAAAA;AAC3C,EAAA;AAEA,EAAA,MAAME,aAAAA,GAAAA,CACFpZ,mCAAS0Z,gBAAAA,MAAqB,KAAA,GACxB/N,SACA0N,mBAAAA,CAAoBd,MAAAA,EAAQC,aAAAA,EAAepC,IAAAA,EAAMwC,WAAAA,CAAAA;AAE3D/N,EAAAA,MAAAA,CAAOgO,MAAAA,CACHF,aAAAA,EACAW,sBAAAA,CAAuBf,MAAAA,EAAQC,aAAAA,EAAe;IAC1CmB,QAAAA,EAAUF,cAAAA;IACVG,UAAAA,EAAYxD,IAAAA;AACZ6C,IAAAA,YAAAA;AACAF,IAAAA,cAAAA;AACAK,IAAAA,aAAAA;AACAR,IAAAA;AACJ,GAAA,CAAA,CAAA;AAGJ,EAAA,OAAOD,aAAAA;AACX;AA1CSG,MAAAA,CAAAA,wBAAAA,EAAAA,0BAAAA,CAAAA;AA4CT,SAASe,cAAczD,IAAAA,EAAa;AAChC,EAAA,OAAOA,IAAAA,GAAO,CAAA,EAAGA,IAAAA,CAAAA,EAAOrM,6BAAAA,CAAAA,CAAAA,GAAkC,EAAA;AAC9D;AAFS8P,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAIT,SAASC,eAAAA,CAAgB9O,KAAa4O,UAAAA,EAAmB;AACrD,EAAA,MAAMG,SAAAA,GAAYF,cAAcD,UAAAA,CAAAA;AAChC,EAAA,OAAO,CAAA,EAAGG,SAAAA,CAAAA,EAAY/O,GAAAA,CAAAA,CAAAA;AAC1B;AAHS8O,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAKT,IAAME,aAAAA,mBAAgB,MAAA,CAAA,CAACC,OAAAA,EAAiB/O,KAAAA,KAAAA;AACpC,EAAA,MAAMgP,YAAAA,GAAe,IAAIC,MAAAA,CACrB,GAAA,GAAMF,OAAAA,CAAQG,OAAAA,CAAQ,KAAA,EAAO,KAAA,CAAA,CAAOA,OAAAA,CAAQ,KAAA,EAAO,IAAA,IAAQ,GAAA,CAAA;AAE/D,EAAA,OAAOF,YAAAA,CAAaG,KAAKnP,KAAAA,CAAAA;AAC7B,CAAA,EALsB,eAAA,CAAA;AAOtB,SAASoP,mBAAAA,CACLtP,GAAAA,EACAwN,aAAAA,EACAI,WAAAA,EAAoC;AAEpC,EAAA,MAAM,EAAE5C,IAAAA,GAAO,EAAA,EAAE,GAAKwC,aAAAA;AACtB,EAAA,MAAMtK,QAAQ0K,WAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,WAAAA,CAAc5N,GAAAA,CAAAA;AAC5B,EAAA,KAAA,MAAWiP,WAAWjE,IAAAA,EAAM;AACxB,IAAA,IAAIiE,OAAAA,KAAYjP,GAAAA,IAAOgP,aAAAA,CAAcC,OAAAA,EAASjP,GAAAA,CAAAA,EAAM;AAChD,MAAA,OAAO,IAAA;AACX,IAAA;AACA,IAAA,IAAIkD,UAAU+L,OAAAA,KAAY/L,KAAAA,IAAS8L,aAAAA,CAAcC,OAAAA,EAAS/L,KAAAA,CAAAA,CAAAA,EAAS;AAC/D,MAAA,OAAO,IAAA;AACX,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,KAAA;AACX;AAhBSoM,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA;AAkBT,SAASC,qBAAAA,CACLvP,KACAwN,aAAAA,EAAkC;AAElC,EAAA,MAAM,EAAEzC,MAAAA,GAAS,EAAA,EAAE,GAAKyC,aAAAA;AACxB,EAAA,KAAA,MAAWyB,WAAWlE,MAAAA,EAAQ;AAC1B,IAAA,IAAIkE,OAAAA,KAAYjP,GAAAA,IAAOgP,aAAAA,CAAcC,OAAAA,EAASjP,GAAAA,CAAAA,EAAM;AAChD,MAAA,OAAO,IAAA;AACX,IAAA;AACJ,EAAA;AACA,EAAA,OAAO,KAAA;AACX;AAXSuP,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AAaT,SAASC,wBAAAA,CACLxP,GAAAA,EACAwN,aAAAA,EACAiC,kBAAAA,EACA7B,WAAAA,EAAoC;AAEpC,EAAA,MAAM8B,gBAAAA,GAAmBH,qBAAAA,CAAsBvP,GAAAA,EAAKwN,aAAAA,CAAAA;AACpD,EAAA,MAAMmC,cAAAA,GAAiBL,mBAAAA,CAAoBtP,GAAAA,EAAKwN,aAAAA,EAAeI,WAAAA,CAAAA;AAC/D,EAAA,MAAMgC,SAAAA,GACF,CAACF,gBAAAA,KAAqB,CAACD,kBAAAA,IAAsBE,cAAAA,CAAAA;AAEjD,EAAA,MAAME,SAAAA,GAAYF,iBAAiB,MAAA,GAAS,QAAA;AAC5C,EAAA,MAAMG,UAAAA,GAAaL,qBAAqBI,SAAAA,GAAY,KAAA;AACpD,EAAA,MAAME,eAAAA,GAAkBL,mBAAmB,QAAA,GAAWI,UAAAA;AACtD,EAAA,OAAO;AAAEF,IAAAA,SAAAA;AAAWG,IAAAA;AAAgB,GAAA;AACxC;AAfSP,MAAAA,CAAAA,wBAAAA,EAAAA,0BAAAA,CAAAA;AAiBT,SAASQ,aAAAA,CACLhQ,KACA,EACI2O,QAAAA,EACAC,aAAa,EAAA,EACbqB,aAAAA,EACArC,WAAAA,EAAW,EAEfJ,aAAAA,EAAmC;AApQvC,EAAA,IAAA,EAAA;AAsQI,EAAA,MAAM0C,iBAAAA,GAAAA,CAAoB1C,EAAAA,GAAAA,aAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,aAAAA,CAAe7J,KAAAA,KAAf6J,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAuBoB,UAAAA,CAAAA;AAEjD,EAAA,MAAMuB,aAAAA,GAAiC3C,gBACjCgC,wBAAAA,CACIxP,GAAAA,EACAwN,eACAyC,aAAAA,KAAkB,MAAA,EAClBrC,WAAAA,CAAAA,GAEJ;IACIgC,SAAAA,EAAW,IAAA;IACXG,eAAAA,EAAiB;AACrB,GAAA;AACN,EAAA,MAAMK,iBAAAA,GAAqCF,oBACrCV,wBAAAA,CACIxP,GAAAA,EACAkQ,mBACAD,aAAAA,KAAkB,MAAA,EAClBrC,WAAAA,CAAAA,GAEJ;IACIgC,SAAAA,EAAW,IAAA;IACXG,eAAAA,EAAiB;AACrB,GAAA;AAGN,EAAA,MAAMH,SAAAA,GAAAA,CACD,CAACjB,QAAAA,IAAYA,QAAAA,CAAS0B,KAAK,CAACC,CAAAA,KAAMtQ,GAAAA,CAAIuI,UAAAA,CAAW+H,CAAAA,CAAAA,CAAAA,KAClDH,aAAAA,CAAcP,aACdQ,iBAAAA,CAAkBR,SAAAA;AAEtB,EAAA,MAAMG,eAAAA,GACFI,aAAAA,CAAcJ,eAAAA,IAAmBK,iBAAAA,CAAkBL,eAAAA;AAEvD,EAAA,OAAO;AAAEH,IAAAA,SAAAA;AAAWG,IAAAA;AAAgB,GAAA;AACxC;AA7CSC,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AA+CT,SAASO,YAAAA,CACLvQ,GAAAA,EACA,EACI2O,QAAAA,EACAC,UAAAA,GAAa,EAAA,EACbqB,aAAAA,EACAO,cAAAA,GAAiB,KAAA,EACjB5C,WAAAA,EAAW,EAEfJ,aAAAA,EAAmC;AAEnC,EAAA,MAAMrE,MAAAA,GAAS6G,cACXhQ,GAAAA,EACA;AAAE2O,IAAAA,QAAAA;AAAUC,IAAAA,UAAAA;AAAYqB,IAAAA,aAAAA;AAAeO,IAAgB5C;AAAY,GAAA,EACnEJ,aAAAA,CAAAA;AAEJ,EAAA,MAAMoC,SAAAA,GAAYY,kBAAkBrH,MAAAA,CAAOyG,SAAAA;AAC3C,EAAA,OAAO;AAAEA,IAAAA,SAAAA;AAAWG,IAAAA,eAAAA,EAAiB5G,MAAAA,CAAO4G;AAAgB,GAAA;AAChE;AAlBSQ,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAoBT,SAASE,mBAAAA,CACL9C,aAAAA,EACA3N,GAAAA,EACA,EAAE4O,UAAAA,EAAY4B,gBAAgBpC,aAAAA,EAAa,EAC3C5K,QAAAA,EACAkJ,QAAAA,EACAqD,eAAAA,EAAsC;AAEtC,EAAA,MAAMW,OAAAA,GAAU5B,eAAAA,CAAgB9O,GAAAA,EAAK4O,UAAAA,CAAAA;AAErC,EAAA,IAAI4B,cAAAA,IAAkBT,mBAAmB,IAAA,EAAM;AAC3CpC,IAAAA,aAAAA,CAAc+C,OAAAA,CAAAA,GAAWX,eAAAA;AACzB,IAAA;AACJ,EAAA;AAEA,EAAA,MAAMY,gBAAgBnN,QAAAA,IAAY3D,MAAAA,CAAOC,IAAAA,CAAK0D,QAAAA,EAAUhC,MAAAA,GAAS,CAAA;AACjE,EAAA,MAAMoP,iBAAiBlE,QAAAA,IAAY7M,MAAAA,CAAOC,IAAAA,CAAK4M,QAAAA,EAAUlL,MAAAA,GAAS,CAAA;AAClE,EAAA,MAAMmH,UAAAA,GAAakI,mBAAAA,CAAoB7Q,GAAAA,EAAKoO,aAAAA,CAAAA;AAE5CT,EAAAA,aAAAA,CAAc+C,OAAAA,CAAAA,GACV,CAACC,aAAAA,IAAiB,CAACC,kBAAkB,CAACjI,UAAAA,GAChC,IAAA,GACA,cAAA,CAAA,cAAA,CAAA,cAAA,CAAA,EAAA,EACQgI,aAAAA,IAAiB;AAAEnN,IAAAA;AAAS,GAAA,CAAA,EAC5BoN,cAAAA,IAAkB;AAAElE,IAAAA;AAAS,GAAA,CAAA,EAC7B/D,UAAAA,IAAc;AAAEA,IAAAA;AAAW,GAAA,CAAA;AAEjD;AA3BS8H,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA;AA6BT,SAASnC,uBACLf,MAAAA,EACAC,aAAAA,EACA,EACImB,QAAAA,EACAmC,aAAa,EAAA,EACblC,UAAAA,GAAa,EAAA,EACbqB,aAAAA,EAAec,oBACf9C,YAAAA,EACAF,cAAAA,EACAK,aAAAA,EACAoC,cAAAA,EACA5C,aAAW,EACQ;AAEvB,EAAA,MAAMD,gBAA+B,EAAC;AACtC,EAAA,MAAMqD,iBAAAA,GAAoBC,iBAAAA,CAAkB1D,MAAAA,EAAQC,aAAAA,EAAe;AAC/DoB,IAAAA,UAAAA;AACAkC,IAAAA;GACJ,CAAA;AAEA,EAAA,KAAA,MAAW9Q,OAAOuN,MAAAA,EAAQ;AACtB,IAAA,IAAIvO,wBAAAA,CAAyBoC,QAAAA,CAASpB,GAAAA,CAAAA,EAAM;AACxC,MAAA;AACJ,IAAA;AACA,IAAA,MAAMiQ,gBAAgBc,kBAAAA,IAAAA,IAAAA,GAAAA,kBAAAA,GAAsBC,iBAAAA;AAC5C,IAAA,MAAME,WAAAA,GAAc3D,OAAOvN,GAAAA,CAAAA;AAC3B,IAAA,MAAMmR,UAAAA,GAAa,CAAA,EAAGL,UAAAA,CAAAA,EAAa9Q,GAAAA,CAAAA,CAAAA;AACnC,IAAA,MAAMoR,SAAAA,GAAY,CAAA,EAAGD,UAAAA,CAAAA,EAAarS,gCAAAA,CAAAA,CAAAA;AAElC,IAAA,MAAMuS,eAAAA,GAAkBd,aACpBY,UAAAA,EACA;AACIxC,MAAAA,QAAAA;AACAC,MAAAA,UAAAA;AACAqB,MAAAA,aAAAA;AACAO,MAAAA,cAAAA;AACA5C,MAAAA;AACJ,KAAA,EACAJ,aAAAA,CAAAA;AAEJ,IAAA,IAAI,CAAC6D,gBAAgBzB,SAAAA,EAAW;AAC5B,MAAA;AACJ,IAAA;AAEA,IAAA,IAAIpM,QAAAA,GAAWyK,YAAAA;AACf,IAAA,IAAIvB,QAAAA,GAAsC/L,MAAAA;AAC1C,IAAA,IAAIR,KAAAA,CAAMC,OAAAA,CAAQ8Q,WAAAA,CAAAA,EAAc;AAE5B1N,MAAAA,QAAAA,GAAWgL,iBAAAA,CACPP,YAAAA,EACA,EAAC,EACDF,cAAAA,CAAAA;AAEJrB,MAAAA,QAAAA,GAAW4E,2BAAAA,CAA4BJ,aAAa1D,aAAAA,EAAe;AAC/DmB,QAAAA,QAAAA;AACAC,QAAAA,UAAAA;QACAkC,UAAAA,EAAYM,SAAAA;AACZnD,QAAAA,YAAAA;AACAF,QAAAA,cAAAA;AACAK,QAAAA,aAAAA;AACAoC,QAAAA,cAAAA;AACA5C,QAAAA;OACJ,CAAA;AAEA/N,MAAAA,MAAAA,CAAOgO,MAAAA,CAAOF,eAAejB,QAAAA,CAAAA;AACjC,IAAA,CAAA,MAAA,IACI,OAAOwE,WAAAA,KAAgB,QAAA,IACvB,CAAC/Q,KAAAA,CAAMC,OAAAA,CAAQ8Q,WAAAA,CAAAA,EACjB;AACE1N,MAAAA,QAAAA,GAAWgL,iBAAAA,CACPP,YAAAA,EACAiD,WAAAA,CAAY1N,QAAAA,EACZuK,cAAAA,CAAAA;AAGJrB,MAAAA,QAAAA,GAAW4B,sBAAAA,CACP4C,aACA1D,aAAAA,EACA;AACImB,QAAAA,QAAAA;AACAC,QAAAA,UAAAA;QACAkC,UAAAA,EAAYM,SAAAA;QACZnD,YAAAA,EAAczK,QAAAA;AACd4K,QAAAA,aAAAA;AACAoC,QAAAA,cAAAA;AACA5C,QAAAA;OACJ,CAAA;AAEJ/N,MAAAA,MAAAA,CAAOgO,MAAAA,CAAOF,eAAejB,QAAAA,CAAAA;AACjC,IAAA,CAAA,MAAA,IAAW,OAAOwE,WAAAA,KAAgB,SAAA,IAAa,CAACA,WAAAA,EAAa;AAEzD,MAAA;IACJ,CAAA,MAAA,IAAW,OAAOA,WAAAA,KAAgB,SAAA,IAAaA,WAAAA,EAAa;AACxD1N,MAAAA,QAAAA,GAAWgL,iBAAAA,CACPP,YAAAA,EACA,EAAC,EACDF,cAAAA,CAAAA;AAER,IAAA;AAEA0C,IAAAA,mBAAAA,CACI9C,eACAwD,UAAAA,EACA;AACIvC,MAAAA,UAAAA;AACA4B,MAAAA,cAAAA;AACApC,MAAAA;KACJ,EACA5K,QAAAA,EACAkJ,QAAAA,EACA2E,eAAAA,CAAgBtB,eAAe,CAAA;AAEvC,EAAA;AAEA,EAAA,OAAOpC,aAAAA;AACX;AApHSW,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;AAsHT,SAASuC,mBAAAA,CACL7Q,KACAoO,aAAAA,EAA+C;AAE/C,EAAA,IAAI,CAACA,aAAAA,IAAiBA,aAAAA,CAAc5M,MAAAA,KAAW,GAAG,OAAOb,MAAAA;AACzD,EAAA,MAAMwI,MAAAA,GAASiF,aAAAA,CAAcpC,MAAAA,CAAO,CAAC7C,SAAQmH,CAAAA,KAAAA;AACzC,IAAA,MAAMiB,QAAAA,GAAWjB,CAAAA,CAAErN,GAAAA,CAAIjD,GAAAA,CAAAA;AACvB,IAAA,IACI,OAAOuR,QAAAA,KAAa,QAAA,KACnBA,QAAAA,KAAa,MAAA,IAAUA,aAAa,QAAA,CAAA,EACvC;AACEpI,MAAAA,QAAOqI,IAAAA,CAAK;QACRtI,MAAAA,EAAQqI,QAAAA;AACRxJ,QAAAA,SAAAA,EAAWuI,CAAAA,CAAEvI;OACjB,CAAA;AACJ,IAAA;AACA,IAAA,OAAOoB,OAAAA;AACX,EAAA,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAIA,MAAAA,CAAO3H,MAAAA,KAAW,CAAA,EAAG,OAAOb,MAAAA;AAChC,EAAA,OAAOwI,MAAAA;AACX;AArBS0H,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA;AAuBT,SAASxC,mBAAAA,CACLd,MAAAA,EACAC,aAAAA,EACApC,IAAAA,EACAwC,WAAAA,EAAoC;AA7exC,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA+eI,EAAA,MAAM6D,mBAAmBjE,aAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,aAAAA,CAAevC,WAAAA;AACxC,EAAA,MAAMyD,mBAAmBtD,IAAAA,GAAAA,CACnBoC,EAAAA,GAAAA,CAAAA,EAAAA,GAAAA,aAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,aAAAA,CAAe7J,UAAf6J,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAuBpC,IAAAA,CAAAA,KAAvBoC,mBAA8BvC,WAAAA,GAC9BtK,MAAAA;AAEN,EAAA,IAAI,CAAC8Q,gBAAAA,IAAoB,CAAC/C,gBAAAA,EAAkB,OAAO/N,MAAAA;AAEnD,EAAA,MAAM+Q,kBAAAA,GAAqB;AACnBD,IAAAA,GAAAA,gBAAAA,IAAAA,IAAAA,GAAAA,gBAAAA,GAAoB,EAAA;AACpB/C,IAAAA,GAAAA,gBAAAA,IAAAA,IAAAA,GAAAA,gBAAAA,GAAoB;;AAE5B,EAAA,OAAA,CACIgD,EAAAA,GAAAA,kBAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,kBAAAA,CAAoBzO,GAAAA,CAAI,CAAC4F,CAAAA,MAAO;AAC5Bd,IAAAA,SAAAA,EAAWc,CAAAA,CAAEd,SAAAA;IACb9E,GAAAA,EAAKqL,sBAAAA,CAAuBf,QAAQ1E,CAAAA,EAAG;MACnC2H,cAAAA,EAAgB,IAAA;AAChB5C,MAAAA;KACJ;AACJ,GAAA,CAAA,CAAA,KANA8D,IAAAA,GAAAA,EAAAA,GAMO/Q,MAAAA;AAEf;AA1BS0N,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA;AA4BT,SAASF,mBAAAA,CACLZ,MAAAA,EACAC,aAAAA,EACApC,IAAAA,EAAa;AAxgBjB,EAAA,IAAA,EAAA,EAAA,EAAA;AA0gBI,EAAA,MAAMuG,iBAAiBvG,IAAAA,GAAAA,CACjBoC,EAAAA,GAAAA,CAAAA,EAAAA,GAAAA,aAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,aAAAA,CAAe7J,UAAf6J,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAuBpC,IAAAA,CAAAA,KAAvBoC,mBAA8B/I,UAAAA,GAC9B9D,MAAAA;AACN,EAAA,MAAMiR,uBAAuBpE,aAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,aAAAA,CAAe/I,UAAAA;AAC5C,EAAA,MAAMoN,gBAAAA,GAAmBF,cAAAA,GACnBG,YAAAA,CAAaF,oBAAAA,EAAsBD,cAAAA,CAAAA,GACnCC,oBAAAA;AACN,EAAA,OAAOE,YAAAA,CAAavE,MAAAA,CAAO9I,UAAAA,EAAYoN,gBAAAA,CAAAA;AAC3C;AAbS1D,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA;AAeT,SAASH,uBAAAA,CACLR,aAAAA,EACApC,IAAAA,EACAqC,aAAAA,EACA9N,QAAAA,EAAqB;AAxhBzB,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA0hBI,EAAA,MAAMuM,eAAed,IAAAA,GAAAA,CACfoC,EAAAA,GAAAA,CAAAA,EAAAA,GAAAA,aAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,aAAAA,CAAe7J,UAAf6J,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAuBpC,IAAAA,CAAAA,KAAvBoC,mBAA8BhK,QAAAA,GAC9B7C,MAAAA;AACN,EAAA,MAAMoR,kBAAAA,GAAAA,CAAqBvE,EAAAA,GAAAA,aAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,aAAAA,CAAehK,QAAAA,KAAfgK,IAAAA,GAAAA,EAAAA,GAA2B,EAAC;AACvD,EAAA,MAAMwE,UAAAA,GAAa9F,YAAAA,GACb4F,YAAAA,CAAaC,kBAAAA,EAAoB7F,YAAAA,CAAAA,GACjC6F,kBAAAA;AACN,EAAA,IAAI,CAACC,UAAAA,IAAe,CAACvE,aAAAA,IAAiB,CAAC9N,UAAW,OAAOqS,UAAAA;AACzD,EAAA,OAAO3R,gBAAAA,CAAiB2R,UAAAA,EAAYvE,aAAAA,IAAAA,IAAAA,GAAAA,aAAAA,GAAiB,IAAI9N,QAAAA,CAAAA;AAC7D;AAfSqO,MAAAA,CAAAA,uBAAAA,EAAAA,yBAAAA,CAAAA;AAiBT,SAASQ,iBAAAA,CACLyD,iBAAAA,EACAC,YAAAA,EACAnE,cAAAA,EAAmD;AAEnD,EAAA,MAAMoE,YAAAA,GAAeL,YAAAA,CAAaG,iBAAAA,EAAmBC,YAAAA,CAAAA;AACrD,EAAA,OAAOJ,YAAAA,CAAaK,cAAcpE,cAAAA,CAAAA;AACtC;AAPSS,MAAAA,CAAAA,iBAAAA,EAAAA,mBAAAA,CAAAA;AAST,SAASsD,YAAAA,CACLM,SACAC,MAAAA,EAA2C;AAG3C,EAAA,IAAI,CAACA,MAAAA,IAAU,CAACD,OAAAA,EAAS,OAAOzR,MAAAA;AAEhC,EAAA,IAAI,CAAC0R,QAAQ,OAAOD,OAAAA;AAEpB,EAAA,IAAI,OAAOC,MAAAA,KAAW,QAAA,IAAYlS,MAAMC,OAAAA,CAAQiS,MAAAA,GAAS,OAAOD,OAAAA;AAChE,EAAA,OAAO,CAACA,OAAAA,GAAUC,MAAAA,GAASjJ,SAAAA,CAAUgJ,SAASC,MAAAA,CAAAA;AAClD;AAXSP,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAaT,SAASQ,UAAAA,CACLpB,WAAAA,EACA,EAAEJ,UAAAA,EAAU,EAAwB;AAEpC,EAAA,OAAOjR,MAAAA,CAAOC,IAAAA,CAAKoR,WAAAA,CAAAA,CAAajO,GAAAA,CAAI,CAACqN,CAAAA,KACjCxB,eAAAA,CAAgB,CAAA,EAAGgC,UAAAA,CAAAA,EAAaR,CAAAA,EAAG,CAAA,CAAA;AAE3C;AAPSgC,MAAAA,CAAAA,UAAAA,EAAAA,YAAAA,CAAAA;AAST,SAASC,YAAAA,CACLrB,WAAAA,EACA,EAAEtC,UAAAA,EAAYkC,YAAU,EAAwB;AAEhD,EAAA,OAAOI,WAAAA,CAAYlF,MAAAA,CAAO,CAAC7C,MAAAA,EAAQjJ,KAAAA,KAAAA;AAC/B,IAAA,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC3BiJ,MAAAA,MAAAA,CAAOqI,KAAK1C,eAAAA,CAAgB,CAAA,EAAGgC,UAAAA,CAAAA,EAAa5Q,KAAAA,EAAO,CAAA,CAAA;IACvD,CAAA,MAAO;AACHiJ,MAAAA,MAAAA,CAAOqI,IAAAA,CAAI,GAAIc,UAAAA,CAAWpS,KAAAA,EAAO;AAAE0O,QAAYkC;AAAW,OAAA,CAAA,CAAA;AAC9D,IAAA;AACA,IAAA,OAAO3H,MAAAA;AACX,EAAA,CAAA,EAAG,EAAE,CAAA;AACT;AAZSoJ,MAAAA,CAAAA,YAAAA,EAAAA,cAAAA,CAAAA;AAcT,SAAStB,kBACLC,WAAAA,EACA1D,aAAAA,EACA,EAAEoB,UAAAA,EAAYkC,YAAU,EAAwB;AArlBpD,EAAA,IAAA,EAAA;AAulBI,EAAA,IAAI,CAACtD,aAAAA,EAAe;AACpB,EAAA,MAAMgF,WAAWrS,KAAAA,CAAMC,OAAAA,CAAQ8Q,WAAAA,CAAAA,GACzBqB,aAAarB,WAAAA,EAAa;AAAEtC,IAAAA,UAAAA;AAAYkC,IAAAA;GAAW,CAAA,GACnDwB,WAAWpB,WAAAA,EAAa;AAAEtC,IAAYkC;GAAW,CAAA;AACvD,EAAA,MAAMZ,iBAAAA,GAAoBtB,UAAAA,GAAAA,CACpBpB,EAAAA,GAAAA,aAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,aAAAA,CAAe7J,KAAAA,KAAf6J,mBAAuBoB,UAAAA,CAAAA,GACvBjO,MAAAA;AACN,EAAA,KAAA,MAAWX,OAAOwS,QAAAA,EAAU;AACxB,IAAA,IAAIlD,mBAAAA,CAAoBtP,GAAAA,EAAKwN,aAAAA,CAAAA,EAAgB;AACzC,MAAA,OAAO,MAAA;AACX,IAAA,CAAA,MAAA,IACI0C,iBAAAA,IACAZ,mBAAAA,CAAoBtP,GAAAA,EAAKkQ,iBAAAA,CAAAA,EAC3B;AACE,MAAA,OAAO,MAAA;AACX,IAAA;AACJ,EAAA;AACA,EAAA,OAAOvP,MAAAA;AACX;AAvBSsQ,MAAAA,CAAAA,iBAAAA,EAAAA,mBAAAA,CAAAA;AAyBT,SAASK,2BAAAA,CACLJ,WAAAA,EACA1D,aAAAA,EACA,EACImB,QAAAA,EACAC,UAAAA,EACAkC,UAAAA,EACA7C,YAAAA,EACAF,cAAAA,EACAK,aAAAA,EACAoC,cAAAA,EACA5C,WAAAA,EAAW,EACQ;AAEvB,EAAA,MAAMD,gBAA+B,EAAC;AACtC,EAAA,MAAMsC,aAAAA,GAAgBgB,iBAAAA,CAAkBC,WAAAA,EAAa1D,aAAAA,EAAe;AAChEoB,IAAAA,UAAAA;AACAkC,IAAAA;GACJ,CAAA;AACA,EAAA,MAAM2B,cAAAA,GAAiBjE,iBAAAA,CACnBP,YAAAA,EACAtN,MAAAA,EACAoN,cAAAA,CAAAA;AAGJmD,EAAAA,WAAAA,CAAYnR,OAAAA,CAAQ,CAAC2S,MAAAA,KAAAA;AACjB,IAAA,MAAMC,QAAAA,GAAW,CAAA,EAAG7B,UAAAA,CAAAA,EAAa4B,MAAAA,CAAAA,CAAAA;AACjC,IAAA,IAAI,OAAOA,WAAW,QAAA,EAAU;AAC5B,MAAA,MAAMrB,eAAAA,GAAkBd,aACpBoC,QAAAA,EACA;AACIhE,QAAAA,QAAAA;AACAC,QAAAA,UAAAA;AACAqB,QAAAA,aAAAA;AACAO,QAAAA,cAAAA;AACA5C,QAAAA;AACJ,OAAA,EACAJ,aAAAA,CAAAA;AAEJ,MAAA,IAAI,CAAC6D,gBAAgBzB,SAAAA,EAAW;AAC5B,QAAA;AACJ,MAAA;AACAa,MAAAA,mBAAAA,CACI9C,eACAgF,QAAAA,EACA;AACIhE,QACAC,UAAAA;AACA4B,QAAAA,cAAAA;AACApC,QAAAA;OACJ,EACAqE,cAAAA,EACA9R,MAAAA,EACA0Q,eAAAA,CAAgBtB,eAAe,CAAA;IAEvC,CAAA,MAAO;AACHlQ,MAAAA,MAAAA,CAAOgO,MAAAA,CACHF,aAAAA,EACAW,sBAAAA,CAAuBoE,MAAAA,EAAQlF,aAAAA,EAAe;AAC1CmB,QAAAA,QAAAA;AACAmC,QAAAA,UAAAA;AACAlC,QAAAA,UAAAA;AACAqB,QAAAA,aAAAA;AACAhC,QAAAA,YAAAA;AACAF,QAAAA,cAAAA;AACAK,QAAAA,aAAAA;AACAoC,QAAAA,cAAAA;AACA5C,QAAAA;AACJ,OAAA,CAAA,CAAA;AAER,IAAA;EACJ,CAAA,CAAA;AACA,EAAA,OAAOD,aAAAA;AACX;AAzES2D,MAAAA,CAAAA,2BAAAA,EAAAA,6BAAAA,CAAAA;;;ACzkBF,SAASsB,eAAAA,CACZC,QACAxP,OAAAA,EAAuB;AApC3B,EAAA,IAAA,EAAA;AAsCI,EAAA,MAAMyP,UAAAA,GAAazP,4BAAWhE,aAAAA,CAAc+H,MAAAA;AAC5C,EAAA,MAAM2L,qBAAAA,GAAAA,CAAwB9L,EAAAA,GAAAA,aAAAA,CAAc4L,MAAAA,CAAAA,KAAd5L,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAwB6L,UAAAA,CAAAA;AACtD,EAAA,IAAI,CAACC,qBAAAA,EAAuB;AACxB,IAAA,MAAM,IAAIC,KAAAA,CACN,CAAA,2BAAA,EAA8BH,MAAAA,CAAAA,aAAAA,EAAsBxP,OAAAA,CAAAA,CAAS,CAAA;AAErE,EAAA;AACA,EAAA,OAAO0P,qBAAAA;AACX;AAZgBH,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAcT,SAASK,cAAAA,CACZJ,MAAAA,EACArF,aAAAA,EACAnK,OAAAA,EACArO,OAAAA,EAA+B;AApDnC,EAAA,IAAA,EAAA,EAAA,EAAA;AAsDI,EAAA,MAAMuY,MAAAA,GAASqF,eAAAA,CAAgBC,MAAAA,EAAQxP,OAAAA,CAAAA;AACvC,EAAA,MAAMoK,aAAAA,GAAAA,CAAgBzY,EAAAA,GAAAA,OAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAASyY,aAAAA,KAATzY,IAAAA,GAAAA,EAAAA,GAA0B2S,iBAAiBkL,MAAAA,CAAAA;AACjE,EAAA,MAAMnH,WAAU1W,EAAAA,GAAAA,OAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAAS0W,MAAAA,KAAT1W,YAAmB,EAAA,EAC9BiO,IAAI,CAAC6H,KAAAA,KAAUF,cAAAA,CAAeE,KAAAA,CAAAA,CAAAA,CAC9BxJ,MAAAA,CAAO,CAACwJ,KAAAA,KAAwC,CAAC,CAACA,KAAAA,CAAAA;AACvD,EAAA,IAAIY,OAAOlK,MAAAA,EAAQ;AACf,IAAA,IAAI;AACA,MAAA,OAAO0R,qBAAAA,CACH3F,MAAAA,EACA7B,MAAAA,EACA8B,aAAAA,EACAC,eACAzY,OAAAA,CAAAA;AAER,IAAA,CAAA,CAAA,OAASme,KAAAA,EAAO;AACZjG,MAAAA,UAAAA,CACI,CAAA,aAAA,EAAgB2F,MAAAA,CAAAA,uBAAAA,EACXM,KAAAA,CAAgBhG,OAAO,CAAA,CAC1B,CAAA;AAEV,IAAA;AACJ,EAAA;AACA,EAAA,MAAMiG,YAAAA,GAAe9F,kBAAAA,CACjBC,MAAAA,EACAC,aAAAA,EACAC,eACAzY,OAAAA,CAAAA;AAEJ,EAAA,MAAM+W,YAAAA,GAAewB,MAAAA,CAAOhK,aAAAA,CAAcI,KAAAA,GACpChD,MAAAA,GACA4N,qBAAAA,CACIhB,MAAAA,CAAOhK,aAAAA,EACPiK,aAAAA,EACAC,aAAAA,EACAzY,OAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAAS2K,QAAAA,CAAAA;AAEnB,EAAA,OAAO,IAAI0T,uBAAAA,CAAwBD,YAAAA,EAAcrH,YAAAA,CAAAA;AACrD;AA3CgBkH,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AA6ChB,SAASC,qBAAAA,CACL3F,MAAAA,EACA7B,MAAAA,EACA8B,aAAAA,EACAC,eACAzY,OAAAA,EAA0C;AAE1C,EAAA,MAAMse,MAAAA,GAASjJ,aAAAA,CAAcmD,aAAAA,CAAAA,GAAiBA,gBAAgB,EAAC;AAC/D,EAAA,MAAMrB,YAAYV,kBAAAA,CAAmB;AAAIC,IAAAA,GAAAA,MAAAA;AAAQ4H,IAAAA;AAAO,GAAA,CAAA;AACxD,EAAA,MAAMC,aAAAA,GAAgB;AAAE7E,IAAAA,gBAAAA,EAAkB1Z,OAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAAS0Z;AAAiB,GAAA;AACpE,EAAA,MAAM8E,SAAAA,GAAY9H,MAAAA,CAAOzI,GAAAA,CAAI,CAAC6H,KAAAA,KAC1BwC,mBAAmBC,MAAAA,EAAQzC,KAAAA,EAAOnK,MAAAA,EAAW4S,aAAAA,CAAAA,CAAAA;AAEjD,EAAA,MAAMH,YAAAA,GAAeI,SAAAA,CAAUxH,MAAAA,CAC3B,CAAC7C,QAAQsK,QAAAA,KAAa9G,iBAAAA,CAAkBxD,MAAAA,EAAQsK,QAAAA,GAChDnG,kBAAAA,CAAmBC,MAAAA,EAAQpB,SAAAA,EAAWsB,aAAAA,EAAezY,OAAAA,CAAAA,CAAAA;AAEzD,EAAA,MAAM+W,YAAAA,GAAewB,MAAAA,CAAOhK,aAAAA,CAAcI,KAAAA,GACpChD,MAAAA,GACA4N,qBAAAA,CACIhB,MAAAA,CAAOhK,aAAAA,EACP4I,SAAAA,EACAsB,aAAAA,EACAzY,OAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAAS2K,QAAAA,CAAAA;AAEnB,EAAA,OAAO,IAAI0T,uBAAAA,CACPD,YAAAA,EACArH,YAAAA,EACAe,sBAAAA,CAAuB0G,SAAAA,CAAAA,CAAAA;AAE/B;AA9BSN,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AAgCF,IAAMG,wBAAAA,GAAN,MAAMA,wBAAAA,CAAAA;EACTK,WAAAA,CACYC,OAAAA,EACA5H,cACA6H,eAAAA,EACV;;;;SAHUD,OAAAA,GAAAA,OAAAA;SACA5H,YAAAA,GAAAA,YAAAA;SACA6H,eAAAA,GAAAA,eAAAA;AACT,EAAA;AAEK9L,EAAAA,QAAAA,CAAS9H,GAAAA,EAAa;AAC1B,IAAA,OAAO,IAAA,CAAK2T,QAAQ3T,GAAAA,CAAAA;AACxB,EAAA;AAEA6T,EAAAA,SAAAA,CAAU7T,KAAagI,KAAAA,EAAiC;AACpD,IAAA,MAAM9H,KAAAA,GAAQ,IAAA,CAAK4H,QAAAA,CAAS9H,GAAAA,CAAAA;AAC5B,IAAA,IAAI,CAACE,OAAO,OAAO,KAAA;AACnB,IAAA,IAAI,OAAOA,KAAAA,KAAU,QAAA,IAAYA,KAAAA,CAAMyI,UAAAA,EAAY;AAC/C,MAAA,OAAOK,eAAAA,CACHhB,KAAAA,EACA9H,KAAAA,CAAMyI,UAAU,CAAA;AAExB,IAAA;AACA,IAAA,OAAO,IAAA;AACX,EAAA;AAEAmL,EAAAA,WAAAA,CAAY9T,GAAAA,EAAwC;AAChD,IAAA,MAAME,KAAAA,GAAQ,IAAA,CAAK4H,QAAAA,CAAS9H,GAAAA,CAAAA;AAC5B,IAAA,IACI,CAACE,KAAAA,IACD,OAAOA,KAAAA,KAAU,SAAA,IACjB,OAAOA,KAAAA,KAAU,QAAA,IACjB,CAACA,KAAAA,CAAMwM,QAAAA,EAEP,OAAO/L,MAAAA;AACX,IAAA,OAAOT,KAAAA,CAAMwM,QAAAA;AACjB,EAAA;AAEAqH,EAAAA,YAAAA,CACIC,QACA5I,IAAAA,EAC+B;AAC/B,IAAA,MAAMpL,GAAAA,GAAM,CAAA,EAAGoL,IAAAA,GAAOA,IAAAA,GAAO,OAAO,EAAA,CAAA,UAAA,CAAA;AACpC,IAAA,MAAMlL,KAAAA,GAAQ,IAAA,CAAK4H,QAAAA,CAAS9H,GAAAA,CAAAA;AAC5B,IAAA,OAAQE,KAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,KAAAA,CAAgD8T,MAAAA,CAAAA;AAC5D,EAAA;;;;AAKAC,EAAAA,kBAAAA,CACID,QACA5I,IAAAA,EACiC;AA/KzC,IAAA,IAAA,EAAA,EAAA,EAAA;AAgLQ,IAAA,MAAMpL,GAAAA,GAAM,CAAA,EAAGoL,IAAAA,GAAOA,IAAAA,GAAO,OAAO,EAAA,CAAA,UAAA,CAAA;AACpC,IAAA,OAAA,CAAO,EAAA,GAAA,CAAA,EAAA,GAAA,IAAA,CAAKwI,eAAAA,KAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAuB5T,GAAAA,CAAAA,KAAvB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA8BgU,MAAAA,CAAAA;AACzC,EAAA;AAEAE,EAAAA,WAAAA,CAAYlU,GAAAA,EAAkD;AAC1D,IAAA,MAAME,KAAAA,GAAQ,IAAA,CAAK4H,QAAAA,CAAS9H,GAAAA,CAAAA;AAC5B,IAAA,IACI,CAACE,KAAAA,IACD,OAAOA,KAAAA,KAAU,SAAA,IACjB,OAAOA,KAAAA,KAAU,QAAA,IACjB,CAACA,KAAAA,CAAMsD,QAAAA,EAEP,OAAO7C,MAAAA;AACX,IAAA,OAAOT,KAAAA,CAAMsD,QAAAA;AACjB,EAAA;EAEA2Q,eAAAA,GAAuD;AACnD,IAAA,OAAO,IAAA,CAAKpI,YAAAA;AAChB,EAAA;;;;EAKAqI,KAAAA,CAAMC,SAAAA,EAAmBrf,OAAAA,GAAwB,EAAC,EAAyB;AAvM/E,IAAA,IAAA,EAAA;AAwMQ,IAAA,MAAM,EAAE6d,MAAAA,EAAQxP,OAAAA,EAAS2E,KAAAA,EAAK,GAAKhT,OAAAA;AACnC,IAAA,MAAMsf,OAAAA,GAAU,IAAA,CAAKT,SAAAA,CAAUQ,SAAAA,EAAWrM,KAAAA,CAAAA;AAC1C,IAAA,MAAMuM,eACFF,EAAAA,GAAAA,SAAAA,CAAUG,KAAAA,CAAMzV,6BAAAA,CAAAA,CAA+B0V,GAAAA,OAA/CJ,IAAAA,GAAAA,EAAAA,GAAwDA,SAAAA;AAC5D,IAAA,MAAMK,SAAAA,GACF1f,OAAAA,CAAQ2f,iBAAAA,KAAsBhU,MAAAA,GACxB4T,WAAAA,CAAYC,MAAM1V,gCAAAA,CAAAA,CAAkC2V,GAAAA,EAAG,GACvDzf,OAAAA,CAAQ2f,iBAAAA;AAClB,IAAA,MAAMC,eAAAA,GAAkBN,OAAAA,GAClB,IAAA,CAAKJ,WAAAA,CAAYG,SAAAA,CAAAA,GACjB1T,MAAAA;AACN,IAAA,MAAM6C,QAAAA,GAAWkR,SAAAA,GACVE,eAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,eAAAA,CAAkBF,SAAAA,CAAAA,GAGnBE,eAAAA;AACN,IAAA,MAAMC,WAAAA,GAAc,CAAA,EAAGR,SAAAA,CAAAA,EAAYvV,gCAAAA,CAAAA,CAAAA;AACnC,IAAA,MAAMmE,MAA+B,EAAC;AACtC,IAAA,IAAI6R,gBAAAA;AAEJ,IAAA,IAAIjC,MAAAA,EAAQ;AACR,MAAA,MAAMtF,MAAAA,GAASqF,eAAAA,CAAgBC,MAAAA,EAAQxP,OAAAA,CAAAA;AACvCyR,MAAAA,gBAAAA,GAAmBvH,MAAAA,CAAOlK,OAAAA;AAC1BxD,MAAAA,MAAAA,CAAOC,IAAAA,CAAK4N,gBAAAA,CAAiBH,MAAAA,CAAOhK,aAAa,CAAA,CAAA,CAC5CjC,MAAAA,CAAO,CAACtB,GAAAA,KAAQA,GAAAA,KAAQ,YAAA,CAAA,CACxBD,OAAAA,CAAQ,CAACC,GAAAA,KAAAA;AACNiD,QAAAA,GAAAA,CAAIjD,GAAAA,CAAAA,GACAsU,OAAAA,IACA,IAAA,CAAKT,SAAAA,CAAU,GAAGgB,WAAAA,CAAAA,EAAc7U,GAAAA,CAAAA,CAAAA,EAAOgI,KAAAA,CAAAA;MAC/C,CAAA,CAAA;AACR,IAAA,CAAA,MAAA,IAAWsM,OAAAA,EAAS;AAChBzU,MAAAA,MAAAA,CAAOC,IAAAA,CAAK,IAAA,CAAK6T,OAAO,CAAA,CACnBrS,OAAO,CAACtB,GAAAA,KAAQA,GAAAA,CAAIuI,UAAAA,CAAWsM,WAAAA,CAAAA,CAAAA,CAC/B9U,OAAAA,CAAQ,CAACC,GAAAA,KAAAA;AACN,QAAA,IAAI,IAAA,CAAK6T,SAAAA,CAAU7T,GAAAA,EAAKgI,KAAAA,CAAAA,EAAQ;AAC5B/E,UAAAA,GAAAA,CAAIjD,GAAAA,CAAI+U,KAAAA,CAAMF,WAAAA,CAAYrT,MAAM,CAAA,CAAA,GAAK,IAAA;AACzC,QAAA;MACJ,CAAA,CAAA;AACR,IAAA;AAEA,IAAA,OAAOwT,IAAAA,CAAKC,KAAAA,CACRD,IAAAA,CAAKE,SAAAA,CAAU;MACXC,IAAAA,EAAMhW,2BAAAA;MACNiW,MAAAA,EAAQhW,6BAAAA;AACRyT,MAAAA,MAAAA;AACAiC,MAAAA,gBAAAA;MACAO,MAAAA,EAAQhB,SAAAA;AACRC,MAAAA,OAAAA;AACArR,MAAAA,GAAAA;AACAO,MAAAA;AACJ,KAAA,CAAA,CAAA;AAER,EAAA;AACJ,CAAA;AAhIa6P,MAAAA,CAAAA,wBAAAA,EAAAA,yBAAAA,CAAAA;AAAN,IAAMA,uBAAAA,GAAN,wBAAA;;;ACHA,SAASiC,sBAAAA,CACZC,MAAAA,EACAvB,MAAAA,EACA5I,IAAAA,EACApW,OAAAA,EAA+B;AA9HnC,EAAA,IAAA,EAAA;AAgII,EAAA,MAAM6d,MAAAA,GAAUhT,MAAAA,CAAOC,IAAAA,CAAKZ,sBAAAA,CAAAA,CAAqCsW,IAAAA,CAC7D,CAACxV,GAAAA,KAAQd,sBAAAA,CAAuBc,GAAAA,CAAAA,KAASgU,MAAAA,CAAAA;AAE7C,EAAA,IAAI,CAACnB,MAAAA,EAAQ;AACT,IAAA,MAAM,IAAIG,KAAAA,CAAM,CAAA,uCAAA,EAA0CgB,MAAAA,CAAAA,CAAQ,CAAA;AACtE,EAAA;AACA,EAAA,MAAMtI,MAAAA,GAAS6J,MAAAA,CAAOtB,kBAAAA,CAAmBD,MAAAA,EAAQ5I,IAAAA,CAAAA;AACjD,EAAA,OAAO6H,cAAAA,CACHJ,MAAAA,EACA0C,MAAAA,CAAOxB,YAAAA,CAAaC,MAAAA,EAAQ5I,IAAAA,CAAAA,EAC5BzK,MAAAA,EACA+K,MAAAA,GACM,aAAA,CAAA,cAAA,CAAA,EAAA,EAAK1W,OAAAA,CAAAA,EAAL;IAAc0W,MAAAA,EAAQ;UAAK1W,EAAAA,GAAAA,OAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAAS0W,MAAAA,KAAT1W,YAAmB,EAAA;AAAQ0W,MAAAA,GAAAA;;AAAQ,GAAA,CAAA,GAC9D1W,OAAAA,CAAAA;AAEd;AArBgBsgB,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA;;;AC/FT,IAAMG,cAAAA,GAET;EACA,CAACxW,MAAAA,CAAOiI,SAAS,GAAG;IAAEwO,MAAAA,EAAQ5hB;AAAiB,GAAA;EAC/C,CAACmL,MAAAA,CAAOuI,WAAW,GAAG;IAAEkO,MAAAA,EAAQ9kB;AAAmB;AACvD;AAOA,IAAM+kB,iBAAAA,2BAAqBjL,IAAAA,KAAAA;AACvB,EAAA,MAAMmI,MAAAA,GAAUhT,MAAAA,CAAOC,IAAAA,CAAKZ,sBAAAA,CAAAA,CAAqCsW,IAAAA,CAC7D,CAACxV,GAAAA,KAAQd,sBAAAA,CAAuBc,GAAAA,CAAAA,KAAS0K,IAAAA,CAAAA;AAE7C,EAAA,IAAI,CAACmI,MAAAA,EACD,MAAM,IAAIG,KAAAA,CAAM,CAAA,uCAAA,EAA0CtI,IAAAA,CAAAA,CAAM,CAAA;AACpE,EAAA,OAAOmI,MAAAA;AACX,CAAA,EAP0B,mBAAA,CAAA;AAS1B,SAAS+C,aAAAA,CACL/C,MAAAA,EACAgD,MAAAA,EACAxS,OAAAA,EAAuB;AAnD3B,EAAA,IAAA,EAAA,EAAA,EAAA;AAqDI,EAAA,MAAMyS,QAAAA,GAAAA,CAAAA,CAAWD,EAAAA,GAAAA,MAAAA,CAAOpR,UAAAA,KAAPoR,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAmBrU,MAAAA,IAC9BmU,iBAAAA,CAAkBE,MAAAA,CAAOpR,UAAAA,CAAWoR,MAAAA,CAAOpR,UAAAA,CAAWjD,MAAAA,GAAS,CAAA,CAAE,CAAA,GACjEqR,MAAAA;AACN,EAAA,MAAMtF,MAAAA,GAASqF,gBACXkD,QAAAA,EAAAA,CAAAA,CACAD,EAAAA,GAAAA,MAAAA,CAAOpR,eAAPoR,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAmBrU,MAAAA,IAASb,SAAY0C,OAAAA,CAAAA;AAE5C,EAAA,OAAO;IACHwP,MAAAA,EAAQiD,QAAAA;AACRnS,IAAAA,KAAAA,EAAO4J,MAAAA,CAAOhK,aAAAA,CAAcI,KAAAA,GAAQkS,MAAAA,CAAOlS,KAAAA,GAAQ;AAAChD,MAAAA;;AACxD,GAAA;AACJ;AAhBSiV,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAqBF,SAASG,eAAAA,CACZlD,MAAAA,EACAzH,IAAAA,EACA/H,OAAAA,EAAuB;AAEvB,EAAA,MAAMJ,MAAMyK,gBAAAA,CACRkF,eAAAA,CAAgBC,MAAAA,EAAQxP,OAAAA,EAASE,aAAa,CAAA;AAElD,EAAA,MAAMyS,SAAS5K,IAAAA,GAAO,CAAA,EAAGA,IAAAA,CAAAA,EAAOrM,6BAAAA,CAAAA,CAAAA,GAAkC,EAAA;AAClE,EAAA,OAAOc,MAAAA,CAAOC,IAAAA,CAAKmD,GAAAA,CAAAA,CACd3B,MAAAA,CAAO,CAACtB,GAAAA,KACLoL,IAAAA,GACMpL,GAAAA,CAAIuI,UAAAA,CAAWyN,MAAAA,CAAAA,GACf,CAAChW,GAAAA,CAAIoB,QAAAA,CAASrC,6BAAAA,CAAAA,CAAAA,CAEvBkE,GAAAA,CAAI,CAACjD,GAAAA,KAAQA,IAAI+U,KAAAA,CAAMiB,MAAAA,CAAOxU,MAAM,CAAA,CAAA,CACpCF,MAAAA,CAAO,CAACtB,GAAAA,KAAQA,QAAQ,YAAA,CAAA;AACjC;AAjBgB+V,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAmBhB,IAAME,2BAAW,MAAA,CAAA,CAACC,EAAAA,KACdA,GACK9G,OAAAA,CAAQ,aAAA,EAAe,EAAA,CAAA,CACvBA,OAAAA,CAAQ,sBAAsB,OAAA,CAAA,CAC9BA,QAAQ,IAAA,EAAM,CAAC+G,SAASA,IAAAA,CAAK7T,WAAAA,EAAW,CAAA,EAJhC,UAAA,CAAA;AASV,SAAS8T,qBAAAA,CACZvD,QACA7S,GAAAA,EAAW;AAnGf,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAqGI,EAAA,MAAM0V,UAASD,EAAAA,GAAAA,CAAAA,EAAAA,GAAAA,cAAAA,CAAe5C,MAAAA,MAAf4C,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAwBC,MAAAA,KAAxBD,YAAkC,EAAC;AAClD,EAAA,MAAMS,MAAKlW,EAAAA,GAAAA,GAAAA,CAAIwU,KAAAA,CAAM1V,gCAAAA,CAAAA,CAAkC2V,GAAAA,OAA5CzU,IAAAA,GAAAA,EAAAA,GAAqDA,GAAAA;AAChE,EAAA,OAAA,CAAO0V,kBAAO1V,GAAAA,CAAAA,KAAP0V,YAAeA,MAAAA,CAAOQ,EAAAA,MAAtBR,IAAAA,GAAAA,EAAAA,GAA6B;AAAE5kB,IAAAA,KAAAA,EAAOmlB,SAASC,EAAAA;AAAI,GAAA;AAC9D;AAPgBE,MAAAA,CAAAA,qBAAAA,EAAAA,uBAAAA,CAAAA;AAYT,SAASC,oBAAAA,CACZxD,MAAAA,EACAgD,MAAAA,EACA7gB,OAAAA,GAAuC,EAAC,EAAC;AAEzC,EAAA,MAAMshB,QAAAA,GAAWV,aAAAA,CAAc/C,MAAAA,EAAQgD,MAAAA,EAAQ7gB,QAAQqO,OAAO,CAAA;AAC9D,EAAA,MAAMkT,UAAoB,EAAA;AAC1BD,EAAAA,QAAAA,CAAS3S,KAAAA,CAAM5D,OAAAA,CAAQ,CAACqL,IAAAA,KAAAA;AApH5B,IAAA,IAAA,EAAA;AAqHQ2K,IAAAA,OAAAA,eAAAA,CACIO,QAAAA,CAASzD,MAAAA,EACTzH,IAAAA,EAAAA,CAAAA,CACAyK,EAAAA,GAAAA,MAAAA,CAAOpR,UAAAA,KAAPoR,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAmBrU,MAAAA,IAASb,MAAAA,GAAY3L,OAAAA,CAAQqO,OAAO,CAAA,CACzDtD,OAAAA,CAAQ,CAACC,GAAAA,KAAAA;AACP,MAAA,IAAI,CAACuW,OAAAA,CAAQnV,QAAAA,CAASpB,GAAAA,CAAAA,EAAMuW,OAAAA,CAAQ/E,KAAKxR,GAAAA,CAAAA;IAC7C,CAAA,CAAA;AAAA,EAAA,CAAA,CAAA;AAEJ,EAAA,MAAMwW,QAAiC,EAAA;AACvC,EAAA,MAAMC,KAAAA,uBAAYC,GAAAA,EAAAA;AAClB,EAAA,MAAMC,MAAAA,2BAAU3W,GAAAA,KAAAA;AA/HpB,IAAA,IAAA,EAAA;AAgIQ,IAAA,MAAM4W,QAAAA,GAAWH,KAAAA,CAAMI,GAAAA,CAAI7W,GAAAA,CAAAA;AAC3B,IAAA,IAAI4W,UAAU,OAAOA,QAAAA;AACrB,IAAA,MAAME,KAAAA,GAAQ9W,GAAAA,CAAIwU,KAAAA,CAAM1V,gCAAAA,CAAAA;AACxB,IAAA,MAAM,EAAEhO,KAAAA,EAAOimB,WAAAA,KAAgBX,qBAAAA,CAC3BE,QAAAA,CAASzD,QACT7S,GAAAA,CAAAA;AAEJ,IAAA,MAAMgX,IAAAA,GAA8B,aAAA,CAAA,cAAA,CAAA;AAChChX,MAAAA,GAAAA;MACAkW,EAAAA,EAAIY,KAAAA,CAAMA,KAAAA,CAAMtV,MAAAA,GAAS,CAAA,CAAA;AACzB1Q,MAAAA;OACIimB,WAAAA,IAAe;AAAEA,MAAAA;KAAY,CAAA,EAJD;MAKhC5B,IAAAA,EAAM;AACV,KAAA,CAAA;AACAsB,IAAAA,KAAAA,CAAMQ,GAAAA,CAAIjX,KAAKgX,IAAAA,CAAAA;AACf,IAAA,IAAIF,KAAAA,CAAMtV,WAAW,CAAA,EAAG;AACpBgV,MAAAA,KAAAA,CAAMhF,KAAKwF,IAAAA,CAAAA;IACf,CAAA,MAAO;AACH,MAAA,MAAMzB,MAAAA,GAASoB,OACXG,KAAAA,CAAM/B,KAAAA,CAAM,GAAG,EAAC,CAAA,CAAGmC,IAAAA,CAAKpY,gCAAAA,CAAAA,CAAAA;AAE5ByW,MAAAA,MAAAA,CAAOJ,IAAAA,GAAO,SAAA;AACdI,MAAAA,MAAAA,CAAO4B,QAAAA,GAAW;YAAK5B,EAAAA,GAAAA,MAAAA,CAAO4B,QAAAA,KAAP5B,YAAmB,EAAA;AAAKyB,QAAAA;;AACnD,IAAA;AACA,IAAA,OAAOA,IAAAA;EACX,CAAA,EA1Be,QAAA,CAAA;AA2BfT,EAAAA,OAAAA,CAAQxW,QAAQ4W,MAAAA,CAAAA;AAChB,EAAA,OAAOH,KAAAA;AACX;AA/CgBH,MAAAA,CAAAA,oBAAAA,EAAAA,sBAAAA,CAAAA;AAiDhB,SAASe,WAAAA,CACLvE,MAAAA,EACArF,aAAAA,EACAqI,MAAAA,EACAzK,IAAAA,EAAa;AAlKjB,EAAA,IAAA,EAAA;AAoKI,EAAA,IAAIiM,QAAAA,GAAoCpE,cAAAA,CACpCJ,MAAAA,EACArF,aAAAA,CAAAA;AAEHqI,EAAAA,CAAAA,CAAAA,YAAOpR,UAAAA,KAAPoR,IAAAA,GAAAA,EAAAA,GAAqB,EAAA,EAAI9V,OAAAA,CAAQ,CAAC2K,IAAAA,KAAAA;AAC/B2M,IAAAA,QAAAA,GAAW/B,sBAAAA,CAAuB+B,QAAAA,EAAU3M,IAAAA,EAAMU,IAAAA,CAAAA;EACtD,CAAA,CAAA;AACA,EAAA,OAAOiM,QAAAA;AACX;AAdSD,MAAAA,CAAAA,WAAAA,EAAAA,aAAAA,CAAAA;AAgBT,IAAME,OAAAA,2BAAWrI,OAAAA,EAAiBjP,GAAAA,KAC9BiP,YAAYjP,GAAAA,IACZ,IAAImP,MAAAA,CAAO,CAAA,CAAA,EAAIF,OAAAA,CAAQG,OAAAA,CAAQ,OAAO,KAAA,CAAA,CAAOA,QAAQ,KAAA,EAAO,IAAA,CAAA,CAAA,CAAA,CAAQ,CAAA,CAAEC,IAAAA,CAClErP,GAAAA,CAAAA,EAHQ,SAAA,CAAA;AAOhB,SAASuX,QAAAA,CACL/J,aAAAA,EACAqI,MAAAA,EACAzK,IAAAA,EAAY;AAxLhB,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA0LI,EAAA,MAAM3G,UAAAA,GAAAA,CAAaoR,EAAAA,GAAAA,MAAAA,CAAOpR,UAAAA,KAAPoR,IAAAA,GAAAA,EAAAA,GAAqB,EAAA;AACxC,EAAA,IAAI,CAACpR,WAAWjD,MAAAA,EAAQ;AACpB,IAAA,OAAO;MAAEgW,GAAAA,EAAAA,CAAKhK,EAAAA,GAAAA,aAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,aAAAA,CAAe7J,UAAf6J,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAuBpC,IAAAA,CAAAA;MAAOqM,IAAAA,EAAMjK;AAAc,KAAA;AACpE,EAAA;AACA,EAAA,MAAM9C,IAAAA,GAAOjG,UAAAA,CAAWA,UAAAA,CAAWjD,MAAAA,GAAS,CAAA,CAAA;AAC5C,EAAA,OAAO;AACHgW,IAAAA,GAAAA,EAAAA,CAAKhK,gEAAe7J,KAAAA,KAAf6J,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAuBpC,IAAAA,CAAAA,KAAvBoC,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAA8B/I,eAA9B+I,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAA2C9C,IAAAA,CAAAA;IAChD+M,IAAAA,EAAAA,CAAMjK,EAAAA,GAAAA,aAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,aAAAA,CAAe/I,eAAf+I,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAA4B9C,IAAAA;AACtC,GAAA;AACJ;AAdS6M,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA;AAgBF,SAASG,MAAAA,CACZlK,aAAAA,EACAqI,MAAAA,EACAzK,IAAAA,EACApL,KACA2X,YAAAA,EAAqB;AA1MzB,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA4MI,EAAA,MAAM,EAAEH,GAAAA,EAAKC,IAAAA,KAASF,QAAAA,CAAS/J,aAAAA,EAAeqI,QAAQzK,IAAAA,CAAAA;AACtD,EAAA,IAAIuM,cACA,OAAO;IAAEC,IAAAA,EAAM,QAAA;IAAU3I,OAAAA,EAAS0I,YAAAA;IAAcvD,KAAAA,EAAO;AAAS,GAAA;AACpE,EAAA,IAAA,CAAIoD,EAAAA,GAAAA,GAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,GAAAA,CAAKzM,MAAAA,KAALyM,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAapW,QAAAA,CAASpB,MAAM,OAAOW,MAAAA;AACvC,EAAA,MAAMkX,UAAAA,GAAAA,CAAaJ,kCAAM1M,MAAAA,KAAN0M,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAcjC,KAAK,CAACvG,OAAAA,KAAYqI,OAAAA,CAAQrI,OAAAA,EAASjP,GAAAA,CAAAA,CAAAA;AACpE,EAAA,IAAI6X,YACA,OAAO;IAAED,IAAAA,EAAM,QAAA;IAAU3I,OAAAA,EAAS4I,UAAAA;IAAYzD,KAAAA,EAAO;AAAO,GAAA;AAChE,EAAA,MAAM0D,UAAAA,GAAAA,CAAaN,gCAAKzM,MAAAA,KAALyM,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAahC,KAAK,CAACvG,OAAAA,KAAYqI,OAAAA,CAAQrI,OAAAA,EAASjP,GAAAA,CAAAA,CAAAA;AACnE,EAAA,IAAI8X,YACA,OAAO;IAAEF,IAAAA,EAAM,QAAA;IAAU3I,OAAAA,EAAS6I,UAAAA;IAAY1D,KAAAA,EAAO;AAAO,GAAA;AAChE,EAAA,IAAA,CAAIqD,EAAAA,GAAAA,IAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,IAAAA,CAAMzM,IAAAA,KAANyM,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAYjW,MAAAA,EACZ,OAAO;IAAEoW,IAAAA,EAAM,MAAA;IAAQ3I,OAAAA,EAASwI,IAAAA,CAAKzM,IAAAA,CAAKkM,IAAAA,CAAK,IAAA,CAAA;IAAO9C,KAAAA,EAAO;AAAO,GAAA;AACxE,EAAA,IAAA,CAAIoD,EAAAA,GAAAA,GAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,GAAAA,CAAKxM,IAAAA,KAALwM,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAWhW,MAAAA,EACX,OAAO;IAAEoW,IAAAA,EAAM,MAAA;IAAQ3I,OAAAA,EAASuI,GAAAA,CAAIxM,IAAAA,CAAKkM,IAAAA,CAAK,IAAA,CAAA;IAAO9C,KAAAA,EAAO;AAAO,GAAA;AAEvE,EAAA,OAAO;IACHwD,IAAAA,EAAM,QAAA;IACN3I,OAAAA,EAASjP,GAAAA;IACToU,KAAAA,EAAAA,CAAAA,CACIoD,EAAAA,GAAAA,GAAAA,IAAAA,IAAAA,GAAAA,MAAAA,GAAAA,GAAAA,CAAKvM,gBAALuM,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAkBhW,MAAAA,MAAAA,CAAUiW,kCAAMxM,WAAAA,KAANwM,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAmBjW,UACzC,aAAA,GACA;AACd,GAAA;AACJ;AA9BgBkW,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA;AAoCT,SAASK,yBAAAA,CACZlF,MAAAA,EACArF,aAAAA,EACAqI,MAAAA,EAA2B;AA5O/B,EAAA,IAAA,EAAA;AA8OI,EAAA,MAAMmC,IAAAA,GAAO3B,oBAAAA,CAAqBxD,MAAAA,EAAQgD,MAAAA,CAAAA;AAC1C,EAAA,MAAMC,QAAAA,GAAW,CAAC,EAAA,CAACD,EAAAA,GAAAA,MAAAA,CAAOpR,eAAPoR,IAAAA,GAAAA,MAAAA,GAAAA,EAAAA,CAAmBrU,MAAAA,CAAAA;AACtC,EAAA,MAAMyW,SAAAA,GAAYpC,MAAAA,CAAOlS,KAAAA,CAAMV,GAAAA,CAAI,CAACmI,IAAAA,MAAU;AAC1CA,IAAAA,IAAAA;AACAiM,IAAAA,QAAAA,EAAUD,WAAAA,CAAYvE,MAAAA,EAAQrF,aAAAA,EAAeqI,MAAAA,EAAQzK,IAAAA;GACzD,CAAA,CAAA;AACA,EAAA,MAAMyI,4BAAY,MAAA,CAAA,CACdwD,QAAAA,EACAjM,MACApL,GAAAA,KAEAqX,QAAAA,CAASxD,UACLiC,QAAAA,GAAW9V,GAAAA,GAAM,CAAA,EAAGoL,IAAAA,GAAOrM,6BAAAA,CAAAA,EAAgCiB,GAAAA,CAAAA,CAAAA,EAC3D,EAAC,CAAA,EAPS,WAAA,CAAA;AAUlB,EAAA,MAAMkY,uBAAO,MAAA,CAAA,CACTzB,KAAAA,EACA0B,kBAEA1B,KAAAA,CAAMxT,GAAAA,CAAI,CAAC+T,IAAAA,KAAAA;AACP,IAAA,MAAMoB,MAAAA,GAASH,SAAAA,CAAUhV,GAAAA,CAAI,CAAC,EAAEmI,IAAAA,EAAMiM,QAAAA,EAAQ,KAC1CxD,SAAAA,CAAUwD,QAAAA,EAAUjM,IAAAA,EAAM4L,IAAAA,CAAKhX,GAAG,CAAA,CAAA;AAEtC,IAAA,MAAMqY,OAAAA,GAAUD,MAAAA,CAAOxP,KAAAA,CAAM0P,OAAAA,CAAAA,GACvB,OACAF,MAAAA,CAAO/H,IAAAA,CAAKiI,OAAAA,CAAAA,GACZ,OAAA,GACA,KAAA;AACN,IAAA,MAAMC,KAAAA,GACFF,YAAY,KAAA,GACNJ,SAAAA,CAAUhV,IAAI,CAAC,EAAEmI,MAAI,EAAIoN,KAAAA,KACrBd,OACIlK,aAAAA,EACAqI,MAAAA,EACAzK,MACA4L,IAAAA,CAAKhX,GAAAA,EACLmY,cAAcK,KAAAA,CAAM,CAAA,CAAA,GAG5B,EAAA;AACV,IAAA,MAAMC,QAAAA,GACFF,MAAM/W,MAAAA,IAAU+W,KAAAA,CAAM3P,MAAM0P,OAAAA,CAAAA,GAAWC,KAAAA,CAAM,CAAA,CAAA,GAAK5X,MAAAA;AACtD,IAAA,MAAM+X,YAAAA,GAAeN,MAAAA,CAAOnV,GAAAA,CACxB,CAAC+E,OAAOwQ,KAAAA,KAAAA;AA1RxB,MAAA,IAAA1M,GAAAA;AA2RoBqM,MAAAA,OAAAA,CAAAA,GAAAA,GAAAA,cAAcK,KAAAA,CAAAA,KAAdL,OAAAA,GAAAA,GAAyBnQ,KAAAA,GAAQrH,SAAYqW,IAAAA,CAAKhX,GAAAA;AAAE,IAAA,CAAA,CAAA;AAE5D,IAAA,MAA8BgX,MAAAA,IAAAA,EAAtBG,EAAAA,QAAAA,KAAsBH,GAAAA,EAAT7L,IAAAA,GAAAA,SAAAA,CAAS6L,KAAT7L,CAAbgM,UAAAA,CAAAA,CAAAA;AACR,IAAA,MAAMwB,SAAAA,GAAwC,iCAAKxN,IAAAA,CAAAA,EAAL;AAAWkN,MAAAA;AAAQ,KAAA,CAAA;AACjE,IAAA,IAAII,QAAAA,YAAoBA,QAAAA,GAAWA,QAAAA;AACnC,IAAA,IAAItB,QAAAA,EAAUwB,SAAAA,CAAUxB,QAAAA,GAAWe,IAAAA,CAAKf,UAAUuB,YAAAA,CAAAA;AAClD,IAAA,OAAOC,SAAAA;AACX,EAAA,CAAA,CAAA,EApCS,MAAA,CAAA;AAqCb,EAAA,OAAOT,KACHF,IAAAA,EACAC,SAAAA,CAAUhV,GAAAA,CAAI,MAAMtC,MAAAA,CAAAA,CAAAA;AAE5B;AA9DgBoX,MAAAA,CAAAA,yBAAAA,EAAAA,2BAAAA,CAAAA;AAgEhB,IAAMa,gCAAgB,MAAA,CAAA,CAAC1Y,KAAAA,KACnB,OAAOA,KAAAA,KAAU,QAAA,IACjBA,UAAU,IAAA,IACV,CAACC,KAAAA,CAAMC,OAAAA,CAAQF,KAAAA,CAAAA,IACfL,MAAAA,CAAOC,KAAKI,KAAAA,CAAAA,CAAOsB,WAAW,CAAA,EAJZ,eAAA,CAAA;AAUf,SAASqX,sBAAAA,CACZrL,aAAAA,EACAqI,MAAAA,EACA7V,GAAAA,EACAqY,OAAAA,EAAgB;AAEhB,EAAA,MAAMlP,MAAAA,GAA8B6L,KAAKC,KAAAA,CACrCD,IAAAA,CAAKE,UAAU1H,aAAAA,IAAAA,IAAAA,GAAAA,aAAAA,GAAiB,EAAC,CAAA,CAAA;AAErCqI,EAAAA,MAAAA,CAAOlS,KAAAA,CAAM5D,OAAAA,CAAQ,CAACqL,IAAAA,KAAAA;AA5T1B,IAAA,IAAA,EAAA,EAAA,EAAA;AA6TQ,IAAA,MAAM0N,KAAAA,GAAmC;AACrC3P,MAAAA;;AAEJ,IAAA,MAAM4P,IAAAA,mBAAO,MAAA,CAAA,CAACC,MAAAA,EAAiCtO,IAAAA,KAAAA;AAhUvD,MAAA,IAAAoB,GAAAA;AAiUYkN,MAAAA,MAAAA,CAAOtO,IAAAA,KAASsO,GAAAA,GAAAA,MAAAA,CAAOtO,IAAAA,CAAAA,KAAPsO,IAAAA,GAAAA,MAA4C,EAAC;AAC7DF,MAAAA,KAAAA,CAAMtH,IAAAA,CAAKwH,MAAAA,CAAOtO,IAAAA,CAAK,CAAA;AACvB,MAAA,OAAOsO,OAAOtO,IAAAA,CAAAA;IAClB,CAAA,EAJa,MAAA,CAAA;AAKb,IAAA,IAAIuO,QAAQF,IAAAA,CACRA,IAAAA,CAAK5P,MAAAA,EAAmC,OAAA,GACxCiC,IAAAA,CAAAA;AAEHyK,IAAAA,CAAAA,CAAAA,YAAOpR,UAAAA,KAAPoR,IAAAA,GAAAA,EAAAA,GAAqB,EAAA,EAAI9V,OAAAA,CAAQ,CAAC2K,IAAAA,KAAAA;AAC/BuO,MAAAA,KAAAA,GAAQF,IAAAA,CAAKA,IAAAA,CAAKE,KAAAA,EAAO,YAAA,GAAevO,IAAAA,CAAAA;IAC5C,CAAA,CAAA;AACA,IAAA,MAAMK,MAAAA,GAAAA,CAAUkO,EAAAA,GAAAA,KAAAA,CAAMlO,MAAAA,KAANkO,IAAAA,GAAAA,EAAAA,GAAyC,EAAA;AACzD,IAAA,IAAI,CAACZ,WAAW,CAACtN,MAAAA,CAAO3J,SAASpB,GAAAA,CAAAA,QAAY+K,MAAAA,GAAS;AAAIA,MAAAA,GAAAA,MAAAA;AAAQ/K,MAAAA;;AAClE,IAAA,IAAIqY,OAAAA,EAAS;AACT,MAAA,MAAM7M,OAAOT,MAAAA,CAAOzJ,MAAAA,CAAO,CAACkF,IAAAA,KAASA,SAASxG,GAAAA,CAAAA;AAC9C,MAAA,IAAIwL,IAAAA,CAAKhK,MAAAA,EAAQyX,KAAAA,CAAMlO,MAAAA,GAASS,IAAAA;AAC3B,WAAA,OAAOyN,KAAAA,CAAMlO,MAAAA;AACtB,IAAA;AAEA,IAAA,KAAA,IAASyN,QAAQM,KAAAA,CAAMtX,MAAAA,GAAS,CAAA,EAAGgX,KAAAA,GAAQ,GAAGA,KAAAA,EAAAA,EAAS;AACnD,MAAA,MAAMQ,MAAAA,GAASF,KAAAA,CAAMN,KAAAA,GAAQ,CAAA,CAAA;AAC7B,MAAA,MAAM9N,IAAAA,GAAO7K,MAAAA,CAAOC,IAAAA,CAAKkZ,MAAAA,CAAAA,CAAQxD,IAAAA,CAC7B,CAAC0D,QAAAA,KAAaF,MAAAA,CAAOE,QAAAA,CAAAA,KAAcJ,KAAAA,CAAMN,KAAAA,CAAM,CAAA;AAEnD,MAAA,IAAI9N,IAAAA,IAAQkO,cAAcE,KAAAA,CAAMN,KAAAA,CAAM,CAAA,EAAG,OAAOQ,OAAOtO,IAAAA,CAAAA;AAC3D,IAAA;EACJ,CAAA,CAAA;AACA,EAAA,OAAOvB,MAAAA;AACX;AA1CgB0P,MAAAA,CAAAA,sBAAAA,EAAAA,wBAAAA,CAAAA","file":"metadata.mjs","sourcesContent":["import { CustomizationLabelMap } from '../metadata.models';\n\n// Initial English labels of the chart panel (chartPanel submodule), for review with Product (D20).\nexport const CHART_PANEL_LABELS: CustomizationLabelMap = {\n header: { label: 'Chart header' },\n floatingMenu: { label: 'Floating menu' },\n menuLayout: { label: 'Menu layout' },\n body: { label: 'Chart body' },\n 'body.actions': { label: 'Chart actions' },\n optionMenu: { label: 'Chart options menu' },\n optionDateGrouping: { label: 'Date grouping options' },\n dashFilterScope: { label: 'Dashboard filters' },\n tabFilterScope: { label: 'Tab filters' },\n panelFilterScope: { label: 'Panel filters' },\n qChartName: { label: 'Chart name' },\n qFitPanel: { label: 'Fit to panel' },\n qChartSelection: { label: 'Chart type selection' },\n qColumnSection: { label: 'Column section' },\n qSorting: { label: 'Sorting' },\n qColumnReplacement: { label: 'Column replacement' },\n qColumnAggregation: { label: 'Column aggregation' },\n qColumnGrouping: { label: 'Column grouping' },\n qDateGrouping: { label: 'Date grouping' },\n qColumnSelection: { label: 'Column selection' },\n qResetColumnsWidth: { label: 'Reset column widths' },\n qSmartAnalyzer: { label: 'Smart analyzer' },\n qEditChart: { label: 'Edit chart' },\n qDuplicateChart: { label: 'Duplicate chart' },\n qDownloadChart: { label: 'Download' },\n qChartJPG: { label: 'JPG' },\n qChartPDF: { label: 'PDF' },\n qChartCSV: { label: 'CSV' },\n qChartSummary: { label: 'Summary' },\n qChartExcel: { label: 'Excel' },\n qFilter: { label: 'Filters' },\n qAddFilter: { label: 'Add filter' },\n qEditFilter: { label: 'Edit filter' },\n qDeleteFilter: { label: 'Delete filter' },\n qYear: { label: 'Year' },\n qQuarter: { label: 'Quarter' },\n qQuarterOnly: { label: 'Quarter only' },\n qMonth: { label: 'Month' },\n qMonthOnly: { label: 'Month only' },\n qWeek: { label: 'Week' },\n qDay: { label: 'Day' },\n qDayOnly: { label: 'Day only' },\n qHour: { label: 'Hour' },\n qHourOnly: { label: 'Hour only' },\n qMinute: { label: 'Minute' },\n qMinuteOnly: { label: 'Minute only' },\n qSecond: { label: 'Second' },\n qSecondOnly: { label: 'Second only' },\n qComparativeAnalysis: { label: 'Comparative analysis' },\n};\n","import { CustomizationLabelMap } from '../metadata.models';\n\n// Initial English labels for the Admin Center builder, written by dev for review with Product (D20).\n// Looked up by full key path first, then by leaf id, so a key repeated in card and table shares one label.\nexport const DASHBOARD_LABELS: CustomizationLabelMap = {\n // Sections\n navBar: { label: 'Navigation bar' },\n assetList: { label: 'Dashboard list' },\n 'assetList.asset': { label: 'Dashboard item' },\n 'assetList.asset.optionMenu': { label: 'Dashboard options menu' },\n 'assetList.asset.card': { label: 'Card view' },\n 'assetList.asset.table': { label: 'Table view' },\n controlBarLeft: { label: 'Left control bar' },\n controlBarRight: { label: 'Right control bar' },\n header: { label: 'Dashboard header' },\n 'header.qOptionsMenu': { label: 'Dashboard options menu' },\n menuBar: { label: 'Menu bar' },\n 'menuBar.file': { label: 'File menu' },\n 'menuBar.edit': { label: 'Edit menu' },\n 'menuBar.insert': { label: 'Insert menu' },\n toolBar: { label: 'Toolbar' },\n configPanel: { label: 'Configuration panel' },\n filterPanel: { label: 'Filter panel' },\n downloadModal: { label: 'Download modal' },\n canvas: { label: 'Canvas' },\n duplicateModal: { label: 'Duplicate modal' },\n 'duplicateModal.options': { label: 'Duplicate options' },\n grid: { label: 'Grid' },\n dashFilterScope: { label: 'Dashboard filters' },\n tabFilterScope: { label: 'Tab filters' },\n containerFilterScope: { label: 'Container filters' },\n panelFilterScope: { label: 'Panel filters' },\n viewOnlyFilterScope: { label: 'View-only filters' },\n edit: { label: 'Edit menu' },\n file: { label: 'File menu' },\n insert: { label: 'Insert menu' },\n options: { label: 'Options' },\n timezone: { label: 'Timezone' },\n\n // Navigation and list\n qAppTitle: { label: 'Application title' },\n qBackButton: { label: 'Back button' },\n qQvTokenExpiredMessage: { label: 'Session expired message' },\n qGoToDashBackButton: { label: 'Back to source dashboard button' },\n qCreateDash: { label: 'Create dashboard' },\n qSwitchView: { label: 'Card/table switch' },\n qFilterBy: { label: 'Filter by' },\n qSortBy: { label: 'Sort by' },\n qSearch: { label: 'Search' },\n qSelectColumn: { label: 'Column selection' },\n qStatus: { label: 'Status' },\n qPreview: { label: 'Preview' },\n qPublish: { label: 'Publish' },\n qUnpublish: { label: 'Unpublish' },\n qDesign: { label: 'Design' },\n qEditDash: { label: 'Edit dashboard' },\n qUseDash: { label: 'Use dashboard' },\n qRenameDash: { label: 'Rename dashboard' },\n qDeleteDash: { label: 'Delete dashboard' },\n qManageTags: { label: 'Manage tags' },\n qTags: { label: 'Tags' },\n qFilterByTags: { label: 'Filter by tags' },\n qDuplDash: { label: 'Duplicate dashboard' },\n qDuplDashAndCharts: { label: 'Duplicate dashboard and charts' },\n qManageSharing: { label: 'Manage sharing' },\n qFavorite: { label: 'Favorite' },\n qCreatedDate: { label: 'Created date' },\n qLastModifDate: { label: 'Last modified date' },\n qNumberOfCharts: { label: 'Number of charts' },\n qSharing: { label: 'Sharing' },\n qSharingIcon: { label: 'Sharing icon' },\n qOwner: { label: 'Owner' },\n qDescription: { label: 'Description' },\n\n // Header\n qDashFavorite: { label: 'Favorite' },\n qDashName: { label: 'Dashboard name' },\n qDashDesc: { label: 'Dashboard description' },\n\n // Menu bar\n qMnuCreateDash: { label: 'New dashboard' },\n qMnuOpenDash: { label: 'Open dashboard' },\n qMnuDuplicateDash: { label: 'Duplicate dashboard' },\n qMnuDuplicateDashAndCharts: { label: 'Duplicate dashboard and charts' },\n qMnuCanvasSize: { label: 'Canvas size' },\n qMnuThemes: { label: 'Themes' },\n qMnuDeleteDash: { label: 'Delete dashboard' },\n qMnuDownloadDash: { label: 'Download' },\n qCreateDataset: { label: 'Custom dataset' },\n qCreateCustomDataset: { label: 'Create custom dataset' },\n qViewCustomDataset: { label: 'View custom dataset' },\n qUndoRedo: { label: 'Undo / redo' },\n qCopyElement: { label: 'Copy' },\n qPasteElement: { label: 'Paste' },\n qCutElement: { label: 'Cut' },\n qRemoveElement: { label: 'Remove' },\n qDuplElement: { label: 'Duplicate' },\n qSelectAllElem: { label: 'Select all' },\n qSelectAllContElem: { label: 'Select all in container' },\n qMnuInsertChart: { label: 'Chart' },\n qMnuExistingChart: { label: 'Existing chart' },\n qMnuNewChart: { label: 'New chart' },\n qMnuNewChartAI: { label: 'New chart with AI' },\n qMnuInsertFilterCtrl: { label: 'Filter control' },\n qMnuDatePicker: { label: 'Date picker' },\n qMnuInputBox: { label: 'Input box' },\n qMnuMultiSelectList: { label: 'Multi-select list' },\n qMnuSingleSelectList: { label: 'Single-select list' },\n qMnuInsertShape: { label: 'Shape' },\n qMnuLine: { label: 'Line' },\n qMnuRectangle: { label: 'Rectangle' },\n qMnuEllipse: { label: 'Ellipse' },\n qMnuInsertText: { label: 'Text' },\n qMnuInsertImage: { label: 'Image' },\n qMnuInsertButton: { label: 'Button' },\n qMnuInsertContainer: { label: 'Container' },\n qMnuInsertHeader: { label: 'Header' },\n qMnuInsertTabs: { label: 'Tabs' },\n qMnuArrange: { label: 'Arrange' },\n qMnuBringToFront: { label: 'Bring to front' },\n qMnuSendToBack: { label: 'Send to back' },\n qMnuAlign: { label: 'Align' },\n qMnuDisplayGrid: { label: 'Display grid' },\n qMnuSnapToGrid: { label: 'Snap to grid' },\n qMnuSwitchGrid: { label: 'Switch grid' },\n\n // Toolbar\n qCanvasSize: { label: 'Canvas size' },\n qInsertChart: { label: 'Insert chart' },\n qExistingChart: { label: 'Existing chart' },\n qNewChart: { label: 'New chart' },\n qNewChartAI: { label: 'New chart with AI' },\n qInsertFilterCtrl: { label: 'Insert filter control' },\n qDatePicker: { label: 'Date picker' },\n qInputBox: { label: 'Input box' },\n qMultiSelectList: { label: 'Multi-select list' },\n qSingleSelectList: { label: 'Single-select list' },\n qInsertShape: { label: 'Insert shape' },\n qLine: { label: 'Line' },\n qRectangle: { label: 'Rectangle' },\n qEllipse: { label: 'Ellipse' },\n qSnapToGrid: { label: 'Snap to grid' },\n qDisplayGrid: { label: 'Display grid' },\n qSwitchGrid: { label: 'Switch grid' },\n qDownloadDash: { label: 'Download' },\n qDashPDF: { label: 'PDF' },\n qDashCSV: { label: 'CSV' },\n qDashExcel: { label: 'Excel' },\n qDashDataset: { label: 'Dataset' },\n qArrange: { label: 'Arrange' },\n qBringToFront: { label: 'Bring to front' },\n qSendToBack: { label: 'Send to back' },\n qResponsiveView: { label: 'Responsive view' },\n qDesktop: { label: 'Desktop' },\n qTablet: { label: 'Tablet' },\n qMobile: { label: 'Mobile' },\n qBreakpoints: { label: 'Breakpoints' },\n qAlign: { label: 'Align' },\n qAlignRight: { label: 'Align right' },\n qAlignLeft: { label: 'Align left' },\n qAlignCenter: { label: 'Align center' },\n qAlignTop: { label: 'Align top' },\n qAlignMiddle: { label: 'Align middle' },\n qAlignBottom: { label: 'Align bottom' },\n qInsertText: { label: 'Insert text' },\n qInsertImage: { label: 'Insert image' },\n qInsertButton: { label: 'Insert button' },\n qInsertContainer: { label: 'Insert container' },\n qRespGridMargins: { label: 'Responsive grid margins' },\n qRespGridColumns: { label: 'Responsive grid columns' },\n qThemes: { label: 'Themes' },\n qDashVersion: { label: 'Dashboard version' },\n qGetDashVersion: { label: 'Change version' },\n qSourceDashBanner: { label: 'Personalization banner' },\n qHiddenItems: { label: 'Hidden items' },\n qDiscard: { label: 'Discard changes' },\n qSave: { label: 'Save changes' },\n qSwitchMode: { label: 'Interact / design switch' },\n qHideToolBar: { label: 'Hide toolbar' },\n qDownloadList: { label: 'Download list' },\n qChangeLayout: { label: 'Change layout' },\n\n // Filter panel\n qAddFilter: { label: 'Add filter' },\n qEnabDisabAllFilters: { label: 'Enable / disable all filters' },\n qDeleteAllFilters: { label: 'Delete all filters' },\n qFilterSettings: { label: 'Filter settings' },\n qEditFilter: { label: 'Edit filter' },\n qEnabDisabFilter: { label: 'Enable / disable filter' },\n qDeleteFilter: { label: 'Delete filter' },\n\n // Download modal\n qScheduleOption: { label: 'Schedule' },\n qSubscribeOption: { label: 'Subscribe' },\n qSubscribeExternalUsers: { label: 'Subscribe external users' },\n qSubscribeBanner: { label: 'Subscription banner' },\n qOwnerLabel: { label: 'Owner' },\n qSubscribeOrganization: { label: 'Subscribe organization' },\n qSubscribeMyself: { label: 'Subscribe myself' },\n qSubscribeSpecificPeople: { label: 'Subscribe specific people' },\n qSubscribeOwner: { label: 'Subscribe owner' },\n qIncludeHeader: { label: 'Include header' },\n qIncludeHyperlinks: { label: 'Include hyperlinks' },\n qExportVersion: { label: 'Export version' },\n qSavedVersionWarning: { label: 'Saved version banner' },\n qUnsavedVersionWarning: { label: 'Unsaved version banner' },\n\n // Duplicate modal\n qCharts: { label: 'Charts' },\n qFilters: { label: 'Filters' },\n qDashActions: { label: 'Dashboard actions' },\n};\n","export const STRUCTURE_SECTION_NAME_SEPARATOR = '.';\nexport const STRUCTURE_VIEW_NAME_SEPARATOR = '::';\nexport const STRUCTURE_RESERVED_WORDS = ['views', 'defaults', 'subModules'];\n\nexport enum Widget {\n DASHBOARD = 'dashboard',\n REPORT = 'report',\n DOWNLOAD_MANAGER = 'download-manager',\n DOWNLOAD_MODAL = 'download-modal',\n CHART_PANEL = 'chart-panel',\n CHART_GALLERY = 'chart-gallery',\n CHART_BUILDER = 'chart-builder',\n}\n\n// The subModules key a host uses for each widget it embeds.\nexport const WIDGET_SUBMODULE_NAMES: Partial<Record<Widget, string>> = {\n [Widget.DOWNLOAD_MODAL]: 'downloadModal',\n [Widget.CHART_PANEL]: 'chartPanel',\n [Widget.CHART_GALLERY]: 'chartGallery',\n [Widget.CHART_BUILDER]: 'chartBuilder',\n};\n\nexport const WIDGET_STRUCTURE_SCOPE_KIND = 'qrvey.widget-structure-scope';\nexport const WIDGET_STRUCTURE_SCOPE_FORMAT = 1;\n\nexport enum WidgetVersion {\n v1 = '1.0',\n latest = 'latest',\n}\n","import { SanitizeFn, ValidationMap } from '../models/structure.models';\n\nexport type { ValidationMap } from '../models/structure.models';\n\nconst FONT_SIZES: number[] = [\n 8, 9, 10, 11, 12, 14, 15, 16, 18, 24, 30, 36, 48, 60, 72, 96,\n];\n\nfunction applyValidation(\n currentObj: Record<string, unknown>,\n validatorMap: ValidationMap,\n parentKey = '',\n sanitize?: SanitizeFn,\n): Record<string, unknown> {\n const validatedObj: Record<string, unknown> = {};\n\n Object.keys(currentObj).forEach((key) => {\n const fullKey = parentKey ? `${parentKey}.${key}` : key;\n const value = currentObj[key];\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null\n ) {\n validatedObj[key] = applyValidation(\n value as Record<string, unknown>,\n validatorMap,\n fullKey,\n sanitize,\n );\n } else if (validatorMap[fullKey]) {\n validatedObj[key] = validatorMap[fullKey](value);\n } else {\n validatedObj[key] =\n sanitize && typeof value === 'string' ? sanitize(value) : value;\n }\n });\n\n return validatedObj;\n}\n\nexport function validateDefaults(\n obj: Record<string, unknown>,\n validatorMap: ValidationMap,\n sanitize?: SanitizeFn,\n) {\n return applyValidation(obj, validatorMap, '', sanitize);\n}\n\nconst isANumber = (value: string | number) => {\n const _value = Number(value);\n if (!_value || isNaN(_value)) return undefined;\n return _value;\n};\n\nconst numberMinMaxValue =\n (maxValue: number, minValue?: number) => (value: string) => {\n const _value = isANumber(value);\n if (!_value) return undefined;\n if (minValue && _value < minValue) return minValue;\n if (_value > maxValue) return maxValue;\n return _value;\n };\n\nexport const fontSizeMinMaxValue =\n (minSize: number, maxSize: number) =>\n (value: string): string | undefined => {\n const inputSize = parseInt(value, 10);\n // Check if the inputSize is valid and within range\n if (\n FONT_SIZES.includes(inputSize) &&\n inputSize >= minSize &&\n inputSize <= maxSize\n ) {\n return `${inputSize}px`;\n }\n\n // Filter FONT_SIZES by min and max\n const validFontSizes = FONT_SIZES.filter(\n (size) => size >= minSize && size <= maxSize,\n );\n\n if (validFontSizes.length === 0) {\n return undefined;\n }\n\n // Find the closest font size\n let closestSize = validFontSizes[0];\n let smallestDiff = Math.abs(inputSize - closestSize);\n\n for (const size of validFontSizes) {\n const diff = Math.abs(inputSize - size);\n if (diff < smallestDiff) {\n smallestDiff = diff;\n closestSize = size;\n }\n }\n\n // Return the closest font size as a string with 'px'\n return `${closestSize}px`;\n };\nexport const fontColorValue = (value: unknown) => {\n // A color that is not text is dropped instead of throwing (QRV-749 review).\n if (typeof value !== 'string') return undefined;\n const normalizedColor = value.toLowerCase();\n return normalizedColor;\n};\n\nexport const validateBoolean = (value: unknown): boolean | undefined =>\n typeof value === 'boolean' ? value : undefined;\n\nconst validateUnsavedChangesBehavior = (value: unknown): string | undefined => {\n if (typeof value !== 'string') return undefined;\n return ['prompt', 'autoSave', 'discard'].includes(value)\n ? value\n : undefined;\n};\n\nconst validateType = (validValues: string[]) => (value: unknown) => {\n if (typeof value !== 'string') return undefined;\n const receivedValue = value.toUpperCase();\n return validValues.includes(receivedValue) ? receivedValue : undefined;\n};\n\nexport const DX_VALIDATOR_MAP: ValidationMap = {\n 'customStyles.header.height': numberMinMaxValue(300, 10),\n 'customStyles.text.fontSize': fontSizeMinMaxValue(8, 96),\n 'customStyles.text.fontColor': fontColorValue,\n 'customStyles.container.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.line.lineWidth': numberMinMaxValue(20, 1),\n 'customStyles.rectangle.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.ellipse.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.container.borderRadius': numberMinMaxValue(100, 0),\n\n // Filter Controls: MULTISELECT LIST\n 'customStyles.filterList.type': validateType(['LIST', 'DROPDOWN']),\n 'customStyles.filterList.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Filter Controls: INPUTBOX\n 'customStyles.filterInput.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Filter Controls: DATE\n 'customStyles.filterDate.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Unsaved Changes Behavior\n unsavedChangesBehavior: validateUnsavedChangesBehavior,\n\n // Download modal\n 'downloadModal.subscribeMyself': validateBoolean,\n};\n\nexport const DOWNLOAD_MODAL_VALIDATOR_MAP: ValidationMap = {\n subscribeMyself: validateBoolean,\n};\n","import { WidgetConfig } from '../models/structure.models';\n\n// Keys of the export modal (qui-schedule-exporting-modal) at its own root; hosts import them under their downloadModal section.\nexport const DOWNLOAD_MODAL_V1_KEYS = [\n 'qScheduleOption',\n 'qSubscribeOption',\n 'qSubscribeExternalUsers',\n 'qSubscribeBanner',\n 'qOwnerLabel',\n 'qSubscribeOwner',\n 'qSubscribeOrganization',\n 'qSubscribeMyself',\n 'qSubscribeSpecificPeople',\n 'qIncludeHyperlinks',\n 'qIncludeHeader',\n] as const;\n\nexport type DownloadModalKey = (typeof DOWNLOAD_MODAL_V1_KEYS)[number];\n\n// The Subscribe elements split what qSubscribeOption controlled, so a keep list naming it keeps them too.\nexport const DOWNLOAD_MODAL_V1_KEEP_INHERITANCE: Record<\n string,\n DownloadModalKey\n> = {\n qSubscribeBanner: 'qSubscribeOption',\n qOwnerLabel: 'qSubscribeOption',\n qSubscribeOwner: 'qSubscribeOption',\n qSubscribeOrganization: 'qSubscribeOption',\n qSubscribeMyself: 'qSubscribeOption',\n qSubscribeSpecificPeople: 'qSubscribeOption',\n};\n\n// The same aliases for a host that lists the modal keys under one of its sections.\nexport const hostKeepInheritance = (\n section = 'downloadModal',\n): Record<string, string> =>\n Object.fromEntries(\n Object.entries(DOWNLOAD_MODAL_V1_KEEP_INHERITANCE).map(\n ([key, alias]) => [`${section}.${key}`, `${section}.${alias}`],\n ),\n );\n\nexport const DOWNLOAD_MODAL_V1_DEFAULTS = {\n subscribeMyself: true,\n};\n\nconst downloadModalV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: DOWNLOAD_MODAL_V1_KEEP_INHERITANCE,\n baseStructure: {\n defaults: { ...DOWNLOAD_MODAL_V1_DEFAULTS },\n ...Object.fromEntries(DOWNLOAD_MODAL_V1_KEYS.map((key) => [key, true])),\n },\n};\n\nexport default downloadModalV1Config;\n","import { WidgetConfig } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_V1_KEYS,\n hostKeepInheritance,\n} from './download-modal.structure.v1';\n\n// The download modal's keys come from its own structure; qExportVersion and the two warnings are DashboardX's slot content.\nconst DOWNLOAD_MODAL_HOST_KEYS = [\n 'qExportVersion',\n 'qSavedVersionWarning',\n 'qUnsavedVersionWarning',\n];\n\nconst dashboardV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: hostKeepInheritance('downloadModal'),\n baseStructure: {\n views: {\n list: [\n 'navBar',\n 'assetList',\n 'controlBarLeft',\n 'controlBarRight',\n 'qQvTokenExpiredMessage',\n 'duplicateModal',\n ],\n design: [\n 'navBar',\n 'header',\n 'controlBarRight',\n 'menuBar',\n 'toolBar',\n 'configPanel',\n 'filterPanel',\n 'downloadModal',\n 'canvas',\n 'qQvTokenExpiredMessage',\n 'duplicateModal',\n ],\n preview: [\n 'navBar',\n 'header',\n 'controlBarRight',\n 'filterPanel',\n 'qGoToDashBackButton',\n 'qQvTokenExpiredMessage',\n ],\n endUser: [\n 'navBar',\n 'toolBar',\n 'filterPanel',\n 'downloadModal',\n 'canvas',\n 'qGoToDashBackButton',\n 'qQvTokenExpiredMessage',\n ],\n },\n\n navBar: ['qAppTitle', 'qBackButton'],\n\n endUserTopBar: ['indicator', 'options'],\n\n assetList: {\n defaults: {\n assetListViewMode: 'card',\n },\n asset: {\n optionMenu: [\n 'qEditDash',\n 'qUseDash',\n 'qRenameDash',\n 'qDeleteDash',\n 'qDuplDash',\n 'qDuplDashAndCharts',\n 'qManageSharing',\n 'qManageTags',\n ],\n card: [\n 'qFavorite',\n 'qCreatedDate',\n 'qLastModifDate',\n 'qStatus',\n 'qNumberOfCharts',\n 'qSharing',\n 'qSharingIcon',\n 'qOwner',\n 'qDescription',\n 'qTags',\n ],\n table: [\n 'qFavorite',\n 'qCreatedDate',\n 'qLastModifDate',\n 'qStatus',\n 'qNumberOfCharts',\n 'qSharing',\n 'qSharingIcon',\n 'qOwner',\n 'qDescription',\n 'qTags',\n ],\n },\n },\n\n canvas: {\n defaults: {\n removeElement: true,\n dragElement: true,\n resizeElement: true,\n },\n },\n\n controlBarLeft: ['qCreateDash'],\n\n controlBarRight: [\n 'qSwitchView',\n 'timezone',\n 'qFilterBy',\n 'qFilterByTags',\n 'qSortBy',\n 'qSearch',\n 'qSelectColumn',\n 'qStatus',\n 'qPreview',\n 'qDiscard',\n 'qPublish',\n 'qUnpublish',\n 'qSwitchMode',\n 'qDesign',\n 'qDownloadList',\n ],\n\n header: [\n 'qDashFavorite',\n 'qSharingIcon',\n 'qDashName',\n 'qDashDesc',\n 'qTags',\n {\n qOptionsMenu: [\n 'qDuplDash',\n 'qDeleteDash',\n 'qManageSharing',\n 'qManageTags',\n ],\n },\n ],\n\n menuBar: {\n file: [\n 'qMnuCreateDash',\n 'qMnuOpenDash',\n 'qMnuDuplicateDash',\n 'qMnuDuplicateDashAndCharts',\n 'qMnuCanvasSize',\n 'qMnuThemes',\n 'qManageSharing',\n 'qManageTags',\n 'qMnuDeleteDash',\n {\n qCreateDataset: [\n 'qCreateCustomDataset',\n 'qViewCustomDataset',\n ],\n qMnuDownloadDash: [\n 'qDashPDF',\n 'qDashCSV',\n 'qDashExcel',\n 'qDashDataset',\n ],\n },\n ],\n edit: [\n 'qUndoRedo',\n 'qCopyElement',\n 'qPasteElement',\n 'qCutElement',\n 'qRemoveElement',\n 'qDuplElement',\n 'qSelectAllElem',\n 'qSelectAllContElem',\n ],\n grid: ['qMnuSnapToGrid', 'qMnuDisplayGrid', 'qMnuSwitchGrid'],\n insert: [\n {\n qMnuInsertChart: [\n 'qMnuExistingChart',\n 'qMnuNewChart',\n 'qMnuNewChartAI',\n ],\n qMnuInsertFilterCtrl: [\n 'qMnuDatePicker',\n 'qMnuInputBox',\n 'qMnuMultiSelectList',\n 'qMnuSingleSelectList',\n ],\n qMnuInsertShape: [\n 'qMnuLine',\n 'qMnuRectangle',\n 'qMnuEllipse',\n ],\n },\n 'qMnuInsertText',\n 'qMnuInsertImage',\n 'qMnuInsertButton',\n 'qMnuInsertContainer',\n 'qMnuInsertHeader',\n 'qMnuInsertTabs',\n ],\n qMnuArrange: [\n 'qMnuBringToFront',\n 'qMnuSendToBack',\n {\n qMnuAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n },\n ],\n },\n toolBar: [\n 'qCanvasSize',\n {\n qInsertChart: ['qExistingChart', 'qNewChart', 'qNewChartAI'],\n qInsertFilterCtrl: [\n 'qDatePicker',\n 'qInputBox',\n 'qMultiSelectList',\n 'qSingleSelectList',\n ],\n qInsertShape: ['qLine', 'qRectangle', 'qEllipse'],\n grid: ['qSnapToGrid', 'qDisplayGrid', 'qSwitchGrid'],\n qDownloadDash: [\n 'qDashPDF',\n 'qDashCSV',\n 'qDashExcel',\n 'qDashDataset',\n ],\n qArrange: ['qBringToFront', 'qSendToBack'],\n qResponsiveView: [\n 'qDesktop',\n 'qTablet',\n 'qMobile',\n 'qBreakpoints',\n ],\n qAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n qCreateDataset: ['qCreateCustomDataset', 'qViewCustomDataset'],\n },\n 'qInsertText',\n 'qInsertImage',\n 'qInsertButton',\n 'qInsertContainer',\n 'qRespGridMargins',\n 'qRespGridColumns',\n 'qThemes',\n 'qUndoRedo',\n\n // only for end user\n 'qDashVersion',\n 'qGetDashVersion',\n 'qSourceDashBanner',\n 'qHiddenItems',\n 'qDiscard',\n 'qSave',\n 'qSwitchMode',\n 'qHideToolBar',\n 'qDownloadList',\n 'qChangeLayout',\n ],\n qQvTokenExpiredMessage: true,\n qGoToDashBackButton: true,\n configPanel: true,\n filterPanel: {\n qAddFilter: true,\n qEnabDisabAllFilters: true,\n qDeleteAllFilters: true,\n qFilterSettings: true,\n viewOnlyFilterScope: true,\n dashFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n tabFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n containerFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n panelFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n },\n downloadModal: [...DOWNLOAD_MODAL_V1_KEYS, ...DOWNLOAD_MODAL_HOST_KEYS],\n duplicateModal: [\n 'qCharts',\n 'qFilters',\n 'qDashActions',\n {\n options: {\n defaults: {\n qCharts: true,\n qFilters: true,\n qDashActions: true,\n },\n },\n },\n ],\n subModules: {\n chartPanel: {},\n chartGallery: {},\n chartBuilder: {},\n },\n },\n};\n\nexport default dashboardV1Config;\n","import { WidgetConfig } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_V1_KEYS,\n hostKeepInheritance,\n} from './download-modal.structure.v1';\n\nconst downloadManagerV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: hostKeepInheritance('downloadModal'),\n baseStructure: {\n views: {\n main: [\n 'header',\n 'controlBar',\n 'assetList',\n 'moreInfoModal',\n 'downloadModal',\n ],\n detail: [\n 'header',\n 'controlBar',\n 'assetList',\n 'moreInfoModal',\n 'bottomBar',\n 'downloadModal',\n ],\n },\n header: ['qTitle'],\n controlBar: {\n defaults: {\n filters: {},\n },\n qFilterByFileType: [\n 'qTypePDF',\n 'qTypeJPG',\n 'qTypeCSV',\n 'qTypeExcel',\n 'qTypeZIP',\n ],\n qFilterByExecution: ['qExecScheduled', 'qExecOthers'],\n qFilterByWidget: [\n 'qWidgetAnalyze',\n 'qWidgetAutomation',\n 'qWidgetDash',\n 'qWidgetLegacyDash',\n 'qWidgetSubscriptions',\n 'qWidgetPPR',\n ],\n qFilterByAsset: true,\n qFilterByOrganization: true,\n qFilterByOwner: true,\n qSearch: true,\n qRemoveFilters: true,\n qScheduleDetail: true,\n qFilesExported: true,\n qMoreInfo: true,\n },\n\n assetList: {\n asset: [\n {\n optionMenu: [\n 'qDelete',\n 'qMoreInfo',\n 'qDeleteAllFiles',\n 'qEditSched',\n 'qPauseRestartSched',\n 'qUnsubscribe',\n 'qSubscribe',\n ],\n table: [\n 'qType',\n 'qSchedule',\n 'qSize',\n 'qCreationDate',\n 'qExpirationDate',\n 'qDownload',\n 'qOrganization',\n 'qOwner',\n ],\n },\n 'qDrillToDetail',\n 'qUnsubscribe',\n 'qSubscribe',\n ],\n },\n\n bottomBar: [\n 'qDeleteAllFiles',\n 'qEditSched',\n 'qPauseRestartSched',\n 'qDelete',\n ],\n\n // The export modal's own keys, so a scope of this section carries all of them.\n downloadModal: [...DOWNLOAD_MODAL_V1_KEYS],\n\n moreInfoModal: [\n 'qFileType',\n 'qSource',\n 'qOwner',\n 'qApplication',\n 'qPath',\n 'qOrganization',\n 'qErrorMessage',\n ],\n },\n};\n\nexport default downloadManagerV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst reportV1Config: WidgetConfig = {\n version: '1.0',\n\n baseStructure: {\n views: {\n list: ['navBar', 'assetList', 'controlBarLeft', 'controlBarRight'],\n design: [\n 'navBar',\n 'controlBarRight',\n 'menuBar',\n 'toolBar',\n 'configPanel',\n 'filterPanel',\n 'dataPanel',\n ],\n preview: [\n 'navBar',\n 'tabBar',\n 'toolBar',\n 'pagePreview',\n 'controlBarRight',\n 'downloadModal',\n ],\n },\n navBar: ['qAppTitle', 'qBackButton'],\n tabBar: ['qTabSelector', 'qScrollButton'],\n assetList: {\n defaults: {\n assetListViewMode: 'card',\n },\n asset: {\n optionMenu: [\n 'qEditRep',\n 'qRenameRep',\n 'qDeleteRep',\n 'qDuplRep',\n ],\n },\n },\n\n controlBarLeft: ['qCreateRep'],\n\n controlBarRight: [\n 'qSwitchView',\n 'timezone',\n 'qFilterBy',\n 'qSortBy',\n 'qSearch',\n 'qPreview',\n 'qDesign',\n ],\n\n menuBar: {\n edit: ['qCopyElement', 'qPasteElement'],\n },\n toolBar: [\n 'qPageSetup',\n {\n qInsertShape: ['qLine', 'qRectangle', 'qEllipse'],\n grid: ['qDisplayRuler', 'qDisplayGrid'],\n qArrange: ['qBringToFront', 'qSendToBack'],\n qAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n qDownloadReport: [\n 'qReportPDF',\n 'qReportExcel',\n ],\n },\n 'qUndoRedo',\n 'qInsertDTable',\n 'qInsertSTable',\n 'qInsertImage',\n 'qInsertText',\n 'qInsertPageGroup',\n 'qInsertFormula',\n 'qInsertBucket',\n 'qInsertPageBreak',\n ],\n configPanel: true,\n dataPanel: {\n tabDataset: ['qChangeDataSet', 'qSearch'],\n tabParameters: ['qAddParameter', 'qSearch'],\n },\n filterPanel: {\n qAddFilter: true,\n qEnabDisabAllFilters: true,\n qDeleteAllFilters: true,\n qFilterSettings: true,\n repoFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n tabFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n panelFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n },\n downloadModal: [\n 'qScheduleOption',\n 'qSubscribeOption',\n 'qSubscribeExternalUsers',\n ],\n },\n};\n\nexport default reportV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst optionMenuChildren = [\n 'qEditChart',\n 'qDuplicateChart',\n {\n qDownloadChart: [\n 'qChartJPG',\n 'qChartPDF',\n 'qChartCSV',\n 'qChartSummary',\n 'qChartExcel',\n ],\n },\n];\n\nconst headerConfig = [\n 'qChartName',\n 'qFitPanel',\n 'qChartSelection',\n 'qColumnSection',\n 'qSorting',\n 'qColumnReplacement',\n 'qColumnAggregation',\n 'qColumnGrouping',\n 'qDateGrouping',\n 'qColumnSelection',\n 'qResetColumnsWidth',\n 'qSmartAnalyzer',\n { optionMenu: optionMenuChildren },\n {\n qFilter: [\n 'qAddFilter',\n { dashFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n { tabFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n { panelFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n ],\n },\n {\n optionDateGrouping: [\n 'qDayOnly',\n 'qMonth',\n 'qMonthOnly',\n 'qQuarter',\n 'qQuarterOnly',\n 'qWeek',\n 'qYear',\n 'qDay',\n 'qHour',\n 'qHourOnly',\n 'qMinute',\n 'qMinuteOnly',\n 'qSecond',\n 'qSecondOnly',\n ],\n },\n];\n\nconst floatingMenuConfig = [\n ...headerConfig.filter(\n (item) => typeof item !== 'object' || !('optionMenu' in item),\n ),\n ...optionMenuChildren,\n];\n\nconst chartPanelV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n header: headerConfig,\n floatingMenu: floatingMenuConfig,\n menuLayout: { defaults: { menuLayout: undefined } },\n body: ['actions', 'qComparativeAnalysis'],\n },\n};\n\nexport default chartPanelV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst chartGalleryV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n chartTypeFilter: true,\n showSummary: true,\n inputSearch: true,\n switch: true,\n subModules: {\n chartPanel: {\n title: false,\n },\n },\n },\n};\nexport default chartGalleryV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst chartBuilderV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n chartTypeFilter: true,\n showSummary: true,\n inputSearch: true,\n switch: true,\n subModules: {\n chartPanel: {\n title: false,\n },\n },\n },\n};\nexport default chartBuilderV1Config;\n","import { Widget, WidgetVersion } from './structure.constants';\nimport { WidgetConfigsMap } from './widget.config';\nimport { ValidationMap } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_VALIDATOR_MAP,\n DX_VALIDATOR_MAP,\n} from '../utils/defaults.helpers';\nimport dashboardV1Config from '../structures/dashboard.structure.v1';\nimport downloadManagerV1Config from '../structures/download-manager.structure.v1';\nimport reportV1Config from '../structures/report.structure.v1';\nimport downloadModalV1Config from '../structures/download-modal.structure.v1';\nimport chartPanelV1Config from '../structures/chart-panel.structure.v1';\nimport chartGalleryV1Config from '../structures/chart-gallery.structure.v1';\nimport chartBuilderV1Config from '../structures/chart-builder.structure.v1';\n\nexport const widgetConfigs: WidgetConfigsMap = {\n [Widget.DASHBOARD]: {\n [WidgetVersion.v1]: dashboardV1Config,\n [WidgetVersion.latest]: dashboardV1Config,\n },\n [Widget.REPORT]: {\n [WidgetVersion.v1]: reportV1Config,\n [WidgetVersion.latest]: reportV1Config,\n },\n [Widget.DOWNLOAD_MANAGER]: {\n [WidgetVersion.v1]: downloadManagerV1Config,\n [WidgetVersion.latest]: downloadManagerV1Config,\n },\n [Widget.DOWNLOAD_MODAL]: {\n [WidgetVersion.v1]: downloadModalV1Config,\n [WidgetVersion.latest]: downloadModalV1Config,\n },\n [Widget.CHART_PANEL]: {\n [WidgetVersion.v1]: chartPanelV1Config,\n [WidgetVersion.latest]: chartPanelV1Config,\n },\n [Widget.CHART_GALLERY]: {\n [WidgetVersion.v1]: chartGalleryV1Config,\n [WidgetVersion.latest]: chartGalleryV1Config,\n },\n [Widget.CHART_BUILDER]: {\n [WidgetVersion.v1]: chartBuilderV1Config,\n [WidgetVersion.latest]: chartBuilderV1Config,\n },\n};\n\n// Validators applied to customization defaults when the caller passes none; the analytics widgets never validated theirs.\nexport const widgetValidators: Partial<Record<Widget, ValidationMap>> = {\n [Widget.DASHBOARD]: DX_VALIDATOR_MAP,\n [Widget.REPORT]: DX_VALIDATOR_MAP,\n [Widget.DOWNLOAD_MANAGER]: DX_VALIDATOR_MAP,\n [Widget.DOWNLOAD_MODAL]: DOWNLOAD_MODAL_VALIDATOR_MAP,\n};\n","export const allowedOperators = [\n '=',\n '!=',\n '>',\n '>=',\n '<',\n '<=',\n 'startsWith',\n 'endsWith',\n 'contains',\n] as const;\nexport type Operators = (typeof allowedOperators)[number];\n\nexport type ConditionValue = string | number;\n\nexport interface Condition {\n field: string;\n operator: Operators;\n value: ConditionValue;\n}\n\nexport type ConditionState = Record<string, ConditionValue>;\n\nexport type OperatorConditionFn = (\n value: Condition,\n state: Record<string, ConditionValue>,\n) => boolean;\n","import {\n Condition,\n ConditionState,\n ConditionValue,\n OperatorConditionFn,\n Operators,\n allowedOperators,\n} from '../models/conditions.models';\nimport { WidgetItemCondition } from '../models/structure.models';\n\nfunction isOperator(value: string): value is Operators {\n return allowedOperators.includes(value as Operators);\n}\n\nfunction getValue(condition: Condition, state: ConditionState): ConditionValue {\n return state[condition.field];\n}\n\nfunction _evalConditionOperator(\n condition: Condition,\n state: ConditionState,\n operator: (a: ConditionValue, b: ConditionValue) => boolean,\n): boolean {\n const value = getValue(condition, state);\n if (value == null) return false;\n return operator(value, condition.value);\n}\n\nconst OPERATOR_MAP: Record<Operators, OperatorConditionFn> = {\n '=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a == b),\n '!=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a != b),\n '<': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a < b),\n '<=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a <= b),\n '>': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a > b),\n '>=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a >= b),\n\n startsWith: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' &&\n typeof b === 'string' &&\n a.startsWith(b),\n ),\n\n endsWith: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' && typeof b === 'string' && a.endsWith(b),\n ),\n\n contains: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' && typeof b === 'string' && a.includes(b),\n ),\n};\n\nexport function evaluateCondition(\n state: ConditionState | undefined,\n ...conditions: Condition[]\n): boolean {\n if (!state) return false;\n if (conditions.length === 0) return true;\n return conditions.every((c) => _evalCondition(state, c));\n}\n\nfunction _evalCondition(state: ConditionState, condition: Condition): boolean {\n if (!isOperator(condition.operator)) return false;\n const evalFn = OPERATOR_MAP[condition.operator];\n return evalFn(condition, state);\n}\n\nexport function checkConditions(\n state: ConditionState | undefined,\n conditions: WidgetItemCondition[],\n): boolean {\n if (!state) return false;\n for (const cond of conditions) {\n if (cond.effect === 'keep') continue;\n const result = evaluateCondition(state, cond.condition);\n if (result) return false;\n }\n return true;\n}\n","export interface MergeDeepSettings {\n mergeMissingProperties?: boolean;\n mergeExistingValues?: boolean;\n}\n\nexport function mergeDeep(\n obj1: any,\n obj2: any,\n settings?: MergeDeepSettings,\n): any {\n const defaultSettings = {\n mergeExistingValues: settings?.mergeExistingValues ?? true,\n mergeMissingProperties: settings?.mergeMissingProperties ?? true,\n };\n\n if (!isValid(obj1, obj2)) return objectCopy(obj1);\n\n const result: any = Array.isArray(obj1) ? [] : {};\n\n for (const key in obj1) {\n const val1 = obj1[key];\n const val2 = obj2?.[key];\n\n if (isObject(val1) || Array.isArray(val1)) {\n result[key] = mergeDeep(val1, val2, defaultSettings);\n } else if (key in obj2 && defaultSettings.mergeExistingValues) {\n result[key] = val2;\n } else {\n result[key] = val1;\n }\n }\n\n if (defaultSettings.mergeMissingProperties) {\n for (const key in obj2) {\n if (!(key in result)) {\n result[key] = obj2[key];\n }\n }\n }\n\n return result;\n}\n\nfunction isValid(obj1: any, obj2: any): boolean {\n return (\n (isObject(obj1) && isObject(obj2)) ||\n (Array.isArray(obj1) && Array.isArray(obj2))\n );\n}\n\nfunction objectCopy<T = any>(obj: T): T {\n if (obj === null || typeof obj !== 'object') return obj;\n\n if (Array.isArray(obj)) {\n return obj.map((item) => objectCopy(item)) as any;\n }\n\n const result: any = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = objectCopy((obj as any)[key]);\n }\n }\n\n return result;\n}\n\nfunction isObject(value: any): boolean {\n return (\n value !== null &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n Object.prototype.toString.call(value) === '[object Object]'\n );\n}\n","import { mergeDeep } from './merge.helpers';\nimport { Operators, allowedOperators } from '../models/conditions.models';\nimport { WidgetCustomization } from '../models/customization.models';\nimport {\n WidgetItemCondition,\n WidgetViewMap,\n WidgetViewMapItem,\n} from '../models/structure.models';\n\nconst SUBMODULES_KEY = 'subModules';\n\n// Earlier layers' customizations of each embedded widget, by map key (`design::subModules`) and submodule name.\nexport type SubmoduleLayers = Record<\n string,\n Record<string, WidgetCustomization[]>\n>;\n\nexport const isPlainObject = (\n value: unknown,\n): value is Record<string, unknown> =>\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n Object.prototype.toString.call(value) === '[object Object]';\n\nconst stringList = (value: unknown): string[] | undefined =>\n Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : undefined;\n\nfunction normalizeCondition(value: unknown) {\n if (!isPlainObject(value)) return undefined;\n const { field, operator, value: conditionValue } = value;\n if (typeof field !== 'string') return undefined;\n if (!allowedOperators.includes(operator as Operators)) return undefined;\n if (\n typeof conditionValue !== 'string' &&\n typeof conditionValue !== 'number'\n )\n return undefined;\n return { field, operator: operator as Operators, value: conditionValue };\n}\n\nfunction normalizeSubmodules(value: unknown) {\n if (!isPlainObject(value)) return undefined;\n const result: Record<string, WidgetCustomization> = {};\n Object.keys(value).forEach((name) => {\n const submodule = normalizeLayer(value[name]);\n if (submodule) result[name] = submodule;\n });\n return result;\n}\n\n/**\n * Keeps only what the engine reads from a stored layer, so a malformed definition is ignored instead of throwing (D25).\n */\nexport function normalizeLayer(\n value: unknown,\n allowViews = true,\n): WidgetCustomization | undefined {\n if (!isPlainObject(value)) return undefined;\n const layer: WidgetCustomization = {};\n const remove = stringList(value.remove);\n const keep = stringList(value.keep);\n if (remove) layer.remove = remove;\n if (keep) layer.keep = keep;\n if (isPlainObject(value.defaults)) layer.defaults = value.defaults;\n const subModules = normalizeSubmodules(value.subModules);\n if (subModules) layer.subModules = subModules;\n if (Array.isArray(value.conditional)) {\n layer.conditional = value.conditional.flatMap((item) => {\n const condition = isPlainObject(item)\n ? normalizeCondition(item.condition)\n : undefined;\n const rest = condition ? normalizeLayer(item, false) : undefined;\n return condition && rest ? [{ ...rest, condition }] : [];\n });\n }\n if (allowViews && isPlainObject(value.views)) {\n const views = value.views;\n layer.views = {};\n Object.keys(views).forEach((view) => {\n const viewLayer = normalizeLayer(views[view], false);\n if (viewLayer) layer.views![view] = viewLayer;\n });\n }\n return layer;\n}\n\nfunction mergeDefaults(\n previous: Record<string, unknown> | undefined,\n next: unknown,\n): Record<string, unknown> | undefined {\n if (!isPlainObject(next)) return previous;\n return previous ? mergeDeep(previous, next) : next;\n}\n\n/**\n * Returns the last layer with the defaults of every layer merged by leaf key, the last one winning (rule 4 of 3.3.2).\n */\nexport function mergeLayerDefaults(\n layers: WidgetCustomization[],\n): WidgetCustomization {\n const last = layers[layers.length - 1] ?? {};\n const viewNames = new Set(\n layers.flatMap((layer) => Object.keys(layer.views ?? {})),\n );\n const rootDefaults = layers.reduce<Record<string, unknown> | undefined>(\n (merged, layer) => mergeDefaults(merged, layer.defaults),\n undefined,\n );\n const views: Record<string, WidgetCustomization> = { ...last.views };\n viewNames.forEach((view) => {\n // Root and view defaults of each layer, in layer order, so a later root default beats an earlier view default.\n const viewDefaults = layers.reduce<Record<string, unknown> | undefined>(\n (merged, layer) =>\n mergeDefaults(\n mergeDefaults(merged, layer.defaults),\n layer.views?.[view]?.defaults,\n ),\n undefined,\n );\n if (viewDefaults) {\n views[view] = { ...last.views?.[view], defaults: viewDefaults };\n }\n });\n const effective: WidgetCustomization = { ...last };\n if (rootDefaults) effective.defaults = rootDefaults;\n if (viewNames.size) effective.views = views;\n return effective;\n}\n\nexport const isSubmodulesKey = (key: string) =>\n key === SUBMODULES_KEY || key.endsWith(`::${SUBMODULES_KEY}`);\n\ntype MapItemObject = {\n childMap?: WidgetViewMap;\n defaults?: Record<string, unknown>;\n conditions?: WidgetItemCondition[];\n};\n\nconst asItemObject = (value: WidgetViewMapItem): MapItemObject =>\n isPlainObject(value) ? (value as MapItemObject) : {};\n\nfunction intersectItem(\n current: WidgetViewMapItem,\n other: WidgetViewMapItem,\n): WidgetViewMapItem {\n const item = asItemObject(current);\n const otherItem = asItemObject(other);\n const childMap = item.childMap\n ? intersectViewMaps(item.childMap, otherItem.childMap ?? {})\n : undefined;\n const conditions = [\n ...(otherItem.conditions ?? []),\n ...(item.conditions ?? []),\n ];\n const hasDefaults =\n !!item.defaults && Object.keys(item.defaults).length > 0;\n const hasChildMap = !!childMap && Object.keys(childMap).length > 0;\n if (!hasDefaults && !hasChildMap && !conditions.length) {\n return isPlainObject(current) ? true : current;\n }\n return {\n ...(hasDefaults && { defaults: item.defaults }),\n ...(hasChildMap && { childMap }),\n ...(conditions.length && { conditions }),\n };\n}\n\n/**\n * Keeps the keys visible in both maps: a later layer can only remove what an earlier one left (rule 2 of 3.3.2).\n */\nexport function intersectViewMaps(\n current: WidgetViewMap,\n other: WidgetViewMap,\n): WidgetViewMap {\n const result: WidgetViewMap = {};\n Object.keys(current).forEach((key) => {\n if (isSubmodulesKey(key)) {\n result[key] = current[key];\n } else if (key in other) {\n result[key] = intersectItem(current[key], other[key]);\n }\n });\n return result;\n}\n\n/**\n * Collects the non-empty submodule customizations of earlier layers, so an embedded widget can apply them as its own layers.\n */\nexport function collectSubmoduleLayers(\n maps: WidgetViewMap[],\n): SubmoduleLayers | undefined {\n const result: SubmoduleLayers = {};\n maps.forEach((map) => {\n Object.keys(map)\n .filter(isSubmodulesKey)\n .forEach((key) => {\n const collection = map[key];\n if (!isPlainObject(collection)) return;\n Object.keys(collection).forEach((name) => {\n const submodule = collection[name];\n if (!isPlainObject(submodule)) return;\n if (!Object.keys(submodule).length) return;\n result[key] = result[key] ?? {};\n result[key][name] = [\n ...(result[key][name] ?? []),\n submodule as WidgetCustomization,\n ];\n });\n });\n });\n return Object.keys(result).length ? result : undefined;\n}\n","const LOG_PREFIX = '[widget-configurability]';\n\n// The package's single console sink; never pass credentials or tokens in a message.\nexport function logWarning(message: string): void {\n // eslint-disable-next-line no-console\n console.warn(`${LOG_PREFIX} ${message}`);\n}\n","import { ValidationMap, validateDefaults } from './defaults.helpers';\nimport { mergeDeep } from './merge.helpers';\nimport {\n STRUCTURE_RESERVED_WORDS,\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n} from '../constants/structure.constants';\nimport { WidgetCustomization } from '../models/customization.models';\nimport {\n SanitizeFn,\n StructureEngineOptions,\n WidgetConditionMap,\n WidgetConfig,\n WidgetItemCondition,\n WidgetStructure,\n WidgetStructureRoot,\n WidgetViewMap,\n} from '../models/structure.models';\n\ntype hasKeepOptType = 'root' | 'view';\n\ninterface CalculateViewOptions {\n viewKeys?: string[];\n pathPrefix?: string;\n viewPrefix?: string;\n hasKeepOption?: hasKeepOptType;\n prevDefaults?: Record<string, unknown>;\n customDefaults?: Record<string, unknown>;\n conditionMaps?: WidgetConditionMap[];\n checkCondition?: boolean;\n keepAliases?: Record<string, string>;\n}\n\ninterface ViewMapOptions extends StructureEngineOptions {\n keepInheritance?: Record<string, string>;\n}\n\ntype ConditionAffectValue = false | 'keep' | 'remove';\n\ninterface InsertionResult {\n canInsert: boolean;\n conditionAffect: ConditionAffectValue;\n}\n\n/**\n * constructs the permission map structure for a widget\n * @param config configuration of a widget\n * @param customization customization options for a widget\n * @param validationMap\n * @returns object representing the view map for the widget\n */\nexport function getWidgetStructure(\n config: WidgetConfig,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: StructureEngineOptions,\n): WidgetViewMap {\n return calculateViewMap(\n config.baseStructure,\n customization,\n validationMap,\n {\n ...options,\n keepInheritance: config.keepInheritance,\n },\n );\n}\n\nexport function calculateViewMap(\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: ViewMapOptions,\n): WidgetViewMap {\n const permissionMap: WidgetViewMap = {};\n const keepAliases = options?.keepInheritance;\n if (config.views) {\n for (const view in config.views) {\n Object.assign(\n permissionMap,\n calculateSpecificViewMap(\n view,\n config,\n customization,\n validationMap,\n options,\n ),\n );\n }\n } else {\n const customDefaults = calculateCustomDefaults(\n customization,\n undefined,\n validationMap,\n options?.sanitize,\n );\n const prevDefaults = config.defaults;\n\n const submodules = calculateSubmodules(config, customization);\n if (submodules) {\n permissionMap.subModules = submodules;\n }\n\n const conditionMaps = calculateConditions(\n config,\n customization,\n undefined,\n keepAliases,\n );\n\n Object.assign(\n permissionMap,\n calculatePermissionMap(config, customization, {\n prevDefaults,\n customDefaults,\n conditionMaps,\n keepAliases,\n }),\n );\n }\n return permissionMap;\n}\n\n/**\n * Defaults at the root of a structure without views (structure defaults merged with the customization's).\n */\nexport function calculateRootDefaults(\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n sanitize?: SanitizeFn,\n): Record<string, unknown> | undefined {\n return calculateDefaults(\n config.defaults as Record<string, unknown> | undefined,\n undefined,\n calculateCustomDefaults(\n customization,\n undefined,\n validationMap,\n sanitize,\n ),\n );\n}\n\nfunction calculateSpecificViewMap(\n view: string,\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: ViewMapOptions,\n) {\n const viewDefinition = config.views![view];\n const keepAliases = options?.keepInheritance;\n const customDefaults = calculateCustomDefaults(\n customization,\n view,\n validationMap,\n options?.sanitize,\n );\n const prevDefaults = config.defaults;\n\n const permissionMap: WidgetViewMap = {};\n\n const submodules = calculateSubmodules(config, customization, view);\n if (submodules) {\n permissionMap[`${view}::subModules`] = submodules;\n }\n\n const conditionMaps =\n options?.viewConditionals === false\n ? undefined\n : calculateConditions(config, customization, view, keepAliases);\n\n Object.assign(\n permissionMap,\n calculatePermissionMap(config, customization, {\n viewKeys: viewDefinition,\n viewPrefix: view,\n prevDefaults,\n customDefaults,\n conditionMaps,\n keepAliases,\n }),\n );\n\n return permissionMap;\n}\n\nfunction getViewPrefix(view?: string) {\n return view ? `${view}${STRUCTURE_VIEW_NAME_SEPARATOR}` : '';\n}\n\nfunction getStructureKey(key: string, viewPrefix?: string): string {\n const viewValue = getViewPrefix(viewPrefix);\n return `${viewValue}${key}`;\n}\n\nconst matchWildcard = (pattern: string, value: string): boolean => {\n const regexPattern = new RegExp(\n '^' + pattern.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*') + '$',\n );\n return regexPattern.test(value);\n};\n\nfunction keyIsIncludedInKeep(\n key: string,\n customization: WidgetCustomization,\n keepAliases?: Record<string, string>,\n): boolean {\n const { keep = [] } = customization;\n const alias = keepAliases?.[key];\n for (const pattern of keep) {\n if (pattern === key || matchWildcard(pattern, key)) {\n return true;\n }\n if (alias && (pattern === alias || matchWildcard(pattern, alias))) {\n return true;\n }\n }\n return false;\n}\n\nfunction keyIsIncludedInRemove(\n key: string,\n customization: WidgetCustomization,\n): boolean {\n const { remove = [] } = customization;\n for (const pattern of remove) {\n if (pattern === key || matchWildcard(pattern, key)) {\n return true;\n }\n }\n return false;\n}\n\nfunction canInsertInCustomization(\n key: string,\n customization: WidgetCustomization,\n validateKeepOption?: boolean,\n keepAliases?: Record<string, string>,\n): InsertionResult {\n const includedInRemove = keyIsIncludedInRemove(key, customization);\n const includedInKeep = keyIsIncludedInKeep(key, customization, keepAliases);\n const canInsert =\n !includedInRemove && (!validateKeepOption || includedInKeep);\n\n const keepValue = includedInKeep ? 'keep' : 'remove';\n const keepResult = validateKeepOption ? keepValue : false;\n const conditionAffect = includedInRemove ? 'remove' : keepResult;\n return { canInsert, conditionAffect };\n}\n\nfunction evalInsertKey(\n key: string,\n {\n viewKeys,\n viewPrefix = '',\n hasKeepOption,\n keepAliases,\n }: CalculateViewOptions,\n customization?: WidgetCustomization,\n): InsertionResult {\n const customizationView = customization?.views?.[viewPrefix];\n\n const custCanInsert: InsertionResult = customization\n ? canInsertInCustomization(\n key,\n customization,\n hasKeepOption === 'root',\n keepAliases,\n )\n : {\n canInsert: true,\n conditionAffect: false,\n };\n const custViewCanInsert: InsertionResult = customizationView\n ? canInsertInCustomization(\n key,\n customizationView,\n hasKeepOption === 'view',\n keepAliases,\n )\n : {\n canInsert: true,\n conditionAffect: false,\n };\n\n // validate remove and keep attributes for views.\n const canInsert =\n (!viewKeys || viewKeys.some((x) => key.startsWith(x))) &&\n custCanInsert.canInsert &&\n custViewCanInsert.canInsert;\n\n const conditionAffect =\n custCanInsert.conditionAffect || custViewCanInsert.conditionAffect;\n\n return { canInsert, conditionAffect };\n}\n\nfunction canInsertKey(\n key: string,\n {\n viewKeys,\n viewPrefix = '',\n hasKeepOption,\n checkCondition = false,\n keepAliases,\n }: CalculateViewOptions,\n customization?: WidgetCustomization,\n): InsertionResult {\n const result = evalInsertKey(\n key,\n { viewKeys, viewPrefix, hasKeepOption, checkCondition, keepAliases },\n customization,\n );\n const canInsert = checkCondition || result.canInsert;\n return { canInsert, conditionAffect: result.conditionAffect };\n}\n\nfunction addKeyToPermissions(\n permissionMap: WidgetViewMap,\n key: string,\n { viewPrefix, checkCondition, conditionMaps }: CalculateViewOptions,\n defaults?: Record<string, unknown>,\n childMap?: WidgetViewMap,\n conditionAffect?: ConditionAffectValue,\n) {\n const keyAttr = getStructureKey(key, viewPrefix);\n\n if (checkCondition && conditionAffect != null) {\n permissionMap[keyAttr] = conditionAffect;\n return;\n }\n\n const addDefaultKey = defaults && Object.keys(defaults).length > 0;\n const addChildMapKey = childMap && Object.keys(childMap).length > 0;\n const conditions = getConditionsForKey(key, conditionMaps);\n\n permissionMap[keyAttr] =\n !addDefaultKey && !addChildMapKey && !conditions\n ? true\n : {\n ...(addDefaultKey && { defaults }),\n ...(addChildMapKey && { childMap }),\n ...(conditions && { conditions }),\n };\n}\n\nfunction calculatePermissionMap(\n config: WidgetStructure | Record<string, WidgetStructure>,\n customization: WidgetCustomization | undefined,\n {\n viewKeys,\n pathPrefix = '',\n viewPrefix = '',\n hasKeepOption: previousKeepOption,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }: CalculateViewOptions,\n) {\n const permissionMap: WidgetViewMap = {};\n const currentKeepOption = nodeHasKeepOption(config, customization, {\n viewPrefix,\n pathPrefix,\n });\n\n for (const key in config) {\n if (STRUCTURE_RESERVED_WORDS.includes(key)) {\n continue;\n }\n const hasKeepOption = previousKeepOption ?? currentKeepOption;\n const configValue = config[key];\n const currentKey = `${pathPrefix}${key}`;\n const newPrefix = `${currentKey}${STRUCTURE_SECTION_NAME_SEPARATOR}`;\n\n const canInsertResult = canInsertKey(\n currentKey,\n {\n viewKeys,\n viewPrefix,\n hasKeepOption,\n checkCondition,\n keepAliases,\n },\n customization,\n );\n if (!canInsertResult.canInsert) {\n continue;\n }\n\n let defaults = prevDefaults;\n let childMap: WidgetViewMap | undefined = undefined;\n if (Array.isArray(configValue)) {\n // if it's an array, every element is a key\n defaults = calculateDefaults(\n prevDefaults,\n {} as Record<string, unknown>,\n customDefaults,\n );\n childMap = calculatePermissionMapArray(configValue, customization, {\n viewKeys,\n viewPrefix,\n pathPrefix: newPrefix,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n });\n\n Object.assign(permissionMap, childMap);\n } else if (\n typeof configValue === 'object' &&\n !Array.isArray(configValue)\n ) {\n defaults = calculateDefaults(\n prevDefaults,\n configValue.defaults as Record<string, unknown>,\n customDefaults,\n );\n // if it's an object, a recursive call is made\n childMap = calculatePermissionMap(\n configValue as WidgetStructure,\n customization,\n {\n viewKeys,\n viewPrefix,\n pathPrefix: newPrefix,\n prevDefaults: defaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n },\n );\n Object.assign(permissionMap, childMap);\n } else if (typeof configValue === 'boolean' && !configValue) {\n // if it's a boolean and its false, it should be ignored\n continue;\n } else if (typeof configValue === 'boolean' && configValue) {\n defaults = calculateDefaults(\n prevDefaults,\n {} as Record<string, unknown>,\n customDefaults,\n );\n }\n\n addKeyToPermissions(\n permissionMap,\n currentKey,\n {\n viewPrefix,\n checkCondition,\n conditionMaps,\n },\n defaults,\n childMap,\n canInsertResult.conditionAffect,\n );\n }\n\n return permissionMap;\n}\n\nfunction getConditionsForKey(\n key: string,\n conditionMaps: WidgetConditionMap[] | undefined,\n): WidgetItemCondition[] | undefined {\n if (!conditionMaps || conditionMaps.length === 0) return undefined;\n const result = conditionMaps.reduce((result, x) => {\n const mapValue = x.map[key];\n if (\n typeof mapValue === 'string' &&\n (mapValue === 'keep' || mapValue === 'remove')\n ) {\n result.push({\n effect: mapValue,\n condition: x.condition,\n });\n }\n return result;\n }, [] as WidgetItemCondition[]);\n\n if (result.length === 0) return undefined;\n return result;\n}\n\nfunction calculateConditions(\n config: WidgetStructure,\n customization?: WidgetCustomization,\n view?: string,\n keepAliases?: Record<string, string>,\n): WidgetConditionMap[] | undefined {\n const rootConditionals = customization?.conditional;\n const viewConditionals = view\n ? customization?.views?.[view]?.conditional\n : undefined;\n\n if (!rootConditionals && !viewConditionals) return undefined;\n\n const customConditionals = [\n ...(rootConditionals ?? []),\n ...(viewConditionals ?? []),\n ];\n return (\n customConditionals?.map((c) => ({\n condition: c.condition,\n map: calculatePermissionMap(config, c, {\n checkCondition: true,\n keepAliases,\n }),\n })) ?? undefined\n );\n}\n\nfunction calculateSubmodules(\n config: WidgetStructure,\n customization?: WidgetCustomization,\n view?: string,\n) {\n const viewSubmodules = view\n ? customization?.views?.[view]?.subModules\n : undefined;\n const customRootSubmodules = customization?.subModules;\n const customSubmodules = viewSubmodules\n ? mergeObjects(customRootSubmodules, viewSubmodules)\n : customRootSubmodules;\n return mergeObjects(config.subModules, customSubmodules);\n}\n\nfunction calculateCustomDefaults(\n customization?: WidgetCustomization,\n view?: string,\n validationMap?: ValidationMap,\n sanitize?: SanitizeFn,\n) {\n const viewDefaults = view\n ? customization?.views?.[view]?.defaults\n : undefined;\n const customRootDefaults = customization?.defaults ?? {};\n const defaultObj = viewDefaults\n ? mergeObjects(customRootDefaults, viewDefaults)\n : customRootDefaults;\n if (!defaultObj || (!validationMap && !sanitize)) return defaultObj;\n return validateDefaults(defaultObj, validationMap ?? {}, sanitize);\n}\n\nfunction calculateDefaults(\n structureDefaults: Record<string, unknown> | undefined,\n itemDefaults: Record<string, unknown> | undefined,\n customDefaults: Record<string, unknown> | undefined,\n) {\n const baseDefaults = mergeObjects(structureDefaults, itemDefaults);\n return mergeObjects(baseDefaults, customDefaults);\n}\n\nfunction mergeObjects(\n prevObj: Record<string, unknown> | undefined,\n newObj: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n // if both of configurations are falsy return undefined;\n if (!newObj && !prevObj) return undefined;\n // if just the prev defaults has value, return it\n if (!newObj) return prevObj;\n // if the newDefaults value is different than an object\n if (typeof newObj !== 'object' || Array.isArray(newObj)) return prevObj;\n return !prevObj ? newObj : mergeDeep(prevObj, newObj);\n}\n\nfunction mapObjKeys(\n configValue: WidgetStructure,\n { pathPrefix }: CalculateViewOptions,\n) {\n return Object.keys(configValue).map((x) =>\n getStructureKey(`${pathPrefix}${x}`),\n );\n}\n\nfunction mapArrayKeys(\n configValue: (string | WidgetStructure)[],\n { viewPrefix, pathPrefix }: CalculateViewOptions,\n) {\n return configValue.reduce((result, value) => {\n if (typeof value === 'string') {\n result.push(getStructureKey(`${pathPrefix}${value}`));\n } else {\n result.push(...mapObjKeys(value, { viewPrefix, pathPrefix }));\n }\n return result;\n }, [] as string[]);\n}\n\nfunction nodeHasKeepOption(\n configValue: WidgetStructure | (string | WidgetStructure)[],\n customization: WidgetCustomization | undefined,\n { viewPrefix, pathPrefix }: CalculateViewOptions,\n): hasKeepOptType | undefined {\n if (!customization) return;\n const nodeKeys = Array.isArray(configValue)\n ? mapArrayKeys(configValue, { viewPrefix, pathPrefix })\n : mapObjKeys(configValue, { viewPrefix, pathPrefix });\n const customizationView = viewPrefix\n ? customization?.views?.[viewPrefix]\n : undefined;\n for (const key of nodeKeys) {\n if (keyIsIncludedInKeep(key, customization)) {\n return 'root';\n } else if (\n customizationView &&\n keyIsIncludedInKeep(key, customizationView)\n ) {\n return 'view';\n }\n }\n return undefined;\n}\n\nfunction calculatePermissionMapArray(\n configValue: (string | WidgetStructure)[],\n customization: WidgetCustomization | undefined,\n {\n viewKeys,\n viewPrefix,\n pathPrefix,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }: CalculateViewOptions,\n): WidgetViewMap {\n const permissionMap: WidgetViewMap = {};\n const hasKeepOption = nodeHasKeepOption(configValue, customization, {\n viewPrefix,\n pathPrefix,\n });\n const defaultsSimple = calculateDefaults(\n prevDefaults,\n undefined,\n customDefaults,\n );\n\n configValue.forEach((option) => {\n const fullPath = `${pathPrefix}${option}`;\n if (typeof option === 'string') {\n const canInsertResult = canInsertKey(\n fullPath,\n {\n viewKeys,\n viewPrefix,\n hasKeepOption,\n checkCondition,\n keepAliases,\n },\n customization,\n );\n if (!canInsertResult.canInsert) {\n return;\n }\n addKeyToPermissions(\n permissionMap,\n fullPath,\n {\n viewKeys,\n viewPrefix,\n checkCondition,\n conditionMaps,\n },\n defaultsSimple,\n undefined,\n canInsertResult.conditionAffect,\n );\n } else {\n Object.assign(\n permissionMap,\n calculatePermissionMap(option, customization, {\n viewKeys,\n pathPrefix,\n viewPrefix,\n hasKeepOption,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }),\n );\n }\n });\n return permissionMap;\n}\n","import { widgetConfigs, widgetValidators } from './constants/configs';\nimport {\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n WIDGET_STRUCTURE_SCOPE_FORMAT,\n WIDGET_STRUCTURE_SCOPE_KIND,\n Widget,\n WidgetVersion,\n} from './constants/structure.constants';\nimport { ConditionState } from './models/conditions.models';\nimport { WidgetCustomization } from './models/customization.models';\nimport { ScopeOptions, WidgetStructureScope } from './models/scope.models';\nimport {\n BuildStructureOptions,\n WidgetConfig,\n WidgetItemCondition,\n WidgetViewMap,\n} from './models/structure.models';\nimport { checkConditions } from './utils/conditions.helpers';\nimport {\n SubmoduleLayers,\n collectSubmoduleLayers,\n intersectViewMaps,\n isPlainObject,\n mergeLayerDefaults,\n normalizeLayer,\n} from './utils/layers.helpers';\nimport { logWarning } from './utils/logger.helpers';\nimport {\n calculateRootDefaults,\n calculateViewMap,\n getWidgetStructure,\n} from './utils/structural.helpers';\n\nexport function getWidgetConfig(\n widget: Widget,\n version?: WidgetVersion,\n): WidgetConfig {\n const versionSet = version ?? WidgetVersion.latest;\n const widgetConfigurability = widgetConfigs[widget]?.[versionSet];\n if (!widgetConfigurability) {\n throw new Error(\n `No config found for widget ${widget} and version ${version}`,\n );\n }\n return widgetConfigurability;\n}\n\nexport function buildStructure(\n widget: Widget,\n customization?: WidgetCustomization,\n version?: WidgetVersion,\n options?: BuildStructureOptions,\n) {\n const config = getWidgetConfig(widget, version);\n const validationMap = options?.validationMap ?? widgetValidators[widget];\n const layers = (options?.layers ?? [])\n .map((layer) => normalizeLayer(layer))\n .filter((layer): layer is WidgetCustomization => !!layer);\n if (layers.length) {\n try {\n return buildLayeredStructure(\n config,\n layers,\n customization,\n validationMap,\n options,\n );\n } catch (error) {\n logWarning(\n `ignoring the ${widget} customization layers: ${\n (error as Error).message\n }`,\n );\n }\n }\n const structureMap = getWidgetStructure(\n config,\n customization,\n validationMap,\n options,\n );\n const rootDefaults = config.baseStructure.views\n ? undefined\n : calculateRootDefaults(\n config.baseStructure,\n customization,\n validationMap,\n options?.sanitize,\n );\n return new WidgetStructureInstance(structureMap, rootDefaults);\n}\n\nfunction buildLayeredStructure(\n config: WidgetConfig,\n layers: WidgetCustomization[],\n customization: WidgetCustomization | undefined,\n validationMap: BuildStructureOptions['validationMap'],\n options: BuildStructureOptions | undefined,\n) {\n const inline = isPlainObject(customization) ? customization : {};\n const effective = mergeLayerDefaults([...layers, inline]);\n const engineOptions = { viewConditionals: options?.viewConditionals };\n const layerMaps = layers.map((layer) =>\n getWidgetStructure(config, layer, undefined, engineOptions),\n );\n const structureMap = layerMaps.reduce(\n (result, layerMap) => intersectViewMaps(result, layerMap),\n getWidgetStructure(config, effective, validationMap, options),\n );\n const rootDefaults = config.baseStructure.views\n ? undefined\n : calculateRootDefaults(\n config.baseStructure,\n effective,\n validationMap,\n options?.sanitize,\n );\n return new WidgetStructureInstance(\n structureMap,\n rootDefaults,\n collectSubmoduleLayers(layerMaps),\n );\n}\n\nexport class WidgetStructureInstance {\n constructor(\n private viewMap: WidgetViewMap,\n private rootDefaults?: Record<string, unknown>,\n private submoduleLayers?: SubmoduleLayers,\n ) {}\n\n private getValue(key: string) {\n return this.viewMap[key];\n }\n\n isVisible(key: string, state?: ConditionState): boolean {\n const value = this.getValue(key);\n if (!value) return false;\n if (typeof value === 'object' && value.conditions) {\n return checkConditions(\n state,\n value.conditions as WidgetItemCondition[],\n );\n }\n return true;\n }\n\n getChildMap(key: string): WidgetViewMap | undefined {\n const value = this.getValue(key);\n if (\n !value ||\n typeof value === 'boolean' ||\n typeof value === 'string' ||\n !value.childMap\n )\n return undefined;\n return value.childMap as WidgetViewMap;\n }\n\n getSubmodule(\n module: string,\n view?: string,\n ): WidgetCustomization | undefined {\n const key = `${view ? view + '::' : ''}subModules`;\n const value = this.getValue(key);\n return (value as Record<string, WidgetCustomization>)?.[module];\n }\n\n /**\n * Submodule customizations of the stored layers, to pass as layers when building the embedded widget (structureFromSubmodule).\n */\n getSubmoduleLayers(\n module: string,\n view?: string,\n ): WidgetCustomization[] | undefined {\n const key = `${view ? view + '::' : ''}subModules`;\n return this.submoduleLayers?.[key]?.[module];\n }\n\n getDefaults(key: string): Record<string, unknown> | undefined {\n const value = this.getValue(key);\n if (\n !value ||\n typeof value === 'boolean' ||\n typeof value === 'string' ||\n !value.defaults\n )\n return undefined;\n return value.defaults as WidgetViewMap;\n }\n\n getRootDefaults(): Record<string, unknown> | undefined {\n return this.rootDefaults;\n }\n\n /**\n * Re-roots a resolved section (`design::downloadModal`) as plain JSON another bundle can rebuild a structure from.\n */\n scope(prefixKey: string, options: ScopeOptions = {}): WidgetStructureScope {\n const { widget, version, state } = options;\n const present = this.isVisible(prefixKey, state);\n const sectionPath =\n prefixKey.split(STRUCTURE_VIEW_NAME_SEPARATOR).pop() ?? prefixKey;\n const namespace =\n options.defaultsNamespace === undefined\n ? sectionPath.split(STRUCTURE_SECTION_NAME_SEPARATOR).pop()\n : options.defaultsNamespace;\n const sectionDefaults = present\n ? this.getDefaults(prefixKey)\n : undefined;\n const defaults = namespace\n ? (sectionDefaults?.[namespace] as\n | Record<string, unknown>\n | undefined)\n : sectionDefaults;\n const childPrefix = `${prefixKey}${STRUCTURE_SECTION_NAME_SEPARATOR}`;\n const map: Record<string, boolean> = {};\n let structureVersion: string | undefined;\n\n if (widget) {\n const config = getWidgetConfig(widget, version);\n structureVersion = config.version;\n Object.keys(calculateViewMap(config.baseStructure))\n .filter((key) => key !== 'subModules')\n .forEach((key) => {\n map[key] =\n present &&\n this.isVisible(`${childPrefix}${key}`, state);\n });\n } else if (present) {\n Object.keys(this.viewMap)\n .filter((key) => key.startsWith(childPrefix))\n .forEach((key) => {\n if (this.isVisible(key, state)) {\n map[key.slice(childPrefix.length)] = true;\n }\n });\n }\n\n return JSON.parse(\n JSON.stringify({\n kind: WIDGET_STRUCTURE_SCOPE_KIND,\n format: WIDGET_STRUCTURE_SCOPE_FORMAT,\n widget,\n structureVersion,\n source: prefixKey,\n present,\n map,\n defaults,\n }),\n );\n }\n}\n","import {\n Widget,\n WIDGET_STRUCTURE_SCOPE_FORMAT,\n WIDGET_STRUCTURE_SCOPE_KIND,\n WIDGET_SUBMODULE_NAMES,\n WidgetVersion,\n} from '../constants/structure.constants';\nimport { WidgetCustomization } from '../models/customization.models';\nimport { WidgetStructureScope } from '../models/scope.models';\nimport { BuildStructureOptions } from '../models/structure.models';\nimport { buildStructure, WidgetStructureInstance } from '../structural-manager';\nimport { mergeDeep } from './merge.helpers';\n\nexport type StructureInput =\n | WidgetStructureScope\n | WidgetCustomization\n | null\n | undefined;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport function isWidgetStructureScope(\n value: unknown,\n): value is WidgetStructureScope {\n return isPlainObject(value) && value.kind === WIDGET_STRUCTURE_SCOPE_KIND;\n}\n\n/**\n * Turns a resolved scope back into a customization of the widget it lists: hidden keys become an explicit remove list.\n */\nexport function scopeToCustomization(\n scope: WidgetStructureScope,\n): WidgetCustomization {\n const remove = scope.present\n ? Object.keys(scope.map ?? {}).filter((key) => scope.map[key] === false)\n : ['*'];\n return {\n ...(remove.length ? { remove } : {}),\n ...(scope.defaults ? { defaults: scope.defaults } : {}),\n };\n}\n\n/**\n * Extracts a section of a host's customization as a customization of the embedded widget, by evaluating it with the host's engine.\n */\nexport function extractCustomization(\n host: Widget,\n customization: WidgetCustomization | undefined,\n prefixKey: string,\n target: Widget,\n options?: BuildStructureOptions,\n): WidgetCustomization {\n const hostStructure = buildStructure(\n host,\n customization,\n undefined,\n options,\n );\n return scopeToCustomization(\n hostStructure.scope(prefixKey, { widget: target }),\n );\n}\n\nfunction submoduleOf(\n input: WidgetCustomization,\n module: string,\n view?: string,\n): WidgetCustomization | undefined {\n const root = input.subModules?.[module];\n const fromView = view\n ? input.views?.[view]?.subModules?.[module]\n : undefined;\n if (!fromView) return root;\n return root ? mergeDeep(root, fromView) : fromView;\n}\n\n/**\n * Builds an embedded widget's structure from what its host passes: a resolved scope, a raw customization of the widget, or a host\n * customization carrying the widget under subModules. Returns undefined for no input or an invalid one, so the receiver keeps its\n * legacy behaviour.\n */\nexport function structureFrom(\n widget: Widget,\n input: unknown,\n view?: string,\n version?: WidgetVersion,\n): WidgetStructureInstance | undefined {\n if (input === undefined || input === null) return undefined;\n try {\n if (!isPlainObject(input)) {\n throw new Error('expected an object');\n }\n if ('kind' in input) {\n if (!isWidgetStructureScope(input)) {\n throw new Error(`unknown kind ${String(input.kind)}`);\n }\n if (input.format !== WIDGET_STRUCTURE_SCOPE_FORMAT) {\n throw new Error(`unknown scope format ${input.format}`);\n }\n if (input.widget && input.widget !== widget) {\n throw new Error(`scope of ${input.widget}, expected ${widget}`);\n }\n return buildStructure(widget, scopeToCustomization(input), version);\n }\n const customization = input as WidgetCustomization;\n const module = WIDGET_SUBMODULE_NAMES[widget];\n const submodule = module\n ? submoduleOf(customization, module, view)\n : undefined;\n return buildStructure(widget, submodule ?? customization, version);\n } catch (error) {\n console.warn(\n `[widget-configurability] ignoring the ${widget} customization: ${(error as Error).message}`,\n );\n return undefined;\n }\n}\n\n/**\n * Builds the structure of a widget a host embeds as a submodule (chartPanel, chartGallery, chartBuilder, downloadModal).\n */\nexport function structureFromSubmodule(\n parent: WidgetStructureInstance,\n module: string,\n view?: string,\n options?: BuildStructureOptions,\n): WidgetStructureInstance {\n const widget = (Object.keys(WIDGET_SUBMODULE_NAMES) as Widget[]).find(\n (key) => WIDGET_SUBMODULE_NAMES[key] === module,\n );\n if (!widget) {\n throw new Error(`No widget registered for the submodule ${module}`);\n }\n const layers = parent.getSubmoduleLayers(module, view);\n return buildStructure(\n widget,\n parent.getSubmodule(module, view),\n undefined,\n layers\n ? { ...options, layers: [...(options?.layers ?? []), ...layers] }\n : options,\n );\n}\n","import { CHART_PANEL_LABELS } from './labels/chart-panel.labels';\nimport { DASHBOARD_LABELS } from './labels/dashboard.labels';\nimport {\n CustomizationLabel,\n CustomizationLabelMap,\n CustomizationLock,\n CustomizationTarget,\n CustomizationTreeNode,\n CustomizationTreeStateNode,\n} from './metadata.models';\nimport {\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n WIDGET_SUBMODULE_NAMES,\n Widget,\n WidgetVersion,\n} from '../constants/structure.constants';\nimport { WidgetCustomization } from '../models/customization.models';\nimport {\n WidgetStructureInstance,\n buildStructure,\n getWidgetConfig,\n} from '../structural-manager';\nimport { structureFromSubmodule } from '../utils/scope.helpers';\nimport { calculateViewMap } from '../utils/structural.helpers';\n\n// Label maps by widget; a new widget adds its map here and the guard spec checks it (3.7.1).\nexport const widgetMetadata: Partial<\n Record<Widget, { labels: CustomizationLabelMap }>\n> = {\n [Widget.DASHBOARD]: { labels: DASHBOARD_LABELS },\n [Widget.CHART_PANEL]: { labels: CHART_PANEL_LABELS },\n};\n\ninterface ResolvedTarget {\n widget: Widget;\n views: (string | undefined)[];\n}\n\nconst widgetOfSubmodule = (name: string): Widget => {\n const widget = (Object.keys(WIDGET_SUBMODULE_NAMES) as Widget[]).find(\n (key) => WIDGET_SUBMODULE_NAMES[key] === name,\n );\n if (!widget)\n throw new Error(`No widget registered for the submodule ${name}`);\n return widget;\n};\n\nfunction resolveTarget(\n widget: Widget,\n target: CustomizationTarget,\n version?: WidgetVersion,\n): ResolvedTarget {\n const embedded = target.subModules?.length\n ? widgetOfSubmodule(target.subModules[target.subModules.length - 1])\n : widget;\n const config = getWidgetConfig(\n embedded,\n target.subModules?.length ? undefined : version,\n );\n return {\n widget: embedded,\n views: config.baseStructure.views ? target.views : [undefined],\n };\n}\n\n/**\n * Keys of the structure in a view (or at the root), in structure order, without the view prefix.\n */\nexport function structureKeysOf(\n widget: Widget,\n view?: string,\n version?: WidgetVersion,\n): string[] {\n const map = calculateViewMap(\n getWidgetConfig(widget, version).baseStructure,\n );\n const prefix = view ? `${view}${STRUCTURE_VIEW_NAME_SEPARATOR}` : '';\n return Object.keys(map)\n .filter((key) =>\n view\n ? key.startsWith(prefix)\n : !key.includes(STRUCTURE_VIEW_NAME_SEPARATOR),\n )\n .map((key) => key.slice(prefix.length))\n .filter((key) => key !== 'subModules');\n}\n\nconst humanize = (id: string) =>\n id\n .replace(/^q(?=[A-Z])/, '')\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/^./, (char) => char.toUpperCase());\n\n/**\n * Label of a key: full path first, then the leaf id; a humanized id when neither exists.\n */\nexport function getCustomizationLabel(\n widget: Widget,\n key: string,\n): CustomizationLabel {\n const labels = widgetMetadata[widget]?.labels ?? {};\n const id = key.split(STRUCTURE_SECTION_NAME_SEPARATOR).pop() ?? key;\n return labels[key] ?? labels[id] ?? { label: humanize(id) };\n}\n\n/**\n * The labelled tree of a target: a widget view, or the structure of the embedded widget when subModules is set.\n */\nexport function getCustomizationTree(\n widget: Widget,\n target: CustomizationTarget,\n options: { version?: WidgetVersion } = {},\n): CustomizationTreeNode[] {\n const resolved = resolveTarget(widget, target, options.version);\n const ordered: string[] = [];\n resolved.views.forEach((view) =>\n structureKeysOf(\n resolved.widget,\n view,\n target.subModules?.length ? undefined : options.version,\n ).forEach((key) => {\n if (!ordered.includes(key)) ordered.push(key);\n }),\n );\n const roots: CustomizationTreeNode[] = [];\n const nodes = new Map<string, CustomizationTreeNode>();\n const ensure = (key: string): CustomizationTreeNode => {\n const existing = nodes.get(key);\n if (existing) return existing;\n const parts = key.split(STRUCTURE_SECTION_NAME_SEPARATOR);\n const { label, description } = getCustomizationLabel(\n resolved.widget,\n key,\n );\n const node: CustomizationTreeNode = {\n key,\n id: parts[parts.length - 1],\n label,\n ...(description && { description }),\n kind: 'item',\n };\n nodes.set(key, node);\n if (parts.length === 1) {\n roots.push(node);\n } else {\n const parent = ensure(\n parts.slice(0, -1).join(STRUCTURE_SECTION_NAME_SEPARATOR),\n );\n parent.kind = 'section';\n parent.children = [...(parent.children ?? []), node];\n }\n return node;\n };\n ordered.forEach(ensure);\n return roots;\n}\n\nfunction instanceFor(\n widget: Widget,\n customization: WidgetCustomization | undefined,\n target: CustomizationTarget,\n view?: string,\n) {\n let instance: WidgetStructureInstance = buildStructure(\n widget,\n customization,\n );\n (target.subModules ?? []).forEach((name) => {\n instance = structureFromSubmodule(instance, name, view);\n });\n return instance;\n}\n\nconst matches = (pattern: string, key: string) =>\n pattern === key ||\n new RegExp(`^${pattern.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*')}$`).test(\n key,\n );\n\n// The block where the tree's switches write, and the blocks above it whose rules a switch cannot undo.\nfunction scopesOf(\n customization: WidgetCustomization | undefined,\n target: CustomizationTarget,\n view: string,\n) {\n const subModules = target.subModules ?? [];\n if (!subModules.length) {\n return { own: customization?.views?.[view], root: customization };\n }\n const name = subModules[subModules.length - 1];\n return {\n own: customization?.views?.[view]?.subModules?.[name],\n root: customization?.subModules?.[name],\n };\n}\n\nexport function lockOf(\n customization: WidgetCustomization | undefined,\n target: CustomizationTarget,\n view: string,\n key: string,\n hiddenParent?: string,\n): CustomizationLock | undefined {\n const { own, root } = scopesOf(customization, target, view);\n if (hiddenParent)\n return { verb: 'remove', pattern: hiddenParent, scope: 'parent' };\n if (own?.remove?.includes(key)) return undefined;\n const rootRemove = root?.remove?.find((pattern) => matches(pattern, key));\n if (rootRemove)\n return { verb: 'remove', pattern: rootRemove, scope: 'root' };\n const viewRemove = own?.remove?.find((pattern) => matches(pattern, key));\n if (viewRemove)\n return { verb: 'remove', pattern: viewRemove, scope: 'view' };\n if (root?.keep?.length)\n return { verb: 'keep', pattern: root.keep.join(', '), scope: 'root' };\n if (own?.keep?.length)\n return { verb: 'keep', pattern: own.keep.join(', '), scope: 'view' };\n // Hidden by something the switches do not write (a conditional, a submodule rule of the host).\n return {\n verb: 'remove',\n pattern: key,\n scope:\n own?.conditional?.length || root?.conditional?.length\n ? 'conditional'\n : 'view',\n };\n}\n\n/**\n * The tree with the visibility of each node for a customization, computed with the real engine. A node whose\n * visibility differs between the target views is 'mixed'; a hidden node a switch cannot bring back is locked.\n */\nexport function getCustomizationTreeState(\n widget: Widget,\n customization: WidgetCustomization | undefined,\n target: CustomizationTarget,\n): CustomizationTreeStateNode[] {\n const tree = getCustomizationTree(widget, target);\n const embedded = !!target.subModules?.length;\n const instances = target.views.map((view) => ({\n view,\n instance: instanceFor(widget, customization, target, view),\n }));\n const isVisible = (\n instance: WidgetStructureInstance,\n view: string,\n key: string,\n ) =>\n instance.isVisible(\n embedded ? key : `${view}${STRUCTURE_VIEW_NAME_SEPARATOR}${key}`,\n {},\n );\n\n const walk = (\n nodes: CustomizationTreeNode[],\n hiddenParents: (string | undefined)[],\n ): CustomizationTreeStateNode[] =>\n nodes.map((node) => {\n const states = instances.map(({ view, instance }) =>\n isVisible(instance, view, node.key),\n );\n const visible = states.every(Boolean)\n ? true\n : states.some(Boolean)\n ? 'mixed'\n : false;\n const locks =\n visible === false\n ? instances.map(({ view }, index) =>\n lockOf(\n customization,\n target,\n view,\n node.key,\n hiddenParents[index],\n ),\n )\n : [];\n const lockedBy =\n locks.length && locks.every(Boolean) ? locks[0] : undefined;\n const childParents = states.map(\n (state, index) =>\n hiddenParents[index] ?? (state ? undefined : node.key),\n );\n const { children, ...rest } = node;\n const stateNode: CustomizationTreeStateNode = { ...rest, visible };\n if (lockedBy) stateNode.lockedBy = lockedBy;\n if (children) stateNode.children = walk(children, childParents);\n return stateNode;\n });\n return walk(\n tree,\n instances.map(() => undefined),\n );\n}\n\nconst isEmptyObject = (value: unknown) =>\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n Object.keys(value).length === 0;\n\n/**\n * A new customization with the minimal change for one switch, applied to every view of the target. It only edits\n * the remove list of each view (or of the submodule inside it), never keep, conditional, defaults or root verbs.\n */\nexport function toggleCustomizationKey(\n customization: WidgetCustomization | undefined,\n target: CustomizationTarget,\n key: string,\n visible: boolean,\n): WidgetCustomization {\n const result: WidgetCustomization = JSON.parse(\n JSON.stringify(customization ?? {}),\n );\n target.views.forEach((view) => {\n const chain: Record<string, unknown>[] = [\n result as Record<string, unknown>,\n ];\n const step = (holder: Record<string, unknown>, name: string) => {\n holder[name] = (holder[name] as Record<string, unknown>) ?? {};\n chain.push(holder[name] as Record<string, unknown>);\n return holder[name] as Record<string, unknown>;\n };\n let block = step(\n step(result as Record<string, unknown>, 'views'),\n view,\n );\n (target.subModules ?? []).forEach((name) => {\n block = step(step(block, 'subModules'), name);\n });\n const remove = (block.remove as string[] | undefined) ?? [];\n if (!visible && !remove.includes(key)) block.remove = [...remove, key];\n if (visible) {\n const next = remove.filter((item) => item !== key);\n if (next.length) block.remove = next;\n else delete block.remove;\n }\n // Drops the empty objects this switch left behind, from the innermost out.\n for (let index = chain.length - 1; index > 0; index--) {\n const holder = chain[index - 1];\n const name = Object.keys(holder).find(\n (property) => holder[property] === chain[index],\n );\n if (name && isEmptyObject(chain[index])) delete holder[name];\n }\n });\n return result;\n}\n"]}
1
+ {"version":3,"sources":["../../src/metadata/labels/chart-panel.defaults.ts","../../src/metadata/labels/chart-panel.labels.ts","../../src/metadata/labels/dashboard.defaults.ts","../../src/metadata/labels/dashboard.labels.ts","../../src/constants/structure.constants.ts","../../src/utils/defaults.helpers.ts","../../src/structures/download-modal.structure.v1.ts","../../src/structures/dashboard.structure.v1.ts","../../src/structures/download-manager.structure.v1.ts","../../src/structures/report.structure.v1.ts","../../src/structures/chart-panel.structure.v1.ts","../../src/structures/chart-gallery.structure.v1.ts","../../src/structures/chart-builder.structure.v1.ts","../../src/constants/configs.ts","../../src/models/conditions.models.ts","../../src/utils/conditions.helpers.ts","../../src/utils/merge.helpers.ts","../../src/utils/layers.helpers.ts","../../src/utils/logger.helpers.ts","../../src/utils/structural.helpers.ts","../../src/structural-manager.ts","../../src/utils/scope.helpers.ts","../../src/metadata/customization-metadata.ts","../../src/metadata/labels/submodule.labels.ts","../../src/metadata/customization-docs.ts"],"names":["CHART_PANEL_DEFAULTS","menuLayout","type","values","description","since","notes","CHART_PANEL_LABELS","header","label","floatingMenu","body","optionMenu","optionDateGrouping","dashFilterScope","tabFilterScope","panelFilterScope","qChartName","qFitPanel","qChartSelection","qColumnSection","qSorting","qColumnReplacement","qColumnAggregation","qColumnGrouping","qDateGrouping","qColumnSelection","qResetColumnsWidth","qSmartAnalyzer","qEditChart","qDuplicateChart","qDownloadChart","qChartJPG","qChartPDF","qChartCSV","qChartSummary","qChartExcel","qFilter","qAddFilter","qEditFilter","qDeleteFilter","qYear","qQuarter","qQuarterOnly","qMonth","qMonthOnly","qWeek","qDay","qDayOnly","qHour","qHourOnly","qMinute","qMinuteOnly","qSecond","qSecondOnly","qComparativeAnalysis","COLOR","IMAGE_URL","COLUMNS_EXAMPLE","GROUPINGS_EXAMPLE","ANY_TEXT","example","COLUMN_NOTE","FONT_FAMILIES","FONT_SIZES","px","sizes","map","size","BORDER_WIDTHS","Array","from","length","_","index","ASPECTS","TRIGGERS","color","fonts","filterControl","prefix","notIncluded","extra","audience","DASHBOARD_DEFAULTS","assetListViewMode","dragElement","resizeElement","removeElement","changeLayout","unsavedChangesBehavior","filter","undefined","DASHBOARD_LABELS","navBar","assetList","controlBarLeft","controlBarRight","menuBar","toolBar","configPanel","filterPanel","downloadModal","canvas","duplicateModal","grid","containerFilterScope","viewOnlyFilterScope","edit","file","insert","options","timezone","qAppTitle","qBackButton","qQvTokenExpiredMessage","qGoToDashBackButton","qCreateDash","qSwitchView","qFilterBy","qSortBy","qSearch","qSelectColumn","qStatus","qPreview","qPublish","qUnpublish","qDesign","qEditDash","qUseDash","qRenameDash","qDeleteDash","qManageTags","qTags","qFilterByTags","qDuplDash","qDuplDashAndCharts","qManageSharing","qFavorite","qCreatedDate","qLastModifDate","qNumberOfCharts","qSharing","qSharingIcon","qOwner","qDescription","qDashFavorite","qDashName","qDashDesc","qMnuCreateDash","qMnuOpenDash","qMnuDuplicateDash","qMnuDuplicateDashAndCharts","qMnuCanvasSize","qMnuThemes","qMnuDeleteDash","qMnuDownloadDash","qCreateDataset","qCreateCustomDataset","qViewCustomDataset","qUndoRedo","qCopyElement","qPasteElement","qCutElement","qRemoveElement","qDuplElement","qSelectAllElem","qSelectAllContElem","qMnuInsertChart","qMnuExistingChart","qMnuNewChart","qMnuNewChartAI","qMnuInsertFilterCtrl","qMnuDatePicker","qMnuInputBox","qMnuMultiSelectList","qMnuSingleSelectList","qMnuInsertShape","qMnuLine","qMnuRectangle","qMnuEllipse","qMnuInsertText","qMnuInsertImage","qMnuInsertButton","qMnuInsertContainer","qMnuInsertHeader","qMnuInsertTabs","qMnuArrange","qMnuBringToFront","qMnuSendToBack","qMnuAlign","qMnuDisplayGrid","qMnuSnapToGrid","qMnuSwitchGrid","qCanvasSize","qInsertChart","qExistingChart","qNewChart","qNewChartAI","qInsertFilterCtrl","qDatePicker","qInputBox","qMultiSelectList","qSingleSelectList","qInsertShape","qLine","qRectangle","qEllipse","qSnapToGrid","qDisplayGrid","qSwitchGrid","qDownloadDash","qDashPDF","qDashCSV","qDashExcel","qDashDataset","qArrange","qBringToFront","qSendToBack","qResponsiveView","qDesktop","qTablet","qMobile","qBreakpoints","qAlign","qAlignRight","qAlignLeft","qAlignCenter","qAlignTop","qAlignMiddle","qAlignBottom","qInsertText","qInsertImage","qInsertButton","qInsertContainer","qRespGridMargins","qRespGridColumns","qThemes","qDashVersion","qGetDashVersion","qSourceDashBanner","qHiddenItems","qDiscard","qSave","qSwitchMode","qHideToolBar","qDownloadList","qChangeLayout","qEnabDisabAllFilters","qDeleteAllFilters","qFilterSettings","qEnabDisabFilter","qScheduleOption","qSubscribeOption","qSubscribeExternalUsers","qSubscribeBanner","qOwnerLabel","qSubscribeOrganization","qSubscribeMyself","qSubscribeSpecificPeople","qSubscribeOwner","qIncludeHeader","qAdvancedSettings","qPageSize","qOrientation","qIncludeHyperlinks","qExportVersion","qSavedVersionWarning","qUnsavedVersionWarning","qCharts","qFilters","qDashActions","STRUCTURE_SECTION_NAME_SEPARATOR","STRUCTURE_VIEW_NAME_SEPARATOR","STRUCTURE_RESERVED_WORDS","Widget","WIDGET_SUBMODULE_NAMES","WIDGET_STRUCTURE_SCOPE_KIND","WIDGET_STRUCTURE_SCOPE_FORMAT","WidgetVersion","applyValidation","currentObj","validatorMap","parentKey","sanitize","validatedObj","Object","keys","forEach","key","fullKey","value","isArray","validateDefaults","obj","isANumber","_value","Number","isNaN","numberMinMaxValue","maxValue","minValue","fontSizeMinMaxValue","minSize","maxSize","inputSize","parseInt","includes","validFontSizes","closestSize","smallestDiff","Math","abs","diff","fontColorValue","normalizedColor","toLowerCase","validateBoolean","validateUnsavedChangesBehavior","validateType","validValues","receivedValue","toUpperCase","PAGE_SIZES","PAGE_ORIENTATIONS","validateOneOf","DX_VALIDATOR_MAP","DOWNLOAD_MODAL_VALIDATOR_MAP","subscribeMyself","pageSize","orientation","DOWNLOAD_MODAL_V1_KEYS","DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS","DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS_KEYS","DOWNLOAD_MODAL_V1_SECTIONS","DOWNLOAD_MODAL_V1_KEEP_INHERITANCE","hostKeepInheritance","section","fromEntries","entries","alias","DOWNLOAD_MODAL_V1_DEFAULTS","downloadModalV1Config","version","keepInheritance","baseStructure","defaults","DOWNLOAD_MODAL_HOST_KEYS","dashboardV1Config","views","list","design","preview","endUser","endUserTopBar","asset","card","table","qOptionsMenu","subModules","chartPanel","chartGallery","chartBuilder","downloadManagerV1Config","main","detail","controlBar","filters","qFilterByFileType","qFilterByExecution","qFilterByWidget","qFilterByAsset","qFilterByOrganization","qFilterByOwner","qRemoveFilters","qScheduleDetail","qFilesExported","qMoreInfo","bottomBar","moreInfoModal","reportV1Config","tabBar","qDownloadReport","dataPanel","tabDataset","tabParameters","repoFilterScope","optionMenuChildren","headerConfig","floatingMenuConfig","item","chartPanelV1Config","chartGalleryV1Config","chartTypeFilter","showSummary","inputSearch","switch","title","chartBuilderV1Config","widgetConfigs","DASHBOARD","v1","latest","REPORT","DOWNLOAD_MANAGER","DOWNLOAD_MODAL","CHART_PANEL","CHART_GALLERY","CHART_BUILDER","widgetValidators","allowedOperators","isOperator","getValue","condition","state","field","_evalConditionOperator","operator","OPERATOR_MAP","a","b","startsWith","endsWith","contains","evaluateCondition","conditions","every","c","_evalCondition","evalFn","checkConditions","cond","effect","result","mergeDeep","obj1","obj2","settings","defaultSettings","mergeExistingValues","mergeMissingProperties","isValid","objectCopy","val1","val2","isObject","prototype","hasOwnProperty","call","toString","SUBMODULES_KEY","isPlainObject","stringList","normalizeCondition","conditionValue","normalizeSubmodules","name","submodule","normalizeLayer","allowViews","layer","remove","keep","conditional","flatMap","rest","view","viewLayer","mergeDefaults","previous","next","mergeLayerDefaults","layers","last","viewNames","Set","_a","rootDefaults","reduce","merged","viewDefaults","effective","isSubmodulesKey","asItemObject","intersectItem","current","other","otherItem","childMap","intersectViewMaps","hasDefaults","hasChildMap","collectSubmoduleLayers","maps","collection","LOG_PREFIX","logWarning","message","console","warn","getWidgetStructure","config","customization","validationMap","calculateViewMap","permissionMap","keepAliases","assign","calculateSpecificViewMap","customDefaults","calculateCustomDefaults","prevDefaults","submodules","calculateSubmodules","conditionMaps","calculateConditions","calculatePermissionMap","calculateRootDefaults","calculateDefaults","viewDefinition","viewConditionals","viewKeys","viewPrefix","getViewPrefix","getStructureKey","viewValue","matchWildcard","pattern","regexPattern","RegExp","replace","test","keyIsIncludedInKeep","keyIsIncludedInRemove","canInsertInCustomization","validateKeepOption","includedInRemove","includedInKeep","canInsert","keepValue","keepResult","conditionAffect","evalInsertKey","hasKeepOption","customizationView","custCanInsert","custViewCanInsert","some","x","canInsertKey","checkCondition","addKeyToPermissions","keyAttr","addDefaultKey","addChildMapKey","getConditionsForKey","pathPrefix","previousKeepOption","currentKeepOption","nodeHasKeepOption","configValue","currentKey","newPrefix","canInsertResult","calculatePermissionMapArray","mapValue","push","rootConditionals","customConditionals","viewSubmodules","customRootSubmodules","customSubmodules","mergeObjects","customRootDefaults","defaultObj","structureDefaults","itemDefaults","baseDefaults","prevObj","newObj","mapObjKeys","mapArrayKeys","nodeKeys","defaultsSimple","option","fullPath","getWidgetConfig","widget","versionSet","widgetConfigurability","Error","buildStructure","buildLayeredStructure","error","structureMap","WidgetStructureInstance","inline","engineOptions","layerMaps","layerMap","constructor","viewMap","submoduleLayers","isVisible","getChildMap","getSubmodule","module","getSubmoduleLayers","getDefaults","getRootDefaults","scope","prefixKey","present","sectionPath","split","pop","namespace","defaultsNamespace","sectionDefaults","childPrefix","structureVersion","slice","JSON","parse","stringify","kind","format","source","structureFromSubmodule","parent","find","widgetMetadata","labels","findWidgetOfSubmodule","widgetOfSubmodule","isWidgetConfig","rootOf","structureRootOf","subModule","subModuleStructures","structure","asCustomization","resolveTarget","target","host","structureKeysOf","embedded","hostView","instance","humanize","id","char","getCustomizationLabel","getCustomizationTree","resolved","ordered","roots","nodes","Map","ensure","existing","get","parts","node","set","join","children","instanceFor","matches","scopesOf","own","root","lockOf","hiddenParent","verb","rootRemove","viewRemove","getCustomizationTreeState","tree","instances","walk","hiddenParents","states","visible","Boolean","locks","lockedBy","childParents","stateNode","isEmptyObject","toggleCustomizationKey","chain","step","holder","block","property","SUBMODULE_LABELS","DEFAULT_AUDIENCE","compact","asObject","parentOf","lastIndexOf","typeOf","ownerByPath","sort","left","right","declaredDefaults","declared","inherited","defaultDocsOf","validators","declaredBy","has","names","docs","_b","validatorsOf","defaultsByKey","byKey","doc","owners","flatten","collect","entry","subModuleEntry","getCustomizationDocs","hostDefaults","getCustomizationDefaultDocs"],"mappings":"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","file":"metadata.mjs","sourcesContent":["import { CustomizationDefaultLabelMap } from '../metadata.models';\n\n// The chart panel defaults. The sheet lists menuLayout with the dashboard's, but the panel reads it from its own structure\n// (getDefaults('menuLayout')), so it is documented on the chart panel's menuLayout key (RB-7258).\nexport const CHART_PANEL_DEFAULTS: CustomizationDefaultLabelMap = {\n menuLayout: {\n type: 'string',\n values: ['header', 'floating'],\n description: 'Define the type of menu displayed in the charts',\n since: '9.4',\n notes: 'If the user wants to replicate the hidden options, they need to use the remove attribute.',\n },\n};\n","import { CustomizationLabelMap } from '../metadata.models';\n\n// Initial English labels of the chart panel (chartPanel submodule), for review with Product (D20). Description and since\n// come from the \"Customization keys: AN\" tab of the DX Widget Config sheet; the floating menu keys were added in 9.4 (RB-7258).\nexport const CHART_PANEL_LABELS: CustomizationLabelMap = {\n header: {\n label: 'Chart header',\n description: 'The entire header for the panel',\n since: '9.0',\n },\n floatingMenu: { label: 'Floating menu' },\n menuLayout: { label: 'Menu layout' },\n body: { label: 'Chart body' },\n 'body.actions': { label: 'Chart actions' },\n optionMenu: {\n label: 'Chart options menu',\n description: 'The three dot button',\n since: '9.0',\n },\n optionDateGrouping: {\n label: 'Date grouping options',\n description: 'The column date grouping section in column settings',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping': {\n label: 'Date grouping options',\n description: 'The column date grouping section in column settings',\n since: '9.4',\n },\n dashFilterScope: {\n label: 'Dashboard filters',\n description: 'Filters that apply to the entire dashboard',\n since: '9.3',\n },\n 'floatingMenu.qFilter.dashFilterScope': {\n label: 'Dashboard filters',\n description: 'Filters that apply to the entire dashboard',\n since: '9.4',\n },\n tabFilterScope: {\n label: 'Tab filters',\n description: 'Filters that apply to the current tab',\n since: '9.3',\n },\n 'floatingMenu.qFilter.tabFilterScope': {\n label: 'Tab filters',\n description: 'Filters that apply to the current tab',\n since: '9.4',\n },\n panelFilterScope: {\n label: 'Panel filters',\n description: 'Filters that apply to the selected panel',\n since: '9.3',\n },\n 'floatingMenu.qFilter.panelFilterScope': {\n label: 'Panel filters',\n description: 'Filters that apply to the selected panel',\n since: '9.4',\n },\n qChartName: {\n label: 'Chart name',\n description: 'The title of the panel',\n since: '9.0',\n },\n qFitPanel: {\n label: 'Fit to panel',\n description: 'The fit-to-panel button',\n since: '9.0',\n },\n 'floatingMenu.qFitPanel': {\n label: 'Fit to panel',\n description: 'The fit-to-panel button',\n since: '9.4',\n },\n qChartSelection: {\n label: 'Chart type selection',\n description: 'The chart selection button',\n since: '9.0',\n },\n 'floatingMenu.qChartSelection': {\n label: 'Chart type selection',\n description: 'The chart selection button',\n since: '9.4',\n },\n qColumnSection: {\n label: 'Column section',\n description: 'Add/Remove sections in expandable table',\n since: '9.3',\n },\n 'floatingMenu.qColumnSection': {\n label: 'Column section',\n description: 'Add/Remove sections in expandable table',\n since: '9.4',\n },\n qSorting: {\n label: 'Sorting',\n description: 'The sorting button',\n since: '9.0',\n },\n 'floatingMenu.qSorting': {\n label: 'Sorting',\n description: 'The sorting button',\n since: '9.4',\n },\n qColumnReplacement: {\n label: 'Column replacement',\n description: 'The column replacement section in column settings',\n since: '9.0',\n },\n 'floatingMenu.qColumnReplacement': {\n label: 'Column replacement',\n description: 'The column replacement section in column settings',\n since: '9.4',\n },\n qColumnAggregation: {\n label: 'Column aggregation',\n description: 'The column aggregation section in column settings',\n since: '9.0',\n },\n 'floatingMenu.qColumnAggregation': {\n label: 'Column aggregation',\n description: 'The column aggregation section in column settings',\n since: '9.4',\n },\n qColumnGrouping: {\n label: 'Column grouping',\n description: 'Add/remove groups in a simple or grouped table.',\n since: '9.3',\n },\n 'floatingMenu.qColumnGrouping': {\n label: 'Column grouping',\n description: 'Add/remove groups in a simple or grouped table.',\n since: '9.4',\n },\n qDateGrouping: { label: 'Date grouping' },\n qColumnSelection: {\n label: 'Column selection',\n description: 'Add/Remove columns in table charts',\n since: '9.3',\n },\n 'floatingMenu.qColumnSelection': {\n label: 'Column selection',\n description: 'Add/Remove columns in table charts',\n since: '9.4',\n },\n qResetColumnsWidth: {\n label: 'Reset column widths',\n description:\n 'Option to reset column width in tables when an-panel menu is \"Header\" mode',\n since: '9.5',\n },\n 'floatingMenu.qResetColumnsWidth': {\n label: 'Reset column widths',\n description:\n 'Option to reset column width in tables when an-panel menu is \"Floating\" mode',\n since: '9.5',\n },\n qSmartAnalyzer: {\n label: 'Smart analyzer',\n description: 'Keep or remove the smart analyzer icon',\n since: '9.5',\n },\n 'floatingMenu.qSmartAnalyzer': {\n label: 'Smart analyzer',\n description: 'Keep or remove the smart analyzer icon',\n since: '9.4',\n },\n qEditChart: {\n label: 'Edit chart',\n description: 'The edit option inside the three dot button',\n since: '9.0',\n },\n 'floatingMenu.qEditChart': {\n label: 'Edit chart',\n description: 'The edit option inside the three dot button',\n since: '9.4',\n },\n qDuplicateChart: {\n label: 'Duplicate chart',\n description: 'The duplicate option inside the three dot button',\n since: '9.0',\n },\n 'floatingMenu.qDuplicateChart': {\n label: 'Duplicate chart',\n description: 'The duplicate option inside the three dot button',\n since: '9.4',\n },\n qDownloadChart: {\n label: 'Download',\n description: 'The download group inside the three dot button',\n since: '9.0',\n },\n 'floatingMenu.qDownloadChart': {\n label: 'Download',\n description: 'The download group inside the three dot button',\n since: '9.4',\n },\n qChartJPG: {\n label: 'JPG',\n description: 'The JPG format in the download group',\n since: '9.0',\n },\n 'floatingMenu.qDownloadChart.qChartJPG': {\n label: 'JPG',\n description: 'The JPG format in the download group',\n since: '9.4',\n },\n qChartPDF: {\n label: 'PDF',\n description: 'The PDF format in the download group',\n since: '9.0',\n },\n 'floatingMenu.qDownloadChart.qChartPDF': {\n label: 'PDF',\n description: 'The PDF format in the download group',\n since: '9.4',\n },\n qChartCSV: {\n label: 'CSV',\n description: 'The CSV format in the download group',\n since: '9.0',\n },\n 'floatingMenu.qDownloadChart.qChartCSV': {\n label: 'CSV',\n description: 'The CSV format in the download group',\n since: '9.4',\n },\n qChartSummary: {\n label: 'Summary',\n description: 'The CSV with summaries format in the download group',\n since: '9.0',\n },\n 'floatingMenu.qDownloadChart.qChartSummary': {\n label: 'Summary',\n description: 'The CSV with summaries format in the download group',\n since: '9.4',\n },\n qChartExcel: {\n label: 'Excel',\n description: 'The Excel format in the download group',\n since: '9.0',\n },\n 'floatingMenu.qDownloadChart.qChartExcel': {\n label: 'Excel',\n description: 'The Excel format in the download group',\n since: '9.4',\n },\n qFilter: {\n label: 'Filters',\n description: 'The filter and the options for filtering',\n since: '9.0',\n },\n 'floatingMenu.qFilter': {\n label: 'Filters',\n description: 'The filter and the options for filtering',\n since: '9.4',\n },\n qAddFilter: {\n label: 'Add filter',\n description: 'Option to add a new filter',\n since: '9.3',\n },\n 'floatingMenu.qFilter.qAddFilter': {\n label: 'Add filter',\n description: 'Option to add a new filter',\n since: '9.4',\n },\n qEditFilter: {\n label: 'Edit filter',\n description: 'Option to edit a dashboard-level filter',\n since: '9.3',\n },\n 'header.qFilter.tabFilterScope.qEditFilter': {\n label: 'Edit filter',\n description: 'Option to edit a tab-level filter',\n since: '9.3',\n },\n 'header.qFilter.panelFilterScope.qEditFilter': {\n label: 'Edit filter',\n description: 'Option to edit a panel-level filter',\n since: '9.3',\n },\n 'floatingMenu.qFilter.dashFilterScope.qEditFilter': {\n label: 'Edit filter',\n description: 'Option to edit a dashboard-level filter',\n since: '9.4',\n },\n 'floatingMenu.qFilter.tabFilterScope.qEditFilter': {\n label: 'Edit filter',\n description: 'Option to edit a tab-level filter',\n since: '9.4',\n },\n 'floatingMenu.qFilter.panelFilterScope.qEditFilter': {\n label: 'Edit filter',\n description: 'Option to edit a panel-level filter',\n since: '9.4',\n },\n qDeleteFilter: {\n label: 'Delete filter',\n description: 'Option to delete a dashboard-level filter',\n since: '9.3',\n },\n 'header.qFilter.tabFilterScope.qDeleteFilter': {\n label: 'Delete filter',\n description: 'Option to delete a tab-level filter',\n since: '9.3',\n },\n 'header.qFilter.panelFilterScope.qDeleteFilter': {\n label: 'Delete filter',\n description: 'Option to delete a panel-level filter',\n since: '9.3',\n },\n 'floatingMenu.qFilter.dashFilterScope.qDeleteFilter': {\n label: 'Delete filter',\n description: 'Option to delete a dashboard-level filter',\n since: '9.4',\n },\n 'floatingMenu.qFilter.tabFilterScope.qDeleteFilter': {\n label: 'Delete filter',\n description: 'Option to delete a tab-level filter',\n since: '9.4',\n },\n 'floatingMenu.qFilter.panelFilterScope.qDeleteFilter': {\n label: 'Delete filter',\n description: 'Option to delete a panel-level filter',\n since: '9.4',\n },\n qYear: {\n label: 'Year',\n description: 'The option for (Year) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qYear': {\n label: 'Year',\n description: 'The option for (Year) in the date grouping dropdown',\n since: '9.4',\n },\n qQuarter: {\n label: 'Quarter',\n description:\n 'The option for (Quarter, Year) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qQuarter': {\n label: 'Quarter',\n description:\n 'The option for (Quarter, Year) in the date grouping dropdown',\n since: '9.4',\n },\n qQuarterOnly: {\n label: 'Quarter only',\n description: 'The option for (Quarter) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qQuarterOnly': {\n label: 'Quarter only',\n description: 'The option for (Quarter) in the date grouping dropdown',\n since: '9.4',\n },\n qMonth: {\n label: 'Month',\n description:\n 'The option for (Month, Year) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qMonth': {\n label: 'Month',\n description:\n 'The option for (Month, Year) in the date grouping dropdown',\n since: '9.4',\n },\n qMonthOnly: {\n label: 'Month only',\n description: 'The option for (Month) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qMonthOnly': {\n label: 'Month only',\n description: 'The option for (Month) in the date grouping dropdown',\n since: '9.4',\n },\n qWeek: {\n label: 'Week',\n description:\n 'The option for (Week, Year) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qWeek': {\n label: 'Week',\n description:\n 'The option for (Week, Year) in the date grouping dropdown',\n since: '9.4',\n },\n qDay: {\n label: 'Day',\n description: 'The option for (Full Date) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qDay': {\n label: 'Day',\n description: 'The option for (Full Date) in the date grouping dropdown',\n since: '9.4',\n },\n qDayOnly: {\n label: 'Day only',\n description: 'The option for (Day Month) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qDayOnly': {\n label: 'Day only',\n description: 'The option for (Day Month) in the date grouping dropdown',\n since: '9.4',\n },\n qHour: {\n label: 'Hour',\n description:\n 'The option for (Date, Hour) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qHour': {\n label: 'Hour',\n description:\n 'The option for (Date, Hour) in the date grouping dropdown',\n since: '9.4',\n },\n qHourOnly: {\n label: 'Hour only',\n description: 'The option for (Hour) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qHourOnly': {\n label: 'Hour only',\n description: 'The option for (Hour) in the date grouping dropdown',\n since: '9.4',\n },\n qMinute: {\n label: 'Minute',\n description:\n 'The option for (Date, Minute) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qMinute': {\n label: 'Minute',\n description:\n 'The option for (Date, Minute) in the date grouping dropdown',\n since: '9.4',\n },\n qMinuteOnly: {\n label: 'Minute only',\n description: 'The option for (Minute) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qMinuteOnly': {\n label: 'Minute only',\n description: 'The option for (Minute) in the date grouping dropdown',\n since: '9.4',\n },\n qSecond: {\n label: 'Second',\n description:\n 'The option for (Date, Second) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qSecond': {\n label: 'Second',\n description:\n 'The option for (Date, Second) in the date grouping dropdown',\n since: '9.4',\n },\n qSecondOnly: {\n label: 'Second only',\n description: 'The option for (Second) in the date grouping dropdown',\n since: '9.0',\n },\n 'floatingMenu.optionDateGrouping.qSecondOnly': {\n label: 'Second only',\n description: 'The option for (Second) in the date grouping dropdown',\n since: '9.4',\n },\n qComparativeAnalysis: { label: 'Comparative analysis' },\n};\n","import { CustomizationDefaultLabelMap } from '../metadata.models';\n\n// The dashboard defaults, from the \"Customization Defaults\" tab of the DX Widget Config sheet, in its order (RB-7258).\n// Keyed by the path under `defaults`. Rows the sheet marks \"Not included yet\" are internal until they ship.\n\nconst COLOR = \"Color names or hex, e.g. '#000000', 'green', 'GREEN'\";\nconst IMAGE_URL = 'Valid image url';\nconst COLUMNS_EXAMPLE = '[{ \"columnId\": \"xxxxx\", \"datasetId\": \"datasetxxx\" }]';\nconst GROUPINGS_EXAMPLE =\n '[\"day\",\"month\",\"quarter\",\"week\",\"year\",\"quarter_only\",\"month_only\",\"day_only\"]';\nconst ANY_TEXT = (example: string) => `Any text string, e.g. \"${example}\"`;\nconst COLUMN_NOTE =\n 'To apply this default, you need to select a column using the “columns” field. If no column is selected through customization, the default will be loaded based on the column’s data type.';\n\nconst FONT_FAMILIES = [\n 'Roboto, sans-serif',\n 'Georgia, serif',\n 'Palatino Linotype, Book Antiqua, Palatino, serif',\n 'Times New Roman, Times, serif',\n 'Arial, Helvetica, sans-serif',\n 'Arial Black, Gadget, sans-serif',\n 'Comic Sans MS, cursive, sans-serif',\n 'Impact, Charcoal, sans-serif',\n 'Lucida Sans Unicode, Lucida Grande, sans-serif',\n 'Tahoma, Geneva, sans-serif',\n 'Trebuchet MS, Helvetica, sans-serif',\n 'Verdana, Geneva, sans-serif',\n 'Courier New, Courier, monospace',\n 'Lucida Console, Monaco, monospace',\n];\nconst FONT_SIZES = [\n 8, 9, 10, 11, 12, 14, 15, 16, 18, 24, 30, 36, 48, 60, 72, 96,\n];\nconst px = (sizes: number[]) => sizes.map((size) => `${size}px`);\nconst BORDER_WIDTHS = px(Array.from({ length: 20 }, (_, index) => index + 1));\nconst ASPECTS = ['contain', 'cover', 'fill'];\nconst TRIGGERS = ['BUTTON', 'AUTOMATIC'];\n\nconst color = (description: string, since: string | undefined = '9.0') => ({\n type: 'string',\n example: COLOR,\n description,\n ...(since && { since }),\n});\nconst fonts = (description: string) => ({\n type: 'string',\n values: FONT_FAMILIES,\n description,\n since: '9.0',\n});\n\n// Filter control rows the three controls share.\nconst filterControl = (prefix: string) => ({\n [`${prefix}.columns`]: {\n type: 'Array',\n example: COLUMNS_EXAMPLE,\n description: 'An array of columns where the filter will be applied.',\n since: '9.0',\n },\n [`${prefix}.defaultGrouping`]: {\n type: 'string',\n example: \"A grouping, e.g. 'day', 'month', 'year'\",\n description: `Date grouping selected by the user in interaction mode. Note: ${COLUMN_NOTE} You also have to select a list of valid groupings.`,\n since: '9.0',\n },\n [`${prefix}.groupings`]: {\n type: 'Array',\n example: GROUPINGS_EXAMPLE,\n description: `Date grouping list. Note: ${COLUMN_NOTE}`,\n since: '9.0',\n },\n});\n\nconst notIncluded = (\n type: string,\n description: string | undefined,\n extra: { values?: string[]; example?: string } = {},\n) => ({\n type,\n ...(description && { description }),\n ...extra,\n notes: 'Not included yet',\n audience: 'internal' as const,\n});\n\nexport const DASHBOARD_DEFAULTS: CustomizationDefaultLabelMap = {\n // View list\n assetListViewMode: {\n type: 'string',\n values: ['card', 'table'],\n description: 'Defines the default view mode for the asset list',\n since: '9.0',\n notes: 'If the user switches the view, this will be saved in the local storage',\n },\n\n // View endUser\n dragElement: {\n type: 'boolean',\n description: 'Defines whether elements are draggable by default',\n since: '9.2.PR.3',\n notes: 'These variables were added in https://qrveydev.atlassian.net/browse/RB-6924',\n },\n resizeElement: {\n type: 'boolean',\n description: 'Defines whether elements are resizable by default',\n since: '9.2.PR.3',\n notes: 'These variables were added in https://qrveydev.atlassian.net/browse/RB-6924',\n },\n removeElement: {\n type: 'boolean',\n description: 'Defines whether elements can be removed by default',\n since: '9.2.PR.3',\n notes: 'These variables were added in https://qrveydev.atlassian.net/browse/RB-6924',\n },\n changeLayout: {\n type: 'boolean',\n description:\n 'Defines whether elements can be removed, draggable and resizable by default',\n since: '9.3',\n notes: 'This variable was added in https://qrveydev.atlassian.net/browse/RB-7903',\n },\n unsavedChangesBehavior: {\n type: 'string',\n values: ['prompt', 'discard', 'autoSave'],\n description:\n 'Defines whether unsaved personalization changes are saved, discarded, or prompted by default',\n since: '9.4',\n notes: 'This variable was added in https://qrveydev.atlassian.net/browse/RB-8434',\n },\n\n // Item type textBox\n 'customStyles.text.alignText': {\n type: 'string',\n values: ['left', 'center', 'right', 'justify'],\n description: 'Default align text for the text element',\n since: '9.0',\n },\n 'customStyles.text.backgroundColor': color('Default background color'),\n 'customStyles.text.borderColor': color(\n 'Default border color for the text element',\n ),\n 'customStyles.text.borderStyle': {\n type: 'string',\n values: ['solid', 'dotted', 'dashed', 'double'],\n since: '9.0',\n },\n 'customStyles.text.borderWidth': {\n type: 'string',\n values: BORDER_WIDTHS,\n description: 'Default border width',\n since: '9.0',\n },\n 'customStyles.text.fontColor': color(\n 'Default font color for the text element',\n ),\n 'customStyles.text.fontFamily': fonts('Default font for the text element'),\n 'customStyles.text.fontSize': {\n type: 'string',\n values: px(FONT_SIZES),\n description: 'Default font size for the text element',\n since: '9.0',\n },\n 'customStyles.text.fontStyle': {\n type: 'boolean',\n description: 'Default font style for the text element (italic styling)',\n since: '9.0',\n },\n 'customStyles.text.fontWeight': {\n type: 'boolean',\n description: 'Default font weight for the text element (bold styling)',\n since: '9.0',\n },\n 'customStyles.text.paddingBottom': {\n type: 'number',\n description: 'Default padding bottom for the text element',\n since: '9.0',\n },\n 'customStyles.text.paddingLeft': {\n type: 'number',\n description: 'Default padding left for the text element',\n since: '9.0',\n },\n 'customStyles.text.paddingRight': {\n type: 'number',\n description: 'Default padding right for the text element',\n since: '9.0',\n },\n 'customStyles.text.paddingTop': {\n type: 'number',\n description: 'Default padding top for the text element',\n since: '9.0',\n },\n 'customStyles.text.strike': {\n type: 'boolean',\n description: 'Default strike for the text element',\n since: '9.0',\n },\n 'customStyles.text.underline': {\n type: 'boolean',\n description: 'Default underline for the text element',\n since: '9.0',\n },\n\n // Item type image\n 'customStyles.image.aspect': {\n type: 'string',\n values: ASPECTS,\n description: 'Default aspect for image',\n since: '9.0',\n },\n 'customStyles.image.image': {\n type: 'string',\n example: IMAGE_URL,\n description: 'Image for the item.',\n },\n\n // Item type button\n 'customStyles.button.background': color('Button background color'),\n 'customStyles.button.color': color('Button font color'),\n 'customStyles.button.fontFamily': fonts('Button font family'),\n 'customStyles.button.fontSize': {\n type: 'string',\n description: 'Button font size',\n since: '9.0',\n notes: 'With another value, the closest possible option will be selected',\n },\n 'customStyles.button.label': {\n type: 'string',\n description: 'Text for the element',\n since: '9.0',\n },\n 'customStyles.button.url': {\n type: 'string',\n example: 'Valid url',\n description: 'Url for the button click event',\n since: '9.0',\n },\n\n // Item type header\n 'customStyles.header.layoutWidth': {\n type: 'string',\n values: ['screen', 'canvas'],\n description: 'Width of the header',\n since: '9.0',\n },\n 'customStyles.header.backgroundColor': color(\n 'Background color for the header',\n ),\n 'customStyles.header.height': {\n type: 'number',\n description: 'Default header size',\n since: '9.0',\n notes: 'Value should be between 10 and 300',\n },\n 'customStyles.header.backgroundImageConfig.aspect': {\n type: 'string',\n values: ASPECTS,\n description: 'Default aspect for header background image',\n since: '9.0',\n },\n 'customStyles.header.backgroundImageConfig.image': {\n type: 'string',\n example: IMAGE_URL,\n description: 'Background image for the header.',\n since: '9.0',\n },\n\n // Item type container\n 'customStyles.container.backgroundAspect': {\n type: 'string',\n values: ASPECTS,\n description: \"Sets the size of the element's background image\",\n since: '9.0',\n },\n 'customStyles.container.backgroundColor': color(\n 'The background color of the container',\n ),\n 'customStyles.container.borderColor': color(\n 'The border color of the container',\n ),\n 'customStyles.container.borderRadius': {\n type: 'number',\n description:\n 'The number to round the corners of the container outer border edges',\n since: '9.0',\n },\n 'customStyles.container.borderStyle': {\n type: 'string',\n values: ['none', 'solid', 'dotted'],\n description: 'The style to visualize the border',\n since: '9.0',\n },\n 'customStyles.container.borderWidth': {\n type: 'number',\n description: 'The width number of the border style',\n since: '9.0',\n },\n 'customStyles.container.backgroundImageURL': {\n type: 'string',\n example: IMAGE_URL,\n description: 'Background image for the container.',\n since: '9.0',\n },\n\n // Item type tab\n 'customStyles.tab.backgroundColor': color('Tabs indicator color'),\n 'customStyles.tab.border': color(\"Tabs' border color\"),\n 'customStyles.tab.fontColor': color('Tabs font color'),\n 'customStyles.tab.fontSize': {\n type: 'string',\n values: px(FONT_SIZES.filter((size) => size <= 30)),\n description: 'Tabs font size',\n since: '9.0',\n notes: 'With another value, the closest possible option will be selected',\n },\n 'customStyles.tab.fontType': fonts('Tabs font type'),\n 'customStyles.tab.generalSize': {\n type: 'number',\n description: 'Default size for tabs',\n since: '9.0',\n },\n 'customStyles.tab.name': {\n type: 'string',\n description: 'Label for the name of a new tab.',\n since: '9.0',\n },\n 'customStyles.tab.selectorColor': color('Selected tab indicator color'),\n 'customStyles.tab.widthType': {\n type: 'string',\n values: ['MANUAL', 'AUTOMATIC', 'SAME_SIZE'],\n description: 'Tabs definition for width type',\n since: '9.0',\n },\n\n // Item type input box\n 'customStyles.filterCtrlInputBox.backgroundColor': color(\n 'Background color for the Filter Control',\n ),\n 'customStyles.filterCtrlInputBox.borderColor': color(\n 'Border color for the filter control',\n ),\n 'customStyles.filterCtrlInputBox.buttonBackgroundColor': color(\n 'Background color of the apply filter button in the Filter Control',\n ),\n 'customStyles.filterCtrlInputBox.buttonBorderColor': color(\n 'Border color of the apply filter button in the Filter Control',\n ),\n 'customStyles.filterCtrlInputBox.buttonTextColor': color(\n 'Text color of the apply filter button in the Filter Control',\n ),\n ...filterControl('customStyles.filterCtrlInputBox'),\n 'customStyles.filterCtrlInputBox.defaultValidator': {\n type: 'IFilterValidator',\n example: \"A validator or operator, e.g. 'CONTAINS'\",\n description: `Default validator selected for the Filter Control. Note: ${COLUMN_NOTE} You also have to select a list of valid validators`,\n since: '9.0',\n },\n 'customStyles.filterCtrlInputBox.fontColor': color(\n 'Font color for the filter control label (title)',\n ),\n 'customStyles.filterCtrlInputBox.fontFamily': fonts(\n 'List of font types for the Filter Control',\n ),\n 'customStyles.filterCtrlInputBox.hint': {\n type: 'string',\n example: 'Placeholder text, any text string.',\n description: 'Placeholder text for the filter field.',\n since: '9.0',\n },\n 'customStyles.filterCtrlInputBox.selectorColor': color(\n 'Color of the selector checkbox',\n ),\n 'customStyles.filterCtrlInputBox.title': {\n type: 'string',\n example: ANY_TEXT('Column name'),\n description:\n 'Name definition in the filter control, which can be a column name or any text from the panel configuration.',\n since: '9.0',\n },\n 'customStyles.filterCtrlInputBox.trigger': {\n type: 'string',\n values: TRIGGERS,\n description:\n 'Displays the Apply Filter button or operates automatically',\n since: '9.0',\n },\n 'customStyles.filterCtrlInputBox.triggerButtonLabel': {\n type: 'string',\n example: ANY_TEXT('Filter'),\n description: 'Label to display text on the apply filter button',\n since: '9.0',\n },\n 'customStyles.filterCtrlInputBox.validators': {\n type: 'IFilterValidator[]',\n example: '[\"EQUALS\",\"NOT_EQUAL\"]',\n description: `Object for the validators/operators list. Note: ${COLUMN_NOTE}`,\n since: '9.0',\n },\n\n // Item type multi-select list\n 'customStyles.filterCtrlMultiSelectList.backgroundColor': color(\n 'Background color for the Filter Control',\n ),\n 'customStyles.filterCtrlMultiSelectList.borderColor': color(\n 'Border color for the filter control',\n ),\n 'customStyles.filterCtrlMultiSelectList.buttonBackgroundColor': color(\n 'Default background color for filter buttons',\n ),\n 'customStyles.filterCtrlMultiSelectList.buttonBorderColor': color(\n 'Default border color for filter buttons',\n ),\n 'customStyles.filterCtrlMultiSelectList.buttonTextColor': color(\n 'Default text color for filter buttons',\n ),\n 'customStyles.filterCtrlMultiSelectList.columns': {\n type: 'Array',\n example: COLUMNS_EXAMPLE,\n description:\n 'An array of columns where the filter will be applied. Note: This default requires the fields sourceDataDataset, sourceDataDisplayColumn, and sourceDataValueColumn to be provided through customization to load the data associated.',\n since: '9.0',\n },\n 'customStyles.filterCtrlMultiSelectList.defaultValidator': {\n type: 'IFilterValidator',\n values: ['EQUALS', 'NOT_EQUAL'],\n description: `Default validator/operator to load. Note: ${COLUMN_NOTE}`,\n since: '9.0',\n },\n 'customStyles.filterCtrlMultiSelectList.fontColor': color(\n 'Font color for the filter control label (title)',\n undefined,\n ),\n 'customStyles.filterCtrlMultiSelectList.fontFamily': fonts(\n 'List of font types for Filter Control',\n ),\n 'customStyles.filterCtrlMultiSelectList.hint': {\n type: 'string',\n example: 'Placeholder text for the search input',\n description: 'Default placeholder for the search input field',\n since: '9.0',\n },\n 'customStyles.filterCtrlMultiSelectList.selectorColor': color(\n 'Default color for the selector checkbox',\n ),\n 'customStyles.filterCtrlMultiSelectList.sourceDataDataset': {\n type: 'string',\n example:\n 'Dataset id, should be included in one of the listed inside of the columns attribute',\n description:\n 'Defines the dataset for sub-listing the columns in the sourceDataDisplayColumn attribute, and the sourceDataValueColumn attribute. Required if the columns attribute is defined',\n since: '9.1',\n },\n 'customStyles.filterCtrlMultiSelectList.sourceDataDisplayColumn': {\n type: 'string',\n example:\n 'Column id, should be included in one of the listed inside of the columns attribute',\n description:\n 'Defines the column with the display values for the filter control. Required if the columns attribute is defined.',\n since: '9.1',\n },\n 'customStyles.filterCtrlMultiSelectList.sourceDataValueColumn': {\n type: 'string',\n example:\n 'Column id, should be included in one of the listed inside of the columns attribute',\n description:\n 'Defines the column with the actual filter values for the filter control. Required if the columns attribute is defined.',\n since: '9.1',\n },\n 'customStyles.filterCtrlMultiSelectList.title': {\n type: 'string',\n example: ANY_TEXT('Column name'),\n description:\n 'Defines the label in the filter control, which can be a column name or any text from the panel configuration.',\n since: '9.0',\n },\n 'customStyles.filterCtrlMultiSelectList.trigger': {\n type: 'string',\n values: TRIGGERS,\n description: 'Shows the Apply Filter button or operates automatically',\n since: '9.0',\n },\n 'customStyles.filterCtrlMultiSelectList.triggerButtonLabel': {\n type: 'string',\n example: ANY_TEXT('Filter'),\n description: 'Label to display the text on the apply filter button',\n since: '9.0',\n },\n 'customStyles.filterCtrlMultiSelectList.type': {\n type: 'string',\n values: ['LIST', 'DROPDOWN'],\n description:\n \"Groups of values: 'LIST' or 'DROPDOWN' (should be in uppercase). Other types of values are undefined\",\n since: '9.0',\n },\n 'customStyles.filterCtrlMultiSelectList.validators': {\n type: 'IFilterValidator[]',\n example: '[\"EQUALS\",\"NOT_EQUAL\"]',\n description: `An array of the selected validators for the Filter control. For the multi-select list only EQUALS and NOT_EQUAL are available. Note: ${COLUMN_NOTE}`,\n since: '9.0',\n },\n\n // Item type date picker\n 'customStyles.filterCtrlDatePicker.backgroundColor': color(\n 'Background color for the Filter Control',\n ),\n 'customStyles.filterCtrlDatePicker.borderColor': color(\n 'Border color for the filter control',\n ),\n 'customStyles.filterCtrlDatePicker.buttonBackgroundColor': color(\n 'Background color for the apply filter button',\n ),\n 'customStyles.filterCtrlDatePicker.buttonBorderColor': color(\n 'Border color for the filter button',\n ),\n 'customStyles.filterCtrlDatePicker.buttonTextColor': color(\n 'Text color for the filter button',\n ),\n ...filterControl('customStyles.filterCtrlDatePicker'),\n 'customStyles.filterCtrlDatePicker.columns': {\n type: 'Array',\n example: COLUMNS_EXAMPLE,\n description:\n \"An array of columns where the filter will be applied. The data type of the columns should be date, if not, it won't apply as a valid column\",\n since: '9.0',\n },\n 'customStyles.filterCtrlDatePicker.defaultValidator': {\n type: 'IFilterValidator',\n example: \"e.g. 'AFTER'\",\n description:\n 'Full list of validators: IFilterValidator. Only those associated to dates are valid',\n since: '9.0',\n },\n 'customStyles.filterCtrlDatePicker.fontColor': color(\n 'Font color for the filter control label (title)',\n ),\n 'customStyles.filterCtrlDatePicker.fontFamily': fonts(\n 'List of font types for the filter control',\n ),\n 'customStyles.filterCtrlDatePicker.hint': {\n type: 'string',\n example: 'Placeholder text, any text string.',\n description: 'Default placeholder',\n since: '9.0',\n },\n 'customStyles.filterCtrlDatePicker.selectorColor': color(\n 'Color of the selector checkbox',\n ),\n 'customStyles.filterCtrlDatePicker.title': {\n type: 'string',\n example: ANY_TEXT('Column name'),\n description: 'Default name for the filter control',\n since: '9.0',\n },\n 'customStyles.filterCtrlDatePicker.trigger': {\n type: 'string',\n values: TRIGGERS,\n description:\n 'Default trigger action, either with a button or automatic mode (on blur)',\n since: '9.0',\n },\n 'customStyles.filterCtrlDatePicker.triggerButtonLabel': {\n type: 'string',\n example: ANY_TEXT('Filter'),\n description: 'Default text for the Apply Filter button',\n since: '9.0',\n },\n 'customStyles.filterCtrlDatePicker.validators': {\n type: 'IFilterValidator[]',\n example: '[\"EQUALS\",\"AFTER\"]',\n description: `Object to list the validators/operators. Note: ${COLUMN_NOTE}`,\n since: '9.0',\n },\n\n // Filter panel\n 'filterPanel.defaultView': {\n type: 'string',\n values: ['expanded', 'collapsed'],\n description:\n 'Default value for collapsing or expanding the filter panel',\n since: '9.0',\n },\n 'filterPanel.displayIcon': {\n type: 'boolean',\n description:\n 'Default value for the display icon option in the filter panels settings',\n since: '9.0',\n },\n 'filterPanel.displayColor': {\n type: 'boolean',\n description:\n 'Default value for the display color option in the filter panels settings',\n since: '9.0',\n },\n 'filterPanel.scopeDashboardColor': color(\n 'Default color for filters created under the dashboard scope when displayed inside the filter panel',\n '9.4',\n ),\n 'filterPanel.scopeTabColor': color(\n 'Default color for filters created under the tab scope when displayed inside the filter panel',\n '9.4',\n ),\n 'filterPanel.scopePanelColor': color(\n 'Default color for filters created under the panel scope when displayed inside the filter panel',\n '9.4',\n ),\n 'filterPanel.scopeContainerColor': color(\n 'Default color for filters created under the container scope when displayed inside the filter panel',\n '9.4',\n ),\n\n // Item types line, rectangle and ellipse: the sheet marks them \"Not included yet\".\n // The sheet describes the next two colors as \"Color of the selector checkbox\", copied from the filter controls.\n 'customStyles.line.lineColor': notIncluded('string', undefined, {\n example: COLOR,\n }),\n 'customStyles.line.lineWidth': notIncluded(\n 'number',\n 'Specifies the initial width of the line',\n { example: 'Range: 0-20' },\n ),\n 'customStyles.line.lineStyle': notIncluded(\n 'string',\n 'Default line type to load',\n { values: ['solid', 'dotted', 'dashed', 'double'] },\n ),\n 'customStyles.rectangle.fillColor': notIncluded(\n 'string',\n 'Default background color for rectangle',\n { example: COLOR },\n ),\n 'customStyles.rectangle.borderColor': notIncluded(\n 'string',\n 'Border color for the rectangle',\n { example: COLOR },\n ),\n 'customStyles.rectangle.borderWidth': notIncluded(\n 'number',\n 'Specifies the initial width of the border',\n { example: 'Range: 0-20' },\n ),\n 'customStyles.rectangle.borderStyle': notIncluded(\n 'string',\n 'Default border type to load',\n { values: ['none', 'solid', 'dotted', 'dashed', 'double'] },\n ),\n 'customStyles.rectangle.roundCornerTopRight': notIncluded(\n 'number',\n 'Defines the rounding radius for the top-right corner',\n { example: '0 - no upper limit' },\n ),\n 'customStyles.rectangle.roundCornerTopLeft': notIncluded(\n 'number',\n 'Defines the rounding radius for the top-left corner',\n { example: '0 - no upper limit' },\n ),\n 'customStyles.rectangle.roundCornerBottomRight': notIncluded(\n 'number',\n 'Defines the rounding radius for the bottom-right corner',\n { example: '0 - no upper limit' },\n ),\n 'customStyles.rectangle.roundCornerBottomLeft': notIncluded(\n 'number',\n 'Defines the rounding radius for the bottom-left corner',\n { example: '0 - no upper limit' },\n ),\n 'customStyles.ellipse.borderColor': notIncluded('string', undefined, {\n example: COLOR,\n }),\n 'customStyles.ellipse.borderWidth': notIncluded(\n 'number',\n 'Specifies the initial width of the border',\n { example: 'Range: 0-20' },\n ),\n 'customStyles.ellipse.borderStyle': notIncluded(\n 'string',\n 'Default border type to load',\n { values: ['solid', 'dotted', 'dashed', 'double'] },\n ),\n 'customStyles.ellipse.fillColor': notIncluded(\n 'string',\n 'Default background color for ellipse',\n { example: COLOR },\n ),\n\n // Additional options\n 'downloadModal.exportVersion': {\n type: 'string',\n values: ['saved', 'unsaved'],\n description: 'Defines the default value to export version',\n since: '9.3',\n notes: \"If the default value is set to 'unsaved', but the export modal is opened with no pending changes, the default selected option should switch to 'saved'.\",\n },\n 'downloadModal.subscribeMyself': {\n type: 'boolean',\n description:\n 'Defines whether the \"Subscribe myself\" checkbox starts checked when creating a scheduled export. If downloadModal.qSubscribeMyself is hidden, it also defines whether the creator is subscribed',\n since: '9.6',\n notes: 'The default value is true. This variable was added in https://qrveydev.atlassian.net/browse/RB-9606',\n },\n 'downloadModal.pageSize': {\n type: 'string',\n values: ['LEGACY', 'LETTER', 'A4', 'A3', 'LEGAL', 'TABLOID'],\n description:\n 'Defines the page size Advanced Settings preselects for chart PDF exports. Case-sensitive; an invalid value is ignored',\n since: '9.6',\n },\n 'downloadModal.orientation': {\n type: 'string',\n values: ['PORTRAIT', 'LANDSCAPE'],\n description:\n 'Defines the orientation Advanced Settings preselects for chart PDF exports. Case-sensitive; an invalid value is ignored',\n since: '9.6',\n },\n 'duplicateModal.duplicateCharts': {\n type: 'boolean',\n description:\n \"If the dashboard's charts are duplicated. true = create independent copies of the charts for the new dashboard (edits to either dashboard's charts stay isolated). false = the new dashboard points to the original charts (edits made through either dashboard are reflected in both).\",\n since: '9.5',\n },\n 'duplicateModal.duplicateFilters': {\n type: 'boolean',\n description:\n \"If the dashboard's filters are duplicated. true = create independent copies of the filters for the new dashboard. false = the new dashboard does not get its own copies of the filters.\",\n since: '9.5',\n },\n 'duplicateModal.duplicateDashActions': {\n type: 'boolean',\n description:\n 'If the dashboard-level actions are duplicated. true = create independent copies of the actions for the new dashboard. false = the new dashboard does not get its own copies of the actions.',\n since: '9.5',\n },\n\n // Validated paths no documented default reaches: DashboardX reads the filter controls' defaults under\n // customStyles.filterCtrl* (vem-item.manager), so these validators never run on what partners write.\n 'customStyles.filterList.type': {\n type: 'string',\n values: ['LIST', 'DROPDOWN'],\n audience: 'internal',\n },\n 'customStyles.filterList.triggerType': {\n type: 'string',\n values: TRIGGERS,\n audience: 'internal',\n },\n 'customStyles.filterInput.triggerType': {\n type: 'string',\n values: TRIGGERS,\n audience: 'internal',\n },\n 'customStyles.filterDate.triggerType': {\n type: 'string',\n values: TRIGGERS,\n audience: 'internal',\n },\n};\n","import { CustomizationLabelMap } from '../metadata.models';\n\n// Initial English labels for the Admin Center builder, written by dev for review with Product (D20). Description, since and\n// notes come from the \"Customization keys\" tab of the DX Widget Config sheet (RB-7258).\n// Looked up by full key path first, then by leaf id, so a key repeated in card and table shares one label.\nexport const DASHBOARD_LABELS: CustomizationLabelMap = {\n // Sections\n navBar: {\n label: 'Navigation bar',\n description: 'The main top bar',\n since: '9.0',\n },\n assetList: {\n label: 'Dashboard list',\n description: 'The list options',\n since: '9.0',\n },\n 'assetList.asset': {\n label: 'Dashboard item',\n description: 'The options inside the asset concept',\n since: '9.0',\n },\n 'assetList.asset.optionMenu': {\n label: 'Dashboard options menu',\n description: 'The list options for the menu',\n since: '9.0',\n },\n 'assetList.asset.card': {\n label: 'Card view',\n description:\n 'Configuration key for the card view that displays summarized dashboard information.',\n since: '9.2.PR.3',\n notes: 'Main container for dashboard details in card format.',\n },\n 'assetList.asset.table': {\n label: 'Table view',\n description:\n 'Configuration key for the table view that lists dashboards and their details.',\n since: '9.2.PR.3',\n notes: 'Main container for table columns and related UI elements.',\n },\n controlBarLeft: {\n label: 'Left control bar',\n description: 'The list options for the header',\n since: '9.0',\n },\n controlBarRight: {\n label: 'Right control bar',\n description: 'The list of options on the right',\n since: '9.0',\n },\n header: {\n label: 'Dashboard header',\n description:\n 'The header where is located the dashboard name, description and favorite',\n since: '9.0',\n },\n 'header.qOptionsMenu': {\n label: 'Dashboard options menu',\n description:\n 'The whole three-dot menu: removing it takes its four children without naming them',\n },\n // The sheet has no text of their own, and their leaf ids carry the list menu's (\"...inside the menu for the list\").\n 'header.qOptionsMenu.qDuplDash': { label: 'Duplicate dashboard' },\n 'header.qOptionsMenu.qDeleteDash': { label: 'Delete dashboard' },\n menuBar: {\n label: 'Menu bar',\n description: 'The menu',\n since: '9.0',\n notes: 'If the toolbar and the menu are hidden, the entire bar will be hidden',\n },\n 'menuBar.file': {\n label: 'File menu',\n description: 'The file menu',\n since: '9.0',\n },\n 'menuBar.edit': {\n label: 'Edit menu',\n description: 'The edit menu',\n since: '9.0',\n },\n 'menuBar.insert': {\n label: 'Insert menu',\n description: 'The insert menu',\n since: '9.0',\n },\n toolBar: {\n label: 'Toolbar',\n description: 'The toolbar section',\n since: '9.0',\n notes: 'If the toolbar and the menu are hidden, the entire bar will be hidden',\n },\n configPanel: {\n label: 'Configuration panel',\n description: 'The configuration panel for the items and containers',\n since: '9.0',\n },\n filterPanel: {\n label: 'Filter panel',\n description: 'The filters panel',\n since: '9.0',\n },\n downloadModal: {\n label: 'Download modal',\n description: 'The options associated to the download modal',\n since: '9.0',\n },\n canvas: { label: 'Canvas' },\n duplicateModal: {\n label: 'Duplicate modal',\n description:\n 'Controls the \"Duplicate Dashboard\" options modal shown when duplicating a dashboard.',\n since: '9.5',\n notes: 'If an option is removed, for example remove: [\"duplicateModal\"], it does not mean the duplicate functionality is removed. Only the modal will be skipped, and the duplication process will proceed using the specified default values.',\n },\n 'duplicateModal.options': { label: 'Duplicate options' },\n grid: {\n label: 'Grid',\n description: 'The grid menu',\n since: '9.0',\n },\n 'toolBar.grid': {\n label: 'Grid',\n description: 'The grid group inside the toolbar',\n since: '9.0',\n },\n dashFilterScope: {\n label: 'Dashboard filters',\n description: 'Settings associated to the dashboard scope',\n since: '9.0',\n },\n tabFilterScope: {\n label: 'Tab filters',\n description: 'Settings associated to the tab scope',\n since: '9.0',\n },\n containerFilterScope: {\n label: 'Container filters',\n description: 'Settings associated to the container scope',\n since: '9.4',\n },\n panelFilterScope: {\n label: 'Panel filters',\n description: 'Settings associated to the chart panel scope',\n since: '9.0',\n },\n viewOnlyFilterScope: {\n label: 'View-only filters',\n description:\n 'This key controls the display of view-only filters in the dashboard’s filter panel.',\n since: '9.4',\n },\n edit: { label: 'Edit menu' },\n file: { label: 'File menu' },\n insert: { label: 'Insert menu' },\n options: { label: 'Options' },\n timezone: {\n label: 'Timezone',\n description: 'The timezone label',\n since: '9.0',\n },\n\n // Navigation and list\n qAppTitle: {\n label: 'Application title',\n description: 'The app title in the main top bar',\n since: '9.0',\n },\n qBackButton: {\n label: 'Back button',\n description: 'The back button on the nav bar',\n since: '9.0',\n notes: 'Only available when a dashboard is selected',\n },\n qQvTokenExpiredMessage: {\n label: 'Session expired message',\n description:\n 'Controls the visibility of the error message displayed to users when the security token (qv_token) expires while using the embedded dashboard.',\n since: '9.3',\n },\n qGoToDashBackButton: {\n label: 'Back to source dashboard button',\n description:\n 'Hide back button (arrow) for the Go To Dashboard action. Displayed in the target dashboard of a Go To Dashboard action, this button takes the user back to the original dashboard.',\n since: '9.3',\n },\n qCreateDash: {\n label: 'Create dashboard',\n description: 'The create button for the asset list',\n since: '9.0',\n },\n qSwitchView: {\n label: 'Card/table switch',\n description: 'The switch button on the asset list',\n since: '9.0',\n },\n qFilterBy: {\n label: 'Filter by',\n description: 'The filter by control',\n since: '9.0',\n },\n qSortBy: {\n label: 'Sort by',\n description: 'The sort by control',\n since: '9.0',\n notes: 'Only available for the card mode on the assetList',\n },\n qSearch: {\n label: 'Search',\n description: 'The search input box',\n since: '9.0',\n },\n qSelectColumn: {\n label: 'Column selection',\n description: 'The select columns dropdown',\n since: '9.0',\n notes: 'Only available for the table mode on the assetList',\n },\n qStatus: {\n label: 'Status',\n description:\n 'Refers to the text element that displays the current publication status of the dashboard.',\n since: '9.2.PR.3',\n notes: 'Appears as “Status” (e.g., Published, Modified, Draft).',\n },\n 'assetList.asset.table.qStatus': {\n label: 'Status',\n description:\n 'Refers to the column that indicates the current publication status of the dashboard.',\n since: '9.2.PR.3',\n notes: 'Appears as “Status”',\n },\n 'controlBarRight.qStatus': {\n label: 'Status',\n description: 'The status label for the dashboard',\n since: '9.0',\n },\n qPreview: {\n label: 'Preview',\n description: 'Allows the preview mode visualization',\n since: '9.0',\n },\n qPublish: {\n label: 'Publish',\n description: 'The button for publishing a new version of the dashboard',\n since: '9.0',\n },\n qUnpublish: {\n label: 'Unpublish',\n description: 'The button for unpublishing a dashboard',\n since: '9.2',\n },\n qDesign: {\n label: 'Design',\n description: 'The design button inside the edit bar',\n since: '9.0',\n },\n qEditDash: {\n label: 'Edit dashboard',\n description: 'The edit option inside the menu for the list',\n since: '9.0',\n },\n qUseDash: {\n label: 'Use dashboard',\n description: 'The use option inside the menu for the list',\n since: '9.2',\n },\n qRenameDash: {\n label: 'Rename dashboard',\n description: 'The rename option inside the menu for the list',\n since: '9.0',\n },\n qDeleteDash: {\n label: 'Delete dashboard',\n description: 'The delete option inside the menu for the list',\n since: '9.0',\n },\n qManageTags: {\n label: 'Manage tags',\n description: '\"Manage Tags\" in the list\\'s three-dot menu',\n },\n 'header.qOptionsMenu.qManageTags': {\n label: 'Manage tags',\n description: 'Only \"Manage Tags\" inside that menu',\n },\n 'menuBar.file.qManageTags': {\n label: 'Manage tags',\n description: '\"Manage Tags\" in the File menu',\n },\n qTags: {\n label: 'Tags',\n description: 'The tag row on the card',\n },\n 'assetList.asset.table.qTags': {\n label: 'Tags',\n description: 'The Tags column and its entry in the column picker',\n },\n 'header.qTags': {\n label: 'Tags',\n description:\n 'Tags in the builder header. Hiding it also cancels the request to load the tags',\n },\n qFilterByTags: {\n label: 'Filter by tags',\n description: \"The toolbar's tag filter. Independent of showing tags\",\n },\n qDuplDash: {\n label: 'Duplicate dashboard',\n description: 'The duplicate option inside the menu for the list',\n since: '9.0',\n },\n qDuplDashAndCharts: {\n label: 'Duplicate dashboard and charts',\n description: 'The duplicate option inside the menu for the list',\n since: '9.2.PR.4',\n notes: 'Deprecated in version 9.5',\n },\n qManageSharing: { label: 'Manage sharing' },\n qFavorite: {\n label: 'Favorite',\n description:\n 'Refers to the icon used to mark or unmark a dashboard as favorite.',\n since: '9.2.PR.3',\n notes: 'Shown as a star icon at the top of the card.',\n },\n 'assetList.asset.table.qFavorite': {\n label: 'Favorite',\n description:\n 'Refers to the column that displays the favorite (star) icon of each dashboard.',\n since: '9.2.PR.3',\n notes: 'Not included in the dropdown but can still be configured in the table.',\n },\n qCreatedDate: {\n label: 'Created date',\n description:\n 'Refers to the text element that shows the creation date of the dashboard.',\n since: '9.2.PR.3',\n notes: 'Appears as “Created” in the card details.',\n },\n 'assetList.asset.table.qCreatedDate': {\n label: 'Created date',\n description:\n 'Refers to the column that shows the creation date of the dashboard.',\n since: '9.2.PR.3',\n notes: 'Appears as “Created” in the table.',\n },\n qLastModifDate: {\n label: 'Last modified date',\n description:\n 'Refers to the text element that shows the last modification date of the dashboard.',\n since: '9.2.PR.3',\n notes: 'Appears as “Last Modified” in the card details.',\n },\n 'assetList.asset.table.qLastModifDate': {\n label: 'Last modified date',\n description:\n 'Refers to the column that shows the last modification date of the dashboard.',\n since: '9.2.PR.3',\n notes: 'Appears as “Last Modified” in the table.',\n },\n qNumberOfCharts: {\n label: 'Number of charts',\n description:\n 'Refers to the text element that shows how many charts the dashboard contains.',\n since: '9.2.PR.3',\n notes: 'Appears as “Number of Charts”',\n },\n 'assetList.asset.table.qNumberOfCharts': {\n label: 'Number of charts',\n description:\n 'Refers to the column that displays the number of charts contained in the dashboard.',\n since: '9.2.PR.3',\n notes: 'Appears as “Number of Charts”',\n },\n qSharing: {\n label: 'Sharing',\n description:\n 'Refers to the text element that shows the dashboard’s privacy or sharing configuration.',\n since: '9.2.PR.3',\n notes: 'Appears as “Privacy”',\n },\n 'assetList.asset.table.qSharing': {\n label: 'Sharing',\n description:\n 'Refers to the column that displays the privacy or sharing configuration of the dashboard.',\n since: '9.2.PR.3',\n notes: 'Appears as “Privacy”',\n },\n qSharingIcon: { label: 'Sharing icon' },\n qOwner: {\n label: 'Owner',\n description:\n 'Refers to the text element that displays the owner’s email or name.',\n since: '9.2.PR.3',\n notes: 'Appears as “Owner”',\n },\n 'assetList.asset.table.qOwner': {\n label: 'Owner',\n description:\n 'Refers to the column that displays the dashboard owner information (name or email).',\n since: '9.2.PR.3',\n notes: 'Appears as “Owner”',\n },\n qDescription: {\n label: 'Description',\n description:\n 'Refers to the text element that displays the dashboard description.',\n since: '9.2.PR.3',\n notes: 'Appears as “Description” or “No description”',\n },\n 'assetList.asset.table.qDescription': {\n label: 'Description',\n description:\n 'Refers to the column that displays the dashboard description text.',\n since: '9.2.PR.3',\n notes: 'Appears as “Description”',\n },\n\n // Header\n qDashFavorite: {\n label: 'Favorite',\n description: 'The dashboard favorite option',\n since: '9.0',\n },\n qDashName: {\n label: 'Dashboard name',\n description: 'The dashboard name',\n since: '9.0',\n },\n qDashDesc: {\n label: 'Dashboard description',\n description: 'The dashboard description',\n since: '9.0',\n },\n\n // Menu bar\n qMnuCreateDash: {\n label: 'New dashboard',\n description: 'The new dashboard option inside the file menu',\n since: '9.0',\n notes: 'Only available if the _in_composer property is true',\n },\n qMnuOpenDash: {\n label: 'Open dashboard',\n description: 'The open dashboard option inside the file menu',\n since: '9.0',\n notes: 'Only available if the _in_composer property is true',\n },\n qMnuDuplicateDash: {\n label: 'Duplicate dashboard',\n description: 'The duplicate dashboard option inside the file menu',\n since: '9.0',\n notes: 'Only available if the _in_composer property is true',\n },\n qMnuDuplicateDashAndCharts: {\n label: 'Duplicate dashboard and charts',\n description:\n 'The duplicate dashboard and charts option inside the file menu',\n since: '9.2.PR.4',\n notes: 'Only available if the _in_composer property is true, Deprecated in version 9.5',\n },\n qMnuCanvasSize: {\n label: 'Canvas size',\n description: 'The canvas size option inside the file menu',\n since: '9.0',\n notes: 'Only available if the canvas mode is Fixed',\n },\n qMnuThemes: {\n label: 'Themes',\n description: 'The themes option inside the file menu',\n since: '9.0',\n },\n qMnuDeleteDash: {\n label: 'Delete dashboard',\n description: 'The delete dashboard option inside the file menu',\n since: '9.0',\n notes: 'Only available if the _in_composer property is true',\n },\n qMnuDownloadDash: {\n label: 'Download',\n description: 'Download options for the dashboard',\n since: '9.0',\n },\n qCreateDataset: {\n label: 'Custom dataset',\n description: 'The custom dataset options inside file menu',\n since: '9.0',\n },\n 'toolBar.qCreateDataset': {\n label: 'Custom dataset',\n description: 'Custom Dataset options',\n since: '9.0',\n },\n qCreateCustomDataset: {\n label: 'Create custom dataset',\n description: 'The create custom dataset option inside the file menu',\n since: '9.2',\n },\n 'toolBar.qCreateDataset.qCreateCustomDataset': {\n label: 'Create custom dataset',\n description: 'The option to create a new custom dataset',\n since: '9.2',\n },\n qViewCustomDataset: {\n label: 'View custom dataset',\n description: 'The view custom datasets option inside the file menu',\n since: '9.2',\n },\n 'toolBar.qCreateDataset.qViewCustomDataset': {\n label: 'View custom dataset',\n description: 'The option for view custom datasets',\n since: '9.2',\n },\n qUndoRedo: {\n label: 'Undo / redo',\n description: 'The undo/redo options',\n since: '9.0',\n },\n qCopyElement: {\n label: 'Copy',\n description: 'The copy option inside the edit menu',\n since: '9.0',\n notes: 'The option is available using the CTRL + C shortcut',\n },\n qPasteElement: {\n label: 'Paste',\n description: 'The paste option inside the edit menu',\n since: '9.0',\n notes: 'The option is available using the CTRL + V shortcut',\n },\n qCutElement: {\n label: 'Cut',\n description: 'The cut option inside the edit menu',\n since: '9.0',\n notes: 'The option is available using the CTRL + X shortcut',\n },\n qRemoveElement: {\n label: 'Remove',\n description: 'The remove option inside the edit menu',\n since: '9.0',\n notes: 'The option is available using the Backspace/Supr shortcut',\n },\n qDuplElement: {\n label: 'Duplicate',\n description: 'The duplicate option inside the edit menu',\n since: '9.0',\n notes: 'The option is available using the CTRL + D shortcut',\n },\n qSelectAllElem: {\n label: 'Select all',\n description: 'The select all option inside the edit menu',\n since: '9.0',\n notes: 'The option is available using the CTRL + Shift + K shortcut',\n },\n qSelectAllContElem: { label: 'Select all in container' },\n qMnuInsertChart: {\n label: 'Chart',\n description: 'The insert chart group inside the insert menu',\n since: '9.0',\n },\n qMnuExistingChart: {\n label: 'Existing chart',\n description:\n 'The option for inserting existing chart from the gallery for the insert menu',\n since: '9.0',\n },\n qMnuNewChart: {\n label: 'New chart',\n description:\n 'The option for inserting a new chart from the chart builder for the insert menu',\n since: '9.0',\n },\n qMnuNewChartAI: {\n label: 'New chart with AI',\n description: 'The option for inserting a new chart from the AI modal',\n since: '9.1',\n },\n qMnuInsertFilterCtrl: {\n label: 'Filter control',\n description:\n 'The insert filter control elements group inside the insert menu',\n since: '9.0',\n },\n qMnuDatePicker: {\n label: 'Date picker',\n description: 'The option for inserting a new date picker',\n since: '9.0',\n },\n qMnuInputBox: {\n label: 'Input box',\n description: 'The option for inserting a new input box',\n since: '9.0',\n },\n qMnuMultiSelectList: {\n label: 'Multi-select list',\n description:\n 'The option for inserting a new value list - Multiple selection',\n since: '9.0',\n },\n qMnuSingleSelectList: {\n label: 'Single-select list',\n description:\n 'The option for inserting a new value list - Single selection',\n since: '9.4',\n },\n qMnuInsertShape: {\n label: 'Shape',\n description: 'The insert shapes option inside the insert menu',\n },\n qMnuLine: {\n label: 'Line',\n description: 'The option for inserting a new line',\n },\n qMnuRectangle: {\n label: 'Rectangle',\n description: 'The option for inserting a new rectangle',\n },\n qMnuEllipse: {\n label: 'Ellipse',\n description: 'The option for inserting a new ellipse',\n },\n qMnuInsertText: {\n label: 'Text',\n description: 'The option for inserting a text element',\n since: '9.0',\n },\n qMnuInsertImage: {\n label: 'Image',\n description: 'The option for inserting an image element',\n since: '9.0',\n },\n qMnuInsertButton: {\n label: 'Button',\n description: 'The option for inserting a button element',\n since: '9.0',\n },\n qMnuInsertContainer: {\n label: 'Container',\n description: 'The option for inserting a container element',\n since: '9.1',\n },\n qMnuInsertHeader: {\n label: 'Header',\n description: 'The option for inserting a header container',\n since: '9.0',\n },\n qMnuInsertTabs: {\n label: 'Tabs',\n description: 'The option for adding tabs to the dashboard',\n since: '9.0',\n },\n qMnuArrange: {\n label: 'Arrange',\n description: 'The arrange menu',\n since: '9.0',\n },\n qMnuBringToFront: {\n label: 'Bring to front',\n description:\n 'The option for sending an element to the front from the arrange menu',\n since: '9.0',\n },\n qMnuSendToBack: {\n label: 'Send to back',\n description:\n 'The option for sending an element to the back from the arrange menu',\n since: '9.0',\n },\n qMnuAlign: {\n label: 'Align',\n description: 'The align group inside the arrange menu',\n since: '9.0',\n },\n qMnuDisplayGrid: {\n label: 'Display grid',\n description: 'The hide/display grid option inside the grid menu',\n since: '9.0',\n },\n qMnuSnapToGrid: {\n label: 'Snap to grid',\n description: 'The snap to grid option inside the grid menu',\n since: '9.0',\n },\n qMnuSwitchGrid: {\n label: 'Switch grid',\n description: 'The switch grid type option inside the grid menu',\n since: '9.0',\n },\n\n // Toolbar\n qCanvasSize: {\n label: 'Canvas size',\n description: 'The canvas size option inside the toolbar',\n since: '9.0',\n },\n qInsertChart: {\n label: 'Insert chart',\n description: 'The insert chart group inside the toolbar',\n since: '9.0',\n },\n qExistingChart: {\n label: 'Existing chart',\n description:\n 'The option for inserting existing chart from the gallery for the toolbar',\n since: '9.0',\n },\n qNewChart: {\n label: 'New chart',\n description:\n 'The option for inserting a new chart from the chart builder for the toolbar',\n since: '9.0',\n },\n qNewChartAI: {\n label: 'New chart with AI',\n description: 'The option for inserting a new chart from the AI modal',\n since: '9.1',\n },\n qInsertFilterCtrl: {\n label: 'Insert filter control',\n description:\n 'The insert filter control elements group inside the toolbar',\n since: '9.0',\n },\n qDatePicker: {\n label: 'Date picker',\n description: 'The option for inserting a new date picker',\n since: '9.0',\n },\n qInputBox: {\n label: 'Input box',\n description: 'The option for inserting a new input box',\n since: '9.0',\n },\n qMultiSelectList: {\n label: 'Multi-select list',\n description:\n 'The option for inserting a new value list - Multiple selection',\n since: '9.0',\n },\n qSingleSelectList: {\n label: 'Single-select list',\n description:\n 'The option for inserting a new value list - Single selection',\n since: '9.4',\n },\n qInsertShape: { label: 'Insert shape' },\n qLine: {\n label: 'Line',\n description: 'The option for inserting a new line',\n },\n qRectangle: {\n label: 'Rectangle',\n description: 'The option for inserting a new rectangle',\n },\n qEllipse: {\n label: 'Ellipse',\n description: 'The option for inserting a new ellipse',\n },\n qSnapToGrid: {\n label: 'Snap to grid',\n description: 'The snap to grid option inside the toolbar',\n since: '9.0',\n },\n qDisplayGrid: {\n label: 'Display grid',\n description: 'The hide/display grid option inside the toolbar',\n since: '9.0',\n },\n qSwitchGrid: {\n label: 'Switch grid',\n description: 'The switch grid type option inside the toolbar',\n since: '9.0',\n },\n qDownloadDash: {\n label: 'Download',\n description: 'Download options for the dashboard',\n since: '9.0',\n },\n qDashPDF: {\n label: 'PDF',\n description: 'PDF download option',\n since: '9.0',\n },\n qDashCSV: {\n label: 'CSV',\n description: 'CSV download option',\n since: '9.0',\n },\n qDashExcel: {\n label: 'Excel',\n description: 'Excel download option',\n since: '9.0',\n },\n qDashDataset: {\n label: 'Dataset',\n description: 'Dataset download option',\n since: '9.2',\n },\n qArrange: {\n label: 'Arrange',\n description: 'The arrange group inside the toolbar',\n since: '9.0',\n },\n qBringToFront: {\n label: 'Bring to front',\n description:\n 'The option for sending an element to the front from the toolbar',\n since: '9.0',\n },\n qSendToBack: {\n label: 'Send to back',\n description:\n 'The option for sending an element to the back from the toolbar',\n since: '9.0',\n },\n qResponsiveView: {\n label: 'Responsive view',\n description: 'The responsive view group in the toolbar',\n since: '9.0',\n },\n qDesktop: {\n label: 'Desktop',\n description: 'The desktop view for the dashboard',\n since: '9.0',\n },\n qTablet: {\n label: 'Tablet',\n description: 'The tablet view for the dashboard',\n since: '9.0',\n },\n qMobile: {\n label: 'Mobile',\n description: 'The mobile view for the dashboard',\n since: '9.0',\n },\n qBreakpoints: {\n label: 'Breakpoints',\n description:\n 'The option to open the modal for modifying the breakpoints',\n since: '9.0',\n notes: 'Only available in responsive canvas',\n },\n qAlign: {\n label: 'Align',\n description: 'The align group inside the toolbar',\n since: '9.0',\n },\n qAlignRight: {\n label: 'Align right',\n description: 'The option for aligning to the right',\n since: '9.0',\n },\n qAlignLeft: {\n label: 'Align left',\n description: 'The option for aligning to the left',\n since: '9.0',\n },\n qAlignCenter: {\n label: 'Align center',\n description: 'The option for aligning to the center',\n since: '9.0',\n },\n qAlignTop: {\n label: 'Align top',\n description: 'The option for aligning to the top',\n since: '9.0',\n },\n qAlignMiddle: {\n label: 'Align middle',\n description: 'The option for aligning to the middle',\n since: '9.0',\n },\n qAlignBottom: {\n label: 'Align bottom',\n description: 'The option for aligning to the bottom',\n since: '9.0',\n },\n qInsertText: {\n label: 'Insert text',\n description: 'The option for inserting a text element',\n since: '9.0',\n },\n qInsertImage: {\n label: 'Insert image',\n description: 'The option for inserting an image element',\n since: '9.0',\n },\n qInsertButton: {\n label: 'Insert button',\n description: 'The option for inserting a button element',\n since: '9.0',\n },\n qInsertContainer: {\n label: 'Insert container',\n description: 'The option for inserting a container element',\n since: '9.1',\n },\n qRespGridMargins: {\n label: 'Responsive grid margins',\n description: 'The configuration for margins',\n since: '9.0',\n notes: 'Only available in responsive canvas',\n },\n qRespGridColumns: {\n label: 'Responsive grid columns',\n description: 'The configuration for number of columns',\n since: '9.0',\n notes: 'Only available in responsive canvas',\n },\n qThemes: {\n label: 'Themes',\n description: 'The themes option inside the toolbar',\n since: '9.0',\n },\n qDashVersion: {\n label: 'Dashboard version',\n description: 'The dashboard version indicator',\n since: '9.0',\n },\n qGetDashVersion: {\n label: 'Change version',\n description: 'The button for switching between dashboard versions',\n since: '9.0',\n },\n qSourceDashBanner: {\n label: 'Personalization banner',\n description: 'Control the EUP Source Dashboard banner visibility',\n since: '9.3',\n },\n qHiddenItems: {\n label: 'Hidden items',\n description: 'The button for the hidden elements',\n since: '9.0',\n },\n qDiscard: {\n label: 'Discard changes',\n description: 'The button for discarding changes',\n since: '9.0',\n },\n 'toolBar.qDiscard': {\n label: 'Discard changes',\n description: 'The discard button',\n since: '9.0',\n },\n qSave: {\n label: 'Save changes',\n description: 'The save button',\n since: '9.0',\n },\n qSwitchMode: {\n label: 'Interact / design switch',\n description:\n 'The button for switching between dashboard mode (interact or design)',\n since: '9.2',\n },\n qHideToolBar: {\n label: 'Hide toolbar',\n description: 'The hide toolbar button',\n since: '9.0',\n },\n qDownloadList: {\n label: 'Download list',\n description: 'List of export statuses',\n since: '9.3',\n },\n qChangeLayout: {\n label: 'Change layout',\n description:\n 'Controls only if the Change Layout button or option is displayed in the UI',\n since: '9.3',\n },\n\n // Filter panel\n qAddFilter: {\n label: 'Add filter',\n description: 'The adding button for the filter panel',\n since: '9.0',\n },\n qEnabDisabAllFilters: {\n label: 'Enable / disable all filters',\n description: 'The option for enable/disable all the filters',\n since: '9.0',\n },\n qDeleteAllFilters: {\n label: 'Delete all filters',\n description: 'The option for removing all the filters',\n since: '9.0',\n },\n qFilterSettings: {\n label: 'Filter settings',\n description: 'The settings buttons in the filter panel',\n since: '9.0',\n },\n qEditFilter: {\n label: 'Edit filter',\n description: 'The edit button in the dashboard scope',\n since: '9.0',\n },\n 'filterPanel.tabFilterScope.qEditFilter': {\n label: 'Edit filter',\n description: 'The edit button in the tab scope',\n since: '9.0',\n },\n 'filterPanel.containerFilterScope.qEditFilter': {\n label: 'Edit filter',\n description: 'The edit button in the container scope',\n since: '9.4',\n },\n 'filterPanel.panelFilterScope.qEditFilter': {\n label: 'Edit filter',\n description: 'The edit button in the chart panel scope',\n since: '9.0',\n },\n qEnabDisabFilter: {\n label: 'Enable / disable filter',\n description: 'The enable/disable button in the dashboard scope',\n since: '9.0',\n },\n 'filterPanel.tabFilterScope.qEnabDisabFilter': {\n label: 'Enable / disable filter',\n description: 'The enable/disable button in the tab scope',\n since: '9.0',\n },\n 'filterPanel.containerFilterScope.qEnabDisabFilter': {\n label: 'Enable / disable filter',\n description: 'The enable/disable button in the container scope',\n since: '9.4',\n },\n 'filterPanel.panelFilterScope.qEnabDisabFilter': {\n label: 'Enable / disable filter',\n description: 'The enable/disable button in the chart panel scope',\n since: '9.0',\n },\n qDeleteFilter: {\n label: 'Delete filter',\n description: 'The remove option in the dashboard scope',\n since: '9.0',\n },\n 'filterPanel.tabFilterScope.qDeleteFilter': {\n label: 'Delete filter',\n description: 'The remove option in the tab scope',\n since: '9.0',\n },\n 'filterPanel.containerFilterScope.qDeleteFilter': {\n label: 'Delete filter',\n description: 'The remove option in the container scope',\n since: '9.4',\n },\n 'filterPanel.panelFilterScope.qDeleteFilter': {\n label: 'Delete filter',\n description: 'The remove option in the chart panel scope',\n since: '9.0',\n },\n\n // Download modal\n qScheduleOption: {\n label: 'Schedule',\n description: 'The schedule button inside the download modal',\n since: '9.0',\n },\n qSubscribeOption: {\n label: 'Subscribe',\n description: 'The Subscribe tab within the Download modal',\n since: '9.0',\n },\n qSubscribeExternalUsers: {\n label: 'Subscribe external users',\n description:\n 'The option to add external users using the Enter key within the Subscribe tab',\n since: '9.0',\n },\n qSubscribeBanner: {\n label: 'Subscription banner',\n description:\n 'The banner \"All subscribers will receive the exported file with the same data as you.\" within the Subscribe tab',\n since: '9.6',\n notes: 'If qSubscribeBanner, qSubscribeOwner, qSubscribeOrganization, qSubscribeMyself and qSubscribeSpecificPeople are all hidden, the Subscribe tab is hidden too. Outside Composer, qSubscribeOrganization already counts as hidden. A keep list that includes downloadModal.qSubscribeOption also keeps these five keys.',\n },\n qOwnerLabel: {\n label: 'Owner',\n description: 'The owner label within the Subscribe tab',\n since: '9.6',\n },\n qSubscribeOrganization: {\n label: 'Subscribe organization',\n description:\n 'The \"Subscribe everyone in my organization\" checkbox within the Subscribe tab',\n since: '9.6',\n notes: 'Only available if the _in_composer property is true',\n },\n qSubscribeMyself: {\n label: 'Subscribe myself',\n description: 'The \"Subscribe myself\" checkbox within the Subscribe tab',\n since: '9.6',\n notes: 'Its initial value is set with defaults.downloadModal.subscribeMyself (see Customization Defaults)',\n },\n qSubscribeSpecificPeople: {\n label: 'Subscribe specific people',\n description:\n 'The Subscribe Specific People field within the Subscribe tab',\n since: '9.6',\n },\n qSubscribeOwner: { label: 'Subscribe owner' },\n qIncludeHeader: { label: 'Include header' },\n qAdvancedSettings: {\n label: 'Advanced settings',\n description:\n 'The Advanced Settings section of the export modal; its options are visible only when the section is',\n since: '9.6',\n },\n qPageSize: {\n label: 'Page size',\n description: 'The Page Size option within Advanced Settings',\n since: '9.6',\n notes: 'Its initial value is set with defaults.downloadModal.pageSize (see Customization Defaults)',\n },\n qOrientation: {\n label: 'Orientation',\n description: 'The Orientation option within Advanced Settings',\n since: '9.6',\n notes: 'Its initial value is set with defaults.downloadModal.orientation (see Customization Defaults)',\n },\n qIncludeHyperlinks: { label: 'Include hyperlinks' },\n qExportVersion: {\n label: 'Export version',\n description:\n 'The options to export, latest saved version or unsaved version',\n since: '9.3',\n },\n qSavedVersionWarning: {\n label: 'Saved version banner',\n description:\n 'The warning banner for the export latest saved version option',\n since: '9.3',\n },\n qUnsavedVersionWarning: {\n label: 'Unsaved version banner',\n description:\n 'The warning banner for the export unsaved saved version option',\n since: '9.3',\n },\n\n // Duplicate modal\n qCharts: {\n label: 'Charts',\n description:\n 'Controls the \"Charts\" choice group in the modal (duplicate vs. keep original charts).',\n since: '9.5',\n },\n qFilters: {\n label: 'Filters',\n description:\n 'Controls the \"Filters\" choice group (duplicate vs. don\\'t duplicate filters).',\n since: '9.5',\n },\n qDashActions: {\n label: 'Dashboard actions',\n description:\n 'Controls the \"Actions\" choice group (duplicate vs. don\\'t duplicate dashboard actions).',\n since: '9.5',\n },\n};\n","export const STRUCTURE_SECTION_NAME_SEPARATOR = '.';\nexport const STRUCTURE_VIEW_NAME_SEPARATOR = '::';\nexport const STRUCTURE_RESERVED_WORDS = ['views', 'defaults', 'subModules'];\n\nexport enum Widget {\n DASHBOARD = 'dashboard',\n REPORT = 'report',\n DOWNLOAD_MANAGER = 'download-manager',\n DOWNLOAD_MODAL = 'download-modal',\n CHART_PANEL = 'chart-panel',\n CHART_GALLERY = 'chart-gallery',\n CHART_BUILDER = 'chart-builder',\n}\n\n// The subModules key a host uses for each widget it embeds.\nexport const WIDGET_SUBMODULE_NAMES: Partial<Record<Widget, string>> = {\n [Widget.DOWNLOAD_MODAL]: 'downloadModal',\n [Widget.CHART_PANEL]: 'chartPanel',\n [Widget.CHART_GALLERY]: 'chartGallery',\n [Widget.CHART_BUILDER]: 'chartBuilder',\n};\n\nexport const WIDGET_STRUCTURE_SCOPE_KIND = 'qrvey.widget-structure-scope';\nexport const WIDGET_STRUCTURE_SCOPE_FORMAT = 1;\n\nexport enum WidgetVersion {\n v1 = '1.0',\n latest = 'latest',\n}\n","import { SanitizeFn, ValidationMap } from '../models/structure.models';\n\nexport type { ValidationMap } from '../models/structure.models';\n\nconst FONT_SIZES: number[] = [\n 8, 9, 10, 11, 12, 14, 15, 16, 18, 24, 30, 36, 48, 60, 72, 96,\n];\n\nfunction applyValidation(\n currentObj: Record<string, unknown>,\n validatorMap: ValidationMap,\n parentKey = '',\n sanitize?: SanitizeFn,\n): Record<string, unknown> {\n const validatedObj: Record<string, unknown> = {};\n\n Object.keys(currentObj).forEach((key) => {\n const fullKey = parentKey ? `${parentKey}.${key}` : key;\n const value = currentObj[key];\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n value !== null\n ) {\n validatedObj[key] = applyValidation(\n value as Record<string, unknown>,\n validatorMap,\n fullKey,\n sanitize,\n );\n } else if (validatorMap[fullKey]) {\n validatedObj[key] = validatorMap[fullKey](value);\n } else {\n validatedObj[key] =\n sanitize && typeof value === 'string' ? sanitize(value) : value;\n }\n });\n\n return validatedObj;\n}\n\nexport function validateDefaults(\n obj: Record<string, unknown>,\n validatorMap: ValidationMap,\n sanitize?: SanitizeFn,\n) {\n return applyValidation(obj, validatorMap, '', sanitize);\n}\n\nconst isANumber = (value: string | number) => {\n const _value = Number(value);\n if (!_value || isNaN(_value)) return undefined;\n return _value;\n};\n\nconst numberMinMaxValue =\n (maxValue: number, minValue?: number) => (value: string) => {\n const _value = isANumber(value);\n if (!_value) return undefined;\n if (minValue && _value < minValue) return minValue;\n if (_value > maxValue) return maxValue;\n return _value;\n };\n\nexport const fontSizeMinMaxValue =\n (minSize: number, maxSize: number) =>\n (value: string): string | undefined => {\n const inputSize = parseInt(value, 10);\n // Check if the inputSize is valid and within range\n if (\n FONT_SIZES.includes(inputSize) &&\n inputSize >= minSize &&\n inputSize <= maxSize\n ) {\n return `${inputSize}px`;\n }\n\n // Filter FONT_SIZES by min and max\n const validFontSizes = FONT_SIZES.filter(\n (size) => size >= minSize && size <= maxSize,\n );\n\n if (validFontSizes.length === 0) {\n return undefined;\n }\n\n // Find the closest font size\n let closestSize = validFontSizes[0];\n let smallestDiff = Math.abs(inputSize - closestSize);\n\n for (const size of validFontSizes) {\n const diff = Math.abs(inputSize - size);\n if (diff < smallestDiff) {\n smallestDiff = diff;\n closestSize = size;\n }\n }\n\n // Return the closest font size as a string with 'px'\n return `${closestSize}px`;\n };\nexport const fontColorValue = (value: unknown) => {\n // A color that is not text is dropped instead of throwing (QRV-749 review).\n if (typeof value !== 'string') return undefined;\n const normalizedColor = value.toLowerCase();\n return normalizedColor;\n};\n\nexport const validateBoolean = (value: unknown): boolean | undefined =>\n typeof value === 'boolean' ? value : undefined;\n\nconst validateUnsavedChangesBehavior = (value: unknown): string | undefined => {\n if (typeof value !== 'string') return undefined;\n return ['prompt', 'autoSave', 'discard'].includes(value)\n ? value\n : undefined;\n};\n\nconst validateType = (validValues: string[]) => (value: unknown) => {\n if (typeof value !== 'string') return undefined;\n const receivedValue = value.toUpperCase();\n return validValues.includes(receivedValue) ? receivedValue : undefined;\n};\n\n// Page setup values are the export API strings, matched case-sensitively.\nconst PAGE_SIZES = ['LEGACY', 'LETTER', 'A4', 'A3', 'LEGAL', 'TABLOID'];\nconst PAGE_ORIENTATIONS = ['PORTRAIT', 'LANDSCAPE'];\n\nconst validateOneOf = (validValues: string[]) => (value: unknown) =>\n typeof value === 'string' && validValues.includes(value)\n ? value\n : undefined;\n\nexport const DX_VALIDATOR_MAP: ValidationMap = {\n 'customStyles.header.height': numberMinMaxValue(300, 10),\n 'customStyles.text.fontSize': fontSizeMinMaxValue(8, 96),\n 'customStyles.text.fontColor': fontColorValue,\n 'customStyles.container.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.line.lineWidth': numberMinMaxValue(20, 1),\n 'customStyles.rectangle.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.ellipse.borderWidth': numberMinMaxValue(20, 1),\n 'customStyles.container.borderRadius': numberMinMaxValue(100, 0),\n\n // Filter Controls: MULTISELECT LIST\n 'customStyles.filterList.type': validateType(['LIST', 'DROPDOWN']),\n 'customStyles.filterList.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Filter Controls: INPUTBOX\n 'customStyles.filterInput.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Filter Controls: DATE\n 'customStyles.filterDate.triggerType': validateType([\n 'BUTTON',\n 'AUTOMATIC',\n ]),\n\n // Unsaved Changes Behavior\n unsavedChangesBehavior: validateUnsavedChangesBehavior,\n\n // Download modal\n 'downloadModal.subscribeMyself': validateBoolean,\n 'downloadModal.pageSize': validateOneOf(PAGE_SIZES),\n 'downloadModal.orientation': validateOneOf(PAGE_ORIENTATIONS),\n};\n\nexport const DOWNLOAD_MODAL_VALIDATOR_MAP: ValidationMap = {\n subscribeMyself: validateBoolean,\n pageSize: validateOneOf(PAGE_SIZES),\n orientation: validateOneOf(PAGE_ORIENTATIONS),\n};\n","import { WidgetConfig } from '../models/structure.models';\n\n// Keys of the export modal (qui-schedule-exporting-modal) at its own root; hosts import them under their downloadModal section.\nexport const DOWNLOAD_MODAL_V1_KEYS = [\n 'qScheduleOption',\n 'qSubscribeOption',\n 'qSubscribeExternalUsers',\n 'qSubscribeBanner',\n 'qOwnerLabel',\n 'qSubscribeOwner',\n 'qSubscribeOrganization',\n 'qSubscribeMyself',\n 'qSubscribeSpecificPeople',\n 'qIncludeHyperlinks',\n 'qIncludeHeader',\n] as const;\n\nexport type DownloadModalKey = (typeof DOWNLOAD_MODAL_V1_KEYS)[number];\n\n// Advanced Settings is a section: a child is visible only when the section and the child are.\nexport const DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS = 'qAdvancedSettings';\n\nexport const DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS_KEYS = [\n 'qPageSize',\n 'qOrientation',\n] as const;\n\nexport const DOWNLOAD_MODAL_V1_SECTIONS = {\n [DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS]: [\n ...DOWNLOAD_MODAL_V1_ADVANCED_SETTINGS_KEYS,\n ],\n};\n\n// The Subscribe elements split what qSubscribeOption controlled, so a keep list naming it keeps them too.\nexport const DOWNLOAD_MODAL_V1_KEEP_INHERITANCE: Record<\n string,\n DownloadModalKey\n> = {\n qSubscribeBanner: 'qSubscribeOption',\n qOwnerLabel: 'qSubscribeOption',\n qSubscribeOwner: 'qSubscribeOption',\n qSubscribeOrganization: 'qSubscribeOption',\n qSubscribeMyself: 'qSubscribeOption',\n qSubscribeSpecificPeople: 'qSubscribeOption',\n};\n\n// The same aliases for a host that lists the modal keys under one of its sections.\nexport const hostKeepInheritance = (\n section = 'downloadModal',\n): Record<string, string> =>\n Object.fromEntries(\n Object.entries(DOWNLOAD_MODAL_V1_KEEP_INHERITANCE).map(\n ([key, alias]) => [`${section}.${key}`, `${section}.${alias}`],\n ),\n );\n\nexport const DOWNLOAD_MODAL_V1_DEFAULTS = {\n subscribeMyself: true,\n};\n\nconst downloadModalV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: DOWNLOAD_MODAL_V1_KEEP_INHERITANCE,\n baseStructure: {\n defaults: { ...DOWNLOAD_MODAL_V1_DEFAULTS },\n ...Object.fromEntries(DOWNLOAD_MODAL_V1_KEYS.map((key) => [key, true])),\n ...DOWNLOAD_MODAL_V1_SECTIONS,\n },\n};\n\nexport default downloadModalV1Config;\n","import { WidgetConfig } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_V1_KEYS,\n DOWNLOAD_MODAL_V1_SECTIONS,\n hostKeepInheritance,\n} from './download-modal.structure.v1';\n\n// The download modal's keys come from its own structure; qExportVersion and the two warnings are DashboardX's slot content.\nconst DOWNLOAD_MODAL_HOST_KEYS = [\n 'qExportVersion',\n 'qSavedVersionWarning',\n 'qUnsavedVersionWarning',\n];\n\nconst dashboardV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: hostKeepInheritance('downloadModal'),\n baseStructure: {\n views: {\n list: [\n 'navBar',\n 'assetList',\n 'controlBarLeft',\n 'controlBarRight',\n 'qQvTokenExpiredMessage',\n 'duplicateModal',\n ],\n design: [\n 'navBar',\n 'header',\n 'controlBarRight',\n 'menuBar',\n 'toolBar',\n 'configPanel',\n 'filterPanel',\n 'downloadModal',\n 'canvas',\n 'qQvTokenExpiredMessage',\n 'duplicateModal',\n ],\n preview: [\n 'navBar',\n 'header',\n 'controlBarRight',\n 'filterPanel',\n 'qGoToDashBackButton',\n 'qQvTokenExpiredMessage',\n ],\n endUser: [\n 'navBar',\n 'toolBar',\n 'filterPanel',\n 'downloadModal',\n 'canvas',\n 'qGoToDashBackButton',\n 'qQvTokenExpiredMessage',\n ],\n },\n\n navBar: ['qAppTitle', 'qBackButton'],\n\n endUserTopBar: ['indicator', 'options'],\n\n assetList: {\n defaults: {\n assetListViewMode: 'card',\n },\n asset: {\n optionMenu: [\n 'qEditDash',\n 'qUseDash',\n 'qRenameDash',\n 'qDeleteDash',\n 'qDuplDash',\n 'qDuplDashAndCharts',\n 'qManageSharing',\n 'qManageTags',\n ],\n card: [\n 'qFavorite',\n 'qCreatedDate',\n 'qLastModifDate',\n 'qStatus',\n 'qNumberOfCharts',\n 'qSharing',\n 'qSharingIcon',\n 'qOwner',\n 'qDescription',\n 'qTags',\n ],\n table: [\n 'qFavorite',\n 'qCreatedDate',\n 'qLastModifDate',\n 'qStatus',\n 'qNumberOfCharts',\n 'qSharing',\n 'qSharingIcon',\n 'qOwner',\n 'qDescription',\n 'qTags',\n ],\n },\n },\n\n canvas: {\n defaults: {\n removeElement: true,\n dragElement: true,\n resizeElement: true,\n },\n },\n\n controlBarLeft: ['qCreateDash'],\n\n controlBarRight: [\n 'qSwitchView',\n 'timezone',\n 'qFilterBy',\n 'qFilterByTags',\n 'qSortBy',\n 'qSearch',\n 'qSelectColumn',\n 'qStatus',\n 'qPreview',\n 'qDiscard',\n 'qPublish',\n 'qUnpublish',\n 'qSwitchMode',\n 'qDesign',\n 'qDownloadList',\n ],\n\n header: [\n 'qDashFavorite',\n 'qSharingIcon',\n 'qDashName',\n 'qDashDesc',\n 'qTags',\n {\n qOptionsMenu: [\n 'qDuplDash',\n 'qDeleteDash',\n 'qManageSharing',\n 'qManageTags',\n ],\n },\n ],\n\n menuBar: {\n file: [\n 'qMnuCreateDash',\n 'qMnuOpenDash',\n 'qMnuDuplicateDash',\n 'qMnuDuplicateDashAndCharts',\n 'qMnuCanvasSize',\n 'qMnuThemes',\n 'qManageSharing',\n 'qManageTags',\n 'qMnuDeleteDash',\n {\n qCreateDataset: [\n 'qCreateCustomDataset',\n 'qViewCustomDataset',\n ],\n qMnuDownloadDash: [\n 'qDashPDF',\n 'qDashCSV',\n 'qDashExcel',\n 'qDashDataset',\n ],\n },\n ],\n edit: [\n 'qUndoRedo',\n 'qCopyElement',\n 'qPasteElement',\n 'qCutElement',\n 'qRemoveElement',\n 'qDuplElement',\n 'qSelectAllElem',\n 'qSelectAllContElem',\n ],\n grid: ['qMnuSnapToGrid', 'qMnuDisplayGrid', 'qMnuSwitchGrid'],\n insert: [\n {\n qMnuInsertChart: [\n 'qMnuExistingChart',\n 'qMnuNewChart',\n 'qMnuNewChartAI',\n ],\n qMnuInsertFilterCtrl: [\n 'qMnuDatePicker',\n 'qMnuInputBox',\n 'qMnuMultiSelectList',\n 'qMnuSingleSelectList',\n ],\n qMnuInsertShape: [\n 'qMnuLine',\n 'qMnuRectangle',\n 'qMnuEllipse',\n ],\n },\n 'qMnuInsertText',\n 'qMnuInsertImage',\n 'qMnuInsertButton',\n 'qMnuInsertContainer',\n 'qMnuInsertHeader',\n 'qMnuInsertTabs',\n ],\n qMnuArrange: [\n 'qMnuBringToFront',\n 'qMnuSendToBack',\n {\n qMnuAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n },\n ],\n },\n toolBar: [\n 'qCanvasSize',\n {\n qInsertChart: ['qExistingChart', 'qNewChart', 'qNewChartAI'],\n qInsertFilterCtrl: [\n 'qDatePicker',\n 'qInputBox',\n 'qMultiSelectList',\n 'qSingleSelectList',\n ],\n qInsertShape: ['qLine', 'qRectangle', 'qEllipse'],\n grid: ['qSnapToGrid', 'qDisplayGrid', 'qSwitchGrid'],\n qDownloadDash: [\n 'qDashPDF',\n 'qDashCSV',\n 'qDashExcel',\n 'qDashDataset',\n ],\n qArrange: ['qBringToFront', 'qSendToBack'],\n qResponsiveView: [\n 'qDesktop',\n 'qTablet',\n 'qMobile',\n 'qBreakpoints',\n ],\n qAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n qCreateDataset: ['qCreateCustomDataset', 'qViewCustomDataset'],\n },\n 'qInsertText',\n 'qInsertImage',\n 'qInsertButton',\n 'qInsertContainer',\n 'qRespGridMargins',\n 'qRespGridColumns',\n 'qThemes',\n 'qUndoRedo',\n\n // only for end user\n 'qDashVersion',\n 'qGetDashVersion',\n 'qSourceDashBanner',\n 'qHiddenItems',\n 'qDiscard',\n 'qSave',\n 'qSwitchMode',\n 'qHideToolBar',\n 'qDownloadList',\n 'qChangeLayout',\n ],\n qQvTokenExpiredMessage: true,\n qGoToDashBackButton: true,\n configPanel: true,\n filterPanel: {\n qAddFilter: true,\n qEnabDisabAllFilters: true,\n qDeleteAllFilters: true,\n qFilterSettings: true,\n viewOnlyFilterScope: true,\n dashFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n tabFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n containerFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n panelFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n },\n downloadModal: [\n ...DOWNLOAD_MODAL_V1_KEYS,\n DOWNLOAD_MODAL_V1_SECTIONS,\n ...DOWNLOAD_MODAL_HOST_KEYS,\n ],\n duplicateModal: [\n 'qCharts',\n 'qFilters',\n 'qDashActions',\n {\n options: {\n defaults: {\n qCharts: true,\n qFilters: true,\n qDashActions: true,\n },\n },\n },\n ],\n subModules: {\n chartPanel: {},\n chartGallery: {},\n chartBuilder: {},\n },\n },\n};\n\nexport default dashboardV1Config;\n","import { WidgetConfig } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_V1_KEYS,\n DOWNLOAD_MODAL_V1_SECTIONS,\n hostKeepInheritance,\n} from './download-modal.structure.v1';\n\nconst downloadManagerV1Config: WidgetConfig = {\n version: '1.0',\n keepInheritance: hostKeepInheritance('downloadModal'),\n baseStructure: {\n views: {\n main: [\n 'header',\n 'controlBar',\n 'assetList',\n 'moreInfoModal',\n 'downloadModal',\n ],\n detail: [\n 'header',\n 'controlBar',\n 'assetList',\n 'moreInfoModal',\n 'bottomBar',\n 'downloadModal',\n ],\n },\n header: ['qTitle'],\n controlBar: {\n defaults: {\n filters: {},\n },\n qFilterByFileType: [\n 'qTypePDF',\n 'qTypeJPG',\n 'qTypeCSV',\n 'qTypeExcel',\n 'qTypeZIP',\n ],\n qFilterByExecution: ['qExecScheduled', 'qExecOthers'],\n qFilterByWidget: [\n 'qWidgetAnalyze',\n 'qWidgetAutomation',\n 'qWidgetDash',\n 'qWidgetLegacyDash',\n 'qWidgetSubscriptions',\n 'qWidgetPPR',\n ],\n qFilterByAsset: true,\n qFilterByOrganization: true,\n qFilterByOwner: true,\n qSearch: true,\n qRemoveFilters: true,\n qScheduleDetail: true,\n qFilesExported: true,\n qMoreInfo: true,\n },\n\n assetList: {\n asset: [\n {\n optionMenu: [\n 'qDelete',\n 'qMoreInfo',\n 'qDeleteAllFiles',\n 'qEditSched',\n 'qPauseRestartSched',\n 'qUnsubscribe',\n 'qSubscribe',\n ],\n table: [\n 'qType',\n 'qSchedule',\n 'qSize',\n 'qCreationDate',\n 'qExpirationDate',\n 'qDownload',\n 'qOrganization',\n 'qOwner',\n ],\n },\n 'qDrillToDetail',\n 'qUnsubscribe',\n 'qSubscribe',\n ],\n },\n\n bottomBar: [\n 'qDeleteAllFiles',\n 'qEditSched',\n 'qPauseRestartSched',\n 'qDelete',\n ],\n\n // The export modal's own keys, so a scope of this section carries all of them.\n downloadModal: [...DOWNLOAD_MODAL_V1_KEYS, DOWNLOAD_MODAL_V1_SECTIONS],\n\n moreInfoModal: [\n 'qFileType',\n 'qSource',\n 'qOwner',\n 'qApplication',\n 'qPath',\n 'qOrganization',\n 'qErrorMessage',\n ],\n },\n};\n\nexport default downloadManagerV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst reportV1Config: WidgetConfig = {\n version: '1.0',\n\n baseStructure: {\n views: {\n list: ['navBar', 'assetList', 'controlBarLeft', 'controlBarRight'],\n design: [\n 'navBar',\n 'controlBarRight',\n 'menuBar',\n 'toolBar',\n 'configPanel',\n 'filterPanel',\n 'dataPanel',\n ],\n preview: [\n 'navBar',\n 'tabBar',\n 'toolBar',\n 'pagePreview',\n 'controlBarRight',\n 'downloadModal',\n ],\n },\n navBar: ['qAppTitle', 'qBackButton'],\n tabBar: ['qTabSelector', 'qScrollButton'],\n assetList: {\n defaults: {\n assetListViewMode: 'card',\n },\n asset: {\n optionMenu: [\n 'qEditRep',\n 'qRenameRep',\n 'qDeleteRep',\n 'qDuplRep',\n ],\n },\n },\n\n controlBarLeft: ['qCreateRep'],\n\n controlBarRight: [\n 'qSwitchView',\n 'timezone',\n 'qFilterBy',\n 'qSortBy',\n 'qSearch',\n 'qPreview',\n 'qDesign',\n ],\n\n menuBar: {\n edit: ['qCopyElement', 'qPasteElement'],\n },\n toolBar: [\n 'qPageSetup',\n {\n qInsertShape: ['qLine', 'qRectangle', 'qEllipse'],\n grid: ['qDisplayRuler', 'qDisplayGrid'],\n qArrange: ['qBringToFront', 'qSendToBack'],\n qAlign: [\n 'qAlignRight',\n 'qAlignLeft',\n 'qAlignCenter',\n 'qAlignTop',\n 'qAlignMiddle',\n 'qAlignBottom',\n ],\n qDownloadReport: [\n 'qReportPDF',\n 'qReportExcel',\n ],\n },\n 'qUndoRedo',\n 'qInsertDTable',\n 'qInsertSTable',\n 'qInsertImage',\n 'qInsertText',\n 'qInsertPageGroup',\n 'qInsertFormula',\n 'qInsertBucket',\n 'qInsertPageBreak',\n ],\n configPanel: true,\n dataPanel: {\n tabDataset: ['qChangeDataSet', 'qSearch'],\n tabParameters: ['qAddParameter', 'qSearch'],\n },\n filterPanel: {\n qAddFilter: true,\n qEnabDisabAllFilters: true,\n qDeleteAllFilters: true,\n qFilterSettings: true,\n repoFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n tabFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n panelFilterScope: [\n 'qEditFilter',\n 'qEnabDisabFilter',\n 'qDeleteFilter',\n ],\n },\n downloadModal: [\n 'qScheduleOption',\n 'qSubscribeOption',\n 'qSubscribeExternalUsers',\n ],\n },\n};\n\nexport default reportV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst optionMenuChildren = [\n 'qEditChart',\n 'qDuplicateChart',\n {\n qDownloadChart: [\n 'qChartJPG',\n 'qChartPDF',\n 'qChartCSV',\n 'qChartSummary',\n 'qChartExcel',\n ],\n },\n];\n\nconst headerConfig = [\n 'qChartName',\n 'qFitPanel',\n 'qChartSelection',\n 'qColumnSection',\n 'qSorting',\n 'qColumnReplacement',\n 'qColumnAggregation',\n 'qColumnGrouping',\n 'qDateGrouping',\n 'qColumnSelection',\n 'qResetColumnsWidth',\n 'qSmartAnalyzer',\n { optionMenu: optionMenuChildren },\n {\n qFilter: [\n 'qAddFilter',\n { dashFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n { tabFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n { panelFilterScope: ['qEditFilter', 'qDeleteFilter'] },\n ],\n },\n {\n optionDateGrouping: [\n 'qDayOnly',\n 'qMonth',\n 'qMonthOnly',\n 'qQuarter',\n 'qQuarterOnly',\n 'qWeek',\n 'qYear',\n 'qDay',\n 'qHour',\n 'qHourOnly',\n 'qMinute',\n 'qMinuteOnly',\n 'qSecond',\n 'qSecondOnly',\n ],\n },\n];\n\nconst floatingMenuConfig = [\n ...headerConfig.filter(\n (item) => typeof item !== 'object' || !('optionMenu' in item),\n ),\n ...optionMenuChildren,\n];\n\nconst chartPanelV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n header: headerConfig,\n floatingMenu: floatingMenuConfig,\n menuLayout: { defaults: { menuLayout: undefined } },\n body: ['actions', 'qComparativeAnalysis'],\n },\n};\n\nexport default chartPanelV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst chartGalleryV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n chartTypeFilter: true,\n showSummary: true,\n inputSearch: true,\n switch: true,\n subModules: {\n chartPanel: {\n title: false,\n },\n },\n },\n};\nexport default chartGalleryV1Config;\n","import { WidgetConfig } from '../models/structure.models';\n\nconst chartBuilderV1Config: WidgetConfig = {\n version: '1.0',\n baseStructure: {\n chartTypeFilter: true,\n showSummary: true,\n inputSearch: true,\n switch: true,\n subModules: {\n chartPanel: {\n title: false,\n },\n },\n },\n};\nexport default chartBuilderV1Config;\n","import { Widget, WidgetVersion } from './structure.constants';\nimport { WidgetConfigsMap } from './widget.config';\nimport { ValidationMap } from '../models/structure.models';\nimport {\n DOWNLOAD_MODAL_VALIDATOR_MAP,\n DX_VALIDATOR_MAP,\n} from '../utils/defaults.helpers';\nimport dashboardV1Config from '../structures/dashboard.structure.v1';\nimport downloadManagerV1Config from '../structures/download-manager.structure.v1';\nimport reportV1Config from '../structures/report.structure.v1';\nimport downloadModalV1Config from '../structures/download-modal.structure.v1';\nimport chartPanelV1Config from '../structures/chart-panel.structure.v1';\nimport chartGalleryV1Config from '../structures/chart-gallery.structure.v1';\nimport chartBuilderV1Config from '../structures/chart-builder.structure.v1';\n\nexport const widgetConfigs: WidgetConfigsMap = {\n [Widget.DASHBOARD]: {\n [WidgetVersion.v1]: dashboardV1Config,\n [WidgetVersion.latest]: dashboardV1Config,\n },\n [Widget.REPORT]: {\n [WidgetVersion.v1]: reportV1Config,\n [WidgetVersion.latest]: reportV1Config,\n },\n [Widget.DOWNLOAD_MANAGER]: {\n [WidgetVersion.v1]: downloadManagerV1Config,\n [WidgetVersion.latest]: downloadManagerV1Config,\n },\n [Widget.DOWNLOAD_MODAL]: {\n [WidgetVersion.v1]: downloadModalV1Config,\n [WidgetVersion.latest]: downloadModalV1Config,\n },\n [Widget.CHART_PANEL]: {\n [WidgetVersion.v1]: chartPanelV1Config,\n [WidgetVersion.latest]: chartPanelV1Config,\n },\n [Widget.CHART_GALLERY]: {\n [WidgetVersion.v1]: chartGalleryV1Config,\n [WidgetVersion.latest]: chartGalleryV1Config,\n },\n [Widget.CHART_BUILDER]: {\n [WidgetVersion.v1]: chartBuilderV1Config,\n [WidgetVersion.latest]: chartBuilderV1Config,\n },\n};\n\n// Validators applied to customization defaults when the caller passes none; the analytics widgets never validated theirs.\nexport const widgetValidators: Partial<Record<Widget, ValidationMap>> = {\n [Widget.DASHBOARD]: DX_VALIDATOR_MAP,\n [Widget.REPORT]: DX_VALIDATOR_MAP,\n [Widget.DOWNLOAD_MANAGER]: DX_VALIDATOR_MAP,\n [Widget.DOWNLOAD_MODAL]: DOWNLOAD_MODAL_VALIDATOR_MAP,\n};\n","export const allowedOperators = [\n '=',\n '!=',\n '>',\n '>=',\n '<',\n '<=',\n 'startsWith',\n 'endsWith',\n 'contains',\n] as const;\nexport type Operators = (typeof allowedOperators)[number];\n\nexport type ConditionValue = string | number;\n\nexport interface Condition {\n field: string;\n operator: Operators;\n value: ConditionValue;\n}\n\nexport type ConditionState = Record<string, ConditionValue>;\n\nexport type OperatorConditionFn = (\n value: Condition,\n state: Record<string, ConditionValue>,\n) => boolean;\n","import {\n Condition,\n ConditionState,\n ConditionValue,\n OperatorConditionFn,\n Operators,\n allowedOperators,\n} from '../models/conditions.models';\nimport { WidgetItemCondition } from '../models/structure.models';\n\nfunction isOperator(value: string): value is Operators {\n return allowedOperators.includes(value as Operators);\n}\n\nfunction getValue(condition: Condition, state: ConditionState): ConditionValue {\n return state[condition.field];\n}\n\nfunction _evalConditionOperator(\n condition: Condition,\n state: ConditionState,\n operator: (a: ConditionValue, b: ConditionValue) => boolean,\n): boolean {\n const value = getValue(condition, state);\n if (value == null) return false;\n return operator(value, condition.value);\n}\n\nconst OPERATOR_MAP: Record<Operators, OperatorConditionFn> = {\n '=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a == b),\n '!=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a != b),\n '<': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a < b),\n '<=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a <= b),\n '>': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a > b),\n '>=': (condition, state) =>\n _evalConditionOperator(condition, state, (a, b) => a >= b),\n\n startsWith: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' &&\n typeof b === 'string' &&\n a.startsWith(b),\n ),\n\n endsWith: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' && typeof b === 'string' && a.endsWith(b),\n ),\n\n contains: (condition, state) =>\n _evalConditionOperator(\n condition,\n state,\n (a, b) =>\n typeof a === 'string' && typeof b === 'string' && a.includes(b),\n ),\n};\n\nexport function evaluateCondition(\n state: ConditionState | undefined,\n ...conditions: Condition[]\n): boolean {\n if (!state) return false;\n if (conditions.length === 0) return true;\n return conditions.every((c) => _evalCondition(state, c));\n}\n\nfunction _evalCondition(state: ConditionState, condition: Condition): boolean {\n if (!isOperator(condition.operator)) return false;\n const evalFn = OPERATOR_MAP[condition.operator];\n return evalFn(condition, state);\n}\n\nexport function checkConditions(\n state: ConditionState | undefined,\n conditions: WidgetItemCondition[],\n): boolean {\n if (!state) return false;\n for (const cond of conditions) {\n if (cond.effect === 'keep') continue;\n const result = evaluateCondition(state, cond.condition);\n if (result) return false;\n }\n return true;\n}\n","export interface MergeDeepSettings {\n mergeMissingProperties?: boolean;\n mergeExistingValues?: boolean;\n}\n\nexport function mergeDeep(\n obj1: any,\n obj2: any,\n settings?: MergeDeepSettings,\n): any {\n const defaultSettings = {\n mergeExistingValues: settings?.mergeExistingValues ?? true,\n mergeMissingProperties: settings?.mergeMissingProperties ?? true,\n };\n\n if (!isValid(obj1, obj2)) return objectCopy(obj1);\n\n const result: any = Array.isArray(obj1) ? [] : {};\n\n for (const key in obj1) {\n const val1 = obj1[key];\n const val2 = obj2?.[key];\n\n if (isObject(val1) || Array.isArray(val1)) {\n result[key] = mergeDeep(val1, val2, defaultSettings);\n } else if (key in obj2 && defaultSettings.mergeExistingValues) {\n result[key] = val2;\n } else {\n result[key] = val1;\n }\n }\n\n if (defaultSettings.mergeMissingProperties) {\n for (const key in obj2) {\n if (!(key in result)) {\n result[key] = obj2[key];\n }\n }\n }\n\n return result;\n}\n\nfunction isValid(obj1: any, obj2: any): boolean {\n return (\n (isObject(obj1) && isObject(obj2)) ||\n (Array.isArray(obj1) && Array.isArray(obj2))\n );\n}\n\nfunction objectCopy<T = any>(obj: T): T {\n if (obj === null || typeof obj !== 'object') return obj;\n\n if (Array.isArray(obj)) {\n return obj.map((item) => objectCopy(item)) as any;\n }\n\n const result: any = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = objectCopy((obj as any)[key]);\n }\n }\n\n return result;\n}\n\nfunction isObject(value: any): boolean {\n return (\n value !== null &&\n typeof value === 'object' &&\n !Array.isArray(value) &&\n Object.prototype.toString.call(value) === '[object Object]'\n );\n}\n","import { mergeDeep } from './merge.helpers';\nimport { Operators, allowedOperators } from '../models/conditions.models';\nimport { WidgetCustomization } from '../models/customization.models';\nimport {\n WidgetItemCondition,\n WidgetViewMap,\n WidgetViewMapItem,\n} from '../models/structure.models';\n\nconst SUBMODULES_KEY = 'subModules';\n\n// Earlier layers' customizations of each embedded widget, by map key (`design::subModules`) and submodule name.\nexport type SubmoduleLayers = Record<\n string,\n Record<string, WidgetCustomization[]>\n>;\n\nexport const isPlainObject = (\n value: unknown,\n): value is Record<string, unknown> =>\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n Object.prototype.toString.call(value) === '[object Object]';\n\nconst stringList = (value: unknown): string[] | undefined =>\n Array.isArray(value)\n ? value.filter((item): item is string => typeof item === 'string')\n : undefined;\n\nfunction normalizeCondition(value: unknown) {\n if (!isPlainObject(value)) return undefined;\n const { field, operator, value: conditionValue } = value;\n if (typeof field !== 'string') return undefined;\n if (!allowedOperators.includes(operator as Operators)) return undefined;\n if (\n typeof conditionValue !== 'string' &&\n typeof conditionValue !== 'number'\n )\n return undefined;\n return { field, operator: operator as Operators, value: conditionValue };\n}\n\nfunction normalizeSubmodules(value: unknown) {\n if (!isPlainObject(value)) return undefined;\n const result: Record<string, WidgetCustomization> = {};\n Object.keys(value).forEach((name) => {\n const submodule = normalizeLayer(value[name]);\n if (submodule) result[name] = submodule;\n });\n return result;\n}\n\n/**\n * Keeps only what the engine reads from a stored layer, so a malformed definition is ignored instead of throwing (D25).\n */\nexport function normalizeLayer(\n value: unknown,\n allowViews = true,\n): WidgetCustomization | undefined {\n if (!isPlainObject(value)) return undefined;\n const layer: WidgetCustomization = {};\n const remove = stringList(value.remove);\n const keep = stringList(value.keep);\n if (remove) layer.remove = remove;\n if (keep) layer.keep = keep;\n if (isPlainObject(value.defaults)) layer.defaults = value.defaults;\n const subModules = normalizeSubmodules(value.subModules);\n if (subModules) layer.subModules = subModules;\n if (Array.isArray(value.conditional)) {\n layer.conditional = value.conditional.flatMap((item) => {\n const condition = isPlainObject(item)\n ? normalizeCondition(item.condition)\n : undefined;\n const rest = condition ? normalizeLayer(item, false) : undefined;\n return condition && rest ? [{ ...rest, condition }] : [];\n });\n }\n if (allowViews && isPlainObject(value.views)) {\n const views = value.views;\n layer.views = {};\n Object.keys(views).forEach((view) => {\n const viewLayer = normalizeLayer(views[view], false);\n if (viewLayer) layer.views![view] = viewLayer;\n });\n }\n return layer;\n}\n\nfunction mergeDefaults(\n previous: Record<string, unknown> | undefined,\n next: unknown,\n): Record<string, unknown> | undefined {\n if (!isPlainObject(next)) return previous;\n return previous ? mergeDeep(previous, next) : next;\n}\n\n/**\n * Returns the last layer with the defaults of every layer merged by leaf key, the last one winning (rule 4 of 3.3.2).\n */\nexport function mergeLayerDefaults(\n layers: WidgetCustomization[],\n): WidgetCustomization {\n const last = layers[layers.length - 1] ?? {};\n const viewNames = new Set(\n layers.flatMap((layer) => Object.keys(layer.views ?? {})),\n );\n const rootDefaults = layers.reduce<Record<string, unknown> | undefined>(\n (merged, layer) => mergeDefaults(merged, layer.defaults),\n undefined,\n );\n const views: Record<string, WidgetCustomization> = { ...last.views };\n viewNames.forEach((view) => {\n // Root and view defaults of each layer, in layer order, so a later root default beats an earlier view default.\n const viewDefaults = layers.reduce<Record<string, unknown> | undefined>(\n (merged, layer) =>\n mergeDefaults(\n mergeDefaults(merged, layer.defaults),\n layer.views?.[view]?.defaults,\n ),\n undefined,\n );\n if (viewDefaults) {\n views[view] = { ...last.views?.[view], defaults: viewDefaults };\n }\n });\n const effective: WidgetCustomization = { ...last };\n if (rootDefaults) effective.defaults = rootDefaults;\n if (viewNames.size) effective.views = views;\n return effective;\n}\n\nexport const isSubmodulesKey = (key: string) =>\n key === SUBMODULES_KEY || key.endsWith(`::${SUBMODULES_KEY}`);\n\ntype MapItemObject = {\n childMap?: WidgetViewMap;\n defaults?: Record<string, unknown>;\n conditions?: WidgetItemCondition[];\n};\n\nconst asItemObject = (value: WidgetViewMapItem): MapItemObject =>\n isPlainObject(value) ? (value as MapItemObject) : {};\n\nfunction intersectItem(\n current: WidgetViewMapItem,\n other: WidgetViewMapItem,\n): WidgetViewMapItem {\n const item = asItemObject(current);\n const otherItem = asItemObject(other);\n const childMap = item.childMap\n ? intersectViewMaps(item.childMap, otherItem.childMap ?? {})\n : undefined;\n const conditions = [\n ...(otherItem.conditions ?? []),\n ...(item.conditions ?? []),\n ];\n const hasDefaults =\n !!item.defaults && Object.keys(item.defaults).length > 0;\n const hasChildMap = !!childMap && Object.keys(childMap).length > 0;\n if (!hasDefaults && !hasChildMap && !conditions.length) {\n return isPlainObject(current) ? true : current;\n }\n return {\n ...(hasDefaults && { defaults: item.defaults }),\n ...(hasChildMap && { childMap }),\n ...(conditions.length && { conditions }),\n };\n}\n\n/**\n * Keeps the keys visible in both maps: a later layer can only remove what an earlier one left (rule 2 of 3.3.2).\n */\nexport function intersectViewMaps(\n current: WidgetViewMap,\n other: WidgetViewMap,\n): WidgetViewMap {\n const result: WidgetViewMap = {};\n Object.keys(current).forEach((key) => {\n if (isSubmodulesKey(key)) {\n result[key] = current[key];\n } else if (key in other) {\n result[key] = intersectItem(current[key], other[key]);\n }\n });\n return result;\n}\n\n/**\n * Collects the non-empty submodule customizations of earlier layers, so an embedded widget can apply them as its own layers.\n */\nexport function collectSubmoduleLayers(\n maps: WidgetViewMap[],\n): SubmoduleLayers | undefined {\n const result: SubmoduleLayers = {};\n maps.forEach((map) => {\n Object.keys(map)\n .filter(isSubmodulesKey)\n .forEach((key) => {\n const collection = map[key];\n if (!isPlainObject(collection)) return;\n Object.keys(collection).forEach((name) => {\n const submodule = collection[name];\n if (!isPlainObject(submodule)) return;\n if (!Object.keys(submodule).length) return;\n result[key] = result[key] ?? {};\n result[key][name] = [\n ...(result[key][name] ?? []),\n submodule as WidgetCustomization,\n ];\n });\n });\n });\n return Object.keys(result).length ? result : undefined;\n}\n","const LOG_PREFIX = '[widget-configurability]';\n\n// The package's single console sink; never pass credentials or tokens in a message.\nexport function logWarning(message: string): void {\n // eslint-disable-next-line no-console\n console.warn(`${LOG_PREFIX} ${message}`);\n}\n","import { ValidationMap, validateDefaults } from './defaults.helpers';\nimport { mergeDeep } from './merge.helpers';\nimport {\n STRUCTURE_RESERVED_WORDS,\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n} from '../constants/structure.constants';\nimport { WidgetCustomization } from '../models/customization.models';\nimport {\n SanitizeFn,\n StructureEngineOptions,\n WidgetConditionMap,\n WidgetConfig,\n WidgetItemCondition,\n WidgetStructure,\n WidgetStructureRoot,\n WidgetViewMap,\n} from '../models/structure.models';\n\ntype hasKeepOptType = 'root' | 'view';\n\ninterface CalculateViewOptions {\n viewKeys?: string[];\n pathPrefix?: string;\n viewPrefix?: string;\n hasKeepOption?: hasKeepOptType;\n prevDefaults?: Record<string, unknown>;\n customDefaults?: Record<string, unknown>;\n conditionMaps?: WidgetConditionMap[];\n checkCondition?: boolean;\n keepAliases?: Record<string, string>;\n}\n\ninterface ViewMapOptions extends StructureEngineOptions {\n keepInheritance?: Record<string, string>;\n}\n\ntype ConditionAffectValue = false | 'keep' | 'remove';\n\ninterface InsertionResult {\n canInsert: boolean;\n conditionAffect: ConditionAffectValue;\n}\n\n/**\n * constructs the permission map structure for a widget\n * @param config configuration of a widget\n * @param customization customization options for a widget\n * @param validationMap\n * @returns object representing the view map for the widget\n */\nexport function getWidgetStructure(\n config: WidgetConfig,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: StructureEngineOptions,\n): WidgetViewMap {\n return calculateViewMap(\n config.baseStructure,\n customization,\n validationMap,\n {\n ...options,\n keepInheritance: config.keepInheritance,\n },\n );\n}\n\nexport function calculateViewMap(\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: ViewMapOptions,\n): WidgetViewMap {\n const permissionMap: WidgetViewMap = {};\n const keepAliases = options?.keepInheritance;\n if (config.views) {\n for (const view in config.views) {\n Object.assign(\n permissionMap,\n calculateSpecificViewMap(\n view,\n config,\n customization,\n validationMap,\n options,\n ),\n );\n }\n } else {\n const customDefaults = calculateCustomDefaults(\n customization,\n undefined,\n validationMap,\n options?.sanitize,\n );\n const prevDefaults = config.defaults;\n\n const submodules = calculateSubmodules(config, customization);\n if (submodules) {\n permissionMap.subModules = submodules;\n }\n\n const conditionMaps = calculateConditions(\n config,\n customization,\n undefined,\n keepAliases,\n );\n\n Object.assign(\n permissionMap,\n calculatePermissionMap(config, customization, {\n prevDefaults,\n customDefaults,\n conditionMaps,\n keepAliases,\n }),\n );\n }\n return permissionMap;\n}\n\n/**\n * Defaults at the root of a structure without views (structure defaults merged with the customization's).\n */\nexport function calculateRootDefaults(\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n sanitize?: SanitizeFn,\n): Record<string, unknown> | undefined {\n return calculateDefaults(\n config.defaults as Record<string, unknown> | undefined,\n undefined,\n calculateCustomDefaults(\n customization,\n undefined,\n validationMap,\n sanitize,\n ),\n );\n}\n\nfunction calculateSpecificViewMap(\n view: string,\n config: WidgetStructureRoot,\n customization?: WidgetCustomization,\n validationMap?: ValidationMap,\n options?: ViewMapOptions,\n) {\n const viewDefinition = config.views![view];\n const keepAliases = options?.keepInheritance;\n const customDefaults = calculateCustomDefaults(\n customization,\n view,\n validationMap,\n options?.sanitize,\n );\n const prevDefaults = config.defaults;\n\n const permissionMap: WidgetViewMap = {};\n\n const submodules = calculateSubmodules(config, customization, view);\n if (submodules) {\n permissionMap[`${view}::subModules`] = submodules;\n }\n\n const conditionMaps =\n options?.viewConditionals === false\n ? undefined\n : calculateConditions(config, customization, view, keepAliases);\n\n Object.assign(\n permissionMap,\n calculatePermissionMap(config, customization, {\n viewKeys: viewDefinition,\n viewPrefix: view,\n prevDefaults,\n customDefaults,\n conditionMaps,\n keepAliases,\n }),\n );\n\n return permissionMap;\n}\n\nfunction getViewPrefix(view?: string) {\n return view ? `${view}${STRUCTURE_VIEW_NAME_SEPARATOR}` : '';\n}\n\nfunction getStructureKey(key: string, viewPrefix?: string): string {\n const viewValue = getViewPrefix(viewPrefix);\n return `${viewValue}${key}`;\n}\n\nconst matchWildcard = (pattern: string, value: string): boolean => {\n const regexPattern = new RegExp(\n '^' + pattern.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*') + '$',\n );\n return regexPattern.test(value);\n};\n\nfunction keyIsIncludedInKeep(\n key: string,\n customization: WidgetCustomization,\n keepAliases?: Record<string, string>,\n): boolean {\n const { keep = [] } = customization;\n const alias = keepAliases?.[key];\n for (const pattern of keep) {\n if (pattern === key || matchWildcard(pattern, key)) {\n return true;\n }\n if (alias && (pattern === alias || matchWildcard(pattern, alias))) {\n return true;\n }\n }\n return false;\n}\n\nfunction keyIsIncludedInRemove(\n key: string,\n customization: WidgetCustomization,\n): boolean {\n const { remove = [] } = customization;\n for (const pattern of remove) {\n if (pattern === key || matchWildcard(pattern, key)) {\n return true;\n }\n }\n return false;\n}\n\nfunction canInsertInCustomization(\n key: string,\n customization: WidgetCustomization,\n validateKeepOption?: boolean,\n keepAliases?: Record<string, string>,\n): InsertionResult {\n const includedInRemove = keyIsIncludedInRemove(key, customization);\n const includedInKeep = keyIsIncludedInKeep(key, customization, keepAliases);\n const canInsert =\n !includedInRemove && (!validateKeepOption || includedInKeep);\n\n const keepValue = includedInKeep ? 'keep' : 'remove';\n const keepResult = validateKeepOption ? keepValue : false;\n const conditionAffect = includedInRemove ? 'remove' : keepResult;\n return { canInsert, conditionAffect };\n}\n\nfunction evalInsertKey(\n key: string,\n {\n viewKeys,\n viewPrefix = '',\n hasKeepOption,\n keepAliases,\n }: CalculateViewOptions,\n customization?: WidgetCustomization,\n): InsertionResult {\n const customizationView = customization?.views?.[viewPrefix];\n\n const custCanInsert: InsertionResult = customization\n ? canInsertInCustomization(\n key,\n customization,\n hasKeepOption === 'root',\n keepAliases,\n )\n : {\n canInsert: true,\n conditionAffect: false,\n };\n const custViewCanInsert: InsertionResult = customizationView\n ? canInsertInCustomization(\n key,\n customizationView,\n hasKeepOption === 'view',\n keepAliases,\n )\n : {\n canInsert: true,\n conditionAffect: false,\n };\n\n // validate remove and keep attributes for views.\n const canInsert =\n (!viewKeys || viewKeys.some((x) => key.startsWith(x))) &&\n custCanInsert.canInsert &&\n custViewCanInsert.canInsert;\n\n const conditionAffect =\n custCanInsert.conditionAffect || custViewCanInsert.conditionAffect;\n\n return { canInsert, conditionAffect };\n}\n\nfunction canInsertKey(\n key: string,\n {\n viewKeys,\n viewPrefix = '',\n hasKeepOption,\n checkCondition = false,\n keepAliases,\n }: CalculateViewOptions,\n customization?: WidgetCustomization,\n): InsertionResult {\n const result = evalInsertKey(\n key,\n { viewKeys, viewPrefix, hasKeepOption, checkCondition, keepAliases },\n customization,\n );\n const canInsert = checkCondition || result.canInsert;\n return { canInsert, conditionAffect: result.conditionAffect };\n}\n\nfunction addKeyToPermissions(\n permissionMap: WidgetViewMap,\n key: string,\n { viewPrefix, checkCondition, conditionMaps }: CalculateViewOptions,\n defaults?: Record<string, unknown>,\n childMap?: WidgetViewMap,\n conditionAffect?: ConditionAffectValue,\n) {\n const keyAttr = getStructureKey(key, viewPrefix);\n\n if (checkCondition && conditionAffect != null) {\n permissionMap[keyAttr] = conditionAffect;\n return;\n }\n\n const addDefaultKey = defaults && Object.keys(defaults).length > 0;\n const addChildMapKey = childMap && Object.keys(childMap).length > 0;\n const conditions = getConditionsForKey(key, conditionMaps);\n\n permissionMap[keyAttr] =\n !addDefaultKey && !addChildMapKey && !conditions\n ? true\n : {\n ...(addDefaultKey && { defaults }),\n ...(addChildMapKey && { childMap }),\n ...(conditions && { conditions }),\n };\n}\n\nfunction calculatePermissionMap(\n config: WidgetStructure | Record<string, WidgetStructure>,\n customization: WidgetCustomization | undefined,\n {\n viewKeys,\n pathPrefix = '',\n viewPrefix = '',\n hasKeepOption: previousKeepOption,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }: CalculateViewOptions,\n) {\n const permissionMap: WidgetViewMap = {};\n const currentKeepOption = nodeHasKeepOption(config, customization, {\n viewPrefix,\n pathPrefix,\n });\n\n for (const key in config) {\n if (STRUCTURE_RESERVED_WORDS.includes(key)) {\n continue;\n }\n const hasKeepOption = previousKeepOption ?? currentKeepOption;\n const configValue = config[key];\n const currentKey = `${pathPrefix}${key}`;\n const newPrefix = `${currentKey}${STRUCTURE_SECTION_NAME_SEPARATOR}`;\n\n const canInsertResult = canInsertKey(\n currentKey,\n {\n viewKeys,\n viewPrefix,\n hasKeepOption,\n checkCondition,\n keepAliases,\n },\n customization,\n );\n if (!canInsertResult.canInsert) {\n continue;\n }\n\n let defaults = prevDefaults;\n let childMap: WidgetViewMap | undefined = undefined;\n if (Array.isArray(configValue)) {\n // if it's an array, every element is a key\n defaults = calculateDefaults(\n prevDefaults,\n {} as Record<string, unknown>,\n customDefaults,\n );\n childMap = calculatePermissionMapArray(configValue, customization, {\n viewKeys,\n viewPrefix,\n pathPrefix: newPrefix,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n });\n\n Object.assign(permissionMap, childMap);\n } else if (\n typeof configValue === 'object' &&\n !Array.isArray(configValue)\n ) {\n defaults = calculateDefaults(\n prevDefaults,\n configValue.defaults as Record<string, unknown>,\n customDefaults,\n );\n // if it's an object, a recursive call is made\n childMap = calculatePermissionMap(\n configValue as WidgetStructure,\n customization,\n {\n viewKeys,\n viewPrefix,\n pathPrefix: newPrefix,\n prevDefaults: defaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n },\n );\n Object.assign(permissionMap, childMap);\n } else if (typeof configValue === 'boolean' && !configValue) {\n // if it's a boolean and its false, it should be ignored\n continue;\n } else if (typeof configValue === 'boolean' && configValue) {\n defaults = calculateDefaults(\n prevDefaults,\n {} as Record<string, unknown>,\n customDefaults,\n );\n }\n\n addKeyToPermissions(\n permissionMap,\n currentKey,\n {\n viewPrefix,\n checkCondition,\n conditionMaps,\n },\n defaults,\n childMap,\n canInsertResult.conditionAffect,\n );\n }\n\n return permissionMap;\n}\n\nfunction getConditionsForKey(\n key: string,\n conditionMaps: WidgetConditionMap[] | undefined,\n): WidgetItemCondition[] | undefined {\n if (!conditionMaps || conditionMaps.length === 0) return undefined;\n const result = conditionMaps.reduce((result, x) => {\n const mapValue = x.map[key];\n if (\n typeof mapValue === 'string' &&\n (mapValue === 'keep' || mapValue === 'remove')\n ) {\n result.push({\n effect: mapValue,\n condition: x.condition,\n });\n }\n return result;\n }, [] as WidgetItemCondition[]);\n\n if (result.length === 0) return undefined;\n return result;\n}\n\nfunction calculateConditions(\n config: WidgetStructure,\n customization?: WidgetCustomization,\n view?: string,\n keepAliases?: Record<string, string>,\n): WidgetConditionMap[] | undefined {\n const rootConditionals = customization?.conditional;\n const viewConditionals = view\n ? customization?.views?.[view]?.conditional\n : undefined;\n\n if (!rootConditionals && !viewConditionals) return undefined;\n\n const customConditionals = [\n ...(rootConditionals ?? []),\n ...(viewConditionals ?? []),\n ];\n return (\n customConditionals?.map((c) => ({\n condition: c.condition,\n map: calculatePermissionMap(config, c, {\n checkCondition: true,\n keepAliases,\n }),\n })) ?? undefined\n );\n}\n\nfunction calculateSubmodules(\n config: WidgetStructure,\n customization?: WidgetCustomization,\n view?: string,\n) {\n const viewSubmodules = view\n ? customization?.views?.[view]?.subModules\n : undefined;\n const customRootSubmodules = customization?.subModules;\n const customSubmodules = viewSubmodules\n ? mergeObjects(customRootSubmodules, viewSubmodules)\n : customRootSubmodules;\n return mergeObjects(config.subModules, customSubmodules);\n}\n\nfunction calculateCustomDefaults(\n customization?: WidgetCustomization,\n view?: string,\n validationMap?: ValidationMap,\n sanitize?: SanitizeFn,\n) {\n const viewDefaults = view\n ? customization?.views?.[view]?.defaults\n : undefined;\n const customRootDefaults = customization?.defaults ?? {};\n const defaultObj = viewDefaults\n ? mergeObjects(customRootDefaults, viewDefaults)\n : customRootDefaults;\n if (!defaultObj || (!validationMap && !sanitize)) return defaultObj;\n return validateDefaults(defaultObj, validationMap ?? {}, sanitize);\n}\n\nfunction calculateDefaults(\n structureDefaults: Record<string, unknown> | undefined,\n itemDefaults: Record<string, unknown> | undefined,\n customDefaults: Record<string, unknown> | undefined,\n) {\n const baseDefaults = mergeObjects(structureDefaults, itemDefaults);\n return mergeObjects(baseDefaults, customDefaults);\n}\n\nfunction mergeObjects(\n prevObj: Record<string, unknown> | undefined,\n newObj: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n // if both of configurations are falsy return undefined;\n if (!newObj && !prevObj) return undefined;\n // if just the prev defaults has value, return it\n if (!newObj) return prevObj;\n // if the newDefaults value is different than an object\n if (typeof newObj !== 'object' || Array.isArray(newObj)) return prevObj;\n return !prevObj ? newObj : mergeDeep(prevObj, newObj);\n}\n\nfunction mapObjKeys(\n configValue: WidgetStructure,\n { pathPrefix }: CalculateViewOptions,\n) {\n return Object.keys(configValue).map((x) =>\n getStructureKey(`${pathPrefix}${x}`),\n );\n}\n\nfunction mapArrayKeys(\n configValue: (string | WidgetStructure)[],\n { viewPrefix, pathPrefix }: CalculateViewOptions,\n) {\n return configValue.reduce((result, value) => {\n if (typeof value === 'string') {\n result.push(getStructureKey(`${pathPrefix}${value}`));\n } else {\n result.push(...mapObjKeys(value, { viewPrefix, pathPrefix }));\n }\n return result;\n }, [] as string[]);\n}\n\nfunction nodeHasKeepOption(\n configValue: WidgetStructure | (string | WidgetStructure)[],\n customization: WidgetCustomization | undefined,\n { viewPrefix, pathPrefix }: CalculateViewOptions,\n): hasKeepOptType | undefined {\n if (!customization) return;\n const nodeKeys = Array.isArray(configValue)\n ? mapArrayKeys(configValue, { viewPrefix, pathPrefix })\n : mapObjKeys(configValue, { viewPrefix, pathPrefix });\n const customizationView = viewPrefix\n ? customization?.views?.[viewPrefix]\n : undefined;\n for (const key of nodeKeys) {\n if (keyIsIncludedInKeep(key, customization)) {\n return 'root';\n } else if (\n customizationView &&\n keyIsIncludedInKeep(key, customizationView)\n ) {\n return 'view';\n }\n }\n return undefined;\n}\n\nfunction calculatePermissionMapArray(\n configValue: (string | WidgetStructure)[],\n customization: WidgetCustomization | undefined,\n {\n viewKeys,\n viewPrefix,\n pathPrefix,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }: CalculateViewOptions,\n): WidgetViewMap {\n const permissionMap: WidgetViewMap = {};\n const hasKeepOption = nodeHasKeepOption(configValue, customization, {\n viewPrefix,\n pathPrefix,\n });\n const defaultsSimple = calculateDefaults(\n prevDefaults,\n undefined,\n customDefaults,\n );\n\n configValue.forEach((option) => {\n const fullPath = `${pathPrefix}${option}`;\n if (typeof option === 'string') {\n const canInsertResult = canInsertKey(\n fullPath,\n {\n viewKeys,\n viewPrefix,\n hasKeepOption,\n checkCondition,\n keepAliases,\n },\n customization,\n );\n if (!canInsertResult.canInsert) {\n return;\n }\n addKeyToPermissions(\n permissionMap,\n fullPath,\n {\n viewKeys,\n viewPrefix,\n checkCondition,\n conditionMaps,\n },\n defaultsSimple,\n undefined,\n canInsertResult.conditionAffect,\n );\n } else {\n Object.assign(\n permissionMap,\n calculatePermissionMap(option, customization, {\n viewKeys,\n pathPrefix,\n viewPrefix,\n hasKeepOption,\n prevDefaults,\n customDefaults,\n conditionMaps,\n checkCondition,\n keepAliases,\n }),\n );\n }\n });\n return permissionMap;\n}\n","import { widgetConfigs, widgetValidators } from './constants/configs';\nimport {\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n WIDGET_STRUCTURE_SCOPE_FORMAT,\n WIDGET_STRUCTURE_SCOPE_KIND,\n Widget,\n WidgetVersion,\n} from './constants/structure.constants';\nimport { ConditionState } from './models/conditions.models';\nimport { WidgetCustomization } from './models/customization.models';\nimport { ScopeOptions, WidgetStructureScope } from './models/scope.models';\nimport {\n BuildStructureOptions,\n WidgetConfig,\n WidgetItemCondition,\n WidgetViewMap,\n} from './models/structure.models';\nimport { checkConditions } from './utils/conditions.helpers';\nimport {\n SubmoduleLayers,\n collectSubmoduleLayers,\n intersectViewMaps,\n isPlainObject,\n mergeLayerDefaults,\n normalizeLayer,\n} from './utils/layers.helpers';\nimport { logWarning } from './utils/logger.helpers';\nimport {\n calculateRootDefaults,\n calculateViewMap,\n getWidgetStructure,\n} from './utils/structural.helpers';\n\nexport function getWidgetConfig(\n widget: Widget,\n version?: WidgetVersion,\n): WidgetConfig {\n const versionSet = version ?? WidgetVersion.latest;\n const widgetConfigurability = widgetConfigs[widget]?.[versionSet];\n if (!widgetConfigurability) {\n throw new Error(\n `No config found for widget ${widget} and version ${version}`,\n );\n }\n return widgetConfigurability;\n}\n\nexport function buildStructure(\n widget: Widget,\n customization?: WidgetCustomization,\n version?: WidgetVersion,\n options?: BuildStructureOptions,\n) {\n const config = getWidgetConfig(widget, version);\n const validationMap = options?.validationMap ?? widgetValidators[widget];\n const layers = (options?.layers ?? [])\n .map((layer) => normalizeLayer(layer))\n .filter((layer): layer is WidgetCustomization => !!layer);\n if (layers.length) {\n try {\n return buildLayeredStructure(\n config,\n layers,\n customization,\n validationMap,\n options,\n );\n } catch (error) {\n logWarning(\n `ignoring the ${widget} customization layers: ${\n (error as Error).message\n }`,\n );\n }\n }\n const structureMap = getWidgetStructure(\n config,\n customization,\n validationMap,\n options,\n );\n const rootDefaults = config.baseStructure.views\n ? undefined\n : calculateRootDefaults(\n config.baseStructure,\n customization,\n validationMap,\n options?.sanitize,\n );\n return new WidgetStructureInstance(structureMap, rootDefaults);\n}\n\nfunction buildLayeredStructure(\n config: WidgetConfig,\n layers: WidgetCustomization[],\n customization: WidgetCustomization | undefined,\n validationMap: BuildStructureOptions['validationMap'],\n options: BuildStructureOptions | undefined,\n) {\n const inline = isPlainObject(customization) ? customization : {};\n const effective = mergeLayerDefaults([...layers, inline]);\n const engineOptions = { viewConditionals: options?.viewConditionals };\n const layerMaps = layers.map((layer) =>\n getWidgetStructure(config, layer, undefined, engineOptions),\n );\n const structureMap = layerMaps.reduce(\n (result, layerMap) => intersectViewMaps(result, layerMap),\n getWidgetStructure(config, effective, validationMap, options),\n );\n const rootDefaults = config.baseStructure.views\n ? undefined\n : calculateRootDefaults(\n config.baseStructure,\n effective,\n validationMap,\n options?.sanitize,\n );\n return new WidgetStructureInstance(\n structureMap,\n rootDefaults,\n collectSubmoduleLayers(layerMaps),\n );\n}\n\nexport class WidgetStructureInstance {\n constructor(\n private viewMap: WidgetViewMap,\n private rootDefaults?: Record<string, unknown>,\n private submoduleLayers?: SubmoduleLayers,\n ) {}\n\n private getValue(key: string) {\n return this.viewMap[key];\n }\n\n isVisible(key: string, state?: ConditionState): boolean {\n const value = this.getValue(key);\n if (!value) return false;\n if (typeof value === 'object' && value.conditions) {\n return checkConditions(\n state,\n value.conditions as WidgetItemCondition[],\n );\n }\n return true;\n }\n\n getChildMap(key: string): WidgetViewMap | undefined {\n const value = this.getValue(key);\n if (\n !value ||\n typeof value === 'boolean' ||\n typeof value === 'string' ||\n !value.childMap\n )\n return undefined;\n return value.childMap as WidgetViewMap;\n }\n\n getSubmodule(\n module: string,\n view?: string,\n ): WidgetCustomization | undefined {\n const key = `${view ? view + '::' : ''}subModules`;\n const value = this.getValue(key);\n return (value as Record<string, WidgetCustomization>)?.[module];\n }\n\n /**\n * Submodule customizations of the stored layers, to pass as layers when building the embedded widget (structureFromSubmodule).\n */\n getSubmoduleLayers(\n module: string,\n view?: string,\n ): WidgetCustomization[] | undefined {\n const key = `${view ? view + '::' : ''}subModules`;\n return this.submoduleLayers?.[key]?.[module];\n }\n\n getDefaults(key: string): Record<string, unknown> | undefined {\n const value = this.getValue(key);\n if (\n !value ||\n typeof value === 'boolean' ||\n typeof value === 'string' ||\n !value.defaults\n )\n return undefined;\n return value.defaults as WidgetViewMap;\n }\n\n getRootDefaults(): Record<string, unknown> | undefined {\n return this.rootDefaults;\n }\n\n /**\n * Re-roots a resolved section (`design::downloadModal`) as plain JSON another bundle can rebuild a structure from.\n */\n scope(prefixKey: string, options: ScopeOptions = {}): WidgetStructureScope {\n const { widget, version, state } = options;\n const present = this.isVisible(prefixKey, state);\n const sectionPath =\n prefixKey.split(STRUCTURE_VIEW_NAME_SEPARATOR).pop() ?? prefixKey;\n const namespace =\n options.defaultsNamespace === undefined\n ? sectionPath.split(STRUCTURE_SECTION_NAME_SEPARATOR).pop()\n : options.defaultsNamespace;\n const sectionDefaults = present\n ? this.getDefaults(prefixKey)\n : undefined;\n const defaults = namespace\n ? (sectionDefaults?.[namespace] as\n | Record<string, unknown>\n | undefined)\n : sectionDefaults;\n const childPrefix = `${prefixKey}${STRUCTURE_SECTION_NAME_SEPARATOR}`;\n const map: Record<string, boolean> = {};\n let structureVersion: string | undefined;\n\n if (widget) {\n const config = getWidgetConfig(widget, version);\n structureVersion = config.version;\n Object.keys(calculateViewMap(config.baseStructure))\n .filter((key) => key !== 'subModules')\n .forEach((key) => {\n map[key] =\n present &&\n this.isVisible(`${childPrefix}${key}`, state);\n });\n } else if (present) {\n Object.keys(this.viewMap)\n .filter((key) => key.startsWith(childPrefix))\n .forEach((key) => {\n if (this.isVisible(key, state)) {\n map[key.slice(childPrefix.length)] = true;\n }\n });\n }\n\n return JSON.parse(\n JSON.stringify({\n kind: WIDGET_STRUCTURE_SCOPE_KIND,\n format: WIDGET_STRUCTURE_SCOPE_FORMAT,\n widget,\n structureVersion,\n source: prefixKey,\n present,\n map,\n defaults,\n }),\n );\n }\n}\n","import {\n Widget,\n WIDGET_STRUCTURE_SCOPE_FORMAT,\n WIDGET_STRUCTURE_SCOPE_KIND,\n WIDGET_SUBMODULE_NAMES,\n WidgetVersion,\n} from '../constants/structure.constants';\nimport { WidgetCustomization } from '../models/customization.models';\nimport { WidgetStructureScope } from '../models/scope.models';\nimport { BuildStructureOptions } from '../models/structure.models';\nimport { buildStructure, WidgetStructureInstance } from '../structural-manager';\nimport { mergeDeep } from './merge.helpers';\n\nexport type StructureInput =\n | WidgetStructureScope\n | WidgetCustomization\n | null\n | undefined;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport function isWidgetStructureScope(\n value: unknown,\n): value is WidgetStructureScope {\n return isPlainObject(value) && value.kind === WIDGET_STRUCTURE_SCOPE_KIND;\n}\n\n/**\n * Turns a resolved scope back into a customization of the widget it lists: hidden keys become an explicit remove list.\n */\nexport function scopeToCustomization(\n scope: WidgetStructureScope,\n): WidgetCustomization {\n const remove = scope.present\n ? Object.keys(scope.map ?? {}).filter((key) => scope.map[key] === false)\n : ['*'];\n return {\n ...(remove.length ? { remove } : {}),\n ...(scope.defaults ? { defaults: scope.defaults } : {}),\n };\n}\n\n/**\n * Extracts a section of a host's customization as a customization of the embedded widget, by evaluating it with the host's engine.\n */\nexport function extractCustomization(\n host: Widget,\n customization: WidgetCustomization | undefined,\n prefixKey: string,\n target: Widget,\n options?: BuildStructureOptions,\n): WidgetCustomization {\n const hostStructure = buildStructure(\n host,\n customization,\n undefined,\n options,\n );\n return scopeToCustomization(\n hostStructure.scope(prefixKey, { widget: target }),\n );\n}\n\nfunction submoduleOf(\n input: WidgetCustomization,\n module: string,\n view?: string,\n): WidgetCustomization | undefined {\n const root = input.subModules?.[module];\n const fromView = view\n ? input.views?.[view]?.subModules?.[module]\n : undefined;\n if (!fromView) return root;\n return root ? mergeDeep(root, fromView) : fromView;\n}\n\n/**\n * Builds an embedded widget's structure from what its host passes: a resolved scope, a raw customization of the widget, or a host\n * customization carrying the widget under subModules. Returns undefined for no input or an invalid one, so the receiver keeps its\n * legacy behaviour.\n */\nexport function structureFrom(\n widget: Widget,\n input: unknown,\n view?: string,\n version?: WidgetVersion,\n): WidgetStructureInstance | undefined {\n if (input === undefined || input === null) return undefined;\n try {\n if (!isPlainObject(input)) {\n throw new Error('expected an object');\n }\n if ('kind' in input) {\n if (!isWidgetStructureScope(input)) {\n throw new Error(`unknown kind ${String(input.kind)}`);\n }\n if (input.format !== WIDGET_STRUCTURE_SCOPE_FORMAT) {\n throw new Error(`unknown scope format ${input.format}`);\n }\n if (input.widget && input.widget !== widget) {\n throw new Error(`scope of ${input.widget}, expected ${widget}`);\n }\n return buildStructure(widget, scopeToCustomization(input), version);\n }\n const customization = input as WidgetCustomization;\n const module = WIDGET_SUBMODULE_NAMES[widget];\n const submodule = module\n ? submoduleOf(customization, module, view)\n : undefined;\n return buildStructure(widget, submodule ?? customization, version);\n } catch (error) {\n console.warn(\n `[widget-configurability] ignoring the ${widget} customization: ${(error as Error).message}`,\n );\n return undefined;\n }\n}\n\n/**\n * Builds the structure of a widget a host embeds as a submodule (chartPanel, chartGallery, chartBuilder, downloadModal).\n */\nexport function structureFromSubmodule(\n parent: WidgetStructureInstance,\n module: string,\n view?: string,\n options?: BuildStructureOptions,\n): WidgetStructureInstance {\n const widget = (Object.keys(WIDGET_SUBMODULE_NAMES) as Widget[]).find(\n (key) => WIDGET_SUBMODULE_NAMES[key] === module,\n );\n if (!widget) {\n throw new Error(`No widget registered for the submodule ${module}`);\n }\n const layers = parent.getSubmoduleLayers(module, view);\n return buildStructure(\n widget,\n parent.getSubmodule(module, view),\n undefined,\n layers\n ? { ...options, layers: [...(options?.layers ?? []), ...layers] }\n : options,\n );\n}\n","import { CHART_PANEL_DEFAULTS } from './labels/chart-panel.defaults';\nimport { CHART_PANEL_LABELS } from './labels/chart-panel.labels';\nimport { DASHBOARD_DEFAULTS } from './labels/dashboard.defaults';\nimport { DASHBOARD_LABELS } from './labels/dashboard.labels';\nimport {\n CustomizationDefaultLabelMap,\n CustomizationLabel,\n CustomizationLabelMap,\n CustomizationLock,\n CustomizationStructureOptions,\n CustomizationStructureSource,\n CustomizationTarget,\n CustomizationTreeNode,\n CustomizationTreeStateNode,\n} from './metadata.models';\nimport {\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n WIDGET_SUBMODULE_NAMES,\n Widget,\n WidgetVersion,\n} from '../constants/structure.constants';\nimport { WidgetCustomization } from '../models/customization.models';\nimport { WidgetConfig, WidgetStructureRoot } from '../models/structure.models';\nimport {\n WidgetStructureInstance,\n buildStructure,\n getWidgetConfig,\n} from '../structural-manager';\nimport { structureFromSubmodule } from '../utils/scope.helpers';\nimport { calculateViewMap } from '../utils/structural.helpers';\n\n// Label maps by widget, and the docs of their defaults; a new widget adds its maps here and the guard spec checks them (3.7.1).\nexport const widgetMetadata: Partial<\n Record<\n Widget,\n {\n labels: CustomizationLabelMap;\n defaults?: CustomizationDefaultLabelMap;\n }\n >\n> = {\n [Widget.DASHBOARD]: {\n labels: DASHBOARD_LABELS,\n defaults: DASHBOARD_DEFAULTS,\n },\n [Widget.CHART_PANEL]: {\n labels: CHART_PANEL_LABELS,\n defaults: CHART_PANEL_DEFAULTS,\n },\n};\n\nexport const findWidgetOfSubmodule = (name: string): Widget | undefined =>\n (Object.keys(WIDGET_SUBMODULE_NAMES) as Widget[]).find(\n (key) => WIDGET_SUBMODULE_NAMES[key] === name,\n );\n\nconst widgetOfSubmodule = (name: string): Widget => {\n const widget = findWidgetOfSubmodule(name);\n if (!widget)\n throw new Error(`No widget registered for the submodule ${name}`);\n return widget;\n};\n\nconst isWidgetConfig = (\n source: CustomizationStructureSource,\n): source is WidgetConfig =>\n typeof (source as WidgetConfig).version === 'string' &&\n typeof (source as WidgetConfig).baseStructure === 'object';\n\nconst rootOf = (source: CustomizationStructureSource): WidgetStructureRoot =>\n isWidgetConfig(source) ? source.baseStructure : source;\n\n/**\n * The structure to read for a widget, or for the widget a submodule name embeds: the caller's when it passes one (a host\n * documenting the tree it released with), else the one this package ships.\n */\nexport function structureRootOf(\n widget: Widget,\n options: CustomizationStructureOptions = {},\n subModule?: string,\n): WidgetStructureRoot {\n const source = subModule\n ? options.subModuleStructures?.[subModule]\n : options.structure;\n if (source) return rootOf(source);\n return getWidgetConfig(widget, subModule ? undefined : options.version)\n .baseStructure;\n}\n\nconst asCustomization = (value: unknown): WidgetCustomization | undefined =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as WidgetCustomization)\n : undefined;\n\ninterface ResolvedTarget {\n widget: Widget;\n // The keys of each target view, in structure order.\n keys: string[][];\n}\n\n// Keys of a target. A submodule's keys come from its structure under the customization its host declares for it, the way\n// structureFromSubmodule builds it, so a host structure that removes a chart panel key leaves it out of the tree.\nfunction resolveTarget(\n widget: Widget,\n target: CustomizationTarget,\n options: CustomizationStructureOptions,\n): ResolvedTarget {\n const subModules = target.subModules ?? [];\n const host = structureRootOf(widget, options);\n const views = host.views ? target.views : [undefined];\n if (!subModules.length) {\n return {\n widget,\n keys: views.map((view) =>\n structureKeysOf(widget, view, options.version, {\n structure: host,\n }),\n ),\n };\n }\n const embedded = widgetOfSubmodule(subModules[subModules.length - 1]);\n return {\n widget: embedded,\n keys: views.map((view) => {\n let structure = host;\n let customization: WidgetCustomization | undefined;\n let hostView = view;\n subModules.forEach((name) => {\n const instance = new WidgetStructureInstance(\n calculateViewMap(structure, customization),\n );\n customization = asCustomization(\n instance.getSubmodule(name, hostView),\n );\n structure = structureRootOf(\n widgetOfSubmodule(name),\n options,\n name,\n );\n hostView = structure.views ? view : undefined;\n });\n return structureKeysOf(embedded, hostView, undefined, {\n structure,\n customization,\n });\n }),\n };\n}\n\n/**\n * Keys of the structure in a view (or at the root), in structure order, without the view prefix. Reads the structure the\n * options pass, under their customization, instead of the one this package ships when they set one.\n */\nexport function structureKeysOf(\n widget: Widget,\n view?: string,\n version?: WidgetVersion,\n options: {\n structure?: CustomizationStructureSource;\n customization?: WidgetCustomization;\n } = {},\n): string[] {\n const map = calculateViewMap(\n options.structure\n ? rootOf(options.structure)\n : getWidgetConfig(widget, version).baseStructure,\n options.customization,\n );\n const prefix = view ? `${view}${STRUCTURE_VIEW_NAME_SEPARATOR}` : '';\n return Object.keys(map)\n .filter((key) =>\n view\n ? key.startsWith(prefix)\n : !key.includes(STRUCTURE_VIEW_NAME_SEPARATOR),\n )\n .map((key) => key.slice(prefix.length))\n .filter((key) => key !== 'subModules');\n}\n\nconst humanize = (id: string) =>\n id\n .replace(/^q(?=[A-Z])/, '')\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/^./, (char) => char.toUpperCase());\n\n/**\n * Label of a key: full path first, then the leaf id; a humanized id when neither exists.\n */\nexport function getCustomizationLabel(\n widget: Widget,\n key: string,\n): CustomizationLabel {\n const labels = widgetMetadata[widget]?.labels ?? {};\n const id = key.split(STRUCTURE_SECTION_NAME_SEPARATOR).pop() ?? key;\n return labels[key] ?? labels[id] ?? { label: humanize(id) };\n}\n\n/**\n * The labelled tree of a target: a widget view, or the structure of the embedded widget when subModules is set. Options\n * may pass the structures to read (CustomizationStructureOptions).\n */\nexport function getCustomizationTree(\n widget: Widget,\n target: CustomizationTarget,\n options: CustomizationStructureOptions = {},\n): CustomizationTreeNode[] {\n const resolved = resolveTarget(widget, target, options);\n const ordered: string[] = [];\n resolved.keys.forEach((keys) =>\n keys.forEach((key) => {\n if (!ordered.includes(key)) ordered.push(key);\n }),\n );\n const roots: CustomizationTreeNode[] = [];\n const nodes = new Map<string, CustomizationTreeNode>();\n const ensure = (key: string): CustomizationTreeNode => {\n const existing = nodes.get(key);\n if (existing) return existing;\n const parts = key.split(STRUCTURE_SECTION_NAME_SEPARATOR);\n const { label, description } = getCustomizationLabel(\n resolved.widget,\n key,\n );\n const node: CustomizationTreeNode = {\n key,\n id: parts[parts.length - 1],\n label,\n ...(description && { description }),\n kind: 'item',\n };\n nodes.set(key, node);\n if (parts.length === 1) {\n roots.push(node);\n } else {\n const parent = ensure(\n parts.slice(0, -1).join(STRUCTURE_SECTION_NAME_SEPARATOR),\n );\n parent.kind = 'section';\n parent.children = [...(parent.children ?? []), node];\n }\n return node;\n };\n ordered.forEach(ensure);\n return roots;\n}\n\nfunction instanceFor(\n widget: Widget,\n customization: WidgetCustomization | undefined,\n target: CustomizationTarget,\n view?: string,\n) {\n let instance: WidgetStructureInstance = buildStructure(\n widget,\n customization,\n );\n (target.subModules ?? []).forEach((name) => {\n instance = structureFromSubmodule(instance, name, view);\n });\n return instance;\n}\n\nconst matches = (pattern: string, key: string) =>\n pattern === key ||\n new RegExp(`^${pattern.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*')}$`).test(\n key,\n );\n\n// The block where the tree's switches write, and the blocks above it whose rules a switch cannot undo.\nfunction scopesOf(\n customization: WidgetCustomization | undefined,\n target: CustomizationTarget,\n view: string,\n) {\n const subModules = target.subModules ?? [];\n if (!subModules.length) {\n return { own: customization?.views?.[view], root: customization };\n }\n const name = subModules[subModules.length - 1];\n return {\n own: customization?.views?.[view]?.subModules?.[name],\n root: customization?.subModules?.[name],\n };\n}\n\nexport function lockOf(\n customization: WidgetCustomization | undefined,\n target: CustomizationTarget,\n view: string,\n key: string,\n hiddenParent?: string,\n): CustomizationLock | undefined {\n const { own, root } = scopesOf(customization, target, view);\n if (hiddenParent)\n return { verb: 'remove', pattern: hiddenParent, scope: 'parent' };\n if (own?.remove?.includes(key)) return undefined;\n const rootRemove = root?.remove?.find((pattern) => matches(pattern, key));\n if (rootRemove)\n return { verb: 'remove', pattern: rootRemove, scope: 'root' };\n const viewRemove = own?.remove?.find((pattern) => matches(pattern, key));\n if (viewRemove)\n return { verb: 'remove', pattern: viewRemove, scope: 'view' };\n if (root?.keep?.length)\n return { verb: 'keep', pattern: root.keep.join(', '), scope: 'root' };\n if (own?.keep?.length)\n return { verb: 'keep', pattern: own.keep.join(', '), scope: 'view' };\n // Hidden by something the switches do not write (a conditional, a submodule rule of the host).\n return {\n verb: 'remove',\n pattern: key,\n scope:\n own?.conditional?.length || root?.conditional?.length\n ? 'conditional'\n : 'view',\n };\n}\n\n/**\n * The tree with the visibility of each node for a customization, computed with the real engine. A node whose\n * visibility differs between the target views is 'mixed'; a hidden node a switch cannot bring back is locked.\n */\nexport function getCustomizationTreeState(\n widget: Widget,\n customization: WidgetCustomization | undefined,\n target: CustomizationTarget,\n): CustomizationTreeStateNode[] {\n const tree = getCustomizationTree(widget, target);\n const embedded = !!target.subModules?.length;\n const instances = target.views.map((view) => ({\n view,\n instance: instanceFor(widget, customization, target, view),\n }));\n const isVisible = (\n instance: WidgetStructureInstance,\n view: string,\n key: string,\n ) =>\n instance.isVisible(\n embedded ? key : `${view}${STRUCTURE_VIEW_NAME_SEPARATOR}${key}`,\n {},\n );\n\n const walk = (\n nodes: CustomizationTreeNode[],\n hiddenParents: (string | undefined)[],\n ): CustomizationTreeStateNode[] =>\n nodes.map((node) => {\n const states = instances.map(({ view, instance }) =>\n isVisible(instance, view, node.key),\n );\n const visible = states.every(Boolean)\n ? true\n : states.some(Boolean)\n ? 'mixed'\n : false;\n const locks =\n visible === false\n ? instances.map(({ view }, index) =>\n lockOf(\n customization,\n target,\n view,\n node.key,\n hiddenParents[index],\n ),\n )\n : [];\n const lockedBy =\n locks.length && locks.every(Boolean) ? locks[0] : undefined;\n const childParents = states.map(\n (state, index) =>\n hiddenParents[index] ?? (state ? undefined : node.key),\n );\n const { children, ...rest } = node;\n const stateNode: CustomizationTreeStateNode = { ...rest, visible };\n if (lockedBy) stateNode.lockedBy = lockedBy;\n if (children) stateNode.children = walk(children, childParents);\n return stateNode;\n });\n return walk(\n tree,\n instances.map(() => undefined),\n );\n}\n\nconst isEmptyObject = (value: unknown) =>\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n Object.keys(value).length === 0;\n\n/**\n * A new customization with the minimal change for one switch, applied to every view of the target. It only edits\n * the remove list of each view (or of the submodule inside it), never keep, conditional, defaults or root verbs.\n */\nexport function toggleCustomizationKey(\n customization: WidgetCustomization | undefined,\n target: CustomizationTarget,\n key: string,\n visible: boolean,\n): WidgetCustomization {\n const result: WidgetCustomization = JSON.parse(\n JSON.stringify(customization ?? {}),\n );\n target.views.forEach((view) => {\n const chain: Record<string, unknown>[] = [\n result as Record<string, unknown>,\n ];\n const step = (holder: Record<string, unknown>, name: string) => {\n holder[name] = (holder[name] as Record<string, unknown>) ?? {};\n chain.push(holder[name] as Record<string, unknown>);\n return holder[name] as Record<string, unknown>;\n };\n let block = step(\n step(result as Record<string, unknown>, 'views'),\n view,\n );\n (target.subModules ?? []).forEach((name) => {\n block = step(step(block, 'subModules'), name);\n });\n const remove = (block.remove as string[] | undefined) ?? [];\n if (!visible && !remove.includes(key)) block.remove = [...remove, key];\n if (visible) {\n const next = remove.filter((item) => item !== key);\n if (next.length) block.remove = next;\n else delete block.remove;\n }\n // Drops the empty objects this switch left behind, from the innermost out.\n for (let index = chain.length - 1; index > 0; index--) {\n const holder = chain[index - 1];\n const name = Object.keys(holder).find(\n (property) => holder[property] === chain[index],\n );\n if (name && isEmptyObject(chain[index])) delete holder[name];\n }\n });\n return result;\n}\n","import { CustomizationLabelMap } from '../metadata.models';\n\n// Labels of the widgets a host embeds, by their subModules name, for the submodule entries of the docs (RB-7258).\nexport const SUBMODULE_LABELS: CustomizationLabelMap = {\n chartPanel: { label: 'Chart panel' },\n chartBuilder: { label: 'Chart builder' },\n chartGallery: { label: 'Chart gallery' },\n downloadModal: { label: 'Download modal' },\n};\n","import {\n findWidgetOfSubmodule,\n getCustomizationLabel,\n getCustomizationTree,\n structureKeysOf,\n structureRootOf,\n widgetMetadata,\n} from './customization-metadata';\nimport { SUBMODULE_LABELS } from './labels/submodule.labels';\nimport {\n CustomizationAudience,\n CustomizationDefaultDoc,\n CustomizationDefaultDocEntry,\n CustomizationDocEntry,\n CustomizationDocsOptions,\n CustomizationTreeNode,\n} from './metadata.models';\nimport { widgetValidators } from '../constants/configs';\nimport {\n STRUCTURE_SECTION_NAME_SEPARATOR,\n STRUCTURE_VIEW_NAME_SEPARATOR,\n Widget,\n} from '../constants/structure.constants';\nimport { ValidationMap, WidgetStructureRoot } from '../models/structure.models';\nimport { WidgetStructureInstance } from '../structural-manager';\nimport { calculateViewMap } from '../utils/structural.helpers';\n\nconst DEFAULT_AUDIENCE: CustomizationAudience = 'partner';\n\ninterface DefaultDocs {\n docs: CustomizationDefaultDoc[];\n // The keys whose structure node declares each default, by name.\n declaredBy: Map<string, string[]>;\n}\n\nconst compact = <T extends object>(value: T): T =>\n Object.fromEntries(\n Object.entries(value).filter(([, field]) => field !== undefined),\n ) as T;\n\nconst asObject = (value: unknown): Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {};\n\nconst viewPrefix = (view?: string) =>\n view ? `${view}${STRUCTURE_VIEW_NAME_SEPARATOR}` : '';\n\nconst parentOf = (key: string): string | undefined => {\n const index = key.lastIndexOf(STRUCTURE_SECTION_NAME_SEPARATOR);\n return index < 0 ? undefined : key.slice(0, index);\n};\n\nconst typeOf = (value: unknown): string | undefined => {\n if (value === undefined) return undefined;\n return Array.isArray(value) ? 'Array' : typeof value;\n};\n\n// The deepest key a default's path starts with: 'filterPanel.defaultView' belongs to filterPanel.\nconst ownerByPath = (name: string, keys: string[]): string | undefined =>\n keys\n .filter((key) =>\n name.startsWith(`${key}${STRUCTURE_SECTION_NAME_SEPARATOR}`),\n )\n .sort((left, right) => right.length - left.length)[0];\n\n// The defaults a key's structure node sets itself: the names it adds or changes over what its parent (or the root) passes\n// down, read from the engine's map so a section's defaults are not repeated on every key below it.\nfunction declaredDefaults(\n widget: Widget,\n structure: WidgetStructureRoot,\n): Map<string, Record<string, unknown>> {\n const instance = new WidgetStructureInstance(calculateViewMap(structure));\n const root = asObject(structure.defaults);\n const declared = new Map<string, Record<string, unknown>>();\n const views = structure.views ? Object.keys(structure.views) : [undefined];\n views.forEach((view) =>\n structureKeysOf(widget, view, undefined, {\n structure,\n }).forEach((key) => {\n const parent = parentOf(key);\n const inherited = parent\n ? asObject(instance.getDefaults(viewPrefix(view) + parent))\n : root;\n Object.entries(\n asObject(instance.getDefaults(viewPrefix(view) + key)),\n )\n .filter(\n ([name, value]) =>\n !(name in inherited) ||\n JSON.stringify(inherited[name]) !==\n JSON.stringify(value),\n )\n .forEach(([name, value]) =>\n declared.set(key, { ...declared.get(key), [name]: value }),\n );\n }),\n );\n return declared;\n}\n\n/**\n * The documented defaults of a widget: the structure's own (with the value it sets as example), the paths its validators\n * check, and the docs written for it, which add description, version, notes, type and accepted values. Documented names\n * come first, in the order the docs list them.\n */\nfunction defaultDocsOf(\n widget: Widget,\n structure: WidgetStructureRoot,\n validators: ValidationMap,\n): DefaultDocs {\n const labels = widgetMetadata[widget]?.defaults ?? {};\n const values = new Map<string, unknown>();\n const declaredBy = new Map<string, string[]>();\n Object.entries(asObject(structure.defaults)).forEach(([name, value]) =>\n values.set(name, value),\n );\n declaredDefaults(widget, structure).forEach((defaults, key) =>\n Object.entries(defaults).forEach(([name, value]) => {\n if (!values.has(name)) values.set(name, value);\n declaredBy.set(name, [...(declaredBy.get(name) ?? []), key]);\n }),\n );\n const names = [\n ...new Set([\n ...Object.keys(labels),\n ...values.keys(),\n ...Object.keys(validators),\n ]),\n ];\n const docs = names.map((name) => {\n const label = labels[name] ?? {};\n const value = values.get(name);\n return compact<CustomizationDefaultDoc>({\n name,\n type: label.type ?? typeOf(value),\n values: label.values,\n example:\n value === undefined ? label.example : JSON.stringify(value),\n description: label.description,\n since: label.since,\n notes: label.notes,\n audience: label.audience ?? DEFAULT_AUDIENCE,\n });\n });\n return { docs, declaredBy };\n}\n\nconst validatorsOf = (widget: Widget, validationMap?: ValidationMap) =>\n validationMap ?? widgetValidators[widget] ?? {};\n\n// The defaults of each key of a scope: the ones its node declares, else the ones whose path starts with it.\nfunction defaultsByKey(\n { docs, declaredBy }: DefaultDocs,\n keys: string[],\n): Map<string, CustomizationDefaultDoc[]> {\n const byKey = new Map<string, CustomizationDefaultDoc[]>();\n docs.forEach((doc) => {\n const declared = (declaredBy.get(doc.name) ?? []).filter((key) =>\n keys.includes(key),\n );\n const owners = declared.length\n ? declared\n : [ownerByPath(doc.name, keys)].filter(\n (key): key is string => !!key,\n );\n owners.forEach((key) =>\n byKey.set(key, [...(byKey.get(key) ?? []), doc]),\n );\n });\n return byKey;\n}\n\nfunction flatten(\n widget: Widget,\n tree: CustomizationTreeNode[],\n scope: string,\n defaults: DefaultDocs,\n): CustomizationDocEntry[] {\n const keys: string[] = [];\n const collect = (nodes: CustomizationTreeNode[]) =>\n nodes.forEach((node) => {\n keys.push(node.key);\n collect(node.children ?? []);\n });\n collect(tree);\n const byKey = defaultsByKey(defaults, keys);\n // A key without an audience takes its section's, so an internal section keeps its keys out of the partner docs.\n const walk = (\n nodes: CustomizationTreeNode[],\n parent: string | null,\n inherited: CustomizationAudience,\n ): CustomizationDocEntry[] =>\n nodes.flatMap((node) => {\n const { since, notes, audience } = getCustomizationLabel(\n widget,\n node.key,\n );\n const own = audience ?? inherited;\n const entry = compact<CustomizationDocEntry>({\n key: node.key,\n scope,\n parent,\n kind: node.kind,\n label: node.label,\n description: node.description,\n since,\n notes,\n audience: own,\n defaults: byKey.get(node.key),\n });\n return [entry, ...walk(node.children ?? [], node.key, own)];\n });\n return walk(tree, null, DEFAULT_AUDIENCE);\n}\n\nfunction subModuleEntry(\n widget: Widget,\n name: string,\n scope: string,\n): CustomizationDocEntry {\n const key = `subModules${STRUCTURE_SECTION_NAME_SEPARATOR}${name}`;\n const { label, description, since, notes, audience } =\n SUBMODULE_LABELS[name] ?? getCustomizationLabel(widget, key);\n return compact<CustomizationDocEntry>({\n key,\n scope,\n parent: null,\n kind: 'subModule',\n label,\n description,\n since,\n notes,\n audience: audience ?? DEFAULT_AUDIENCE,\n });\n}\n\n/**\n * The customization keys of a widget as flat doc entries, one per key per scope: each view of the structure, then each\n * submodule of the view ('design::chartPanel') with the keys its structure resolves to inside the host. Options may pass\n * the structures to document, so a host can describe the tree it shipped with instead of this package's.\n */\nexport function getCustomizationDocs(\n widget: Widget,\n options: CustomizationDocsOptions = {},\n): CustomizationDocEntry[] {\n const structure = structureRootOf(widget, options);\n const map = calculateViewMap(structure);\n const hostDefaults = defaultDocsOf(\n widget,\n structure,\n validatorsOf(widget, options.validationMap),\n );\n const views = structure.views\n ? Object.keys(structure.views).filter(\n (view) => !options.views || options.views.includes(view),\n )\n : [undefined];\n return views.flatMap((view) => {\n const scope = view ?? '';\n const target = { views: view ? [view] : [] };\n const entries = flatten(\n widget,\n getCustomizationTree(widget, target, options),\n scope,\n hostDefaults,\n );\n Object.keys(asObject(map[`${viewPrefix(view)}subModules`]))\n .filter(\n (name) =>\n !options.subModules || options.subModules.includes(name),\n )\n .forEach((name) => {\n entries.push(subModuleEntry(widget, name, scope));\n const embedded = findWidgetOfSubmodule(name);\n // A submodule no widget is registered for is listed, but has no keys to document.\n if (!embedded) return;\n entries.push(\n ...flatten(\n embedded,\n getCustomizationTree(\n widget,\n { ...target, subModules: [name] },\n options,\n ),\n view\n ? `${view}${STRUCTURE_VIEW_NAME_SEPARATOR}${name}`\n : name,\n defaultDocsOf(\n embedded,\n structureRootOf(embedded, options, name),\n validatorsOf(embedded),\n ),\n ),\n );\n });\n return entries;\n });\n}\n\n/**\n * Every documented default of a widget, with the key it belongs to: the defaults no key owns (customStyles,\n * unsavedChangesBehavior) apply to the whole widget and come with a null key.\n */\nexport function getCustomizationDefaultDocs(\n widget: Widget,\n options: CustomizationDocsOptions = {},\n): CustomizationDefaultDocEntry[] {\n const structure = structureRootOf(widget, options);\n const { docs, declaredBy } = defaultDocsOf(\n widget,\n structure,\n validatorsOf(widget, options.validationMap),\n );\n const views = structure.views ? Object.keys(structure.views) : [undefined];\n const keys = [\n ...new Set(\n views.flatMap((view) =>\n structureKeysOf(widget, view, undefined, { structure }),\n ),\n ),\n ];\n return docs.map((doc) => ({\n ...doc,\n key:\n declaredBy.get(doc.name)?.[0] ??\n ownerByPath(doc.name, keys) ??\n null,\n }));\n}\n"]}