diff --git a/__init__.py b/__init__.py
index 0db75332..7ab3512d 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,7 +1,7 @@
__pluginInfo__ = {
'name': 'EDGAR',
- 'version': '3.26.1',
- 'description': "This plug-in implements U.S. SEC Edgar Renderer. Arelle version at SEC: 2.38.9 ",
+ 'version': '3.26.2',
+ 'description': "This plug-in implements U.S. SEC Edgar Renderer. Arelle version at SEC: 2.40.1 ",
'license': 'Apache-2',
'author': 'U.S. SEC Employees and Mark V Systems Limited',
'copyright': '(c) Portions by SEC Employees not subject to domestic copyright, otherwise (c) Copyright 2015 Mark V Systems Limited, All rights reserved.',
diff --git a/readme.md b/readme.md
index 22d56a52..4cb7095e 100644
--- a/readme.md
+++ b/readme.md
@@ -4,7 +4,7 @@
The EDGAR plugin, developed and maintained by the staff of the U.S. Securities and Exchange Commission (SEC), is designed to provide traditional and inline XBRL viewers for SEC filings. It also integrates with and extends the EFM Validation plugin, offering EFM validation for SEC filings. For end-user support, please contact the SEC directly at: StructuredData@sec.gov.
## Arelle Version
-The current version of Arelle in use at the SEC is: **2.38.9**
+The current version of Arelle in use at the SEC is: **2.40.1**
## Installation
The EDGAR plugin requires the xule plugin to be present under the Arelle plugin directory. You can clone the xule repository into the plugin directory.
diff --git a/render/Filing.py b/render/Filing.py
index 111f3d7f..70033c8a 100644
--- a/render/Filing.py
+++ b/render/Filing.py
@@ -298,6 +298,7 @@ def __init__(self, controller, report, outputFolderName, transform, suplSuffix,
self.builtinEquityRowAxes = [('us-gaap', self.usgaapNamespace, 'CreationDateAxis'), # us-gaap deprecated 2019 absent after 2021.
('ifrs-full', self.ifrsNamespace, 'CreationDateAxis'),
('us-gaap', self.usgaapNamespace, 'StatementScenarioAxis'),
+ ('us-gaap', self.usgaapNamespace, 'RestatementAxis'),
('us-gaap', self.usgaapNamespace, 'AdjustmentsForNewAccountingPronouncementsAxis'),
('us-gaap', self.usgaapNamespace, 'AdjustmentsForChangeInAccountingPrincipleAxis'),
('us-gaap', self.usgaapNamespace, 'ErrorCorrectionsAndPriorPeriodAdjustmentsRestatementByRestatementPeriodAndAmountAxis'),
@@ -427,7 +428,7 @@ def factSortKey (fact):
return ("", "", 0)
if fact.isNumeric:
if fact.isNil: discriminator = float("INF") # Null values always last
- elif fact.decimals is None: discriminator = 0 # Can happen with invalid xbrl
+ elif fact.decimals is None or not Utils.is_number(fact.decimals): discriminator = 0 # Can happen with invalid xbrl
else: discriminator = 0 - float(fact.decimals) # Larger decimal values come first
else: # non-numeric
if fact.isNil: discriminator = '\uffff' # Null values always last (highest 2-byte unicode character)
@@ -656,7 +657,7 @@ def factSortKey (fact):
_("Context %(contextID)s explicit dimension %(dimension)s member %(value)s is not a global member item"),
modelObject=(arelleDimension, fact), contextID=fact.context.id,
dimension=arelleDimension.dimensionQname, value=arelleDimension.memberQname)
- elif arelleDimension.isTyped and arelleDimension.typedMember.xValid < VALID:
+ elif arelleDimension.isTyped and arelleDimension.typedMember is not None and arelleDimension.typedMember.xValid < VALID:
self.modelXbrl.debug("debug",
_("Context %(contextID)s typed dimension %(dimension)s member %(value)s is not an xml schema validated value"),
modelObject=(arelleDimension, fact), contextID=fact.context.id,
diff --git a/render/README.md b/render/README.md
index 483b666a..0bc793b0 100644
--- a/render/README.md
+++ b/render/README.md
@@ -10,7 +10,7 @@ domestic copyright protection. 17 U.S.C. 105.
End user support is by e-mail direct to SEC at: [StructuredData@sec.gov]
(mailto:StructuredData@sec.gov).
-This is EDGAR release 26.1, planned for production March, 2026.
+This is EDGAR release 26.2, planned for production June, 2026.
Developer issue management is by the Jira Edgar Renderer project: https://arelle.atlassian.net/projects/ER
diff --git a/render/Report.py b/render/Report.py
index 2b896505..1be9eeec 100644
--- a/render/Report.py
+++ b/render/Report.py
@@ -508,7 +508,7 @@ def scaleUnitGlobally(self): # so far currencies and shares.
exampleFact = fact
if symbol is None:
symbol = Utils.getSymbolStr(fact) or unitID
- if fact.decimals.casefold() == 'inf' or maxSoFar > -3:
+ if fact.decimals.casefold() == 'inf' or maxSoFar > -3 or not Utils.is_number(fact.decimals):
maxSoFar = 0
break # to be scaled, every fact must have a decimals value of -3 or less. inf inhibits scaling.
else:
diff --git a/render/Utils.py b/render/Utils.py
index f874d749..4812c105 100644
--- a/render/Utils.py
+++ b/render/Utils.py
@@ -450,6 +450,14 @@ def embeddingGarbageCollect(embedding):
embedding.__dict__.clear()
+def is_number(val):
+ try:
+ n = float(val)
+ return math.isfinite(n) # Returns False for NaN and Inf
+ except ValueError:
+ return False
+
+
class RenderingException(Exception):
def __init__(self, code, message):
diff --git a/render/__init__.py b/render/__init__.py
index 5d61d6a7..0e8d1700 100644
--- a/render/__init__.py
+++ b/render/__init__.py
@@ -143,7 +143,7 @@
GUI may use tools->language labels setting to override system language for labels
"""
-VERSION = '3.26.1'
+VERSION = '3.26.2'
from collections import defaultdict
from arelle import PythonUtil
@@ -2232,7 +2232,7 @@ def removeElementsWithDocumentReference(modelXbrl, document):
__pluginInfo__ = {
'name': 'Edgar Renderer',
'version': VERSION,
- 'description': "This plug-in implements U.S. SEC Edgar Renderer. Arelle version at SEC: 2.38.9 ",
+ 'description': "This plug-in implements U.S. SEC Edgar Renderer. Arelle version at SEC: 2.39.8 ",
'license': 'Apache-2',
'author': 'U.S. SEC Employees and Mark V Systems Limited',
'copyright': '(c) Portions by SEC Employees not subject to domestic copyright, otherwise (c) Copyright 2015 Mark V Systems Limited, All rights reserved.',
diff --git a/validate/Consts.py b/validate/Consts.py
index 4026e62a..56da8613 100644
--- a/validate/Consts.py
+++ b/validate/Consts.py
@@ -56,7 +56,8 @@
}
docTypesSubType = {
"2.01 SD": "SD",
- "EX-99.4R HISTORIC": "N-4"
+ "EX-99.4R HISTORIC": "N-4",
+ "COMPL RPT": "SBSE-CCO-RPT"
# default is submissionType parameter is the same as dei:DocumentType
}
@@ -69,11 +70,11 @@
)
supplementalAttachmentDocumentTypesPattern = re.compile(r"EX-FILING FEES.*|EX-99\.[C-S]\.SBSEF.*|EX-98.*|EX-99.4R HISTORIC|EX-26")
exhibitTypesStrippingOnErrorPattern = re.compile(r"EX-26.*|EX-99\.[C-S]\.SBSEF.*|EX-98.*")
-exhibitTypesPrivateNotDisseminated = re.compile(r"EX-99\.[DEFHIJKNOPQRS]\.SBSEF")
+exhibitTypesPrivateNotDisseminated = re.compile(r"EX-99\.[DEFHIJKNOPQRS]\.SBSEF|COMPL RPT")
primaryAttachmentDocumentTypesPattern = re.compile(r"(?!EX-)")
# for the below, group the attachmentDocumentType so that we can extract the correct value.
# Example EX-98.1 can become EX-98 based on the group
-attachmentDocumentTypeReqSubDocTypePattern = re.compile(r"(EX-98).*")
+attachmentDocumentTypeReqSubDocTypePattern = re.compile(r"(EX-98|EX-99\.4R HISTORIC).*")
nsPatternNotAllowedinxBRLXML = re.compile(r".*sec.gov/spac/.*")
subTypesWarningforxBRLXml = [
"S-1", "S-1/A", "S-1MEF", "S-4", "S-4/A", "S-4MEF", "S-4EF", "S-4POS", "F-1", "F-1/A", "F-1MEF", "F-4", "F-4/A", "F-4MEF",
diff --git a/validate/Filing.py b/validate/Filing.py
index 6649eba9..3836d75b 100644
--- a/validate/Filing.py
+++ b/validate/Filing.py
@@ -110,7 +110,7 @@ def validateFiling(val, modelXbrl, isEFM=False, isGFM=False):
styleIxHiddenPattern = re.compile(r"(.*[^\w]|^)-sec-ix-hidden\s*:\s*([\w.-]+).*")
styleIxRedactPattern = re.compile(r"(.*;)?\s*-sec-ix-redact\s*:\s*true(?:\s*;)?\s*([\w.-].*)?$")
efmRoleDefinitionPattern = re.compile(r"([0-9]+) - (Statement|Disclosure|Schedule|Document) - (.+)")
- messageKeySectionPattern = re.compile(r"(.*[{]efmSection[}]|[a-z]{2}-[0-9]{4})(.*)")
+ messageKeySectionPattern = re.compile(r"(.*[{]efmSection[}]|[a-z]{2}-[0-9]{4}|dq-)(.*)")
secDomainPattern = re.compile(r"(fasb\.org|xbrl\.sec\.gov)")
val._isStandardUri = {}
@@ -649,9 +649,17 @@ def hasDeiFact(deiName):
val.entityRegistrantName = deiItems.get("EntityRegistrantName") # used for name check in 6.8.6
# 6.05..23,24 check (after dei facts read)
- if not (isEFM and deiDocumentType == "L SDR"): # allow entityIdentifierValue == "0000000000" or any other CIK value
+ if not (isEFM and deiDocumentType in ("L SDR", "K SDR")): # allow entityIdentifierValue == "0000000000" or any other CIK value
if disclosureSystem.deiFilerIdentifierElement in deiItems:
value = deiItems.get(disclosureSystem.deiFilerIdentifierElement)
+ if value == "0000000000":
+ # XBRL Guide 3.1.3 Central Index Key
+ # A dei:EntityCentralIndexKey fact with value a full ten-digit CIK other than 0000000000 from among the co-registrants in the submission header.
+ val.modelXbrl.error("EFM.6.05.02",
+ _("The %(elementName)s, %(value)s, must be a full 10-digit CIK other than 0000000000."),
+ edgarCode="cp-0502-Non-Matching-Cik",
+ modelObject=deiFilerIdentifierFact, elementName=disclosureSystem.deiFilerIdentifierElement,
+ value=value)
if entityIdentifierValue != value:
val.modelXbrl.error(("EFM.6.05.23", "GFM.3.02.02"),
_("The EntityCentralIndexKey, %(value)s, does not match the context identifier CIK %(entityIdentifier)s. "
@@ -1125,15 +1133,20 @@ def sevMessage(sev, messageKey=None, **kwargs):
# replacement for efmSection. Based on sev msgSection
if sev.get("msgSection"):
msgPrefix, _sep, msgSectionNumber = sev["msgSection"].partition(":")
- logArgs[f"{msgPrefix.lower()}Section"] = msgPrefix
logArgs["arelleCode"] = msgPrefix
+ section = f"{msgPrefix.lower()}Section"
+ logArgs[section] = ""
for i, e in enumerate(msgSectionNumber.split(".")):
if i > 0 :
if e.isnumeric(): # e.g. [6,5,2] -> "6.05.02"
e = e.zfill(2)
logArgs["arelleCode"] += "." + e
+ logArgs[section] += e
logArgs["edgarCode"] = messageKey # edgar code is the un-expanded key for message with {...}'s
+ if "-{efmSection}" in logArgs["edgarCode"] and not logArgs.get("efmSection") and logArgs.get("exgSection"):
+ logArgs["edgarCode"] = logArgs["edgarCode"].replace("-{efmSection}", "")
+
try:
m = messageKeySectionPattern.match(messageKey or "")
if m:
@@ -2094,7 +2107,13 @@ def find_fact_in_context(contextID, name=None):
elif validation == "not-in-future":
for name in names:
for f in sevFacts(sev, name):
- if deiDocumentType and f.context.endDatetime > documentTypeFact.context.endDatetime:
+ if (
+ deiDocumentType
+ # invalid context may not have endDatetime
+ and f.context.endDatetime
+ and documentTypeFact.context.endDatetime
+ and f.context.endDatetime > documentTypeFact.context.endDatetime
+ ):
sevMessage(sev, subType=submissionType, modelObject=f, efmSection=efmSection, tag=name, context="context " + f.contextID)
elif validation in ("ru", "ou"):
@@ -2145,10 +2164,12 @@ def find_fact_in_context(contextID, name=None):
if fr is None and f is not None:
sevMessage(sev, subType=submissionType, modelObject=sevFacts(sev), tag=name, otherTag=referenceTag, value=fr.xValue, contextID=fr.contextID)
elif validation == "required-context-duration":
- monthsDuration = (val.requiredContext.endDatetime - val.requiredContext.startDatetime).days / 30.4375 # 30.4375 specified by DERA to use in the transforms for days to months
- if not value - 1 < monthsDuration < value + 1: # fractional months likely due to days per month
- sevMessage(sev, subType=submissionType, modelObject=val.requiredContext, tag="Required Context Period Duration",
- value=f"{monthsDuration:.1f} months", expectedValue=f"{value} months", contextID=val.requiredContext.id)
+ # ensure a valid context is provided with endDatetime and startDatetime
+ if val.requiredContext.endDatetime and val.requiredContext.startDatetime:
+ monthsDuration = (val.requiredContext.endDatetime - val.requiredContext.startDatetime).days / 30.4375 # 30.4375 specified by DERA to use in the transforms for days to months
+ if not value - 1 < monthsDuration < value + 1: # fractional months likely due to days per month
+ sevMessage(sev, subType=submissionType, modelObject=val.requiredContext, tag="Required Context Period Duration",
+ value=f"{monthsDuration:.1f} months", expectedValue=f"{value} months", contextID=val.requiredContext.id)
# fee tagging
elif validation in ("fe", "fw","fo"):
instDurNames = defaultdict(list)
@@ -2554,7 +2575,7 @@ def getEvalFunctionStringAndArgs(sev, functionName, argumentsKey="function-argum
perEnd = fr.xValue + ONE_DAY
for name in names:
f = sevFact(sev, name)
- if f is not None:
+ if f is not None and f.context.endDatetime and f.context.startDatetime:
monthsDuration = (f.context.endDatetime - f.context.startDatetime).days / 30.4375 # 30.4375 specified by DERA to use in the transforms for days to months
if f.context.endDatetime != perEnd or not 11 < monthsDuration < 13:
sevMessage(sev, subType=submissionType, modelObject=sevFacts(sev), tag=name, otherTag=referenceTag, contextID=f.contextID)
@@ -2567,7 +2588,7 @@ def getEvalFunctionStringAndArgs(sev, functionName, argumentsKey="function-argum
factsInMonth = [0 for i in range(12)] # count per month
ns = fr.qname.namespaceURI
for f in modelXbrl.facts:
- if f.qname.namespaceURI == ns:
+ if f.qname.namespaceURI == ns and f.context.endDatetime and f.context.startDatetime:
isMonthDuration = 0.8 < (f.context.endDatetime - f.context.startDatetime).days / 30.4375 < 1.2
monthNbr = 12 - (perEnd - f.context.startDatetime).days / 30.4375
monthInt = int(monthNbr + .2)
diff --git a/validate/XuleInterface.py b/validate/XuleInterface.py
index 411c88e2..0f8bf3e6 100644
--- a/validate/XuleInterface.py
+++ b/validate/XuleInterface.py
@@ -87,9 +87,11 @@ def init(cntlr):
user_defined_xule_rule_set = True
if getattr(xuleOptions, "xule_args_file", None):
user_defined_xule_args_file = True
- # add EDGAR mapping for resource files to disclosureSystem.mappings
- if cntlr.modelManager.disclosureSystem:
- mappedPath = f"{os.sep}__xule_resources_dir__"
+ if xuleValidateFinally is not None: # xule is loaded
+ # add EDGAR mapping for resource files to disclosureSystem.mappings (re-register each call; DisclosureSystem.select() clears mappedPaths)
+ if cntlr.modelManager.disclosureSystem:
+ mappedPath = f"{os.sep}__xule_resources_dir__"
+ if (mappedPath, _xule_resources_dir) not in cntlr.modelManager.disclosureSystem.mappedPaths:
cntlr.modelManager.disclosureSystem.mappedPaths.append((mappedPath, _xule_resources_dir))
normalizedMappedPath = cntlr.webCache.normalizeUrl(mappedPath,None) # normalization occurs within ModelDocument.load()
if normalizedMappedPath != mappedPath: # python 3.13 on Windows also needs to map with drive letter added
diff --git a/validate/__init__.py b/validate/__init__.py
index cf08750a..ac2ee210 100644
--- a/validate/__init__.py
+++ b/validate/__init__.py
@@ -891,7 +891,7 @@ def json(self): # stringify un-jsonable attributes
__pluginInfo__ = {
# Do not use _( ) in pluginInfo itself (it is applied later, after loading
'name': 'Validate EFM',
- 'version': '1.26.1', # SEC EDGAR release 26.1
+ 'version': '1.26.2', # SEC EDGAR release 26.2
'description': '''EFM Validation.''',
'license': 'Apache-2',
'import': ('EDGAR/transform', 'xule'), # SEC inline can use SEC transformations
diff --git a/validate/config.xml b/validate/config.xml
index c6c8081f..09170308 100644
--- a/validate/config.xml
+++ b/validate/config.xml
@@ -6,7 +6,7 @@
+
+
+
+
+ CEF
+ 2026
+ https://xbrl.sec.gov/cef/2026/cef-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/cef/2026
+ cef
+
+
+ CEF
+ 2026
+ https://xbrl.sec.gov/cef/2026/cef-2026_pre.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cef-pre/2026
+ cef-pre
+
+
+
+ COUNTRY
+ 2026
+ https://xbrl.sec.gov/country/2026/country-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/country/2026
+ country
+
+
+ COUNTRY
+ 2026
+ https://xbrl.sec.gov/country/2026/country-2026_def.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/country-def/2026
+ country-def
+
+
+
+ CURRENCY
+ 2026
+ https://xbrl.sec.gov/currency/2026/currency-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/currency/2026
+ currency
+
+
+
+ CYD
+ 2026
+ https://xbrl.sec.gov/cyd/2026/cyd-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/cyd/2026
+ cyd
+
+
+ CYD
+ 2026
+ https://xbrl.sec.gov/cyd/2026/cyd-cr-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-cr/2026
+ cyd-cr
+
+
+ CYD
+ 2026
+ https://xbrl.sec.gov/cyd/2026/cyd-af-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-af/2026
+ cyd-af
+
+
+ CYD
+ 2026
+ https://xbrl.sec.gov/cyd/2026/cyd-af-sub-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-af-sub/2026
+ cyd-af-sub
+
+
+ CYD
+ 2026
+ https://xbrl.sec.gov/cyd/2026/cyd-8k-sub-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-8k-sub/2026
+ cyd-8k-sub
+
+
+ CYD
+ 2026
+ https://xbrl.sec.gov/cyd/2026/cyd-6k-sub-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-6k-sub/2026
+ cyd-6k-sub
+
+
+
+ DEI
+ 2026
+ https://xbrl.sec.gov/dei/2026/dei-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/dei/2026
+ dei
+
+
+ DEI
+ 2026
+ https://xbrl.sec.gov/dei/2026/dei-2026_def.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/dei-def/2026
+ dei-def
+
+
+ DEI
+ 2026
+ https://xbrl.sec.gov/dei/2026/dei-2026_lab.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/dei-lab/2026
+ dei-lab
+
+
+ DEI
+ 2026
+ https://xbrl.sec.gov/dei/2026/dei-2026_pre.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/dei-pre/2026
+ dei-pre
+
+
+ DEI
+ 2026
+ https://xbrl.sec.gov/dei/2026/dei-sub-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/dei-sub/2026
+ dei-sub
+
+
+
+ ECD
+ 2026
+ https://xbrl.sec.gov/ecd/2026/ecd-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/ecd/2026
+ ecd
+
+
+ ECD
+ 2026
+ https://xbrl.sec.gov/ecd/2026/ecd-sub-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/ecd-sub/2026
+ ecd-sub
+
+
+
+ EXCH
+ 2026
+ https://xbrl.sec.gov/exch/2026/exch-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/exch/2026
+ exch
+
+
+
+ FFD
+ 2026
+ https://xbrl.sec.gov/ffd/2026/ffd-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/ffd/2026
+ ffd
+
+
+
+ FND
+ 2026
+ https://xbrl.sec.gov/fnd/2026/fnd-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/fnd/2026
+ fnd
+
+
+ FND
+ 2026
+ https://xbrl.sec.gov/fnd/2026/fnd-2026_lab.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-lab/2026
+ fnd-lab
+
+
+ FND
+ 2026
+ https://xbrl.sec.gov/fnd/2026/fnd-cef-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-cef/2026
+ fnd-cef
+
+
+ FND
+ 2026
+ https://xbrl.sec.gov/fnd/2026/fnd-cef-2026_pre.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-cef-pre/2026
+ fnd-cef-pre
+
+
+ FND
+ 2026
+ https://xbrl.sec.gov/fnd/2026/fnd-oef-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-oef/2026
+ fnd-oef
+
+
+ FND
+ 2026
+ https://xbrl.sec.gov/fnd/2026/fnd-uit-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-uit/2026
+ fnd-uit
+
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-2026q2.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/fnd/2026q2
+ fnd
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-2026q2_lab.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-lab/2026q2
+ fnd-lab
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-cef-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-cef/2026q2
+ fnd-cef
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-cef-2026q2_pre.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-cef-pre/2026q2
+ fnd-cef-pre
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-oef-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-oef/2026q2
+ fnd-oef
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-uit-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-uit/2026q2
+ fnd-uit
+
+
+
+ NAICS
+ 2026
+ https://xbrl.sec.gov/naics/2026/naics-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/naics/2026
+ naics
+
+
+
+ OEF
+ 2026
+ https://xbrl.sec.gov/oef/2026/oef-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/oef/2026
+ oef
+
+
+ OEF
+ 2026
+ https://xbrl.sec.gov/oef/2026/oef-2026_cal.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/oef-cal/2026
+ oef-cal
+
+
+ OEF
+ 2026
+ https://xbrl.sec.gov/oef/2026/oef-2026_lab.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/oef-lab/2026
+ oef-lab
+
+
+ OEF
+ 2026
+ https://xbrl.sec.gov/oef/2026/oef-rr-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/oef-rr/2026
+ oef-rr
+
+
+ OEF
+ 2026
+ https://xbrl.sec.gov/oef/2026/oef-sr-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/oef-sr/2026
+ oef-sr
+
+
+
+ RXP
+ 2026
+ https://xbrl.sec.gov/rxp/2026/rxp-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/rxp/2026
+ rxp
+
+
+
+ SBS
+ 2026
+ https://xbrl.sec.gov/sbs/2026/sbs-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/sbs/2026
+ sbs
+
+
+ SBS
+ 2026
+ https://xbrl.sec.gov/sbs/2026/sbs-sbsef-com-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-com/2026
+ sbs
+
+
+ SBS
+ 2026
+ https://xbrl.sec.gov/sbs/2026/sbs-sbsef-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef/2026
+ sbs-sbsef
+
+
+ SBS
+ 2026
+ https://xbrl.sec.gov/sbs/2026/sbs-sbsef-cco-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-cco/2026
+ sbs-sbsef-cco
+
+
+ SBS
+ 2026
+ https://xbrl.sec.gov/sbs/2026/sbs-sbsef-fex-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-fex/2026
+ sbs-sbsef-fex
+
+
+ SBS
+ 2026
+ https://xbrl.sec.gov/sbs/2026/sbs-sbsef-fin-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-fin/2026
+ sbs-sbsef-fin
+
+
+ SBS
+ 2026
+ https://xbrl.sec.gov/sbs/2026/sbs-sbsef-ocx-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-ocx/2026
+ sbs-sbsef-ocx
+
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-2026q2.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/sbs/2026q2
+ sbs
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbse-cco-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbse-cco/2026q2
+ sbs-sbse-cco
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-com-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-com/2026q2
+ sbs
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef/2026q2
+ sbs-sbsef
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-cco-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-cco/2026q2
+ sbs-sbsef-cco
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-fex-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-fex/2026q2
+ sbs-sbsef-fex
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-fin-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-fin/2026q2
+ sbs-sbsef-fin
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-ocx-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-ocx/2026q2
+ sbs-sbsef-ocx
+
+
+
+ SIC
+ 2026
+ https://xbrl.sec.gov/sic/2026/sic-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/sic/2026
+ sic
+
+
+
+ SNJ
+ 2026
+ https://xbrl.sec.gov/snj/2026/snj-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/snj/2026
+ snj
+
+
+ SNJ
+ 2026
+ https://xbrl.sec.gov/snj/2026/snj-2026_def.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/snj-def/2026
+ snj-def
+
+
+
+ SPAC
+ 2026
+ https://xbrl.sec.gov/spac/2026/spac-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/spac/2026
+ spac
+
+
+ SPAC
+ 2026
+ https://xbrl.sec.gov/spac/2026/spac-2026_lab.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/spac-lab/2026
+ spac
+
+
+ SPAC
+ 2026
+ https://xbrl.sec.gov/spac/2026/spac-despac-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-despac/2026
+ spac-despac
+
+
+ SPAC
+ 2026
+ https://xbrl.sec.gov/spac/2026/spac-proj-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-proj/2026
+ spac-proj
+
+
+ SPAC
+ 2026
+ https://xbrl.sec.gov/spac/2026/spac-reg-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-reg/2026
+ spac-reg
+
+
+ SPAC
+ 2026
+ https://xbrl.sec.gov/spac/2026/spac-com-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-com/2026
+ spac-com
+
+
+
+
+ SRO
+ 2026
+ https://xbrl.sec.gov/sro/2026/sro-17ad27-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sro-17ad27/2026
+ sro-17ad27
+
+
+ SRO
+ 2026
+ https://xbrl.sec.gov/sro/2026/sro-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/sro/2026
+ sro
+
+
+
+ STPR
+ 2026
+ https://xbrl.sec.gov/stpr/2026/stpr-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/stpr/2026
+ stpr
+
+
+
+ VIP
+ 2026
+ https://xbrl.sec.gov/vip/2026/vip-2026.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/vip/2026
+ vip
+
+
+ VIP
+ 2026
+ https://xbrl.sec.gov/vip/2026/vip-n3-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/vip-n3/2026
+ vip-n3
+
+
+ VIP
+ 2026
+ https://xbrl.sec.gov/vip/2026/vip-n4-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/vip-n4/2026
+ vip-n4
+
+
+ VIP
+ 2026
+ https://xbrl.sec.gov/vip/2026/vip-n6-2026.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/vip-n6/2026
+ vip-n6
+
+
+
+ CEF
+ 2025
+ https://xbrl.sec.gov/cef/2025/cef-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/cef/2025
+ cef
+
+
+ CEF
+ 2025
+ https://xbrl.sec.gov/cef/2025/cef-2025_pre.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cef-pre/2025
+ cef-pre
+
+
+
+ COUNTRY
+ 2025
+ https://xbrl.sec.gov/country/2025/country-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/country/2025
+ country
+
+
+ COUNTRY
+ 2025
+ https://xbrl.sec.gov/country/2025/country-2025_def.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/country-def/2025
+ country-def
+
+
+
+ CURRENCY
+ 2025
+ https://xbrl.sec.gov/currency/2025/currency-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/currency/2025
+ currency
+
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/cyd/2025
+ cyd
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-cr-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-cr/2025
+ cyd-cr
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-af-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-af/2025
+ cyd-af
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-af-sub-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-af-sub/2025
+ cyd-af-sub
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-8k-sub-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-8k-sub/2025
+ cyd-8k-sub
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-6k-sub-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-6k-sub/2025
+ cyd-6k-sub
+
+
+
+ DEI
+ 2025
+ https://xbrl.sec.gov/dei/2025/dei-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/dei/2025
+ dei
+
+
+ DEI
+ 2025
+ https://xbrl.sec.gov/dei/2025/dei-2025_def.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/dei-def/2025
+ dei-def
+
+
+ DEI
+ 2025
+ https://xbrl.sec.gov/dei/2025/dei-2025_lab.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/dei-lab/2025
+ dei-lab
+
+
+ DEI
+ 2025
+ https://xbrl.sec.gov/dei/2025/dei-2025_pre.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/dei-pre/2025
+ dei-pre
+
+
+ DEI
+ 2025
+ https://xbrl.sec.gov/dei/2025/dei-sub-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/dei-sub/2025
+ dei-sub
+
+
+
+ ECD
+ 2025
+ https://xbrl.sec.gov/ecd/2025/ecd-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/ecd/2025
+ ecd
+
+
+ ECD
+ 2025
+ https://xbrl.sec.gov/ecd/2025/ecd-sub-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/ecd-sub/2025
+ ecd-sub
+
+
+
+ EXCH
+ 2025
+ https://xbrl.sec.gov/exch/2025/exch-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/exch/2025
+ exch
+
+
+
+ FFD
+ 2025
+ https://xbrl.sec.gov/ffd/2025/ffd-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/ffd/2025
+ ffd
+
+
+ FFD
+ 2025q4
+ https://xbrl.sec.gov/ffd/2025q4/ffd-2025q4.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/ffd/2025q4
+ ffd
+
+
+
+ FND
+ 2025
+ https://xbrl.sec.gov/fnd/2025/fnd-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/fnd/2025
+ fnd
+
+
+ FND
+ 2025
+ https://xbrl.sec.gov/fnd/2025/fnd-2025_lab.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-lab/2025
+ fnd-lab
+
+
+ FND
+ 2025
+ https://xbrl.sec.gov/fnd/2025/fnd-cef-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-cef/2025
+ fnd-cef
+
+
+ FND
+ 2025
+ https://xbrl.sec.gov/fnd/2025/fnd-cef-2025_pre.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-cef-pre/2025
+ fnd-cef-pre
+
+
+ FND
+ 2025
+ https://xbrl.sec.gov/fnd/2025/fnd-oef-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-oef/2025
+ fnd-oef
+
+
+ FND
+ 2025
+ https://xbrl.sec.gov/fnd/2025/fnd-uit-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-uit/2025
+ fnd-uit
+
+
+
+ NAICS
+ 2025
+ https://xbrl.sec.gov/naics/2025/naics-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/naics/2025
+ naics
+
+
+
+ OEF
+ 2025
+ https://xbrl.sec.gov/oef/2025/oef-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/oef/2025
+ oef
+
+
+ OEF
+ 2025
+ https://xbrl.sec.gov/oef/2025/oef-2025_cal.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/oef-cal/2025
+ oef-cal
+
+
+ OEF
+ 2025
+ https://xbrl.sec.gov/oef/2025/oef-2025_lab.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/oef-lab/2025
+ oef-lab
+
+
+ OEF
+ 2025
+ https://xbrl.sec.gov/oef/2025/oef-rr-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/oef-rr/2025
+ oef-rr
+
+
+ OEF
+ 2025
+ https://xbrl.sec.gov/oef/2025/oef-sr-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/oef-sr/2025
+ oef-sr
+
+
+
+ RXP
+ 2025
+ https://xbrl.sec.gov/rxp/2025/rxp-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/rxp/2025
+ rxp
+
+
+
+ SBS
+ 2025
+ https://xbrl.sec.gov/sbs/2025/sbs-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/sbs/2025
+ sbs
+
+
+ SBS
+ 2025
+ https://xbrl.sec.gov/sbs/2025/sbs-sbsef-com-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-com/2025
+ sbs
+
+
+ SBS
+ 2025
+ https://xbrl.sec.gov/sbs/2025/sbs-sbsef-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef/2025
+ sbs-sbsef
+
+
+ SBS
+ 2025
+ https://xbrl.sec.gov/sbs/2025/sbs-sbsef-cco-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-cco/2025
+ sbs-sbsef-cco
+
+
+ SBS
+ 2025
+ https://xbrl.sec.gov/sbs/2025/sbs-sbsef-fex-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-fex/2025
+ sbs-sbsef-fex
+
+
+ SBS
+ 2025
+ https://xbrl.sec.gov/sbs/2025/sbs-sbsef-fin-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-fin/2025
+ sbs-sbsef-fin
+
+
+ SBS
+ 2025
+ https://xbrl.sec.gov/sbs/2025/sbs-sbsef-ocx-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-ocx/2025
+ sbs-sbsef-ocx
+
+
+
+ SIC
+ 2025
+ https://xbrl.sec.gov/sic/2025/sic-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/sic/2025
+ sic
+
+
+
+ SNJ
+ 2025
+ https://xbrl.sec.gov/snj/2025/snj-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/snj/2025
+ snj
+
+
+ SNJ
+ 2025
+ https://xbrl.sec.gov/snj/2025/snj-2025_def.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/snj-def/2025
+ snj-def
+
+
+
+ SPAC
+ 2025q3
+ https://xbrl.sec.gov/spac/2025q3/spac-2025q3.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/spac/2025q3
+ spac
+
+
+ SPAC
+ 2025q3
+ https://xbrl.sec.gov/spac/2025q3/spac-2025q3_lab.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/spac-lab/2025q3
+ spac
+
+
+ SPAC
+ 2025q3
+ https://xbrl.sec.gov/spac/2025q3/spac-despac-2025q3.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-despac/2025q3
+ spac-despac
+
+
+ SPAC
+ 2025q3
+ https://xbrl.sec.gov/spac/2025q3/spac-proj-2025q3.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-proj/2025q3
+ spac-proj
+
+
+ SPAC
+ 2025q3
+ https://xbrl.sec.gov/spac/2025q3/spac-reg-2025q3.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-reg/2025q3
+ spac-reg
+
+
+ SPAC
+ 2025q3
+ https://xbrl.sec.gov/spac/2025q3/spac-com-2025q3.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-com/2025q3
+ spac-com
+
+
+
+ SPAC
+ 2025
+ https://xbrl.sec.gov/spac/2025/spac-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/spac/2025
+ spac
+
+
+ SPAC
+ 2025
+ https://xbrl.sec.gov/spac/2025/spac-2025_lab.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/spac-lab/2025
+ spac
+
+
+ SPAC
+ 2025
+ https://xbrl.sec.gov/spac/2025/spac-despac-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-despac/2025
+ spac-despac
+
+
+ SPAC
+ 2025
+ https://xbrl.sec.gov/spac/2025/spac-proj-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-proj/2025
+ spac-proj
+
+
+ SPAC
+ 2025
+ https://xbrl.sec.gov/spac/2025/spac-reg-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-reg/2025
+ spac-reg
+
+
+ SPAC
+ 2025
+ https://xbrl.sec.gov/spac/2025/spac-com-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/spac-com/2025
+ spac-com
+
+
+
+ SRO
+ 2025
+ https://xbrl.sec.gov/sro/2025/sro-17ad27-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sro-17ad27/2025
+ sro-17ad27
+
+
+ SRO
+ 2025
+ https://xbrl.sec.gov/sro/2025/sro-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/sro/2025
+ sro
+
+
+
+ STPR
+ 2025
+ https://xbrl.sec.gov/stpr/2025/stpr-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/stpr/2025
+ stpr
+
+
+
+ VIP
+ 2025
+ https://xbrl.sec.gov/vip/2025/vip-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/vip/2025
+ vip
+
+
+ VIP
+ 2025
+ https://xbrl.sec.gov/vip/2025/vip-n3-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/vip-n3/2025
+ vip-n3
+
+
+ VIP
+ 2025
+ https://xbrl.sec.gov/vip/2025/vip-n4-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/vip-n4/2025
+ vip-n4
+
+
+ VIP
+ 2025
+ https://xbrl.sec.gov/vip/2025/vip-n6-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/vip-n6/2025
+ vip-n6
+
+
+
+
+
+ IFRS
+ 2025
+ https://xbrl.ifrs.org/taxonomy/2025-03-27/full_ifrs/full_ifrs-cor_2025-03-27.xsd
+ SCH
+ Schema
+ 1
+ https://xbrl.ifrs.org/taxonomy/2025-03-27/ifrs-full
+ ifrs-full
+
+
+ IFRS
+ 2025
+ https://xbrl.ifrs.org/taxonomy/2025-03-27/full_ifrs/dimensions/dim_full_ifrs_2025-03-27_role-995000.xml
+ DEF
+ Definition, Dimensions
+ 0
+
+
+ IFRS
+ 2025
+ https://xbrl.ifrs.org/taxonomy/2025-03-27/full_ifrs/dimensions-ea/dim_ifrs_ea_2025-03-27_role-995000.xml
+ DEF
+ Definition, Dimensions
+ 0
+
+
+ IFRS
+ 2025
+ https://xbrl.ifrs.org/taxonomy/2025-03-27/full_ifrs/dimensions/rol_full_ifrs-dim_2025-03-27.xsd
+ SCH
+ Roles
+ 0
+ https://xbrl.ifrs.org/role/ifrs/dimensions_2025-03-27
+ rol_dim
+
+
+ IFRS
+ 2025
+ https://xbrl.ifrs.org/taxonomy/2025-03-27/full_ifrs/dimensions-ea/rol_ifrs_ea-dim_2025-03-27.xsd
+ SCH
+ Roles
+ 0
+ https://xbrl.ifrs.org/role/ifrs-ea/dimensions_2025-03-27
+ rol_dim
+
+
+ IFRS
+ 2025
+ https://xbrl.org/2020/extensible-enumerations-2.0.xsd
+ SCH
+ Schema
+ 0
+ http://xbrl.org/2020/extensible-enumerations-2.0
+ enum2
+
+
+
+ IFRS
+ 2025
+ http://xbrl.org/2020/extensible-enumerations-2.0.xsd
+ SCH
+ Schema
+ 0
+ http://xbrl.org/2020/extensible-enumerations-2.0
+ enum2
+
+
+
+
+ US GAAP
+ 2026
+ https://xbrl.fasb.org/us-gaap/2026/ebp/elts/us-gaap-ebp-2026.xsd
+ SCH
+ Schema
+ 1
+ http://fasb.org/us-gaap-ebp/2026
+ us-gaap
+
+
+ US GAAP
+ 2026
+ https://xbrl.fasb.org/us-gaap/2026/elts/us-gaap-2026.xsd
+ SCH
+ Schema
+ 1
+ http://fasb.org/us-gaap/2026
+ us-gaap
+
+
+ US GAAP
+ 2026
+ https://xbrl.fasb.org/srt/2026/elts/srt-2026.xsd
+ SCH
+ Schema
+ 1
+ http://fasb.org/srt/2026
+ srt
+
+
+ US GAAP
+ 2026
+ https://xbrl.fasb.org/us-gaap/2026/elts/us-types-2026.xsd
+ SCH
+ Schema
+ 0
+ http://fasb.org/us-types/2026
+ us-types
+
+
+ US GAAP
+ 2026
+ https://xbrl.fasb.org/us-gaap/2026/elts/us-roles-2026.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://fasb.org/us-roles/2026
+
+
+ US GAAP
+ 2026
+ https://xbrl.fasb.org/srt/2026/elts/srt-types-2026.xsd
+ SCH
+ Schema
+ 0
+ http://fasb.org/srt-types/2026
+ srt-types
+
+
+ US GAAP
+ 2026
+ https://xbrl.fasb.org/srt/2026/elts/srt-roles-2026.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://fasb.org/srt-roles/2026
+
+
+
+ US GAAP
+ 2025
+ https://xbrl.fasb.org/us-gaap/2025/ebp/elts/us-gaap-ebp-2025.xsd
+ SCH
+ Schema
+ 1
+ http://fasb.org/us-gaap-ebp/2025
+ us-gaap
+
+
+ US GAAP
+ 2025
+ https://xbrl.fasb.org/us-gaap/2025/elts/us-gaap-2025.xsd
+ SCH
+ Schema
+ 1
+ http://fasb.org/us-gaap/2025
+ us-gaap
+
+
+ US GAAP
+ 2025
+ https://xbrl.fasb.org/srt/2025/elts/srt-2025.xsd
+ SCH
+ Schema
+ 1
+ http://fasb.org/srt/2025
+ srt
+
+
+ US GAAP
+ 2025
+ https://xbrl.fasb.org/us-gaap/2025/elts/us-types-2025.xsd
+ SCH
+ Schema
+ 0
+ http://fasb.org/us-types/2025
+ us-types
+
+
+ US GAAP
+ 2025
+ https://xbrl.fasb.org/us-gaap/2025/elts/us-roles-2025.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://fasb.org/us-roles/2025
+
+
+ US GAAP
+ 2025
+ https://xbrl.fasb.org/srt/2025/elts/srt-types-2025.xsd
+ SCH
+ Schema
+ 0
+ http://fasb.org/srt-types/2025
+ srt-types
+
+
+ US GAAP
+ 2025
+ https://xbrl.fasb.org/srt/2025/elts/srt-roles-2025.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://fasb.org/srt-roles/2025
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-2025.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/cyd/2025
+ cyd
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-cr-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-cr/2025
+ cyd-cr
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-af-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-af/2025
+ cyd-af
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-af-sub-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-af-sub/2025
+ cyd-af-sub
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-8k-sub-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-8k-sub/2025
+ cyd-8k-sub
+
+
+ CYD
+ 2025
+ https://xbrl.sec.gov/cyd/2025/cyd-6k-sub-2025.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/cyd-6k-sub/2025
+ cyd-6k-sub
+
+
+ BASE
+ 2023
+ https://www.xbrl.org/2023/calculation-1.1.xsd
+ SCH
+ Schema
+ 0
+ https://xbrl.org/2023/calculation-1.1
+
+
+ BASE
+ 2014
+ http://www.xbrl.org/2014/extensible-enumerations.xsd
+ SCH
+ Schema
+ 0
+ http://xbrl.org/2014/extensible-enumerations
+ enum
+
+
+ IFRS
+ 2022
+ http://www.xbrl.org/lrr/arcrole/esma-arcrole-2018-11-21.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.esma.europa.eu/xbrl/esef/arcrole/wider-narrower
+
+
+ US GAAP
+ 2023
+ http://www.xbrl.org/lrr/role/net-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/net
+
+
+ US GAAP
+ 2023
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+ US GAAP
+ 2023
+ http://www.xbrl.org/lrr/arcrole/factExplanatory-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/arcrole/fact-explanatoryFact
+
+
+ US GAAP
+ 2023
+ http://www.xbrl.org/lrr/arcrole/esma-arcrole-2018-11-21.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.esma.europa.eu/xbrl/esef/arcrole/wider-narrower
+
+
+ US GAAP
+ 2023
+ https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd
+ SCH
+ Schema
+ 0
+ http://xbrl.org/2020/extensible-enumerations-2.0
+ enum2
+
+
+ US GAAP
+ 2022
+ http://www.xbrl.org/lrr/role/net-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/net
+
+
+ US GAAP
+ 2022
+ https://www.xbrl.org/dtr/type/2020-01-21/types.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/dtr/type/2020-01-21
+
+
+ US GAAP
+ 2022
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+ US GAAP
+ 2022
+ http://www.xbrl.org/lrr/arcrole/factExplanatory-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/arcrole/fact-explanatoryFact
+
+
+ US GAAP
+ 2022
+ http://www.xbrl.org/lrr/arcrole/esma-arcrole-2018-11-21.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.esma.europa.eu/xbrl/esef/arcrole/wider-narrower
+
+
+ US GAAP
+ 2022
+ https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd
+ SCH
+ Schema
+ 0
+ http://xbrl.org/2020/extensible-enumerations-2.0
+ enum2
+
+
+ CEF
+ 2023
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+ CEF
+ 2022
+ https://www.xbrl.org/dtr/type/2020-01-21/types.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/dtr/type/2020-01-21
+
+
+ CEF
+ 2022
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+ VIP
+ 2022
+ https://www.xbrl.org/dtr/type/2020-01-21/types.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/dtr/type/2020-01-21
+
+
+ VIP
+ 2022
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+ RR
+ 2023
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+ RR
+ 2022
+ https://www.xbrl.org/dtr/type/2020-01-21/types.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/dtr/type/2020-01-21
+
+
+ RR
+ 2022
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+
+ CEF
+ 2021Q4
+ https://www.xbrl.org/dtr/type/2020-01-21/types.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/dtr/type/2020-01-21
+
+
+ CEF
+ 2021Q4
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+
+ IFRS
+ 2021
+ http://www.xbrl.org/lrr/arcrole/esma-arcrole-2018-11-21.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.esma.europa.eu/xbrl/esef/arcrole/wider-narrower
+
+
+
+ US GAAP
+ 2021
+ http://www.xbrl.org/lrr/role/net-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/net
+
+
+ US GAAP
+ 2021
+ https://www.xbrl.org/dtr/type/2020-01-21/types.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/dtr/type/2020-01-21
+
+
+ US GAAP
+ 2021
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+ US GAAP
+ 2021
+ http://www.xbrl.org/lrr/arcrole/factExplanatory-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/arcrole/fact-explanatoryFact
+
+
+ US GAAP
+ 2021
+ http://www.xbrl.org/lrr/arcrole/esma-arcrole-2018-11-21.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.esma.europa.eu/xbrl/esef/arcrole/wider-narrower
+
+
+ US GAAP
+ 2021
+ https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd
+ SCH
+ Schema
+ 0
+ http://xbrl.org/2020/extensible-enumerations-2.0
+ enum2
+
+
+
+ RR
+ 2021
+ https://www.xbrl.org/dtr/type/2020-01-21/types.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/dtr/type/2020-01-21
+
+
+ RR
+ 2021
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+
+ BASE
+ 2022
+ https://www.xbrl.org/dtr/type/2022-03-31/types.xsd
+ SCH
+ Schema
+ 0
+ http://www.xbrl.org/dtr/type/2022-03-31
+
+
+ BASE
+ 2024
+ https://www.xbrl.org/dtr/type/2024-01-31/types.xsd
+ SCH
+ Schema
+ 0
+ http://www.xbrl.org/dtr/type/2024-01-31
+
+
+ BASE
+ 2020
+ https://www.xbrl.org/dtr/type/2020-01-21/types.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/dtr/type/2020-01-21
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/2006/xbrldi-2006.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.org/2006/xbrldi
+ xbrldi
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/2005/xbrldt-2005.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.org/2005/xbrldt
+ xbrldt
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/lrr/role/net-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/net
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/negated
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/lrr/role/deprecated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/role/deprecated
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/lrr/arcrole/factExplanatory-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/arcrole/fact-explanatoryFact
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/lrr/arcrole/deprecated-2009-12-16.xsd
+ SCH
+ Roles/Arcroles
+ 0
+ http://www.xbrl.org/2009/arcrole/deprecated
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/dtr/type/numeric-2009-12-16.xsd
+ SCH
+ Schema
+ 0
+ http://www.xbrl.org/dtr/type/numeric
+ num
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd
+ SCH
+ Schema
+ 0
+ http://www.xbrl.org/dtr/type/non-numeric
+ nonnum
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/2006/ref-2006-02-27.xsd
+ SCH
+ Schema
+ 0
+ http://www.xbrl.org/2006/ref
+ ref
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/2004/ref-2004-08-10.xsd
+ SCH
+ Schema
+ 0
+ http://www.xbrl.org/2004/ref
+ ref
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/2003/xlink-2003-12-31.xsd
+ SCH
+ Schema
+ 0
+ http://www.w3.org/1999/xlink
+ xlink
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/2003/xl-2003-12-31.xsd
+ SCH
+ Schema
+ 0
+ http://www.xbrl.org/2003/XLink
+ xl
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd
+ SCH
+ Schema
+ 0
+ http://www.xbrl.org/2003/linkbase
+ link
+
+
+ BASE
+ 2010
+ http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd
+ SCH
+ Schema
+ 0
+ http://www.xbrl.org/2003/instance
+ xbrli
+
+
diff --git a/validate/resources/edgartaxonomies/edgartaxonomies-all-years.xml b/validate/resources/edgartaxonomies/edgartaxonomies-all-years.xml
index 071cca93..1e2a01dd 100644
--- a/validate/resources/edgartaxonomies/edgartaxonomies-all-years.xml
+++ b/validate/resources/edgartaxonomies/edgartaxonomies-all-years.xml
@@ -1,5 +1,5 @@
-
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-2026q2.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/fnd/2026q2
+ fnd
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-2026q2_lab.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-lab/2026q2
+ fnd-lab
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-cef-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-cef/2026q2
+ fnd-cef
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-cef-2026q2_pre.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-cef-pre/2026q2
+ fnd-cef-pre
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-oef-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-oef/2026q2
+ fnd-oef
+
+
+ FND
+ 2026q2
+ https://xbrl.sec.gov/fnd/2026q2/fnd-uit-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/fnd-uit/2026q2
+ fnd-uit
+
NAICS
@@ -419,6 +480,87 @@ are not subject to domestic copyright protection. 17 U.S.C. 105.
http://xbrl.sec.gov/sbs-sbsef-ocx/2026
sbs-sbsef-ocx
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-2026q2.xsd
+ SCH
+ Schema
+ 1
+ http://xbrl.sec.gov/sbs/2026q2
+ sbs
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbse-cco-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbse-cco/2026q2
+ sbs-sbse-cco
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-com-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-com/2026q2
+ sbs
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef/2026q2
+ sbs-sbsef
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-cco-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-cco/2026q2
+ sbs-sbsef-cco
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-fex-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-fex/2026q2
+ sbs-sbsef-fex
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-fin-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-fin/2026q2
+ sbs-sbsef-fin
+
+
+ SBS
+ 2026q2
+ https://xbrl.sec.gov/sbs/2026q2/sbs-sbsef-ocx-2026q2.xsd
+ SCH
+ Entry Point
+ 0
+ http://xbrl.sec.gov/sbs-sbsef-ocx/2026q2
+ sbs-sbsef-ocx
+
SIC
diff --git a/validate/resources/ft-validations.json b/validate/resources/ft-validations.json
index 5ff1c3cf..abc4237d 100644
--- a/validate/resources/ft-validations.json
+++ b/validate/resources/ft-validations.json
@@ -6064,7 +6064,8 @@
},
{
"sub-types": [
- "@offset-p"
+ "@offset-p",
+ "424I"
],
"xbrl-names": [
"ffd:OffsetPrrFileNb"
diff --git a/validate/resources/ixbrl-transform-registries.json b/validate/resources/ixbrl-transform-registries.json
index 17b9348d..dd1fb1f5 100644
--- a/validate/resources/ixbrl-transform-registries.json
+++ b/validate/resources/ixbrl-transform-registries.json
@@ -4,7 +4,7 @@
"Data and content created by government employees within the scope of their employment",
"are not subject to domestic copyright protection. 17 U.S.C. 105."
],
- "version": "EDGAR release 26.1",
+ "version": "EDGAR release 26.2",
"description": [
"Each JSON object key is a supported namespace and the value is its required prefix."
],
diff --git a/validate/resources/taxonomy-compatibility.json b/validate/resources/taxonomy-compatibility.json
index d2538d97..8e779124 100644
--- a/validate/resources/taxonomy-compatibility.json
+++ b/validate/resources/taxonomy-compatibility.json
@@ -45,7 +45,7 @@
"stx-core-2025": ["dei/2025", "country/2025", "currency/2025", "exch/2025", "naics/2025", "sic/2025", "stpr/2025"],
"stx-extended-2025": ["@stx-core-2025", "cyd/2025", "oef/2025", "snj/2025", "rxp/2025", "ecd/2025", "fnd/2025", "sro/2025", "sbs/2025", "spac/2025", "spac/2025q3"],
"stx-core-2026": ["dei/2026", "country/2026", "currency/2026", "exch/2026", "naics/2026", "sic/2026", "stpr/2026"],
- "stx-extended-2026": ["@stx-core-2026", "cyd/2026", "oef/2026", "snj/2026", "rxp/2026", "ecd/2026", "fnd/2026", "sro/2026", "sbs/2026", "spac/2026"]
+ "stx-extended-2026": ["@stx-core-2026", "cyd/2026", "oef/2026", "snj/2026", "rxp/2026", "ecd/2026", "fnd/2026", "fnd/2026q2", "sro/2026", "sbs/2026", "sbs/2026q2", "spac/2026"]
},
"compatible-classes": {
"comment1": "entries for previously-supported taxonomies, such as disclosure mode efm-pragmatic-all-years",
diff --git a/view/ixviewer-plus/dist/497.bundle.fe4e693c4cb96df118d2.min.js b/view/ixviewer-plus/dist/497.bundle.862d1b1dc31ed6cf4402.min.js
similarity index 99%
rename from view/ixviewer-plus/dist/497.bundle.fe4e693c4cb96df118d2.min.js
rename to view/ixviewer-plus/dist/497.bundle.862d1b1dc31ed6cf4402.min.js
index 0dfdc4d4..d7e11c3a 100644
--- a/view/ixviewer-plus/dist/497.bundle.fe4e693c4cb96df118d2.min.js
+++ b/view/ixviewer-plus/dist/497.bundle.862d1b1dc31ed6cf4402.min.js
@@ -1,3 +1,3 @@
-/*! For license information please see 497.bundle.fe4e693c4cb96df118d2.min.js.LICENSE.txt */
-(()=>{var __webpack_modules__={4497:(e,t,n)=>{"use strict";var r=n(9112);function i(e){return Boolean(e)}var o={version:"26.1",featureSet:"plus",appStart:0,loadPhaseComplete:0,appWindow:"undefined"==typeof window?{}:window.frameElement&&"ixvFrame"===window.frameElement.id?window.parent:window,loadedViaRedirect:"undefined"!=typeof window&&(!(!window.frameElement||"ixvFrame"!==window.frameElement.id)||void 0),perfTableJs:[],perfTableDom:[],elapsedPerfTable:[],discretePerfTable:[],logPerfParam:!1,unused:"test",axesCount:0,membersCount:0,memberLimit:750,getSearchCriteria:{},isNcsr:!1,sumOfDocsSizes:0,docSizeFallbackLimit:7e7,scrollPosition:"undefined"!=typeof window&&window.localStorage.getItem("scrollPosition")||"start",hoverOption:"undefined"!=typeof window&&"true"===window.localStorage.getItem("hoverOption")||!1,getHTMLAttributes:{},getPaginationPerPage:10,factCount:null,getMetaSourceDocuments:[],getMetaTags:[],getInstances:[],getCurrentInstance:function(){return o.getInstances.find(function(e){return e.current})},getInlineFiles:[],sections:[],setSections:function(e){e&&(o.sections=e,sessionStorage.setItem("sections",JSON.stringify(e)))},getSectionsFromSessionStorage:function(){var e=sessionStorage.getItem("sections");return JSON.parse(e||"[]")},getStdRef:{},getFormInformation:{},getMetaCustomPrefix:null,getMetaDts:null,getMetaDocuments:function(e){return e&&"string"==typeof e&&o.getMetaDts&&o.getMetaDts[e]?o.getMetaDts[e]:null},getScrollPosition:function(){return document.getElementById("dynamic-xbrl-form").scrollTop},getNavBarsHeight:function(){var e;return(null===(e=document.querySelector('div[id="topNavs"]'))||void 0===e?void 0:e.offsetHeight)||0},sideBarPaginationState:{pageNumber:0,totalPages:0}},a=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},s=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},u={map:new Map,init:function(e){var t=performance.now();u.map.clear(),Array.from(new Map(s([],a(e),!1)),function(e){e[1].id&&(u.map.delete(e[0]),u.map.set(e[1].id,e[1]))});var n=performance.now();o.logPerfParam&&function(e,t,n,r){void 0===r&&(r=!1);var i=Number((n-(r?o.appStart:o.loadPhaseComplete)).toFixed(0)),a=Number((n-t).toFixed(0));o.perfTableJs.push({perfMetric:e,moduleTime:a,elapsedTime:i}),e.includes("initSearch")&&(console.log("Performance for "+o.appWindow.location.href),console.table(o.perfTableJs))}("FactMap.init",t,n)},asArray:function(){return s([],a(u.map.values()),!1)},setHighlightedFacts:function(e){var t,n;if(e){var r=new Set(e);try{for(var i=l(u.map),o=i.next();!o.done;o=i.next()){var s=a(o.value,2),c=(s[0],s[1]);c.isHighlight=r.has(c.id)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}}},setEnabledFacts:function(e){var t,n,r=new Set(e);try{for(var i=l(u.map),o=i.next();!o.done;o=i.next()){var s=a(o.value,2),c=(s[0],s[1]);c.isEnabled=r.has(c.id)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},resetEnabledFacts:function(){u.map.forEach(function(e){e.isEnabled=!0})},getAllPeriods:function(){var e=Array.from(new Map(s([],a(u.map),!1)),function(e){return e[1].period}).filter(Boolean).sort(function(e,t){return t.slice(-4)-e.slice(-4)});return s([],a(new Set(e)),!1).reduce(function(e,t){return Object.prototype.hasOwnProperty.call(e,t.slice(-4))?e[t.slice(-4)].values.push(t):e[t.slice(-4)]={values:[t]},e},{})},getAllMeasures:function(){var e=s([],a(u.map),!1).map(function(e){var t=a(e,2);return t[0],t[1].measure}).filter(i).sort();return s([],a(new Set(e)),!1)},getAllAxis:function(){var e=Array.from(new Map(s([],a(u.map),!1)),function(e){return e[1].segment?e[1].segment.map(function(e){return e.type?{type:e.type,value:e.axis}:Array.isArray(e)?e.map(function(e){return{type:e.type,value:e.axis}}):void 0}).flat().filter(Boolean):null}).filter(Boolean);return s([],a(new Map(e.flat().map(function(e){return[e.value,e]})).values()),!1).sort(function(e,t){return e.value.split(":")[1]t.value.split(":")[1]?1:0})},getAllMembers:function(){var e=Array.from(new Map(s([],a(u.map),!1)),function(e){return e[1].segment?e[1].segment.map(function(e){return e.member?{type:e.type,value:e.member}:Array.isArray(e)?e.map(function(e){return{type:e.type,value:e.member}}):void 0}).flat().filter(Boolean):null}).filter(Boolean);return s([],a(new Map(e.flat().map(function(e){return[e.value,e]})).values()),!1).sort(function(e,t){return e.value.split(":")[1]t.value.split(":")[1]?1:0})},getAllScales:function(){var e=["Trillions","Hundred Billions","Ten Billions","Billions","Hundred Millions","Ten Millions","Millions","Hundred Thousands","Ten Thousands","Thousands","Hundreds","Tens","Zero","Tenths","Hundredths","Thousandths","Ten Thousandths","Hundred Thousandths","Millionths"];return s([],a(new Set(Array.from(new Map(s([],a(u.map),!1)),function(e){return e[1].scale}).filter(i))),!1).sort(function(t,n){return e.indexOf(t)-e.indexOf(n)})},getByID:function(e){return u.map.has(e)?u.map.get(e)||null:(console.error("Fact id not found:",e),null)},getByName:function(e,t){void 0===t&&(t=!1);var n=Array.from(new Map(s([],a(u.map),!1)),function(t){if(t[1].name===e)return t[1].value}).filter(Boolean);return t?n.length?"".concat(n[0]," / ").concat(u.getByName(t)):"Not Available.":n.length?n[0]:"Not Available."},getByNameContextRef:function(e,t){var n=Array.from(new Map(s([],a(u.map),!1)),function(n){if(n[1].name===e&&n[1].contextRef===t)return n[1]}).filter(Boolean);return n.length?n[0]:null},getEnabledFacts:function(){return Array.from(new Map(s([],a(u.map),!1)),function(e){if(e[1].isEnabled)return{id:e[1].id,isAdditional:e[1].isAdditional}}).filter(Boolean)},getEnabledHighlightedFacts:function(){return Array.from(new Map(s([],a(u.map),!1)),function(e){if(e[1].isEnabled&&e[1].isHighlight)return{id:e[1].id,isAdditional:e[1].isAdditional}}).filter(Boolean)},getFullFacts:function(){var e=0!==Object.keys(o.getSearchCriteria).length;return Array.from(new Map(s([],a(u.map),!1)),function(t){if(e){if(t[1].isEnabled&&t[1].isHighlight)return t[1]}else if(t[1].isEnabled)return t[1]}).filter(Boolean)},getFactCount:function(){var e=0!==Object.keys(o.getSearchCriteria).length;return s([],a(u.map.values()),!1).filter(function(t){return t.isEnabled&&(!e||t.isHighlight)}).length.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},getTextFactCount:function(){return u.asArray().filter(function(e){return e.isTextOnly}).length},getNumberFactCount:function(){return u.asArray().filter(function(e){return e.isAmountsOnly}).length},getFactCountForFile:function(e){var t=0!==Object.keys(o.getSearchCriteria).length;return s([],a(u.map.values()),!1).filter(function(t){return t.file==e}).filter(function(e){return e.isEnabled&&(!t||e.isHighlight)}).length.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},setIsSelected:function(e){u.map.forEach(function(t){var n,r,i=document.getElementById(t.id);e===t.id?(t.isSelected=!0,null==i||i.setAttribute("selected-fact","true"),null===(n=t.continuedIDs)||void 0===n||n.forEach(function(e){var t;null===(t=document.getElementById(e))||void 0===t||t.setAttribute("selected-fact","true")})):(t.isSelected=!1,null==i||i.setAttribute("selected-fact","false"),null===(r=t.continuedIDs)||void 0===r||r.forEach(function(e){var t;null===(t=document.getElementById(e))||void 0===t||t.setAttribute("selected-fact","false")}))})},getTagLine:function(){var e;return null===(e=s([],a(u.map),!1).map(function(e){if(e[1].isAmountsOnly)return{name:e[1].name,periodDates:e[1].periodDates,value:+(e[1].value||0)}}).filter(i).reduce(function(e,t){void 0===e&&(e=[]);var n=e.findIndex(function(e){return e.name===t.name});return n>-1?e[n].data.push({periodDates:t.periodDates,value:t.value}):e.push({name:t.name,data:[{periodDates:t.periodDates,value:t.value}]}),e},[]))||void 0===e?void 0:e.filter(function(e){return e.data=e.data.map(function(e){var t,n=new Set;return null===(t=e.periodDates)||void 0===t||t.filter(function(e){return!n.has(e.periodDates)&&(n.add(e.periodDates),!0)}),e.periodDates.length>1?e:null}).filter(i),e.data.length>1}).sort(function(e,t){return e.name.localeCompare(t.name)})}},c=n(870),f=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},h=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i5e3?"strict":"full",document:{id:"id",index:h([],f(e.standardProps),!1)}}),e.indexCount=t.size,u.init(t),function(){var e=u.getAllAxis();o.axesCount=e.length;var t=u.getAllMembers();o.membersCount=t.length}();var i=function(e){if(e)return e.map(function(e){return Array.isArray(e)?e.map(function(e){return e.axis}):e.axis})},a=function(e){if(e)return e.map(function(e){return Array.isArray(e)?e.map(function(e){return e.member}):e.member})};return t.forEach(function(e,t){var r,s,l,u,c,f,h,d,p={id:t,content:null===(r=null==e?void 0:e.filterContent)||void 0===r?void 0:r.content,raw:(null==e?void 0:e.format)?"".concat(null==e?void 0:e.raw.toString()):null,factname:null==e?void 0:e.name,contextRef:null==e?void 0:e.contextRef,labels:null===(s=e.filterContent)||void 0===s?void 0:s.labels,definitions:null===(l=null==e?void 0:e.filterContent)||void 0===l?void 0:l.definitions,period:e.period,measure:e.measure,axis:(null==e?void 0:e.segment)&&o.axesCount<750?i(null==e?void 0:e.segment):null,member:(null==e?void 0:e.segment)&&o.membersCount0&&!(null===(d=null==e?void 0:e.segment)||void 0===d?void 0:d.map(function(e){return e.dimension}).length)).toString(),negative:e.isNegativeOnly?e.isNegativeOnly.toString():null,additional:e.isAdditional?e.isAdditional.toString():null};n.index.add(p)}),new Promise(function(e){e({msg:"search init complete"})})},e.searchFacts=function(t,n){var r;void 0===n&&(n=!1);var i=[null,"factname","content","labels","definitions","dimensions"],o=null===(r=t.options)||void 0===r?void 0:r.reduce(function(n,r){return i[r]&&("content"===i[r]?(n.push({field:"raw",query:t.value,bool:"or",limit:e.indexCount}),n.push({field:"content",query:t.value,bool:"or",limit:e.indexCount})):"references"===i[r]?e.referenceProps.forEach(function(r){n.push({field:r,query:t.value,bool:"or",limit:e.indexCount})}):n.push({field:i[r],query:t.value,bool:"or",limit:e.indexCount})),n},[]),a=this.index.search(o);return h([],f(new Set([].concat.apply([],h([],f(a.map(function(e){return e.result})),!1)))),!1)},e.filterFacts=function(t,n){console.log("filterState",n);var r=performance.now(),i=null,a=null,s=Object.keys(n).reduce(function(t,r){return"data"===r?n[r]&&(i=!0,t.push({field:n[r],query:"true",bool:"and",limit:e.indexCount,key:r})):"tags"===r?1!==n[r]&&2!==n[r]||(a=!0,t.push({field:"custom",query:1===n[r]?"false":"true",bool:"and",limit:e.indexCount,key:r})):t.push(n[r].map(function(e){var t=u.asArray().filter(function(t){return t[r]==e}).length;return{field:r,query:e,bool:"or",limit:t,key:r,tokenize:"strict"}})),t},[]).flat();if(s.length>0){var l=this.index.search(s).map(function(e){return e.resultSet=new Set(e.result),e}),f=l.filter(function(e){return t.slice(1).includes(e.field)}).map(function(e){return e.resultSet})[0],h=l.filter(function(e){return"custom"==e.field}).map(function(e){return e.resultSet})[0],d=void 0;i&&!f||a&&!h?d=null:f&&h?f&&h&&(d=f.intersection(h)):d=f||h;var p=l.filter(function(e){return!t.slice(1).includes(e.field)&&"custom"!==e.field}).map(function(e){return e.resultSet}).reduce(function(e,t){return e&&t?e.union(t):e||t?e||t:null},null),g=null;if(!i&&!a||d?d&&p?d&&p&&(g=d.intersection(p)):g=d||p:g=null,o.logPerfParam){var m=performance.now();(new c.V).debug("FlexSearch Filter completed in: ".concat((m-r).toFixed(2),"ms"))}return g?Array.from(g):[]}return null},e.index={id:"",field:void 0},e.standardProps=["content","raw","factname","contextRef","labels","definitions","period","measure","axis","member","scale","balance","custom","amount","text","calculation","negative","additional","dimensions"],e}();self.onmessage=function(e){var t=e.data,n=t.type,r=t.data;if("init"===n&&(d.init(r.factMap),self.postMessage({type:"initComplete"})),"search"===n){var i=d.searchFacts(r.query,r.suggest);self.postMessage({type:"searchComplete",results:i})}if("filter"===n){var o=d.filterFacts(r.dataFields,r.filterState);self.postMessage({type:"filterComplete",filteredArray:o})}}},9112:function(module,__unused_webpack_exports,__webpack_require__){module=__webpack_require__.nmd(module),function _f(self){"use strict";try{module&&(self=module)}catch(e){}var t;function u(e){return void 0===e||e}function aa(e){const t=Array(e);for(let n=0;n=r))));h++);if(n)return o?ta(l,r,0):void(t[t.length]=l)}return!n&&l}function ta(e,t,n){return e=1===e.length?e[0]:[].concat.apply([],e),n||e.length>t?e.slice(n,n+t):e}function ua(e,t,n,r){return e=n?(e=e[(r=r&&t>n)?t:n])&&e[r?n:t]:e[t]}function N(e,t,n,r,i){let o=0;if(e.constructor===Array)if(i)-1!==(t=e.indexOf(t))?1=this.B&&(f||!c[p])){var o=L(h,r,d),a="";switch(this.G){case"full":if(2o;s--)if(s-o>=this.B){var l=L(h,r,d,i,o);M(this,c,a=p.substring(o,s),l,e,n)}break}case"reverse":if(1=this.B&&M(this,c,a,L(h,r,d,i,s),e,n);a=""}case"forward":if(1=this.B&&M(this,c,a,o,e,n);break}default:if(this.C&&(o=Math.min(o/this.C(t,p,d)|0,h-1)),M(this,c,p,o,e,n),f&&1=this.B&&!i[p]){i[p]=1;const t=this.l&&p>o;M(this,u,t?o:p,L(a+(r/2>a?0:1),r,d,s-1,l-1),e,n,t?p:o)}}}}this.m||(this.register[e]=1)}}return this},t.search=function(e,t,n){n||(!t&&C(e)?e=(n=e).query:C(t)&&(n=t));let r,i,o,a=[],s=0;if(n){e=n.query||e,t=n.limit,s=n.offset||0;var l=n.context;i=n.suggest}if(e&&(r=(e=this.encode(""+e)).length,1=this.B&&!n[t]){if(!(this.s||i||this.map[t]))return a;u[s++]=t,n[t]=1}r=(e=u).length}if(!r)return a;t||(t=100),n=0,(l=this.depth&&1t||n)&&(i=i.slice(n,n+t)),r&&(i=za.call(this,i)),{tag:e,result:i}}function za(e){const t=Array(e.length);for(let n,r=0;r{var e=__webpack_require__.O(void 0,[870],()=>__webpack_require__(4497));return __webpack_require__.O(e)},deferred=[],__webpack_require__.O=(e,t,n,r)=>{if(!t){var i=1/0;for(l=0;l=r)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](t[a]))?t.splice(a--,1):(o=!1,r0&&deferred[l-1][2]>r;l--)deferred[l]=deferred[l-1];deferred[l]=[t,n,r]},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,n)=>(__webpack_require__.f[n](e,t),t),[])),__webpack_require__.u=e=>e+".bundle.2be58e7a854ed7626abd.min.js",__webpack_require__.miniCssF=e=>{},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),__webpack_require__.p="/ixviewer-plus/",(()=>{var e={497:1};__webpack_require__.f.i=(t,n)=>{e[t]||importScripts(__webpack_require__.p+__webpack_require__.u(t))};var t=self.webpackChunkixviewer_2=self.webpackChunkixviewer_2||[],n=t.push.bind(t);t.push=t=>{var[r,i,o]=t;for(var a in i)__webpack_require__.o(i,a)&&(__webpack_require__.m[a]=i[a]);for(o&&o(__webpack_require__);r.length;)e[r.pop()]=1;n(t)}})(),next=__webpack_require__.x,__webpack_require__.x=()=>__webpack_require__.e(870).then(next);var __webpack_exports__=__webpack_require__.x()})();
-//# sourceMappingURL=497.bundle.fe4e693c4cb96df118d2.min.js.map
\ No newline at end of file
+/*! For license information please see 497.bundle.862d1b1dc31ed6cf4402.min.js.LICENSE.txt */
+(()=>{var __webpack_modules__={4497:(e,t,n)=>{"use strict";var r=n(9112);function i(e){return Boolean(e)}var o={version:"26.2",featureSet:"plus",appStart:0,loadPhaseComplete:0,appWindow:"undefined"==typeof window?{}:window.frameElement&&"ixvFrame"===window.frameElement.id?window.parent:window,loadedViaRedirect:"undefined"!=typeof window&&(!(!window.frameElement||"ixvFrame"!==window.frameElement.id)||void 0),perfTableJs:[],perfTableDom:[],elapsedPerfTable:[],discretePerfTable:[],logPerfParam:!1,unused:"test",axesCount:0,membersCount:0,memberLimit:750,getSearchCriteria:{},isNcsr:!1,sumOfDocsSizes:0,docSizeFallbackLimit:7e7,scrollPosition:"undefined"!=typeof window&&window.localStorage.getItem("scrollPosition")||"start",hoverOption:"undefined"!=typeof window&&"true"===window.localStorage.getItem("hoverOption")||!1,getHTMLAttributes:{},getPaginationPerPage:10,factCount:null,getMetaSourceDocuments:[],getMetaTags:[],getInstances:[],getCurrentInstance:function(){return o.getInstances.find(function(e){return e.current})},getInlineFiles:[],sections:[],setSections:function(e){e&&(o.sections=e,sessionStorage.setItem("sections",JSON.stringify(e)))},getSectionsFromSessionStorage:function(){var e=sessionStorage.getItem("sections");return JSON.parse(e||"[]")},getStdRef:{},getFormInformation:{},getMetaCustomPrefix:null,getMetaDts:null,getMetaDocuments:function(e){return e&&"string"==typeof e&&o.getMetaDts&&o.getMetaDts[e]?o.getMetaDts[e]:null},getScrollPosition:function(){return document.getElementById("dynamic-xbrl-form").scrollTop},getNavBarsHeight:function(){var e;return(null===(e=document.querySelector('div[id="topNavs"]'))||void 0===e?void 0:e.offsetHeight)||0},sideBarPaginationState:{pageNumber:0,totalPages:0}},a=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},s=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")},u={map:new Map,init:function(e){var t=performance.now();u.map.clear(),Array.from(new Map(s([],a(e),!1)),function(e){e[1].id&&(u.map.delete(e[0]),u.map.set(e[1].id,e[1]))});var n=performance.now();o.logPerfParam&&function(e,t,n,r){void 0===r&&(r=!1);var i=Number((n-(r?o.appStart:o.loadPhaseComplete)).toFixed(0)),a=Number((n-t).toFixed(0));o.perfTableJs.push({perfMetric:e,moduleTime:a,elapsedTime:i}),e.includes("initSearch")&&(console.log("Performance for "+o.appWindow.location.href),console.table(o.perfTableJs))}("FactMap.init",t,n)},asArray:function(){return s([],a(u.map.values()),!1)},setHighlightedFacts:function(e){var t,n;if(e){var r=new Set(e);try{for(var i=l(u.map),o=i.next();!o.done;o=i.next()){var s=a(o.value,2),c=(s[0],s[1]);c.isHighlight=r.has(c.id)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}}},setEnabledFacts:function(e){var t,n,r=new Set(e);try{for(var i=l(u.map),o=i.next();!o.done;o=i.next()){var s=a(o.value,2),c=(s[0],s[1]);c.isEnabled=r.has(c.id)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}},resetEnabledFacts:function(){u.map.forEach(function(e){e.isEnabled=!0})},getAllPeriods:function(){var e=Array.from(new Map(s([],a(u.map),!1)),function(e){return e[1].period}).filter(Boolean).sort(function(e,t){return t.slice(-4)-e.slice(-4)});return s([],a(new Set(e)),!1).reduce(function(e,t){return Object.prototype.hasOwnProperty.call(e,t.slice(-4))?e[t.slice(-4)].values.push(t):e[t.slice(-4)]={values:[t]},e},{})},getAllMeasures:function(){var e=s([],a(u.map),!1).map(function(e){var t=a(e,2);return t[0],t[1].measure}).filter(i).sort();return s([],a(new Set(e)),!1)},getAllAxis:function(){var e=Array.from(new Map(s([],a(u.map),!1)),function(e){return e[1].segment?e[1].segment.map(function(e){return e.type?{type:e.type,value:e.axis}:Array.isArray(e)?e.map(function(e){return{type:e.type,value:e.axis}}):void 0}).flat().filter(Boolean):null}).filter(Boolean);return s([],a(new Map(e.flat().map(function(e){return[e.value,e]})).values()),!1).sort(function(e,t){return e.value.split(":")[1]t.value.split(":")[1]?1:0})},getAllMembers:function(){var e=Array.from(new Map(s([],a(u.map),!1)),function(e){return e[1].segment?e[1].segment.map(function(e){return e.member?{type:e.type,value:e.member}:Array.isArray(e)?e.map(function(e){return{type:e.type,value:e.member}}):void 0}).flat().filter(Boolean):null}).filter(Boolean);return s([],a(new Map(e.flat().map(function(e){return[e.value,e]})).values()),!1).sort(function(e,t){return e.value.split(":")[1]t.value.split(":")[1]?1:0})},getAllScales:function(){var e=["Trillions","Hundred Billions","Ten Billions","Billions","Hundred Millions","Ten Millions","Millions","Hundred Thousands","Ten Thousands","Thousands","Hundreds","Tens","Zero","Tenths","Hundredths","Thousandths","Ten Thousandths","Hundred Thousandths","Millionths"];return s([],a(new Set(Array.from(new Map(s([],a(u.map),!1)),function(e){return e[1].scale}).filter(i))),!1).sort(function(t,n){return e.indexOf(t)-e.indexOf(n)})},getByID:function(e){return u.map.has(e)?u.map.get(e)||null:(console.error("Fact id not found:",e),null)},getByName:function(e,t){void 0===t&&(t=!1);var n=Array.from(new Map(s([],a(u.map),!1)),function(t){if(t[1].name===e)return t[1].value}).filter(Boolean);return t?n.length?"".concat(n[0]," / ").concat(u.getByName(t)):"Not Available.":n.length?n[0]:"Not Available."},getByNameContextRef:function(e,t){var n=Array.from(new Map(s([],a(u.map),!1)),function(n){if(n[1].name===e&&n[1].contextRef===t)return n[1]}).filter(Boolean);return n.length?n[0]:null},getEnabledFacts:function(){return Array.from(new Map(s([],a(u.map),!1)),function(e){if(e[1].isEnabled)return{id:e[1].id,isAdditional:e[1].isAdditional}}).filter(Boolean)},getEnabledHighlightedFacts:function(){return Array.from(new Map(s([],a(u.map),!1)),function(e){if(e[1].isEnabled&&e[1].isHighlight)return{id:e[1].id,isAdditional:e[1].isAdditional}}).filter(Boolean)},getFullFacts:function(){var e=0!==Object.keys(o.getSearchCriteria).length;return Array.from(new Map(s([],a(u.map),!1)),function(t){if(e){if(t[1].isEnabled&&t[1].isHighlight)return t[1]}else if(t[1].isEnabled)return t[1]}).filter(Boolean)},getFactCount:function(){var e=0!==Object.keys(o.getSearchCriteria).length;return s([],a(u.map.values()),!1).filter(function(t){return t.isEnabled&&(!e||t.isHighlight)}).length.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},getTextFactCount:function(){return u.asArray().filter(function(e){return e.isTextOnly}).length},getNumberFactCount:function(){return u.asArray().filter(function(e){return e.isAmountsOnly}).length},getFactCountForFile:function(e){var t=0!==Object.keys(o.getSearchCriteria).length;return s([],a(u.map.values()),!1).filter(function(t){return t.file==e}).filter(function(e){return e.isEnabled&&(!t||e.isHighlight)}).length.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},setIsSelected:function(e){u.map.forEach(function(t){var n,r,i=document.getElementById(t.id);e===t.id?(t.isSelected=!0,null==i||i.setAttribute("selected-fact","true"),null===(n=t.continuedIDs)||void 0===n||n.forEach(function(e){var t;null===(t=document.getElementById(e))||void 0===t||t.setAttribute("selected-fact","true")})):(t.isSelected=!1,null==i||i.setAttribute("selected-fact","false"),null===(r=t.continuedIDs)||void 0===r||r.forEach(function(e){var t;null===(t=document.getElementById(e))||void 0===t||t.setAttribute("selected-fact","false")}))})},getTagLine:function(){var e;return null===(e=s([],a(u.map),!1).map(function(e){if(e[1].isAmountsOnly)return{name:e[1].name,periodDates:e[1].periodDates,value:+(e[1].value||0)}}).filter(i).reduce(function(e,t){void 0===e&&(e=[]);var n=e.findIndex(function(e){return e.name===t.name});return n>-1?e[n].data.push({periodDates:t.periodDates,value:t.value}):e.push({name:t.name,data:[{periodDates:t.periodDates,value:t.value}]}),e},[]))||void 0===e?void 0:e.filter(function(e){return e.data=e.data.map(function(e){var t,n=new Set;return null===(t=e.periodDates)||void 0===t||t.filter(function(e){return!n.has(e.periodDates)&&(n.add(e.periodDates),!0)}),e.periodDates.length>1?e:null}).filter(i),e.data.length>1}).sort(function(e,t){return e.name.localeCompare(t.name)})}},c=n(870),f=function(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},h=function(e,t,n){if(n||2===arguments.length)for(var r,i=0,o=t.length;i5e3?"strict":"full",document:{id:"id",index:h([],f(e.standardProps),!1)}}),e.indexCount=t.size,u.init(t),function(){var e=u.getAllAxis();o.axesCount=e.length;var t=u.getAllMembers();o.membersCount=t.length}();var i=function(e){if(e)return e.map(function(e){return Array.isArray(e)?e.map(function(e){return e.axis}):e.axis})},a=function(e){if(e)return e.map(function(e){return Array.isArray(e)?e.map(function(e){return e.member}):e.member})};return t.forEach(function(e,t){var r,s,l,u,c,f,h,d,p={id:t,content:null===(r=null==e?void 0:e.filterContent)||void 0===r?void 0:r.content,raw:(null==e?void 0:e.format)?"".concat(null==e?void 0:e.raw.toString()):null,factname:null==e?void 0:e.name,contextRef:null==e?void 0:e.contextRef,labels:null===(s=e.filterContent)||void 0===s?void 0:s.labels,definitions:null===(l=null==e?void 0:e.filterContent)||void 0===l?void 0:l.definitions,period:e.period,measure:e.measure,axis:(null==e?void 0:e.segment)&&o.axesCount<750?i(null==e?void 0:e.segment):null,member:(null==e?void 0:e.segment)&&o.membersCount0&&!(null===(d=null==e?void 0:e.segment)||void 0===d?void 0:d.map(function(e){return e.dimension}).length)).toString(),negative:e.isNegativeOnly?e.isNegativeOnly.toString():null,additional:e.isAdditional?e.isAdditional.toString():null};n.index.add(p)}),new Promise(function(e){e({msg:"search init complete"})})},e.searchFacts=function(t,n){var r;void 0===n&&(n=!1);var i=[null,"factname","content","labels","definitions","dimensions"],o=null===(r=t.options)||void 0===r?void 0:r.reduce(function(n,r){return i[r]&&("content"===i[r]?(n.push({field:"raw",query:t.value,bool:"or",limit:e.indexCount}),n.push({field:"content",query:t.value,bool:"or",limit:e.indexCount})):"references"===i[r]?e.referenceProps.forEach(function(r){n.push({field:r,query:t.value,bool:"or",limit:e.indexCount})}):n.push({field:i[r],query:t.value,bool:"or",limit:e.indexCount})),n},[]),a=this.index.search(o);return h([],f(new Set([].concat.apply([],h([],f(a.map(function(e){return e.result})),!1)))),!1)},e.filterFacts=function(t,n){console.log("filterState",n);var r=performance.now(),i=null,a=null,s=Object.keys(n).reduce(function(t,r){return"data"===r?n[r]&&(i=!0,t.push({field:n[r],query:"true",bool:"and",limit:e.indexCount,key:r})):"tags"===r?1!==n[r]&&2!==n[r]||(a=!0,t.push({field:"custom",query:1===n[r]?"false":"true",bool:"and",limit:e.indexCount,key:r})):t.push(n[r].map(function(e){var t=u.asArray().filter(function(t){return t[r]==e}).length;return{field:r,query:e,bool:"or",limit:t,key:r,tokenize:"strict"}})),t},[]).flat();if(s.length>0){var l=this.index.search(s).map(function(e){return e.resultSet=new Set(e.result),e}),f=l.filter(function(e){return t.slice(1).includes(e.field)}).map(function(e){return e.resultSet})[0],h=l.filter(function(e){return"custom"==e.field}).map(function(e){return e.resultSet})[0],d=void 0;i&&!f||a&&!h?d=null:f&&h?f&&h&&(d=f.intersection(h)):d=f||h;var p=l.filter(function(e){return!t.slice(1).includes(e.field)&&"custom"!==e.field}).map(function(e){return e.resultSet}).reduce(function(e,t){return e&&t?e.union(t):e||t?e||t:null},null),g=null;if(!i&&!a||d?d&&p?d&&p&&(g=d.intersection(p)):g=d||p:g=null,o.logPerfParam){var m=performance.now();(new c.V).debug("FlexSearch Filter completed in: ".concat((m-r).toFixed(2),"ms"))}return g?Array.from(g):[]}return null},e.index={id:"",field:void 0},e.standardProps=["content","raw","factname","contextRef","labels","definitions","period","measure","axis","member","scale","balance","custom","amount","text","calculation","negative","additional","dimensions"],e}();self.onmessage=function(e){var t=e.data,n=t.type,r=t.data;if("init"===n&&(d.init(r.factMap),self.postMessage({type:"initComplete"})),"search"===n){var i=d.searchFacts(r.query,r.suggest);self.postMessage({type:"searchComplete",results:i})}if("filter"===n){var o=d.filterFacts(r.dataFields,r.filterState);self.postMessage({type:"filterComplete",filteredArray:o})}}},9112:function(module,__unused_webpack_exports,__webpack_require__){module=__webpack_require__.nmd(module),function _f(self){"use strict";try{module&&(self=module)}catch(e){}var t;function u(e){return void 0===e||e}function aa(e){const t=Array(e);for(let n=0;n=r))));h++);if(n)return o?ta(l,r,0):void(t[t.length]=l)}return!n&&l}function ta(e,t,n){return e=1===e.length?e[0]:[].concat.apply([],e),n||e.length>t?e.slice(n,n+t):e}function ua(e,t,n,r){return e=n?(e=e[(r=r&&t>n)?t:n])&&e[r?n:t]:e[t]}function N(e,t,n,r,i){let o=0;if(e.constructor===Array)if(i)-1!==(t=e.indexOf(t))?1=this.B&&(f||!c[p])){var o=L(h,r,d),a="";switch(this.G){case"full":if(2o;s--)if(s-o>=this.B){var l=L(h,r,d,i,o);M(this,c,a=p.substring(o,s),l,e,n)}break}case"reverse":if(1=this.B&&M(this,c,a,L(h,r,d,i,s),e,n);a=""}case"forward":if(1=this.B&&M(this,c,a,o,e,n);break}default:if(this.C&&(o=Math.min(o/this.C(t,p,d)|0,h-1)),M(this,c,p,o,e,n),f&&1=this.B&&!i[p]){i[p]=1;const t=this.l&&p>o;M(this,u,t?o:p,L(a+(r/2>a?0:1),r,d,s-1,l-1),e,n,t?p:o)}}}}this.m||(this.register[e]=1)}}return this},t.search=function(e,t,n){n||(!t&&C(e)?e=(n=e).query:C(t)&&(n=t));let r,i,o,a=[],s=0;if(n){e=n.query||e,t=n.limit,s=n.offset||0;var l=n.context;i=n.suggest}if(e&&(r=(e=this.encode(""+e)).length,1=this.B&&!n[t]){if(!(this.s||i||this.map[t]))return a;u[s++]=t,n[t]=1}r=(e=u).length}if(!r)return a;t||(t=100),n=0,(l=this.depth&&1t||n)&&(i=i.slice(n,n+t)),r&&(i=za.call(this,i)),{tag:e,result:i}}function za(e){const t=Array(e.length);for(let n,r=0;r{var e=__webpack_require__.O(void 0,[870],()=>__webpack_require__(4497));return __webpack_require__.O(e)},deferred=[],__webpack_require__.O=(e,t,n,r)=>{if(!t){var i=1/0;for(l=0;l=r)&&Object.keys(__webpack_require__.O).every(e=>__webpack_require__.O[e](t[a]))?t.splice(a--,1):(o=!1,r0&&deferred[l-1][2]>r;l--)deferred[l]=deferred[l-1];deferred[l]=[t,n,r]},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.f={},__webpack_require__.e=e=>Promise.all(Object.keys(__webpack_require__.f).reduce((t,n)=>(__webpack_require__.f[n](e,t),t),[])),__webpack_require__.u=e=>e+".bundle.2be58e7a854ed7626abd.min.js",__webpack_require__.miniCssF=e=>{},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),__webpack_require__.p="/ixviewer-plus/",(()=>{var e={497:1};__webpack_require__.f.i=(t,n)=>{e[t]||importScripts(__webpack_require__.p+__webpack_require__.u(t))};var t=self.webpackChunkixviewer_2=self.webpackChunkixviewer_2||[],n=t.push.bind(t);t.push=t=>{var[r,i,o]=t;for(var a in i)__webpack_require__.o(i,a)&&(__webpack_require__.m[a]=i[a]);for(o&&o(__webpack_require__);r.length;)e[r.pop()]=1;n(t)}})(),next=__webpack_require__.x,__webpack_require__.x=()=>__webpack_require__.e(870).then(next);var __webpack_exports__=__webpack_require__.x()})();
+//# sourceMappingURL=497.bundle.862d1b1dc31ed6cf4402.min.js.map
\ No newline at end of file
diff --git a/view/ixviewer-plus/dist/497.bundle.fe4e693c4cb96df118d2.min.js.LICENSE.txt b/view/ixviewer-plus/dist/497.bundle.862d1b1dc31ed6cf4402.min.js.LICENSE.txt
similarity index 100%
rename from view/ixviewer-plus/dist/497.bundle.fe4e693c4cb96df118d2.min.js.LICENSE.txt
rename to view/ixviewer-plus/dist/497.bundle.862d1b1dc31ed6cf4402.min.js.LICENSE.txt
diff --git a/view/ixviewer-plus/dist/497.bundle.fe4e693c4cb96df118d2.min.js.map b/view/ixviewer-plus/dist/497.bundle.862d1b1dc31ed6cf4402.min.js.map
similarity index 99%
rename from view/ixviewer-plus/dist/497.bundle.fe4e693c4cb96df118d2.min.js.map
rename to view/ixviewer-plus/dist/497.bundle.862d1b1dc31ed6cf4402.min.js.map
index df838a16..f5c4edaf 100644
--- a/view/ixviewer-plus/dist/497.bundle.fe4e693c4cb96df118d2.min.js.map
+++ b/view/ixviewer-plus/dist/497.bundle.862d1b1dc31ed6cf4402.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"497.bundle.fe4e693c4cb96df118d2.min.js","mappings":"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","sources":["webpack://ixviewer-2/./src/ts/helpers/utilsData.ts","webpack://ixviewer-2/./src/ts/constants/constants.ts","webpack://ixviewer-2/./src/ts/facts/map.ts","webpack://ixviewer-2/./src/ts/helpers/ixPerformance.ts","webpack://ixviewer-2/./src/ts/flex-search/flex-search.ts","webpack://ixviewer-2/./src/ts/flex-search/search-worker.ts","webpack://ixviewer-2/./node_modules/flexsearch/dist/flexsearch.bundle.js","webpack://ixviewer-2/webpack/bootstrap","webpack://ixviewer-2/webpack/runtime/chunk loaded","webpack://ixviewer-2/webpack/runtime/startup chunk dependencies","webpack://ixviewer-2/webpack/runtime/define property getters","webpack://ixviewer-2/webpack/runtime/ensure chunk","webpack://ixviewer-2/webpack/runtime/get javascript chunk filename","webpack://ixviewer-2/webpack/runtime/get mini-css chunk filename","webpack://ixviewer-2/webpack/runtime/hasOwnProperty shorthand","webpack://ixviewer-2/webpack/runtime/node module decorator","webpack://ixviewer-2/webpack/runtime/publicPath","webpack://ixviewer-2/webpack/runtime/importScripts chunk loading","webpack://ixviewer-2/webpack/startup"],"sourcesContent":["/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment \n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nexport function isTruthy(t: T): t is NonNullable {\n return Boolean(t);\n}","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport { Reference } from \"../interface/fact\";\nimport { FormInformation } from \"../interface/form-information\";\nimport { InlineFileMeta, InstanceFile } from \"../interface/instance-file\";\nimport { Section } from \"../interface/meta\";\n\n//Not really used (see comment below)\ntype MetaDocument = any;\n\nexport const Constants = {\n\tversion: \"26.1\",\n\tfeatureSet: \"plus\",\n\tappStart: 0,\n\tloadPhaseComplete: 0,\n\n\tappWindow: (() => {\n\t\tif (typeof window == 'undefined') return {} as Window;\n\t\t// redirect iframe\n\t\tif (!!window.frameElement && window.frameElement.id === \"ixvFrame\") {\n\t\t\treturn window.parent;\n\t\t}\n\t\t// Note: workstation iframe has id \"dispDocFrame\", I don't think we need to handle it though since the iframe\n\t\t// in that cases seems intended to work as \"subwindow\" and links should open in the iframe (?)\n\t\treturn window;\n\t})(),\n\n\tloadedViaRedirect: (() => {\n\t\tif (typeof window == 'undefined') return false;\n\t\t// redirect iframe\n\t\tif (!!window.frameElement && window.frameElement.id === \"ixvFrame\") {\n\t\t\treturn true;\n\t\t}\n\t})(),\n\n\t// holds array of objects { perfMetric, moduleTime, totalElapsedTime }\n\tperfTableJs: [] as object[],\n\tperfTableDom: [] as object[],\n\telapsedPerfTable: [] as object[],\n\tdiscretePerfTable: [] as object[],\n\tlogPerfParam: false,\n\n\tunused: 'test',\n\taxesCount: 0,\n\tmembersCount: 0,\n\tmemberLimit: 750, // too many affects search index performance and eats a lot of mem\n\n\tgetSearchCriteria: {} as { options: { indexOf: (x: any) => number }, regex: RegExp },\n\n\tisNcsr: false,\n\tsumOfDocsSizes: 0,\n\tdocSizeFallbackLimit: 70 * 1000000,\n\n\tscrollPosition: typeof window !== 'undefined' && window.localStorage.getItem(\"scrollPosition\") || \"start\",\n\n\thoverOption: typeof window !== 'undefined' && window.localStorage.getItem(\"hoverOption\") === \"true\" || false,\n\n\tgetHTMLAttributes: {} as Record,\n\n\tgetPaginationPerPage: 10,\n\n\tfactCount: null as string | null,\n\n\tgetMetaSourceDocuments: [] as string[],\n\n\tgetMetaTags: [] as unknown[],\n\n\tgetInstances: [] as InstanceFile[],\n\n\tgetCurrentInstance: () => {\n\t\treturn Constants.getInstances.find(inst => inst.current);\n\t},\n\n\tgetInlineFiles: [] as InlineFileMeta[],\n\n\tsections: [] as Section[],\n\n\tsetSections: (sections: Array): void => {\n\t\tif (sections) {\n\t\t\tConstants.sections = sections;\n\t\t\tsessionStorage.setItem('sections', JSON.stringify(sections));\n\t\t}\n\t},\n\n\tgetSectionsFromSessionStorage: (): Section[] => {\n\t\tconst sectionsFromLocal = sessionStorage.getItem('sections');\n\t\treturn JSON.parse(sectionsFromLocal || '[]') as Section[];\n\t},\n\n\tgetStdRef: {} as Record,\n\n\tgetFormInformation: {} as FormInformation,\n\n\tgetMetaCustomPrefix: null as string | null,\n\n\t//These are never accessed outside of old unit tests\n\tgetMetaDts: null as MetaDocument | null,\n\tgetMetaDocuments: (input: string): MetaDocument | null => {\n\t\tif (input && typeof input === \"string\") {\n\t\t\treturn Constants.getMetaDts && Constants.getMetaDts[input]\n\t\t\t\t? Constants.getMetaDts[input]\n\t\t\t\t: null;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tgetScrollPosition: (): number => {\n\t\tconst currentScrollPosition = document.getElementById('dynamic-xbrl-form')!.scrollTop as number;\n\t\treturn currentScrollPosition;\n\t},\n\n\tgetNavBarsHeight: (): number => {\n\t\treturn document.querySelector('div[id=\"topNavs\"]')?.offsetHeight || 0;\n\t},\n\n\tsideBarPaginationState: {pageNumber: 0, totalPages: 0},\n\n};\n","import { isTruthy } from \"../helpers/utilsData\";\nimport { SingleFact } from \"../interface/fact\";\nimport { addToJsPerfTable } from \"../helpers/ixPerformance\";\nimport { Constants } from \"../constants/constants\";\n\nexport const FactMap: {\n map: Map,\n init: (mapOfFacts: Map) => void,\n asArray: () => Array,\n setHighlightedFacts: (arrayOfIDs: Array) => void,\n setEnabledFacts: (arrayOfIDs: Array) => void,\n resetEnabledFacts: () => void,\n getAllMeasures: () => Array,\n getAllAxis: () => Array<{ type: string, value: string}>,\n getByID: (id: string) => SingleFact | null,\n getEnabledFacts: () => Array<{ id: string, isAdditional: boolean }>,\n getEnabledHighlightedFacts: () => Array<{ id: string, isAdditional: boolean }>,\n getFactCountForFile: (fileName: string) => string,\n getFactCount: () => string,\n getTextFactCount: () => number,\n getNumberFactCount: () => number,\n getFullFacts: () => Array,\n getByNameContextRef: (name: string, contextRef: string) => SingleFact | null,\n getByName: (name: string) => string,\n getAllScales: () => Array,\n getAllMembers: () => Array<{ type: string, value: string}>,\n getAllPeriods: () => { [key: string]: [] },\n getTagLine: () => any[],\n setIsSelected: (input: string | null) => void,\n} = {\n\n map: new Map(),\n\n init: (mapOfFacts: Map): void => {\n const startPerformance = performance.now();\n FactMap.map.clear();\n\n Array.from(new Map([...mapOfFacts]), (entry: any) => {\n if (entry[1].id) {\n FactMap.map.delete(entry[0]);\n FactMap.map.set(entry[1].id, entry[1]);\n }\n });\n const endPerformance = performance.now();\n if (LOGPERFORMANCE || Constants.logPerfParam ) {\n addToJsPerfTable('FactMap.init', startPerformance, endPerformance)\n }\n\n },\n\n asArray: (): SingleFact[] => {\n return [...FactMap.map.values()];\n },\n\n setHighlightedFacts: (arrayOfIDs) => {\n if (!arrayOfIDs) return;\n const setOfIDs = new Set(arrayOfIDs);\n for (let [key, current] of FactMap.map) {\n current.isHighlight = setOfIDs.has(current.id);\n }\n },\n\n setEnabledFacts: (arrayOfIDs) => {\n const setOfIDs = new Set(arrayOfIDs);\n for (let [key, current] of FactMap.map) {\n current.isEnabled = setOfIDs.has(current.id);\n }\n },\n\n resetEnabledFacts: () => {\n FactMap.map.forEach((currentValue) => {\n currentValue.isEnabled = true;\n });\n },\n\n getAllPeriods: () => {\n const periods = Array.from(new Map([...FactMap.map]), (entry) => {\n return entry[1].period;\n }).filter(Boolean).sort((first: any, second: any) => {\n return second.slice(-4) - first.slice(-4);\n });\n\n return [...new Set(periods)].reduce((acc: any, current: any) => {\n if (Object.prototype.hasOwnProperty.call(acc, current.slice(-4))) {\n acc[current.slice(-4)].values.push(current);\n } else {\n acc[current.slice(-4)] = {\n values: [current]\n };\n }\n return acc;\n }, {});\n },\n\n getAllMeasures: () => {\n const measures = [...FactMap.map]\n .map(([_, entry]) => entry.measure)\n .filter(isTruthy)\n .sort();\n\n return [...new Set(measures)];\n },\n\n getAllAxis: () => {\n const axis = Array.from(new Map([...FactMap.map]), (entry: any) => {\n return entry[1].segment ? entry[1].segment.map((current: any) => {\n if (current.type) {\n return { type: current.type, value: current.axis };\n } else if (Array.isArray(current)) {\n return current.map((nestedCurrent) => {\n return { type: nestedCurrent.type, value: nestedCurrent.axis };\n });\n }\n }).flat().filter(Boolean) : null;\n }).filter(Boolean);\n\n const unique = [...new Map(axis.flat().map(item => [item['value'], item])).values()].sort((a, b) => {\n if (a.value.split(':')[1] < b.value.split(':')[1]) return -1;\n if (a.value.split(':')[1] > b.value.split(':')[1]) return 1;\n return 0;\n });\n\n return unique;\n },\n\n getAllMembers: () => {\n const members = Array.from(new Map([...FactMap.map]), (entry: any) => {\n return entry[1].segment ? entry[1].segment.map((current: any) => {\n if (current.member) {\n return { type: current.type, value: current.member };\n } else if (Array.isArray(current)) {\n return current.map((nestedCurrent) => {\n return { type: nestedCurrent.type, value: nestedCurrent.member };\n });\n }\n }).flat().filter(Boolean) : null;\n }).filter(Boolean);\n const unique = [...new Map(members.flat().map(item => [item['value'], item])).values()].sort((a, b) => {\n if (a.value.split(':')[1] < b.value.split(':')[1]) return -1;\n if (a.value.split(':')[1] > b.value.split(':')[1]) return 1;\n return 0;\n });\n return unique;\n },\n\n getAllScales: () => {\n const scalesOrder = [\n \"Trillions\",\n \"Hundred Billions\",\n \"Ten Billions\",\n \"Billions\",\n \"Hundred Millions\",\n \"Ten Millions\",\n \"Millions\",\n \"Hundred Thousands\",\n \"Ten Thousands\",\n \"Thousands\",\n \"Hundreds\",\n \"Tens\",\n \"Zero\",\n \"Tenths\",\n \"Hundredths\",\n \"Thousandths\",\n \"Ten Thousandths\",\n \"Hundred Thousandths\",\n \"Millionths\"\n ];\n\n const uniqueScales = [...new Set(Array.from(new Map([...FactMap.map]), (entry) => {\n return entry[1].scale;\n }).filter(isTruthy))].sort((a, b) => {\n return scalesOrder.indexOf(a) - scalesOrder.indexOf(b);\n });\n return uniqueScales;\n },\n\n getByID: (id: string) => {\n if (FactMap.map.has(id)) {\n return FactMap.map.get(id) || null;\n } else {\n // ErrorsMinor.factNotFound();\n console.error('Fact id not found:', id)\n return null;\n }\n },\n\n getByName: (firstName: string, secondName: string | boolean = false) => {\n const names: any = Array.from(new Map([...FactMap.map]), (entry: any) => {\n if (entry[1].name === firstName) {\n return entry[1].value;\n }\n }).filter(Boolean);\n if (secondName) {\n return names.length ? `${names[0]} / ${FactMap.getByName(secondName as any)}` : 'Not Available.'\n }\n return names.length ? names[0] : 'Not Available.'\n },\n\n getByNameContextRef: (name: string, contextRef: string) => {\n const fact: any = Array.from(new Map([...FactMap.map]), (entry) => {\n if (entry[1].name === name && entry[1].contextRef === contextRef) {\n return entry[1];\n }\n }).filter(Boolean);\n\n return fact.length ? fact[0] : null;\n },\n\n getEnabledFacts: () => {\n return Array.from(new Map([...FactMap.map]), (entry: any) => {\n if (entry[1].isEnabled) {\n return {\n id: entry[1].id,\n isAdditional: entry[1].isAdditional,\n };\n }\n }).filter(Boolean) as any;\n },\n\n getEnabledHighlightedFacts: () => {\n return Array.from(new Map([...FactMap.map]), (entry: any) => {\n if (entry[1].isEnabled && entry[1].isHighlight) {\n return {\n id: entry[1].id,\n isAdditional: entry[1].isAdditional,\n };\n }\n }).filter(Boolean) as any;\n },\n\n getFullFacts: () => {\n // const includeHighlights = Object.keys(UserFiltersState.getUserSearch).length !== 0;\n const includeHighlights = Object.keys(Constants.getSearchCriteria).length !== 0;\n return Array.from(new Map([...FactMap.map]), (entry: any) => {\n if (includeHighlights) {\n if (entry[1].isEnabled && entry[1].isHighlight) {\n return entry[1];\n }\n } else {\n if (entry[1].isEnabled) {\n return entry[1];\n }\n }\n }).filter(Boolean) as any;\n },\n\n /** Returns the number of facts as a string with \",\" inserted as appropriate */\n getFactCount: (): string => {\n // const includeHighlights = Object.keys(UserFiltersState.getUserSearch).length !== 0;\n const includeHighlights = Object.keys(Constants.getSearchCriteria).length !== 0;\n const count = [...FactMap.map.values()]\n .filter((fact) => fact.isEnabled && (!includeHighlights || fact.isHighlight)).length;\n\n return count.toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n\n getTextFactCount: () => {\n const textFacts = FactMap.asArray().filter((fact) => {\n return fact.isTextOnly;\n })\n return textFacts.length;\n },\n\n getNumberFactCount: () => {\n const numFacts = FactMap.asArray().filter((fact) => {\n return fact.isAmountsOnly;\n })\n return numFacts.length;\n },\n\n getFactCountForFile: (docSlug: string): string => {\n // const includeHighlights = Object.keys(UserFiltersState.getUserSearch).length !== 0;\n const includeHighlights = Object.keys(Constants.getSearchCriteria).length !== 0;\n const count = [...FactMap.map.values()]\n .filter((fact) => fact.file == docSlug)\n .filter((fact) => fact.isEnabled && (!includeHighlights || fact.isHighlight))\n .length;\n\n return count.toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n\n setIsSelected: (input: string | null) => {\n FactMap.map.forEach((currentFact) => {\n const inlineFactElem = document.getElementById(currentFact.id);\n if (input === currentFact.id) {\n currentFact.isSelected = true;\n inlineFactElem?.setAttribute('selected-fact', 'true')\n currentFact.continuedIDs?.forEach((continuationId: string) => {\n document.getElementById(continuationId)?.setAttribute('selected-fact', 'true');\n });\n } else {\n currentFact.isSelected = false;\n inlineFactElem?.setAttribute('selected-fact', 'false')\n currentFact.continuedIDs?.forEach((continuationId: string) => {\n document.getElementById(continuationId)?.setAttribute('selected-fact', 'false');\n });\n\n }\n });\n },\n\n getTagLine: () => {\n return [...FactMap.map].map((entry: [string, SingleFact]) => {\n if (entry[1].isAmountsOnly) {\n return {\n name: entry[1].name,\n periodDates: entry[1].periodDates,\n value: +(entry[1].value || 0),\n };\n }\n }).filter(isTruthy).reduce((\n acc: Array<{ name: string, data: Array<{ periodDates?: string[], value: number }> }> = [],\n current: { name: string, periodDates?: string[], value: number }\n ) => {\n const index = acc.findIndex(element => element.name === current.name);\n if (index > -1) {\n acc[index].data.push({ periodDates: current.periodDates, value: current.value });\n } else {\n acc.push({ name: current.name, data: [{ periodDates: current.periodDates, value: current.value }] });\n }\n return acc;\n }, [])?.filter(element => {\n element.data = element.data.map(nestedElement => {\n const data = new Set();\n\n //TODO: this logic doesn't \"work\" because `finalElement` is a string... \n nestedElement.periodDates?.filter((finalElement) => {\n if (data.has((finalElement as any).periodDates)) {\n return false;\n }\n\n data.add((finalElement as any).periodDates);\n return true;\n });\n return nestedElement.periodDates!.length > 1 ? nestedElement : null;\n }).filter(isTruthy);\n return element.data.length > 1;\n }).sort((first, second) => {\n return first.name.localeCompare(second.name);\n });\n\n },\n\n};\n","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment \n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport { Constants } from \"../constants/constants\";\n\nexport const addToJsPerfTable = (perfMetric: string, modStart: number, modEnd: number, fromInit = false) => {\n const elapsedTime = Number((modEnd - (fromInit ? Constants.appStart : Constants.loadPhaseComplete)).toFixed(0));\n const moduleTime = Number((modEnd - modStart).toFixed(0));\n Constants.perfTableJs.push({perfMetric, moduleTime, elapsedTime});\n if (perfMetric.includes('initSearch')) {\n // print performance tables\n console.log(\"Performance for \" + Constants.appWindow.location.href);\n console.table(Constants.perfTableJs);\n }\n}\n\nexport const addToDomPerfTable = (perfMetric: string, modStart: number, modEnd: number, fromInit = false) => {\n /*\n Example Table\n Fetches time is negative as '0' on our time line is when fetches are complete. \n This makes it so the remaining numbers represent actual JS performane times and \n not loading times, which can vary widely due to servers internet speeds.\n Total time includes load time.\n\n perfMetric moduleTime elapsedTime\n 0\t'All Fetches Complete'\t-317\t -317\n 1\t'Doc Visible'\t 200\t 201\n 2\t'Facts Ready'\t 197\t 397\n 3\t'Search Ready'\t 803\t 1201\n 4\t'Total Time'\t 1517\t 1517\n\n */\n\n // fromInit will start timer when app first loads (sooner)\n // if false will start timer after all fetched docs are loaded (later)\n\n // moduleTime is not reliable - commenting out for now.\n // TODO: since we want to start a module timer when the previous one ends, when 1st tested elem becomes visible\n // it should kick of the timer for the next one. We could create a wrapper func that interates over an array of elems/selectors.\n const moduleTime = Number((modEnd - modStart).toFixed(0));\n const elapsedTime = Number((modEnd - (fromInit ? Constants.appStart : Constants.loadPhaseComplete)).toFixed(0));\n Constants.perfTableDom.push({perfMetric, moduleTime, elapsedTime});\n // Constants.perfTableDom.push({perfMetric, elapsedTime});\n}\n\nexport function timeUiCheckpoints() {\n /* starts when all fetches complete then times when:\n - doc in dom (loading wheel gone)\n - facts ready (marked in doc)\n - search ready\n */\n const checkPointElems = [\n {\n perfLabel: 'Doc Visible',\n elemId: 'loading-animation',\n onDisappear: true,\n },\n {\n perfLabel: 'Facts Ready',\n elemId: 'factClock',\n onDisappear: true\n },\n {\n perfLabel: 'Search Ready',\n elemId: 'search-submit-icon',\n onDisappear: false,\n }\n ];\n // log loading time\n addToDomPerfTable('All Fetches Complete', Constants.loadPhaseComplete, Constants.appStart);\n\n // then iterate through dom checkpoints\n elementsRenderTimer(checkPointElems);\n}\n\nfunction elementsRenderTimer(checkpoints : any[]) {\n const checkpoint = checkpoints.shift();\n if (!checkpoint) return;\n const moduleStart = performance.now();\n\n const checkForElem = window.setInterval(() => {\n const elem = document.getElementById(checkpoint.elemId);\n if (checkpoint.onDisappear) {\n if (!elem || elem.classList.contains('d-none')) {\n clearInterval(checkForElem);\n const elemDisappearTime = performance.now();\n addToDomPerfTable(checkpoint.perfLabel, moduleStart, elemDisappearTime);\n elementsRenderTimer(checkpoints);\n }\n } else {\n if (elem && elem.offsetParent !== null && !elem.classList.contains('d-none')) {\n clearInterval(checkForElem);\n const elemVisible = performance.now()\n addToDomPerfTable(checkpoint.perfLabel, moduleStart, elemVisible);\n elementsRenderTimer(checkpoints); \n\n if (checkpoint.elemId == 'search-submit-icon') {\n addToDomPerfTable('Total Time (Loading + Processing)', Constants.appStart, elemVisible, true);\n\n // print performance tables\n console.log(\"DOM Timeline\");\n console.table(Constants.perfTableDom);\n }\n }\n }\n }, 50)\n}","import { Document as FlexSearchDocument } from \"flexsearch\";\nimport { FactMap } from \"../facts/map\";\nimport { SingleFact, SegmentClass } from \"../interface/fact\";\nimport { Logger, ILogObj } from \"tslog\";\nimport { Constants } from \"../constants/constants\";\n\n/*\n Flex Search version: 0.7.31\n Flex search docs: https://www.npmjs.com/package/flexsearch/v/0.7.31 \n*/\n\ninterface SearchObject {\n field: string,\n query: string,\n bool: string,\n limit: number,\n key?: string\n}\n\ninterface SearchResult {\n field: string,\n result: string[],\n resultSet?: Set,\n}\ninterface SearchParams {\n options: (number|null)[],\n value: string,\n}\n\ninterface SearchFacts { // eslint-disable-line\n (searchParams:SearchParams): void\n}\n\ninterface index {\n id: string,\n field: string | undefined,\n search?: (searchObject:SearchObject) => SearchResult[]\n}\n\n// interface filterState {\n// data?: string,\n// tags?: number,\n// period?: string[],\n// measure?: string[],\n// axis?: string[],\n// member?: string[],\n// scale?: string[],\n// balance?: string[],\n// type?: string[],\n// };\n\nfunction getDimensionCounts(): void {\n const axis = FactMap.getAllAxis();\n Constants.axesCount = axis.length;\n const members = FactMap.getAllMembers();\n Constants.membersCount = members.length;\n}\n\nexport class FlexSearch { // maybe this should be ixFlexSearch and we need to use new FlexSearch to init class\n // https://github.com/nextapps-de/flexsearch?tab=readme-ov-file\n // We have added a LOT of our own code to make filters work as expected. Might be easier not to use a library at all...\n // Maybe look into https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\n\n static index:index = {\n id: '',\n field: undefined,\n }\n static indexCount: number;\n static standardProps = [\n 'content', 'raw', 'factname', 'contextRef', 'labels', 'definitions', 'period',\n 'measure', 'axis', 'member', 'scale', 'balance', 'custom', 'amount',\n 'text', 'calculation', 'negative', 'additional', 'dimensions'\n ];\n // static referenceProps = [\n // 'refTopic', 'refSubtopic', 'refParagraph', 'refPublisher', 'refSection', 'refNumber'\n // ];\n\n public static init(mapOfFacts: Map): Promise {\n this.index = new FlexSearchDocument({\n tokenize: mapOfFacts.size > 5000 ? 'strict' : 'full', // strict is very fast, reverse slower\n // resolution: 1,\n // depth: 1,\n document: {\n id: 'id',\n // index: [...FlexSearch.standardProps, ...FlexSearch.referenceProps],\n index: [...FlexSearch.standardProps],\n },\n });\n\n FlexSearch.indexCount = mapOfFacts.size;\n FactMap.init(mapOfFacts); // not totally sure why we have to run this, but if we don't some filters tests break.\n getDimensionCounts();\n\n // const getSearchableRefDataByProp = (refs: ReferenceAsArray[], propName: string) => {\n // // could improve perf by iterating through fact refs just once... instead of for each propName\n // if (refs) {\n // const combinedValsPerRefProp = refs.reduce((combinedVals, ref) => {\n // return ref.reduce((combinedVals: string, refPropObject:{string: string}) => {\n // return (`${combinedVals} ${(refPropObject && refPropObject[propName]) ? refPropObject[propName] : ''}`).trim()\n // }, combinedVals)\n // }, '')\n // return combinedValsPerRefProp.length === 0 ? null : combinedValsPerRefProp;\n // }\n // return null;\n // };\n\n const getAxes = (segments: Array) => {\n if (!segments) return;\n return segments.map(seg => {\n if (Array.isArray(seg)) {\n return seg.map(segItem => segItem.axis);\n } else {\n return seg.axis;\n }\n })\n }\n\n const getMembers = (segments: Array) => {\n if (!segments) return;\n return segments.map(seg => {\n if (Array.isArray(seg)) {\n return seg.map(segItem => segItem.member);\n } else {\n return seg.member;\n }\n })\n }\n mapOfFacts.forEach((fact, factIndex) => {\n const searchable = {\n 'id': factIndex,\n 'content': fact?.filterContent?.content,\n 'raw': fact?.format ? `${fact?.raw.toString()}` : null,\n 'factname': fact?.name,\n 'contextRef': fact?.contextRef,\n 'labels': fact.filterContent?.labels,\n 'definitions': fact?.filterContent?.definitions,\n 'period': fact.period,\n 'measure': fact.measure,\n 'axis': fact?.segment ? (Constants.axesCount < 750 ? getAxes(fact?.segment) : null) : null,\n 'member': fact?.segment ? Constants.membersCount < Constants.memberLimit ? getMembers(fact?.segment) : null : null,\n 'scale': fact.scale,\n 'balance': fact.balance,\n // tags\n 'custom': fact.isCustom?.toString(),\n // data\n 'amount': fact.isAmountsOnly?.toString(),\n 'text': fact.isTextOnly?.toString(),\n 'calculation': ((fact?.calculations?.length > 0) && (!fact?.segment?.map(element => element.dimension).length)).toString(),\n // 'calculation': fact?.calculations?.length > 0 ? (fact?.segment?.map(element => element.dimension).length).toString() : null,\n 'negative': fact.isNegativeOnly ? fact.isNegativeOnly.toString() : null,\n 'additional': fact.isAdditional ? fact.isAdditional.toString() : null,\n // references\n // 'refTopic': getSearchableRefDataByProp(fact.references, 'Topic'),\n // 'refSubtopic': getSearchableRefDataByProp(fact.references, 'SubTopic'),\n // 'refParagraph': getSearchableRefDataByProp(fact.references, 'Paragraph'),\n // 'refPublisher': getSearchableRefDataByProp(fact.references, 'Publisher'),\n // 'refSection': getSearchableRefDataByProp(fact.references, 'Section'),\n // 'refNumber': getSearchableRefDataByProp(fact.references, 'Number'),\n };\n this.index.add(searchable);\n });\n return new Promise(resolve => {\n resolve({msg: \"search init complete\"});\n })\n }\n\n /**\n * Description\n * @param {any} searchParams.options -> {} array of numbers corresponding to search fields checkboxes (name, conent, labels, definitions, dimensions, references) \n * @param {any} searchParams.value -> text search value\n * @param {any} suggest=false\n * @returns {any}\n */\n // { options, value }\n static searchFacts(searchParams: SearchParams, suggest = false) {\n const optionFields: (string|null)[] = [\n null,\n 'factname',\n 'content',\n 'labels',\n 'definitions',\n 'dimensions',\n // 'references',\n ];\n\n const searchObject = searchParams.options?.reduce((acc: Array, current) => {\n if (optionFields[current]) {\n if (optionFields[current] === 'content') {\n acc.push({\n field: 'raw',\n query: searchParams.value as string,\n bool: 'or',\n limit: FlexSearch.indexCount,\n });\n acc.push({\n field: 'content',\n query: searchParams.value as string,\n bool: 'or',\n limit: FlexSearch.indexCount,\n });\n } else if (optionFields[current] === 'references') {\n // we add multiple\n FlexSearch.referenceProps.forEach(refProp => {\n acc.push({\n field: refProp,\n query: searchParams.value as string,\n bool: 'or',\n limit: FlexSearch.indexCount,\n });\n })\n } else {\n // we add just oneuuu\n acc.push({\n field: optionFields[current] as string,\n query: searchParams.value as string,\n bool: 'or',\n limit: FlexSearch.indexCount,\n });\n }\n }\n return acc;\n }, []);\n\n const ids = this.index.search(searchObject);\n const uniqueArray = [...new Set([].concat(...ids.map(current => current.result)))];\n if (suggest) {\n return uniqueArray;\n }\n return uniqueArray;\n }\n\n static filterFacts(dataFields: any, filterState: any) {\n console.log('filterState', filterState)\n const startPerf = performance.now();\n\n let dataFilterActive = null;\n let tagFilterActive = null;\n\n const filterObject = Object.keys(filterState).reduce((accumulator: Array, filterKey: string|number|string[]) => {\n if (filterKey === 'data') {\n if (filterState[filterKey]) {\n dataFilterActive = true;\n accumulator.push({\n field: filterState[filterKey] as string,\n query: 'true',\n bool: 'and',\n limit: FlexSearch.indexCount,\n key: filterKey\n });\n }\n } else if (filterKey === 'tags') {\n // standard tags '1' or custom tags '2'\n if (filterState[filterKey] === 1 || filterState[filterKey] === 2) {\n tagFilterActive = true;\n accumulator.push({\n field: 'custom',\n query: filterState[filterKey] === 1 ? 'false' : 'true',\n bool: 'and',\n limit: FlexSearch.indexCount,\n key: filterKey\n });\n }\n } else {\n accumulator.push(filterState[filterKey].map((currentFilterVal:string|number|string[]) => {\n\n // have to manually figure out how many facts have the prop / val to set the limit of the search, which flexsearch is \n // smart enough to choose the most correct matches.\n // On it's own flexsearch returns too many results due to partial matches.\n \n const matchCount = FactMap.asArray().filter(fact => fact[filterKey] == currentFilterVal).length\n // const matchCount = [...mapOfFacts.values()].filter(fact => fact[filterKey] == currentFilterVal).length\n \n // seems to increase filter time by only ~5%\n\n return {\n field: filterKey,\n query: currentFilterVal,\n bool: 'or',\n // limit: FlexSearch.indexCount,\n limit: matchCount,\n key: filterKey,\n tokenize: 'strict', // does nothing; 'exact' also does nothing;\n };\n }));\n }\n return accumulator;\n }, []).flat();\n \n if (filterObject.length > 0) {\n \n // APPLY FILTER\n const queryResultObjs = this.index.search(filterObject);\n\n\n const resultsWithSets = queryResultObjs.map((res: SearchResult) => {\n res.resultSet = new Set(res.result);\n return res;\n })\n\n // find intersection with data and tags sets\n const dataResults = resultsWithSets.filter((res: SearchResult) => {\n return dataFields.slice(1).includes(res.field)\n }).map((r: SearchResult) => r.resultSet)[0];\n\n const tagsResults = resultsWithSets.filter((res: SearchResult) => res.field == \"custom\").map((r: SearchResult) => r.resultSet)[0];\n\n let dataTagsIntersection = undefined\n if ((dataFilterActive && !dataResults) || (tagFilterActive && !tagsResults)) {\n dataTagsIntersection = null;\n }\n else if (!dataResults || !tagsResults) {\n dataTagsIntersection = dataResults || tagsResults;\n }\n else if (dataResults && tagsResults) {\n dataTagsIntersection = dataResults.intersection(tagsResults);\n }\n\n // .union all \"more\" data sets\n const moreDataResults = resultsWithSets.filter(res => {\n return !dataFields.slice(1).includes(res.field) && res.field !== \"custom\";\n })\n const moreDataCombined = moreDataResults.map(res => {\n return res.resultSet\n }).reduce((a, c) => {\n if (!a || !c) {\n if (!a && !c) {\n return null;\n }\n return a || c;\n } else {\n return a.union(c);\n }\n }, null);\n \n // find intersection of data/tags & more\n let finalSet: string[] | null = null;\n if ((dataFilterActive || tagFilterActive) && !dataTagsIntersection) {\n finalSet = null;\n } else if (!dataTagsIntersection || !moreDataCombined) {\n finalSet = dataTagsIntersection || moreDataCombined;\n } else if (dataTagsIntersection && moreDataCombined) {\n finalSet = dataTagsIntersection.intersection(moreDataCombined);\n }\n\n if (LOGPERFORMANCE || Constants.logPerfParam ) {\n const endPerf = performance.now();\n const log: Logger = new Logger();\n log.debug(`FlexSearch Filter completed in: ${(endPerf - startPerf).toFixed(2)}ms`);\n }\n\n if (finalSet) {\n const filteredArray: string[] = Array.from(finalSet);\n\n // FactMap.setEnabledFacts(filteredArray);\n return filteredArray;\n } else {\n // FactMap.setEnabledFacts([]);\n return []; // no facts match applied filters, no facts should be enabled\n }\n } else {\n return null; // no filter applied, all facts should be enabled\n }\n }\n}\n","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport { FlexSearch } from './flex-search';\n\nself.onmessage = (e) => {\n const { type, data } = e.data;\n\n if (type === 'init') {\n FlexSearch.init(data.factMap);\n self.postMessage({type: 'initComplete'});\n }\n\n if (type === 'search') {\n const results = FlexSearch.searchFacts(data.query, data.suggest);\n self.postMessage({type: 'searchComplete', results});\n }\n\n if (type === 'filter') {\n const filteredArray = FlexSearch.filterFacts(data.dataFields, data.filterState);\n self.postMessage({type: 'filterComplete', filteredArray});\n }\n}\n","/**!\r\n * FlexSearch.js v0.7.31 (Bundle)\r\n * Copyright 2018-2022 Nextapps GmbH\r\n * Author: Thomas Wilkerling\r\n * Licence: Apache-2.0\r\n * https://github.com/nextapps-de/flexsearch\r\n */\r\n(function _f(self){'use strict';try{if(module)self=module}catch(e){}self._factory=_f;var t;function u(a){return\"undefined\"!==typeof a?a:!0}function aa(a){const b=Array(a);for(let c=0;c=this.B&&(w||!n[l])){var f=L(q,d,r),g=\"\";switch(this.G){case \"full\":if(2f;h--)if(h-f>=this.B){var k=L(q,d,r,e,f);g=l.substring(f,h);M(this,n,g,k,a,c)}break}case \"reverse\":if(1=this.B&&M(this,n,\r\ng,L(q,d,r,e,h),a,c);g=\"\"}case \"forward\":if(1=this.B&&M(this,n,g,f,a,c);break}default:if(this.C&&(f=Math.min(f/this.C(b,l,r)|0,q-1)),M(this,n,l,f,a,c),w&&1=this.B&&!e[l]){e[l]=1;const p=this.l&&l>f;M(this,m,p?f:l,L(g+(d/2>g?0:1),d,r,h-1,k-1),a,c,p?l:f)}}}}this.m||(this.register[a]=1)}}return this};\r\nfunction L(a,b,c,d,e){return c&&1=this.B&&!c[q])if(this.s||f||this.map[q])k[w++]=q,c[q]=1;else return d;a=k;e=a.length}if(!e)return d;b||(b=100);h=this.depth&&1=d)))break;if(n){if(f)return ta(k,d,0);b[b.length]=k;return}}return!c&&k}function ta(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}\r\nfunction ua(a,b,c,d){c?(d=d&&b>c,a=(a=a[d?b:c])&&a[d?c:b]):a=a[b];return a}t.contain=function(a){return!!this.register[a]};t.update=function(a,b){return this.remove(a).add(a,b)};\r\nt.remove=function(a,b){const c=this.register[a];if(c){if(this.m)for(let d=0,e;db||c)e=e.slice(c,c+b);d&&(e=za.call(this,e));return{tag:a,result:e}}}function za(a){const b=Array(a.length);for(let c=0,d;c {\n\t// Load entry module and return exports\n\t// This entry module depends on other loaded chunks and execution need to be delayed\n\tvar __webpack_exports__ = __webpack_require__.O(undefined, [870], () => (__webpack_require__(4497)))\n\t__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n\treturn __webpack_exports__;\n};\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var next = __webpack_require__.x;\n__webpack_require__.x = () => {\n\treturn __webpack_require__.e(870).then(next);\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks and chunks that the entrypoint depends on\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".bundle.\" + \"2be58e7a854ed7626abd\" + \".min.js\";\n};","// This function allow to reference async chunks and chunks that the entrypoint depends on\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/ixviewer-plus/\";","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t497: 1\n};\n\n// importScripts chunk loading\nvar installChunk = (data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\twhile(chunkIds.length)\n\t\tinstalledChunks[chunkIds.pop()] = 1;\n\tparentChunkLoadingFunction(data);\n};\n__webpack_require__.f.i = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\timportScripts(__webpack_require__.p + __webpack_require__.u(chunkId));\n\t\t}\n\t}\n};\n\nvar chunkLoadingGlobal = self[\"webpackChunkixviewer_2\"] = self[\"webpackChunkixviewer_2\"] || [];\nvar parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);\nchunkLoadingGlobal.push = installChunk;\n\n// no HMR\n\n// no HMR manifest","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"names":["isTruthy","t","Boolean","version","featureSet","appStart","loadPhaseComplete","appWindow","window","frameElement","id","parent","loadedViaRedirect","perfTableJs","perfTableDom","elapsedPerfTable","discretePerfTable","logPerfParam","unused","axesCount","membersCount","memberLimit","getSearchCriteria","isNcsr","sumOfDocsSizes","docSizeFallbackLimit","scrollPosition","localStorage","getItem","hoverOption","getHTMLAttributes","getPaginationPerPage","factCount","getMetaSourceDocuments","getMetaTags","getInstances","getCurrentInstance","find","inst","current","getInlineFiles","sections","setSections","sessionStorage","setItem","JSON","stringify","getSectionsFromSessionStorage","sectionsFromLocal","parse","getStdRef","getFormInformation","getMetaCustomPrefix","getMetaDts","getMetaDocuments","input","getScrollPosition","document","getElementById","scrollTop","getNavBarsHeight","querySelector","offsetHeight","sideBarPaginationState","pageNumber","totalPages","FactMap","map","Map","init","mapOfFacts","startPerformance","performance","now","clear","Array","from","entry","delete","set","endPerformance","perfMetric","modStart","modEnd","fromInit","elapsedTime","Number","toFixed","moduleTime","push","includes","console","log","location","href","table","addToJsPerfTable","asArray","values","setHighlightedFacts","arrayOfIDs","setOfIDs","Set","isHighlight","has","setEnabledFacts","isEnabled","resetEnabledFacts","forEach","currentValue","getAllPeriods","periods","period","filter","sort","first","second","slice","reduce","acc","Object","prototype","hasOwnProperty","call","getAllMeasures","measures","measure","getAllAxis","axis","segment","type","value","isArray","nestedCurrent","flat","item","a","b","split","getAllMembers","members","member","getAllScales","scalesOrder","scale","indexOf","getByID","get","error","getByName","firstName","secondName","names","name","length","getByNameContextRef","contextRef","fact","getEnabledFacts","isAdditional","getEnabledHighlightedFacts","getFullFacts","includeHighlights","keys","getFactCount","toString","replace","getTextFactCount","isTextOnly","getNumberFactCount","isAmountsOnly","getFactCountForFile","docSlug","file","setIsSelected","currentFact","inlineFactElem","isSelected","setAttribute","continuedIDs","continuationId","getTagLine","periodDates","index","findIndex","element","data","nestedElement","finalElement","add","localeCompare","this","tokenize","size","FlexSearch","standardProps","indexCount","getDimensionCounts","getAxes","segments","seg","segItem","getMembers","factIndex","searchable","filterContent","content","format","raw","labels","definitions","balance","isCustom","calculations","dimension","isNegativeOnly","Promise","resolve","msg","searchFacts","searchParams","suggest","optionFields","searchObject","options","field","query","bool","limit","referenceProps","refProp","ids","search","concat","result","filterFacts","dataFields","filterState","startPerf","dataFilterActive","tagFilterActive","filterObject","accumulator","filterKey","key","currentFilterVal","matchCount","resultsWithSets","res","resultSet","dataResults","r","tagsResults","dataTagsIntersection","undefined","intersection","moreDataCombined","c","union","finalSet","endPerf","debug","self","onmessage","e","factMap","postMessage","results","filteredArray","_f","module","u","aa","v","create","ba","x","C","D","ca","da","E","H","J","d","f","g","_factory","ea","fa","k","m","h","F","RegExp","ha","ja","encode","ia","G","toLowerCase","ka","la","I","arguments","setTimeout","async","apply","then","ma","n","w","q","l","p","z","A","y","B","na","cache","oa","qa","memory","charset","s","context","depth","match","score","ra","export","K","preset","assign","lang","register","resolution","bidirectional","optimize","fastupdate","minlength","boost","rtl","matcher","stemmer","L","M","sa","ua","Math","min","ta","N","constructor","splice","va","_index","args","task","factory","Function","Index","append","update","substring","offset","contain","remove","searchCache","doc","opt","import","wa","O","exports","o","xa","worker","on","P","eval","Worker","URL","createObjectURL","Blob","Q","S","store","tag","T","U","V","join","ya","za","pluck","enrich","searchAsync","pa","R","X","all","Ba","Aa","Ca","normalize","Ea","Da","Fa","Ga","j","i","Ia","Ha","Ja","La","Ka","Ma","W","Y","Z","Document","registerCharset","registerLanguage","define","amd","__webpack_module_cache__","deferred","next","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","__webpack_exports__","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","definition","defineProperty","enumerable","chunkId","promises","miniCssF","obj","prop","nmd","paths","children","installedChunks","importScripts","chunkLoadingGlobal","parentChunkLoadingFunction","bind","moreModules","runtime","pop"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"497.bundle.862d1b1dc31ed6cf4402.min.js","mappings":"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","sources":["webpack://ixviewer-2/./src/ts/helpers/utilsData.ts","webpack://ixviewer-2/./src/ts/constants/constants.ts","webpack://ixviewer-2/./src/ts/facts/map.ts","webpack://ixviewer-2/./src/ts/helpers/ixPerformance.ts","webpack://ixviewer-2/./src/ts/flex-search/flex-search.ts","webpack://ixviewer-2/./src/ts/flex-search/search-worker.ts","webpack://ixviewer-2/./node_modules/flexsearch/dist/flexsearch.bundle.js","webpack://ixviewer-2/webpack/bootstrap","webpack://ixviewer-2/webpack/runtime/chunk loaded","webpack://ixviewer-2/webpack/runtime/startup chunk dependencies","webpack://ixviewer-2/webpack/runtime/define property getters","webpack://ixviewer-2/webpack/runtime/ensure chunk","webpack://ixviewer-2/webpack/runtime/get javascript chunk filename","webpack://ixviewer-2/webpack/runtime/get mini-css chunk filename","webpack://ixviewer-2/webpack/runtime/hasOwnProperty shorthand","webpack://ixviewer-2/webpack/runtime/node module decorator","webpack://ixviewer-2/webpack/runtime/publicPath","webpack://ixviewer-2/webpack/runtime/importScripts chunk loading","webpack://ixviewer-2/webpack/startup"],"sourcesContent":["/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment \n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nexport function isTruthy(t: T): t is NonNullable {\n return Boolean(t);\n}","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport { Reference } from \"../interface/fact\";\nimport { FormInformation } from \"../interface/form-information\";\nimport { InlineFileMeta, InstanceFile } from \"../interface/instance-file\";\nimport { Section } from \"../interface/meta\";\n\n//Not really used (see comment below)\ntype MetaDocument = any;\n\nexport const Constants = {\n\tversion: \"26.2\",\n\tfeatureSet: \"plus\",\n\tappStart: 0,\n\tloadPhaseComplete: 0,\n\n\tappWindow: (() => {\n\t\tif (typeof window == 'undefined') return {} as Window;\n\t\t// redirect iframe\n\t\tif (!!window.frameElement && window.frameElement.id === \"ixvFrame\") {\n\t\t\treturn window.parent;\n\t\t}\n\t\t// Note: workstation iframe has id \"dispDocFrame\", I don't think we need to handle it though since the iframe\n\t\t// in that cases seems intended to work as \"subwindow\" and links should open in the iframe (?)\n\t\treturn window;\n\t})(),\n\n\tloadedViaRedirect: (() => {\n\t\tif (typeof window == 'undefined') return false;\n\t\t// redirect iframe\n\t\tif (!!window.frameElement && window.frameElement.id === \"ixvFrame\") {\n\t\t\treturn true;\n\t\t}\n\t})(),\n\n\t// holds array of objects { perfMetric, moduleTime, totalElapsedTime }\n\tperfTableJs: [] as object[],\n\tperfTableDom: [] as object[],\n\telapsedPerfTable: [] as object[],\n\tdiscretePerfTable: [] as object[],\n\tlogPerfParam: false,\n\n\tunused: 'test',\n\taxesCount: 0,\n\tmembersCount: 0,\n\tmemberLimit: 750, // too many affects search index performance and eats a lot of mem\n\n\tgetSearchCriteria: {} as { options: { indexOf: (x: any) => number }, regex: RegExp },\n\n\tisNcsr: false,\n\tsumOfDocsSizes: 0,\n\tdocSizeFallbackLimit: 70 * 1000000,\n\n\tscrollPosition: typeof window !== 'undefined' && window.localStorage.getItem(\"scrollPosition\") || \"start\",\n\n\thoverOption: typeof window !== 'undefined' && window.localStorage.getItem(\"hoverOption\") === \"true\" || false,\n\n\tgetHTMLAttributes: {} as Record,\n\n\tgetPaginationPerPage: 10,\n\n\tfactCount: null as string | null,\n\n\tgetMetaSourceDocuments: [] as string[],\n\n\tgetMetaTags: [] as unknown[],\n\n\tgetInstances: [] as InstanceFile[],\n\n\tgetCurrentInstance: () => {\n\t\treturn Constants.getInstances.find(inst => inst.current);\n\t},\n\n\tgetInlineFiles: [] as InlineFileMeta[],\n\n\tsections: [] as Section[],\n\n\tsetSections: (sections: Array): void => {\n\t\tif (sections) {\n\t\t\tConstants.sections = sections;\n\t\t\tsessionStorage.setItem('sections', JSON.stringify(sections));\n\t\t}\n\t},\n\n\tgetSectionsFromSessionStorage: (): Section[] => {\n\t\tconst sectionsFromLocal = sessionStorage.getItem('sections');\n\t\treturn JSON.parse(sectionsFromLocal || '[]') as Section[];\n\t},\n\n\tgetStdRef: {} as Record,\n\n\tgetFormInformation: {} as FormInformation,\n\n\tgetMetaCustomPrefix: null as string | null,\n\n\t//These are never accessed outside of old unit tests\n\tgetMetaDts: null as MetaDocument | null,\n\tgetMetaDocuments: (input: string): MetaDocument | null => {\n\t\tif (input && typeof input === \"string\") {\n\t\t\treturn Constants.getMetaDts && Constants.getMetaDts[input]\n\t\t\t\t? Constants.getMetaDts[input]\n\t\t\t\t: null;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tgetScrollPosition: (): number => {\n\t\tconst currentScrollPosition = document.getElementById('dynamic-xbrl-form')!.scrollTop as number;\n\t\treturn currentScrollPosition;\n\t},\n\n\tgetNavBarsHeight: (): number => {\n\t\treturn document.querySelector('div[id=\"topNavs\"]')?.offsetHeight || 0;\n\t},\n\n\tsideBarPaginationState: {pageNumber: 0, totalPages: 0},\n\n};\n","import { isTruthy } from \"../helpers/utilsData\";\nimport { SingleFact } from \"../interface/fact\";\nimport { addToJsPerfTable } from \"../helpers/ixPerformance\";\nimport { Constants } from \"../constants/constants\";\n\nexport const FactMap: {\n map: Map,\n init: (mapOfFacts: Map) => void,\n asArray: () => Array,\n setHighlightedFacts: (arrayOfIDs: Array) => void,\n setEnabledFacts: (arrayOfIDs: Array) => void,\n resetEnabledFacts: () => void,\n getAllMeasures: () => Array,\n getAllAxis: () => Array<{ type: string, value: string}>,\n getByID: (id: string) => SingleFact | null,\n getEnabledFacts: () => Array<{ id: string, isAdditional: boolean }>,\n getEnabledHighlightedFacts: () => Array<{ id: string, isAdditional: boolean }>,\n getFactCountForFile: (fileName: string) => string,\n getFactCount: () => string,\n getTextFactCount: () => number,\n getNumberFactCount: () => number,\n getFullFacts: () => Array,\n getByNameContextRef: (name: string, contextRef: string) => SingleFact | null,\n getByName: (name: string) => string,\n getAllScales: () => Array,\n getAllMembers: () => Array<{ type: string, value: string}>,\n getAllPeriods: () => { [key: string]: [] },\n getTagLine: () => any[],\n setIsSelected: (input: string | null) => void,\n} = {\n\n map: new Map(),\n\n init: (mapOfFacts: Map): void => {\n const startPerformance = performance.now();\n FactMap.map.clear();\n\n Array.from(new Map([...mapOfFacts]), (entry: any) => {\n if (entry[1].id) {\n FactMap.map.delete(entry[0]);\n FactMap.map.set(entry[1].id, entry[1]);\n }\n });\n const endPerformance = performance.now();\n if (LOGPERFORMANCE || Constants.logPerfParam ) {\n addToJsPerfTable('FactMap.init', startPerformance, endPerformance)\n }\n\n },\n\n asArray: (): SingleFact[] => {\n return [...FactMap.map.values()];\n },\n\n setHighlightedFacts: (arrayOfIDs) => {\n if (!arrayOfIDs) return;\n const setOfIDs = new Set(arrayOfIDs);\n for (let [key, current] of FactMap.map) {\n current.isHighlight = setOfIDs.has(current.id);\n }\n },\n\n setEnabledFacts: (arrayOfIDs) => {\n const setOfIDs = new Set(arrayOfIDs);\n for (let [key, current] of FactMap.map) {\n current.isEnabled = setOfIDs.has(current.id);\n }\n },\n\n resetEnabledFacts: () => {\n FactMap.map.forEach((currentValue) => {\n currentValue.isEnabled = true;\n });\n },\n\n getAllPeriods: () => {\n const periods = Array.from(new Map([...FactMap.map]), (entry) => {\n return entry[1].period;\n }).filter(Boolean).sort((first: any, second: any) => {\n return second.slice(-4) - first.slice(-4);\n });\n\n return [...new Set(periods)].reduce((acc: any, current: any) => {\n if (Object.prototype.hasOwnProperty.call(acc, current.slice(-4))) {\n acc[current.slice(-4)].values.push(current);\n } else {\n acc[current.slice(-4)] = {\n values: [current]\n };\n }\n return acc;\n }, {});\n },\n\n getAllMeasures: () => {\n const measures = [...FactMap.map]\n .map(([_, entry]) => entry.measure)\n .filter(isTruthy)\n .sort();\n\n return [...new Set(measures)];\n },\n\n getAllAxis: () => {\n const axis = Array.from(new Map([...FactMap.map]), (entry: any) => {\n return entry[1].segment ? entry[1].segment.map((current: any) => {\n if (current.type) {\n return { type: current.type, value: current.axis };\n } else if (Array.isArray(current)) {\n return current.map((nestedCurrent) => {\n return { type: nestedCurrent.type, value: nestedCurrent.axis };\n });\n }\n }).flat().filter(Boolean) : null;\n }).filter(Boolean);\n\n const unique = [...new Map(axis.flat().map(item => [item['value'], item])).values()].sort((a, b) => {\n if (a.value.split(':')[1] < b.value.split(':')[1]) return -1;\n if (a.value.split(':')[1] > b.value.split(':')[1]) return 1;\n return 0;\n });\n\n return unique;\n },\n\n getAllMembers: () => {\n const members = Array.from(new Map([...FactMap.map]), (entry: any) => {\n return entry[1].segment ? entry[1].segment.map((current: any) => {\n if (current.member) {\n return { type: current.type, value: current.member };\n } else if (Array.isArray(current)) {\n return current.map((nestedCurrent) => {\n return { type: nestedCurrent.type, value: nestedCurrent.member };\n });\n }\n }).flat().filter(Boolean) : null;\n }).filter(Boolean);\n const unique = [...new Map(members.flat().map(item => [item['value'], item])).values()].sort((a, b) => {\n if (a.value.split(':')[1] < b.value.split(':')[1]) return -1;\n if (a.value.split(':')[1] > b.value.split(':')[1]) return 1;\n return 0;\n });\n return unique;\n },\n\n getAllScales: () => {\n const scalesOrder = [\n \"Trillions\",\n \"Hundred Billions\",\n \"Ten Billions\",\n \"Billions\",\n \"Hundred Millions\",\n \"Ten Millions\",\n \"Millions\",\n \"Hundred Thousands\",\n \"Ten Thousands\",\n \"Thousands\",\n \"Hundreds\",\n \"Tens\",\n \"Zero\",\n \"Tenths\",\n \"Hundredths\",\n \"Thousandths\",\n \"Ten Thousandths\",\n \"Hundred Thousandths\",\n \"Millionths\"\n ];\n\n const uniqueScales = [...new Set(Array.from(new Map([...FactMap.map]), (entry) => {\n return entry[1].scale;\n }).filter(isTruthy))].sort((a, b) => {\n return scalesOrder.indexOf(a) - scalesOrder.indexOf(b);\n });\n return uniqueScales;\n },\n\n getByID: (id: string) => {\n if (FactMap.map.has(id)) {\n return FactMap.map.get(id) || null;\n } else {\n // ErrorsMinor.factNotFound();\n console.error('Fact id not found:', id)\n return null;\n }\n },\n\n getByName: (firstName: string, secondName: string | boolean = false) => {\n const names: any = Array.from(new Map([...FactMap.map]), (entry: any) => {\n if (entry[1].name === firstName) {\n return entry[1].value;\n }\n }).filter(Boolean);\n if (secondName) {\n return names.length ? `${names[0]} / ${FactMap.getByName(secondName as any)}` : 'Not Available.'\n }\n return names.length ? names[0] : 'Not Available.'\n },\n\n getByNameContextRef: (name: string, contextRef: string) => {\n const fact: any = Array.from(new Map([...FactMap.map]), (entry) => {\n if (entry[1].name === name && entry[1].contextRef === contextRef) {\n return entry[1];\n }\n }).filter(Boolean);\n\n return fact.length ? fact[0] : null;\n },\n\n getEnabledFacts: () => {\n return Array.from(new Map([...FactMap.map]), (entry: any) => {\n if (entry[1].isEnabled) {\n return {\n id: entry[1].id,\n isAdditional: entry[1].isAdditional,\n };\n }\n }).filter(Boolean) as any;\n },\n\n getEnabledHighlightedFacts: () => {\n return Array.from(new Map([...FactMap.map]), (entry: any) => {\n if (entry[1].isEnabled && entry[1].isHighlight) {\n return {\n id: entry[1].id,\n isAdditional: entry[1].isAdditional,\n };\n }\n }).filter(Boolean) as any;\n },\n\n getFullFacts: () => {\n // const includeHighlights = Object.keys(UserFiltersState.getUserSearch).length !== 0;\n const includeHighlights = Object.keys(Constants.getSearchCriteria).length !== 0;\n return Array.from(new Map([...FactMap.map]), (entry: any) => {\n if (includeHighlights) {\n if (entry[1].isEnabled && entry[1].isHighlight) {\n return entry[1];\n }\n } else {\n if (entry[1].isEnabled) {\n return entry[1];\n }\n }\n }).filter(Boolean) as any;\n },\n\n /** Returns the number of facts as a string with \",\" inserted as appropriate */\n getFactCount: (): string => {\n // const includeHighlights = Object.keys(UserFiltersState.getUserSearch).length !== 0;\n const includeHighlights = Object.keys(Constants.getSearchCriteria).length !== 0;\n const count = [...FactMap.map.values()]\n .filter((fact) => fact.isEnabled && (!includeHighlights || fact.isHighlight)).length;\n\n return count.toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n\n getTextFactCount: () => {\n const textFacts = FactMap.asArray().filter((fact) => {\n return fact.isTextOnly;\n })\n return textFacts.length;\n },\n\n getNumberFactCount: () => {\n const numFacts = FactMap.asArray().filter((fact) => {\n return fact.isAmountsOnly;\n })\n return numFacts.length;\n },\n\n getFactCountForFile: (docSlug: string): string => {\n // const includeHighlights = Object.keys(UserFiltersState.getUserSearch).length !== 0;\n const includeHighlights = Object.keys(Constants.getSearchCriteria).length !== 0;\n const count = [...FactMap.map.values()]\n .filter((fact) => fact.file == docSlug)\n .filter((fact) => fact.isEnabled && (!includeHighlights || fact.isHighlight))\n .length;\n\n return count.toString()\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n\n setIsSelected: (input: string | null) => {\n FactMap.map.forEach((currentFact) => {\n const inlineFactElem = document.getElementById(currentFact.id);\n if (input === currentFact.id) {\n currentFact.isSelected = true;\n inlineFactElem?.setAttribute('selected-fact', 'true')\n currentFact.continuedIDs?.forEach((continuationId: string) => {\n document.getElementById(continuationId)?.setAttribute('selected-fact', 'true');\n });\n } else {\n currentFact.isSelected = false;\n inlineFactElem?.setAttribute('selected-fact', 'false')\n currentFact.continuedIDs?.forEach((continuationId: string) => {\n document.getElementById(continuationId)?.setAttribute('selected-fact', 'false');\n });\n\n }\n });\n },\n\n getTagLine: () => {\n return [...FactMap.map].map((entry: [string, SingleFact]) => {\n if (entry[1].isAmountsOnly) {\n return {\n name: entry[1].name,\n periodDates: entry[1].periodDates,\n value: +(entry[1].value || 0),\n };\n }\n }).filter(isTruthy).reduce((\n acc: Array<{ name: string, data: Array<{ periodDates?: string[], value: number }> }> = [],\n current: { name: string, periodDates?: string[], value: number }\n ) => {\n const index = acc.findIndex(element => element.name === current.name);\n if (index > -1) {\n acc[index].data.push({ periodDates: current.periodDates, value: current.value });\n } else {\n acc.push({ name: current.name, data: [{ periodDates: current.periodDates, value: current.value }] });\n }\n return acc;\n }, [])?.filter(element => {\n element.data = element.data.map(nestedElement => {\n const data = new Set();\n\n //TODO: this logic doesn't \"work\" because `finalElement` is a string... \n nestedElement.periodDates?.filter((finalElement) => {\n if (data.has((finalElement as any).periodDates)) {\n return false;\n }\n\n data.add((finalElement as any).periodDates);\n return true;\n });\n return nestedElement.periodDates!.length > 1 ? nestedElement : null;\n }).filter(isTruthy);\n return element.data.length > 1;\n }).sort((first, second) => {\n return first.name.localeCompare(second.name);\n });\n\n },\n\n};\n","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment \n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport { Constants } from \"../constants/constants\";\n\nexport const addToJsPerfTable = (perfMetric: string, modStart: number, modEnd: number, fromInit = false) => {\n const elapsedTime = Number((modEnd - (fromInit ? Constants.appStart : Constants.loadPhaseComplete)).toFixed(0));\n const moduleTime = Number((modEnd - modStart).toFixed(0));\n Constants.perfTableJs.push({perfMetric, moduleTime, elapsedTime});\n if (perfMetric.includes('initSearch')) {\n // print performance tables\n console.log(\"Performance for \" + Constants.appWindow.location.href);\n console.table(Constants.perfTableJs);\n }\n}\n\nexport const addToDomPerfTable = (perfMetric: string, modStart: number, modEnd: number, fromInit = false) => {\n /*\n Example Table\n Fetches time is negative as '0' on our time line is when fetches are complete. \n This makes it so the remaining numbers represent actual JS performane times and \n not loading times, which can vary widely due to servers internet speeds.\n Total time includes load time.\n\n perfMetric moduleTime elapsedTime\n 0\t'All Fetches Complete'\t-317\t -317\n 1\t'Doc Visible'\t 200\t 201\n 2\t'Facts Ready'\t 197\t 397\n 3\t'Search Ready'\t 803\t 1201\n 4\t'Total Time'\t 1517\t 1517\n\n */\n\n // fromInit will start timer when app first loads (sooner)\n // if false will start timer after all fetched docs are loaded (later)\n\n // moduleTime is not reliable - commenting out for now.\n // TODO: since we want to start a module timer when the previous one ends, when 1st tested elem becomes visible\n // it should kick of the timer for the next one. We could create a wrapper func that interates over an array of elems/selectors.\n const moduleTime = Number((modEnd - modStart).toFixed(0));\n const elapsedTime = Number((modEnd - (fromInit ? Constants.appStart : Constants.loadPhaseComplete)).toFixed(0));\n Constants.perfTableDom.push({perfMetric, moduleTime, elapsedTime});\n // Constants.perfTableDom.push({perfMetric, elapsedTime});\n}\n\nexport function timeUiCheckpoints() {\n /* starts when all fetches complete then times when:\n - doc in dom (loading wheel gone)\n - facts ready (marked in doc)\n - search ready\n */\n const checkPointElems = [\n {\n perfLabel: 'Doc Visible',\n elemId: 'loading-animation',\n onDisappear: true,\n },\n {\n perfLabel: 'Facts Ready',\n elemId: 'factClock',\n onDisappear: true\n },\n {\n perfLabel: 'Search Ready',\n elemId: 'search-submit-icon',\n onDisappear: false,\n }\n ];\n // log loading time\n addToDomPerfTable('All Fetches Complete', Constants.loadPhaseComplete, Constants.appStart);\n\n // then iterate through dom checkpoints\n elementsRenderTimer(checkPointElems);\n}\n\nfunction elementsRenderTimer(checkpoints : any[]) {\n const checkpoint = checkpoints.shift();\n if (!checkpoint) return;\n const moduleStart = performance.now();\n\n const checkForElem = window.setInterval(() => {\n const elem = document.getElementById(checkpoint.elemId);\n if (checkpoint.onDisappear) {\n if (!elem || elem.classList.contains('d-none')) {\n clearInterval(checkForElem);\n const elemDisappearTime = performance.now();\n addToDomPerfTable(checkpoint.perfLabel, moduleStart, elemDisappearTime);\n elementsRenderTimer(checkpoints);\n }\n } else {\n if (elem && elem.offsetParent !== null && !elem.classList.contains('d-none')) {\n clearInterval(checkForElem);\n const elemVisible = performance.now()\n addToDomPerfTable(checkpoint.perfLabel, moduleStart, elemVisible);\n elementsRenderTimer(checkpoints); \n\n if (checkpoint.elemId == 'search-submit-icon') {\n addToDomPerfTable('Total Time (Loading + Processing)', Constants.appStart, elemVisible, true);\n\n // print performance tables\n console.log(\"DOM Timeline\");\n console.table(Constants.perfTableDom);\n }\n }\n }\n }, 50)\n}","import { Document as FlexSearchDocument } from \"flexsearch\";\nimport { FactMap } from \"../facts/map\";\nimport { SingleFact, SegmentClass } from \"../interface/fact\";\nimport { Logger, ILogObj } from \"tslog\";\nimport { Constants } from \"../constants/constants\";\n\n/*\n Flex Search version: 0.7.31\n Flex search docs: https://www.npmjs.com/package/flexsearch/v/0.7.31 \n*/\n\ninterface SearchObject {\n field: string,\n query: string,\n bool: string,\n limit: number,\n key?: string\n}\n\ninterface SearchResult {\n field: string,\n result: string[],\n resultSet?: Set,\n}\ninterface SearchParams {\n options: (number|null)[],\n value: string,\n}\n\ninterface SearchFacts { // eslint-disable-line\n (searchParams:SearchParams): void\n}\n\ninterface index {\n id: string,\n field: string | undefined,\n search?: (searchObject:SearchObject) => SearchResult[]\n}\n\n// interface filterState {\n// data?: string,\n// tags?: number,\n// period?: string[],\n// measure?: string[],\n// axis?: string[],\n// member?: string[],\n// scale?: string[],\n// balance?: string[],\n// type?: string[],\n// };\n\nfunction getDimensionCounts(): void {\n const axis = FactMap.getAllAxis();\n Constants.axesCount = axis.length;\n const members = FactMap.getAllMembers();\n Constants.membersCount = members.length;\n}\n\nexport class FlexSearch { // maybe this should be ixFlexSearch and we need to use new FlexSearch to init class\n // https://github.com/nextapps-de/flexsearch?tab=readme-ov-file\n // We have added a LOT of our own code to make filters work as expected. Might be easier not to use a library at all...\n // Maybe look into https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\n\n static index:index = {\n id: '',\n field: undefined,\n }\n static indexCount: number;\n static standardProps = [\n 'content', 'raw', 'factname', 'contextRef', 'labels', 'definitions', 'period',\n 'measure', 'axis', 'member', 'scale', 'balance', 'custom', 'amount',\n 'text', 'calculation', 'negative', 'additional', 'dimensions'\n ];\n // static referenceProps = [\n // 'refTopic', 'refSubtopic', 'refParagraph', 'refPublisher', 'refSection', 'refNumber'\n // ];\n\n public static init(mapOfFacts: Map): Promise {\n this.index = new FlexSearchDocument({\n tokenize: mapOfFacts.size > 5000 ? 'strict' : 'full', // strict is very fast, reverse slower\n // resolution: 1,\n // depth: 1,\n document: {\n id: 'id',\n // index: [...FlexSearch.standardProps, ...FlexSearch.referenceProps],\n index: [...FlexSearch.standardProps],\n },\n });\n\n FlexSearch.indexCount = mapOfFacts.size;\n FactMap.init(mapOfFacts); // not totally sure why we have to run this, but if we don't some filters tests break.\n getDimensionCounts();\n\n // const getSearchableRefDataByProp = (refs: ReferenceAsArray[], propName: string) => {\n // // could improve perf by iterating through fact refs just once... instead of for each propName\n // if (refs) {\n // const combinedValsPerRefProp = refs.reduce((combinedVals, ref) => {\n // return ref.reduce((combinedVals: string, refPropObject:{string: string}) => {\n // return (`${combinedVals} ${(refPropObject && refPropObject[propName]) ? refPropObject[propName] : ''}`).trim()\n // }, combinedVals)\n // }, '')\n // return combinedValsPerRefProp.length === 0 ? null : combinedValsPerRefProp;\n // }\n // return null;\n // };\n\n const getAxes = (segments: Array) => {\n if (!segments) return;\n return segments.map(seg => {\n if (Array.isArray(seg)) {\n return seg.map(segItem => segItem.axis);\n } else {\n return seg.axis;\n }\n })\n }\n\n const getMembers = (segments: Array) => {\n if (!segments) return;\n return segments.map(seg => {\n if (Array.isArray(seg)) {\n return seg.map(segItem => segItem.member);\n } else {\n return seg.member;\n }\n })\n }\n mapOfFacts.forEach((fact, factIndex) => {\n const searchable = {\n 'id': factIndex,\n 'content': fact?.filterContent?.content,\n 'raw': fact?.format ? `${fact?.raw.toString()}` : null,\n 'factname': fact?.name,\n 'contextRef': fact?.contextRef,\n 'labels': fact.filterContent?.labels,\n 'definitions': fact?.filterContent?.definitions,\n 'period': fact.period,\n 'measure': fact.measure,\n 'axis': fact?.segment ? (Constants.axesCount < 750 ? getAxes(fact?.segment) : null) : null,\n 'member': fact?.segment ? Constants.membersCount < Constants.memberLimit ? getMembers(fact?.segment) : null : null,\n 'scale': fact.scale,\n 'balance': fact.balance,\n // tags\n 'custom': fact.isCustom?.toString(),\n // data\n 'amount': fact.isAmountsOnly?.toString(),\n 'text': fact.isTextOnly?.toString(),\n 'calculation': ((fact?.calculations?.length > 0) && (!fact?.segment?.map(element => element.dimension).length)).toString(),\n // 'calculation': fact?.calculations?.length > 0 ? (fact?.segment?.map(element => element.dimension).length).toString() : null,\n 'negative': fact.isNegativeOnly ? fact.isNegativeOnly.toString() : null,\n 'additional': fact.isAdditional ? fact.isAdditional.toString() : null,\n // references\n // 'refTopic': getSearchableRefDataByProp(fact.references, 'Topic'),\n // 'refSubtopic': getSearchableRefDataByProp(fact.references, 'SubTopic'),\n // 'refParagraph': getSearchableRefDataByProp(fact.references, 'Paragraph'),\n // 'refPublisher': getSearchableRefDataByProp(fact.references, 'Publisher'),\n // 'refSection': getSearchableRefDataByProp(fact.references, 'Section'),\n // 'refNumber': getSearchableRefDataByProp(fact.references, 'Number'),\n };\n this.index.add(searchable);\n });\n return new Promise(resolve => {\n resolve({msg: \"search init complete\"});\n })\n }\n\n /**\n * Description\n * @param {any} searchParams.options -> {} array of numbers corresponding to search fields checkboxes (name, conent, labels, definitions, dimensions, references) \n * @param {any} searchParams.value -> text search value\n * @param {any} suggest=false\n * @returns {any}\n */\n // { options, value }\n static searchFacts(searchParams: SearchParams, suggest = false) {\n const optionFields: (string|null)[] = [\n null,\n 'factname',\n 'content',\n 'labels',\n 'definitions',\n 'dimensions',\n // 'references',\n ];\n\n const searchObject = searchParams.options?.reduce((acc: Array, current) => {\n if (optionFields[current]) {\n if (optionFields[current] === 'content') {\n acc.push({\n field: 'raw',\n query: searchParams.value as string,\n bool: 'or',\n limit: FlexSearch.indexCount,\n });\n acc.push({\n field: 'content',\n query: searchParams.value as string,\n bool: 'or',\n limit: FlexSearch.indexCount,\n });\n } else if (optionFields[current] === 'references') {\n // we add multiple\n FlexSearch.referenceProps.forEach(refProp => {\n acc.push({\n field: refProp,\n query: searchParams.value as string,\n bool: 'or',\n limit: FlexSearch.indexCount,\n });\n })\n } else {\n // we add just oneuuu\n acc.push({\n field: optionFields[current] as string,\n query: searchParams.value as string,\n bool: 'or',\n limit: FlexSearch.indexCount,\n });\n }\n }\n return acc;\n }, []);\n\n const ids = this.index.search(searchObject);\n const uniqueArray = [...new Set([].concat(...ids.map(current => current.result)))];\n if (suggest) {\n return uniqueArray;\n }\n return uniqueArray;\n }\n\n static filterFacts(dataFields: any, filterState: any) {\n console.log('filterState', filterState)\n const startPerf = performance.now();\n\n let dataFilterActive = null;\n let tagFilterActive = null;\n\n const filterObject = Object.keys(filterState).reduce((accumulator: Array, filterKey: string|number|string[]) => {\n if (filterKey === 'data') {\n if (filterState[filterKey]) {\n dataFilterActive = true;\n accumulator.push({\n field: filterState[filterKey] as string,\n query: 'true',\n bool: 'and',\n limit: FlexSearch.indexCount,\n key: filterKey\n });\n }\n } else if (filterKey === 'tags') {\n // standard tags '1' or custom tags '2'\n if (filterState[filterKey] === 1 || filterState[filterKey] === 2) {\n tagFilterActive = true;\n accumulator.push({\n field: 'custom',\n query: filterState[filterKey] === 1 ? 'false' : 'true',\n bool: 'and',\n limit: FlexSearch.indexCount,\n key: filterKey\n });\n }\n } else {\n accumulator.push(filterState[filterKey].map((currentFilterVal:string|number|string[]) => {\n\n // have to manually figure out how many facts have the prop / val to set the limit of the search, which flexsearch is \n // smart enough to choose the most correct matches.\n // On it's own flexsearch returns too many results due to partial matches.\n \n const matchCount = FactMap.asArray().filter(fact => fact[filterKey] == currentFilterVal).length\n // const matchCount = [...mapOfFacts.values()].filter(fact => fact[filterKey] == currentFilterVal).length\n \n // seems to increase filter time by only ~5%\n\n return {\n field: filterKey,\n query: currentFilterVal,\n bool: 'or',\n // limit: FlexSearch.indexCount,\n limit: matchCount,\n key: filterKey,\n tokenize: 'strict', // does nothing; 'exact' also does nothing;\n };\n }));\n }\n return accumulator;\n }, []).flat();\n \n if (filterObject.length > 0) {\n \n // APPLY FILTER\n const queryResultObjs = this.index.search(filterObject);\n\n\n const resultsWithSets = queryResultObjs.map((res: SearchResult) => {\n res.resultSet = new Set(res.result);\n return res;\n })\n\n // find intersection with data and tags sets\n const dataResults = resultsWithSets.filter((res: SearchResult) => {\n return dataFields.slice(1).includes(res.field)\n }).map((r: SearchResult) => r.resultSet)[0];\n\n const tagsResults = resultsWithSets.filter((res: SearchResult) => res.field == \"custom\").map((r: SearchResult) => r.resultSet)[0];\n\n let dataTagsIntersection = undefined\n if ((dataFilterActive && !dataResults) || (tagFilterActive && !tagsResults)) {\n dataTagsIntersection = null;\n }\n else if (!dataResults || !tagsResults) {\n dataTagsIntersection = dataResults || tagsResults;\n }\n else if (dataResults && tagsResults) {\n dataTagsIntersection = dataResults.intersection(tagsResults);\n }\n\n // .union all \"more\" data sets\n const moreDataResults = resultsWithSets.filter(res => {\n return !dataFields.slice(1).includes(res.field) && res.field !== \"custom\";\n })\n const moreDataCombined = moreDataResults.map(res => {\n return res.resultSet\n }).reduce((a, c) => {\n if (!a || !c) {\n if (!a && !c) {\n return null;\n }\n return a || c;\n } else {\n return a.union(c);\n }\n }, null);\n \n // find intersection of data/tags & more\n let finalSet: string[] | null = null;\n if ((dataFilterActive || tagFilterActive) && !dataTagsIntersection) {\n finalSet = null;\n } else if (!dataTagsIntersection || !moreDataCombined) {\n finalSet = dataTagsIntersection || moreDataCombined;\n } else if (dataTagsIntersection && moreDataCombined) {\n finalSet = dataTagsIntersection.intersection(moreDataCombined);\n }\n\n if (LOGPERFORMANCE || Constants.logPerfParam ) {\n const endPerf = performance.now();\n const log: Logger = new Logger();\n log.debug(`FlexSearch Filter completed in: ${(endPerf - startPerf).toFixed(2)}ms`);\n }\n\n if (finalSet) {\n const filteredArray: string[] = Array.from(finalSet);\n\n // FactMap.setEnabledFacts(filteredArray);\n return filteredArray;\n } else {\n // FactMap.setEnabledFacts([]);\n return []; // no facts match applied filters, no facts should be enabled\n }\n } else {\n return null; // no filter applied, all facts should be enabled\n }\n }\n}\n","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport { FlexSearch } from './flex-search';\n\nself.onmessage = (e) => {\n const { type, data } = e.data;\n\n if (type === 'init') {\n FlexSearch.init(data.factMap);\n self.postMessage({type: 'initComplete'});\n }\n\n if (type === 'search') {\n const results = FlexSearch.searchFacts(data.query, data.suggest);\n self.postMessage({type: 'searchComplete', results});\n }\n\n if (type === 'filter') {\n const filteredArray = FlexSearch.filterFacts(data.dataFields, data.filterState);\n self.postMessage({type: 'filterComplete', filteredArray});\n }\n}\n","/**!\r\n * FlexSearch.js v0.7.31 (Bundle)\r\n * Copyright 2018-2022 Nextapps GmbH\r\n * Author: Thomas Wilkerling\r\n * Licence: Apache-2.0\r\n * https://github.com/nextapps-de/flexsearch\r\n */\r\n(function _f(self){'use strict';try{if(module)self=module}catch(e){}self._factory=_f;var t;function u(a){return\"undefined\"!==typeof a?a:!0}function aa(a){const b=Array(a);for(let c=0;c=this.B&&(w||!n[l])){var f=L(q,d,r),g=\"\";switch(this.G){case \"full\":if(2f;h--)if(h-f>=this.B){var k=L(q,d,r,e,f);g=l.substring(f,h);M(this,n,g,k,a,c)}break}case \"reverse\":if(1=this.B&&M(this,n,\r\ng,L(q,d,r,e,h),a,c);g=\"\"}case \"forward\":if(1=this.B&&M(this,n,g,f,a,c);break}default:if(this.C&&(f=Math.min(f/this.C(b,l,r)|0,q-1)),M(this,n,l,f,a,c),w&&1=this.B&&!e[l]){e[l]=1;const p=this.l&&l>f;M(this,m,p?f:l,L(g+(d/2>g?0:1),d,r,h-1,k-1),a,c,p?l:f)}}}}this.m||(this.register[a]=1)}}return this};\r\nfunction L(a,b,c,d,e){return c&&1=this.B&&!c[q])if(this.s||f||this.map[q])k[w++]=q,c[q]=1;else return d;a=k;e=a.length}if(!e)return d;b||(b=100);h=this.depth&&1=d)))break;if(n){if(f)return ta(k,d,0);b[b.length]=k;return}}return!c&&k}function ta(a,b,c){a=1===a.length?a[0]:[].concat.apply([],a);return c||a.length>b?a.slice(c,c+b):a}\r\nfunction ua(a,b,c,d){c?(d=d&&b>c,a=(a=a[d?b:c])&&a[d?c:b]):a=a[b];return a}t.contain=function(a){return!!this.register[a]};t.update=function(a,b){return this.remove(a).add(a,b)};\r\nt.remove=function(a,b){const c=this.register[a];if(c){if(this.m)for(let d=0,e;db||c)e=e.slice(c,c+b);d&&(e=za.call(this,e));return{tag:a,result:e}}}function za(a){const b=Array(a.length);for(let c=0,d;c {\n\t// Load entry module and return exports\n\t// This entry module depends on other loaded chunks and execution need to be delayed\n\tvar __webpack_exports__ = __webpack_require__.O(undefined, [870], () => (__webpack_require__(4497)))\n\t__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n\treturn __webpack_exports__;\n};\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var next = __webpack_require__.x;\n__webpack_require__.x = () => {\n\treturn __webpack_require__.e(870).then(next);\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks and chunks that the entrypoint depends on\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".bundle.\" + \"2be58e7a854ed7626abd\" + \".min.js\";\n};","// This function allow to reference async chunks and chunks that the entrypoint depends on\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/ixviewer-plus/\";","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t497: 1\n};\n\n// importScripts chunk loading\nvar installChunk = (data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\twhile(chunkIds.length)\n\t\tinstalledChunks[chunkIds.pop()] = 1;\n\tparentChunkLoadingFunction(data);\n};\n__webpack_require__.f.i = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\timportScripts(__webpack_require__.p + __webpack_require__.u(chunkId));\n\t\t}\n\t}\n};\n\nvar chunkLoadingGlobal = self[\"webpackChunkixviewer_2\"] = self[\"webpackChunkixviewer_2\"] || [];\nvar parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);\nchunkLoadingGlobal.push = installChunk;\n\n// no HMR\n\n// no HMR manifest","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"names":["isTruthy","t","Boolean","version","featureSet","appStart","loadPhaseComplete","appWindow","window","frameElement","id","parent","loadedViaRedirect","perfTableJs","perfTableDom","elapsedPerfTable","discretePerfTable","logPerfParam","unused","axesCount","membersCount","memberLimit","getSearchCriteria","isNcsr","sumOfDocsSizes","docSizeFallbackLimit","scrollPosition","localStorage","getItem","hoverOption","getHTMLAttributes","getPaginationPerPage","factCount","getMetaSourceDocuments","getMetaTags","getInstances","getCurrentInstance","find","inst","current","getInlineFiles","sections","setSections","sessionStorage","setItem","JSON","stringify","getSectionsFromSessionStorage","sectionsFromLocal","parse","getStdRef","getFormInformation","getMetaCustomPrefix","getMetaDts","getMetaDocuments","input","getScrollPosition","document","getElementById","scrollTop","getNavBarsHeight","querySelector","offsetHeight","sideBarPaginationState","pageNumber","totalPages","FactMap","map","Map","init","mapOfFacts","startPerformance","performance","now","clear","Array","from","entry","delete","set","endPerformance","perfMetric","modStart","modEnd","fromInit","elapsedTime","Number","toFixed","moduleTime","push","includes","console","log","location","href","table","addToJsPerfTable","asArray","values","setHighlightedFacts","arrayOfIDs","setOfIDs","Set","isHighlight","has","setEnabledFacts","isEnabled","resetEnabledFacts","forEach","currentValue","getAllPeriods","periods","period","filter","sort","first","second","slice","reduce","acc","Object","prototype","hasOwnProperty","call","getAllMeasures","measures","measure","getAllAxis","axis","segment","type","value","isArray","nestedCurrent","flat","item","a","b","split","getAllMembers","members","member","getAllScales","scalesOrder","scale","indexOf","getByID","get","error","getByName","firstName","secondName","names","name","length","getByNameContextRef","contextRef","fact","getEnabledFacts","isAdditional","getEnabledHighlightedFacts","getFullFacts","includeHighlights","keys","getFactCount","toString","replace","getTextFactCount","isTextOnly","getNumberFactCount","isAmountsOnly","getFactCountForFile","docSlug","file","setIsSelected","currentFact","inlineFactElem","isSelected","setAttribute","continuedIDs","continuationId","getTagLine","periodDates","index","findIndex","element","data","nestedElement","finalElement","add","localeCompare","this","tokenize","size","FlexSearch","standardProps","indexCount","getDimensionCounts","getAxes","segments","seg","segItem","getMembers","factIndex","searchable","filterContent","content","format","raw","labels","definitions","balance","isCustom","calculations","dimension","isNegativeOnly","Promise","resolve","msg","searchFacts","searchParams","suggest","optionFields","searchObject","options","field","query","bool","limit","referenceProps","refProp","ids","search","concat","result","filterFacts","dataFields","filterState","startPerf","dataFilterActive","tagFilterActive","filterObject","accumulator","filterKey","key","currentFilterVal","matchCount","resultsWithSets","res","resultSet","dataResults","r","tagsResults","dataTagsIntersection","undefined","intersection","moreDataCombined","c","union","finalSet","endPerf","debug","self","onmessage","e","factMap","postMessage","results","filteredArray","_f","module","u","aa","v","create","ba","x","C","D","ca","da","E","H","J","d","f","g","_factory","ea","fa","k","m","h","F","RegExp","ha","ja","encode","ia","G","toLowerCase","ka","la","I","arguments","setTimeout","async","apply","then","ma","n","w","q","l","p","z","A","y","B","na","cache","oa","qa","memory","charset","s","context","depth","match","score","ra","export","K","preset","assign","lang","register","resolution","bidirectional","optimize","fastupdate","minlength","boost","rtl","matcher","stemmer","L","M","sa","ua","Math","min","ta","N","constructor","splice","va","_index","args","task","factory","Function","Index","append","update","substring","offset","contain","remove","searchCache","doc","opt","import","wa","O","exports","o","xa","worker","on","P","eval","Worker","URL","createObjectURL","Blob","Q","S","store","tag","T","U","V","join","ya","za","pluck","enrich","searchAsync","pa","R","X","all","Ba","Aa","Ca","normalize","Ea","Da","Fa","Ga","j","i","Ia","Ha","Ja","La","Ka","Ma","W","Y","Z","Document","registerCharset","registerLanguage","define","amd","__webpack_module_cache__","deferred","next","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","__webpack_exports__","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","definition","defineProperty","enumerable","chunkId","promises","miniCssF","obj","prop","nmd","paths","children","installedChunks","importScripts","chunkLoadingGlobal","parentChunkLoadingFunction","bind","moreModules","runtime","pop"],"sourceRoot":""}
\ No newline at end of file
diff --git a/view/ixviewer-plus/dist/fetch-merge.bundle.dfb583f05d214df2e5e3.min.js b/view/ixviewer-plus/dist/fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js
similarity index 99%
rename from view/ixviewer-plus/dist/fetch-merge.bundle.dfb583f05d214df2e5e3.min.js
rename to view/ixviewer-plus/dist/fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js
index 48257009..84f34942 100644
--- a/view/ixviewer-plus/dist/fetch-merge.bundle.dfb583f05d214df2e5e3.min.js
+++ b/view/ixviewer-plus/dist/fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js
@@ -1,3 +1,3 @@
-/*! For license information please see fetch-merge.bundle.dfb583f05d214df2e5e3.min.js.LICENSE.txt */
-(()=>{"use strict";var t,e,n={2884:(t,e,n)=>{var r,i,o,a=n(653),s=n(870),c=n(8990),l=n(9418),u={version:"26.1",featureSet:"plus",appStart:0,loadPhaseComplete:0,appWindow:"undefined"==typeof window?{}:window.frameElement&&"ixvFrame"===window.frameElement.id?window.parent:window,loadedViaRedirect:"undefined"!=typeof window&&(!(!window.frameElement||"ixvFrame"!==window.frameElement.id)||void 0),perfTableJs:[],perfTableDom:[],elapsedPerfTable:[],discretePerfTable:[],logPerfParam:!1,unused:"test",axesCount:0,membersCount:0,memberLimit:750,getSearchCriteria:{},isNcsr:!1,sumOfDocsSizes:0,docSizeFallbackLimit:7e7,scrollPosition:"undefined"!=typeof window&&window.localStorage.getItem("scrollPosition")||"start",hoverOption:"undefined"!=typeof window&&"true"===window.localStorage.getItem("hoverOption")||!1,getHTMLAttributes:{},getPaginationPerPage:10,factCount:null,getMetaSourceDocuments:[],getMetaTags:[],getInstances:[],getCurrentInstance:function(){return u.getInstances.find(function(t){return t.current})},getInlineFiles:[],sections:[],setSections:function(t){t&&(u.sections=t,sessionStorage.setItem("sections",JSON.stringify(t)))},getSectionsFromSessionStorage:function(){var t=sessionStorage.getItem("sections");return JSON.parse(t||"[]")},getStdRef:{},getFormInformation:{},getMetaCustomPrefix:null,getMetaDts:null,getMetaDocuments:function(t){return t&&"string"==typeof t&&u.getMetaDts&&u.getMetaDts[t]?u.getMetaDts[t]:null},getScrollPosition:function(){return document.getElementById("dynamic-xbrl-form").scrollTop},getNavBarsHeight:function(){var t;return(null===(t=document.querySelector('div[id="topNavs"]'))||void 0===t?void 0:t.offsetHeight)||0},sideBarPaginationState:{pageNumber:0,totalPages:0}};function f(t){return Boolean(t)}!function(t){t.Credit="Credit",t.Debit="Debit"}(r||(r={})),function(t){t.Balance="Balance",t.Parent="Parent",t.Section="Section",t.Weight="Weight"}(i||(i={})),function(t){t.Tens="Tens",t.Hundreds="Hundreds",t.Thousands="Thousands",t.TenThousands="Ten Thousands",t.HundredThousands="Hundred Thousands",t.Millions="Millions",t.TenMillions="Ten Millions",t.HundredMillions="Hundred Millions",t.Billions="Billions",t.TenBillions="Ten Billions",t.HundredBillions="Hundred Billions",t.Trillions="Trillions",t.Tenths="Tenths",t.Hundredths="Hundredths",t.Thousandths="Thousandths",t.TenThousandths="Ten Thousandths",t.HundredThousandths="Hundred Thousandths",t.Millionths="Millionths"}(o||(o={}));var d=function(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,o=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},m=function(){function t(t){this.noIdFactMap=null,this.facts=t}return t.prototype.getId=function(t,e){var n;if(null==this.noIdFactMap){var r=new Map;this.noIdFactMap=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i0)&&!(r=o.next()).done;)a.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a}(this.docs),!1).sort(function(t,e){return+e.current-+t.current}).map(function(e){return new Promise(function(n){t.applyElementDataToFact(e),n()})});return Promise.all(e)},t.prototype.applyElementDataToFact=function(t){var e,n,r=(0,a.Hh)(t.xhtml,{}),i=Array.from(r("[contextRef]"));try{for(var o=function(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}(i),c=o.next();!c.done;c=o.next()){var l=c.value,u=r(l).attr("id")||this.idAllocator.getId(r(l).attr("contextref"),r(l).attr("name"));u?this.updateMap(u,r(l),t.slug):(new s.V).error("Fact [name] && [contextRef] could not be located in the Map Object.")}}catch(t){e={error:t}}finally{try{c&&!c.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}},t.prototype.updateMap=function(t,e,n){var r,i,o,a=this.facts.get(t);return a?(this.facts.set(t,g(g({},a),{raw:e.text(),format:e.attr("format")?e.attr("format"):null,isAdditional:e.parents().prop("tagName").toLowerCase().endsWith(":hidden"),isCustom:(null===(r=e.attr("name"))||void 0===r?void 0:r.split(":")[0].toLowerCase())===this.customPrefix,isAmountsOnly:"nonfraction"===(null===(i=e.prop("tagName"))||void 0===i?void 0:i.split(":")[1].toLowerCase()),isTextOnly:"nonnumeric"===(null===(o=e.prop("tagName"))||void 0===o?void 0:o.split(":")[1].toLowerCase()),isNegativeOnly:"-"===e.attr("sign"),sign:"-"===e.attr("sign")?"Negative":null,file:n,scale:y(e.attr("scale"))||"",continuedIDs:[]})),a.id):(console.error("Cannot update map -- missing key:",t),"")},t}(),x=function(){return x=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0)&&!(r=o.next()).done;)a.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},S=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}([i,o]),l=c.next();!l.done;l=c.next()){var u=l.value;"error"in u&&u.error&&(s.push(u.messages),a=!0)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}if(a)throw{all:{error:a,messages:s.flat()}};var f=i,d=o;return M.metaVersion=f.version||null,M.std_ref=f.std_ref||{},M.activeInstance=f.instance,[f,d]})},u=function(t,e){var n,r=t.MyReports.Report,i=new Set;if(r.forEach(function(t){var n,r=null===(n=t._attributes)||void 0===n?void 0:n.instance;r&&!i.has(r)&&(i.add(r),I(e.filter(function(t){return t.instanceHtm.includes(r)}),1)[0].xmlUrl=M.params.metalinks.replace("MetaLinks.json",r.replace(/\.htm$/i,"_htm.xml")))}),!(null===(n=M.activeInstance)||void 0===n?void 0:n.xmlUrl))throw new Error("Could not determine instance URL of active instance.")},A.label=1;case 1:return A.trys.push([1,9,,10]),f=null,this.activeInstance=this.instances.filter(function(t){return t.current})[0],d=null==this.activeInstance,m=!1,d?[4,c()]:[3,3];case 2:v=I.apply(void 0,[A.sent(),2]),y=v[0],g=v[1],u(g,y.instances),this.sections=function(t,e,n){var r=t.MyReports.Report,i=t.InputFiles.File;Array.isArray(i)||(i=[i]);var o=r.filter(function(t){return t.MenuCategory}).map(function(t){var e;return null===(e=t.MenuCategory._text)||void 0===e?void 0:e.toLowerCase()}).some(function(t){return"statement"==t||"statements"==t});return e.map(function(t){var e=t;if((Number(n)<=2.1||!e.menuCat)&&(e.menuCat=function(t){var e;return r.find(function(n){n.ShortName._text===t.shortName&&(e=n.MenuCategory._text)}),e}(t)||e.subGroupType||e.groupType),t.menuCat&&t.shortName)return(e=function(t){t.fact=p(t)||void 0;var e=t.fact;if((null==e?void 0:e.file)&&(null==e?void 0:e.ancestors)&&(null==e?void 0:e.name)){var n=e.ancestors.map(function(t){return t.includes(":")?t.includes("ix:continuation")?"":'[name="'.concat(t,'"]'):t}).reverse().filter(function(t){return"html"!==t&&"body"!==t}).join(" ");t.inlineFactSelector='section[filing-url="'.concat(e.file,'"] ').concat(n,' [name="').concat(e.name,'"][contextref="').concat(e.contextRef,'"]')}return t}(e=function(t){var e,n,r=i.filter(function(e){var n,r;if(e._attributes&&(null===(n=e._attributes)||void 0===n?void 0:n.original)&&((r=e._text).includes(".htm")||r.includes(".html")||r.includes(".xhtml")))return t.instanceHtm.includes(e._attributes.original)});return r.length?t.instanceDocName=null===(n=null===(e=r[0])||void 0===e?void 0:e._attributes)||void 0===n?void 0:n.doctype:console.error("Cannot find instance file in FilingsSummary inputfiles"),t}(e))).menuCatMapped=h(e.menuCat,o)||"",e.position=function(t){var e;return r.forEach(function(n){n.ShortName._text===t.shortName&&(e=Number(n.Position._text))}),e}(t),e.domId="sectionDoc-".concat(function(t,e){void 0===e&&(e=!0);var n=t.replaceAll("/","-").replaceAll(" ","-").replaceAll("#","-").replaceAll(".","-");return e?l.A.sanitize(n):n}(e.instanceDocName,!1)),e}).filter(function(t){return!(!(null==t?void 0:t.fact)||!t.menuCatMapped)})||[]}(g,Object.values(y.sections),this.metaVersion||""),this.setSectionGroupType(this.sections),f=y,this.instances=f.instances,Array.isArray(null===(t=g.InputFiles)||void 0===t?void 0:t.File)||(g.InputFiles.File=[null===(e=g.InputFiles)||void 0===e?void 0:e.File]),m=null===(r=null===(n=g.InputFiles)||void 0===n?void 0:n.File)||void 0===r?void 0:r.reduce(function(t,e){var n=e._attributes;return t||"true"==(null==n?void 0:n.isNcsr)},m),A.label=3;case 3:return b=this,[4,Promise.all(this.activeInstance.docs.map(function(t){return T(M,void 0,void 0,function(){var e;return w(this,function(n){switch(n.label){case 0:return e={url:t.url},[4,this.fetchLength(t.url)];case 1:return[2,(e.size=n.sent(),e)]}})})}))];case 4:return b.activeDocs=A.sent(),this.sumOfDocsSizes=this.activeDocs.reduce(function(t,e){return t+(e.size||0)},0),this.sumOfDocsSizes>this.docSizeFallbackLimit?[4,s()]:[3,6];case 5:return A.sent(),[2,{xhtml:(null===(i=this.activeInstance.docs.find(function(t){return t.current}))||void 0===i?void 0:i.xhtml)||"",isNcsr:m,sumOfDocsSizes:this.sumOfDocsSizes,docs:this.activeInstance.docs}];case 6:return[4,a()];case 7:return A.sent(),[2,{xhtml:(null===(o=this.activeInstance.docs.find(function(t){return t.current}))||void 0===o?void 0:o.xhtml)||"",isNcsr:m,sumOfDocsSizes:this.sumOfDocsSizes}];case 8:return[3,10];case 9:return x=A.sent(),this.errorHandling(x),[3,10];case 10:return[2]}})})},t.prototype.facts=function(){return T(this,void 0,Promise,function(){return w(this,function(t){if(this.sumOfDocsSizes>this.docSizeFallbackLimit)return[2,new Promise(function(t){t({error:"Filing too large"})})];try{return[2,{facts:this.buildFactMap()}]}catch(t){this.errorHandling(t)}return[2]})})},t.prototype.merge=function(){return T(this,void 0,Promise,function(){var t;return w(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),this.sumOfDocsSizes>this.docSizeFallbackLimit?[2,new Promise(function(t){t({error:"Filing too large"})})]:[4,this.mergeAllResponses()];case 1:return e.sent(),[2,{all:{instance:this.instances,sections:this.sections,std_ref:this.std_ref}}];case 2:return t=e.sent(),this.errorHandling(t),[3,3];case 3:return[2]}})})},t.prototype.errorHandling=function(t){throw console.error(t),t&&"object"==typeof t&&"all"in t?t:t instanceof Error?{all:{error:!0,messages:[t.message]}}:{all:{error:!0,messages:[JSON.stringify(t)]}}},t.prototype.decodeWorkstationXmlInHtml=function(t,e,n){return t?e.substring(0,100).toLowerCase().includes("")?(e=(e=(e=(e=(e=e.replaceAll("<","<")).replaceAll(">",">")).replaceAll(""",'"')).replaceAll("'","'")).replaceAll("&","&")).substring(e.indexOf("EDGAR SEC Workstation Login")?(console.error("Workstation requires logging in"),window.alert("Workstation requires logging in"),""):e:e},t.prototype.fetchDocs=function(){var t,e,n=this,r=null===(e=null===(t=this.activeInstance)||void 0===t?void 0:t.docs)||void 0===e?void 0:e.map(function(t){return new Promise(function(e){var r=t.url.includes("DisplayDocument.do?"),i=t.url;r&&(i=Object.prototype.hasOwnProperty.call(n.params,"redline")&&n.params.redline?i.replace(".htm","_ix2.htm"):i.replace(".htm","_ix1.htm")),v(i,{headers:{"Content-Type":"text/html"},mode:"no-cors",credentials:"include"}).then(function(t){var i=n.decodeWorkstationXmlInHtml(r,t,"");e({xhtml:i})}).catch(function(t){e({error:!0,messages:["".concat(t,'; could not find "').concat(n.params.doc,'"')]})})})});return r?Promise.all(r):Promise.resolve([{error:!0,messages:["Issue fetching XHTMLs"]}])},t.prototype.fetchMeta=function(){var t=this;return new Promise(function(e){var n,r,i=t.params.metalinks;return i.includes("DisplayDocument.do?")&&Object.prototype.hasOwnProperty.call(t.params,"redline")&&t.params.redline&&(i=i.replace("MetaLinks.json","PrivateMetaLinks.json")),(n=i,r={credentials:"include",mode:"same-origin"},fetch(n,r).then(function(t){if(t.status>=200&&t.status<=299)return t.json();throw new Error(t.status.toString())})).then(function(n){var r=t.params.doc.substring(t.params.doc.lastIndexOf("/")+1);(r.startsWith("DisplayDocument.do")||r.startsWith("view.html"))&&(r=t.params.doc.substring(t.params.doc.lastIndexOf("filename=")+9));var i=Object.keys(n.instance).join().split(/[ ,]+/),o={};if(!i.includes(r))throw new Error("Incorrect MetaLinks.json Instance");var a=Object.entries(n.instance).map(function(e,n){var i=I(e,2),a=i[0],s=i[1];Object.keys(s.report).forEach(function(t){s.report[t].instanceIndex=n}),Object.values(s.report).forEach(function(t){t.instanceHtm=a}),o=Object.assign(o,s.report);var c=a.split(" ").map(function(e){return{slug:e,url:t.params.doc.replace(t.params["doc-file"],e),xhtml:null,current:a.split(" ").includes(r)&&e===t.params["doc-file"],loaded:!1}});return{current:a.split(" ").includes(r),instance:n,map:new Map,metaInstance:Object.assign(s),instanceHtm:a,xmlUrl:null,docs:c,formInformation:{},xmlSlugs:[]}}),s=I(a.filter(function(t){return t.current}),1)[0],c=x(x({},n),{instance:s,sections:o,version:n.version,meta:{},inlineFiles:[]});e(Object.assign(c,{instances:a}))}).catch(function(n){return e({error:!0,messages:["".concat(n,'; could not find "').concat(t.params.metalinks,'"')]})})})},t.prototype.fetchSummary=function(){var t=this,e=this.params.summary,n=e.includes("DisplayDocument.do?");return n&&this.params.redline&&(e=e.replace("FilingSummary.xml","PrivateFilingSummary.xml")),v(e,{credentials:"include",mode:"same-origin"}).then(function(e){var r=t.decodeWorkstationXmlInHtml(n,e,""),i=c.xml2json(r,{compact:!0});return JSON.parse(i).FilingSummary}).catch(function(e){return{error:!0,messages:["".concat(e,'; could not find "').concat(t.params.summary,'"')]}})},t.prototype.fetchInstanceXml=function(){var t,e=this,n=null===(t=this.activeInstance)||void 0===t?void 0:t.xmlUrl;if(!n)return Promise.reject({error:!0,messages:["Issue fetching XML URLs"]});var r=n.includes("DisplayDocument.do?");return r&&(n=Object.prototype.hasOwnProperty.call(this.params,"redline")&&this.params.redline?n.replace("_htm.xml","_ht2.xml"):n.replace("_htm.xml","_ht1.xml")),v(n).then(function(t){var n=e.decodeWorkstationXmlInHtml(r,t,""),i=JSON.parse(c.xml2json(n,{compact:!0}));return i.xbrl["link:footnoteLink"],i}).catch(function(t){return{error:!0,messages:["".concat(t,'; could not find "XML Instance Data"')]}})},t.prototype.buildFactMap=function(){var t;if(!(null===(t=null==this?void 0:this.activeInstance)||void 0===t?void 0:t.xml))throw new Error("Error: Active Instance has no XML data");return this.activeInstance.map=this.buildInitialFactMap(this.activeInstance.xml),this.enrichFactMapWithMetalinksData(),this.activeInstance.map},t.prototype.mergeAllResponses=function(){var t;return T(this,void 0,Promise,function(){var e;return w(this,function(n){switch(n.label){case 0:return this.activeInstance.formInformation=this.extractFormInformation(this.activeInstance.metaInstance),this.customPrefix=(null===(t=this.activeInstance.metaInstance.nsprefix)||void 0===t?void 0:t.toLowerCase())||null,e={docs:this.activeInstance.docs,facts:this.activeInstance.map,customPrefix:this.customPrefix||""},[4,new b(e).updateFactMapWithDocsData()];case 1:return n.sent(),[2]}})})},t.prototype.buildInitialFactMap=function(t){var e=this,n=function(t){var e=Object.keys(t).filter(function(t){return t.endsWith(":xbrl")})[0];return!!e&&e.split(":")[0]}(t),r=t,i=n?"".concat(n,":xbrl"):"xbrl",o=n?"".concat(n,":context"):"context",a=n?"".concat(n,":unit"):"unit",s=r[i][o],c=r[i][a]||[],l=r[i]["link:footnoteLink"];delete r[i][o],delete r[i][a],delete r[i]._attributes,delete r[i]["link:schemaRef"],delete r[i]["link:footnoteLink"],this.setPeriodText(s),this.setSegmentData(s),this.setMeasureText(c);var u=new Map,f=function(t,n){var r=t._attributes,i="fact-identifier-".concat(d++),o=r.id||i;u.set(o,x(x({},r),{ix:o,id:i,name:n,value:e.isFactHTML(t._text)?e.updateValueToRemoveIDs(t._text):t._text,isNegativeOnly:e.isFactNegativeOnly(t._text),isHTML:e.isFactHTML(t._text),period:e.setPeriodInfo(r.contextRef,s)||"",periodDates:e.setPeriodDatesInfo(r.contextRef,s),segment:e.setSegmentInfo(r.contextRef,s),measure:e.setMeasureInfo(r.unitRef||"",c),scale:y(r.scale),decimals:e.setDecimalsInfo(r.decimals||""),decimalsVal:r.decimals,sign:null,footnote:e.setFootnoteInfoOnFact(o,l),isEnabled:!0,isHighlight:!1,isSelected:!1,filterContent:{content:e.getTextFromHTML(t._text)},file:null}))},d=0,m=function(t){var e=r[i][t];Array.isArray(e)?e.forEach(function(e){f(e,t)}):f(e,t)};for(var p in r[i])m(p);return u},t.prototype.setSectionGroupType=function(t){return Number(this.metaVersion)<2.2||this.sections.forEach(function(t){return t.groupType=t.menuCat}),t},t.prototype.extractFormInformation=function(t){var e=Object.assign({},t);return delete e.report,delete e.tag,e},t.prototype.enrichFactMapWithMetalinksData=function(){var t,e=this,n=function(t){var n,r,i=t.replace(":","_");if((null===(r=null===(n=e.activeInstance)||void 0===n?void 0:n.metaInstance)||void 0===r?void 0:r.tag)&&e.activeInstance.metaInstance.tag[i]){var o=e.activeInstance.metaInstance.tag[i].auth_ref;return Array.isArray(o)?o:[o]}return[]},r=function(t,e){return t.dimension&&e.push.apply(e,S([],I(n(t.dimension)),!1)),t.member&&e.push.apply(e,S([],I(n(t.member)),!1)),e};null===(t=this.activeInstance)||void 0===t||t.map.forEach(function(t){var n,i,o,a,s=t.name.replace(":","_"),c=(null===(i=null===(n=e.activeInstance)||void 0===n?void 0:n.metaInstance)||void 0===i?void 0:i.tag)?null===(o=e.activeInstance.metaInstance)||void 0===o?void 0:o.tag[s]:null;if(c){if(c.auth_ref){var l=S([],I(c.auth_ref),!1);if(t.segment){var u=[];t.segment.map(function(t){Array.isArray(t)?t.forEach(function(t){u=r(t,u)}):u=r(t,u)}),l=l.concat(u.flat())}var d=S([],I(new Set(l)),!1).map(function(t){return e.std_ref[t]}).filter(Boolean);t.references=d.length>0?d:null;var m=["Publisher","Name","Number","IssueDate","Chapter","Article","Note","Exhibit","Section","Subsection","Topic","SubTopic","Paragraph","Subparagraph","Sentence","Clause","Subclause","Example","Footnote","URI","URIDate","role"];if(t.references){var p=t.references.map(function(t){return Object.keys(t).reduce(function(e,n){var r=m.findIndex(function(t){return t===n});if(-1!==r){var i={};i[n]=t[n],e[r]=i}return e},new Array(Object.keys(t).length).fill(null)).filter(Boolean)});t.references=p}}if(c.calculation){var h=c.calculation;t.calculations=[];var v=function(n){var r,i=null===(a=e.sections)||void 0===a?void 0:a.map(function(t){if(t.role===n)return[{label:"Section",value:t.longName},{label:"Weight",value:e.getCalculationWeight(h[n].weight||0)},{label:"Parent",value:e.getCalculationParent(h[n].parentTag||"")}]}).filter(f);(r=t.calculations).push.apply(r,S([],I(i),!1))};for(var y in h)v(y)}else t.calculations=[];if(c.lang&&(t.labels=Object.values(c.lang).map(function(t){var e,n=t.role,r={};for(var i in n){var o=i.replace(/([A-Z])/g," $1"),a=o.charAt(0).toUpperCase()+o.slice(1);Object.assign(r,((e={})[a]=n[i],e))}return r}),t.filterContent.labels=t.labels.reduce(function(t,e){var n=x({},e);return delete n.documentation,"".concat(t," ").concat(Object.values(n).join(" "))},""),t.filterContent.definitions=t.labels.reduce(function(t,e){return"".concat(t," ").concat(e.Documentation)},"")),c.crdr){var g=c.crdr;t.balance="".concat(g.charAt(0).toUpperCase()).concat(g.slice(1))}c.xbrltype&&(t.xbrltype=c.xbrltype),t.localname=c.localname||null,t.nsuri=c.nsuri||null,t.presentation=c.presentation||null,t.xbrltype=c.xbrltype||null,t.isAmountsOnly=e.isFactAmountsOnly(t.value?t.value:"",t.scale),t.isTextOnly=!e.isFactAmountsOnly(t.value?t.value:"",t.scale)}})},t.prototype.updateValueToRemoveIDs=function(t){var e=a.Hh(t,{xml:!1});return e("[id]").each(function(){e(this).removeAttr("id")}),e("body").wrapInner(""),e.html("body")},t.prototype.isFactAmountsOnly=function(t,e){return/^-?\d+\d*$/.test(t)&&null!=e},t.prototype.isFactNegativeOnly=function(t){return this.isFactAmountsOnly(t)&&t.startsWith("-")},t.prototype.isFactHTML=function(t){return/<\/?[a-z][\s\S]*>/i.test(t)},t.prototype.getTextFromHTML=function(t){return this.isFactHTML(t)?a.Hh(t).text():t},t.prototype.setPeriodText=function(t){null==(t=Array.isArray(t)?t:[t])||t.forEach(function(t){if(t.period)if(t.period.instant){var e=new Date(t.period.instant._text);t.period._array=["".concat(e.getUTCMonth()+1,"/").concat(e.getUTCDate(),"/").concat(e.getUTCFullYear())],t.period._text="As of ".concat(e.getUTCMonth()+1,"/").concat(e.getUTCDate(),"/").concat(e.getUTCFullYear())}else if(t.period.startDate&&t.period.endDate){var n=new Date(t.period.startDate._text),r=new Date(t.period.endDate._text),i=12*(r.getUTCFullYear()-n.getUTCFullYear()),o=r.getUTCMonth()-n.getUTCMonth()+i,a=r.getUTCDate()-n.getUTCDate();a>15?o++:a<-15&&o--,t.period._array=["".concat(n.getUTCMonth()+1,"/").concat(n.getUTCDate(),"/").concat(n.getUTCFullYear()),"".concat(r.getUTCMonth()+1,"/").concat(r.getUTCDate(),"/").concat(r.getUTCFullYear())],t.period._text=o<=0?"".concat(n.getUTCMonth()+1,"/").concat(n.getUTCDate(),"/").concat(n.getUTCFullYear()," - ").concat(r.getUTCMonth()+1,"/").concat(r.getUTCDate(),"/").concat(r.getUTCFullYear()):"".concat(o," months ending ").concat(r.getUTCMonth()+1,"/").concat(r.getUTCDate(),"/").concat(r.getUTCFullYear())}else(new s.V).error("\nFact Period is NEITHER Instant nor Start / End")})},t.prototype.setPeriodInfo=function(t,e){var n=null==(e=Array.isArray(e)?e:[e])?void 0:e.find(function(e){return e._attributes.id===t});if(n&&n.period)return n.period._text},t.prototype.setPeriodDatesInfo=function(t,e){var n=null==(e=Array.isArray(e)?e:[e])?void 0:e.find(function(e){return e._attributes.id===t});if(n&&n.period)return n.period._array},t.prototype.setSegmentData=function(t){var e=this;(Array.isArray(t)?t:[t]).forEach(function(t){if(t.entity&&t.entity.segment){var n=t.entity.segment;n.data=Object.keys(n).map(function(t){var r=t.endsWith("explicitMember");if(Array.isArray(n[t]))return n[t].map(function(t){var n,i=t._text?t._text:null===(n=t[Object.keys(t).filter(function(t){return!t.startsWith("_")})[0]])||void 0===n?void 0:n._text,o={axis:t._attributes.dimension,dimension:t._attributes.dimension,dimensionLabel:e.getTagLabelFromMetalinks(t._attributes.dimension),type:r?"explicit":"implicit",member:i};return r&&(o.memberLabel=e.getTagLabelFromMetalinks(i)),o});var i=r?n[t]._text:n[t][Object.keys(n[t])[1]]._text,o={axis:n[t]._attributes.dimension,dimension:n[t]._attributes.dimension,dimensionLabel:e.getTagLabelFromMetalinks(n[t]._attributes.dimension),type:r?"explicit":"implicit",member:i};return r&&(o.memberLabel=e.getTagLabelFromMetalinks(i)),o})}})},t.prototype.setSegmentInfo=function(t,e){var n,r,i=null==(e=Array.isArray(e)?e:[e])?void 0:e.find(function(e){return e._attributes.id===t});return null===(r=null===(n=null==i?void 0:i.entity)||void 0===n?void 0:n.segment)||void 0===r?void 0:r.data},t.prototype.setMeasureText=function(t){Array.isArray(t)||(t=[t]),t.map(function(t){return t}).forEach(function(t){if(t&&t.measure){var e=t.measure._text.includes(":")?t.measure._text.split(":")[1].toUpperCase():t.measure._text.toUpperCase();t._text=e}else if(t&&t.divide){var n=t.divide.unitNumerator.measure._text.includes(":")?t.divide.unitNumerator.measure._text.split(":")[1].toUpperCase():t.divide.unitNumerator.measure._text.toUpperCase(),r=t.divide.unitDenominator.measure._text.includes(":")?t.divide.unitDenominator.measure._text.split(":")[1].toUpperCase():t.divide.unitDenominator.measure._text.toUpperCase();t._text="".concat(n," / ").concat(r)}})},t.prototype.setMeasureInfo=function(t,e){if(e){var n=function(e){return e.find(function(e){return e._attributes.id===t})},r=Array.isArray(e)?n(e):n([e]);if(r&&("measure"in r||"divide"in r))return r._text}},t.prototype.setDecimalsInfo=function(t){return{"-1":o.Tens,"-2":o.Hundreds,"-3":o.Thousands,"-4":o.TenThousands,"-5":o.HundredThousandths,"-6":o.Millions,"-7":o.TenMillions,"-8":o.HundredMillions,"-9":o.Billions,"-10":o.TenBillions,"-11":o.HundredBillions,"-12":o.Trillions,1:o.Tenths,2:o.Hundredths,3:o.Thousandths,4:o.TenThousandths,5:o.HundredThousandths,6:o.Millionths}[t]||null},t.prototype.setSignInfo=function(t){return{"-":"Negative","+":"Positive"}[t]},t.prototype.accumulateFootnoteText=function(t,e){var n=this;return void 0===e&&(e=""),(null==e?void 0:e.length)>100?(e=e.substring(0,100).substring(0,e.lastIndexOf(" ")+1),e+=" ..."):(Object.entries(t).forEach(function(t){var r=I(t,2),i=r[0],o=r[1];"_text"==i?e+=String(o):Array.isArray(o)?o.forEach(function(t){e=n.accumulateFootnoteText(t,e)}):"xhtml:"==i.substring(0,6)&&(e=n.accumulateFootnoteText(o,e))}),e)},t.prototype.setFootnoteInfoOnFact=function(t,e){var n=this;if(e&&e["link:footnoteArc"]){var r=Array.isArray(e["link:footnoteArc"])?e["link:footnoteArc"].filter(function(e){return e._attributes["xlink:from"]===t}):[e["link:footnoteArc"]].find(function(e){return e._attributes["xlink:from"]===t});if(Array.isArray(r)||"object"!=typeof r||(r=[r]),(null==r?void 0:r.length)&&e["link:footnote"]){if(Array.isArray(e["link:footnote"])){var i=null==r?void 0:r.map(function(t){return t._attributes["xlink:to"]}).map(function(t){return e["link:footnote"].find(function(e){return e._attributes.id===t})});return Array.isArray(i)?i.map(function(t){return n.accumulateFootnoteText(t||{})}).join("
"):this.accumulateFootnoteText(i||{})}return this.accumulateFootnoteText(e["link:footnote"]||{})}}return null},t.prototype.getCalculationWeight=function(t){return t>0?"Added to parent(".concat(t.toFixed(2),")"):t<0?"Substracted from parent(".concat(t.toFixed(2),")"):"Not Available."},t.prototype.getCalculationParent=function(t){return t?t.replace("_",":"):"Not Available."},t}();self.onmessage=function(t){var e=t.data,n=new M(e);n.fetch().then(function(t){return self.postMessage(t)}).then(function(){return n.facts()}).then(function(t){return self.postMessage(t)}).then(function(){return n.merge()}).then(function(t){return self.postMessage(t)}).catch(function(t){return setTimeout(function(){throw new Error(JSON.stringify(t))})})}}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var o=r[t]={exports:{}};return n[t](o,o.exports,i),o.exports}i.m=n,i.x=()=>{var t=i.O(void 0,[870,585],()=>i(2884));return i.O(t)},t=[],i.O=(e,n,r,o)=>{if(!n){var a=1/0;for(u=0;u=o)&&Object.keys(i.O).every(t=>i.O[t](n[c]))?n.splice(c--,1):(s=!1,o0&&t[u-1][2]>o;u--)t[u]=t[u-1];t[u]=[n,r,o]},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,n)=>(i.f[n](t,e),e),[])),i.u=t=>t+".bundle."+{585:"749f2ec6c2ff200c48cb",870:"2be58e7a854ed7626abd"}[t]+".min.js",i.miniCssF=t=>{},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.p="/ixviewer-plus/",(()=>{var t={662:1};i.f.i=(e,n)=>{t[e]||importScripts(i.p+i.u(e))};var e=self.webpackChunkixviewer_2=self.webpackChunkixviewer_2||[],n=e.push.bind(e);e.push=e=>{var[r,o,a]=e;for(var s in o)i.o(o,s)&&(i.m[s]=o[s]);for(a&&a(i);r.length;)t[r.pop()]=1;n(e)}})(),e=i.x,i.x=()=>Promise.all([i.e(870),i.e(585)]).then(e),i.x()})();
-//# sourceMappingURL=fetch-merge.bundle.dfb583f05d214df2e5e3.min.js.map
\ No newline at end of file
+/*! For license information please see fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js.LICENSE.txt */
+(()=>{"use strict";var t,e,n={2884:(t,e,n)=>{var r,i,o,a=n(653),s=n(870),c=n(8990),l=n(9418),u={version:"26.2",featureSet:"plus",appStart:0,loadPhaseComplete:0,appWindow:"undefined"==typeof window?{}:window.frameElement&&"ixvFrame"===window.frameElement.id?window.parent:window,loadedViaRedirect:"undefined"!=typeof window&&(!(!window.frameElement||"ixvFrame"!==window.frameElement.id)||void 0),perfTableJs:[],perfTableDom:[],elapsedPerfTable:[],discretePerfTable:[],logPerfParam:!1,unused:"test",axesCount:0,membersCount:0,memberLimit:750,getSearchCriteria:{},isNcsr:!1,sumOfDocsSizes:0,docSizeFallbackLimit:7e7,scrollPosition:"undefined"!=typeof window&&window.localStorage.getItem("scrollPosition")||"start",hoverOption:"undefined"!=typeof window&&"true"===window.localStorage.getItem("hoverOption")||!1,getHTMLAttributes:{},getPaginationPerPage:10,factCount:null,getMetaSourceDocuments:[],getMetaTags:[],getInstances:[],getCurrentInstance:function(){return u.getInstances.find(function(t){return t.current})},getInlineFiles:[],sections:[],setSections:function(t){t&&(u.sections=t,sessionStorage.setItem("sections",JSON.stringify(t)))},getSectionsFromSessionStorage:function(){var t=sessionStorage.getItem("sections");return JSON.parse(t||"[]")},getStdRef:{},getFormInformation:{},getMetaCustomPrefix:null,getMetaDts:null,getMetaDocuments:function(t){return t&&"string"==typeof t&&u.getMetaDts&&u.getMetaDts[t]?u.getMetaDts[t]:null},getScrollPosition:function(){return document.getElementById("dynamic-xbrl-form").scrollTop},getNavBarsHeight:function(){var t;return(null===(t=document.querySelector('div[id="topNavs"]'))||void 0===t?void 0:t.offsetHeight)||0},sideBarPaginationState:{pageNumber:0,totalPages:0}};function f(t){return Boolean(t)}!function(t){t.Credit="Credit",t.Debit="Debit"}(r||(r={})),function(t){t.Balance="Balance",t.Parent="Parent",t.Section="Section",t.Weight="Weight"}(i||(i={})),function(t){t.Tens="Tens",t.Hundreds="Hundreds",t.Thousands="Thousands",t.TenThousands="Ten Thousands",t.HundredThousands="Hundred Thousands",t.Millions="Millions",t.TenMillions="Ten Millions",t.HundredMillions="Hundred Millions",t.Billions="Billions",t.TenBillions="Ten Billions",t.HundredBillions="Hundred Billions",t.Trillions="Trillions",t.Tenths="Tenths",t.Hundredths="Hundredths",t.Thousandths="Thousandths",t.TenThousandths="Ten Thousandths",t.HundredThousandths="Hundred Thousandths",t.Millionths="Millionths"}(o||(o={}));var d=function(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,i,o=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},m=function(){function t(t){this.noIdFactMap=null,this.facts=t}return t.prototype.getId=function(t,e){var n;if(null==this.noIdFactMap){var r=new Map;this.noIdFactMap=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i0)&&!(r=o.next()).done;)a.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a}(this.docs),!1).sort(function(t,e){return+e.current-+t.current}).map(function(e){return new Promise(function(n){t.applyElementDataToFact(e),n()})});return Promise.all(e)},t.prototype.applyElementDataToFact=function(t){var e,n,r=(0,a.Hh)(t.xhtml,{}),i=Array.from(r("[contextRef]"));try{for(var o=function(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}(i),c=o.next();!c.done;c=o.next()){var l=c.value,u=r(l).attr("id")||this.idAllocator.getId(r(l).attr("contextref"),r(l).attr("name"));u?this.updateMap(u,r(l),t.slug):(new s.V).error("Fact [name] && [contextRef] could not be located in the Map Object.")}}catch(t){e={error:t}}finally{try{c&&!c.done&&(n=o.return)&&n.call(o)}finally{if(e)throw e.error}}},t.prototype.updateMap=function(t,e,n){var r,i,o,a=this.facts.get(t);return a?(this.facts.set(t,g(g({},a),{raw:e.text(),format:e.attr("format")?e.attr("format"):null,isAdditional:e.parents().prop("tagName").toLowerCase().endsWith(":hidden"),isCustom:(null===(r=e.attr("name"))||void 0===r?void 0:r.split(":")[0].toLowerCase())===this.customPrefix,isAmountsOnly:"nonfraction"===(null===(i=e.prop("tagName"))||void 0===i?void 0:i.split(":")[1].toLowerCase()),isTextOnly:"nonnumeric"===(null===(o=e.prop("tagName"))||void 0===o?void 0:o.split(":")[1].toLowerCase()),isNegativeOnly:"-"===e.attr("sign"),sign:"-"===e.attr("sign")?"Negative":null,file:n,scale:y(e.attr("scale"))||"",continuedIDs:[]})),a.id):(console.error("Cannot update map -- missing key:",t),"")},t}(),x=function(){return x=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]0)&&!(r=o.next()).done;)a.push(r.value)}catch(t){i={error:t}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a},S=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}([i,o]),l=c.next();!l.done;l=c.next()){var u=l.value;"error"in u&&u.error&&(s.push(u.messages),a=!0)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(n=c.return)&&n.call(c)}finally{if(e)throw e.error}}if(a)throw{all:{error:a,messages:s.flat()}};var f=i,d=o;return M.metaVersion=f.version||null,M.std_ref=f.std_ref||{},M.activeInstance=f.instance,[f,d]})},u=function(t,e){var n,r=t.MyReports.Report,i=new Set;if(r.forEach(function(t){var n,r=null===(n=t._attributes)||void 0===n?void 0:n.instance;r&&!i.has(r)&&(i.add(r),I(e.filter(function(t){return t.instanceHtm.includes(r)}),1)[0].xmlUrl=M.params.metalinks.replace("MetaLinks.json",r.replace(/\.htm$/i,"_htm.xml")))}),!(null===(n=M.activeInstance)||void 0===n?void 0:n.xmlUrl))throw new Error("Could not determine instance URL of active instance.")},A.label=1;case 1:return A.trys.push([1,9,,10]),f=null,this.activeInstance=this.instances.filter(function(t){return t.current})[0],d=null==this.activeInstance,m=!1,d?[4,c()]:[3,3];case 2:v=I.apply(void 0,[A.sent(),2]),y=v[0],g=v[1],u(g,y.instances),this.sections=function(t,e,n){var r=t.MyReports.Report,i=t.InputFiles.File;Array.isArray(i)||(i=[i]);var o=r.filter(function(t){return t.MenuCategory}).map(function(t){var e;return null===(e=t.MenuCategory._text)||void 0===e?void 0:e.toLowerCase()}).some(function(t){return"statement"==t||"statements"==t});return e.map(function(t){var e=t;if((Number(n)<=2.1||!e.menuCat)&&(e.menuCat=function(t){var e;return r.find(function(n){n.ShortName._text===t.shortName&&(e=n.MenuCategory._text)}),e}(t)||e.subGroupType||e.groupType),t.menuCat&&t.shortName)return(e=function(t){t.fact=p(t)||void 0;var e=t.fact;if((null==e?void 0:e.file)&&(null==e?void 0:e.ancestors)&&(null==e?void 0:e.name)){var n=e.ancestors.map(function(t){return t.includes(":")?t.includes("ix:continuation")?"":'[name="'.concat(t,'"]'):t}).reverse().filter(function(t){return"html"!==t&&"body"!==t}).join(" ");t.inlineFactSelector='section[filing-url="'.concat(e.file,'"] ').concat(n,' [name="').concat(e.name,'"][contextref="').concat(e.contextRef,'"]')}return t}(e=function(t){var e,n,r=i.filter(function(e){var n,r;if(e._attributes&&(null===(n=e._attributes)||void 0===n?void 0:n.original)&&((r=e._text).includes(".htm")||r.includes(".html")||r.includes(".xhtml")))return t.instanceHtm.includes(e._attributes.original)});return r.length?t.instanceDocName=null===(n=null===(e=r[0])||void 0===e?void 0:e._attributes)||void 0===n?void 0:n.doctype:console.error("Cannot find instance file in FilingsSummary inputfiles"),t}(e))).menuCatMapped=h(e.menuCat,o)||"",e.position=function(t){var e;return r.forEach(function(n){n.ShortName._text===t.shortName&&(e=Number(n.Position._text))}),e}(t),e.domId="sectionDoc-".concat(function(t,e){void 0===e&&(e=!0);var n=t.replaceAll("/","-").replaceAll(" ","-").replaceAll("#","-").replaceAll(".","-");return e?l.A.sanitize(n):n}(e.instanceDocName,!1)),e}).filter(function(t){return!(!(null==t?void 0:t.fact)||!t.menuCatMapped)})||[]}(g,Object.values(y.sections),this.metaVersion||""),this.setSectionGroupType(this.sections),f=y,this.instances=f.instances,Array.isArray(null===(t=g.InputFiles)||void 0===t?void 0:t.File)||(g.InputFiles.File=[null===(e=g.InputFiles)||void 0===e?void 0:e.File]),m=null===(r=null===(n=g.InputFiles)||void 0===n?void 0:n.File)||void 0===r?void 0:r.reduce(function(t,e){var n=e._attributes;return t||"true"==(null==n?void 0:n.isNcsr)},m),A.label=3;case 3:return b=this,[4,Promise.all(this.activeInstance.docs.map(function(t){return T(M,void 0,void 0,function(){var e;return w(this,function(n){switch(n.label){case 0:return e={url:t.url},[4,this.fetchLength(t.url)];case 1:return[2,(e.size=n.sent(),e)]}})})}))];case 4:return b.activeDocs=A.sent(),this.sumOfDocsSizes=this.activeDocs.reduce(function(t,e){return t+(e.size||0)},0),this.sumOfDocsSizes>this.docSizeFallbackLimit?[4,s()]:[3,6];case 5:return A.sent(),[2,{xhtml:(null===(i=this.activeInstance.docs.find(function(t){return t.current}))||void 0===i?void 0:i.xhtml)||"",isNcsr:m,sumOfDocsSizes:this.sumOfDocsSizes,docs:this.activeInstance.docs}];case 6:return[4,a()];case 7:return A.sent(),[2,{xhtml:(null===(o=this.activeInstance.docs.find(function(t){return t.current}))||void 0===o?void 0:o.xhtml)||"",isNcsr:m,sumOfDocsSizes:this.sumOfDocsSizes}];case 8:return[3,10];case 9:return x=A.sent(),this.errorHandling(x),[3,10];case 10:return[2]}})})},t.prototype.facts=function(){return T(this,void 0,Promise,function(){return w(this,function(t){if(this.sumOfDocsSizes>this.docSizeFallbackLimit)return[2,new Promise(function(t){t({error:"Filing too large"})})];try{return[2,{facts:this.buildFactMap()}]}catch(t){this.errorHandling(t)}return[2]})})},t.prototype.merge=function(){return T(this,void 0,Promise,function(){var t;return w(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),this.sumOfDocsSizes>this.docSizeFallbackLimit?[2,new Promise(function(t){t({error:"Filing too large"})})]:[4,this.mergeAllResponses()];case 1:return e.sent(),[2,{all:{instance:this.instances,sections:this.sections,std_ref:this.std_ref}}];case 2:return t=e.sent(),this.errorHandling(t),[3,3];case 3:return[2]}})})},t.prototype.errorHandling=function(t){throw console.error(t),t&&"object"==typeof t&&"all"in t?t:t instanceof Error?{all:{error:!0,messages:[t.message]}}:{all:{error:!0,messages:[JSON.stringify(t)]}}},t.prototype.decodeWorkstationXmlInHtml=function(t,e,n){return t?e.substring(0,100).toLowerCase().includes("")?(e=(e=(e=(e=(e=e.replaceAll("<","<")).replaceAll(">",">")).replaceAll(""",'"')).replaceAll("'","'")).replaceAll("&","&")).substring(e.indexOf("EDGAR SEC Workstation Login")?(console.error("Workstation requires logging in"),window.alert("Workstation requires logging in"),""):e:e},t.prototype.fetchDocs=function(){var t,e,n=this,r=null===(e=null===(t=this.activeInstance)||void 0===t?void 0:t.docs)||void 0===e?void 0:e.map(function(t){return new Promise(function(e){var r=t.url.includes("DisplayDocument.do?"),i=t.url;r&&(i=Object.prototype.hasOwnProperty.call(n.params,"redline")&&n.params.redline?i.replace(".htm","_ix2.htm"):i.replace(".htm","_ix1.htm")),v(i,{headers:{"Content-Type":"text/html"},mode:"no-cors",credentials:"include"}).then(function(t){var i=n.decodeWorkstationXmlInHtml(r,t,"");e({xhtml:i})}).catch(function(t){e({error:!0,messages:["".concat(t,'; could not find "').concat(n.params.doc,'"')]})})})});return r?Promise.all(r):Promise.resolve([{error:!0,messages:["Issue fetching XHTMLs"]}])},t.prototype.fetchMeta=function(){var t=this;return new Promise(function(e){var n,r,i=t.params.metalinks;return i.includes("DisplayDocument.do?")&&Object.prototype.hasOwnProperty.call(t.params,"redline")&&t.params.redline&&(i=i.replace("MetaLinks.json","PrivateMetaLinks.json")),(n=i,r={credentials:"include",mode:"same-origin"},fetch(n,r).then(function(t){if(t.status>=200&&t.status<=299)return t.json();throw new Error(t.status.toString())})).then(function(n){var r=t.params.doc.substring(t.params.doc.lastIndexOf("/")+1);(r.startsWith("DisplayDocument.do")||r.startsWith("view.html"))&&(r=t.params.doc.substring(t.params.doc.lastIndexOf("filename=")+9));var i=Object.keys(n.instance).join().split(/[ ,]+/),o={};if(!i.includes(r))throw new Error("Incorrect MetaLinks.json Instance");var a=Object.entries(n.instance).map(function(e,n){var i=I(e,2),a=i[0],s=i[1];Object.keys(s.report).forEach(function(t){s.report[t].instanceIndex=n}),Object.values(s.report).forEach(function(t){t.instanceHtm=a}),o=Object.assign(o,s.report);var c=a.split(" ").map(function(e){return{slug:e,url:t.params.doc.replace(t.params["doc-file"],e),xhtml:null,current:a.split(" ").includes(r)&&e===t.params["doc-file"],loaded:!1}});return{current:a.split(" ").includes(r),instance:n,map:new Map,metaInstance:Object.assign(s),instanceHtm:a,xmlUrl:null,docs:c,formInformation:{},xmlSlugs:[]}}),s=I(a.filter(function(t){return t.current}),1)[0],c=x(x({},n),{instance:s,sections:o,version:n.version,meta:{},inlineFiles:[]});e(Object.assign(c,{instances:a}))}).catch(function(n){return e({error:!0,messages:["".concat(n,'; could not find "').concat(t.params.metalinks,'"')]})})})},t.prototype.fetchSummary=function(){var t=this,e=this.params.summary,n=e.includes("DisplayDocument.do?");return n&&this.params.redline&&(e=e.replace("FilingSummary.xml","PrivateFilingSummary.xml")),v(e,{credentials:"include",mode:"same-origin"}).then(function(e){var r=t.decodeWorkstationXmlInHtml(n,e,""),i=c.xml2json(r,{compact:!0});return JSON.parse(i).FilingSummary}).catch(function(e){return{error:!0,messages:["".concat(e,'; could not find "').concat(t.params.summary,'"')]}})},t.prototype.fetchInstanceXml=function(){var t,e=this,n=null===(t=this.activeInstance)||void 0===t?void 0:t.xmlUrl;if(!n)return Promise.reject({error:!0,messages:["Issue fetching XML URLs"]});var r=n.includes("DisplayDocument.do?");return r&&(n=Object.prototype.hasOwnProperty.call(this.params,"redline")&&this.params.redline?n.replace("_htm.xml","_ht2.xml"):n.replace("_htm.xml","_ht1.xml")),v(n).then(function(t){var n=e.decodeWorkstationXmlInHtml(r,t,""),i=JSON.parse(c.xml2json(n,{compact:!0}));return i.xbrl["link:footnoteLink"],i}).catch(function(t){return{error:!0,messages:["".concat(t,'; could not find "XML Instance Data"')]}})},t.prototype.buildFactMap=function(){var t;if(!(null===(t=null==this?void 0:this.activeInstance)||void 0===t?void 0:t.xml))throw new Error("Error: Active Instance has no XML data");return this.activeInstance.map=this.buildInitialFactMap(this.activeInstance.xml),this.enrichFactMapWithMetalinksData(),this.activeInstance.map},t.prototype.mergeAllResponses=function(){var t;return T(this,void 0,Promise,function(){var e;return w(this,function(n){switch(n.label){case 0:return this.activeInstance.formInformation=this.extractFormInformation(this.activeInstance.metaInstance),this.customPrefix=(null===(t=this.activeInstance.metaInstance.nsprefix)||void 0===t?void 0:t.toLowerCase())||null,e={docs:this.activeInstance.docs,facts:this.activeInstance.map,customPrefix:this.customPrefix||""},[4,new b(e).updateFactMapWithDocsData()];case 1:return n.sent(),[2]}})})},t.prototype.buildInitialFactMap=function(t){var e=this,n=function(t){var e=Object.keys(t).filter(function(t){return t.endsWith(":xbrl")})[0];return!!e&&e.split(":")[0]}(t),r=t,i=n?"".concat(n,":xbrl"):"xbrl",o=n?"".concat(n,":context"):"context",a=n?"".concat(n,":unit"):"unit",s=r[i][o],c=r[i][a]||[],l=r[i]["link:footnoteLink"];delete r[i][o],delete r[i][a],delete r[i]._attributes,delete r[i]["link:schemaRef"],delete r[i]["link:footnoteLink"],this.setPeriodText(s),this.setSegmentData(s),this.setMeasureText(c);var u=new Map,f=function(t,n){var r=t._attributes,i="fact-identifier-".concat(d++),o=r.id||i;u.set(o,x(x({},r),{ix:o,id:i,name:n,value:e.isFactHTML(t._text)?e.updateValueToRemoveIDs(t._text):t._text,isNegativeOnly:e.isFactNegativeOnly(t._text),isHTML:e.isFactHTML(t._text),period:e.setPeriodInfo(r.contextRef,s)||"",periodDates:e.setPeriodDatesInfo(r.contextRef,s),segment:e.setSegmentInfo(r.contextRef,s),measure:e.setMeasureInfo(r.unitRef||"",c),scale:y(r.scale),decimals:e.setDecimalsInfo(r.decimals||""),decimalsVal:r.decimals,sign:null,footnote:e.setFootnoteInfoOnFact(o,l),isEnabled:!0,isHighlight:!1,isSelected:!1,filterContent:{content:e.getTextFromHTML(t._text)},file:null}))},d=0,m=function(t){var e=r[i][t];Array.isArray(e)?e.forEach(function(e){f(e,t)}):f(e,t)};for(var p in r[i])m(p);return u},t.prototype.setSectionGroupType=function(t){return Number(this.metaVersion)<2.2||this.sections.forEach(function(t){return t.groupType=t.menuCat}),t},t.prototype.extractFormInformation=function(t){var e=Object.assign({},t);return delete e.report,delete e.tag,e},t.prototype.enrichFactMapWithMetalinksData=function(){var t,e=this,n=function(t){var n,r,i=t.replace(":","_");if((null===(r=null===(n=e.activeInstance)||void 0===n?void 0:n.metaInstance)||void 0===r?void 0:r.tag)&&e.activeInstance.metaInstance.tag[i]){var o=e.activeInstance.metaInstance.tag[i].auth_ref;return Array.isArray(o)?o:[o]}return[]},r=function(t,e){return t.dimension&&e.push.apply(e,S([],I(n(t.dimension)),!1)),t.member&&e.push.apply(e,S([],I(n(t.member)),!1)),e};null===(t=this.activeInstance)||void 0===t||t.map.forEach(function(t){var n,i,o,a,s=t.name.replace(":","_"),c=(null===(i=null===(n=e.activeInstance)||void 0===n?void 0:n.metaInstance)||void 0===i?void 0:i.tag)?null===(o=e.activeInstance.metaInstance)||void 0===o?void 0:o.tag[s]:null;if(c){if(c.auth_ref){var l=S([],I(c.auth_ref),!1);if(t.segment){var u=[];t.segment.map(function(t){Array.isArray(t)?t.forEach(function(t){u=r(t,u)}):u=r(t,u)}),l=l.concat(u.flat())}var d=S([],I(new Set(l)),!1).map(function(t){return e.std_ref[t]}).filter(Boolean);t.references=d.length>0?d:null;var m=["Publisher","Name","Number","IssueDate","Chapter","Article","Note","Exhibit","Section","Subsection","Topic","SubTopic","Paragraph","Subparagraph","Sentence","Clause","Subclause","Example","Footnote","URI","URIDate","role"];if(t.references){var p=t.references.map(function(t){return Object.keys(t).reduce(function(e,n){var r=m.findIndex(function(t){return t===n});if(-1!==r){var i={};i[n]=t[n],e[r]=i}return e},new Array(Object.keys(t).length).fill(null)).filter(Boolean)});t.references=p}}if(c.calculation){var h=c.calculation;t.calculations=[];var v=function(n){var r,i=null===(a=e.sections)||void 0===a?void 0:a.map(function(t){if(t.role===n)return[{label:"Section",value:t.longName},{label:"Weight",value:e.getCalculationWeight(h[n].weight||0)},{label:"Parent",value:e.getCalculationParent(h[n].parentTag||"")}]}).filter(f);(r=t.calculations).push.apply(r,S([],I(i),!1))};for(var y in h)v(y)}else t.calculations=[];if(c.lang&&(t.labels=Object.values(c.lang).map(function(t){var e,n=t.role,r={};for(var i in n){var o=i.replace(/([A-Z])/g," $1"),a=o.charAt(0).toUpperCase()+o.slice(1);Object.assign(r,((e={})[a]=n[i],e))}return r}),t.filterContent.labels=t.labels.reduce(function(t,e){var n=x({},e);return delete n.documentation,"".concat(t," ").concat(Object.values(n).join(" "))},""),t.filterContent.definitions=t.labels.reduce(function(t,e){return"".concat(t," ").concat(e.Documentation)},"")),c.crdr){var g=c.crdr;t.balance="".concat(g.charAt(0).toUpperCase()).concat(g.slice(1))}c.xbrltype&&(t.xbrltype=c.xbrltype),t.localname=c.localname||null,t.nsuri=c.nsuri||null,t.presentation=c.presentation||null,t.xbrltype=c.xbrltype||null,t.isAmountsOnly=e.isFactAmountsOnly(t.value?t.value:"",t.scale),t.isTextOnly=!e.isFactAmountsOnly(t.value?t.value:"",t.scale)}})},t.prototype.updateValueToRemoveIDs=function(t){var e=a.Hh(t,{xml:!1});return e("[id]").each(function(){e(this).removeAttr("id")}),e("body").wrapInner(""),e.html("body")},t.prototype.isFactAmountsOnly=function(t,e){return/^-?\d+\d*$/.test(t)&&null!=e},t.prototype.isFactNegativeOnly=function(t){return this.isFactAmountsOnly(t)&&t.startsWith("-")},t.prototype.isFactHTML=function(t){return/<\/?[a-z][\s\S]*>/i.test(t)},t.prototype.getTextFromHTML=function(t){return this.isFactHTML(t)?a.Hh(t).text():t},t.prototype.setPeriodText=function(t){null==(t=Array.isArray(t)?t:[t])||t.forEach(function(t){if(t.period)if(t.period.instant){var e=new Date(t.period.instant._text);t.period._array=["".concat(e.getUTCMonth()+1,"/").concat(e.getUTCDate(),"/").concat(e.getUTCFullYear())],t.period._text="As of ".concat(e.getUTCMonth()+1,"/").concat(e.getUTCDate(),"/").concat(e.getUTCFullYear())}else if(t.period.startDate&&t.period.endDate){var n=new Date(t.period.startDate._text),r=new Date(t.period.endDate._text),i=12*(r.getUTCFullYear()-n.getUTCFullYear()),o=r.getUTCMonth()-n.getUTCMonth()+i,a=r.getUTCDate()-n.getUTCDate();a>15?o++:a<-15&&o--,t.period._array=["".concat(n.getUTCMonth()+1,"/").concat(n.getUTCDate(),"/").concat(n.getUTCFullYear()),"".concat(r.getUTCMonth()+1,"/").concat(r.getUTCDate(),"/").concat(r.getUTCFullYear())],t.period._text=o<=0?"".concat(n.getUTCMonth()+1,"/").concat(n.getUTCDate(),"/").concat(n.getUTCFullYear()," - ").concat(r.getUTCMonth()+1,"/").concat(r.getUTCDate(),"/").concat(r.getUTCFullYear()):"".concat(o," months ending ").concat(r.getUTCMonth()+1,"/").concat(r.getUTCDate(),"/").concat(r.getUTCFullYear())}else(new s.V).error("\nFact Period is NEITHER Instant nor Start / End")})},t.prototype.setPeriodInfo=function(t,e){var n=null==(e=Array.isArray(e)?e:[e])?void 0:e.find(function(e){return e._attributes.id===t});if(n&&n.period)return n.period._text},t.prototype.setPeriodDatesInfo=function(t,e){var n=null==(e=Array.isArray(e)?e:[e])?void 0:e.find(function(e){return e._attributes.id===t});if(n&&n.period)return n.period._array},t.prototype.setSegmentData=function(t){var e=this;(Array.isArray(t)?t:[t]).forEach(function(t){if(t.entity&&t.entity.segment){var n=t.entity.segment;n.data=Object.keys(n).map(function(t){var r=t.endsWith("explicitMember");if(Array.isArray(n[t]))return n[t].map(function(t){var n,i=t._text?t._text:null===(n=t[Object.keys(t).filter(function(t){return!t.startsWith("_")})[0]])||void 0===n?void 0:n._text,o={axis:t._attributes.dimension,dimension:t._attributes.dimension,dimensionLabel:e.getTagLabelFromMetalinks(t._attributes.dimension),type:r?"explicit":"implicit",member:i};return r&&(o.memberLabel=e.getTagLabelFromMetalinks(i)),o});var i=r?n[t]._text:n[t][Object.keys(n[t])[1]]._text,o={axis:n[t]._attributes.dimension,dimension:n[t]._attributes.dimension,dimensionLabel:e.getTagLabelFromMetalinks(n[t]._attributes.dimension),type:r?"explicit":"implicit",member:i};return r&&(o.memberLabel=e.getTagLabelFromMetalinks(i)),o})}})},t.prototype.setSegmentInfo=function(t,e){var n,r,i=null==(e=Array.isArray(e)?e:[e])?void 0:e.find(function(e){return e._attributes.id===t});return null===(r=null===(n=null==i?void 0:i.entity)||void 0===n?void 0:n.segment)||void 0===r?void 0:r.data},t.prototype.setMeasureText=function(t){Array.isArray(t)||(t=[t]),t.map(function(t){return t}).forEach(function(t){if(t&&t.measure){var e=t.measure._text.includes(":")?t.measure._text.split(":")[1].toUpperCase():t.measure._text.toUpperCase();t._text=e}else if(t&&t.divide){var n=t.divide.unitNumerator.measure._text.includes(":")?t.divide.unitNumerator.measure._text.split(":")[1].toUpperCase():t.divide.unitNumerator.measure._text.toUpperCase(),r=t.divide.unitDenominator.measure._text.includes(":")?t.divide.unitDenominator.measure._text.split(":")[1].toUpperCase():t.divide.unitDenominator.measure._text.toUpperCase();t._text="".concat(n," / ").concat(r)}})},t.prototype.setMeasureInfo=function(t,e){if(e){var n=function(e){return e.find(function(e){return e._attributes.id===t})},r=Array.isArray(e)?n(e):n([e]);if(r&&("measure"in r||"divide"in r))return r._text}},t.prototype.setDecimalsInfo=function(t){return{"-1":o.Tens,"-2":o.Hundreds,"-3":o.Thousands,"-4":o.TenThousands,"-5":o.HundredThousandths,"-6":o.Millions,"-7":o.TenMillions,"-8":o.HundredMillions,"-9":o.Billions,"-10":o.TenBillions,"-11":o.HundredBillions,"-12":o.Trillions,1:o.Tenths,2:o.Hundredths,3:o.Thousandths,4:o.TenThousandths,5:o.HundredThousandths,6:o.Millionths}[t]||null},t.prototype.setSignInfo=function(t){return{"-":"Negative","+":"Positive"}[t]},t.prototype.accumulateFootnoteText=function(t,e){var n=this;return void 0===e&&(e=""),(null==e?void 0:e.length)>100?(e=e.substring(0,100).substring(0,e.lastIndexOf(" ")+1),e+=" ..."):(Object.entries(t).forEach(function(t){var r=I(t,2),i=r[0],o=r[1];"_text"==i?e+=String(o):Array.isArray(o)?o.forEach(function(t){e=n.accumulateFootnoteText(t,e)}):"xhtml:"==i.substring(0,6)&&(e=n.accumulateFootnoteText(o,e))}),e)},t.prototype.setFootnoteInfoOnFact=function(t,e){var n=this;if(e&&e["link:footnoteArc"]){var r=Array.isArray(e["link:footnoteArc"])?e["link:footnoteArc"].filter(function(e){return e._attributes["xlink:from"]===t}):[e["link:footnoteArc"]].find(function(e){return e._attributes["xlink:from"]===t});if(Array.isArray(r)||"object"!=typeof r||(r=[r]),(null==r?void 0:r.length)&&e["link:footnote"]){if(Array.isArray(e["link:footnote"])){var i=null==r?void 0:r.map(function(t){return t._attributes["xlink:to"]}).map(function(t){return e["link:footnote"].find(function(e){return e._attributes.id===t})});return Array.isArray(i)?i.map(function(t){return n.accumulateFootnoteText(t||{})}).join("
"):this.accumulateFootnoteText(i||{})}return this.accumulateFootnoteText(e["link:footnote"]||{})}}return null},t.prototype.getCalculationWeight=function(t){return t>0?"Added to parent(".concat(t.toFixed(2),")"):t<0?"Substracted from parent(".concat(t.toFixed(2),")"):"Not Available."},t.prototype.getCalculationParent=function(t){return t?t.replace("_",":"):"Not Available."},t}();self.onmessage=function(t){var e=t.data,n=new M(e);n.fetch().then(function(t){return self.postMessage(t)}).then(function(){return n.facts()}).then(function(t){return self.postMessage(t)}).then(function(){return n.merge()}).then(function(t){return self.postMessage(t)}).catch(function(t){return setTimeout(function(){throw new Error(JSON.stringify(t))})})}}},r={};function i(t){var e=r[t];if(void 0!==e)return e.exports;var o=r[t]={exports:{}};return n[t](o,o.exports,i),o.exports}i.m=n,i.x=()=>{var t=i.O(void 0,[870,585],()=>i(2884));return i.O(t)},t=[],i.O=(e,n,r,o)=>{if(!n){var a=1/0;for(u=0;u=o)&&Object.keys(i.O).every(t=>i.O[t](n[c]))?n.splice(c--,1):(s=!1,o0&&t[u-1][2]>o;u--)t[u]=t[u-1];t[u]=[n,r,o]},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,n)=>(i.f[n](t,e),e),[])),i.u=t=>t+".bundle."+{585:"749f2ec6c2ff200c48cb",870:"2be58e7a854ed7626abd"}[t]+".min.js",i.miniCssF=t=>{},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.p="/ixviewer-plus/",(()=>{var t={662:1};i.f.i=(e,n)=>{t[e]||importScripts(i.p+i.u(e))};var e=self.webpackChunkixviewer_2=self.webpackChunkixviewer_2||[],n=e.push.bind(e);e.push=e=>{var[r,o,a]=e;for(var s in o)i.o(o,s)&&(i.m[s]=o[s]);for(a&&a(i);r.length;)t[r.pop()]=1;n(e)}})(),e=i.x,i.x=()=>Promise.all([i.e(870),i.e(585)]).then(e),i.x()})();
+//# sourceMappingURL=fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js.map
\ No newline at end of file
diff --git a/view/ixviewer-plus/dist/fetch-merge.bundle.dfb583f05d214df2e5e3.min.js.LICENSE.txt b/view/ixviewer-plus/dist/fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js.LICENSE.txt
similarity index 100%
rename from view/ixviewer-plus/dist/fetch-merge.bundle.dfb583f05d214df2e5e3.min.js.LICENSE.txt
rename to view/ixviewer-plus/dist/fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js.LICENSE.txt
diff --git a/view/ixviewer-plus/dist/fetch-merge.bundle.dfb583f05d214df2e5e3.min.js.map b/view/ixviewer-plus/dist/fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js.map
similarity index 99%
rename from view/ixviewer-plus/dist/fetch-merge.bundle.dfb583f05d214df2e5e3.min.js.map
rename to view/ixviewer-plus/dist/fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js.map
index 79f18f67..120b5344 100644
--- a/view/ixviewer-plus/dist/fetch-merge.bundle.dfb583f05d214df2e5e3.min.js.map
+++ b/view/ixviewer-plus/dist/fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js.map
@@ -1 +1 @@
-{"version":3,"file":"fetch-merge.bundle.dfb583f05d214df2e5e3.min.js","mappings":"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","sources":["webpack://ixviewer-2/webpack/runtime/chunk loaded","webpack://ixviewer-2/webpack/runtime/startup chunk dependencies","webpack://ixviewer-2/./src/ts/interface/fact.ts","webpack://ixviewer-2/./src/ts/constants/constants.ts","webpack://ixviewer-2/./src/ts/helpers/utils.ts","webpack://ixviewer-2/./src/ts/helpers/fact-id-allocator.ts","webpack://ixviewer-2/./src/ts/fetch-merge/merge-data-utils.ts","webpack://ixviewer-2/./src/ts/fetch-merge/prepare-inline-doc.ts","webpack://ixviewer-2/./src/ts/fetch-merge/fetch-merge.ts","webpack://ixviewer-2/./src/ts/workers/workers.ts","webpack://ixviewer-2/webpack/bootstrap","webpack://ixviewer-2/webpack/runtime/define property getters","webpack://ixviewer-2/webpack/runtime/ensure chunk","webpack://ixviewer-2/webpack/runtime/get javascript chunk filename","webpack://ixviewer-2/webpack/runtime/get mini-css chunk filename","webpack://ixviewer-2/webpack/runtime/hasOwnProperty shorthand","webpack://ixviewer-2/webpack/runtime/make namespace object","webpack://ixviewer-2/webpack/runtime/publicPath","webpack://ixviewer-2/webpack/runtime/importScripts chunk loading","webpack://ixviewer-2/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var next = __webpack_require__.x;\n__webpack_require__.x = () => {\n\treturn Promise.all([\n\t\t__webpack_require__.e(870),\n\t\t__webpack_require__.e(585)\n\t]).then(next);\n};","import { Xbrltype, reference } from \"./meta\";\n\nexport type Facts = { key: string, value: SingleFact } & Record;\n\nexport interface SingleFact {\n contextRef: string;\n name: string;\n ix: string;\n id: string;\n value?: string;\n isAmountsOnly: boolean;\n isTextOnly: boolean;\n isNegativeOnly: boolean;\n isHTML: boolean;\n isSelected: boolean;\n period: string;\n periodDates?: string[];\n scale: string | null;\n decimals?: Decimals | null;\n decimalsVal?: number | null;\n sign: string | null;\n footnote: null | string;\n isEnabled: boolean;\n isHighlight: boolean;\n references: Array | null;\n calculations: Array;\n labels: LabelElement[];\n xbrltype: string;\n localname: string;\n nsuri: string;\n presentation: string[];\n raw?: string;\n format?: null | string;\n isAdditional?: boolean;\n isCustom?: boolean;\n file: string | null;\n unitRef?: string;\n measure?: string;\n balance?: Balance;\n segment?: Array;\n isContinued: boolean;\n continuedIDs: Array;\n filterContent: {\n content: string,\n labels: string,\n definitions: string,\n\n }\n \"xsi:nil\"?: string;\n \"xml:lang\"?: string;\n}\n\n/** somehow, an object in fetch-merge metamorphosizes from SingleFact into this */\nexport interface SingleFact2\n{\n name: string;\n segment: [{ dimension: string, axis: string }];\n references: reference[];\n calculations: [{ label: string, value: string }] | [];\n labels: string[];\n filterContent: { labels: string; definitions: string; };\n balance: string;\n xbrltype: Xbrltype | null;\n localname: string | null;\n nsuri: string | null;\n presentation: string[] | null | undefined;\n}\n\nexport enum Balance {\n Credit = \"Credit\",\n Debit = \"Debit\",\n}\n\nexport interface Calculation {\n label: LabelEnum;\n value: string;\n}\n\nexport enum LabelEnum\n{\n Balance = \"Balance\",\n Parent = \"Parent\",\n Section = \"Section\",\n Weight = \"Weight\",\n}\n\nexport enum Decimals\n{\n Tens = \"Tens\",\n Hundreds = \"Hundreds\",\n Thousands = \"Thousands\",\n TenThousands = \"Ten Thousands\",\n HundredThousands = \"Hundred Thousands\",\n Millions = \"Millions\",\n TenMillions = \"Ten Millions\",\n HundredMillions = \"Hundred Millions\",\n Billions = \"Billions\",\n TenBillions = \"Ten Billions\",\n HundredBillions = \"Hundred Billions\",\n Trillions = \"Trillions\",\n\n Tenths = \"Tenths\",\n Hundredths = \"Hundredths\",\n Thousandths = \"Thousandths\",\n TenThousandths = \"Ten Thousandths\",\n HundredThousandths = \"Hundred Thousandths\",\n Millionths = \"Millionths\",\n}\n\nexport interface LabelElement {\n Documentation: string;\n Label: string;\n \"Terse Label\"?: string;\n \"Verbose Label\"?: string;\n \"Negated Terse Label\"?: string;\n \"Total Label\"?: string;\n \"Negated Label\"?: string;\n \"Period End Label\"?: string;\n \"Period Start Label\"?: string;\n \"Negated Period End Label\"?: string;\n \"Negated Period Start Label\"?: string;\n \"Negated Total Label\"?: string;\n}\n\n// TODO: ask knowledge bearers if we maybe we create distint orders for each taxonomy body (fasb, sec, etc...) as they each probably have their own properties.\nexport interface Reference {\n Publisher: string;\n Name: string;\n Number?: string;\n IssueDate?: string;\n Chapter?: string,\n Article?: string;\n Note?: string;\n Section?: string;\n Subsection?: string;\n Topic?: string;\n SubTopic?: string;\n Paragraph?: string;\n Subparagraph?: string;\n Clause?: string,\n Subclause?: string,\n Example?: string,\n Page?: string,\n Exhibit?: string,\n Footnote?: string,\n Sentence?: string;\n URI?: string;\n URIDate?: string,\n}\n\ninterface RefProp {\n string: string,\n}\nexport interface ReferenceAsArray {\n ReferenceMember: Array\n}\n\nexport interface SegmentClass {\n axis?: string;\n dimension: string;\n dimensionLabel: string;\n type: string;\n member: null; // value\n memberLabel?: string;\n}\n","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport { Reference } from \"../interface/fact\";\nimport { FormInformation } from \"../interface/form-information\";\nimport { InlineFileMeta, InstanceFile } from \"../interface/instance-file\";\nimport { Section } from \"../interface/meta\";\n\n//Not really used (see comment below)\ntype MetaDocument = any;\n\nexport const Constants = {\n\tversion: \"26.1\",\n\tfeatureSet: \"plus\",\n\tappStart: 0,\n\tloadPhaseComplete: 0,\n\n\tappWindow: (() => {\n\t\tif (typeof window == 'undefined') return {} as Window;\n\t\t// redirect iframe\n\t\tif (!!window.frameElement && window.frameElement.id === \"ixvFrame\") {\n\t\t\treturn window.parent;\n\t\t}\n\t\t// Note: workstation iframe has id \"dispDocFrame\", I don't think we need to handle it though since the iframe\n\t\t// in that cases seems intended to work as \"subwindow\" and links should open in the iframe (?)\n\t\treturn window;\n\t})(),\n\n\tloadedViaRedirect: (() => {\n\t\tif (typeof window == 'undefined') return false;\n\t\t// redirect iframe\n\t\tif (!!window.frameElement && window.frameElement.id === \"ixvFrame\") {\n\t\t\treturn true;\n\t\t}\n\t})(),\n\n\t// holds array of objects { perfMetric, moduleTime, totalElapsedTime }\n\tperfTableJs: [] as object[],\n\tperfTableDom: [] as object[],\n\telapsedPerfTable: [] as object[],\n\tdiscretePerfTable: [] as object[],\n\tlogPerfParam: false,\n\n\tunused: 'test',\n\taxesCount: 0,\n\tmembersCount: 0,\n\tmemberLimit: 750, // too many affects search index performance and eats a lot of mem\n\n\tgetSearchCriteria: {} as { options: { indexOf: (x: any) => number }, regex: RegExp },\n\n\tisNcsr: false,\n\tsumOfDocsSizes: 0,\n\tdocSizeFallbackLimit: 70 * 1000000,\n\n\tscrollPosition: typeof window !== 'undefined' && window.localStorage.getItem(\"scrollPosition\") || \"start\",\n\n\thoverOption: typeof window !== 'undefined' && window.localStorage.getItem(\"hoverOption\") === \"true\" || false,\n\n\tgetHTMLAttributes: {} as Record,\n\n\tgetPaginationPerPage: 10,\n\n\tfactCount: null as string | null,\n\n\tgetMetaSourceDocuments: [] as string[],\n\n\tgetMetaTags: [] as unknown[],\n\n\tgetInstances: [] as InstanceFile[],\n\n\tgetCurrentInstance: () => {\n\t\treturn Constants.getInstances.find(inst => inst.current);\n\t},\n\n\tgetInlineFiles: [] as InlineFileMeta[],\n\n\tsections: [] as Section[],\n\n\tsetSections: (sections: Array): void => {\n\t\tif (sections) {\n\t\t\tConstants.sections = sections;\n\t\t\tsessionStorage.setItem('sections', JSON.stringify(sections));\n\t\t}\n\t},\n\n\tgetSectionsFromSessionStorage: (): Section[] => {\n\t\tconst sectionsFromLocal = sessionStorage.getItem('sections');\n\t\treturn JSON.parse(sectionsFromLocal || '[]') as Section[];\n\t},\n\n\tgetStdRef: {} as Record,\n\n\tgetFormInformation: {} as FormInformation,\n\n\tgetMetaCustomPrefix: null as string | null,\n\n\t//These are never accessed outside of old unit tests\n\tgetMetaDts: null as MetaDocument | null,\n\tgetMetaDocuments: (input: string): MetaDocument | null => {\n\t\tif (input && typeof input === \"string\") {\n\t\t\treturn Constants.getMetaDts && Constants.getMetaDts[input]\n\t\t\t\t? Constants.getMetaDts[input]\n\t\t\t\t: null;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tgetScrollPosition: (): number => {\n\t\tconst currentScrollPosition = document.getElementById('dynamic-xbrl-form')!.scrollTop as number;\n\t\treturn currentScrollPosition;\n\t},\n\n\tgetNavBarsHeight: (): number => {\n\t\treturn document.querySelector('div[id=\"topNavs\"]')?.offsetHeight || 0;\n\t},\n\n\tsideBarPaginationState: {pageNumber: 0, totalPages: 0},\n\n};\n","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment \n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport DOMPurify from \"dompurify\";\nimport { Constants } from \"../constants/constants\";\nimport { toBottomOfInlineDoc } from \"../pagination/inlineDocPagination\";\n\nexport const cleanSubstring = (orig: string, from: string, to: string) => {\n return orig.substring(orig.search(from), orig.search(to) + to.length);\n}\n\nexport const convertToSelector = (input: string, sanitize = true) => {\n const normalizedSelector = input.replaceAll('/', '-')\n .replaceAll(' ', '-')\n .replaceAll('#', '-')\n .replaceAll('.', '-')\n if (sanitize)\n return DOMPurify.sanitize(normalizedSelector);\n else {\n return normalizedSelector;\n }\n}\n\n// WIP\nexport const xmlToDom = (xmlNode: Node): Node | null => {\n\n if (!PRODUCTION) {\n console.log('node.nodeType', xmlNode.nodeType)\n console.log('node', xmlNode)\n }\n if (xmlNode.nodeType === 1) { // Element node\n const element = document.createElement(xmlNode.nodeName)\n\n // add attributes\n if (xmlNode instanceof Element) {\n for (const attr of xmlNode.attributes) {\n element.setAttributeNS(attr.namespaceURI, attr.nodeName, attr.nodeValue || \"\");\n }\n }\n\n // recursively process child nodes\n for (const child of xmlNode.childNodes) {\n const childNode = xmlToDom(child);\n if (childNode) {\n element.appendChild(childNode);\n }\n }\n\n return element;\n } else if (xmlNode.nodeType === 3) { // Text node\n return document.createTextNode(xmlNode.nodeValue || \"\");\n }\n return null;\n}\n\n// WIP\nexport const findAllTagTypeInMarkupString = (markup: string, openTag: string, closeTag: string) => {\n const allTags: string[] = [];\n\n const startTagRegex = RegExp(openTag, 'gi')\n let startTagResults = startTagRegex.exec(markup);\n const footnoteStartIndices: number[] = [];\n while (startTagResults) {\n footnoteStartIndices.push(startTagResults.index);\n startTagResults = startTagRegex.exec(markup);\n }\n\n const endTagRegex = RegExp(closeTag, 'gi');\n let endTagResults = endTagRegex.exec(markup);\n const footnoteEndIndices: number[] = [];\n while (endTagResults) {\n footnoteEndIndices.push(endTagResults.index + closeTag.length);\n endTagResults = endTagRegex.exec(markup);\n }\n\n footnoteStartIndices.forEach((start, indexInArrayOfStarts) => {\n const pluckedFootnote = markup.substring(start, footnoteEndIndices[indexInArrayOfStarts]);\n allTags.push(pluckedFootnote);\n });\n\n return allTags;\n}\n\nexport function ixScrollTo(sectionElem: HTMLElement): void {\n if (elemNearBottom(sectionElem)) {\n toBottomOfInlineDoc();\n } else {\n sectionElem?.scrollIntoView({ behavior: \"smooth\", block: \"start\", inline: \"nearest\" });\n }\n}\n\n/**\n * Determine if the provided element is within 1vh of the bottom of the screen.\n * @param target The Element to which we should scroll.\n * @param parentElem Not the scrollable parent. Probably the first descendent thereof. Needs to be full-height, non-scrollable.\n * @param scrollableParent An ancestor of `target` that scrolls.\n * @returns boolean\n */\nfunction elemNearBottom(target: HTMLElement, parentElem?: HTMLElement, scrollableParent?: HTMLElement): boolean {\n if (!parentElem) {\n const currentInstance = Constants.getInstances.find(element => element.current);\n const currentXHTML = currentInstance?.docs.find(element => element.current);\n if (currentXHTML?.slug) {\n parentElem = document.querySelector(`section[filing-url=\"${currentXHTML?.slug}\"]`) || undefined;\n }\n }\n if (!scrollableParent) {\n const currentInstance = Constants.getInstances.find(element => element.current);\n const currentXHTML = currentInstance?.docs.find(element => element.current);\n if (currentXHTML?.slug) {\n scrollableParent = document.getElementById('dynamic-xbrl-form') || undefined;\n }\n }\n\n const viewHeight = scrollableParent?.offsetHeight || 0;\n const parentHt = parentElem?.offsetHeight || 0;\n\n let distTopOfTargetToTopOfScrollableParent = 0;\n let currentElement = target;\n\n while (currentElement && currentElement !== parentElem) {\n distTopOfTargetToTopOfScrollableParent += currentElement.offsetTop || 0;\n currentElement = currentElement.offsetParent as HTMLElement;\n }\n\n if (scrollableParent == document.getElementById('dynamic-xbrl-form')) {\n distTopOfTargetToTopOfScrollableParent -= Constants.getNavBarsHeight();\n }\n\n return distTopOfTargetToTopOfScrollableParent > parentHt - viewHeight;\n}\n\nexport function isTruthy(t: T): t is NonNullable {\n return Boolean(t);\n}\n\nexport function actionKeyHandler(event: KeyboardEvent): boolean {\n const defaultActionKeys = ['Enter', 'Space', ' ']\n if (event instanceof KeyboardEvent && !defaultActionKeys.includes(event.key))\n return false;\n\n stopPropPrevDefault(event);\n return true;\n}\n\nexport function stopPropPrevDefault(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n}\n\n// Generic func that takes array of elements that up/down arrows will nav through\n// WIP\nexport function buildArrowKeyListenerForElems(elemSet: Node[]) : void {\n console.log('elemSet', elemSet)\n elemSet.forEach((elem, index) => {\n elem.addEventListener('keyup', (event) => {\n const keyEvent = event;\n if (keyEvent.key == 'ArrowUp') {\n if (index === 0) {\n (elemSet[elemSet.length - 1] as HTMLElement)?.focus();\n } else {\n (elemSet[index - 1] as HTMLElement).focus();\n }\n }\n if (keyEvent.key == 'ArrowDown') {\n if (index === elemSet.length - 1) {\n (elemSet[0] as HTMLElement).focus();\n } else {\n (elemSet[index + 1] as HTMLElement).focus();\n }\n }\n });\n })\n}\n","import { SingleFact } from \"../interface/fact\";\n\n/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\n\n//For the facts in the HTML that have no IDs...\nexport class FactIdAllocator\n{\n private facts: Map;\n private noIdFactMap: Map> | null = null;\n\n constructor(facts: Map)\n {\n this.facts = facts;\n }\n\n public getId(contextRef?: string | null, name?: string | null): string | null\n {\n if (this.noIdFactMap == null)\n {\n let m = new Map>();\n this.noIdFactMap = [...this.facts.values()]\n .map(({ id, name, contextRef}) => [JSON.stringify({ name, contextRef }), id])\n .reduce((acc, [nameCtxref, id]) =>\n {\n let idList = acc.get(nameCtxref) || [];\n idList.push(id);\n acc.set(nameCtxref, idList);\n\n return acc;\n }, m);\n }\n\n const key = JSON.stringify({ name, contextRef });\n return this.noIdFactMap.get(key)?.shift() || null;\n }\n}\n","import { MetalinksReport, Section, SectionFact } from '../interface/meta';\nimport { convertToSelector } from \"../helpers/utils\";\nimport { FilingSummary, FilingSummReport } from '../interface/filing-summary';\n\n/**\n * Description\n * @param {any} filingSummary:any\n * @param {any} metaLinksReports:any\n * @returns {any} => Flatter array of metalinks reports (section items).\n */\nexport const buildSectionsArrayFlatter = (filingSummary:FilingSummary, metaLinksReports:MetalinksReport[], metaVersion:string) => {\n // 'sections' and 'reports' are synonymous here\n const filingSummaryReports: FilingSummReport[] = filingSummary.MyReports.Report;\n let filingSummaryInputFiles = filingSummary.InputFiles.File;\n if (!Array.isArray(filingSummaryInputFiles)) filingSummaryInputFiles = [filingSummaryInputFiles];\n \n const reportsContainStatements: boolean = filingSummaryReports\n .filter(r => r.MenuCategory)\n .map(r => r.MenuCategory._text?.toLowerCase())\n .some((menuCategory: string) => {\n return menuCategory == 'statement' || menuCategory == 'statements';\n })\n\n const addInstanceProps = (section: Section) => {\n // Get Doc Name for instance header for sections\n const isHtmIsh = (fileName: string) => {\n return fileName.includes('.htm') || fileName.includes('.html') || fileName.includes('.xhtml');\n }\n const reportFileInfo = filingSummaryInputFiles.filter(file => {\n if (file._attributes && file._attributes?.original && isHtmIsh(file._text)) {\n return section.instanceHtm.includes(file._attributes.original)\n }\n });\n if (reportFileInfo.length) {\n section.instanceDocName = reportFileInfo[0]?._attributes?.doctype;\n } else {\n console.error(`Cannot find instance file in FilingsSummary inputfiles`);\n }\n return section;\n }\n\n const addFactProps = (section: Section) => {\n section.fact = getFactAttrsFromAnchorProps(section) || undefined;\n const mrFact = section.fact;\n if (mrFact?.file && mrFact?.ancestors && mrFact?.name) {\n // if an ancestor is a fact name eg \"sbs:SbsefOrglStrDescTextBlock\", need to dress as name attribute\n const handleSpecialAncestors = mrFact.ancestors.map((a: string) => {\n if (a.includes(':')) {\n if (a.includes('ix:continuation')) return ''; // skip continuation ancestors\n return `[name=\"${a}\"]`\n } else {\n return a;\n }\n });\n const ancestorsRelevant = handleSpecialAncestors.reverse().filter((a:string) => a !== \"html\" && a !== \"body\").join(' ');\n section.inlineFactSelector = `section[filing-url=\"${mrFact.file}\"] ${ancestorsRelevant} [name=\"${mrFact.name}\"][contextref=\"${mrFact.contextRef}\"]`;\n }\n return section;\n }\n\n const getPositionFromFilingSumm = (metaReport:MetalinksReport) => {\n let pos;\n filingSummaryReports.forEach(fsRep => {\n if (fsRep.ShortName._text === metaReport.shortName) {\n pos = Number(fsRep.Position._text);\n }\n })\n return pos;\n }\n const getMenuCategoryFromFilingSumm = (metaReport:MetalinksReport) => {\n let menuCategory;\n filingSummaryReports.find(fsRep => {\n if (fsRep.ShortName._text === metaReport.shortName) {\n menuCategory = fsRep.MenuCategory._text;\n }\n })\n return menuCategory;\n }\n\n const sectionsArray = metaLinksReports.map((metaReport:MetalinksReport) => {\n let section: Section = metaReport as unknown as Section;\n if (Number(metaVersion) <= 2.1 || !section.menuCat) {\n section.menuCat = getMenuCategoryFromFilingSumm(metaReport) || section.subGroupType || section.groupType;\n }\n if (metaReport.menuCat && metaReport.shortName) {\n section = addInstanceProps(section);\n section = addFactProps(section);\n section.menuCatMapped = mapCategoryName(section.menuCat, reportsContainStatements) || \"\";\n section.position = getPositionFromFilingSumm(metaReport); // as a fallback if there's no \"order\" prop (rare)\n section.domId = `sectionDoc-${convertToSelector(section.instanceDocName, false)}`\n\n return section;\n } else {\n if (!PRODUCTION) {\n console.warn('Cannot determine Section menuCat');\n }\n }\n }).filter((section): section is Section => !!(section?.fact && section.menuCatMapped));\n return sectionsArray || [];\n}\n\nexport const getFactAttrsFromAnchorProps = (section: Section) => {\n let fact: SectionFact | null = {};\n fact.instance = section.instance; // number\n // fact.menuCat = metaReport.menuCat;\n if (section.uniqueAnchor) {\n fact.name = section.uniqueAnchor.name;\n fact.contextRef = section.uniqueAnchor.contextRef;\n fact.file = section.uniqueAnchor.baseRef;\n fact.ancestors = section.uniqueAnchor.ancestors;\n } else if (section.firstAnchor) {\n fact.name = section.firstAnchor.name;\n fact.contextRef = section.firstAnchor.contextRef;\n fact.file = section.firstAnchor.baseRef;\n fact.ancestors = section.firstAnchor.ancestors;\n } else {\n if (!PRODUCTION) {\n console.warn(`no linkable fact for section ${section.shortName} (no anchor data)`);\n }\n /* DOC: \"As I recall, the reason for the anchors computed during rendering was that \n some internal rendering process detail gets lost that neither filing summary.xml \n nor metalinks.json could preserve (I think it had to do with how chrome will insert \n elements like if they were missing in the input…?), but since I can’t \n remember what that might be (it’s certainly not obvious) go ahead and try.\" -WH email 4/1/2024 \n */\n fact = null;\n }\n return fact;\n}\n\n/**\n * Description\n * @param {string} input: string\n * @returns {string} => (string) mapped menu category name || null\n * @description use only when there are no 'statement' menu categories\n */\nconst mapCategoryName = (input: string, isStandard: boolean): string | null => {\n const lowerCaseKey = input.toLowerCase();\n\n /*\n 'When the FilingSummary does not have any ‘statement’ category reports for an instance, then the following mapping should be used. \n “Reports” is generic and covers all the other things that don’t need their reports grouped into levels of detail. \n “Statements” used to be the general case (2008-2020) but now they are becoming the special case.' - WH Mar 29, 2024\n */\n const noStatementCatNameMap = {\n \"cover\": \"Reports\",\n \"document\": \"Reports\",\n // \"statement\": n/a\n // \"Statements\": n/a\n \"disclosure\": \"Reports\",\n \"notes\": \"Reports\",\n \"policies\": \"Reports\", /* very unlikely to happen */\n \"tables\": \"Reports\", /* very unlikely to happen */\n \"details\": \"Details\",/* example here {baseUrl}/oef24/oef05/out/FilingSummary.htm# */\n \"prospectus\": \"Prospectus\",\n \"rr_summaries\": \"RR Summaries\",/* example here {baseUrl}/oef24/oef13/out/FilingSummary.htm we no longer make fancy menus for these */\n \"fee_exhibit\": \"RR Summaries\",\n \"risk/return\": \"RR Summaries\"\n };\n const standardCatNameMap = {\n \"cover\": \"Cover\",\n \"document\": \"Document & Entity Information\",\n \"statement\": \"Financial Statements\",\n \"statements\": \"Financial Statements\",\n \"disclosure\": \"Notes to the Financial Statements\",\n \"notes\": \"Notes to Financial Statements\", // is \"the\" intentionally omitted? Probably\n \"policies\": \"Accounting Policies\",\n \"tables\": \"Notes Tables\",\n \"details\": \"Notes Details\",\n \"prospectus\": \"Prospectus\",\n \"rr_summaries\": \"RR Summaries\",\n \"fee_exhibit\": \"RR Summaries\",\n \"risk/return\": \"RR Summaries\"\n };\n\n if (isStandard) {\n if (lowerCaseKey in standardCatNameMap) {\n return standardCatNameMap[lowerCaseKey as keyof typeof standardCatNameMap];\n } else {\n if (!PRODUCTION) {\n console.info(`standardCatNameMap doesn't contain key: %c${lowerCaseKey}`, \"color: deepskyblue\");\n }\n return null;\n }\n } else {\n if (lowerCaseKey in noStatementCatNameMap) {\n return noStatementCatNameMap[lowerCaseKey as keyof typeof noStatementCatNameMap];\n } else {\n if (!PRODUCTION) {\n console.info(`noStatementCatNameMap doesn't contain key: %c${lowerCaseKey}`, \"color: deepskyblue\");\n }\n return null;\n }\n }\n};\n\nexport function fetchText(url: string, init?: RequestInit): Promise {\n return fetch(url, init).then((response) => {\n if (!response.ok) {\n throw new Error(response.status.toString());\n }\n\n // Check the response headers to ensure the document is intended to be loaded inline.\n const contentType = response.headers.get(\"content-type\");\n if (!contentType) {\n throw new Error(`Missing Content-Type. URL: ${url}`);\n }\n const permittedContentTypeExpression = /^(application\\/xhtml\\+xml|application\\/xml|text\\/html|text\\/xml)(\\s*;.*)?$/i;\n if (!permittedContentTypeExpression.test(contentType)) {\n throw new Error(`Invalid Content-Type. URL: ${url}, Content-Type: ${contentType}`);\n }\n const contentDisposition = response.headers.get(\"content-disposition\");\n const permittedContentDispositionExpression = /^inline(\\s*;.*)?$/i;\n if (contentDisposition && !permittedContentDispositionExpression.test(contentDisposition)) {\n throw new Error(`Invalid Content-Disposition. URL: ${url}, Content-Disposition: ${contentDisposition}`);\n }\n\n return response.text();\n });\n}\n\nexport function fetchJson(url: string, init?: RequestInit): Promise {\n return fetch(url, init).then((response) => {\n if (response.status >= 200 && response.status <= 299)\n return response.json();\n else\n throw new Error(response.status.toString());\n });\n}\n\nexport function setScaleInfo(scale: string | number | undefined): string | null {\n const scaleOptions: Record = {\n 0: \"Zero\",\n 1: \"Tens\",\n 2: \"Hundreds\",\n 3: \"Thousands\",\n 4: \"Ten thousands\",\n 5: \"Hundred thousands\",\n 6: \"Millions\",\n 7: \"Ten Millions\",\n 8: \"Hundred Millions\",\n 9: \"Billions\",\n 10: \"Ten Billions\",\n 11: \"Hundred Billions\",\n 12: \"Trillions\",\n \"-1\": \"Tenths\",\n \"-2\": \"Hundredths\",\n \"-3\": \"Thousandths\",\n \"-4\": \"Ten Thousandths\",\n \"-5\": \"Hundred Thousandths\",\n \"-6\": \"Millionths\"\n };\n \n return scaleOptions[scale || \"\"] || null;\n}\n","import * as c from \"cheerio\";\nimport { Cheerio, load } from \"cheerio\";\nimport { ILogObj, Logger } from \"tslog\";\nimport { FactIdAllocator } from \"../helpers/fact-id-allocator\";\nimport { XhtmlFileMeta } from \"../interface/instance-file\";\nimport { SingleFact } from \"../interface/fact\";\nimport { setScaleInfo } from \"./merge-data-utils\";\n\n\n/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\n\nexport type XhtmlPrepData = {\n docs: XhtmlFileMeta[];\n facts: Map;\n customPrefix: string\n}\n\nexport type XhtmlPrepResponse = {\n facts: Map;\n xhtml: string;\n}\n\n//TODO: rename this class\nexport class XhtmlPrepper {\n private docs: XhtmlFileMeta[];\n private facts: Map;\n private readonly customPrefix: string;\n private readonly idAllocator: FactIdAllocator;\n\n constructor({ docs, facts, customPrefix }: XhtmlPrepData) {\n this.docs = docs;\n this.facts = facts;\n this.customPrefix = customPrefix;\n this.idAllocator = new FactIdAllocator(this.facts);\n }\n\n public updateFactMapWithDocsData() {\n const promises = [...this.docs]\n .sort((a, b) => +b.current - +a.current)\n .map((doc) =>\n new Promise((resolve) => {\n this.applyElementDataToFact(doc);\n resolve();\n })\n );\n\n return Promise.all(promises);\n }\n\n \n\n private applyElementDataToFact(doc: XhtmlFileMeta) {\n let $ = load(doc.xhtml, {});\n const factElements = Array.from($(`[contextRef]`));\n\n for (let factElem of factElements) {\n const id = $(factElem).attr(\"id\") || this.idAllocator.getId($(factElem).attr('contextref'), $(factElem).attr('name'));\n if (id) {\n this.updateMap(id, $(factElem), doc.slug);\n }\n else {\n const log: Logger = new Logger();\n log.error(`Fact [name] && [contextRef] could not be located in the Map Object.`);\n }\n }\n }\n\n private updateMap(id: string, element: Cheerio, docSlug: string): string {\n const fact = this.facts.get(id);\n if (!fact) {\n console.error(\"Cannot update map -- missing key:\", id);\n return \"\";\n }\n\n this.facts.set(id,\n {\n ...fact,\n raw: element.text(),\n format: element.attr('format') ? element.attr('format') : null,\n isAdditional: element.parents().prop('tagName').toLowerCase().endsWith(':hidden'),\n isCustom: element.attr('name')?.split(':')[0].toLowerCase() === this.customPrefix,\n isAmountsOnly: element.prop('tagName')?.split(':')[1].toLowerCase() === 'nonfraction',\n isTextOnly: element.prop('tagName')?.split(':')[1].toLowerCase() === 'nonnumeric',\n isNegativeOnly: element.attr('sign') === '-',\n sign: (element.attr('sign') === '-') ? \"Negative\" : null,\n file: docSlug,\n scale: setScaleInfo(element.attr('scale')) || \"\",\n continuedIDs: [],\n });\n\n return fact.id;\n }\n}\n","import * as cheerio from 'cheerio';\nimport { Logger, ILogObj } from 'tslog';\nimport * as convert from 'xml-js';\nimport { cleanSubstring, isTruthy } from '../helpers/utils';\nimport { Decimals, Reference, SegmentClass, SingleFact } from '../interface/fact';\nimport { All, ErrorResponse, FMResponse, FetchMergeArgs } from '../interface/fetch-merge';\nimport { FilingSummary } from '../interface/filing-summary';\nimport { FormInformation } from '../interface/form-information';\nimport { UnitsAdditional } from '../interface/instance';\nimport { Context, DeiAmendmentFlagAttributes, Instance, LinkFootnote, LinkFootnoteArc, LinkLOC, Units } from '../interface/instance';\nimport { InstanceFile, MetaLinks, MetaLinksResponse, XhtmlFileMeta } from '../interface/instance-file';\nimport { Calculation, Meta, Section } from '../interface/meta';\nimport { UrlParams } from '../interface/url-params';\nimport { XhtmlPrepData, XhtmlPrepper } from './prepare-inline-doc';\nimport { buildSectionsArrayFlatter, fetchJson, fetchText, setScaleInfo } from './merge-data-utils';\n\n/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\n\n/* eslint-disable @typescript-eslint/ban-types */\n\ntype DocMeta = {\n url: string;\n size: number | null;\n}\n\nexport class FetchAndMerge {\n private absolute: string;\n private params: UrlParams;\n private customPrefix: string | null;\n private activeInstance: InstanceFile = {} as any;\n private std_ref;\n private sections: Array = [];\n private metaVersion: string | null = null;\n private instances: InstanceFile[];\n private sumOfDocsSizes: number;\n private docSizeFallbackLimit: number;\n\n constructor(input: FetchMergeArgs) {\n this.absolute = input.absolute;\n this.params = input.params;\n this.customPrefix = input.customPrefix || null;\n this.instances = input.instance ?? [];\n this.std_ref = input.std_ref;\n this.sumOfDocsSizes = 0;\n this.docSizeFallbackLimit = input.docSizeFallbackLimit\n }\n\n activeDocs: DocMeta[] = [];\n\n async fetchLength(url: string): Promise {\n const res = await fetch(url, { method: \"HEAD\" });\n const lengthHeader = res.headers.get(\"content-length\");\n return lengthHeader ? parseInt(lengthHeader, 10) : null;\n }\n\n public async fetch(): Promise {\n const docsAndInstance = () => {\n return Promise.all([this.fetchDocs(), this.fetchInstanceXml()]).then(async ([docs, instXml]) => {\n const errors = [...docs, instXml].filter((element): element is ErrorResponse =>\n element ? Object.prototype.hasOwnProperty.call(element, 'error') : false);\n\n if (errors.length) {\n const errorMessages = errors.map(current => current.messages);\n throw { all: { error: true, messages: errorMessages.flat() } };\n }\n\n //At this point, neither of the responses had errors, so we can safely cast them\n docs = docs as Array<{ xhtml: string }>;\n instXml = instXml as Instance;\n\n docs.filter((doc): doc is { xhtml: string } => \"xhtml\" in doc)\n .forEach((doc, index) => {\n this.activeInstance.docs[index].loaded = true;\n this.activeInstance.docs[index].xhtml = doc.xhtml;\n });\n\n this.activeInstance.xml = instXml;\n });\n };\n\n const getJustDocs = () => {\n return this.fetchDocs().then(async (docs) => {\n const errors = docs.filter((element): element is ErrorResponse =>\n element ? Object.prototype.hasOwnProperty.call(element, 'error') : false);\n\n if (errors.length) {\n const errorMessages = errors.map(current => current.messages);\n throw { all: { error: true, messages: errorMessages.flat() } };\n }\n\n //At this point, neither of the responses had errors, so we can safely cast them\n docs = docs as Array<{ xhtml: string }>;\n\n docs.filter((doc): doc is { xhtml: string } => \"xhtml\" in doc)\n .forEach((doc, index) => {\n this.activeInstance.docs[index].loaded = true;\n this.activeInstance.docs[index].xhtml = doc.xhtml;\n });\n });\n };\n\n const metaAndSummary = () => {\n return Promise.all([this.fetchMeta(), this.fetchSummary()]).then(([ml, fs]) => {\n let error = false;\n const messages = [];\n for (const response of [ml, fs]) {\n if (\"error\" in response && response.error) {\n messages.push(response.messages);\n error = true;\n }\n }\n if (error) {\n throw { all: { error, messages: messages.flat() } };\n }\n\n const metalinks = ml as MetaLinks & { instances: InstanceFile[] };\n const filingSummary = fs as FilingSummary;\n\n this.metaVersion = metalinks.version || null;\n this.std_ref = metalinks.std_ref || {} as any;\n\n this.activeInstance = metalinks.instance;\n\n return [metalinks, filingSummary] as const;\n });\n };\n\n /** Sets each instance's `xmlUrl` to the correct value */\n const getInstanceXmlUrlFromFilingSummary = (filingSummary: FilingSummary, instances: InstanceFile[]) => {\n const filingSummaryReports = filingSummary.MyReports.Report;\n \n //track which HTML slugs we've seen already\n const instanceHtmSlugs = new Set(); // stored in filing summary as foo.htm\n filingSummaryReports.forEach((r) => {\n const reportInstanceHtmSlug = r._attributes?.instance;\n if (reportInstanceHtmSlug && !instanceHtmSlugs.has(reportInstanceHtmSlug)) {\n instanceHtmSlugs.add(reportInstanceHtmSlug);\n\n // add xmlUrls to instances\n const [metaInstanceModel] = instances.filter((inst) => inst.instanceHtm.includes(reportInstanceHtmSlug));\n metaInstanceModel.xmlUrl = this.params.metalinks.replace('MetaLinks.json', reportInstanceHtmSlug.replace(/\\.htm$/i, '_htm.xml'));\n }\n });\n\n //At this point, if the active instance has an invalid `xmlUrl`, we cannot continue\n if (!this.activeInstance?.xmlUrl) {\n throw new Error('Could not determine instance URL of active instance.');\n }\n }\n\n try {\n let metalinks: (MetaLinks & { instances: InstanceFile[]}) | null = null;\n this.activeInstance = this.instances.filter((element) => element.current)[0];\n const initialLoad = this.activeInstance == null;\n let isNcsr = false;\n\n if (initialLoad) {\n const [meta, summ] = await metaAndSummary();\n\n getInstanceXmlUrlFromFilingSummary(summ, meta.instances);\n \n // iterate over FilingSummary.xml Reports to build sections, adding data from metalinks\n this.sections = buildSectionsArrayFlatter(summ, Object.values(meta.sections), this.metaVersion || \"\");\n this.setSectionGroupType(this.sections);\n\n metalinks = meta;\n this.instances = metalinks.instances;\n\n if (!Array.isArray(summ.InputFiles?.File)) summ.InputFiles.File = [summ.InputFiles?.File];\n \n isNcsr = summ.InputFiles?.File?.reduce((acc, { _attributes }) => {\n return acc || _attributes?.isNcsr == \"true\";\n }, isNcsr);\n }\n \n this.activeDocs = await Promise.all(\n this.activeInstance.docs.map(async (doc) => ({\n url: doc.url,\n size: await this.fetchLength(doc.url)\n }))\n );\n\n this.sumOfDocsSizes = this.activeDocs.reduce((acc, cur) => acc + (cur.size || 0), 0)\n if (this.sumOfDocsSizes > this.docSizeFallbackLimit) {\n await getJustDocs();\n // this is returned to the webworker\n return {\n xhtml: this.activeInstance.docs.find((x) => x.current)?.xhtml || \"\", \n isNcsr,\n sumOfDocsSizes: this.sumOfDocsSizes,\n docs: this.activeInstance.docs\n };\n } else {\n await docsAndInstance();\n // this is returned to the webworker\n return {\n xhtml: this.activeInstance.docs.find((x) => x.current)?.xhtml || \"\", \n isNcsr,\n sumOfDocsSizes: this.sumOfDocsSizes\n };\n }\n\n }\n catch(e) { this.errorHandling(e) }\n }\n\n public async facts(): Promise {\n if (this.sumOfDocsSizes > this.docSizeFallbackLimit) {\n return new Promise((reject) => {\n reject({error: 'Filing too large'});\n });\n }\n try {\n return { facts: this.buildFactMap() };\n }\n catch (e) { this.errorHandling(e) }\n }\n\n public async merge(): Promise {\n try {\n if (this.sumOfDocsSizes > this.docSizeFallbackLimit) {\n return new Promise((reject) => {\n reject({error: 'Filing too large'});\n });\n }\n await this.mergeAllResponses();\n\n const all = {\n instance: this.instances,\n sections: this.sections,\n std_ref: this.std_ref,\n };\n\n return { all };\n }\n catch (e) { this.errorHandling(e) }\n }\n\n private errorHandling(e: unknown): never { \n console.error(e);\n\n if (!!e && typeof e == \"object\" && \"all\" in e)\n throw e as All;\n else if (e instanceof Error)\n throw { all: { error: true, messages: [e.message] } };\n else\n throw { all: { error: true, messages: [JSON.stringify(e)] } };\n }\n\n private decodeWorkstationXmlInHtml(isWorkstation: boolean, html: string, closingXml: string) {\n if (!isWorkstation) return html; // not running on SEC EDGAR workstation which encodes xml in HTML\n\n if (!html.substring(0,100).toLowerCase().includes(\"\")) {\n if (html.includes(\"EDGAR SEC Workstation Login\")) {\n console.error(\"Workstation requires logging in\");\n window.alert(\"Workstation requires logging in\");\n return \"\";\n }\n return html; // it's xml, not html\n }\n\n // snip extraneous html from beginning and end of response which is present in versions of files on workstation\n // only 5 encodings are used in xml\n html = html.replaceAll('<', '<');\n html = html.replaceAll('>', '>');\n html = html.replaceAll('"', '\"');\n html = html.replaceAll(''', '\\'');\n html = html.replaceAll('&', '&');\n return html.substring(html.indexOf(\" current .htm file (xhtml file) || \"Doc\"\n */\n private fetchDocs(): Promise> {\n const promises = this.activeInstance?.docs?.map((doc: { url: string }) => {\n return new Promise<{ xhtml: string } | ErrorResponse>((resolve) => {\n\n const isWorkstation = doc.url.includes(\"DisplayDocument.do?\");\n\n let ixvUrl = doc.url;\n if (isWorkstation) {\n if (Object.prototype.hasOwnProperty.call(this.params, 'redline') && this.params.redline) {\n ixvUrl = ixvUrl.replace('.htm', '_ix2.htm');\n } else {\n ixvUrl = ixvUrl.replace('.htm', '_ix1.htm');\n }\n }\n\n const params: RequestInit = {\n headers: { \"Content-Type\": \"text/html\" },\n mode: 'no-cors',\n credentials: 'include',\n };\n\n fetchText(ixvUrl, params)\n .then((text) => {\n // on SEC EDGAR workstation xhtml is encoded like this: ... <?xml ...\n const xhtmlData = this.decodeWorkstationXmlInHtml(isWorkstation, text, \"\");\n resolve({ xhtml: xhtmlData });\n })\n .catch((error) => {\n resolve({ error: true, messages: [`${error}; could not find \"${this.params.doc}\"`] });\n });\n });\n });\n\n if (!promises)\n return Promise.resolve([{ error: true, messages: [\"Issue fetching XHTMLs\"] }]);\n else\n return Promise.all(promises);\n }\n\n private fetchMeta(): Promise {\n //TODO: use async/await to simplify this logic\n return new Promise<(MetaLinks & { instances: InstanceFile[] }) | ErrorResponse>((resolve) => {\n let jsonUrl = this.params.metalinks;\n //TODO: use `HelpersUrl.isWorkstation` instead\n const isWorkstation = jsonUrl.includes(\"DisplayDocument.do?\");\n if (isWorkstation) {\n if (Object.prototype.hasOwnProperty.call(this.params, 'redline') && this.params.redline) {\n jsonUrl = jsonUrl.replace('MetaLinks.json', 'PrivateMetaLinks.json');\n }\n }\n\n return fetchJson(jsonUrl, { credentials: 'include', mode: 'same-origin' })\n .then((mlData: MetaLinksResponse) => {\n let XHTMLSlug = this.params.doc.substring(this.params.doc.lastIndexOf('/') + 1);\n if (XHTMLSlug.startsWith(\"DisplayDocument.do\") || XHTMLSlug.startsWith(\"view.html\")) {\n XHTMLSlug = this.params.doc.substring(this.params.doc.lastIndexOf('filename=') + 9);\n }\n\n const instanceFileNames = Object.keys(mlData.instance).join().split(/[ ,]+/);\n let sections = {};\n if (instanceFileNames.includes(XHTMLSlug)) {\n const instanceObjects: InstanceFile[] = Object.entries(mlData.instance).map(([currentInstance, instData], instanceIndex) => {\n // Sections\n //TODO: combine these using `Object.entries`\n Object.keys(instData.report).forEach((report) => {\n instData.report[report].instanceIndex = instanceIndex; // why?\n });\n Object.values(instData.report).forEach(report => {\n report.instanceHtm = currentInstance;\n });\n\n //NOTE: `sections` get reassigned at every step of this loop, is unused in the rest of the logic\n // per loop step, and gets returned (the last value to which it's assigned) once the loop ends\n sections = Object.assign(sections, instData.report);\n\n /* \n if instance key has space, e.g. \n \"doc1.htm doc2.htm\": {...}, \n it is known as multi doc.\n */\n const xhtmls: XhtmlFileMeta[] = currentInstance.split(' ').map((element) => {\n return {\n slug: element,\n url: this.params.doc.replace(this.params['doc-file'], element),\n xhtml: null as any,\n current: currentInstance.split(' ').includes(XHTMLSlug) && element === this.params['doc-file'],\n loaded: false,\n };\n });\n\n const instFile: InstanceFile = {\n current: currentInstance.split(' ').includes(XHTMLSlug),\n instance: instanceIndex, // Why?\n map: new Map(),\n metaInstance: Object.assign(instData),\n instanceHtm: currentInstance,\n xmlUrl: null as any,\n docs: xhtmls,\n formInformation: {} as FormInformation,\n xmlSlugs: [],\n };\n\n return instFile;\n });\n\n const [instance] = instanceObjects.filter(({ current }) => current);\n const meta: MetaLinks = { ...mlData, instance, sections, version: mlData.version, meta: {} as Meta, inlineFiles: [] };\n resolve(Object.assign(meta, { instances: instanceObjects }));\n } else {\n // this may occur when transferring a filing from one domain to another. Not sure how to fix...\n if (!PRODUCTION) {\n console.log('instanceFileNames does not include XHTMLSlug. fetch-merge > fetchMeta())')\n }\n throw new Error('Incorrect MetaLinks.json Instance');\n }\n })\n .catch((error) => resolve({ error: true, messages: [`${error}; could not find \"${this.params.metalinks}\"`] }));\n });\n }\n\n private fetchSummary(): Promise {\n let filingSummXmlUrl = this.params.summary;\n\n //TODO: use the new `isWorkstation` func in HelpersUrl instead\n const isWorkstation = filingSummXmlUrl.includes(\"DisplayDocument.do?\");\n if (isWorkstation && this.params.redline) {\n filingSummXmlUrl = filingSummXmlUrl.replace('FilingSummary.xml', 'PrivateFilingSummary.xml');\n }\n\n return fetchText(filingSummXmlUrl, { credentials: 'include', mode: 'same-origin' })\n .then((data) => {\n const xmlData = this.decodeWorkstationXmlInHtml(isWorkstation, data, \"\");\n const convertedXml = convert.xml2json(xmlData, { compact: true });\n return JSON.parse(convertedXml).FilingSummary as FilingSummary;\n })\n .catch((error) => {\n return ({ error: true, messages: [`${error}; could not find \"${this.params.summary}\"`] })\n });\n }\n\n private fetchInstanceXml(): Promise {\n let xmlUrl = this.activeInstance?.xmlUrl;\n if (!xmlUrl) return Promise.reject({ error: true, messages: [\"Issue fetching XML URLs\"] });\n \n const isWorkstation = xmlUrl.includes(\"DisplayDocument.do?\");\n if (isWorkstation) {\n // If methods from HelpersUrl are used here some very strange bugs occur, such as window and localStorage undefined.\n if (Object.prototype.hasOwnProperty.call(this.params, 'redline') && this.params.redline) {\n // private\n xmlUrl = xmlUrl.replace('_htm.xml', '_ht2.xml')\n } else {\n // public\n xmlUrl = xmlUrl.replace('_htm.xml', '_ht1.xml')\n }\n }\n\n //TODO: we used to pass `{ credentials: 'include' }` to `.then()` (which is wrong);\n // should we be passing it to `fetchText`??\n return fetchText(xmlUrl)\n .then((text) => {\n const fetchedXMlString = this.decodeWorkstationXmlInHtml(isWorkstation, text, \"\");\n\n /*\n Parsing with arg {compact: true} results in json being in different order and no longer flat\n */\n const instanceXmlAsJsonCompact: Instance = JSON.parse(convert.xml2json(fetchedXMlString, { compact: true }));\n\n if (instanceXmlAsJsonCompact.xbrl[\"link:footnoteLink\"] && DEBUGJS) {\n const footnotesNode = instanceXmlAsJsonCompact.xbrl[\"link:footnoteLink\"];\n // grab xml data as non compact object so element order is preserved.\n instanceXmlAsJsonCompact.xbrl[\"link:footnoteLink\"].expanded = JSON.parse(convert.xml2json(fetchedXMlString, { compact: false }));\n instanceXmlAsJsonCompact.xbrl[\"link:footnoteLink\"].orderedFootnoteDivs = footnotesNode.expanded.elements[0].elements;\n instanceXmlAsJsonCompact.xbrl[\"link:footnoteLink\"].asXmlString = cleanSubstring(fetchedXMlString, '');\n }\n\n return instanceXmlAsJsonCompact;\n })\n .catch((error) => ({ error: true, messages: [`${error}; could not find \"XML Instance Data\"`] }));\n }\n\n private buildFactMap(): Map {\n if (!this?.activeInstance?.xml) throw new Error(\"Error: Active Instance has no XML data\");\n\n // why set to index [0] ? !!!\n // will this break on multidoc? !!!\n this.activeInstance.map = this.buildInitialFactMap(this.activeInstance.xml);\n this.enrichFactMapWithMetalinksData();\n\n return this.activeInstance.map;\n }\n\n private async mergeAllResponses(): Promise {\n this.activeInstance.formInformation = this.extractFormInformation(this.activeInstance.metaInstance);\n this.customPrefix = this.activeInstance.metaInstance.nsprefix?.toLowerCase() || null;\n \n const prepperData: XhtmlPrepData = {\n docs: this.activeInstance.docs,\n facts: this.activeInstance.map,\n customPrefix: this.customPrefix || \"\",\n };\n\n await new XhtmlPrepper(prepperData).updateFactMapWithDocsData();\n }\n\n private buildInitialFactMap(instanceXml: Instance): Map {\n const getInstancePrefix = (instance: Instance) => {\n const options = Object.keys(instance).filter(element => element.endsWith(':xbrl'))[0];\n return options ? options.split(':')[0] : false;\n };\n\n const prefix = getInstancePrefix(instanceXml);\n const instance: Record = instanceXml;\n\n const xbrlKey = prefix ? `${prefix}:xbrl` : 'xbrl';\n const contextKey = prefix ? `${prefix}:context` : 'context';\n const unitKey = prefix ? `${prefix}:unit` : 'unit';\n\n const context = instance[xbrlKey][contextKey];\n const unit = instance[xbrlKey][unitKey] || [];\n const instanceFootnoteData = instance[xbrlKey]['link:footnoteLink'];\n\n delete instance[xbrlKey][contextKey];\n delete instance[xbrlKey][unitKey];\n delete instance[xbrlKey]._attributes;\n delete instance[xbrlKey]['link:schemaRef'];\n delete instance[xbrlKey]['link:footnoteLink'];\n\n this.setPeriodText(context);\n this.setSegmentData(context);\n this.setMeasureText(unit);\n\n const factMap = new Map();\n\n const addFactToMap = (factElem: { _attributes: DeiAmendmentFlagAttributes; _text: string; }, tagName: string) => {\n const attributes = factElem._attributes;\n const id = `fact-identifier-${factCounter++}`;\n const ix = attributes.id || id ;\n\n factMap.set(ix, {\n ...attributes,\n ix,\n id,\n name: tagName,\n value: this.isFactHTML(factElem._text) ? this.updateValueToRemoveIDs(factElem._text) : factElem._text,\n isNegativeOnly: this.isFactNegativeOnly(factElem._text),\n isHTML: this.isFactHTML(factElem._text),\n period: this.setPeriodInfo(attributes.contextRef, context) || \"\",\n periodDates: this.setPeriodDatesInfo(attributes.contextRef, context),\n segment: this.setSegmentInfo(attributes.contextRef, context),\n measure: this.setMeasureInfo(attributes.unitRef || \"\", unit),\n scale: setScaleInfo(attributes.scale),\n decimals: this.setDecimalsInfo(attributes.decimals || \"\"),\n decimalsVal: attributes.decimals,\n sign: null, // sign exists as attr in inlineDoc, not instance\n footnote: this.setFootnoteInfoOnFact(ix, instanceFootnoteData),\n isEnabled: true,\n isHighlight: false,\n isSelected: false,\n filterContent: { content: this.getTextFromHTML(factElem._text) },\n file: null,\n });\n }\n\n let factCounter = 0;\n for (const tagName in instance[xbrlKey]) {\n const factElem = instance[xbrlKey][tagName];\n /* example set of tagNames on instance.xbrl\n _attributes\n link:schemaRef\n context\n unit\n dei:DocumentPeriodEndDate\n dei:DocumentType\n dei:EntityRegistrantName\n dei:EntityCommonStockSharesOutstanding\n i09203gd:Content4\n link:footnoteLink\n */\n if (Array.isArray(factElem)) {\n factElem.forEach((factEl: { _attributes: DeiAmendmentFlagAttributes; _text: string; }) => {\n addFactToMap(factEl, tagName);\n });\n } else {\n addFactToMap(factElem, tagName);\n }\n }\n\n return factMap;\n }\n\n private setSectionGroupType(sections: Section[]): Section[] {\n // groupType is used in Metalinks v2.1 (and presumably earlier) and was replaced by menuCat in 2.2\n if (Number(this.metaVersion) < 2.2) return sections;\n\n this.sections.forEach((section) => section.groupType = section.menuCat);\n\n return sections;\n }\n\n private extractFormInformation(meta: Meta): FormInformation {\n const metaCopy = Object.assign({}, meta);\n delete metaCopy.report;\n delete metaCopy.tag;\n return metaCopy as unknown as FormInformation;\n }\n\n /**\n * Description\n * @returns {any} => updates instance fact map (this.activeInstance.map) with data from meta (this.activeInstance.metaInstance)\n */\n private enrichFactMapWithMetalinksData() {\n const getRefFromMetalinks = (concept: string): string[] => {\n const mlConcept = concept.replace(':', '_');\n if (this.activeInstance?.metaInstance?.tag && this.activeInstance.metaInstance.tag[mlConcept]) {\n const ref = this.activeInstance.metaInstance.tag[mlConcept].auth_ref;\n return Array.isArray(ref) ? ref : [ref];\n }\n\n return [];\n }\n\n const addDimensionRefToFactRefs = (seg: any, refKeys: string[]) => {\n if (seg.dimension) refKeys.push(...getRefFromMetalinks(seg.dimension));\n if (seg.member) refKeys.push(...getRefFromMetalinks(seg.member));\n return refKeys;\n }\n\n this.activeInstance?.map.forEach((currentFact: SingleFact) => {\n /* \n @Doc: Fact 'tags' in metalinks.json vs fact 'names' in instance and doc files\n facts are stored in metalinks.json under instance[].tags\n Tags can be concepts or dimensions which are also qNames.\n Some tag names look like:\n dei_AmendmentDescription\n They have underscores, but in the instance and doc files they have colons:\n dei:AmendmentDescription\n */\n const factNameTag = currentFact.name.replace(':', '_');\n const factObjectMl = this.activeInstance?.metaInstance?.tag ? this.activeInstance.metaInstance?.tag[factNameTag] : null;\n\n if (factObjectMl) {\n\n /* add references (if any) to each individual fact\n including references via any dimension [name]\n including references via any member [name] */\n if (factObjectMl.auth_ref) {\n let referenceKeys = [...factObjectMl.auth_ref];\n\n if (currentFact.segment) {\n let refKeys: string[] = [];\n\n currentFact.segment.map((seg: any) => {\n if (Array.isArray(seg)) {\n seg.forEach((nestedSeg: any) => {\n refKeys = addDimensionRefToFactRefs(nestedSeg, refKeys);\n })\n } else {\n refKeys = addDimensionRefToFactRefs(seg, refKeys);\n }\n })\n\n referenceKeys = referenceKeys.concat(refKeys.flat());\n }\n\n const references = [...new Set(referenceKeys)]\n .map((current) => this.std_ref[current])\n .filter(Boolean);\n\n currentFact.references = references.length > 0 ? references : null;\n\n // this order specifically for Fact References\n // any other key => value will be ignored and not shown to the user\n const requiredOrder = [\n `Publisher`,\n `Name`,\n `Number`,\n `IssueDate`, // listed in xbrl book but not sure if I should add\n `Chapter`,\n `Article`,\n `Note`,\n `Exhibit`,\n `Section`,\n `Subsection`,\n `Topic`,\n `SubTopic`,\n `Paragraph`,\n `Subparagraph`,\n `Sentence`,\n `Clause`,\n `Subclause`,\n `Example`,\n `Footnote`,\n `URI`,\n `URIDate`,\n `role`,\n ];\n\n if (currentFact.references) {\n const refsWithOrderedProps = currentFact.references.map((singleReference: Reference) => {\n return Object.keys(singleReference)\n .reduce((accumulator, current) => {\n const index = requiredOrder.findIndex(element => element === current);\n if (index !== -1) {\n const returnObject = {};\n returnObject[current] = singleReference[current];\n accumulator[index] = returnObject;\n }\n return accumulator;\n }, new Array(Object.keys(singleReference).length).fill(null))\n .filter(Boolean);\n });\n currentFact.references = refsWithOrderedProps;\n }\n }\n\n // add calculations (if any) to each individual fact\n if (factObjectMl.calculation) {\n const tempFactCalculation = factObjectMl.calculation;\n currentFact.calculations = [];\n for (const factCalculationProp in tempFactCalculation) {\n const result: Calculation[] = this.sections?.map(sectionElement => {\n if (sectionElement.role === factCalculationProp) {\n /*\n Walter comment: \"Although I traced the root cause to a problem in entry point sbsef-fex, still, \n user actions can cause this.sections to be unbound when switching from one instance to another via the “instance” menu. \n So, this section should probably make sure that this.sections is at least an empty list:\"\n */\n return [\n {\n label: 'Section',\n value: sectionElement.longName,\n },\n {\n label: 'Weight',\n value: this.getCalculationWeight(tempFactCalculation[factCalculationProp].weight || 0),\n },\n {\n label: 'Parent',\n value: this.getCalculationParent(tempFactCalculation[factCalculationProp].parentTag || \"\"),\n },\n ];\n }\n })\n .filter(isTruthy);\n\n //As usual, this is pushing the wrong type onto the array, but it's been working so why fix it :eyeroll:\n currentFact.calculations.push(...result as any);\n }\n } else {\n currentFact.calculations = [];\n }\n\n // add labels (if any) to each individual fact\n if (factObjectMl.lang) {\n currentFact.labels = Object.values(factObjectMl.lang).map((lang) => {\n const oldObject = lang.role;\n const newObject = {} as LabelElement;\n for (const property in oldObject) {\n\n const result = property.replace(/([A-Z])/g, ' $1');\n const finalResult = result.charAt(0).toUpperCase() + result.slice(1);\n Object.assign(newObject, { [finalResult]: oldObject[property] });\n }\n return newObject\n });\n\n currentFact.filterContent.labels = currentFact.labels.reduce((accumulator: string, current) => {\n const tempCurrent = { ...current };\n delete tempCurrent.documentation;\n return `${accumulator} ${Object.values(tempCurrent).join(' ')}`;\n\n }, '');\n\n currentFact.filterContent.definitions = currentFact.labels.reduce((accumulator, current: { Documentation: string; }) => {\n return `${accumulator} ${current.Documentation}`;\n }, '');\n }\n\n // add credit / debit\n if (factObjectMl.crdr) {\n const balance = factObjectMl.crdr;\n currentFact.balance = `${balance.charAt(0).toUpperCase()}${balance.slice(1)}`;\n }\n\n // add xbrltype\n if (factObjectMl.xbrltype) {\n currentFact.xbrltype = factObjectMl.xbrltype;\n }\n\n // add additional info to each individual fact\n //TODO: why aren't these set to \"\" instead of null?\n currentFact.localname = factObjectMl.localname || null as any;\n currentFact.nsuri = factObjectMl.nsuri || null as any;\n currentFact.presentation = factObjectMl.presentation || null as any;\n currentFact.xbrltype = factObjectMl.xbrltype || null as any;\n\n currentFact.isAmountsOnly = this.isFactAmountsOnly((currentFact.value ? currentFact.value : ''), currentFact.scale);\n currentFact.isTextOnly = !this.isFactAmountsOnly((currentFact.value ? currentFact.value : ''), currentFact.scale);\n\n }\n });\n }\n\n private updateValueToRemoveIDs(input: string) {\n const $ = cheerio.load(input, { xml: false });\n $('[id]').each(function () {\n $(this).removeAttr('id');\n });\n // we also wrap the entirety of the html in a simple div\n $('body').wrapInner('');\n return $.html('body');\n }\n\n private isFactAmountsOnly(input: string, scale?: string | null | undefined): boolean {\n return /^-?\\d+\\d*$/.test(input) && scale != null;\n }\n\n private isFactNegativeOnly(input: string) {\n return this.isFactAmountsOnly(input) && input.startsWith('-');\n }\n\n private isFactHTML(input: string) {\n return /<\\/?[a-z][\\s\\S]*>/i.test(input);\n }\n\n private getTextFromHTML(input: string) {\n if (this.isFactHTML(input)) {\n const $ = cheerio.load(input);\n return $.text();\n }\n return input;\n }\n\n private setPeriodText(context: Context[]) {\n context = Array.isArray(context) ? context : [context];\n context?.forEach((current) => {\n if (current.period) {\n if (current.period.instant) {\n const date = new Date(current.period.instant._text);\n current.period._array = [`${date.getUTCMonth() + 1}/${date.getUTCDate()}/${date.getUTCFullYear()}`];\n current.period._text = `As of ${date.getUTCMonth() + 1}/${date.getUTCDate()}/${date.getUTCFullYear()}`;\n\n } else if (current.period.startDate && current.period.endDate) {\n const startDate = new Date(current.period.startDate._text);\n const endDate = new Date(current.period.endDate._text);\n\n const yearDiff = (endDate.getUTCFullYear() - startDate.getUTCFullYear()) * 12;\n\n let monthDiff = (endDate.getUTCMonth() - startDate.getUTCMonth()) + yearDiff;\n const dayDiff = endDate.getUTCDate() - startDate.getUTCDate();\n\n //If the difference in days is more than half a month, round up/down as appropriate\n if (dayDiff > 15) {\n monthDiff++;\n } else if (dayDiff < -15) {\n monthDiff--;\n }\n\n current.period._array =\n [\n `${startDate.getUTCMonth() + 1}/${startDate.getUTCDate()}/${startDate.getUTCFullYear()}`,\n `${endDate.getUTCMonth() + 1}/${endDate.getUTCDate()}/${endDate.getUTCFullYear()}`,\n ];\n\n if (monthDiff <= 0) {\n current.period._text = `${startDate.getUTCMonth() + 1}/${startDate.getUTCDate()}/${startDate.getUTCFullYear()} - ${endDate.getUTCMonth() + 1}/${endDate.getUTCDate()}/${endDate.getUTCFullYear()}`;\n } else {\n //JS counts Jan = UTCMonth-0, so add 1\n current.period._text = `${monthDiff} months ending ${endDate.getUTCMonth() + 1}/${endDate.getUTCDate()}/${endDate.getUTCFullYear()}`;\n }\n } else {\n const log: Logger = new Logger();\n log.error(`\\nFact Period is NEITHER Instant nor Start / End`);\n }\n }\n });\n }\n\n private setPeriodInfo(contextRef: string, context: [Context]) {\n // we go through and find the 'id' in context that equals contextRef\n context = Array.isArray(context) ? context : [context];\n const factContext = context?.find((element) => {\n return element._attributes.id === contextRef;\n });\n if (factContext && factContext.period) {\n return factContext.period._text;\n }\n }\n\n private setPeriodDatesInfo(contextRef: string, context: [Context]) {\n // we go through and find the 'id' in context that equals contextRef\n context = Array.isArray(context) ? context : [context];\n const factContext = context?.find((element) => {\n return element._attributes.id === contextRef;\n });\n if (factContext && factContext.period) {\n return factContext.period._array;\n }\n }\n\n private getTagLabelFromMetalinks = (tag: string) => {\n const mlDimTag = tag.replace(':', '_');\n if (this.activeInstance?.metaInstance?.tag && this.activeInstance.metaInstance.tag[mlDimTag]) {\n let engLang = this.activeInstance.metaInstance.tag[mlDimTag].lang?.['en-us'];\n if (!engLang) engLang = this.activeInstance.metaInstance.tag[mlDimTag].lang?.['en-US'];\n const label = engLang?.role?.label;\n return label || tag;\n }\n }\n \n private setSegmentData(context: Context | undefined) {\n // we want to think of these as aspects of a fact with key value pairs\n // for typed members \n // - it's dimension value will be the type of axis it is\n // - it's member value will be the value on that axis\n // Segment is a container tag for dimensional data.\n // There is only one segment tag for a fact (stored in context), but segment can contain multiple dimension tags\n\n /*\n Example Typed Member as xml\n \n \n \n 1\n \n \n \n\n example in json\n {\n sbs:SbsefTradgSysOrPltfmAxis.domain: {\n _text: '1'\n },\n _attributes: {\n dimension: 'sbs:SbsefTradgSysOrPltfmAxis'\n }\n }\n */\n\n /*\n Example of Explicit Member \n\n xml data:\n \n us-gaap:CommonStockMember\n exch:XCHI\n \n\n json data (first one)\n {\n _attributes: {\n dimension: 'us-gaap:StatementClassOfStockAxis'\n }\n _text: \"us-gaap:CommonStockMember\"\n }\n\n display as:\n (dimension) (member)\n Class of Stock [Axis] Common Stock [Member]\n Entity Listings, Exchange [Axis] NEW YORK STOCK EXCHANGE, INC. [Member]\n\n */\n\n\n const context2 = Array.isArray(context) ? context : [context];\n context2.forEach((ctx) => {\n if (ctx.entity && ctx.entity.segment) {\n const segment = ctx.entity.segment;\n segment.data = Object.keys(segment).map((tag) => {\n const isExplicit = tag.endsWith('explicitMember');\n if (Array.isArray(segment[tag])) {\n return segment[tag].map((seg: { _attributes: { dimension: string; }; _text: string; }) => {\n const memberVal = seg._text\n ? seg._text\n : seg[Object.keys(seg).filter((element: string) => !element.startsWith('_'))[0]]?._text;\n const dimensionData = {\n axis: seg._attributes.dimension,\n dimension: seg._attributes.dimension,\n dimensionLabel: this.getTagLabelFromMetalinks(seg._attributes.dimension),\n type: isExplicit ? 'explicit' : 'implicit',\n member: memberVal\n };\n if (isExplicit) dimensionData.memberLabel = this.getTagLabelFromMetalinks(memberVal);\n return dimensionData;\n });\n } else {\n const memberVal = isExplicit \n ? segment[tag]._text\n : segment[tag][Object.keys(segment[tag])[1]]._text;\n const dimensionData = {\n axis: segment[tag]._attributes.dimension,\n dimension: segment[tag]._attributes.dimension,\n dimensionLabel: this.getTagLabelFromMetalinks(segment[tag]._attributes.dimension),\n type: isExplicit ? 'explicit' : 'implicit',\n member: memberVal\n };\n if (isExplicit) dimensionData.memberLabel = this.getTagLabelFromMetalinks(memberVal);\n return dimensionData;\n }\n });\n }\n });\n }\n\n private setSegmentInfo(contextRef: string, context: Context[]): SegmentClass[] | undefined {\n context = Array.isArray(context) ? context : [context];\n const factContext = context?.find((e) => e._attributes.id === contextRef);\n return factContext?.entity?.segment?.data;\n }\n\n private setMeasureText(unit: Units[]) {\n if (!Array.isArray(unit)) {\n unit = [unit];\n }\n\n //Note: we need to first trick TS into believing a Units is really a UnitsAdditional\n //TODO: have `setMeasureText` take UnitsAdditional instead\n unit.map(u => u as UnitsAdditional)\n .forEach((current: UnitsAdditional) => {\n if (current && current.measure) {\n const measure = current.measure._text.includes(':') ?\n current.measure._text.split(':')[1].toUpperCase() :\n current.measure._text.toUpperCase();\n current._text = measure;\n } else if (current && current.divide) {\n const numerator = current.divide.unitNumerator.measure._text.includes(':') ?\n current.divide.unitNumerator.measure._text.split(':')[1].toUpperCase() :\n current.divide.unitNumerator.measure._text.toUpperCase();\n\n const denominator = current.divide.unitDenominator.measure._text.includes(':') ?\n current.divide.unitDenominator.measure._text.split(':')[1].toUpperCase() :\n current.divide.unitDenominator.measure._text.toUpperCase();\n\n current._text = `${numerator} / ${denominator}`;\n }\n });\n }\n\n private setMeasureInfo(unitRef: string, unit: Units): string | undefined {\n if (unit)\n {\n const findMatchingUnit = (unitArray: Units[]) => unitArray.find((element) => element._attributes.id === unitRef);\n const factUnit = Array.isArray(unit) ? findMatchingUnit(unit) : findMatchingUnit([unit]);\n\n if (factUnit && (\"measure\" in factUnit || \"divide\" in factUnit))\n {\n //Note: I suspect that we want factUnit.[\"measure\" || \"divide\"]._text\n return factUnit._text;\n }\n }\n }\n\n private setDecimalsInfo(decimals: string): Decimals | null {\n const decimalsOptions: Record = {\n \"-1\": Decimals.Tens,\n \"-2\": Decimals.Hundreds,\n \"-3\": Decimals.Thousands,\n \"-4\": Decimals.TenThousands,\n \"-5\": Decimals.HundredThousandths,\n \"-6\": Decimals.Millions,\n \"-7\": Decimals.TenMillions,\n \"-8\": Decimals.HundredMillions,\n \"-9\": Decimals.Billions,\n \"-10\": Decimals.TenBillions,\n \"-11\": Decimals.HundredBillions,\n \"-12\": Decimals.Trillions,\n 1: Decimals.Tenths,\n 2: Decimals.Hundredths,\n 3: Decimals.Thousandths,\n 4: Decimals.TenThousandths,\n 5: Decimals.HundredThousandths,\n 6: Decimals.Millionths,\n };\n\n return decimalsOptions[decimals] || null;\n }\n\n private setSignInfo(sign: string): string | null {\n const signOptions: Record = {\n '-': 'Negative',\n '+': 'Positive',\n };\n \n return signOptions[sign];\n }\n\n /**\n * Description\n * @param {any} ftObj:object\n * @param {any} result?:string|undefined\n * @returns {any} concatenated text from all footnote nodes, joined by a ' '\n */\n private accumulateFootnoteText(ftObj: LinkFootnote | Record, result = \"\") {\n // https://jira.edgar.sec.gov/browse/EDGARDEV-29476\n const truncateFootnoteTo = 100;\n\n if (result?.length > truncateFootnoteTo) {\n result = result.substring(0, truncateFootnoteTo).substring(0, result.lastIndexOf(\" \") + 1);\n return result += ' ...';\n }\n\n Object.entries(ftObj).forEach(([key, value]) => {\n if (key == \"_text\") {\n result += String(value);\n }\n else if (Array.isArray(value)) {\n value.forEach(childNode => {\n result = this.accumulateFootnoteText(childNode, result);\n })\n }\n else if (key.substring(0,6) == \"xhtml:\") {\n result = this.accumulateFootnoteText(value, result);\n }\n });\n\n return result;\n }\n\n /**\n * Description\n * @param {any} id:string\n * @param {any} instanceFootnotes:{\"link:loc\":LinkLOC[]\n * @param {any} \"link:footnote\":LinkFootnote[];\"link:footnoteArc\":LinkFootnoteArc[];}\n * @param {string} asXmlString footnotes part of fetched xml text\n * @returns {any} renderable footnote text (or xml string) to be displayed in fact modal\n * todo: handle incoming footnotes.asXmlString or footnotes.xmlExpanded to show all content (in order) instead of just text\n * todo: handle images, tables, ...other html elements (currently just concatenating text content)\n * the above todos are WIP and are handled when useFetchedFootnoteXmlStrings is set to true.\n */\n\n /*\n Note on Footnotes\n - footnote text is in the instance file (_htm.xml)\n */\n private setFootnoteInfoOnFact(factId: string, instanceFootnotes: {\n \"link:loc\": LinkLOC[],\n \"link:footnote\": LinkFootnote[],\n \"link:footnoteArc\": LinkFootnoteArc[],\n \"asXmlString\": string,\n }) {\n if (instanceFootnotes && instanceFootnotes['link:footnoteArc']) {\n /*\n link:footnoteArc tags are link tags consisting of:\n xlink:from (some fact id) \n xlink:to (some xlink:footnote id that contains actual footnote content.)\n */\n let factFootnoteArcTags = Array.isArray(instanceFootnotes['link:footnoteArc'])\n ? instanceFootnotes['link:footnoteArc'].filter((element) => element._attributes['xlink:from'] === factId ) \n : [instanceFootnotes['link:footnoteArc']].find((element) => element._attributes['xlink:from'] === factId );\n if (!Array.isArray(factFootnoteArcTags) && typeof factFootnoteArcTags === 'object') {\n factFootnoteArcTags = [factFootnoteArcTags];\n }\n\n if (factFootnoteArcTags?.length && instanceFootnotes['link:footnote']) {\n if (Array.isArray(instanceFootnotes['link:footnote'])) {\n const factFootnoteTags = factFootnoteArcTags?.map(arcTag => arcTag._attributes['xlink:to'])\n .map(footnoteId => instanceFootnotes['link:footnote'].find((footnoteElem) => footnoteElem._attributes.id === footnoteId));\n\n if (Array.isArray(factFootnoteTags)) {\n const footnotesTexts = factFootnoteTags.map(footnote => {\n return this.accumulateFootnoteText(footnote || {} as Record);\n });\n return footnotesTexts.join('
');\n } else {\n return this.accumulateFootnoteText(factFootnoteTags || {} as Record);\n }\n } else {\n return this.accumulateFootnoteText(instanceFootnotes['link:footnote'] || {} as Record);\n }\n }\n }\n return null;\n }\n\n private wipFootnoteParser = () => {\n // removed from setFootnoteInfo() for clarity\n // this block is WIP for rendering all div types in footnote cell\n\n // GO FIND PART OF footnotes.xmlString that corresponds to actual footnote\n // return that substring ... so you can render it in fact-pages.ts\n // we only need ' string for each footnote to render\n // find all xml strings and put in array\n // then find the one that matches the xlink:to value with its id\n\n /*\n const startTagRegex = //gi; \n let endTagResults: RegExpExecArray | null = null;\n const footnoteEndIndices:number[] = [];\n while (!!(endTagResults = endTagRegex.exec(instanceFootnotes.asXmlString))) {\n footnoteEndIndices.push(endTagResults.index + ('').length);\n }\n\n const footnotesAsXmlStrings: string[] = [];\n\n footnoteStartIndices.forEach((start, indexInArrayOfStarts) => {\n const pluckedFootnote = instanceFootnotes.asXmlString.substring(start, footnoteEndIndices[indexInArrayOfStarts]);\n footnotesAsXmlStrings.push(pluckedFootnote);\n })\n\n const relevantFootnoteAsXmlString = footnotesAsXmlStrings.find(fn => {\n return fn.indexOf(factFootnoteArcTags._attributes['xlink:to']) != -1;\n })\n\n return relevantFootnoteAsXmlString;\n */\n }\n\n private getCalculationWeight(weight: number) {\n if (weight > 0)\n return `Added to parent(${weight.toFixed(2)})`;\n else if (weight < 0)\n return `Substracted from parent(${weight.toFixed(2)})`;\n else\n return 'Not Available.';\n }\n\n private getCalculationParent(parent: string) {\n if (parent) {\n return parent.replace('_', ':');\n }\n return 'Not Available.';\n }\n}\n","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport { FetchAndMerge } from '../fetch-merge/fetch-merge';\n\n/*\ndata in \nconst fetchAndMergeArgs: FetchMergeArgs = {\n params: HelpersUrl.getAllParams,\n absolute: HelpersUrl.getFolderAbsUrl,\n instance: changeInstance ? Constants.getInstances : null,\n std_ref: Constants.getStdRef,\n};\nFrom docsAndInstance\n- this.activeInstance.xml = instXml]\n- [this.activeInstance.docs]\nfrom metaAndSummary\n- this.metaVersion = metalinks.version || null;\n- this.std_ref = metalinks.std_ref || {} as any;\n- this.activeInstance = metalinks.instance;\n*/\n\nself.onmessage = ({ data }) => {\n const fetchAndMerge = new FetchAndMerge(data);\n fetchAndMerge.fetch()\n .then((data) => self.postMessage(data))\n .then(() => fetchAndMerge.facts())\n .then((data) => self.postMessage(data))\n .then(() => fetchAndMerge.merge())\n .then((data) => self.postMessage(data))\n .catch((e) => setTimeout(() => { throw new Error(JSON.stringify(e)) }));\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// the startup function\n__webpack_require__.x = () => {\n\t// Load entry module and return exports\n\t// This entry module depends on other loaded chunks and execution need to be delayed\n\tvar __webpack_exports__ = __webpack_require__.O(undefined, [870,585], () => (__webpack_require__(2884)))\n\t__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n\treturn __webpack_exports__;\n};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks and chunks that the entrypoint depends on\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".bundle.\" + {\"585\":\"749f2ec6c2ff200c48cb\",\"870\":\"2be58e7a854ed7626abd\"}[chunkId] + \".min.js\";\n};","// This function allow to reference async chunks and chunks that the entrypoint depends on\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/ixviewer-plus/\";","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t662: 1\n};\n\n// importScripts chunk loading\nvar installChunk = (data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\twhile(chunkIds.length)\n\t\tinstalledChunks[chunkIds.pop()] = 1;\n\tparentChunkLoadingFunction(data);\n};\n__webpack_require__.f.i = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\timportScripts(__webpack_require__.p + __webpack_require__.u(chunkId));\n\t\t}\n\t}\n};\n\nvar chunkLoadingGlobal = self[\"webpackChunkixviewer_2\"] = self[\"webpackChunkixviewer_2\"] || [];\nvar parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);\nchunkLoadingGlobal.push = installChunk;\n\n// no HMR\n\n// no HMR manifest","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"names":["deferred","next","Balance","LabelEnum","Decimals","version","featureSet","appStart","loadPhaseComplete","appWindow","window","frameElement","id","parent","loadedViaRedirect","perfTableJs","perfTableDom","elapsedPerfTable","discretePerfTable","logPerfParam","unused","axesCount","membersCount","memberLimit","getSearchCriteria","isNcsr","sumOfDocsSizes","docSizeFallbackLimit","scrollPosition","localStorage","getItem","hoverOption","getHTMLAttributes","getPaginationPerPage","factCount","getMetaSourceDocuments","getMetaTags","getInstances","getCurrentInstance","find","inst","current","getInlineFiles","sections","setSections","sessionStorage","setItem","JSON","stringify","getSectionsFromSessionStorage","sectionsFromLocal","parse","getStdRef","getFormInformation","getMetaCustomPrefix","getMetaDts","getMetaDocuments","input","getScrollPosition","document","getElementById","scrollTop","getNavBarsHeight","querySelector","offsetHeight","sideBarPaginationState","pageNumber","totalPages","isTruthy","t","Boolean","facts","noIdFactMap","this","getId","contextRef","name","m","Map","values","map","reduce","acc","nameCtxref","idList","get","push","set","key","shift","getFactAttrsFromAnchorProps","section","fact","instance","uniqueAnchor","file","baseRef","ancestors","firstAnchor","mapCategoryName","isStandard","lowerCaseKey","toLowerCase","noStatementCatNameMap","standardCatNameMap","fetchText","url","init","fetch","then","response","ok","Error","status","toString","contentType","headers","test","contentDisposition","text","setScaleInfo","scale","docs","customPrefix","idAllocator","FactIdAllocator","updateFactMapWithDocsData","promises","sort","a","b","doc","Promise","resolve","applyElementDataToFact","all","$","xhtml","factElements","Array","from","factElem","attr","updateMap","slug","error","element","docSlug","raw","format","isAdditional","parents","prop","endsWith","isCustom","split","isAmountsOnly","isTextOnly","isNegativeOnly","sign","continuedIDs","console","activeInstance","metaVersion","activeDocs","getTagLabelFromMetalinks","tag","mlDimTag","replace","metaInstance","engLang","lang","role","label","wipFootnoteParser","absolute","params","instances","std_ref","fetchLength","method","res","lengthHeader","parseInt","docsAndInstance","fetchDocs","fetchInstanceXml","instXml","errors","filter","Object","prototype","hasOwnProperty","call","length","messages","flat","forEach","index","loaded","xml","getJustDocs","metaAndSummary","fetchMeta","fetchSummary","ml","fs","metalinks","filingSummary","getInstanceXmlUrlFromFilingSummary","filingSummaryReports","MyReports","Report","instanceHtmSlugs","Set","r","reportInstanceHtmSlug","_attributes","has","add","instanceHtm","includes","xmlUrl","initialLoad","meta","summ","metaLinksReports","filingSummaryInputFiles","InputFiles","File","isArray","reportsContainStatements","MenuCategory","_text","some","menuCategory","metaReport","Number","menuCat","fsRep","ShortName","shortName","getMenuCategoryFromFilingSumm","subGroupType","groupType","undefined","mrFact","ancestorsRelevant","reverse","join","inlineFactSelector","addFactProps","reportFileInfo","fileName","original","instanceDocName","doctype","addInstanceProps","menuCatMapped","position","pos","Position","getPositionFromFilingSumm","domId","sanitize","normalizedSelector","replaceAll","convertToSelector","buildSectionsArrayFlatter","setSectionGroupType","size","cur","x","errorHandling","reject","buildFactMap","e","merge","mergeAllResponses","message","decodeWorkstationXmlInHtml","isWorkstation","html","closingXml","substring","indexOf","alert","ixvUrl","redline","mode","credentials","xhtmlData","catch","jsonUrl","json","mlData","XHTMLSlug","lastIndexOf","startsWith","instanceFileNames","keys","instanceObjects","entries","instanceIndex","currentInstance","instData","report","assign","xhtmls","formInformation","xmlSlugs","inlineFiles","filingSummXmlUrl","summary","data","xmlData","convertedXml","compact","FilingSummary","fetchedXMlString","instanceXmlAsJsonCompact","xbrl","buildInitialFactMap","enrichFactMapWithMetalinksData","extractFormInformation","nsprefix","prepperData","XhtmlPrepper","instanceXml","prefix","options","getInstancePrefix","xbrlKey","contextKey","unitKey","context","unit","instanceFootnoteData","setPeriodText","setSegmentData","setMeasureText","factMap","addFactToMap","tagName","attributes","factCounter","ix","value","isFactHTML","updateValueToRemoveIDs","isFactNegativeOnly","isHTML","period","setPeriodInfo","periodDates","setPeriodDatesInfo","segment","setSegmentInfo","measure","setMeasureInfo","unitRef","decimals","setDecimalsInfo","decimalsVal","footnote","setFootnoteInfoOnFact","isEnabled","isHighlight","isSelected","filterContent","content","getTextFromHTML","factEl","metaCopy","getRefFromMetalinks","concept","mlConcept","ref","auth_ref","addDimensionRefToFactRefs","seg","refKeys","dimension","member","currentFact","factNameTag","factObjectMl","referenceKeys","nestedSeg","concat","references","refsWithOrderedProps","singleReference","accumulator","findIndex","returnObject","fill","calculation","calculations","factCalculationProp","result","sectionElement","longName","getCalculationWeight","weight","getCalculationParent","parentTag","labels","oldObject","newObject","property","finalResult","charAt","toUpperCase","slice","tempCurrent","documentation","definitions","Documentation","crdr","balance","xbrltype","localname","nsuri","presentation","isFactAmountsOnly","each","removeAttr","wrapInner","instant","date","Date","_array","getUTCMonth","getUTCDate","getUTCFullYear","startDate","endDate","yearDiff","monthDiff","dayDiff","factContext","ctx","entity","isExplicit","memberVal","dimensionData","axis","dimensionLabel","type","memberLabel","u","divide","numerator","unitNumerator","denominator","unitDenominator","findMatchingUnit","unitArray","factUnit","Tens","Hundreds","Thousands","TenThousands","HundredThousandths","Millions","TenMillions","HundredMillions","Billions","TenBillions","HundredBillions","Trillions","Tenths","Hundredths","Thousandths","TenThousandths","Millionths","setSignInfo","accumulateFootnoteText","ftObj","String","childNode","factId","instanceFootnotes","factFootnoteArcTags","factFootnoteTags","arcTag","footnoteId","footnoteElem","toFixed","self","onmessage","fetchAndMerge","FetchAndMerge","postMessage","setTimeout","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","__webpack_exports__","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","d","definition","o","defineProperty","enumerable","f","chunkId","miniCssF","obj","Symbol","toStringTag","p","installedChunks","importScripts","chunkLoadingGlobal","parentChunkLoadingFunction","bind","moreModules","runtime","pop"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"fetch-merge.bundle.2a3ebfefc693bdaa74f9.min.js","mappings":";uBAAIA,ECAAC,E,sBCoEQC,EAUAC,EAQAC,E,sCCzEC,EAAY,CACxBC,QAAS,OACTC,WAAY,OACZC,SAAU,EACVC,kBAAmB,EAEnBC,UACsB,oBAAVC,OAA8B,CAAC,EAEpCA,OAAOC,cAA2C,aAA3BD,OAAOC,aAAaC,GACzCF,OAAOG,OAIRH,OAGRI,kBACsB,oBAAVJ,YAELA,OAAOC,cAA2C,aAA3BD,OAAOC,aAAaC,UAAjD,GAMDG,YAAa,GACbC,aAAc,GACdC,iBAAkB,GAClBC,kBAAmB,GACnBC,cAAc,EAEdC,OAAQ,OACRC,UAAW,EACXC,aAAc,EACdC,YAAa,IAEbC,kBAAmB,CAAC,EAEpBC,QAAQ,EACRC,eAAgB,EAChBC,qBAAsB,IAEtBC,eAAkC,oBAAXlB,QAA0BA,OAAOmB,aAAaC,QAAQ,mBAAqB,QAElGC,YAA+B,oBAAXrB,QAAyE,SAA/CA,OAAOmB,aAAaC,QAAQ,iBAA6B,EAEvGE,kBAAmB,CAAC,EAEpBC,qBAAsB,GAEtBC,UAAW,KAEXC,uBAAwB,GAExBC,YAAa,GAEbC,aAAc,GAEdC,mBAAoB,WACnB,OAAO,EAAUD,aAAaE,KAAK,SAAAC,GAAQ,OAAAA,EAAKC,OAAL,EAC5C,EAEAC,eAAgB,GAEhBC,SAAU,GAEVC,YAAa,SAACD,GACTA,IACH,EAAUA,SAAWA,EACrBE,eAAeC,QAAQ,WAAYC,KAAKC,UAAUL,IAEpD,EAEAM,8BAA+B,WAC9B,IAAMC,EAAoBL,eAAef,QAAQ,YACjD,OAAOiB,KAAKI,MAAMD,GAAqB,KACxC,EAEAE,UAAW,CAAC,EAEZC,mBAAoB,CAAC,EAErBC,oBAAqB,KAGrBC,WAAY,KACZC,iBAAkB,SAACC,GAClB,OAAIA,GAA0B,iBAAVA,GACZ,EAAUF,YAAc,EAAUA,WAAWE,GACjD,EAAUF,WAAWE,GAIlB,IACR,EAEAC,kBAAmB,WAElB,OAD8BC,SAASC,eAAe,qBAAsBC,SAE7E,EAEAC,iBAAkB,W,MACjB,OAA+D,QAAxD,EAAAH,SAASI,cAA2B,4BAAoB,eAAEC,eAAgB,CAClF,EAEAC,uBAAwB,CAACC,WAAY,EAAGC,WAAY,ICe9C,SAASC,EAAYC,GACxB,OAAOC,QAAQD,EACnB,EFpEA,SAAYnE,GACR,kBACA,eACH,CAHD,CAAYA,IAAAA,EAAO,KAUnB,SAAYC,GAER,oBACA,kBACA,oBACA,iBACH,CAND,CAAYA,IAAAA,EAAS,KAQrB,SAAYC,GAER,cACA,sBACA,wBACA,+BACA,uCACA,sBACA,6BACA,qCACA,sBACA,6BACA,qCACA,wBAEA,kBACA,0BACA,4BACA,mCACA,2CACA,yBACH,CArBD,CAAYA,IAAAA,EAAQ,K,8RG7EpB,aAKI,WAAYmE,GAFJ,KAAAC,YAAiD,KAIrDC,KAAKF,MAAQA,CACjB,CAsBJ,OApBW,YAAAG,MAAP,SAAaC,EAA4BC,G,MAErC,GAAwB,MAApBH,KAAKD,YACT,CACI,IAAIK,EAAI,IAAIC,IACZL,KAAKD,Y,+LAAc,MAAIC,KAAKF,MAAMQ,WAAQ,GACrCC,IAAI,SAAC,G,IAAEpE,EAAE,KAAEgE,EAAI,OAAED,EAAU,aAAM,OAAC5B,KAAKC,UAAU,CAAE4B,KAAI,EAAED,WAAU,IAAK/D,EAAvC,GACjCqE,OAAO,SAACC,EAAK,G,IAAA,SAACC,EAAU,KAAEvE,EAAE,KAErBwE,EAASF,EAAIG,IAAIF,IAAe,GAIpC,OAHAC,EAAOE,KAAK1E,GACZsE,EAAIK,IAAIJ,EAAYC,GAEbF,CACX,EAAGL,E,CAGX,IAAMW,EAAMzC,KAAKC,UAAU,CAAE4B,KAAI,EAAED,WAAU,IAC7C,OAAgC,QAAzB,EAAAF,KAAKD,YAAYa,IAAIG,UAAI,eAAEC,UAAW,IACjD,EACJ,EA9BA,GC4FaC,EAA8B,SAACC,GACxC,IAAIC,EAA2B,CAAC,EAyBhC,OAxBAA,EAAKC,SAAWF,EAAQE,SAEpBF,EAAQG,cACRF,EAAKhB,KAAOe,EAAQG,aAAalB,KACjCgB,EAAKjB,WAAagB,EAAQG,aAAanB,WACvCiB,EAAKG,KAAOJ,EAAQG,aAAaE,QACjCJ,EAAKK,UAAYN,EAAQG,aAAaG,WAC/BN,EAAQO,aACfN,EAAKhB,KAAOe,EAAQO,YAAYtB,KAChCgB,EAAKjB,WAAagB,EAAQO,YAAYvB,WACtCiB,EAAKG,KAAOJ,EAAQO,YAAYF,QAChCJ,EAAKK,UAAYN,EAAQO,YAAYD,WAWrCL,EAAO,KAEJA,CACX,EAQMO,EAAkB,SAAC1C,EAAe2C,GACpC,IAAMC,EAAe5C,EAAM6C,cAOrBC,EAAwB,CAC1B,MAAS,UACT,SAAY,UAGZ,WAAc,UACd,MAAS,UACT,SAAY,UACZ,OAAU,UACV,QAAW,UACX,WAAc,aACd,aAAgB,eAChB,YAAe,eACf,cAAe,gBAEbC,EAAqB,CACvB,MAAS,QACT,SAAY,gCACZ,UAAa,uBACb,WAAc,uBACd,WAAc,oCACd,MAAS,gCACT,SAAY,sBACZ,OAAU,eACV,QAAW,gBACX,WAAc,aACd,aAAgB,eAChB,YAAe,eACf,cAAe,gBAGnB,OAAIJ,EACIC,KAAgBG,EACTA,EAAmBH,GAKnB,KAGPA,KAAgBE,EACTA,EAAsBF,GAKtB,IAGnB,EAEO,SAASI,EAAUC,EAAaC,GACnC,OAAOC,MAAMF,EAAKC,GAAME,KAAK,SAACC,GAC1B,IAAKA,EAASC,GACV,MAAM,IAAIC,MAAMF,EAASG,OAAOC,YAIpC,IAAMC,EAAcL,EAASM,QAAQ/B,IAAI,gBACzC,IAAK8B,EACD,MAAM,IAAIH,MAAM,qCAA8BN,IAGlD,IADuC,8EACHW,KAAKF,GACrC,MAAM,IAAIH,MAAM,qCAA8BN,EAAG,2BAAmBS,IAExE,IAAMG,EAAqBR,EAASM,QAAQ/B,IAAI,uBAEhD,GAAIiC,IAD0C,qBACmBD,KAAKC,GAClE,MAAM,IAAIN,MAAM,4CAAqCN,EAAG,kCAA0BY,IAGtF,OAAOR,EAASS,MACpB,EACJ,CAWO,SAASC,EAAaC,GAuBzB,MAtB6C,CACzC,EAAG,OACH,EAAG,OACH,EAAG,WACH,EAAG,YACH,EAAG,gBACH,EAAG,oBACH,EAAG,WACH,EAAG,eACH,EAAG,mBACH,EAAG,WACH,GAAI,eACJ,GAAI,mBACJ,GAAI,YACJ,KAAM,SACN,KAAM,aACN,KAAM,cACN,KAAM,kBACN,KAAM,sBACN,KAAM,cAGUA,GAAS,KAAO,IACxC,C,oNCnOA,aAMI,WAAY,G,IAAEC,EAAI,OAAEnD,EAAK,QAAEoD,EAAY,eACnClD,KAAKiD,KAAOA,EACZjD,KAAKF,MAAQA,EACbE,KAAKkD,aAAeA,EACpBlD,KAAKmD,YAAc,IAAIC,EAAgBpD,KAAKF,MAChD,CA0DJ,OAxDW,YAAAuD,0BAAP,sBACUC,E,+LAAW,I,uRAAA,CAAItD,KAAKiD,OAAI,GACzBM,KAAK,SAACC,EAAGC,GAAM,OAACA,EAAEzF,SAAWwF,EAAExF,OAAhB,GACfuC,IAAI,SAACmD,GACF,WAAIC,QAAc,SAACC,GACf,EAAKC,uBAAuBH,GAC5BE,GACJ,EAHA,GAMR,OAAOD,QAAQG,IAAIR,EACvB,EAIQ,YAAAO,uBAAR,SAA+BH,G,QACvBK,GAAI,QAAKL,EAAIM,MAAO,CAAC,GACnBC,EAAeC,MAAMC,KAAKJ,EAAE,iB,IAElC,IAAqB,M,ySAAA,CAAAE,GAAY,8BAAE,CAA9B,IAAIG,EAAQ,QACPjI,EAAK4H,EAAEK,GAAUC,KAAK,OAASrE,KAAKmD,YAAYlD,MAAM8D,EAAEK,GAAUC,KAAK,cAAeN,EAAEK,GAAUC,KAAK,SACzGlI,EACA6D,KAAKsE,UAAUnI,EAAI4H,EAAEK,GAAWV,EAAIa,OAGP,IAAI,KAC7BC,MAAM,sE,mGAGtB,EAEQ,YAAAF,UAAR,SAAkBnI,EAAYsI,EAA6BC,G,UACjDvD,EAAOnB,KAAKF,MAAMc,IAAIzE,GAC5B,OAAKgF,GAKLnB,KAAKF,MAAMgB,IAAI3E,EAAE,OAENgF,GAAI,CACPwD,IAAKF,EAAQ3B,OACb8B,OAAQH,EAAQJ,KAAK,UAAYI,EAAQJ,KAAK,UAAY,KAC1DQ,aAAcJ,EAAQK,UAAUC,KAAK,WAAWlD,cAAcmD,SAAS,WACvEC,UAA8B,QAApB,EAAAR,EAAQJ,KAAK,eAAO,eAAEa,MAAM,KAAK,GAAGrD,iBAAkB7B,KAAKkD,aACrEiC,cAAwE,iBAAlC,QAAvB,EAAAV,EAAQM,KAAK,kBAAU,eAAEG,MAAM,KAAK,GAAGrD,eACtDuD,WAAqE,gBAAlC,QAAvB,EAAAX,EAAQM,KAAK,kBAAU,eAAEG,MAAM,KAAK,GAAGrD,eACnDwD,eAAyC,MAAzBZ,EAAQJ,KAAK,QAC7BiB,KAAgC,MAAzBb,EAAQJ,KAAK,QAAmB,WAAa,KACpD/C,KAAMoD,EACN1B,MAAOD,EAAa0B,EAAQJ,KAAK,WAAa,GAC9CkB,aAAc,MAGfpE,EAAKhF,KApBRqJ,QAAQhB,MAAM,oCAAqCrI,GAC5C,GAoBf,EACJ,EArEA,G,0gECEA,aAYI,WAAY6C,GAAZ,I,EAAA,OARQ,KAAAyG,eAA+B,CAAC,EAEhC,KAAAvH,SAA2B,GAC3B,KAAAwH,YAA6B,KAerC,KAAAC,WAAwB,GA4zBhB,KAAAC,yBAA2B,SAACC,G,cAC1BC,EAAWD,EAAIE,QAAQ,IAAK,KAClC,IAAqC,QAAjC,EAAmB,QAAnB,IAAKN,sBAAc,eAAEO,oBAAY,eAAEH,MAAO,EAAKJ,eAAeO,aAAaH,IAAIC,GAAW,CAC1F,IAAIG,EAA6D,QAAnD,IAAKR,eAAeO,aAAaH,IAAIC,GAAUI,YAAI,eAAG,SAGpE,OAFKD,IAASA,EAA6D,QAAnD,IAAKR,eAAeO,aAAaH,IAAIC,GAAUI,YAAI,eAAG,WACnD,QAAb,EAAAD,aAAO,EAAPA,EAASE,YAAI,eAAEC,QACbP,C,CAExB,EA0QQ,KAAAQ,kBAAoB,WAsC5B,EA7nCIrG,KAAKsG,SAAWtH,EAAMsH,SACtBtG,KAAKuG,OAASvH,EAAMuH,OACpBvG,KAAKkD,aAAelE,EAAMkE,cAAgB,KAC1ClD,KAAKwG,UAA0B,QAAd,EAAAxH,EAAMoC,gBAAQ,QAAI,GACnCpB,KAAKyG,QAAUzH,EAAMyH,QACrBzG,KAAK/C,eAAiB,EACtB+C,KAAK9C,qBAAuB8B,EAAM9B,oBACtC,CAuoCJ,OAnoCU,YAAAwJ,YAAN,SAAkBzE,G,qBAAc0B,QAAO,W,yDACvB,SAAMxB,MAAMF,EAAK,CAAE0E,OAAQ,U,OAEvC,OAFMC,EAAM,SAEL,CAAP,GADMC,EAAeD,EAAIjE,QAAQ/B,IAAI,mBACfkG,SAASD,EAAc,IAAM,M,MAG1C,YAAA1E,MAAb,W,qCAAsBwB,QAAO,W,oFACnBoD,EAAkB,WACpB,OAAOpD,QAAQG,IAAI,CAAC,EAAKkD,YAAa,EAAKC,qBAAqB7E,KAAK,SAAO,G,IAAA,SAACa,EAAI,KAAEiE,EAAO,K,2EAItF,IAHMC,EAAS,SAAIlE,IAAI,IAAEiE,IAAO,GAAEE,OAAO,SAAC3C,GACtC,QAAAA,GAAU4C,OAAOC,UAAUC,eAAeC,KAAK/C,EAAS,QAAxD,IAEOgD,OAEP,KAAM,CAAE3D,IAAK,CAAEU,OAAO,EAAMkD,SADNP,EAAO5G,IAAI,SAAAvC,GAAW,OAAAA,EAAQ0J,QAAR,GACQC,S,OAOxD1E,EAAKmE,OAAO,SAAC1D,GAAkC,gBAAWA,CAAX,GAC1CkE,QAAQ,SAAClE,EAAKmE,GACX,EAAKpC,eAAexC,KAAK4E,GAAOC,QAAS,EACzC,EAAKrC,eAAexC,KAAK4E,GAAO7D,MAAQN,EAAIM,KAChD,GAEJhE,KAAKyF,eAAesC,IAAMb,E,SAElC,EAEMc,EAAc,WAChB,OAAO,EAAKhB,YAAY5E,KAAK,SAAOa,GAAI,oC,uCAIpC,IAHMkE,EAASlE,EAAKmE,OAAO,SAAC3C,GACxB,QAAAA,GAAU4C,OAAOC,UAAUC,eAAeC,KAAK/C,EAAS,QAAxD,IAEOgD,OAEP,KAAM,CAAE3D,IAAK,CAAEU,OAAO,EAAMkD,SADNP,EAAO5G,IAAI,SAAAvC,GAAW,OAAAA,EAAQ0J,QAAR,GACQC,S,OAMxD1E,EAAKmE,OAAO,SAAC1D,GAAkC,gBAAWA,CAAX,GAC1CkE,QAAQ,SAAClE,EAAKmE,GACX,EAAKpC,eAAexC,KAAK4E,GAAOC,QAAS,EACzC,EAAKrC,eAAexC,KAAK4E,GAAO7D,MAAQN,EAAIM,KAChD,G,SAEZ,EAEMiE,EAAiB,WACnB,OAAOtE,QAAQG,IAAI,CAAC,EAAKoE,YAAa,EAAKC,iBAAiB/F,KAAK,SAAC,G,QAAA,SAACgG,EAAE,KAAEC,EAAE,KACjE7D,GAAQ,EACNkD,EAAW,G,IACjB,IAAuB,M,ySAAA,EAACU,EAAIC,IAAG,8BAAE,CAA5B,IAAMhG,EAAQ,QACX,UAAWA,GAAYA,EAASmC,QAChCkD,EAAS7G,KAAKwB,EAASqF,UACvBlD,GAAQ,E,mGAGhB,GAAIA,EACA,KAAM,CAAEV,IAAK,CAAEU,MAAK,EAAEkD,SAAUA,EAASC,SAG7C,IAAMW,EAAYF,EACZG,EAAgBF,EAOtB,OALA,EAAK3C,YAAc4C,EAAU1M,SAAW,KACxC,EAAK6K,QAAU6B,EAAU7B,SAAW,CAAC,EAErC,EAAKhB,eAAiB6C,EAAUlH,SAEzB,CAACkH,EAAWC,EACvB,EACJ,EAGMC,EAAqC,SAACD,EAA8B/B,G,MAChEiC,EAAuBF,EAAcG,UAAUC,OAG/CC,EAAmB,IAAIC,IAa7B,GAZAJ,EAAqBb,QAAQ,SAACkB,G,MACpBC,EAAqC,QAAb,EAAAD,EAAEE,mBAAW,eAAE5H,SACzC2H,IAA0BH,EAAiBK,IAAIF,KAC/CH,EAAiBM,IAAIH,GAGf,EAAsBvC,EAAUY,OAAO,SAACrJ,GAAS,OAAAA,EAAKoL,YAAYC,SAASL,EAA1B,GAAiD,GAAhF,GACNM,OAAS,EAAK9C,OAAO+B,UAAUvC,QAAQ,iBAAkBgD,EAAsBhD,QAAQ,UAAW,aAE5H,KAGwB,QAAnB,IAAKN,sBAAc,eAAE4D,QACtB,MAAM,IAAI9G,MAAM,uDAExB,E,+CAGQ+F,EAA+D,KACnEtI,KAAKyF,eAAiBzF,KAAKwG,UAAUY,OAAO,SAAC3C,GAAY,OAAAA,EAAQzG,OAAR,GAAiB,GACpEsL,EAAqC,MAAvBtJ,KAAKyF,eACrBzI,GAAS,EAETsM,EACqB,GAAMrB,KAD3B,M,OACM,kBAAe,SAAsB,IAApCsB,EAAI,KAAEC,EAAI,KAEjBhB,EAAmCgB,EAAMD,EAAK/C,WAG9CxG,KAAK9B,SF5JoB,SAACqK,EAA6BkB,EAAoC/D,GAEvG,IAAM+C,EAA2CF,EAAcG,UAAUC,OACrEe,EAA0BnB,EAAcoB,WAAWC,KAClD1F,MAAM2F,QAAQH,KAA0BA,EAA0B,CAACA,IAExE,IAAMI,EAAoCrB,EACrCrB,OAAO,SAAA0B,GAAK,OAAAA,EAAEiB,YAAF,GACZxJ,IAAI,SAAAuI,GAAC,MAAI,OAAoB,QAApB,EAAAA,EAAEiB,aAAaC,aAAK,eAAEnI,aAAa,GAC5CoI,KAAK,SAACC,GACH,MAAuB,aAAhBA,GAA+C,cAAhBA,CAC1C,GA6EJ,OAnBsBT,EAAiBlJ,IAAI,SAAC4J,GACxC,IAAIjJ,EAAmBiJ,EAIvB,IAHIC,OAAO1E,IAAgB,MAAQxE,EAAQmJ,WACvCnJ,EAAQmJ,QAbsB,SAACF,GACnC,IAAID,EAMJ,OALAzB,EAAqB3K,KAAK,SAAAwM,GAClBA,EAAMC,UAAUP,QAAUG,EAAWK,YACrCN,EAAeI,EAAMP,aAAaC,MAE1C,GACOE,CACX,CAK0BO,CAA8BN,IAAejJ,EAAQwJ,cAAgBxJ,EAAQyJ,WAE/FR,EAAWE,SAAWF,EAAWK,UAOjC,OALAtJ,EA7Ca,SAACA,GAClBA,EAAQC,KAAOF,EAA4BC,SAAY0J,EACvD,IAAMC,EAAS3J,EAAQC,KACvB,IAAI0J,aAAM,EAANA,EAAQvJ,QAAQuJ,aAAM,EAANA,EAAQrJ,aAAaqJ,aAAM,EAANA,EAAQ1K,MAAM,CAEnD,IAQM2K,EARyBD,EAAOrJ,UAAUjB,IAAI,SAACiD,GACjD,OAAIA,EAAE4F,SAAS,KACP5F,EAAE4F,SAAS,mBAA2B,GACnC,iBAAU5F,EAAC,MAEXA,CAEf,GACiDuH,UAAU3D,OAAO,SAAC5D,GAAa,MAAM,SAANA,GAAsB,SAANA,CAAhB,GAA8BwH,KAAK,KACnH9J,EAAQ+J,mBAAqB,8BAAuBJ,EAAOvJ,KAAI,cAAMwJ,EAAiB,mBAAWD,EAAO1K,KAAI,0BAAkB0K,EAAO3K,WAAU,K,CAEnJ,OAAOgB,CACX,CA4BkBgK,CADVhK,EA9DiB,SAACA,G,QAKhBiK,EAAiBzB,EAAwBtC,OAAO,SAAA9F,G,MAHpC8J,EAId,GAAI9J,EAAK0H,cAA+B,QAAhB,EAAA1H,EAAK0H,mBAAW,eAAEqC,aAJ5BD,EAIiD9J,EAAK0I,OAHpDZ,SAAS,SAAWgC,EAAShC,SAAS,UAAYgC,EAAShC,SAAS,WAIhF,OAAOlI,EAAQiI,YAAYC,SAAS9H,EAAK0H,YAAYqC,SAE7D,GAMA,OALIF,EAAe1D,OACfvG,EAAQoK,gBAAgD,QAA9B,EAAiB,QAAjB,EAAAH,EAAe,UAAE,eAAEnC,mBAAW,eAAEuC,QAE1D/F,QAAQhB,MAAM,0DAEXtD,CACX,CA8CkBsK,CAAiBtK,KAEnBuK,cAAgB/J,EAAgBR,EAAQmJ,QAASP,IAA6B,GACtF5I,EAAQwK,SA5BkB,SAACvB,GAC/B,IAAIwB,EAMJ,OALAlD,EAAqBb,QAAQ,SAAA0C,GACrBA,EAAMC,UAAUP,QAAUG,EAAWK,YACrCmB,EAAMvB,OAAOE,EAAMsB,SAAS5B,OAEpC,GACO2B,CACX,CAoB2BE,CAA0B1B,GAC7CjJ,EAAQ4K,MAAQ,qBF5EK,SAAC9M,EAAe+M,QAAA,IAAAA,IAAAA,GAAA,GAC7C,IAAMC,EAAqBhN,EAAMiN,WAAW,IAAK,KAC5CA,WAAW,IAAK,KAChBA,WAAW,IAAK,KAChBA,WAAW,IAAK,KACrB,OAAIF,EACO,IAAUA,SAASC,GAEnBA,CAEf,CEkE0CE,CAAkBhL,EAAQoK,iBAAiB,IAElEpK,CAMf,GAAGkG,OAAO,SAAClG,GAAgC,UAAGA,aAAO,EAAPA,EAASC,QAAQD,EAAQuK,cAA5B,IACnB,EAC5B,CEmEgCU,CAA0B3C,EAAMnC,OAAO/G,OAAOiJ,EAAKrL,UAAW8B,KAAK0F,aAAe,IAClG1F,KAAKoM,oBAAoBpM,KAAK9B,UAE9BoK,EAAYiB,EACZvJ,KAAKwG,UAAY8B,EAAU9B,UAEtBtC,MAAM2F,QAAuB,QAAf,EAAAL,EAAKG,kBAAU,eAAEC,QAAOJ,EAAKG,WAAWC,KAAO,CAAgB,QAAf,EAAAJ,EAAKG,kBAAU,eAAEC,OAEpF5M,EAA8B,QAArB,EAAe,QAAf,EAAAwM,EAAKG,kBAAU,eAAEC,YAAI,eAAEpJ,OAAO,SAACC,EAAK,G,IAAEuI,EAAW,cACtD,OAAOvI,GAA8B,SAAvBuI,aAAW,EAAXA,EAAahM,OAC/B,EAAGA,G,iBAGW,OAAlB,EAAAgD,KAAkB,GAAM2D,QAAQG,IAC5B9D,KAAKyF,eAAexC,KAAK1C,IAAI,SAAOmD,GAAG,oC,uDAE7B,O,GADNzB,IAAKyB,EAAIzB,KACH,GAAMjC,KAAK0G,YAAYhD,EAAIzB,M,OAFO,UAExC,EAAAoK,KAAM,S,2BAHd,EAAK1G,WAAa,SAOlB3F,KAAK/C,eAAiB+C,KAAK2F,WAAWnF,OAAO,SAACC,EAAK6L,GAAQ,OAAA7L,GAAO6L,EAAID,MAAQ,EAAnB,EAAuB,GAC9ErM,KAAK/C,eAAiB+C,KAAK9C,qBAC3B,GAAM8K,KADN,M,OAGA,OAFA,SAEO,CAAP,EAAO,CACHhE,OAAsD,QAA/C,EAAAhE,KAAKyF,eAAexC,KAAKnF,KAAK,SAACyO,GAAM,OAAAA,EAAEvO,OAAF,UAAU,eAAEgG,QAAS,GACjEhH,OAAM,EACNC,eAAgB+C,KAAK/C,eACrBgG,KAAMjD,KAAKyF,eAAexC,O,OAG9B,SAAM8D,K,OAEN,OAFA,SAEO,CAAP,EAAO,CACH/C,OAAsD,QAA/C,EAAAhE,KAAKyF,eAAexC,KAAKnF,KAAK,SAACyO,GAAM,OAAAA,EAAEvO,OAAF,UAAU,eAAEgG,QAAS,GACjEhH,OAAM,EACNC,eAAgB+C,KAAK/C,iB,6CAKtB+C,KAAKwM,cAAc,G,+BAGrB,YAAA1M,MAAb,W,qBAAsB6D,QAAO,W,0BACzB,GAAI3D,KAAK/C,eAAiB+C,KAAK9C,qBAC3B,MAAO,CAAP,EAAO,IAAIyG,QAAQ,SAAC8I,GAChBA,EAAO,CAACjI,MAAO,oBACnB,IAEJ,IACI,MAAO,CAAP,EAAO,CAAE1E,MAAOE,KAAK0M,gB,CAEzB,MAAOC,GAAK3M,KAAKwM,cAAcG,E,gBAGtB,YAAAC,MAAb,W,qBAAsBjJ,QAAO,W,uDAErB,O,sBAAI3D,KAAK/C,eAAiB+C,KAAK9C,qBACpB,CAAP,EAAO,IAAIyG,QAAQ,SAAC8I,GAChBA,EAAO,CAACjI,MAAO,oBACnB,IAEJ,GAAMxE,KAAK6M,qB,OAQX,OARA,SAQO,CAAP,EAAO,CAAE/I,IANG,CACR1C,SAAUpB,KAAKwG,UACftI,SAAU8B,KAAK9B,SACfuI,QAASzG,KAAKyG,W,yBAKVzG,KAAKwM,cAAc,G,6BAG3B,YAAAA,cAAR,SAAsBG,GAGlB,MAFAnH,QAAQhB,MAAMmI,GAERA,GAAiB,iBAALA,GAAiB,QAASA,EAClCA,EACDA,aAAapK,MACZ,CAAEuB,IAAK,CAAEU,OAAO,EAAMkD,SAAU,CAACiF,EAAEG,WAEnC,CAAEhJ,IAAK,CAAEU,OAAO,EAAMkD,SAAU,CAACpJ,KAAKC,UAAUoO,KAC9D,EAEQ,YAAAI,2BAAR,SAAmCC,EAAwBC,EAAcC,GACrE,OAAKF,EAEAC,EAAKE,UAAU,EAAE,KAAKtL,cAAcuH,SAAS,iBAelD6D,GADAA,GADAA,GADAA,GADAA,EAAOA,EAAKhB,WAAW,OAAQ,MACnBA,WAAW,OAAQ,MACnBA,WAAW,SAAU,MACrBA,WAAW,SAAU,MACrBA,WAAW,QAAS,MACpBkB,UAAUF,EAAKG,QAAQ,kBAAmBH,EAAKG,QAAQF,GAAcA,EAAWzF,QAfpFwF,EAAK7D,SAAS,+CACd5D,QAAQhB,MAAM,mCACdvI,OAAOoR,MAAM,mCACN,IAEJJ,EARgBA,CAmB/B,EAMQ,YAAAjG,UAAR,e,IAAA,OACU1D,EAAoC,QAAzB,EAAmB,QAAnB,EAAAtD,KAAKyF,sBAAc,eAAExC,YAAI,eAAE1C,IAAI,SAACmD,GAC7C,OAAO,IAAIC,QAA2C,SAACC,GAEnD,IAAMoJ,EAAgBtJ,EAAIzB,IAAImH,SAAS,uBAEnCkE,EAAS5J,EAAIzB,IACb+K,IAEIM,EADAjG,OAAOC,UAAUC,eAAeC,KAAK,EAAKjB,OAAQ,YAAc,EAAKA,OAAOgH,QACnED,EAAOvH,QAAQ,OAAQ,YAEvBuH,EAAOvH,QAAQ,OAAQ,aAUxC/D,EAAUsL,EANkB,CACxB3K,QAAS,CAAE,eAAgB,aAC3B6K,KAAM,UACNC,YAAa,YAIZrL,KAAK,SAACU,GAEH,IAAM4K,EAAY,EAAKX,2BAA2BC,EAAelK,EAAM,WACvEc,EAAQ,CAAEI,MAAO0J,GACrB,GACCC,MAAM,SAACnJ,GACJZ,EAAQ,CAAEY,OAAO,EAAMkD,SAAU,CAAC,UAAGlD,EAAK,6BAAqB,EAAK+B,OAAO7C,IAAG,OAClF,EACR,EACJ,GAEA,OAAKJ,EAGMK,QAAQG,IAAIR,GAFZK,QAAQC,QAAQ,CAAC,CAAEY,OAAO,EAAMkD,SAAU,CAAC,2BAG1D,EAEQ,YAAAQ,UAAR,sBAEI,OAAO,IAAIvE,QAAqE,SAACC,GAC7E,IFpGuB3B,EAAaC,EEoGhC0L,EAAU,EAAKrH,OAAO+B,UAS1B,OAPsBsF,EAAQxE,SAAS,wBAE/B/B,OAAOC,UAAUC,eAAeC,KAAK,EAAKjB,OAAQ,YAAc,EAAKA,OAAOgH,UAC5EK,EAAUA,EAAQ7H,QAAQ,iBAAkB,2BFzG7B9D,EE6GN2L,EF7GmB1L,EE6GV,CAAEuL,YAAa,UAAWD,KAAM,eF5G3DrL,MAAMF,EAAKC,GAAME,KAAK,SAACC,GAC1B,GAAIA,EAASG,QAAU,KAAOH,EAASG,QAAU,IAC7C,OAAOH,EAASwL,OAEhB,MAAM,IAAItL,MAAMF,EAASG,OAAOC,WACxC,IEwGaL,KAAK,SAAC0L,GACH,IAAIC,EAAY,EAAKxH,OAAO7C,IAAIyJ,UAAU,EAAK5G,OAAO7C,IAAIsK,YAAY,KAAO,IACzED,EAAUE,WAAW,uBAAyBF,EAAUE,WAAW,gBACnEF,EAAY,EAAKxH,OAAO7C,IAAIyJ,UAAU,EAAK5G,OAAO7C,IAAIsK,YAAY,aAAe,IAGrF,IAAME,EAAoB7G,OAAO8G,KAAKL,EAAO1M,UAAU4J,OAAO9F,MAAM,SAChEhH,EAAW,CAAC,EAChB,IAAIgQ,EAAkB9E,SAAS2E,GAqD3B,MAAM,IAAIxL,MAAM,qCApDhB,IAAM6L,EAAkC/G,OAAOgH,QAAQP,EAAO1M,UAAUb,IAAI,SAAC,EAA6B+N,G,IAA7B,SAACC,EAAe,KAAEC,EAAQ,KAGnGnH,OAAO8G,KAAKK,EAASC,QAAQ7G,QAAQ,SAAC6G,GAClCD,EAASC,OAAOA,GAAQH,cAAgBA,CAC5C,GACAjH,OAAO/G,OAAOkO,EAASC,QAAQ7G,QAAQ,SAAA6G,GACnCA,EAAOtF,YAAcoF,CACzB,GAIArQ,EAAWmJ,OAAOqH,OAAOxQ,EAAUsQ,EAASC,QAO5C,IAAME,EAA0BJ,EAAgBrJ,MAAM,KAAK3E,IAAI,SAACkE,GAC5D,MAAO,CACHF,KAAME,EACNxC,IAAK,EAAKsE,OAAO7C,IAAIqC,QAAQ,EAAKQ,OAAO,YAAa9B,GACtDT,MAAO,KACPhG,QAASuQ,EAAgBrJ,MAAM,KAAKkE,SAAS2E,IAActJ,IAAY,EAAK8B,OAAO,YACnFuB,QAAQ,EAEhB,GAcA,MAZ+B,CAC3B9J,QAASuQ,EAAgBrJ,MAAM,KAAKkE,SAAS2E,GAC7C3M,SAAUkN,EACV/N,IAAK,IAAIF,IACT2F,aAAcqB,OAAOqH,OAAOF,GAC5BrF,YAAaoF,EACblF,OAAQ,KACRpG,KAAM0L,EACNC,gBAAiB,CAAC,EAClBC,SAAU,GAIlB,GAEOzN,EAAD,EAAagN,EAAgBhH,OAAO,SAAC,GAAgB,OAAP,SAAO,GAAQ,GAApD,GACTmC,EAAI,OAAmBuE,GAAM,CAAE1M,SAAQ,EAAElD,SAAQ,EAAEtC,QAASkS,EAAOlS,QAAS2N,KAAM,CAAC,EAAWuF,YAAa,KACjHlL,EAAQyD,OAAOqH,OAAOnF,EAAM,CAAE/C,UAAW4H,IAQjD,GACCT,MAAM,SAACnJ,GAAU,OAAAZ,EAAQ,CAAEY,OAAO,EAAMkD,SAAU,CAAC,UAAGlD,EAAK,6BAAqB,EAAK+B,OAAO+B,UAAS,OAApF,EAC1B,EACJ,EAEQ,YAAAH,aAAR,sBACQ4G,EAAmB/O,KAAKuG,OAAOyI,QAG7BhC,EAAgB+B,EAAiB3F,SAAS,uBAKhD,OAJI4D,GAAiBhN,KAAKuG,OAAOgH,UAC7BwB,EAAmBA,EAAiBhJ,QAAQ,oBAAqB,6BAG9D/D,EAAU+M,EAAkB,CAAEtB,YAAa,UAAWD,KAAM,gBAC9DpL,KAAK,SAAC6M,GACH,IAAMC,EAAU,EAAKnC,2BAA2BC,EAAeiC,EAAM,oBAC/DE,EAAe,WAAiBD,EAAS,CAAEE,SAAS,IAC1D,OAAO9Q,KAAKI,MAAMyQ,GAAcE,aACpC,GACC1B,MAAM,SAACnJ,GACJ,MAAO,CAAGA,OAAO,EAAMkD,SAAU,CAAC,UAAGlD,EAAK,6BAAqB,EAAK+B,OAAOyI,QAAO,MACtF,EACR,EAEQ,YAAA/H,iBAAR,e,EAAA,OACQoC,EAA4B,QAAnB,EAAArJ,KAAKyF,sBAAc,eAAE4D,OAClC,IAAKA,EAAQ,OAAO1F,QAAQ8I,OAAO,CAAEjI,OAAO,EAAMkD,SAAU,CAAC,6BAE7D,IAAMsF,EAAgB3D,EAAOD,SAAS,uBActC,OAbI4D,IAII3D,EAFAhC,OAAOC,UAAUC,eAAeC,KAAKxH,KAAKuG,OAAQ,YAAcvG,KAAKuG,OAAOgH,QAEnElE,EAAOtD,QAAQ,WAAY,YAG3BsD,EAAOtD,QAAQ,WAAY,aAMrC/D,EAAUqH,GACZjH,KAAK,SAACU,GACH,IAAMwM,EAAmB,EAAKvC,2BAA2BC,EAAelK,EAAM,WAKxEyM,EAAqCjR,KAAKI,MAAM,WAAiB4Q,EAAkB,CAAEF,SAAS,KAUpG,OARIG,EAAyBC,KAAK,qBAQ3BD,CACX,GACC5B,MAAM,SAACnJ,GAAU,OAAGA,OAAO,EAAMkD,SAAU,CAAC,UAAGlD,EAAK,yCAAnC,EAC1B,EAEQ,YAAAkI,aAAR,W,MACI,KAAyB,QAApB,EAAA1M,gBAAI,EAAJA,KAAMyF,sBAAc,eAAEsC,KAAK,MAAM,IAAIxF,MAAM,0CAOhD,OAHAvC,KAAKyF,eAAelF,IAAMP,KAAKyP,oBAAoBzP,KAAKyF,eAAesC,KACvE/H,KAAK0P,iCAEE1P,KAAKyF,eAAelF,GAC/B,EAEc,YAAAsM,kBAAd,W,2BAAmClJ,QAAO,W,uDAUtC,OATA3D,KAAKyF,eAAemJ,gBAAkB5O,KAAK2P,uBAAuB3P,KAAKyF,eAAeO,cACtFhG,KAAKkD,cAAwD,QAAzC,EAAAlD,KAAKyF,eAAeO,aAAa4J,gBAAQ,eAAE/N,gBAAiB,KAE1EgO,EAA6B,CAC/B5M,KAAMjD,KAAKyF,eAAexC,KAC1BnD,MAAOE,KAAKyF,eAAelF,IAC3B2C,aAAclD,KAAKkD,cAAgB,IAGvC,GAAM,IAAI4M,EAAaD,GAAaxM,6B,cAApC,S,UAGI,YAAAoM,oBAAR,SAA4BM,GAA5B,WAMUC,EALoB,SAAC5O,GACvB,IAAM6O,EAAU5I,OAAO8G,KAAK/M,GAAUgG,OAAO,SAAA3C,GAAW,OAAAA,EAAQO,SAAS,QAAjB,GAA2B,GACnF,QAAOiL,GAAUA,EAAQ/K,MAAM,KAAK,EACxC,CAEegL,CAAkBH,GAC3B3O,EAAgC2O,EAEhCI,EAAUH,EAAS,UAAGA,EAAM,SAAU,OACtCI,EAAaJ,EAAS,UAAGA,EAAM,YAAa,UAC5CK,EAAUL,EAAS,UAAGA,EAAM,SAAU,OAEtCM,EAAUlP,EAAS+O,GAASC,GAC5BG,EAAOnP,EAAS+O,GAASE,IAAY,GACrCG,EAAuBpP,EAAS+O,GAAS,4BAExC/O,EAAS+O,GAASC,UAClBhP,EAAS+O,GAASE,UAClBjP,EAAS+O,GAASnH,mBAClB5H,EAAS+O,GAAS,yBAClB/O,EAAS+O,GAAS,qBAEzBnQ,KAAKyQ,cAAcH,GACnBtQ,KAAK0Q,eAAeJ,GACpBtQ,KAAK2Q,eAAeJ,GAEpB,IAAMK,EAAU,IAAIvQ,IAEdwQ,EAAe,SAACzM,EAAuE0M,GACzF,IAAMC,EAAa3M,EAAS4E,YACtB7M,EAAK,0BAAmB6U,KACxBC,EAAKF,EAAW5U,IAAMA,EAE5ByU,EAAQ9P,IAAImQ,EAAI,OACTF,GAAU,CACbE,GAAE,EACF9U,GAAE,EACFgE,KAAM2Q,EACNI,MAAO,EAAKC,WAAW/M,EAAS4F,OAAS,EAAKoH,uBAAuBhN,EAAS4F,OAAS5F,EAAS4F,MAChG3E,eAAgB,EAAKgM,mBAAmBjN,EAAS4F,OACjDsH,OAAQ,EAAKH,WAAW/M,EAAS4F,OACjCuH,OAAQ,EAAKC,cAAcT,EAAW7Q,WAAYoQ,IAAY,GAC9DmB,YAAa,EAAKC,mBAAmBX,EAAW7Q,WAAYoQ,GAC5DqB,QAAS,EAAKC,eAAeb,EAAW7Q,WAAYoQ,GACpDuB,QAAS,EAAKC,eAAef,EAAWgB,SAAW,GAAIxB,GACvDvN,MAAOD,EAAagO,EAAW/N,OAC/BgP,SAAU,EAAKC,gBAAgBlB,EAAWiB,UAAY,IACtDE,YAAanB,EAAWiB,SACxB1M,KAAM,KACN6M,SAAU,EAAKC,sBAAsBnB,EAAIT,GACzC6B,WAAW,EACXC,aAAa,EACbC,YAAY,EACZC,cAAe,CAAEC,QAAS,EAAKC,gBAAgBtO,EAAS4F,QACxD1I,KAAM,OAEd,EAEI0P,EAAc,E,WACPF,GACP,IAAM1M,EAAWhD,EAAS+O,GAASW,GAa/B5M,MAAM2F,QAAQzF,GACdA,EAASwD,QAAQ,SAAC+K,GACd9B,EAAa8B,EAAQ7B,EACzB,GAEAD,EAAazM,EAAU0M,E,EAnB/B,IAAK,IAAMA,KAAW1P,EAAS+O,G,EAApBW,GAuBX,OAAOF,CACX,EAEQ,YAAAxE,oBAAR,SAA4BlO,GAExB,OAAIkM,OAAOpK,KAAK0F,aAAe,KAE/B1F,KAAK9B,SAAS0J,QAAQ,SAAC1G,GAAY,OAAAA,EAAQyJ,UAAYzJ,EAAQmJ,OAA5B,GAFQnM,CAK/C,EAEQ,YAAAyR,uBAAR,SAA+BpG,GAC3B,IAAMqJ,EAAWvL,OAAOqH,OAAO,CAAC,EAAGnF,GAGnC,cAFOqJ,EAASnE,cACTmE,EAAS/M,IACT+M,CACX,EAMQ,YAAAlD,+BAAR,e,EAAA,OACUmD,EAAsB,SAACC,G,QACnBC,EAAYD,EAAQ/M,QAAQ,IAAK,KACvC,IAAqC,QAAjC,EAAmB,QAAnB,IAAKN,sBAAc,eAAEO,oBAAY,eAAEH,MAAO,EAAKJ,eAAeO,aAAaH,IAAIkN,GAAY,CAC3F,IAAMC,EAAM,EAAKvN,eAAeO,aAAaH,IAAIkN,GAAWE,SAC5D,OAAO/O,MAAM2F,QAAQmJ,GAAOA,EAAM,CAACA,E,CAGvC,MAAO,EACX,EAEME,EAA4B,SAACC,EAAUC,GAGzC,OAFID,EAAIE,WAAWD,EAAQvS,KAAI,MAAZuS,EAAO,OAASP,EAAoBM,EAAIE,aAAU,IACjEF,EAAIG,QAAQF,EAAQvS,KAAI,MAAZuS,EAAO,OAASP,EAAoBM,EAAIG,UAAO,IACxDF,CACX,EAEmB,QAAnB,EAAApT,KAAKyF,sBAAc,SAAElF,IAAIqH,QAAQ,SAAC2L,G,YAUxBC,EAAcD,EAAYpT,KAAK4F,QAAQ,IAAK,KAC5C0N,GAAgD,QAAjC,EAAmB,QAAnB,IAAKhO,sBAAc,eAAEO,oBAAY,eAAEH,KAAsC,QAAhC,IAAKJ,eAAeO,oBAAY,eAAEH,IAAI2N,GAAe,KAEnH,GAAIC,EAAc,CAKd,GAAIA,EAAaR,SAAU,CACvB,IAAIS,EAAgB,OAAID,EAAaR,WAAQ,GAE7C,GAAIM,EAAY5B,QAAS,CACrB,IAAI,EAAoB,GAExB4B,EAAY5B,QAAQpR,IAAI,SAAC4S,GACjBjP,MAAM2F,QAAQsJ,GACdA,EAAIvL,QAAQ,SAAC+L,GACT,EAAUT,EAA0BS,EAAW,EACnD,GAEA,EAAUT,EAA0BC,EAAK,EAEjD,GAEAO,EAAgBA,EAAcE,OAAO,EAAQjM,O,CAGjD,IAAMkM,EAAa,OAAI,IAAIhL,IAAI6K,KAAc,GACxCnT,IAAI,SAACvC,GAAY,SAAKyI,QAAQzI,EAAb,GACjBoJ,OAAOvH,SAEZ0T,EAAYM,WAAaA,EAAWpM,OAAS,EAAIoM,EAAa,KAI9D,IAAM,EAAgB,CAClB,YACA,OACA,SACA,YACA,UACA,UACA,OACA,UACA,UACA,aACA,QACA,WACA,YACA,eACA,WACA,SACA,YACA,UACA,WACA,MACA,UACA,QAGJ,GAAIN,EAAYM,WAAY,CACxB,IAAMC,EAAuBP,EAAYM,WAAWtT,IAAI,SAACwT,GACrD,OAAO1M,OAAO8G,KAAK4F,GACdvT,OAAO,SAACwT,EAAahW,GAClB,IAAM6J,EAAQ,EAAcoM,UAAU,SAAAxP,GAAW,OAAAA,IAAYzG,CAAZ,GACjD,IAAe,IAAX6J,EAAc,CACd,IAAMqM,EAAe,CAAC,EACtBA,EAAalW,GAAW+V,EAAgB/V,GACxCgW,EAAYnM,GAASqM,C,CAEzB,OAAOF,CACX,EAAG,IAAI9P,MAAMmD,OAAO8G,KAAK4F,GAAiBtM,QAAQ0M,KAAK,OACtD/M,OAAOvH,QAChB,GACA0T,EAAYM,WAAaC,C,EAKjC,GAAIL,EAAaW,YAAa,CAC1B,IAAM,EAAsBX,EAAaW,YACzCb,EAAYc,aAAe,G,eAChBC,G,MACDC,EAAqC,QAAb,IAAKrW,gBAAQ,eAAEqC,IAAI,SAAAiU,GAC7C,GAAIA,EAAerO,OAASmO,EAMxB,MAAO,CACH,CACIlO,MAAO,UACP8K,MAAOsD,EAAeC,UAE1B,CACIrO,MAAO,SACP8K,MAAO,EAAKwD,qBAAqB,EAAoBJ,GAAqBK,QAAU,IAExF,CACIvO,MAAO,SACP8K,MAAO,EAAK0D,qBAAqB,EAAoBN,GAAqBO,WAAa,KAIvG,GACCzN,OAAOzH,IAGR,EAAA4T,EAAYc,cAAaxT,KAAI,eAAI0T,IAAa,G,EA3BlD,IAAK,IAAMD,KAAuB,E,EAAvBA,E,MA8BXf,EAAYc,aAAe,GA8B/B,GA1BIZ,EAAavN,OACbqN,EAAYuB,OAASzN,OAAO/G,OAAOmT,EAAavN,MAAM3F,IAAI,SAAC2F,G,MACjD6O,EAAY7O,EAAKC,KACjB6O,EAAY,CAAC,EACnB,IAAK,IAAMC,KAAYF,EAAW,CAE9B,IAAMR,EAASU,EAASlP,QAAQ,WAAY,OACtCmP,EAAcX,EAAOY,OAAO,GAAGC,cAAgBb,EAAOc,MAAM,GAClEhO,OAAOqH,OAAOsG,IAAS,MAAKE,GAAcH,EAAUE,GAAS,G,CAEjE,OAAOD,CACX,GAEAzB,EAAYf,cAAcsC,OAASvB,EAAYuB,OAAOtU,OAAO,SAACwT,EAAqBhW,GAC/E,IAAMsX,EAAc,KAAKtX,GAEzB,cADOsX,EAAYC,cACZ,UAAGvB,EAAW,YAAI3M,OAAO/G,OAAOgV,GAAatK,KAAK,KAE7D,EAAG,IAEHuI,EAAYf,cAAcgD,YAAcjC,EAAYuB,OAAOtU,OAAO,SAACwT,EAAahW,GAC5E,MAAO,UAAGgW,EAAW,YAAIhW,EAAQyX,cACrC,EAAG,KAIHhC,EAAaiC,KAAM,CACnB,IAAMC,EAAUlC,EAAaiC,KAC7BnC,EAAYoC,QAAU,UAAGA,EAAQR,OAAO,GAAGC,eAAa,OAAGO,EAAQN,MAAM,G,CAIzE5B,EAAamC,WACbrC,EAAYqC,SAAWnC,EAAamC,UAKxCrC,EAAYsC,UAAYpC,EAAaoC,WAAa,KAClDtC,EAAYuC,MAAQrC,EAAaqC,OAAS,KAC1CvC,EAAYwC,aAAetC,EAAasC,cAAgB,KACxDxC,EAAYqC,SAAWnC,EAAamC,UAAY,KAEhDrC,EAAYpO,cAAgB,EAAK6Q,kBAAmBzC,EAAYrC,MAAQqC,EAAYrC,MAAQ,GAAKqC,EAAYvQ,OAC7GuQ,EAAYnO,YAAc,EAAK4Q,kBAAmBzC,EAAYrC,MAAQqC,EAAYrC,MAAQ,GAAKqC,EAAYvQ,M,CAGnH,EACJ,EAEQ,YAAAoO,uBAAR,SAA+BpS,GAC3B,IAAM+E,EAAI,KAAa/E,EAAO,CAAE+I,KAAK,IAMrC,OALAhE,EAAE,QAAQkS,KAAK,WACXlS,EAAE/D,MAAMkW,WAAW,KACvB,GAEAnS,EAAE,QAAQoS,UAAU,eACbpS,EAAEkJ,KAAK,OAClB,EAEQ,YAAA+I,kBAAR,SAA0BhX,EAAegE,GACrC,MAAO,aAAaJ,KAAK5D,IAAmB,MAATgE,CACvC,EAEQ,YAAAqO,mBAAR,SAA2BrS,GACvB,OAAOgB,KAAKgW,kBAAkBhX,IAAUA,EAAMiP,WAAW,IAC7D,EAEQ,YAAAkD,WAAR,SAAmBnS,GACf,MAAO,qBAAqB4D,KAAK5D,EACrC,EAEQ,YAAA0T,gBAAR,SAAwB1T,GACpB,OAAIgB,KAAKmR,WAAWnS,GACN,KAAaA,GACd8D,OAEN9D,CACX,EAEQ,YAAAyR,cAAR,SAAsBH,GAElBA,OADAA,EAAUpM,MAAM2F,QAAQyG,GAAWA,EAAU,CAACA,KAC9CA,EAAS1I,QAAQ,SAAC5J,GACd,GAAIA,EAAQuT,OACR,GAAIvT,EAAQuT,OAAO6E,QAAS,CACxB,IAAMC,EAAO,IAAIC,KAAKtY,EAAQuT,OAAO6E,QAAQpM,OAC7ChM,EAAQuT,OAAOgF,OAAS,CAAC,UAAGF,EAAKG,cAAgB,EAAC,YAAIH,EAAKI,aAAY,YAAIJ,EAAKK,mBAChF1Y,EAAQuT,OAAOvH,MAAQ,gBAASqM,EAAKG,cAAgB,EAAC,YAAIH,EAAKI,aAAY,YAAIJ,EAAKK,iB,MAEjF,GAAI1Y,EAAQuT,OAAOoF,WAAa3Y,EAAQuT,OAAOqF,QAAS,CAC3D,IAAMD,EAAY,IAAIL,KAAKtY,EAAQuT,OAAOoF,UAAU3M,OAC9C4M,EAAU,IAAIN,KAAKtY,EAAQuT,OAAOqF,QAAQ5M,OAE1C6M,EAAqE,IAAzDD,EAAQF,iBAAmBC,EAAUD,kBAEnDI,EAAaF,EAAQJ,cAAgBG,EAAUH,cAAiBK,EAC9DE,EAAUH,EAAQH,aAAeE,EAAUF,aAG7CM,EAAU,GACVD,IACOC,GAAW,IAClBD,IAGJ9Y,EAAQuT,OAAOgF,OACf,CACI,UAAGI,EAAUH,cAAgB,EAAC,YAAIG,EAAUF,aAAY,YAAIE,EAAUD,kBACtE,UAAGE,EAAQJ,cAAgB,EAAC,YAAII,EAAQH,aAAY,YAAIG,EAAQF,mBAIhE1Y,EAAQuT,OAAOvH,MADf8M,GAAa,EACU,UAAGH,EAAUH,cAAgB,EAAC,YAAIG,EAAUF,aAAY,YAAIE,EAAUD,iBAAgB,cAAME,EAAQJ,cAAgB,EAAC,YAAII,EAAQH,aAAY,YAAIG,EAAQF,kBAGzJ,UAAGI,EAAS,0BAAkBF,EAAQJ,cAAgB,EAAC,YAAII,EAAQH,aAAY,YAAIG,EAAQF,iB,MAGzF,IAAI,KAC7BlS,MAAM,mDAGtB,EACJ,EAEQ,YAAAgN,cAAR,SAAsBtR,EAAoBoQ,GAGtC,IAAM0G,EAAc1G,OADpBA,EAAUpM,MAAM2F,QAAQyG,GAAWA,EAAU,CAACA,SACnB,EAAPA,EAASxS,KAAK,SAAC2G,GAC/B,OAAOA,EAAQuE,YAAY7M,KAAO+D,CACtC,GACA,GAAI8W,GAAeA,EAAYzF,OAC3B,OAAOyF,EAAYzF,OAAOvH,KAElC,EAEQ,YAAA0H,mBAAR,SAA2BxR,EAAoBoQ,GAG3C,IAAM0G,EAAc1G,OADpBA,EAAUpM,MAAM2F,QAAQyG,GAAWA,EAAU,CAACA,SACnB,EAAPA,EAASxS,KAAK,SAAC2G,GAC/B,OAAOA,EAAQuE,YAAY7M,KAAO+D,CACtC,GACA,GAAI8W,GAAeA,EAAYzF,OAC3B,OAAOyF,EAAYzF,OAAOgF,MAElC,EAYQ,YAAA7F,eAAR,SAAuBJ,GAAvB,YAsDqBpM,MAAM2F,QAAQyG,GAAWA,EAAU,CAACA,IAC5C1I,QAAQ,SAACqP,GACd,GAAIA,EAAIC,QAAUD,EAAIC,OAAOvF,QAAS,CAClC,IAAM,EAAUsF,EAAIC,OAAOvF,QAC3B,EAAQ1C,KAAO5H,OAAO8G,KAAK,GAAS5N,IAAI,SAACsF,GACrC,IAAMsR,EAAatR,EAAIb,SAAS,kBAChC,GAAId,MAAM2F,QAAQ,EAAQhE,IACtB,OAAO,EAAQA,GAAKtF,IAAI,SAAC4S,G,MACfiE,EAAYjE,EAAInJ,MAChBmJ,EAAInJ,MAC0E,QAA9E,EAAAmJ,EAAI9L,OAAO8G,KAAKgF,GAAK/L,OAAO,SAAC3C,GAAoB,OAACA,EAAQwJ,WAAW,IAApB,GAA0B,WAAG,eAAEjE,MAChFqN,EAAgB,CAClBC,KAAMnE,EAAInK,YAAYqK,UACtBA,UAAWF,EAAInK,YAAYqK,UAC3BkE,eAAgB,EAAK3R,yBAAyBuN,EAAInK,YAAYqK,WAC9DmE,KAAML,EAAa,WAAa,WAChC7D,OAAQ8D,GAGZ,OADID,IAAYE,EAAcI,YAAc,EAAK7R,yBAAyBwR,IACnEC,CACX,GAEA,IAAMD,EAAYD,EACZ,EAAQtR,GAAKmE,MACb,EAAQnE,GAAKwB,OAAO8G,KAAK,EAAQtI,IAAM,IAAImE,MAC3CqN,EAAgB,CAClBC,KAAM,EAAQzR,GAAKmD,YAAYqK,UAC/BA,UAAW,EAAQxN,GAAKmD,YAAYqK,UACpCkE,eAAgB,EAAK3R,yBAAyB,EAAQC,GAAKmD,YAAYqK,WACvEmE,KAAML,EAAa,WAAa,WAChC7D,OAAQ8D,GAGZ,OADID,IAAYE,EAAcI,YAAc,EAAK7R,yBAAyBwR,IACnEC,CAEf,E,CAER,EACJ,EAEQ,YAAAzF,eAAR,SAAuB1R,EAAoBoQ,G,QAEjC0G,EAAc1G,OADpBA,EAAUpM,MAAM2F,QAAQyG,GAAWA,EAAU,CAACA,SACnB,EAAPA,EAASxS,KAAK,SAAC6O,GAAM,OAAAA,EAAE3D,YAAY7M,KAAO+D,CAArB,GACzC,OAAmC,QAA5B,EAAmB,QAAnB,EAAA8W,aAAW,EAAXA,EAAaE,cAAM,eAAEvF,eAAO,eAAE1C,IACzC,EAEQ,YAAA0B,eAAR,SAAuBJ,GACdrM,MAAM2F,QAAQ0G,KACfA,EAAO,CAACA,IAKZA,EAAKhQ,IAAI,SAAAmX,GAAK,OAAAA,CAAA,GACT9P,QAAQ,SAAC5J,GACN,GAAIA,GAAWA,EAAQ6T,QAAS,CAC5B,IAAMA,EAAU7T,EAAQ6T,QAAQ7H,MAAMZ,SAAS,KAC3CpL,EAAQ6T,QAAQ7H,MAAM9E,MAAM,KAAK,GAAGkQ,cACpCpX,EAAQ6T,QAAQ7H,MAAMoL,cAC1BpX,EAAQgM,MAAQ6H,C,MACb,GAAI7T,GAAWA,EAAQ2Z,OAAQ,CAClC,IAAMC,EAAY5Z,EAAQ2Z,OAAOE,cAAchG,QAAQ7H,MAAMZ,SAAS,KAClEpL,EAAQ2Z,OAAOE,cAAchG,QAAQ7H,MAAM9E,MAAM,KAAK,GAAGkQ,cACzDpX,EAAQ2Z,OAAOE,cAAchG,QAAQ7H,MAAMoL,cAEzC0C,EAAc9Z,EAAQ2Z,OAAOI,gBAAgBlG,QAAQ7H,MAAMZ,SAAS,KACtEpL,EAAQ2Z,OAAOI,gBAAgBlG,QAAQ7H,MAAM9E,MAAM,KAAK,GAAGkQ,cAC3DpX,EAAQ2Z,OAAOI,gBAAgBlG,QAAQ7H,MAAMoL,cAEjDpX,EAAQgM,MAAQ,UAAG4N,EAAS,cAAME,E,CAE1C,EACR,EAEQ,YAAAhG,eAAR,SAAuBC,EAAiBxB,GACpC,GAAIA,EACJ,CACI,IAAMyH,EAAmB,SAACC,GAAuB,OAAAA,EAAUna,KAAK,SAAC2G,GAAY,OAAAA,EAAQuE,YAAY7M,KAAO4V,CAA3B,EAA5B,EAC3CmG,EAAWhU,MAAM2F,QAAQ0G,GAAQyH,EAAiBzH,GAAQyH,EAAiB,CAACzH,IAElF,GAAI2H,IAAa,YAAaA,GAAY,WAAYA,GAGlD,OAAOA,EAASlO,K,CAG5B,EAEQ,YAAAiI,gBAAR,SAAwBD,GAsBpB,MArBkD,CAC9C,KAAMrW,EAASwc,KACf,KAAMxc,EAASyc,SACf,KAAMzc,EAAS0c,UACf,KAAM1c,EAAS2c,aACf,KAAM3c,EAAS4c,mBACf,KAAM5c,EAAS6c,SACf,KAAM7c,EAAS8c,YACf,KAAM9c,EAAS+c,gBACf,KAAO/c,EAASgd,SAChB,MAAOhd,EAASid,YAChB,MAAOjd,EAASkd,gBAChB,MAAOld,EAASmd,UAChB,EAAGnd,EAASod,OACZ,EAAGpd,EAASqd,WACZ,EAAGrd,EAASsd,YACZ,EAAGtd,EAASud,eACZ,EAAGvd,EAAS4c,mBACZ,EAAG5c,EAASwd,YAGOnH,IAAa,IACxC,EAEQ,YAAAoH,YAAR,SAAoB9T,GAMhB,MAL4C,CACxC,IAAK,WACL,IAAK,YAGUA,EACvB,EAQQ,YAAA+T,uBAAR,SAA+BC,EAA+C/E,GAA9E,WAII,YAJ0E,IAAAA,IAAAA,EAAA,KAItEA,aAAM,EAANA,EAAQ9M,QAFe,KAGvB8M,EAASA,EAAOpH,UAAU,EAHH,KAG0BA,UAAU,EAAGoH,EAAOvG,YAAY,KAAO,GACjFuG,GAAU,SAGrBlN,OAAOgH,QAAQiL,GAAO1R,QAAQ,SAAC,G,IAAA,SAAC7G,EAAG,KAAEmQ,EAAK,KAC3B,SAAPnQ,EACAwT,GAAUgF,OAAOrI,GAEZhN,MAAM2F,QAAQqH,GACnBA,EAAMtJ,QAAQ,SAAA4R,GACVjF,EAAS,EAAK8E,uBAAuBG,EAAWjF,EACpD,GAE2B,UAAtBxT,EAAIoM,UAAU,EAAE,KACrBoH,EAAS,EAAK8E,uBAAuBnI,EAAOqD,GAEpD,GAEOA,EACX,EAkBQ,YAAAnC,sBAAR,SAA8BqH,EAAgBC,GAA9C,WAMI,GAAIA,GAAqBA,EAAkB,oBAAqB,CAM5D,IAAIC,EAAsBzV,MAAM2F,QAAQ6P,EAAkB,qBACpDA,EAAkB,oBAAoBtS,OAAO,SAAC3C,GAAY,OAAAA,EAAQuE,YAAY,gBAAkByQ,CAAtC,GAC1D,CAACC,EAAkB,qBAAqB5b,KAAK,SAAC2G,GAAY,OAAAA,EAAQuE,YAAY,gBAAkByQ,CAAtC,GAKhE,GAJKvV,MAAM2F,QAAQ8P,IAAuD,iBAAxBA,IAC9CA,EAAsB,CAACA,KAGvBA,aAAmB,EAAnBA,EAAqBlS,SAAUiS,EAAkB,iBAAkB,CACnE,GAAIxV,MAAM2F,QAAQ6P,EAAkB,kBAAmB,CACnD,IAAME,EAAmBD,aAAmB,EAAnBA,EAAqBpZ,IAAI,SAAAsZ,GAAU,OAAAA,EAAO7Q,YAAY,WAAnB,GACvDzI,IAAI,SAAAuZ,GAAc,OAAAJ,EAAkB,iBAAiB5b,KAAK,SAACic,GAAiB,OAAAA,EAAa/Q,YAAY7M,KAAO2d,CAAhC,EAA1D,GAEvB,OAAI5V,MAAM2F,QAAQ+P,GACSA,EAAiBrZ,IAAI,SAAA4R,GACxC,OAAO,EAAKkH,uBAAuBlH,GAAY,CAAC,EACpD,GACsBnH,KAAK,QAEpBhL,KAAKqZ,uBAAuBO,GAAoB,CAAC,E,CAG5D,OAAO5Z,KAAKqZ,uBAAuBK,EAAkB,kBAAoB,CAAC,E,EAItF,OAAO,IACX,EA0CQ,YAAAhF,qBAAR,SAA6BC,GACzB,OAAIA,EAAS,EACF,0BAAmBA,EAAOqF,QAAQ,GAAE,KACtCrF,EAAS,EACP,kCAA2BA,EAAOqF,QAAQ,GAAE,KAE5C,gBACf,EAEQ,YAAApF,qBAAR,SAA6BxY,GACzB,OAAIA,EACOA,EAAO2J,QAAQ,IAAK,KAExB,gBACX,EACJ,EA3pCA,GCLAkU,KAAKC,UAAY,SAAC,G,IAAEjL,EAAI,OACdkL,EAAgB,IAAIC,EAAcnL,GACxCkL,EAAchY,QACTC,KAAK,SAAC6M,GAAS,OAAAgL,KAAKI,YAAYpL,EAAjB,GACf7M,KAAK,WAAM,OAAA+X,EAAcra,OAAd,GACXsC,KAAK,SAAC6M,GAAS,OAAAgL,KAAKI,YAAYpL,EAAjB,GACf7M,KAAK,WAAM,OAAA+X,EAAcvN,OAAd,GACXxK,KAAK,SAAC6M,GAAS,OAAAgL,KAAKI,YAAYpL,EAAjB,GACftB,MAAM,SAAChB,GAAM,OAAA2N,WAAW,WAAQ,MAAM,IAAI/X,MAAMjE,KAAKC,UAAUoO,GAAI,EAAtD,EACtB,C,GChCI4N,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB7P,IAAjB8P,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CAGjDE,QAAS,CAAC,GAOX,OAHAE,EAAoBJ,GAAUG,EAAQA,EAAOD,QAASH,GAG/CI,EAAOD,OACf,CAGAH,EAAoBpa,EAAIya,EAGxBL,EAAoBjO,EAAI,KAGvB,IAAIuO,EAAsBN,EAAoBO,OAAEnQ,EAAW,CAAC,IAAI,KAAM,IAAO4P,EAAoB,OAEjG,OADsBA,EAAoBO,EAAED,IVhCzCvf,EAAW,GACfif,EAAoBO,EAAI,CAACxG,EAAQyG,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAASC,EAAI,EAAGA,EAAI9f,EAASkM,OAAQ4T,IAAK,CAGzC,IAFA,IAAKL,EAAUC,EAAIC,GAAY3f,EAAS8f,GACpCC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAASvT,OAAQ8T,MACpB,EAAXL,GAAsBC,GAAgBD,IAAa7T,OAAO8G,KAAKqM,EAAoBO,GAAGS,MAAOza,GAASyZ,EAAoBO,EAAEha,GAAKia,EAASO,KAC9IP,EAASS,OAAOF,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACb/f,EAASkgB,OAAOJ,IAAK,GACrB,IAAIvS,EAAImS,SACErQ,IAAN9B,IAAiByL,EAASzL,EAC/B,CACD,CACA,OAAOyL,CAnBP,CAJC2G,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAI9f,EAASkM,OAAQ4T,EAAI,GAAK9f,EAAS8f,EAAI,GAAG,GAAKH,EAAUG,IAAK9f,EAAS8f,GAAK9f,EAAS8f,EAAI,GACrG9f,EAAS8f,GAAK,CAACL,EAAUC,EAAIC,IWJ/BV,EAAoBkB,EAAI,CAACf,EAASgB,KACjC,IAAI,IAAI5a,KAAO4a,EACXnB,EAAoBoB,EAAED,EAAY5a,KAASyZ,EAAoBoB,EAAEjB,EAAS5Z,IAC5EsG,OAAOwU,eAAelB,EAAS5Z,EAAK,CAAE+a,YAAY,EAAMlb,IAAK+a,EAAW5a,MCJ3EyZ,EAAoBuB,EAAI,CAAC,EAGzBvB,EAAoB7N,EAAKqP,GACjBrY,QAAQG,IAAIuD,OAAO8G,KAAKqM,EAAoBuB,GAAGvb,OAAO,CAAC8C,EAAUvC,KACvEyZ,EAAoBuB,EAAEhb,GAAKib,EAAS1Y,GAC7BA,GACL,KCNJkX,EAAoB9C,EAAKsE,GAEZA,EAAU,WAAa,CAAC,IAAM,uBAAuB,IAAM,wBAAwBA,GAAW,UCF3GxB,EAAoByB,SAAYD,MCDhCxB,EAAoBoB,EAAI,CAACM,EAAKnX,IAAUsC,OAAOC,UAAUC,eAAeC,KAAK0U,EAAKnX,GCClFyV,EAAoB1R,EAAK6R,IACH,oBAAXwB,QAA0BA,OAAOC,aAC1C/U,OAAOwU,eAAelB,EAASwB,OAAOC,YAAa,CAAElL,MAAO,WAE7D7J,OAAOwU,eAAelB,EAAS,aAAc,CAAEzJ,OAAO,KCLvDsJ,EAAoB6B,EAAI,kB,MCIxB,IAAIC,EAAkB,CACrB,IAAK,GAgBN9B,EAAoBuB,EAAEV,EAAI,CAACW,EAAS1Y,KAE/BgZ,EAAgBN,IAElBO,cAAc/B,EAAoB6B,EAAI7B,EAAoB9C,EAAEsE,KAK/D,IAAIQ,EAAqBvC,KAA6B,uBAAIA,KAA6B,wBAAK,GACxFwC,EAA6BD,EAAmB3b,KAAK6b,KAAKF,GAC9DA,EAAmB3b,KAvBCoO,IACnB,IAAK+L,EAAU2B,EAAaC,GAAW3N,EACvC,IAAI,IAAIwL,KAAYkC,EAChBnC,EAAoBoB,EAAEe,EAAalC,KACrCD,EAAoBpa,EAAEqa,GAAYkC,EAAYlC,IAIhD,IADGmC,GAASA,EAAQpC,GACdQ,EAASvT,QACd6U,EAAgBtB,EAAS6B,OAAS,EACnCJ,EAA2BxN,G,KjBnBxBzT,EAAOgf,EAAoBjO,EAC/BiO,EAAoBjO,EAAI,IAChB5I,QAAQG,IAAI,CAClB0W,EAAoB7N,EAAE,KACtB6N,EAAoB7N,EAAE,OACpBvK,KAAK5G,GkBJiBgf,EAAoBjO,G","sources":["webpack://ixviewer-2/webpack/runtime/chunk loaded","webpack://ixviewer-2/webpack/runtime/startup chunk dependencies","webpack://ixviewer-2/./src/ts/interface/fact.ts","webpack://ixviewer-2/./src/ts/constants/constants.ts","webpack://ixviewer-2/./src/ts/helpers/utils.ts","webpack://ixviewer-2/./src/ts/helpers/fact-id-allocator.ts","webpack://ixviewer-2/./src/ts/fetch-merge/merge-data-utils.ts","webpack://ixviewer-2/./src/ts/fetch-merge/prepare-inline-doc.ts","webpack://ixviewer-2/./src/ts/fetch-merge/fetch-merge.ts","webpack://ixviewer-2/./src/ts/workers/workers.ts","webpack://ixviewer-2/webpack/bootstrap","webpack://ixviewer-2/webpack/runtime/define property getters","webpack://ixviewer-2/webpack/runtime/ensure chunk","webpack://ixviewer-2/webpack/runtime/get javascript chunk filename","webpack://ixviewer-2/webpack/runtime/get mini-css chunk filename","webpack://ixviewer-2/webpack/runtime/hasOwnProperty shorthand","webpack://ixviewer-2/webpack/runtime/make namespace object","webpack://ixviewer-2/webpack/runtime/publicPath","webpack://ixviewer-2/webpack/runtime/importScripts chunk loading","webpack://ixviewer-2/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var next = __webpack_require__.x;\n__webpack_require__.x = () => {\n\treturn Promise.all([\n\t\t__webpack_require__.e(870),\n\t\t__webpack_require__.e(585)\n\t]).then(next);\n};","import { Xbrltype, reference } from \"./meta\";\n\nexport type Facts = { key: string, value: SingleFact } & Record;\n\nexport interface SingleFact {\n contextRef: string;\n name: string;\n ix: string;\n id: string;\n value?: string;\n isAmountsOnly: boolean;\n isTextOnly: boolean;\n isNegativeOnly: boolean;\n isHTML: boolean;\n isSelected: boolean;\n period: string;\n periodDates?: string[];\n scale: string | null;\n decimals?: Decimals | null;\n decimalsVal?: number | null;\n sign: string | null;\n footnote: null | string;\n isEnabled: boolean;\n isHighlight: boolean;\n references: Array | null;\n calculations: Array;\n labels: LabelElement[];\n xbrltype: string;\n localname: string;\n nsuri: string;\n presentation: string[];\n raw?: string;\n format?: null | string;\n isAdditional?: boolean;\n isCustom?: boolean;\n file: string | null;\n unitRef?: string;\n measure?: string;\n balance?: Balance;\n segment?: Array;\n isContinued: boolean;\n continuedIDs: Array;\n filterContent: {\n content: string,\n labels: string,\n definitions: string,\n\n }\n \"xsi:nil\"?: string;\n \"xml:lang\"?: string;\n}\n\n/** somehow, an object in fetch-merge metamorphosizes from SingleFact into this */\nexport interface SingleFact2\n{\n name: string;\n segment: [{ dimension: string, axis: string }];\n references: reference[];\n calculations: [{ label: string, value: string }] | [];\n labels: string[];\n filterContent: { labels: string; definitions: string; };\n balance: string;\n xbrltype: Xbrltype | null;\n localname: string | null;\n nsuri: string | null;\n presentation: string[] | null | undefined;\n}\n\nexport enum Balance {\n Credit = \"Credit\",\n Debit = \"Debit\",\n}\n\nexport interface Calculation {\n label: LabelEnum;\n value: string;\n}\n\nexport enum LabelEnum\n{\n Balance = \"Balance\",\n Parent = \"Parent\",\n Section = \"Section\",\n Weight = \"Weight\",\n}\n\nexport enum Decimals\n{\n Tens = \"Tens\",\n Hundreds = \"Hundreds\",\n Thousands = \"Thousands\",\n TenThousands = \"Ten Thousands\",\n HundredThousands = \"Hundred Thousands\",\n Millions = \"Millions\",\n TenMillions = \"Ten Millions\",\n HundredMillions = \"Hundred Millions\",\n Billions = \"Billions\",\n TenBillions = \"Ten Billions\",\n HundredBillions = \"Hundred Billions\",\n Trillions = \"Trillions\",\n\n Tenths = \"Tenths\",\n Hundredths = \"Hundredths\",\n Thousandths = \"Thousandths\",\n TenThousandths = \"Ten Thousandths\",\n HundredThousandths = \"Hundred Thousandths\",\n Millionths = \"Millionths\",\n}\n\nexport interface LabelElement {\n Documentation: string;\n Label: string;\n \"Terse Label\"?: string;\n \"Verbose Label\"?: string;\n \"Negated Terse Label\"?: string;\n \"Total Label\"?: string;\n \"Negated Label\"?: string;\n \"Period End Label\"?: string;\n \"Period Start Label\"?: string;\n \"Negated Period End Label\"?: string;\n \"Negated Period Start Label\"?: string;\n \"Negated Total Label\"?: string;\n}\n\n// TODO: ask knowledge bearers if we maybe we create distint orders for each taxonomy body (fasb, sec, etc...) as they each probably have their own properties.\nexport interface Reference {\n Publisher: string;\n Name: string;\n Number?: string;\n IssueDate?: string;\n Chapter?: string,\n Article?: string;\n Note?: string;\n Section?: string;\n Subsection?: string;\n Topic?: string;\n SubTopic?: string;\n Paragraph?: string;\n Subparagraph?: string;\n Clause?: string,\n Subclause?: string,\n Example?: string,\n Page?: string,\n Exhibit?: string,\n Footnote?: string,\n Sentence?: string;\n URI?: string;\n URIDate?: string,\n}\n\ninterface RefProp {\n string: string,\n}\nexport interface ReferenceAsArray {\n ReferenceMember: Array\n}\n\nexport interface SegmentClass {\n axis?: string;\n dimension: string;\n dimensionLabel: string;\n type: string;\n member: null; // value\n memberLabel?: string;\n}\n","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport { Reference } from \"../interface/fact\";\nimport { FormInformation } from \"../interface/form-information\";\nimport { InlineFileMeta, InstanceFile } from \"../interface/instance-file\";\nimport { Section } from \"../interface/meta\";\n\n//Not really used (see comment below)\ntype MetaDocument = any;\n\nexport const Constants = {\n\tversion: \"26.2\",\n\tfeatureSet: \"plus\",\n\tappStart: 0,\n\tloadPhaseComplete: 0,\n\n\tappWindow: (() => {\n\t\tif (typeof window == 'undefined') return {} as Window;\n\t\t// redirect iframe\n\t\tif (!!window.frameElement && window.frameElement.id === \"ixvFrame\") {\n\t\t\treturn window.parent;\n\t\t}\n\t\t// Note: workstation iframe has id \"dispDocFrame\", I don't think we need to handle it though since the iframe\n\t\t// in that cases seems intended to work as \"subwindow\" and links should open in the iframe (?)\n\t\treturn window;\n\t})(),\n\n\tloadedViaRedirect: (() => {\n\t\tif (typeof window == 'undefined') return false;\n\t\t// redirect iframe\n\t\tif (!!window.frameElement && window.frameElement.id === \"ixvFrame\") {\n\t\t\treturn true;\n\t\t}\n\t})(),\n\n\t// holds array of objects { perfMetric, moduleTime, totalElapsedTime }\n\tperfTableJs: [] as object[],\n\tperfTableDom: [] as object[],\n\telapsedPerfTable: [] as object[],\n\tdiscretePerfTable: [] as object[],\n\tlogPerfParam: false,\n\n\tunused: 'test',\n\taxesCount: 0,\n\tmembersCount: 0,\n\tmemberLimit: 750, // too many affects search index performance and eats a lot of mem\n\n\tgetSearchCriteria: {} as { options: { indexOf: (x: any) => number }, regex: RegExp },\n\n\tisNcsr: false,\n\tsumOfDocsSizes: 0,\n\tdocSizeFallbackLimit: 70 * 1000000,\n\n\tscrollPosition: typeof window !== 'undefined' && window.localStorage.getItem(\"scrollPosition\") || \"start\",\n\n\thoverOption: typeof window !== 'undefined' && window.localStorage.getItem(\"hoverOption\") === \"true\" || false,\n\n\tgetHTMLAttributes: {} as Record,\n\n\tgetPaginationPerPage: 10,\n\n\tfactCount: null as string | null,\n\n\tgetMetaSourceDocuments: [] as string[],\n\n\tgetMetaTags: [] as unknown[],\n\n\tgetInstances: [] as InstanceFile[],\n\n\tgetCurrentInstance: () => {\n\t\treturn Constants.getInstances.find(inst => inst.current);\n\t},\n\n\tgetInlineFiles: [] as InlineFileMeta[],\n\n\tsections: [] as Section[],\n\n\tsetSections: (sections: Array): void => {\n\t\tif (sections) {\n\t\t\tConstants.sections = sections;\n\t\t\tsessionStorage.setItem('sections', JSON.stringify(sections));\n\t\t}\n\t},\n\n\tgetSectionsFromSessionStorage: (): Section[] => {\n\t\tconst sectionsFromLocal = sessionStorage.getItem('sections');\n\t\treturn JSON.parse(sectionsFromLocal || '[]') as Section[];\n\t},\n\n\tgetStdRef: {} as Record,\n\n\tgetFormInformation: {} as FormInformation,\n\n\tgetMetaCustomPrefix: null as string | null,\n\n\t//These are never accessed outside of old unit tests\n\tgetMetaDts: null as MetaDocument | null,\n\tgetMetaDocuments: (input: string): MetaDocument | null => {\n\t\tif (input && typeof input === \"string\") {\n\t\t\treturn Constants.getMetaDts && Constants.getMetaDts[input]\n\t\t\t\t? Constants.getMetaDts[input]\n\t\t\t\t: null;\n\t\t}\n\n\t\treturn null;\n\t},\n\n\tgetScrollPosition: (): number => {\n\t\tconst currentScrollPosition = document.getElementById('dynamic-xbrl-form')!.scrollTop as number;\n\t\treturn currentScrollPosition;\n\t},\n\n\tgetNavBarsHeight: (): number => {\n\t\treturn document.querySelector('div[id=\"topNavs\"]')?.offsetHeight || 0;\n\t},\n\n\tsideBarPaginationState: {pageNumber: 0, totalPages: 0},\n\n};\n","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment \n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport DOMPurify from \"dompurify\";\nimport { Constants } from \"../constants/constants\";\nimport { toBottomOfInlineDoc } from \"../pagination/inlineDocPagination\";\n\nexport const cleanSubstring = (orig: string, from: string, to: string) => {\n return orig.substring(orig.search(from), orig.search(to) + to.length);\n}\n\nexport const convertToSelector = (input: string, sanitize = true) => {\n const normalizedSelector = input.replaceAll('/', '-')\n .replaceAll(' ', '-')\n .replaceAll('#', '-')\n .replaceAll('.', '-')\n if (sanitize)\n return DOMPurify.sanitize(normalizedSelector);\n else {\n return normalizedSelector;\n }\n}\n\n// WIP\nexport const xmlToDom = (xmlNode: Node): Node | null => {\n\n if (!PRODUCTION) {\n console.log('node.nodeType', xmlNode.nodeType)\n console.log('node', xmlNode)\n }\n if (xmlNode.nodeType === 1) { // Element node\n const element = document.createElement(xmlNode.nodeName)\n\n // add attributes\n if (xmlNode instanceof Element) {\n for (const attr of xmlNode.attributes) {\n element.setAttributeNS(attr.namespaceURI, attr.nodeName, attr.nodeValue || \"\");\n }\n }\n\n // recursively process child nodes\n for (const child of xmlNode.childNodes) {\n const childNode = xmlToDom(child);\n if (childNode) {\n element.appendChild(childNode);\n }\n }\n\n return element;\n } else if (xmlNode.nodeType === 3) { // Text node\n return document.createTextNode(xmlNode.nodeValue || \"\");\n }\n return null;\n}\n\n// WIP\nexport const findAllTagTypeInMarkupString = (markup: string, openTag: string, closeTag: string) => {\n const allTags: string[] = [];\n\n const startTagRegex = RegExp(openTag, 'gi')\n let startTagResults = startTagRegex.exec(markup);\n const footnoteStartIndices: number[] = [];\n while (startTagResults) {\n footnoteStartIndices.push(startTagResults.index);\n startTagResults = startTagRegex.exec(markup);\n }\n\n const endTagRegex = RegExp(closeTag, 'gi');\n let endTagResults = endTagRegex.exec(markup);\n const footnoteEndIndices: number[] = [];\n while (endTagResults) {\n footnoteEndIndices.push(endTagResults.index + closeTag.length);\n endTagResults = endTagRegex.exec(markup);\n }\n\n footnoteStartIndices.forEach((start, indexInArrayOfStarts) => {\n const pluckedFootnote = markup.substring(start, footnoteEndIndices[indexInArrayOfStarts]);\n allTags.push(pluckedFootnote);\n });\n\n return allTags;\n}\n\nexport function ixScrollTo(sectionElem: HTMLElement): void {\n if (elemNearBottom(sectionElem)) {\n toBottomOfInlineDoc();\n } else {\n sectionElem?.scrollIntoView({ behavior: \"smooth\", block: \"start\", inline: \"nearest\" });\n }\n}\n\n/**\n * Determine if the provided element is within 1vh of the bottom of the screen.\n * @param target The Element to which we should scroll.\n * @param parentElem Not the scrollable parent. Probably the first descendent thereof. Needs to be full-height, non-scrollable.\n * @param scrollableParent An ancestor of `target` that scrolls.\n * @returns boolean\n */\nfunction elemNearBottom(target: HTMLElement, parentElem?: HTMLElement, scrollableParent?: HTMLElement): boolean {\n if (!parentElem) {\n const currentInstance = Constants.getInstances.find(element => element.current);\n const currentXHTML = currentInstance?.docs.find(element => element.current);\n if (currentXHTML?.slug) {\n parentElem = document.querySelector(`section[filing-url=\"${currentXHTML?.slug}\"]`) || undefined;\n }\n }\n if (!scrollableParent) {\n const currentInstance = Constants.getInstances.find(element => element.current);\n const currentXHTML = currentInstance?.docs.find(element => element.current);\n if (currentXHTML?.slug) {\n scrollableParent = document.getElementById('dynamic-xbrl-form') || undefined;\n }\n }\n\n const viewHeight = scrollableParent?.offsetHeight || 0;\n const parentHt = parentElem?.offsetHeight || 0;\n\n let distTopOfTargetToTopOfScrollableParent = 0;\n let currentElement = target;\n\n while (currentElement && currentElement !== parentElem) {\n distTopOfTargetToTopOfScrollableParent += currentElement.offsetTop || 0;\n currentElement = currentElement.offsetParent as HTMLElement;\n }\n\n if (scrollableParent == document.getElementById('dynamic-xbrl-form')) {\n distTopOfTargetToTopOfScrollableParent -= Constants.getNavBarsHeight();\n }\n\n return distTopOfTargetToTopOfScrollableParent > parentHt - viewHeight;\n}\n\nexport function isTruthy(t: T): t is NonNullable {\n return Boolean(t);\n}\n\nexport function actionKeyHandler(event: KeyboardEvent): boolean {\n const defaultActionKeys = ['Enter', 'Space', ' ']\n if (event instanceof KeyboardEvent && !defaultActionKeys.includes(event.key))\n return false;\n\n stopPropPrevDefault(event);\n return true;\n}\n\nexport function stopPropPrevDefault(event: Event): void {\n event.stopPropagation();\n event.preventDefault();\n}\n\n// Generic func that takes array of elements that up/down arrows will nav through\n// WIP\nexport function buildArrowKeyListenerForElems(elemSet: Node[]) : void {\n console.log('elemSet', elemSet)\n elemSet.forEach((elem, index) => {\n elem.addEventListener('keyup', (event) => {\n const keyEvent = event;\n if (keyEvent.key == 'ArrowUp') {\n if (index === 0) {\n (elemSet[elemSet.length - 1] as HTMLElement)?.focus();\n } else {\n (elemSet[index - 1] as HTMLElement).focus();\n }\n }\n if (keyEvent.key == 'ArrowDown') {\n if (index === elemSet.length - 1) {\n (elemSet[0] as HTMLElement).focus();\n } else {\n (elemSet[index + 1] as HTMLElement).focus();\n }\n }\n });\n })\n}\n","import { SingleFact } from \"../interface/fact\";\n\n/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\n\n//For the facts in the HTML that have no IDs...\nexport class FactIdAllocator\n{\n private facts: Map;\n private noIdFactMap: Map> | null = null;\n\n constructor(facts: Map)\n {\n this.facts = facts;\n }\n\n public getId(contextRef?: string | null, name?: string | null): string | null\n {\n if (this.noIdFactMap == null)\n {\n let m = new Map>();\n this.noIdFactMap = [...this.facts.values()]\n .map(({ id, name, contextRef}) => [JSON.stringify({ name, contextRef }), id])\n .reduce((acc, [nameCtxref, id]) =>\n {\n let idList = acc.get(nameCtxref) || [];\n idList.push(id);\n acc.set(nameCtxref, idList);\n\n return acc;\n }, m);\n }\n\n const key = JSON.stringify({ name, contextRef });\n return this.noIdFactMap.get(key)?.shift() || null;\n }\n}\n","import { MetalinksReport, Section, SectionFact } from '../interface/meta';\nimport { convertToSelector } from \"../helpers/utils\";\nimport { FilingSummary, FilingSummReport } from '../interface/filing-summary';\n\n/**\n * Description\n * @param {any} filingSummary:any\n * @param {any} metaLinksReports:any\n * @returns {any} => Flatter array of metalinks reports (section items).\n */\nexport const buildSectionsArrayFlatter = (filingSummary:FilingSummary, metaLinksReports:MetalinksReport[], metaVersion:string) => {\n // 'sections' and 'reports' are synonymous here\n const filingSummaryReports: FilingSummReport[] = filingSummary.MyReports.Report;\n let filingSummaryInputFiles = filingSummary.InputFiles.File;\n if (!Array.isArray(filingSummaryInputFiles)) filingSummaryInputFiles = [filingSummaryInputFiles];\n \n const reportsContainStatements: boolean = filingSummaryReports\n .filter(r => r.MenuCategory)\n .map(r => r.MenuCategory._text?.toLowerCase())\n .some((menuCategory: string) => {\n return menuCategory == 'statement' || menuCategory == 'statements';\n })\n\n const addInstanceProps = (section: Section) => {\n // Get Doc Name for instance header for sections\n const isHtmIsh = (fileName: string) => {\n return fileName.includes('.htm') || fileName.includes('.html') || fileName.includes('.xhtml');\n }\n const reportFileInfo = filingSummaryInputFiles.filter(file => {\n if (file._attributes && file._attributes?.original && isHtmIsh(file._text)) {\n return section.instanceHtm.includes(file._attributes.original)\n }\n });\n if (reportFileInfo.length) {\n section.instanceDocName = reportFileInfo[0]?._attributes?.doctype;\n } else {\n console.error(`Cannot find instance file in FilingsSummary inputfiles`);\n }\n return section;\n }\n\n const addFactProps = (section: Section) => {\n section.fact = getFactAttrsFromAnchorProps(section) || undefined;\n const mrFact = section.fact;\n if (mrFact?.file && mrFact?.ancestors && mrFact?.name) {\n // if an ancestor is a fact name eg \"sbs:SbsefOrglStrDescTextBlock\", need to dress as name attribute\n const handleSpecialAncestors = mrFact.ancestors.map((a: string) => {\n if (a.includes(':')) {\n if (a.includes('ix:continuation')) return ''; // skip continuation ancestors\n return `[name=\"${a}\"]`\n } else {\n return a;\n }\n });\n const ancestorsRelevant = handleSpecialAncestors.reverse().filter((a:string) => a !== \"html\" && a !== \"body\").join(' ');\n section.inlineFactSelector = `section[filing-url=\"${mrFact.file}\"] ${ancestorsRelevant} [name=\"${mrFact.name}\"][contextref=\"${mrFact.contextRef}\"]`;\n }\n return section;\n }\n\n const getPositionFromFilingSumm = (metaReport:MetalinksReport) => {\n let pos;\n filingSummaryReports.forEach(fsRep => {\n if (fsRep.ShortName._text === metaReport.shortName) {\n pos = Number(fsRep.Position._text);\n }\n })\n return pos;\n }\n const getMenuCategoryFromFilingSumm = (metaReport:MetalinksReport) => {\n let menuCategory;\n filingSummaryReports.find(fsRep => {\n if (fsRep.ShortName._text === metaReport.shortName) {\n menuCategory = fsRep.MenuCategory._text;\n }\n })\n return menuCategory;\n }\n\n const sectionsArray = metaLinksReports.map((metaReport:MetalinksReport) => {\n let section: Section = metaReport as unknown as Section;\n if (Number(metaVersion) <= 2.1 || !section.menuCat) {\n section.menuCat = getMenuCategoryFromFilingSumm(metaReport) || section.subGroupType || section.groupType;\n }\n if (metaReport.menuCat && metaReport.shortName) {\n section = addInstanceProps(section);\n section = addFactProps(section);\n section.menuCatMapped = mapCategoryName(section.menuCat, reportsContainStatements) || \"\";\n section.position = getPositionFromFilingSumm(metaReport); // as a fallback if there's no \"order\" prop (rare)\n section.domId = `sectionDoc-${convertToSelector(section.instanceDocName, false)}`\n\n return section;\n } else {\n if (!PRODUCTION) {\n console.warn('Cannot determine Section menuCat');\n }\n }\n }).filter((section): section is Section => !!(section?.fact && section.menuCatMapped));\n return sectionsArray || [];\n}\n\nexport const getFactAttrsFromAnchorProps = (section: Section) => {\n let fact: SectionFact | null = {};\n fact.instance = section.instance; // number\n // fact.menuCat = metaReport.menuCat;\n if (section.uniqueAnchor) {\n fact.name = section.uniqueAnchor.name;\n fact.contextRef = section.uniqueAnchor.contextRef;\n fact.file = section.uniqueAnchor.baseRef;\n fact.ancestors = section.uniqueAnchor.ancestors;\n } else if (section.firstAnchor) {\n fact.name = section.firstAnchor.name;\n fact.contextRef = section.firstAnchor.contextRef;\n fact.file = section.firstAnchor.baseRef;\n fact.ancestors = section.firstAnchor.ancestors;\n } else {\n if (!PRODUCTION) {\n console.warn(`no linkable fact for section ${section.shortName} (no anchor data)`);\n }\n /* DOC: \"As I recall, the reason for the anchors computed during rendering was that \n some internal rendering process detail gets lost that neither filing summary.xml \n nor metalinks.json could preserve (I think it had to do with how chrome will insert \n elements like if they were missing in the input…?), but since I can’t \n remember what that might be (it’s certainly not obvious) go ahead and try.\" -WH email 4/1/2024 \n */\n fact = null;\n }\n return fact;\n}\n\n/**\n * Description\n * @param {string} input: string\n * @returns {string} => (string) mapped menu category name || null\n * @description use only when there are no 'statement' menu categories\n */\nconst mapCategoryName = (input: string, isStandard: boolean): string | null => {\n const lowerCaseKey = input.toLowerCase();\n\n /*\n 'When the FilingSummary does not have any ‘statement’ category reports for an instance, then the following mapping should be used. \n “Reports” is generic and covers all the other things that don’t need their reports grouped into levels of detail. \n “Statements” used to be the general case (2008-2020) but now they are becoming the special case.' - WH Mar 29, 2024\n */\n const noStatementCatNameMap = {\n \"cover\": \"Reports\",\n \"document\": \"Reports\",\n // \"statement\": n/a\n // \"Statements\": n/a\n \"disclosure\": \"Reports\",\n \"notes\": \"Reports\",\n \"policies\": \"Reports\", /* very unlikely to happen */\n \"tables\": \"Reports\", /* very unlikely to happen */\n \"details\": \"Details\",/* example here {baseUrl}/oef24/oef05/out/FilingSummary.htm# */\n \"prospectus\": \"Prospectus\",\n \"rr_summaries\": \"RR Summaries\",/* example here {baseUrl}/oef24/oef13/out/FilingSummary.htm we no longer make fancy menus for these */\n \"fee_exhibit\": \"RR Summaries\",\n \"risk/return\": \"RR Summaries\"\n };\n const standardCatNameMap = {\n \"cover\": \"Cover\",\n \"document\": \"Document & Entity Information\",\n \"statement\": \"Financial Statements\",\n \"statements\": \"Financial Statements\",\n \"disclosure\": \"Notes to the Financial Statements\",\n \"notes\": \"Notes to Financial Statements\", // is \"the\" intentionally omitted? Probably\n \"policies\": \"Accounting Policies\",\n \"tables\": \"Notes Tables\",\n \"details\": \"Notes Details\",\n \"prospectus\": \"Prospectus\",\n \"rr_summaries\": \"RR Summaries\",\n \"fee_exhibit\": \"RR Summaries\",\n \"risk/return\": \"RR Summaries\"\n };\n\n if (isStandard) {\n if (lowerCaseKey in standardCatNameMap) {\n return standardCatNameMap[lowerCaseKey as keyof typeof standardCatNameMap];\n } else {\n if (!PRODUCTION) {\n console.info(`standardCatNameMap doesn't contain key: %c${lowerCaseKey}`, \"color: deepskyblue\");\n }\n return null;\n }\n } else {\n if (lowerCaseKey in noStatementCatNameMap) {\n return noStatementCatNameMap[lowerCaseKey as keyof typeof noStatementCatNameMap];\n } else {\n if (!PRODUCTION) {\n console.info(`noStatementCatNameMap doesn't contain key: %c${lowerCaseKey}`, \"color: deepskyblue\");\n }\n return null;\n }\n }\n};\n\nexport function fetchText(url: string, init?: RequestInit): Promise {\n return fetch(url, init).then((response) => {\n if (!response.ok) {\n throw new Error(response.status.toString());\n }\n\n // Check the response headers to ensure the document is intended to be loaded inline.\n const contentType = response.headers.get(\"content-type\");\n if (!contentType) {\n throw new Error(`Missing Content-Type. URL: ${url}`);\n }\n const permittedContentTypeExpression = /^(application\\/xhtml\\+xml|application\\/xml|text\\/html|text\\/xml)(\\s*;.*)?$/i;\n if (!permittedContentTypeExpression.test(contentType)) {\n throw new Error(`Invalid Content-Type. URL: ${url}, Content-Type: ${contentType}`);\n }\n const contentDisposition = response.headers.get(\"content-disposition\");\n const permittedContentDispositionExpression = /^inline(\\s*;.*)?$/i;\n if (contentDisposition && !permittedContentDispositionExpression.test(contentDisposition)) {\n throw new Error(`Invalid Content-Disposition. URL: ${url}, Content-Disposition: ${contentDisposition}`);\n }\n\n return response.text();\n });\n}\n\nexport function fetchJson(url: string, init?: RequestInit): Promise {\n return fetch(url, init).then((response) => {\n if (response.status >= 200 && response.status <= 299)\n return response.json();\n else\n throw new Error(response.status.toString());\n });\n}\n\nexport function setScaleInfo(scale: string | number | undefined): string | null {\n const scaleOptions: Record = {\n 0: \"Zero\",\n 1: \"Tens\",\n 2: \"Hundreds\",\n 3: \"Thousands\",\n 4: \"Ten thousands\",\n 5: \"Hundred thousands\",\n 6: \"Millions\",\n 7: \"Ten Millions\",\n 8: \"Hundred Millions\",\n 9: \"Billions\",\n 10: \"Ten Billions\",\n 11: \"Hundred Billions\",\n 12: \"Trillions\",\n \"-1\": \"Tenths\",\n \"-2\": \"Hundredths\",\n \"-3\": \"Thousandths\",\n \"-4\": \"Ten Thousandths\",\n \"-5\": \"Hundred Thousandths\",\n \"-6\": \"Millionths\"\n };\n \n return scaleOptions[scale || \"\"] || null;\n}\n","import * as c from \"cheerio\";\nimport { Cheerio, load } from \"cheerio\";\nimport { ILogObj, Logger } from \"tslog\";\nimport { FactIdAllocator } from \"../helpers/fact-id-allocator\";\nimport { XhtmlFileMeta } from \"../interface/instance-file\";\nimport { SingleFact } from \"../interface/fact\";\nimport { setScaleInfo } from \"./merge-data-utils\";\n\n\n/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\n\nexport type XhtmlPrepData = {\n docs: XhtmlFileMeta[];\n facts: Map;\n customPrefix: string\n}\n\nexport type XhtmlPrepResponse = {\n facts: Map;\n xhtml: string;\n}\n\n//TODO: rename this class\nexport class XhtmlPrepper {\n private docs: XhtmlFileMeta[];\n private facts: Map;\n private readonly customPrefix: string;\n private readonly idAllocator: FactIdAllocator;\n\n constructor({ docs, facts, customPrefix }: XhtmlPrepData) {\n this.docs = docs;\n this.facts = facts;\n this.customPrefix = customPrefix;\n this.idAllocator = new FactIdAllocator(this.facts);\n }\n\n public updateFactMapWithDocsData() {\n const promises = [...this.docs]\n .sort((a, b) => +b.current - +a.current)\n .map((doc) =>\n new Promise((resolve) => {\n this.applyElementDataToFact(doc);\n resolve();\n })\n );\n\n return Promise.all(promises);\n }\n\n \n\n private applyElementDataToFact(doc: XhtmlFileMeta) {\n let $ = load(doc.xhtml, {});\n const factElements = Array.from($(`[contextRef]`));\n\n for (let factElem of factElements) {\n const id = $(factElem).attr(\"id\") || this.idAllocator.getId($(factElem).attr('contextref'), $(factElem).attr('name'));\n if (id) {\n this.updateMap(id, $(factElem), doc.slug);\n }\n else {\n const log: Logger = new Logger();\n log.error(`Fact [name] && [contextRef] could not be located in the Map Object.`);\n }\n }\n }\n\n private updateMap(id: string, element: Cheerio, docSlug: string): string {\n const fact = this.facts.get(id);\n if (!fact) {\n console.error(\"Cannot update map -- missing key:\", id);\n return \"\";\n }\n\n this.facts.set(id,\n {\n ...fact,\n raw: element.text(),\n format: element.attr('format') ? element.attr('format') : null,\n isAdditional: element.parents().prop('tagName').toLowerCase().endsWith(':hidden'),\n isCustom: element.attr('name')?.split(':')[0].toLowerCase() === this.customPrefix,\n isAmountsOnly: element.prop('tagName')?.split(':')[1].toLowerCase() === 'nonfraction',\n isTextOnly: element.prop('tagName')?.split(':')[1].toLowerCase() === 'nonnumeric',\n isNegativeOnly: element.attr('sign') === '-',\n sign: (element.attr('sign') === '-') ? \"Negative\" : null,\n file: docSlug,\n scale: setScaleInfo(element.attr('scale')) || \"\",\n continuedIDs: [],\n });\n\n return fact.id;\n }\n}\n","import * as cheerio from 'cheerio';\nimport { Logger, ILogObj } from 'tslog';\nimport * as convert from 'xml-js';\nimport { cleanSubstring, isTruthy } from '../helpers/utils';\nimport { Decimals, Reference, SegmentClass, SingleFact } from '../interface/fact';\nimport { All, ErrorResponse, FMResponse, FetchMergeArgs } from '../interface/fetch-merge';\nimport { FilingSummary } from '../interface/filing-summary';\nimport { FormInformation } from '../interface/form-information';\nimport { UnitsAdditional } from '../interface/instance';\nimport { Context, DeiAmendmentFlagAttributes, Instance, LinkFootnote, LinkFootnoteArc, LinkLOC, Units } from '../interface/instance';\nimport { InstanceFile, MetaLinks, MetaLinksResponse, XhtmlFileMeta } from '../interface/instance-file';\nimport { Calculation, Meta, Section } from '../interface/meta';\nimport { UrlParams } from '../interface/url-params';\nimport { XhtmlPrepData, XhtmlPrepper } from './prepare-inline-doc';\nimport { buildSectionsArrayFlatter, fetchJson, fetchText, setScaleInfo } from './merge-data-utils';\n\n/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\n\n/* eslint-disable @typescript-eslint/ban-types */\n\ntype DocMeta = {\n url: string;\n size: number | null;\n}\n\nexport class FetchAndMerge {\n private absolute: string;\n private params: UrlParams;\n private customPrefix: string | null;\n private activeInstance: InstanceFile = {} as any;\n private std_ref;\n private sections: Array = [];\n private metaVersion: string | null = null;\n private instances: InstanceFile[];\n private sumOfDocsSizes: number;\n private docSizeFallbackLimit: number;\n\n constructor(input: FetchMergeArgs) {\n this.absolute = input.absolute;\n this.params = input.params;\n this.customPrefix = input.customPrefix || null;\n this.instances = input.instance ?? [];\n this.std_ref = input.std_ref;\n this.sumOfDocsSizes = 0;\n this.docSizeFallbackLimit = input.docSizeFallbackLimit\n }\n\n activeDocs: DocMeta[] = [];\n\n async fetchLength(url: string): Promise {\n const res = await fetch(url, { method: \"HEAD\" });\n const lengthHeader = res.headers.get(\"content-length\");\n return lengthHeader ? parseInt(lengthHeader, 10) : null;\n }\n\n public async fetch(): Promise {\n const docsAndInstance = () => {\n return Promise.all([this.fetchDocs(), this.fetchInstanceXml()]).then(async ([docs, instXml]) => {\n const errors = [...docs, instXml].filter((element): element is ErrorResponse =>\n element ? Object.prototype.hasOwnProperty.call(element, 'error') : false);\n\n if (errors.length) {\n const errorMessages = errors.map(current => current.messages);\n throw { all: { error: true, messages: errorMessages.flat() } };\n }\n\n //At this point, neither of the responses had errors, so we can safely cast them\n docs = docs as Array<{ xhtml: string }>;\n instXml = instXml as Instance;\n\n docs.filter((doc): doc is { xhtml: string } => \"xhtml\" in doc)\n .forEach((doc, index) => {\n this.activeInstance.docs[index].loaded = true;\n this.activeInstance.docs[index].xhtml = doc.xhtml;\n });\n\n this.activeInstance.xml = instXml;\n });\n };\n\n const getJustDocs = () => {\n return this.fetchDocs().then(async (docs) => {\n const errors = docs.filter((element): element is ErrorResponse =>\n element ? Object.prototype.hasOwnProperty.call(element, 'error') : false);\n\n if (errors.length) {\n const errorMessages = errors.map(current => current.messages);\n throw { all: { error: true, messages: errorMessages.flat() } };\n }\n\n //At this point, neither of the responses had errors, so we can safely cast them\n docs = docs as Array<{ xhtml: string }>;\n\n docs.filter((doc): doc is { xhtml: string } => \"xhtml\" in doc)\n .forEach((doc, index) => {\n this.activeInstance.docs[index].loaded = true;\n this.activeInstance.docs[index].xhtml = doc.xhtml;\n });\n });\n };\n\n const metaAndSummary = () => {\n return Promise.all([this.fetchMeta(), this.fetchSummary()]).then(([ml, fs]) => {\n let error = false;\n const messages = [];\n for (const response of [ml, fs]) {\n if (\"error\" in response && response.error) {\n messages.push(response.messages);\n error = true;\n }\n }\n if (error) {\n throw { all: { error, messages: messages.flat() } };\n }\n\n const metalinks = ml as MetaLinks & { instances: InstanceFile[] };\n const filingSummary = fs as FilingSummary;\n\n this.metaVersion = metalinks.version || null;\n this.std_ref = metalinks.std_ref || {} as any;\n\n this.activeInstance = metalinks.instance;\n\n return [metalinks, filingSummary] as const;\n });\n };\n\n /** Sets each instance's `xmlUrl` to the correct value */\n const getInstanceXmlUrlFromFilingSummary = (filingSummary: FilingSummary, instances: InstanceFile[]) => {\n const filingSummaryReports = filingSummary.MyReports.Report;\n \n //track which HTML slugs we've seen already\n const instanceHtmSlugs = new Set(); // stored in filing summary as foo.htm\n filingSummaryReports.forEach((r) => {\n const reportInstanceHtmSlug = r._attributes?.instance;\n if (reportInstanceHtmSlug && !instanceHtmSlugs.has(reportInstanceHtmSlug)) {\n instanceHtmSlugs.add(reportInstanceHtmSlug);\n\n // add xmlUrls to instances\n const [metaInstanceModel] = instances.filter((inst) => inst.instanceHtm.includes(reportInstanceHtmSlug));\n metaInstanceModel.xmlUrl = this.params.metalinks.replace('MetaLinks.json', reportInstanceHtmSlug.replace(/\\.htm$/i, '_htm.xml'));\n }\n });\n\n //At this point, if the active instance has an invalid `xmlUrl`, we cannot continue\n if (!this.activeInstance?.xmlUrl) {\n throw new Error('Could not determine instance URL of active instance.');\n }\n }\n\n try {\n let metalinks: (MetaLinks & { instances: InstanceFile[]}) | null = null;\n this.activeInstance = this.instances.filter((element) => element.current)[0];\n const initialLoad = this.activeInstance == null;\n let isNcsr = false;\n\n if (initialLoad) {\n const [meta, summ] = await metaAndSummary();\n\n getInstanceXmlUrlFromFilingSummary(summ, meta.instances);\n \n // iterate over FilingSummary.xml Reports to build sections, adding data from metalinks\n this.sections = buildSectionsArrayFlatter(summ, Object.values(meta.sections), this.metaVersion || \"\");\n this.setSectionGroupType(this.sections);\n\n metalinks = meta;\n this.instances = metalinks.instances;\n\n if (!Array.isArray(summ.InputFiles?.File)) summ.InputFiles.File = [summ.InputFiles?.File];\n \n isNcsr = summ.InputFiles?.File?.reduce((acc, { _attributes }) => {\n return acc || _attributes?.isNcsr == \"true\";\n }, isNcsr);\n }\n \n this.activeDocs = await Promise.all(\n this.activeInstance.docs.map(async (doc) => ({\n url: doc.url,\n size: await this.fetchLength(doc.url)\n }))\n );\n\n this.sumOfDocsSizes = this.activeDocs.reduce((acc, cur) => acc + (cur.size || 0), 0)\n if (this.sumOfDocsSizes > this.docSizeFallbackLimit) {\n await getJustDocs();\n // this is returned to the webworker\n return {\n xhtml: this.activeInstance.docs.find((x) => x.current)?.xhtml || \"\", \n isNcsr,\n sumOfDocsSizes: this.sumOfDocsSizes,\n docs: this.activeInstance.docs\n };\n } else {\n await docsAndInstance();\n // this is returned to the webworker\n return {\n xhtml: this.activeInstance.docs.find((x) => x.current)?.xhtml || \"\", \n isNcsr,\n sumOfDocsSizes: this.sumOfDocsSizes\n };\n }\n\n }\n catch(e) { this.errorHandling(e) }\n }\n\n public async facts(): Promise {\n if (this.sumOfDocsSizes > this.docSizeFallbackLimit) {\n return new Promise((reject) => {\n reject({error: 'Filing too large'});\n });\n }\n try {\n return { facts: this.buildFactMap() };\n }\n catch (e) { this.errorHandling(e) }\n }\n\n public async merge(): Promise {\n try {\n if (this.sumOfDocsSizes > this.docSizeFallbackLimit) {\n return new Promise((reject) => {\n reject({error: 'Filing too large'});\n });\n }\n await this.mergeAllResponses();\n\n const all = {\n instance: this.instances,\n sections: this.sections,\n std_ref: this.std_ref,\n };\n\n return { all };\n }\n catch (e) { this.errorHandling(e) }\n }\n\n private errorHandling(e: unknown): never { \n console.error(e);\n\n if (!!e && typeof e == \"object\" && \"all\" in e)\n throw e as All;\n else if (e instanceof Error)\n throw { all: { error: true, messages: [e.message] } };\n else\n throw { all: { error: true, messages: [JSON.stringify(e)] } };\n }\n\n private decodeWorkstationXmlInHtml(isWorkstation: boolean, html: string, closingXml: string) {\n if (!isWorkstation) return html; // not running on SEC EDGAR workstation which encodes xml in HTML\n\n if (!html.substring(0,100).toLowerCase().includes(\"\")) {\n if (html.includes(\"EDGAR SEC Workstation Login\")) {\n console.error(\"Workstation requires logging in\");\n window.alert(\"Workstation requires logging in\");\n return \"\";\n }\n return html; // it's xml, not html\n }\n\n // snip extraneous html from beginning and end of response which is present in versions of files on workstation\n // only 5 encodings are used in xml\n html = html.replaceAll('<', '<');\n html = html.replaceAll('>', '>');\n html = html.replaceAll('"', '\"');\n html = html.replaceAll(''', '\\'');\n html = html.replaceAll('&', '&');\n return html.substring(html.indexOf(\" current .htm file (xhtml file) || \"Doc\"\n */\n private fetchDocs(): Promise> {\n const promises = this.activeInstance?.docs?.map((doc: { url: string }) => {\n return new Promise<{ xhtml: string } | ErrorResponse>((resolve) => {\n\n const isWorkstation = doc.url.includes(\"DisplayDocument.do?\");\n\n let ixvUrl = doc.url;\n if (isWorkstation) {\n if (Object.prototype.hasOwnProperty.call(this.params, 'redline') && this.params.redline) {\n ixvUrl = ixvUrl.replace('.htm', '_ix2.htm');\n } else {\n ixvUrl = ixvUrl.replace('.htm', '_ix1.htm');\n }\n }\n\n const params: RequestInit = {\n headers: { \"Content-Type\": \"text/html\" },\n mode: 'no-cors',\n credentials: 'include',\n };\n\n fetchText(ixvUrl, params)\n .then((text) => {\n // on SEC EDGAR workstation xhtml is encoded like this: ... <?xml ...\n const xhtmlData = this.decodeWorkstationXmlInHtml(isWorkstation, text, \"\");\n resolve({ xhtml: xhtmlData });\n })\n .catch((error) => {\n resolve({ error: true, messages: [`${error}; could not find \"${this.params.doc}\"`] });\n });\n });\n });\n\n if (!promises)\n return Promise.resolve([{ error: true, messages: [\"Issue fetching XHTMLs\"] }]);\n else\n return Promise.all(promises);\n }\n\n private fetchMeta(): Promise {\n //TODO: use async/await to simplify this logic\n return new Promise<(MetaLinks & { instances: InstanceFile[] }) | ErrorResponse>((resolve) => {\n let jsonUrl = this.params.metalinks;\n //TODO: use `HelpersUrl.isWorkstation` instead\n const isWorkstation = jsonUrl.includes(\"DisplayDocument.do?\");\n if (isWorkstation) {\n if (Object.prototype.hasOwnProperty.call(this.params, 'redline') && this.params.redline) {\n jsonUrl = jsonUrl.replace('MetaLinks.json', 'PrivateMetaLinks.json');\n }\n }\n\n return fetchJson(jsonUrl, { credentials: 'include', mode: 'same-origin' })\n .then((mlData: MetaLinksResponse) => {\n let XHTMLSlug = this.params.doc.substring(this.params.doc.lastIndexOf('/') + 1);\n if (XHTMLSlug.startsWith(\"DisplayDocument.do\") || XHTMLSlug.startsWith(\"view.html\")) {\n XHTMLSlug = this.params.doc.substring(this.params.doc.lastIndexOf('filename=') + 9);\n }\n\n const instanceFileNames = Object.keys(mlData.instance).join().split(/[ ,]+/);\n let sections = {};\n if (instanceFileNames.includes(XHTMLSlug)) {\n const instanceObjects: InstanceFile[] = Object.entries(mlData.instance).map(([currentInstance, instData], instanceIndex) => {\n // Sections\n //TODO: combine these using `Object.entries`\n Object.keys(instData.report).forEach((report) => {\n instData.report[report].instanceIndex = instanceIndex; // why?\n });\n Object.values(instData.report).forEach(report => {\n report.instanceHtm = currentInstance;\n });\n\n //NOTE: `sections` get reassigned at every step of this loop, is unused in the rest of the logic\n // per loop step, and gets returned (the last value to which it's assigned) once the loop ends\n sections = Object.assign(sections, instData.report);\n\n /* \n if instance key has space, e.g. \n \"doc1.htm doc2.htm\": {...}, \n it is known as multi doc.\n */\n const xhtmls: XhtmlFileMeta[] = currentInstance.split(' ').map((element) => {\n return {\n slug: element,\n url: this.params.doc.replace(this.params['doc-file'], element),\n xhtml: null as any,\n current: currentInstance.split(' ').includes(XHTMLSlug) && element === this.params['doc-file'],\n loaded: false,\n };\n });\n\n const instFile: InstanceFile = {\n current: currentInstance.split(' ').includes(XHTMLSlug),\n instance: instanceIndex, // Why?\n map: new Map(),\n metaInstance: Object.assign(instData),\n instanceHtm: currentInstance,\n xmlUrl: null as any,\n docs: xhtmls,\n formInformation: {} as FormInformation,\n xmlSlugs: [],\n };\n\n return instFile;\n });\n\n const [instance] = instanceObjects.filter(({ current }) => current);\n const meta: MetaLinks = { ...mlData, instance, sections, version: mlData.version, meta: {} as Meta, inlineFiles: [] };\n resolve(Object.assign(meta, { instances: instanceObjects }));\n } else {\n // this may occur when transferring a filing from one domain to another. Not sure how to fix...\n if (!PRODUCTION) {\n console.log('instanceFileNames does not include XHTMLSlug. fetch-merge > fetchMeta())')\n }\n throw new Error('Incorrect MetaLinks.json Instance');\n }\n })\n .catch((error) => resolve({ error: true, messages: [`${error}; could not find \"${this.params.metalinks}\"`] }));\n });\n }\n\n private fetchSummary(): Promise {\n let filingSummXmlUrl = this.params.summary;\n\n //TODO: use the new `isWorkstation` func in HelpersUrl instead\n const isWorkstation = filingSummXmlUrl.includes(\"DisplayDocument.do?\");\n if (isWorkstation && this.params.redline) {\n filingSummXmlUrl = filingSummXmlUrl.replace('FilingSummary.xml', 'PrivateFilingSummary.xml');\n }\n\n return fetchText(filingSummXmlUrl, { credentials: 'include', mode: 'same-origin' })\n .then((data) => {\n const xmlData = this.decodeWorkstationXmlInHtml(isWorkstation, data, \"\");\n const convertedXml = convert.xml2json(xmlData, { compact: true });\n return JSON.parse(convertedXml).FilingSummary as FilingSummary;\n })\n .catch((error) => {\n return ({ error: true, messages: [`${error}; could not find \"${this.params.summary}\"`] })\n });\n }\n\n private fetchInstanceXml(): Promise {\n let xmlUrl = this.activeInstance?.xmlUrl;\n if (!xmlUrl) return Promise.reject({ error: true, messages: [\"Issue fetching XML URLs\"] });\n \n const isWorkstation = xmlUrl.includes(\"DisplayDocument.do?\");\n if (isWorkstation) {\n // If methods from HelpersUrl are used here some very strange bugs occur, such as window and localStorage undefined.\n if (Object.prototype.hasOwnProperty.call(this.params, 'redline') && this.params.redline) {\n // private\n xmlUrl = xmlUrl.replace('_htm.xml', '_ht2.xml')\n } else {\n // public\n xmlUrl = xmlUrl.replace('_htm.xml', '_ht1.xml')\n }\n }\n\n //TODO: we used to pass `{ credentials: 'include' }` to `.then()` (which is wrong);\n // should we be passing it to `fetchText`??\n return fetchText(xmlUrl)\n .then((text) => {\n const fetchedXMlString = this.decodeWorkstationXmlInHtml(isWorkstation, text, \"\");\n\n /*\n Parsing with arg {compact: true} results in json being in different order and no longer flat\n */\n const instanceXmlAsJsonCompact: Instance = JSON.parse(convert.xml2json(fetchedXMlString, { compact: true }));\n\n if (instanceXmlAsJsonCompact.xbrl[\"link:footnoteLink\"] && DEBUGJS) {\n const footnotesNode = instanceXmlAsJsonCompact.xbrl[\"link:footnoteLink\"];\n // grab xml data as non compact object so element order is preserved.\n instanceXmlAsJsonCompact.xbrl[\"link:footnoteLink\"].expanded = JSON.parse(convert.xml2json(fetchedXMlString, { compact: false }));\n instanceXmlAsJsonCompact.xbrl[\"link:footnoteLink\"].orderedFootnoteDivs = footnotesNode.expanded.elements[0].elements;\n instanceXmlAsJsonCompact.xbrl[\"link:footnoteLink\"].asXmlString = cleanSubstring(fetchedXMlString, '');\n }\n\n return instanceXmlAsJsonCompact;\n })\n .catch((error) => ({ error: true, messages: [`${error}; could not find \"XML Instance Data\"`] }));\n }\n\n private buildFactMap(): Map {\n if (!this?.activeInstance?.xml) throw new Error(\"Error: Active Instance has no XML data\");\n\n // why set to index [0] ? !!!\n // will this break on multidoc? !!!\n this.activeInstance.map = this.buildInitialFactMap(this.activeInstance.xml);\n this.enrichFactMapWithMetalinksData();\n\n return this.activeInstance.map;\n }\n\n private async mergeAllResponses(): Promise {\n this.activeInstance.formInformation = this.extractFormInformation(this.activeInstance.metaInstance);\n this.customPrefix = this.activeInstance.metaInstance.nsprefix?.toLowerCase() || null;\n \n const prepperData: XhtmlPrepData = {\n docs: this.activeInstance.docs,\n facts: this.activeInstance.map,\n customPrefix: this.customPrefix || \"\",\n };\n\n await new XhtmlPrepper(prepperData).updateFactMapWithDocsData();\n }\n\n private buildInitialFactMap(instanceXml: Instance): Map {\n const getInstancePrefix = (instance: Instance) => {\n const options = Object.keys(instance).filter(element => element.endsWith(':xbrl'))[0];\n return options ? options.split(':')[0] : false;\n };\n\n const prefix = getInstancePrefix(instanceXml);\n const instance: Record = instanceXml;\n\n const xbrlKey = prefix ? `${prefix}:xbrl` : 'xbrl';\n const contextKey = prefix ? `${prefix}:context` : 'context';\n const unitKey = prefix ? `${prefix}:unit` : 'unit';\n\n const context = instance[xbrlKey][contextKey];\n const unit = instance[xbrlKey][unitKey] || [];\n const instanceFootnoteData = instance[xbrlKey]['link:footnoteLink'];\n\n delete instance[xbrlKey][contextKey];\n delete instance[xbrlKey][unitKey];\n delete instance[xbrlKey]._attributes;\n delete instance[xbrlKey]['link:schemaRef'];\n delete instance[xbrlKey]['link:footnoteLink'];\n\n this.setPeriodText(context);\n this.setSegmentData(context);\n this.setMeasureText(unit);\n\n const factMap = new Map();\n\n const addFactToMap = (factElem: { _attributes: DeiAmendmentFlagAttributes; _text: string; }, tagName: string) => {\n const attributes = factElem._attributes;\n const id = `fact-identifier-${factCounter++}`;\n const ix = attributes.id || id ;\n\n factMap.set(ix, {\n ...attributes,\n ix,\n id,\n name: tagName,\n value: this.isFactHTML(factElem._text) ? this.updateValueToRemoveIDs(factElem._text) : factElem._text,\n isNegativeOnly: this.isFactNegativeOnly(factElem._text),\n isHTML: this.isFactHTML(factElem._text),\n period: this.setPeriodInfo(attributes.contextRef, context) || \"\",\n periodDates: this.setPeriodDatesInfo(attributes.contextRef, context),\n segment: this.setSegmentInfo(attributes.contextRef, context),\n measure: this.setMeasureInfo(attributes.unitRef || \"\", unit),\n scale: setScaleInfo(attributes.scale),\n decimals: this.setDecimalsInfo(attributes.decimals || \"\"),\n decimalsVal: attributes.decimals,\n sign: null, // sign exists as attr in inlineDoc, not instance\n footnote: this.setFootnoteInfoOnFact(ix, instanceFootnoteData),\n isEnabled: true,\n isHighlight: false,\n isSelected: false,\n filterContent: { content: this.getTextFromHTML(factElem._text) },\n file: null,\n });\n }\n\n let factCounter = 0;\n for (const tagName in instance[xbrlKey]) {\n const factElem = instance[xbrlKey][tagName];\n /* example set of tagNames on instance.xbrl\n _attributes\n link:schemaRef\n context\n unit\n dei:DocumentPeriodEndDate\n dei:DocumentType\n dei:EntityRegistrantName\n dei:EntityCommonStockSharesOutstanding\n i09203gd:Content4\n link:footnoteLink\n */\n if (Array.isArray(factElem)) {\n factElem.forEach((factEl: { _attributes: DeiAmendmentFlagAttributes; _text: string; }) => {\n addFactToMap(factEl, tagName);\n });\n } else {\n addFactToMap(factElem, tagName);\n }\n }\n\n return factMap;\n }\n\n private setSectionGroupType(sections: Section[]): Section[] {\n // groupType is used in Metalinks v2.1 (and presumably earlier) and was replaced by menuCat in 2.2\n if (Number(this.metaVersion) < 2.2) return sections;\n\n this.sections.forEach((section) => section.groupType = section.menuCat);\n\n return sections;\n }\n\n private extractFormInformation(meta: Meta): FormInformation {\n const metaCopy = Object.assign({}, meta);\n delete metaCopy.report;\n delete metaCopy.tag;\n return metaCopy as unknown as FormInformation;\n }\n\n /**\n * Description\n * @returns {any} => updates instance fact map (this.activeInstance.map) with data from meta (this.activeInstance.metaInstance)\n */\n private enrichFactMapWithMetalinksData() {\n const getRefFromMetalinks = (concept: string): string[] => {\n const mlConcept = concept.replace(':', '_');\n if (this.activeInstance?.metaInstance?.tag && this.activeInstance.metaInstance.tag[mlConcept]) {\n const ref = this.activeInstance.metaInstance.tag[mlConcept].auth_ref;\n return Array.isArray(ref) ? ref : [ref];\n }\n\n return [];\n }\n\n const addDimensionRefToFactRefs = (seg: any, refKeys: string[]) => {\n if (seg.dimension) refKeys.push(...getRefFromMetalinks(seg.dimension));\n if (seg.member) refKeys.push(...getRefFromMetalinks(seg.member));\n return refKeys;\n }\n\n this.activeInstance?.map.forEach((currentFact: SingleFact) => {\n /* \n @Doc: Fact 'tags' in metalinks.json vs fact 'names' in instance and doc files\n facts are stored in metalinks.json under instance[].tags\n Tags can be concepts or dimensions which are also qNames.\n Some tag names look like:\n dei_AmendmentDescription\n They have underscores, but in the instance and doc files they have colons:\n dei:AmendmentDescription\n */\n const factNameTag = currentFact.name.replace(':', '_');\n const factObjectMl = this.activeInstance?.metaInstance?.tag ? this.activeInstance.metaInstance?.tag[factNameTag] : null;\n\n if (factObjectMl) {\n\n /* add references (if any) to each individual fact\n including references via any dimension [name]\n including references via any member [name] */\n if (factObjectMl.auth_ref) {\n let referenceKeys = [...factObjectMl.auth_ref];\n\n if (currentFact.segment) {\n let refKeys: string[] = [];\n\n currentFact.segment.map((seg: any) => {\n if (Array.isArray(seg)) {\n seg.forEach((nestedSeg: any) => {\n refKeys = addDimensionRefToFactRefs(nestedSeg, refKeys);\n })\n } else {\n refKeys = addDimensionRefToFactRefs(seg, refKeys);\n }\n })\n\n referenceKeys = referenceKeys.concat(refKeys.flat());\n }\n\n const references = [...new Set(referenceKeys)]\n .map((current) => this.std_ref[current])\n .filter(Boolean);\n\n currentFact.references = references.length > 0 ? references : null;\n\n // this order specifically for Fact References\n // any other key => value will be ignored and not shown to the user\n const requiredOrder = [\n `Publisher`,\n `Name`,\n `Number`,\n `IssueDate`, // listed in xbrl book but not sure if I should add\n `Chapter`,\n `Article`,\n `Note`,\n `Exhibit`,\n `Section`,\n `Subsection`,\n `Topic`,\n `SubTopic`,\n `Paragraph`,\n `Subparagraph`,\n `Sentence`,\n `Clause`,\n `Subclause`,\n `Example`,\n `Footnote`,\n `URI`,\n `URIDate`,\n `role`,\n ];\n\n if (currentFact.references) {\n const refsWithOrderedProps = currentFact.references.map((singleReference: Reference) => {\n return Object.keys(singleReference)\n .reduce((accumulator, current) => {\n const index = requiredOrder.findIndex(element => element === current);\n if (index !== -1) {\n const returnObject = {};\n returnObject[current] = singleReference[current];\n accumulator[index] = returnObject;\n }\n return accumulator;\n }, new Array(Object.keys(singleReference).length).fill(null))\n .filter(Boolean);\n });\n currentFact.references = refsWithOrderedProps;\n }\n }\n\n // add calculations (if any) to each individual fact\n if (factObjectMl.calculation) {\n const tempFactCalculation = factObjectMl.calculation;\n currentFact.calculations = [];\n for (const factCalculationProp in tempFactCalculation) {\n const result: Calculation[] = this.sections?.map(sectionElement => {\n if (sectionElement.role === factCalculationProp) {\n /*\n Walter comment: \"Although I traced the root cause to a problem in entry point sbsef-fex, still, \n user actions can cause this.sections to be unbound when switching from one instance to another via the “instance” menu. \n So, this section should probably make sure that this.sections is at least an empty list:\"\n */\n return [\n {\n label: 'Section',\n value: sectionElement.longName,\n },\n {\n label: 'Weight',\n value: this.getCalculationWeight(tempFactCalculation[factCalculationProp].weight || 0),\n },\n {\n label: 'Parent',\n value: this.getCalculationParent(tempFactCalculation[factCalculationProp].parentTag || \"\"),\n },\n ];\n }\n })\n .filter(isTruthy);\n\n //As usual, this is pushing the wrong type onto the array, but it's been working so why fix it :eyeroll:\n currentFact.calculations.push(...result as any);\n }\n } else {\n currentFact.calculations = [];\n }\n\n // add labels (if any) to each individual fact\n if (factObjectMl.lang) {\n currentFact.labels = Object.values(factObjectMl.lang).map((lang) => {\n const oldObject = lang.role;\n const newObject = {} as LabelElement;\n for (const property in oldObject) {\n\n const result = property.replace(/([A-Z])/g, ' $1');\n const finalResult = result.charAt(0).toUpperCase() + result.slice(1);\n Object.assign(newObject, { [finalResult]: oldObject[property] });\n }\n return newObject\n });\n\n currentFact.filterContent.labels = currentFact.labels.reduce((accumulator: string, current) => {\n const tempCurrent = { ...current };\n delete tempCurrent.documentation;\n return `${accumulator} ${Object.values(tempCurrent).join(' ')}`;\n\n }, '');\n\n currentFact.filterContent.definitions = currentFact.labels.reduce((accumulator, current: { Documentation: string; }) => {\n return `${accumulator} ${current.Documentation}`;\n }, '');\n }\n\n // add credit / debit\n if (factObjectMl.crdr) {\n const balance = factObjectMl.crdr;\n currentFact.balance = `${balance.charAt(0).toUpperCase()}${balance.slice(1)}`;\n }\n\n // add xbrltype\n if (factObjectMl.xbrltype) {\n currentFact.xbrltype = factObjectMl.xbrltype;\n }\n\n // add additional info to each individual fact\n //TODO: why aren't these set to \"\" instead of null?\n currentFact.localname = factObjectMl.localname || null as any;\n currentFact.nsuri = factObjectMl.nsuri || null as any;\n currentFact.presentation = factObjectMl.presentation || null as any;\n currentFact.xbrltype = factObjectMl.xbrltype || null as any;\n\n currentFact.isAmountsOnly = this.isFactAmountsOnly((currentFact.value ? currentFact.value : ''), currentFact.scale);\n currentFact.isTextOnly = !this.isFactAmountsOnly((currentFact.value ? currentFact.value : ''), currentFact.scale);\n\n }\n });\n }\n\n private updateValueToRemoveIDs(input: string) {\n const $ = cheerio.load(input, { xml: false });\n $('[id]').each(function () {\n $(this).removeAttr('id');\n });\n // we also wrap the entirety of the html in a simple div\n $('body').wrapInner('');\n return $.html('body');\n }\n\n private isFactAmountsOnly(input: string, scale?: string | null | undefined): boolean {\n return /^-?\\d+\\d*$/.test(input) && scale != null;\n }\n\n private isFactNegativeOnly(input: string) {\n return this.isFactAmountsOnly(input) && input.startsWith('-');\n }\n\n private isFactHTML(input: string) {\n return /<\\/?[a-z][\\s\\S]*>/i.test(input);\n }\n\n private getTextFromHTML(input: string) {\n if (this.isFactHTML(input)) {\n const $ = cheerio.load(input);\n return $.text();\n }\n return input;\n }\n\n private setPeriodText(context: Context[]) {\n context = Array.isArray(context) ? context : [context];\n context?.forEach((current) => {\n if (current.period) {\n if (current.period.instant) {\n const date = new Date(current.period.instant._text);\n current.period._array = [`${date.getUTCMonth() + 1}/${date.getUTCDate()}/${date.getUTCFullYear()}`];\n current.period._text = `As of ${date.getUTCMonth() + 1}/${date.getUTCDate()}/${date.getUTCFullYear()}`;\n\n } else if (current.period.startDate && current.period.endDate) {\n const startDate = new Date(current.period.startDate._text);\n const endDate = new Date(current.period.endDate._text);\n\n const yearDiff = (endDate.getUTCFullYear() - startDate.getUTCFullYear()) * 12;\n\n let monthDiff = (endDate.getUTCMonth() - startDate.getUTCMonth()) + yearDiff;\n const dayDiff = endDate.getUTCDate() - startDate.getUTCDate();\n\n //If the difference in days is more than half a month, round up/down as appropriate\n if (dayDiff > 15) {\n monthDiff++;\n } else if (dayDiff < -15) {\n monthDiff--;\n }\n\n current.period._array =\n [\n `${startDate.getUTCMonth() + 1}/${startDate.getUTCDate()}/${startDate.getUTCFullYear()}`,\n `${endDate.getUTCMonth() + 1}/${endDate.getUTCDate()}/${endDate.getUTCFullYear()}`,\n ];\n\n if (monthDiff <= 0) {\n current.period._text = `${startDate.getUTCMonth() + 1}/${startDate.getUTCDate()}/${startDate.getUTCFullYear()} - ${endDate.getUTCMonth() + 1}/${endDate.getUTCDate()}/${endDate.getUTCFullYear()}`;\n } else {\n //JS counts Jan = UTCMonth-0, so add 1\n current.period._text = `${monthDiff} months ending ${endDate.getUTCMonth() + 1}/${endDate.getUTCDate()}/${endDate.getUTCFullYear()}`;\n }\n } else {\n const log: Logger = new Logger();\n log.error(`\\nFact Period is NEITHER Instant nor Start / End`);\n }\n }\n });\n }\n\n private setPeriodInfo(contextRef: string, context: [Context]) {\n // we go through and find the 'id' in context that equals contextRef\n context = Array.isArray(context) ? context : [context];\n const factContext = context?.find((element) => {\n return element._attributes.id === contextRef;\n });\n if (factContext && factContext.period) {\n return factContext.period._text;\n }\n }\n\n private setPeriodDatesInfo(contextRef: string, context: [Context]) {\n // we go through and find the 'id' in context that equals contextRef\n context = Array.isArray(context) ? context : [context];\n const factContext = context?.find((element) => {\n return element._attributes.id === contextRef;\n });\n if (factContext && factContext.period) {\n return factContext.period._array;\n }\n }\n\n private getTagLabelFromMetalinks = (tag: string) => {\n const mlDimTag = tag.replace(':', '_');\n if (this.activeInstance?.metaInstance?.tag && this.activeInstance.metaInstance.tag[mlDimTag]) {\n let engLang = this.activeInstance.metaInstance.tag[mlDimTag].lang?.['en-us'];\n if (!engLang) engLang = this.activeInstance.metaInstance.tag[mlDimTag].lang?.['en-US'];\n const label = engLang?.role?.label;\n return label || tag;\n }\n }\n \n private setSegmentData(context: Context | undefined) {\n // we want to think of these as aspects of a fact with key value pairs\n // for typed members \n // - it's dimension value will be the type of axis it is\n // - it's member value will be the value on that axis\n // Segment is a container tag for dimensional data.\n // There is only one segment tag for a fact (stored in context), but segment can contain multiple dimension tags\n\n /*\n Example Typed Member as xml\n \n \n \n 1\n \n \n \n\n example in json\n {\n sbs:SbsefTradgSysOrPltfmAxis.domain: {\n _text: '1'\n },\n _attributes: {\n dimension: 'sbs:SbsefTradgSysOrPltfmAxis'\n }\n }\n */\n\n /*\n Example of Explicit Member \n\n xml data:\n \n us-gaap:CommonStockMember\n exch:XCHI\n \n\n json data (first one)\n {\n _attributes: {\n dimension: 'us-gaap:StatementClassOfStockAxis'\n }\n _text: \"us-gaap:CommonStockMember\"\n }\n\n display as:\n (dimension) (member)\n Class of Stock [Axis] Common Stock [Member]\n Entity Listings, Exchange [Axis] NEW YORK STOCK EXCHANGE, INC. [Member]\n\n */\n\n\n const context2 = Array.isArray(context) ? context : [context];\n context2.forEach((ctx) => {\n if (ctx.entity && ctx.entity.segment) {\n const segment = ctx.entity.segment;\n segment.data = Object.keys(segment).map((tag) => {\n const isExplicit = tag.endsWith('explicitMember');\n if (Array.isArray(segment[tag])) {\n return segment[tag].map((seg: { _attributes: { dimension: string; }; _text: string; }) => {\n const memberVal = seg._text\n ? seg._text\n : seg[Object.keys(seg).filter((element: string) => !element.startsWith('_'))[0]]?._text;\n const dimensionData = {\n axis: seg._attributes.dimension,\n dimension: seg._attributes.dimension,\n dimensionLabel: this.getTagLabelFromMetalinks(seg._attributes.dimension),\n type: isExplicit ? 'explicit' : 'implicit',\n member: memberVal\n };\n if (isExplicit) dimensionData.memberLabel = this.getTagLabelFromMetalinks(memberVal);\n return dimensionData;\n });\n } else {\n const memberVal = isExplicit \n ? segment[tag]._text\n : segment[tag][Object.keys(segment[tag])[1]]._text;\n const dimensionData = {\n axis: segment[tag]._attributes.dimension,\n dimension: segment[tag]._attributes.dimension,\n dimensionLabel: this.getTagLabelFromMetalinks(segment[tag]._attributes.dimension),\n type: isExplicit ? 'explicit' : 'implicit',\n member: memberVal\n };\n if (isExplicit) dimensionData.memberLabel = this.getTagLabelFromMetalinks(memberVal);\n return dimensionData;\n }\n });\n }\n });\n }\n\n private setSegmentInfo(contextRef: string, context: Context[]): SegmentClass[] | undefined {\n context = Array.isArray(context) ? context : [context];\n const factContext = context?.find((e) => e._attributes.id === contextRef);\n return factContext?.entity?.segment?.data;\n }\n\n private setMeasureText(unit: Units[]) {\n if (!Array.isArray(unit)) {\n unit = [unit];\n }\n\n //Note: we need to first trick TS into believing a Units is really a UnitsAdditional\n //TODO: have `setMeasureText` take UnitsAdditional instead\n unit.map(u => u as UnitsAdditional)\n .forEach((current: UnitsAdditional) => {\n if (current && current.measure) {\n const measure = current.measure._text.includes(':') ?\n current.measure._text.split(':')[1].toUpperCase() :\n current.measure._text.toUpperCase();\n current._text = measure;\n } else if (current && current.divide) {\n const numerator = current.divide.unitNumerator.measure._text.includes(':') ?\n current.divide.unitNumerator.measure._text.split(':')[1].toUpperCase() :\n current.divide.unitNumerator.measure._text.toUpperCase();\n\n const denominator = current.divide.unitDenominator.measure._text.includes(':') ?\n current.divide.unitDenominator.measure._text.split(':')[1].toUpperCase() :\n current.divide.unitDenominator.measure._text.toUpperCase();\n\n current._text = `${numerator} / ${denominator}`;\n }\n });\n }\n\n private setMeasureInfo(unitRef: string, unit: Units): string | undefined {\n if (unit)\n {\n const findMatchingUnit = (unitArray: Units[]) => unitArray.find((element) => element._attributes.id === unitRef);\n const factUnit = Array.isArray(unit) ? findMatchingUnit(unit) : findMatchingUnit([unit]);\n\n if (factUnit && (\"measure\" in factUnit || \"divide\" in factUnit))\n {\n //Note: I suspect that we want factUnit.[\"measure\" || \"divide\"]._text\n return factUnit._text;\n }\n }\n }\n\n private setDecimalsInfo(decimals: string): Decimals | null {\n const decimalsOptions: Record = {\n \"-1\": Decimals.Tens,\n \"-2\": Decimals.Hundreds,\n \"-3\": Decimals.Thousands,\n \"-4\": Decimals.TenThousands,\n \"-5\": Decimals.HundredThousandths,\n \"-6\": Decimals.Millions,\n \"-7\": Decimals.TenMillions,\n \"-8\": Decimals.HundredMillions,\n \"-9\": Decimals.Billions,\n \"-10\": Decimals.TenBillions,\n \"-11\": Decimals.HundredBillions,\n \"-12\": Decimals.Trillions,\n 1: Decimals.Tenths,\n 2: Decimals.Hundredths,\n 3: Decimals.Thousandths,\n 4: Decimals.TenThousandths,\n 5: Decimals.HundredThousandths,\n 6: Decimals.Millionths,\n };\n\n return decimalsOptions[decimals] || null;\n }\n\n private setSignInfo(sign: string): string | null {\n const signOptions: Record = {\n '-': 'Negative',\n '+': 'Positive',\n };\n \n return signOptions[sign];\n }\n\n /**\n * Description\n * @param {any} ftObj:object\n * @param {any} result?:string|undefined\n * @returns {any} concatenated text from all footnote nodes, joined by a ' '\n */\n private accumulateFootnoteText(ftObj: LinkFootnote | Record, result = \"\") {\n // https://jira.edgar.sec.gov/browse/EDGARDEV-29476\n const truncateFootnoteTo = 100;\n\n if (result?.length > truncateFootnoteTo) {\n result = result.substring(0, truncateFootnoteTo).substring(0, result.lastIndexOf(\" \") + 1);\n return result += ' ...';\n }\n\n Object.entries(ftObj).forEach(([key, value]) => {\n if (key == \"_text\") {\n result += String(value);\n }\n else if (Array.isArray(value)) {\n value.forEach(childNode => {\n result = this.accumulateFootnoteText(childNode, result);\n })\n }\n else if (key.substring(0,6) == \"xhtml:\") {\n result = this.accumulateFootnoteText(value, result);\n }\n });\n\n return result;\n }\n\n /**\n * Description\n * @param {any} id:string\n * @param {any} instanceFootnotes:{\"link:loc\":LinkLOC[]\n * @param {any} \"link:footnote\":LinkFootnote[];\"link:footnoteArc\":LinkFootnoteArc[];}\n * @param {string} asXmlString footnotes part of fetched xml text\n * @returns {any} renderable footnote text (or xml string) to be displayed in fact modal\n * todo: handle incoming footnotes.asXmlString or footnotes.xmlExpanded to show all content (in order) instead of just text\n * todo: handle images, tables, ...other html elements (currently just concatenating text content)\n * the above todos are WIP and are handled when useFetchedFootnoteXmlStrings is set to true.\n */\n\n /*\n Note on Footnotes\n - footnote text is in the instance file (_htm.xml)\n */\n private setFootnoteInfoOnFact(factId: string, instanceFootnotes: {\n \"link:loc\": LinkLOC[],\n \"link:footnote\": LinkFootnote[],\n \"link:footnoteArc\": LinkFootnoteArc[],\n \"asXmlString\": string,\n }) {\n if (instanceFootnotes && instanceFootnotes['link:footnoteArc']) {\n /*\n link:footnoteArc tags are link tags consisting of:\n xlink:from (some fact id) \n xlink:to (some xlink:footnote id that contains actual footnote content.)\n */\n let factFootnoteArcTags = Array.isArray(instanceFootnotes['link:footnoteArc'])\n ? instanceFootnotes['link:footnoteArc'].filter((element) => element._attributes['xlink:from'] === factId ) \n : [instanceFootnotes['link:footnoteArc']].find((element) => element._attributes['xlink:from'] === factId );\n if (!Array.isArray(factFootnoteArcTags) && typeof factFootnoteArcTags === 'object') {\n factFootnoteArcTags = [factFootnoteArcTags];\n }\n\n if (factFootnoteArcTags?.length && instanceFootnotes['link:footnote']) {\n if (Array.isArray(instanceFootnotes['link:footnote'])) {\n const factFootnoteTags = factFootnoteArcTags?.map(arcTag => arcTag._attributes['xlink:to'])\n .map(footnoteId => instanceFootnotes['link:footnote'].find((footnoteElem) => footnoteElem._attributes.id === footnoteId));\n\n if (Array.isArray(factFootnoteTags)) {\n const footnotesTexts = factFootnoteTags.map(footnote => {\n return this.accumulateFootnoteText(footnote || {} as Record);\n });\n return footnotesTexts.join('
');\n } else {\n return this.accumulateFootnoteText(factFootnoteTags || {} as Record);\n }\n } else {\n return this.accumulateFootnoteText(instanceFootnotes['link:footnote'] || {} as Record);\n }\n }\n }\n return null;\n }\n\n private wipFootnoteParser = () => {\n // removed from setFootnoteInfo() for clarity\n // this block is WIP for rendering all div types in footnote cell\n\n // GO FIND PART OF footnotes.xmlString that corresponds to actual footnote\n // return that substring ... so you can render it in fact-pages.ts\n // we only need ' string for each footnote to render\n // find all xml strings and put in array\n // then find the one that matches the xlink:to value with its id\n\n /*\n const startTagRegex = //gi; \n let endTagResults: RegExpExecArray | null = null;\n const footnoteEndIndices:number[] = [];\n while (!!(endTagResults = endTagRegex.exec(instanceFootnotes.asXmlString))) {\n footnoteEndIndices.push(endTagResults.index + ('').length);\n }\n\n const footnotesAsXmlStrings: string[] = [];\n\n footnoteStartIndices.forEach((start, indexInArrayOfStarts) => {\n const pluckedFootnote = instanceFootnotes.asXmlString.substring(start, footnoteEndIndices[indexInArrayOfStarts]);\n footnotesAsXmlStrings.push(pluckedFootnote);\n })\n\n const relevantFootnoteAsXmlString = footnotesAsXmlStrings.find(fn => {\n return fn.indexOf(factFootnoteArcTags._attributes['xlink:to']) != -1;\n })\n\n return relevantFootnoteAsXmlString;\n */\n }\n\n private getCalculationWeight(weight: number) {\n if (weight > 0)\n return `Added to parent(${weight.toFixed(2)})`;\n else if (weight < 0)\n return `Substracted from parent(${weight.toFixed(2)})`;\n else\n return 'Not Available.';\n }\n\n private getCalculationParent(parent: string) {\n if (parent) {\n return parent.replace('_', ':');\n }\n return 'Not Available.';\n }\n}\n","/* Created by staff of the U.S. Securities and Exchange Commission.\n * Data and content created by government employees within the scope of their employment\n * are not subject to domestic copyright protection. 17 U.S.C. 105.\n */\n\nimport { FetchAndMerge } from '../fetch-merge/fetch-merge';\n\n/*\ndata in \nconst fetchAndMergeArgs: FetchMergeArgs = {\n params: HelpersUrl.getAllParams,\n absolute: HelpersUrl.getFolderAbsUrl,\n instance: changeInstance ? Constants.getInstances : null,\n std_ref: Constants.getStdRef,\n};\nFrom docsAndInstance\n- this.activeInstance.xml = instXml]\n- [this.activeInstance.docs]\nfrom metaAndSummary\n- this.metaVersion = metalinks.version || null;\n- this.std_ref = metalinks.std_ref || {} as any;\n- this.activeInstance = metalinks.instance;\n*/\n\nself.onmessage = ({ data }) => {\n const fetchAndMerge = new FetchAndMerge(data);\n fetchAndMerge.fetch()\n .then((data) => self.postMessage(data))\n .then(() => fetchAndMerge.facts())\n .then((data) => self.postMessage(data))\n .then(() => fetchAndMerge.merge())\n .then((data) => self.postMessage(data))\n .catch((e) => setTimeout(() => { throw new Error(JSON.stringify(e)) }));\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n// the startup function\n__webpack_require__.x = () => {\n\t// Load entry module and return exports\n\t// This entry module depends on other loaded chunks and execution need to be delayed\n\tvar __webpack_exports__ = __webpack_require__.O(undefined, [870,585], () => (__webpack_require__(2884)))\n\t__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n\treturn __webpack_exports__;\n};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks and chunks that the entrypoint depends on\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".bundle.\" + {\"585\":\"749f2ec6c2ff200c48cb\",\"870\":\"2be58e7a854ed7626abd\"}[chunkId] + \".min.js\";\n};","// This function allow to reference async chunks and chunks that the entrypoint depends on\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/ixviewer-plus/\";","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"already loaded\"\nvar installedChunks = {\n\t662: 1\n};\n\n// importScripts chunk loading\nvar installChunk = (data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\twhile(chunkIds.length)\n\t\tinstalledChunks[chunkIds.pop()] = 1;\n\tparentChunkLoadingFunction(data);\n};\n__webpack_require__.f.i = (chunkId, promises) => {\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\timportScripts(__webpack_require__.p + __webpack_require__.u(chunkId));\n\t\t}\n\t}\n};\n\nvar chunkLoadingGlobal = self[\"webpackChunkixviewer_2\"] = self[\"webpackChunkixviewer_2\"] || [];\nvar parentChunkLoadingFunction = chunkLoadingGlobal.push.bind(chunkLoadingGlobal);\nchunkLoadingGlobal.push = installChunk;\n\n// no HMR\n\n// no HMR manifest","// run startup\nvar __webpack_exports__ = __webpack_require__.x();\n"],"names":["deferred","next","Balance","LabelEnum","Decimals","version","featureSet","appStart","loadPhaseComplete","appWindow","window","frameElement","id","parent","loadedViaRedirect","perfTableJs","perfTableDom","elapsedPerfTable","discretePerfTable","logPerfParam","unused","axesCount","membersCount","memberLimit","getSearchCriteria","isNcsr","sumOfDocsSizes","docSizeFallbackLimit","scrollPosition","localStorage","getItem","hoverOption","getHTMLAttributes","getPaginationPerPage","factCount","getMetaSourceDocuments","getMetaTags","getInstances","getCurrentInstance","find","inst","current","getInlineFiles","sections","setSections","sessionStorage","setItem","JSON","stringify","getSectionsFromSessionStorage","sectionsFromLocal","parse","getStdRef","getFormInformation","getMetaCustomPrefix","getMetaDts","getMetaDocuments","input","getScrollPosition","document","getElementById","scrollTop","getNavBarsHeight","querySelector","offsetHeight","sideBarPaginationState","pageNumber","totalPages","isTruthy","t","Boolean","facts","noIdFactMap","this","getId","contextRef","name","m","Map","values","map","reduce","acc","nameCtxref","idList","get","push","set","key","shift","getFactAttrsFromAnchorProps","section","fact","instance","uniqueAnchor","file","baseRef","ancestors","firstAnchor","mapCategoryName","isStandard","lowerCaseKey","toLowerCase","noStatementCatNameMap","standardCatNameMap","fetchText","url","init","fetch","then","response","ok","Error","status","toString","contentType","headers","test","contentDisposition","text","setScaleInfo","scale","docs","customPrefix","idAllocator","FactIdAllocator","updateFactMapWithDocsData","promises","sort","a","b","doc","Promise","resolve","applyElementDataToFact","all","$","xhtml","factElements","Array","from","factElem","attr","updateMap","slug","error","element","docSlug","raw","format","isAdditional","parents","prop","endsWith","isCustom","split","isAmountsOnly","isTextOnly","isNegativeOnly","sign","continuedIDs","console","activeInstance","metaVersion","activeDocs","getTagLabelFromMetalinks","tag","mlDimTag","replace","metaInstance","engLang","lang","role","label","wipFootnoteParser","absolute","params","instances","std_ref","fetchLength","method","res","lengthHeader","parseInt","docsAndInstance","fetchDocs","fetchInstanceXml","instXml","errors","filter","Object","prototype","hasOwnProperty","call","length","messages","flat","forEach","index","loaded","xml","getJustDocs","metaAndSummary","fetchMeta","fetchSummary","ml","fs","metalinks","filingSummary","getInstanceXmlUrlFromFilingSummary","filingSummaryReports","MyReports","Report","instanceHtmSlugs","Set","r","reportInstanceHtmSlug","_attributes","has","add","instanceHtm","includes","xmlUrl","initialLoad","meta","summ","metaLinksReports","filingSummaryInputFiles","InputFiles","File","isArray","reportsContainStatements","MenuCategory","_text","some","menuCategory","metaReport","Number","menuCat","fsRep","ShortName","shortName","getMenuCategoryFromFilingSumm","subGroupType","groupType","undefined","mrFact","ancestorsRelevant","reverse","join","inlineFactSelector","addFactProps","reportFileInfo","fileName","original","instanceDocName","doctype","addInstanceProps","menuCatMapped","position","pos","Position","getPositionFromFilingSumm","domId","sanitize","normalizedSelector","replaceAll","convertToSelector","buildSectionsArrayFlatter","setSectionGroupType","size","cur","x","errorHandling","reject","buildFactMap","e","merge","mergeAllResponses","message","decodeWorkstationXmlInHtml","isWorkstation","html","closingXml","substring","indexOf","alert","ixvUrl","redline","mode","credentials","xhtmlData","catch","jsonUrl","json","mlData","XHTMLSlug","lastIndexOf","startsWith","instanceFileNames","keys","instanceObjects","entries","instanceIndex","currentInstance","instData","report","assign","xhtmls","formInformation","xmlSlugs","inlineFiles","filingSummXmlUrl","summary","data","xmlData","convertedXml","compact","FilingSummary","fetchedXMlString","instanceXmlAsJsonCompact","xbrl","buildInitialFactMap","enrichFactMapWithMetalinksData","extractFormInformation","nsprefix","prepperData","XhtmlPrepper","instanceXml","prefix","options","getInstancePrefix","xbrlKey","contextKey","unitKey","context","unit","instanceFootnoteData","setPeriodText","setSegmentData","setMeasureText","factMap","addFactToMap","tagName","attributes","factCounter","ix","value","isFactHTML","updateValueToRemoveIDs","isFactNegativeOnly","isHTML","period","setPeriodInfo","periodDates","setPeriodDatesInfo","segment","setSegmentInfo","measure","setMeasureInfo","unitRef","decimals","setDecimalsInfo","decimalsVal","footnote","setFootnoteInfoOnFact","isEnabled","isHighlight","isSelected","filterContent","content","getTextFromHTML","factEl","metaCopy","getRefFromMetalinks","concept","mlConcept","ref","auth_ref","addDimensionRefToFactRefs","seg","refKeys","dimension","member","currentFact","factNameTag","factObjectMl","referenceKeys","nestedSeg","concat","references","refsWithOrderedProps","singleReference","accumulator","findIndex","returnObject","fill","calculation","calculations","factCalculationProp","result","sectionElement","longName","getCalculationWeight","weight","getCalculationParent","parentTag","labels","oldObject","newObject","property","finalResult","charAt","toUpperCase","slice","tempCurrent","documentation","definitions","Documentation","crdr","balance","xbrltype","localname","nsuri","presentation","isFactAmountsOnly","each","removeAttr","wrapInner","instant","date","Date","_array","getUTCMonth","getUTCDate","getUTCFullYear","startDate","endDate","yearDiff","monthDiff","dayDiff","factContext","ctx","entity","isExplicit","memberVal","dimensionData","axis","dimensionLabel","type","memberLabel","u","divide","numerator","unitNumerator","denominator","unitDenominator","findMatchingUnit","unitArray","factUnit","Tens","Hundreds","Thousands","TenThousands","HundredThousandths","Millions","TenMillions","HundredMillions","Billions","TenBillions","HundredBillions","Trillions","Tenths","Hundredths","Thousandths","TenThousandths","Millionths","setSignInfo","accumulateFootnoteText","ftObj","String","childNode","factId","instanceFootnotes","factFootnoteArcTags","factFootnoteTags","arcTag","footnoteId","footnoteElem","toFixed","self","onmessage","fetchAndMerge","FetchAndMerge","postMessage","setTimeout","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","__webpack_exports__","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","d","definition","o","defineProperty","enumerable","f","chunkId","miniCssF","obj","Symbol","toStringTag","p","installedChunks","importScripts","chunkLoadingGlobal","parentChunkLoadingFunction","bind","moreModules","runtime","pop"],"sourceRoot":""}
\ No newline at end of file
diff --git a/view/ixviewer-plus/dist/ix-viewer.bundle.aef6df27f6d51ef18db7.min.js b/view/ixviewer-plus/dist/ix-viewer.bundle.5d9d64f0c7da126c9e31.min.js
similarity index 99%
rename from view/ixviewer-plus/dist/ix-viewer.bundle.aef6df27f6d51ef18db7.min.js
rename to view/ixviewer-plus/dist/ix-viewer.bundle.5d9d64f0c7da126c9e31.min.js
index c1e60a5c..c3701e3e 100644
--- a/view/ixviewer-plus/dist/ix-viewer.bundle.aef6df27f6d51ef18db7.min.js
+++ b/view/ixviewer-plus/dist/ix-viewer.bundle.5d9d64f0c7da126c9e31.min.js
@@ -1,3 +1,3 @@
-/*! For license information please see ix-viewer.bundle.aef6df27f6d51ef18db7.min.js.LICENSE.txt */
-(()=>{var t={251:(t,e)=>{e.read=function(t,e,n,i,r){var o,a,s=8*r-i-1,l=(1<>1,u=-7,d=n?r-1:0,h=n?-1:1,p=t[e+d];for(d+=h,o=p&(1<<-u)-1,p>>=-u,u+=s;u>0;o=256*o+t[e+d],d+=h,u-=8);for(a=o&(1<<-u)-1,o>>=-u,u+=i;u>0;a=256*a+t[e+d],d+=h,u-=8);if(0===o)o=1-c;else{if(o===l)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,i),o-=c}return(p?-1:1)*a*Math.pow(2,o-i)},e.write=function(t,e,n,i,r,o){var a,s,l,c=8*o-r-1,u=(1<>1,h=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,p=i?0:o-1,f=i?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=u):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+d>=1?h/l:h*Math.pow(2,1-d))*l>=2&&(a++,l/=2),a+d>=u?(s=0,a=u):a+d>=1?(s=(e*l-1)*Math.pow(2,r),a+=d):(s=e*Math.pow(2,d-1)*Math.pow(2,r),a=0));r>=8;t[n+p]=255&s,p+=f,s/=256,r-=8);for(a=a<0;t[n+p]=255&a,p+=f,a/=256,c-=8);t[n+p-f]|=128*g}},1264:t=>{t.exports={trueFunc:function(){return!0},falseFunc:function(){return!1}}},2861:(t,e,n)=>{var i=n(8287),r=i.Buffer;function o(t,e){for(var n in t)e[n]=t[n]}function a(t,e,n){return r(t,e,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=a),a.prototype=Object.create(r.prototype),o(r,a),a.from=function(t,e,n){if("number"==typeof t)throw new TypeError("Argument must not be a number");return r(t,e,n)},a.alloc=function(t,e,n){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=r(t);return void 0!==e?"string"==typeof n?i.fill(e,n):i.fill(e):i.fill(0),i},a.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return r(t)},a.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},3141:(t,e,n)=>{"use strict";var i=n(2861).Buffer,r=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===r||!r(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=l,this.end=c,e=4;break;case"utf8":this.fillLast=s,e=4;break;case"base64":this.text=u,this.end=d,e=3;break;default:return this.write=h,void(this.end=p)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function a(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function s(t){var e=this.lastTotal-this.lastNeed,n=function(t,e){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==n?n:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function l(t,e){if((t.length-e)%2==0){var n=t.toString("utf16le",e);if(n){var i=n.charCodeAt(n.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function c(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,n)}return e}function u(t,e){var n=(t.length-e)%3;return 0===n?t.toString("base64",e):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-n))}function d(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function h(t){return t.toString(this.encoding)}function p(t){return t&&t.length?this.write(t):""}e.I=o,o.prototype.write=function(t){if(0===t.length)return"";var e,n;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0?(r>0&&(t.lastNeed=r-1),r):--i=0?(r>0&&(t.lastNeed=r-2),r):--i=0?(r>0&&(2===r?r=0:t.lastNeed=r-3),r):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=n;var i=t.length-(n-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},4043:(t,e,n)=>{!function(t){t.parser=function(t,e){return new r(t,e)},t.SAXParser=r,t.SAXStream=a,t.createStream=function(t,e){return new a(t,e)},t.MAX_BUFFER_LENGTH=65536;var e,i=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];function r(e,n){if(!(this instanceof r))return new r(e,n);var o=this;!function(t){for(var e=0,n=i.length;e"===o?(w(n,"onsgmldeclaration",n.sgmlDecl),n.sgmlDecl="",n.state=S.TEXT):y(o)?(n.state=S.SGML_DECL_QUOTED,n.sgmlDecl+=o):n.sgmlDecl+=o;continue;case S.SGML_DECL_QUOTED:o===n.q&&(n.state=S.SGML_DECL,n.q=""),n.sgmlDecl+=o;continue;case S.DOCTYPE:">"===o?(n.state=S.TEXT,w(n,"ondoctype",n.doctype),n.doctype=!0):(n.doctype+=o,"["===o?n.state=S.DOCTYPE_DTD:y(o)&&(n.state=S.DOCTYPE_QUOTED,n.q=o));continue;case S.DOCTYPE_QUOTED:n.doctype+=o,o===n.q&&(n.q="",n.state=S.DOCTYPE);continue;case S.DOCTYPE_DTD:n.doctype+=o,"]"===o?n.state=S.DOCTYPE:y(o)&&(n.state=S.DOCTYPE_DTD_QUOTED,n.q=o);continue;case S.DOCTYPE_DTD_QUOTED:n.doctype+=o,o===n.q&&(n.state=S.DOCTYPE_DTD,n.q="");continue;case S.COMMENT:"-"===o?n.state=S.COMMENT_ENDING:n.comment+=o;continue;case S.COMMENT_ENDING:"-"===o?(n.state=S.COMMENT_ENDED,n.comment=M(n.opt,n.comment),n.comment&&w(n,"oncomment",n.comment),n.comment=""):(n.comment+="-"+o,n.state=S.COMMENT);continue;case S.COMMENT_ENDED:">"!==o?(N(n,"Malformed comment"),n.comment+="--"+o,n.state=S.COMMENT):n.state=S.TEXT;continue;case S.CDATA:"]"===o?n.state=S.CDATA_ENDING:n.cdata+=o;continue;case S.CDATA_ENDING:"]"===o?n.state=S.CDATA_ENDING_2:(n.cdata+="]"+o,n.state=S.CDATA);continue;case S.CDATA_ENDING_2:">"===o?(n.cdata&&w(n,"oncdata",n.cdata),w(n,"onclosecdata"),n.cdata="",n.state=S.TEXT):"]"===o?n.cdata+="]":(n.cdata+="]]"+o,n.state=S.CDATA);continue;case S.PROC_INST:"?"===o?n.state=S.PROC_INST_ENDING:m(o)?n.state=S.PROC_INST_BODY:n.procInstName+=o;continue;case S.PROC_INST_BODY:if(!n.procInstBody&&m(o))continue;"?"===o?n.state=S.PROC_INST_ENDING:n.procInstBody+=o;continue;case S.PROC_INST_ENDING:">"===o?(w(n,"onprocessinginstruction",{name:n.procInstName,body:n.procInstBody}),n.procInstName=n.procInstBody="",n.state=S.TEXT):(n.procInstBody+="?"+o,n.state=S.PROC_INST_BODY);continue;case S.OPEN_TAG:_(p,o)?n.tagName+=o:(k(n),">"===o?R(n):"/"===o?n.state=S.OPEN_TAG_SLASH:(m(o)||N(n,"Invalid character in tag name"),n.state=S.ATTRIB));continue;case S.OPEN_TAG_SLASH:">"===o?(R(n,!0),B(n)):(N(n,"Forward-slash in opening tag not followed by >"),n.state=S.ATTRIB);continue;case S.ATTRIB:if(m(o))continue;">"===o?R(n):"/"===o?n.state=S.OPEN_TAG_SLASH:_(h,o)?(n.attribName=o,n.attribValue="",n.state=S.ATTRIB_NAME):N(n,"Invalid attribute name");continue;case S.ATTRIB_NAME:"="===o?n.state=S.ATTRIB_VALUE:">"===o?(N(n,"Attribute without value"),n.attribValue=n.attribName,P(n),R(n)):m(o)?n.state=S.ATTRIB_NAME_SAW_WHITE:_(p,o)?n.attribName+=o:N(n,"Invalid attribute name");continue;case S.ATTRIB_NAME_SAW_WHITE:if("="===o)n.state=S.ATTRIB_VALUE;else{if(m(o))continue;N(n,"Attribute without value"),n.tag.attributes[n.attribName]="",n.attribValue="",w(n,"onattribute",{name:n.attribName,value:""}),n.attribName="",">"===o?R(n):_(h,o)?(n.attribName=o,n.state=S.ATTRIB_NAME):(N(n,"Invalid attribute name"),n.state=S.ATTRIB)}continue;case S.ATTRIB_VALUE:if(m(o))continue;y(o)?(n.q=o,n.state=S.ATTRIB_VALUE_QUOTED):(N(n,"Unquoted attribute value"),n.state=S.ATTRIB_VALUE_UNQUOTED,n.attribValue=o);continue;case S.ATTRIB_VALUE_QUOTED:if(o!==n.q){"&"===o?n.state=S.ATTRIB_VALUE_ENTITY_Q:n.attribValue+=o;continue}P(n),n.q="",n.state=S.ATTRIB_VALUE_CLOSED;continue;case S.ATTRIB_VALUE_CLOSED:m(o)?n.state=S.ATTRIB:">"===o?R(n):"/"===o?n.state=S.OPEN_TAG_SLASH:_(h,o)?(N(n,"No whitespace between attributes"),n.attribName=o,n.attribValue="",n.state=S.ATTRIB_NAME):N(n,"Invalid attribute name");continue;case S.ATTRIB_VALUE_UNQUOTED:if(!v(o)){"&"===o?n.state=S.ATTRIB_VALUE_ENTITY_U:n.attribValue+=o;continue}P(n),">"===o?R(n):n.state=S.ATTRIB;continue;case S.CLOSE_TAG:if(n.tagName)">"===o?B(n):_(p,o)?n.tagName+=o:n.script?(n.script+=""+n.tagName,n.tagName="",n.state=S.SCRIPT):(m(o)||N(n,"Invalid tagname in closing tag"),n.state=S.CLOSE_TAG_SAW_WHITE);else{if(m(o))continue;b(h,o)?n.script?(n.script+=""+o,n.state=S.SCRIPT):N(n,"Invalid tagname in closing tag."):n.tagName=o}continue;case S.CLOSE_TAG_SAW_WHITE:if(m(o))continue;">"===o?B(n):N(n,"Invalid characters in closing tag");continue;case S.TEXT_ENTITY:case S.ATTRIB_VALUE_ENTITY_Q:case S.ATTRIB_VALUE_ENTITY_U:var u,d;switch(n.state){case S.TEXT_ENTITY:u=S.TEXT,d="textNode";break;case S.ATTRIB_VALUE_ENTITY_Q:u=S.ATTRIB_VALUE_QUOTED,d="attribValue";break;case S.ATTRIB_VALUE_ENTITY_U:u=S.ATTRIB_VALUE_UNQUOTED,d="attribValue"}if(";"===o)if(n.opt.unparsedEntities){var x=F(n);n.entity="",n.state=u,n.write(x)}else n[d]+=F(n),n.entity="",n.state=u;else _(n.entity.length?g:f,o)?n.entity+=o:(N(n,"Invalid character in entity name"),n[d]+="&"+n.entity+o,n.entity="",n.state=u);continue;default:throw new Error(n,"Unknown state: "+n.state)}return n.position>=n.bufferCheckPosition&&function(e){for(var n=Math.max(t.MAX_BUFFER_LENGTH,10),r=0,o=0,a=i.length;on)switch(i[o]){case"textNode":C(e);break;case"cdata":w(e,"oncdata",e.cdata),e.cdata="";break;case"script":w(e,"onscript",e.script),e.script="";break;default:D(e,"Max buffer length exceeded: "+i[o])}r=Math.max(r,s)}var l=t.MAX_BUFFER_LENGTH-r;e.bufferCheckPosition=l+e.position}(n),n},resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){var t;C(t=this),""!==t.cdata&&(w(t,"oncdata",t.cdata),t.cdata=""),""!==t.script&&(w(t,"onscript",t.script),t.script="")}};try{e=n(4789).Stream}catch(t){e=function(){}}e||(e=function(){});var o=t.EVENTS.filter(function(t){return"error"!==t&&"end"!==t});function a(t,n){if(!(this instanceof a))return new a(t,n);e.apply(this),this._parser=new r(t,n),this.writable=!0,this.readable=!0;var i=this;this._parser.onend=function(){i.emit("end")},this._parser.onerror=function(t){i.emit("error",t),i._parser.error=null},this._decoder=null,o.forEach(function(t){Object.defineProperty(i,"on"+t,{get:function(){return i._parser["on"+t]},set:function(e){if(!e)return i.removeAllListeners(t),i._parser["on"+t]=e,e;i.on(t,e)},enumerable:!0,configurable:!1})})}a.prototype=Object.create(e.prototype,{constructor:{value:a}}),a.prototype.write=function(t){if("function"==typeof Buffer&&"function"==typeof Buffer.isBuffer&&Buffer.isBuffer(t)){if(!this._decoder){var e=n(3141).I;this._decoder=new e("utf8")}t=this._decoder.write(t)}return this._parser.write(t.toString()),this.emit("data",t),!0},a.prototype.end=function(t){return t&&t.length&&this.write(t),this._parser.end(),!0},a.prototype.on=function(t,n){var i=this;return i._parser["on"+t]||-1===o.indexOf(t)||(i._parser["on"+t]=function(){var e=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);e.splice(0,0,t),i.emit.apply(i,e)}),e.prototype.on.call(i,t,n)};var s="[CDATA[",l="DOCTYPE",c="http://www.w3.org/XML/1998/namespace",u="http://www.w3.org/2000/xmlns/",d={xml:c,xmlns:u},h=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,p=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/,f=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,g=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;function m(t){return" "===t||"\n"===t||"\r"===t||"\t"===t}function y(t){return'"'===t||"'"===t}function v(t){return">"===t||m(t)}function _(t,e){return t.test(e)}function b(t,e){return!_(t,e)}var x,T,E,S=0;for(var A in t.STATE={BEGIN:S++,BEGIN_WHITESPACE:S++,TEXT:S++,TEXT_ENTITY:S++,OPEN_WAKA:S++,SGML_DECL:S++,SGML_DECL_QUOTED:S++,DOCTYPE:S++,DOCTYPE_QUOTED:S++,DOCTYPE_DTD:S++,DOCTYPE_DTD_QUOTED:S++,COMMENT_STARTING:S++,COMMENT:S++,COMMENT_ENDING:S++,COMMENT_ENDED:S++,CDATA:S++,CDATA_ENDING:S++,CDATA_ENDING_2:S++,PROC_INST:S++,PROC_INST_BODY:S++,PROC_INST_ENDING:S++,OPEN_TAG:S++,OPEN_TAG_SLASH:S++,ATTRIB:S++,ATTRIB_NAME:S++,ATTRIB_NAME_SAW_WHITE:S++,ATTRIB_VALUE:S++,ATTRIB_VALUE_QUOTED:S++,ATTRIB_VALUE_CLOSED:S++,ATTRIB_VALUE_UNQUOTED:S++,ATTRIB_VALUE_ENTITY_Q:S++,ATTRIB_VALUE_ENTITY_U:S++,CLOSE_TAG:S++,CLOSE_TAG_SAW_WHITE:S++,SCRIPT:S++,SCRIPT_ENDING:S++},t.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},t.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(t.ENTITIES).forEach(function(e){var n=t.ENTITIES[e],i="number"==typeof n?String.fromCharCode(n):n;t.ENTITIES[e]=i}),t.STATE)t.STATE[t.STATE[A]]=A;function I(t,e,n){t[e]&&t[e](n)}function w(t,e,n){t.textNode&&C(t),I(t,e,n)}function C(t){t.textNode=M(t.opt,t.textNode),t.textNode&&I(t,"ontext",t.textNode),t.textNode=""}function M(t,e){return t.trim&&(e=e.trim()),t.normalize&&(e=e.replace(/\s+/g," ")),e}function D(t,e){return C(t),t.trackPosition&&(e+="\nLine: "+t.line+"\nColumn: "+t.column+"\nChar: "+t.c),e=new Error(e),t.error=e,I(t,"onerror",e),t}function L(t){return t.sawRoot&&!t.closedRoot&&N(t,"Unclosed root tag"),t.state!==S.BEGIN&&t.state!==S.BEGIN_WHITESPACE&&t.state!==S.TEXT&&D(t,"Unexpected end"),C(t),t.c="",t.closed=!0,I(t,"onend"),r.call(t,t.strict,t.opt),t}function N(t,e){if("object"!=typeof t||!(t instanceof r))throw new Error("bad call to strictFail");t.strict&&D(t,e)}function k(t){t.strict||(t.tagName=t.tagName[t.looseCase]());var e=t.tags[t.tags.length-1]||t,n=t.tag={name:t.tagName,attributes:{}};t.opt.xmlns&&(n.ns=e.ns),t.attribList.length=0,w(t,"onopentagstart",n)}function O(t,e){var n=t.indexOf(":")<0?["",t]:t.split(":"),i=n[0],r=n[1];return e&&"xmlns"===t&&(i="xmlns",r=""),{prefix:i,local:r}}function P(t){if(t.strict||(t.attribName=t.attribName[t.looseCase]()),-1!==t.attribList.indexOf(t.attribName)||t.tag.attributes.hasOwnProperty(t.attribName))t.attribName=t.attribValue="";else{if(t.opt.xmlns){var e=O(t.attribName,!0),n=e.prefix,i=e.local;if("xmlns"===n)if("xml"===i&&t.attribValue!==c)N(t,"xml: prefix must be bound to "+c+"\nActual: "+t.attribValue);else if("xmlns"===i&&t.attribValue!==u)N(t,"xmlns: prefix must be bound to "+u+"\nActual: "+t.attribValue);else{var r=t.tag,o=t.tags[t.tags.length-1]||t;r.ns===o.ns&&(r.ns=Object.create(o.ns)),r.ns[i]=t.attribValue}t.attribList.push([t.attribName,t.attribValue])}else t.tag.attributes[t.attribName]=t.attribValue,w(t,"onattribute",{name:t.attribName,value:t.attribValue});t.attribName=t.attribValue=""}}function R(t,e){if(t.opt.xmlns){var n=t.tag,i=O(t.tagName);n.prefix=i.prefix,n.local=i.local,n.uri=n.ns[i.prefix]||"",n.prefix&&!n.uri&&(N(t,"Unbound namespace prefix: "+JSON.stringify(t.tagName)),n.uri=i.prefix);var r=t.tags[t.tags.length-1]||t;n.ns&&r.ns!==n.ns&&Object.keys(n.ns).forEach(function(e){w(t,"onopennamespace",{prefix:e,uri:n.ns[e]})});for(var o=0,a=t.attribList.length;o",void(t.state=S.TEXT);if(t.script){if("script"!==t.tagName)return t.script+=""+t.tagName+">",t.tagName="",void(t.state=S.SCRIPT);w(t,"onscript",t.script),t.script=""}var e=t.tags.length,n=t.tagName;t.strict||(n=n[t.looseCase]());for(var i=n;e--&&t.tags[e].name!==i;)N(t,"Unexpected close tag");if(e<0)return N(t,"Unmatched closing tag: "+t.tagName),t.textNode+=""+t.tagName+">",void(t.state=S.TEXT);t.tagName=n;for(var r=t.tags.length;r-- >e;){var o=t.tag=t.tags.pop();t.tagName=t.tag.name,w(t,"onclosetag",t.tagName);var a={};for(var s in o.ns)a[s]=o.ns[s];var l=t.tags[t.tags.length-1]||t;t.opt.xmlns&&o.ns!==l.ns&&Object.keys(o.ns).forEach(function(e){var n=o.ns[e];w(t,"onclosenamespace",{prefix:e,uri:n})})}0===e&&(t.closedRoot=!0),t.tagName=t.attribValue=t.attribName="",t.attribList.length=0,t.state=S.TEXT}function F(t){var e,n=t.entity,i=n.toLowerCase(),r="";return t.ENTITIES[n]?t.ENTITIES[n]:t.ENTITIES[i]?t.ENTITIES[i]:("#"===(n=i).charAt(0)&&("x"===n.charAt(1)?(n=n.slice(2),r=(e=parseInt(n,16)).toString(16)):(n=n.slice(1),r=(e=parseInt(n,10)).toString(10))),n=n.replace(/^0+/,""),isNaN(e)||r.toLowerCase()!==n?(N(t,"Invalid character entity"),"&"+t.entity+";"):String.fromCodePoint(e))}function H(t,e){"<"===e?(t.state=S.OPEN_WAKA,t.startTagPosition=t.position):m(e)||(N(t,"Non-whitespace before first tag."),t.textNode=e,t.state=S.TEXT)}function U(t,e){var n="";return e1114111||T(a)!==a)throw RangeError("Invalid code point: "+a);a<=65535?n.push(a):(t=55296+((a-=65536)>>10),e=a%1024+56320,n.push(t,e)),(i+1===r||n.length>16384)&&(o+=x.apply(null,n),n.length=0)}return o},Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:E,configurable:!0,writable:!0}):String.fromCodePoint=E)}(e)},4789:(t,e,n)=>{var i=n(9995);function r(){i.call(this)}r.prototype=new i,t.exports=r,r.Stream=r,r.prototype.pipe=function(t,e){var n=this;function i(e){t.writable&&!1===t.write(e)&&n.pause&&n.pause()}function r(){n.readable&&n.resume&&n.resume()}n.on("data",i),t.on("drain",r),t._isStdio||e&&!1===e.end||(n.on("end",a),n.on("close",s));var o=!1;function a(){o||(o=!0,t.end())}function s(){o||(o=!0,"function"==typeof t.destroy&&t.destroy())}function l(t){if(c(),!this.hasListeners("error"))throw t}function c(){n.off("data",i),t.off("drain",r),n.off("end",a),n.off("close",s),n.off("error",l),t.off("error",l),n.off("end",c),n.off("close",c),t.off("end",c),t.off("close",c)}return n.on("error",l),t.on("error",l),n.on("end",c),n.on("close",c),t.on("end",c),t.on("close",c),t.emit("pipe",n),t}},5193:(t,e,n)=>{var i=n(9740).isArray;t.exports={copyOptions:function(t){var e,n={};for(e in t)t.hasOwnProperty(e)&&(n[e]=t[e]);return n},ensureFlagExists:function(t,e){t in e&&"boolean"==typeof e[t]||(e[t]=!1)},ensureSpacesExists:function(t){(!("spaces"in t)||"number"!=typeof t.spaces&&"string"!=typeof t.spaces)&&(t.spaces=0)},ensureAlwaysArrayExists:function(t){"alwaysArray"in t&&("boolean"==typeof t.alwaysArray||i(t.alwaysArray))||(t.alwaysArray=!1)},ensureKeyExists:function(t,e){t+"Key"in e&&"string"==typeof e[t+"Key"]||(e[t+"Key"]=e.compact?"_"+t:t)},checkFnExists:function(t,e){return t+"Fn"in e}}},6538:(t,e,n)=>{var i,r,o=n(4043),a=n(5193),s=n(9740).isArray;function l(t){var e=Number(t);if(!isNaN(e))return e;var n=t.toLowerCase();return"true"===n||"false"!==n&&t}function c(t,e){var n;if(i.compact){if(!r[i[t+"Key"]]&&(s(i.alwaysArray)?-1!==i.alwaysArray.indexOf(i[t+"Key"]):i.alwaysArray)&&(r[i[t+"Key"]]=[]),r[i[t+"Key"]]&&!s(r[i[t+"Key"]])&&(r[i[t+"Key"]]=[r[i[t+"Key"]]]),t+"Fn"in i&&"string"==typeof e&&(e=i[t+"Fn"](e,r)),"instruction"===t&&("instructionFn"in i||"instructionNameFn"in i))for(n in e)if(e.hasOwnProperty(n))if("instructionFn"in i)e[n]=i.instructionFn(e[n],n,r);else{var o=e[n];delete e[n],e[i.instructionNameFn(n,o,r)]=o}s(r[i[t+"Key"]])?r[i[t+"Key"]].push(e):r[i[t+"Key"]]=e}else{r[i.elementsKey]||(r[i.elementsKey]=[]);var a={};if(a[i.typeKey]=t,"instruction"===t){for(n in e)if(e.hasOwnProperty(n))break;a[i.nameKey]="instructionNameFn"in i?i.instructionNameFn(n,e,r):n,i.instructionHasAttributes?(a[i.attributesKey]=e[n][i.attributesKey],"instructionFn"in i&&(a[i.attributesKey]=i.instructionFn(a[i.attributesKey],n,r))):("instructionFn"in i&&(e[n]=i.instructionFn(e[n],n,r)),a[i.instructionKey]=e[n])}else t+"Fn"in i&&(e=i[t+"Fn"](e,r)),a[i[t+"Key"]]=e;i.addParent&&(a[i.parentKey]=r),r[i.elementsKey].push(a)}}function u(t){var e;if("attributesFn"in i&&t&&(t=i.attributesFn(t,r)),(i.trim||"attributeValueFn"in i||"attributeNameFn"in i||i.nativeTypeAttributes)&&t)for(e in t)if(t.hasOwnProperty(e)&&(i.trim&&(t[e]=t[e].trim()),i.nativeTypeAttributes&&(t[e]=l(t[e])),"attributeValueFn"in i&&(t[e]=i.attributeValueFn(t[e],e,r)),"attributeNameFn"in i)){var n=t[e];delete t[e],t[i.attributeNameFn(e,t[e],r)]=n}return t}function d(t){var e={};if(t.body&&("xml"===t.name.toLowerCase()||i.instructionHasAttributes)){for(var n,o=/([\w:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|(\w+))\s*/g;null!==(n=o.exec(t.body));)e[n[1]]=n[2]||n[3]||n[4];e=u(e)}if("xml"===t.name.toLowerCase()){if(i.ignoreDeclaration)return;r[i.declarationKey]={},Object.keys(e).length&&(r[i.declarationKey][i.attributesKey]=e),i.addParent&&(r[i.declarationKey][i.parentKey]=r)}else{if(i.ignoreInstruction)return;i.trim&&(t.body=t.body.trim());var a={};i.instructionHasAttributes&&Object.keys(e).length?(a[t.name]={},a[t.name][i.attributesKey]=e):a[t.name]=t.body,c("instruction",a)}}function h(t,e){var n;if("object"==typeof t&&(e=t.attributes,t=t.name),e=u(e),"elementNameFn"in i&&(t=i.elementNameFn(t,r)),i.compact){var o;if(n={},!i.ignoreAttributes&&e&&Object.keys(e).length)for(o in n[i.attributesKey]={},e)e.hasOwnProperty(o)&&(n[i.attributesKey][o]=e[o]);!(t in r)&&(s(i.alwaysArray)?-1!==i.alwaysArray.indexOf(t):i.alwaysArray)&&(r[t]=[]),r[t]&&!s(r[t])&&(r[t]=[r[t]]),s(r[t])?r[t].push(n):r[t]=n}else r[i.elementsKey]||(r[i.elementsKey]=[]),(n={})[i.typeKey]="element",n[i.nameKey]=t,!i.ignoreAttributes&&e&&Object.keys(e).length&&(n[i.attributesKey]=e),i.alwaysChildren&&(n[i.elementsKey]=[]),r[i.elementsKey].push(n);n[i.parentKey]=r,r=n}function p(t){i.ignoreText||(t.trim()||i.captureSpacesBetweenElements)&&(i.trim&&(t=t.trim()),i.nativeType&&(t=l(t)),i.sanitize&&(t=t.replace(/&/g,"&").replace(//g,">")),c("text",t))}function f(t){i.ignoreComment||(i.trim&&(t=t.trim()),c("comment",t))}function g(t){var e=r[i.parentKey];i.addParent||delete r[i.parentKey],r=e}function m(t){i.ignoreCdata||(i.trim&&(t=t.trim()),c("cdata",t))}function y(t){i.ignoreDoctype||(t=t.replace(/^ /,""),i.trim&&(t=t.trim()),c("doctype",t))}function v(t){t.note=t}t.exports=function(t,e){var n=o.parser(!0,{}),s={};if(r=s,i=function(t){return i=a.copyOptions(t),a.ensureFlagExists("ignoreDeclaration",i),a.ensureFlagExists("ignoreInstruction",i),a.ensureFlagExists("ignoreAttributes",i),a.ensureFlagExists("ignoreText",i),a.ensureFlagExists("ignoreComment",i),a.ensureFlagExists("ignoreCdata",i),a.ensureFlagExists("ignoreDoctype",i),a.ensureFlagExists("compact",i),a.ensureFlagExists("alwaysChildren",i),a.ensureFlagExists("addParent",i),a.ensureFlagExists("trim",i),a.ensureFlagExists("nativeType",i),a.ensureFlagExists("nativeTypeAttributes",i),a.ensureFlagExists("sanitize",i),a.ensureFlagExists("instructionHasAttributes",i),a.ensureFlagExists("captureSpacesBetweenElements",i),a.ensureAlwaysArrayExists(i),a.ensureKeyExists("declaration",i),a.ensureKeyExists("instruction",i),a.ensureKeyExists("attributes",i),a.ensureKeyExists("text",i),a.ensureKeyExists("comment",i),a.ensureKeyExists("cdata",i),a.ensureKeyExists("doctype",i),a.ensureKeyExists("type",i),a.ensureKeyExists("name",i),a.ensureKeyExists("elements",i),a.ensureKeyExists("parent",i),a.checkFnExists("doctype",i),a.checkFnExists("instruction",i),a.checkFnExists("cdata",i),a.checkFnExists("comment",i),a.checkFnExists("text",i),a.checkFnExists("instructionName",i),a.checkFnExists("elementName",i),a.checkFnExists("attributeName",i),a.checkFnExists("attributeValue",i),a.checkFnExists("attributes",i),i}(e),n.opt={strictEntities:!0},n.onopentag=h,n.ontext=p,n.oncomment=f,n.onclosetag=g,n.onerror=v,n.oncdata=m,n.ondoctype=y,n.onprocessinginstruction=d,n.write(t).close(),s[i.elementsKey]){var l=s[i.elementsKey];delete s[i.elementsKey],s[i.elementsKey]=l,delete s.text}return s}},7348:(t,e,n)=>{var i,r,o=n(5193),a=n(9740).isArray;function s(t,e,n){return(!n&&t.spaces?"\n":"")+Array(e+1).join(t.spaces)}function l(t,e,n){if(e.ignoreAttributes)return"";"attributesFn"in e&&(t=e.attributesFn(t,r,i));var o,a,l,c,u=[];for(o in t)t.hasOwnProperty(o)&&null!==t[o]&&void 0!==t[o]&&(c=e.noQuotesForNativeAttributes&&"string"!=typeof t[o]?"":'"',a=(a=""+t[o]).replace(/"/g,"""),l="attributeNameFn"in e?e.attributeNameFn(o,a,r,i):o,u.push(e.spaces&&e.indentAttributes?s(e,n+1,!1):" "),u.push(l+"="+c+("attributeValueFn"in e?e.attributeValueFn(a,o,r,i):a)+c));return t&&Object.keys(t).length&&e.spaces&&e.indentAttributes&&u.push(s(e,n,!1)),u.join("")}function c(t,e,n){return i=t,r="xml",e.ignoreDeclaration?"":""}function u(t,e,n){if(e.ignoreInstruction)return"";var o;for(o in t)if(t.hasOwnProperty(o))break;var a="instructionNameFn"in e?e.instructionNameFn(o,t[o],r,i):o;if("object"==typeof t[o])return i=t,r=a,""+a+l(t[o][e.attributesKey],e,n)+"?>";var s=t[o]?t[o]:"";return"instructionFn"in e&&(s=e.instructionFn(s,o,r,i)),""+a+(s?" "+s:"")+"?>"}function d(t,e){return e.ignoreComment?"":"\x3c!--"+("commentFn"in e?e.commentFn(t,r,i):t)+"--\x3e"}function h(t,e){return e.ignoreCdata?"":"","]]]]>"))+"]]>"}function p(t,e){return e.ignoreDoctype?"":""}function f(t,e){return e.ignoreText?"":(t=(t=(t=""+t).replace(/&/g,"&")).replace(/&/g,"&").replace(//g,">"),"textFn"in e?e.textFn(t,r,i):t)}function g(t,e,n,o){return t.reduce(function(t,a){var c=s(e,n,o&&!t);switch(a.type){case"element":return t+c+function(t,e,n){i=t,r=t.name;var o=[],a="elementNameFn"in e?e.elementNameFn(t.name,t):t.name;o.push("<"+a),t[e.attributesKey]&&o.push(l(t[e.attributesKey],e,n));var s=t[e.elementsKey]&&t[e.elementsKey].length||t[e.attributesKey]&&"preserve"===t[e.attributesKey]["xml:space"];return s||(s="fullTagEmptyElementFn"in e?e.fullTagEmptyElementFn(t.name,t):e.fullTagEmptyElement),s?(o.push(">"),t[e.elementsKey]&&t[e.elementsKey].length&&(o.push(g(t[e.elementsKey],e,n+1)),i=t,r=t.name),o.push(e.spaces&&function(t,e){var n;if(t.elements&&t.elements.length)for(n=0;n")):o.push("/>"),o.join("")}(a,e,n);case"comment":return t+c+d(a[e.commentKey],e);case"doctype":return t+c+p(a[e.doctypeKey],e);case"cdata":return t+(e.indentCdata?c:"")+h(a[e.cdataKey],e);case"text":return t+(e.indentText?c:"")+f(a[e.textKey],e);case"instruction":var m={};return m[a[e.nameKey]]=a[e.attributesKey]?a:a[e.instructionKey],t+(e.indentInstruction?c:"")+u(m,e,n)}},"")}function m(t,e,n){var i;for(i in t)if(t.hasOwnProperty(i))switch(i){case e.parentKey:case e.attributesKey:break;case e.textKey:if(e.indentText||n)return!0;break;case e.cdataKey:if(e.indentCdata||n)return!0;break;case e.instructionKey:if(e.indentInstruction||n)return!0;break;case e.doctypeKey:case e.commentKey:default:return!0}return!1}function y(t,e,n,o,a){i=t,r=e;var c="elementNameFn"in n?n.elementNameFn(e,t):e;if(null==t||""===t)return"fullTagEmptyElementFn"in n&&n.fullTagEmptyElementFn(e,t)||n.fullTagEmptyElement?"<"+c+">"+c+">":"<"+c+"/>";var u=[];if(e){if(u.push("<"+c),"object"!=typeof t)return u.push(">"+f(t,n)+""+c+">"),u.join("");t[n.attributesKey]&&u.push(l(t[n.attributesKey],n,o));var d=m(t,n,!0)||t[n.attributesKey]&&"preserve"===t[n.attributesKey]["xml:space"];if(d||(d="fullTagEmptyElementFn"in n?n.fullTagEmptyElementFn(e,t):n.fullTagEmptyElement),!d)return u.push("/>"),u.join("");u.push(">")}return u.push(v(t,n,o+1,!1)),i=t,r=e,e&&u.push((a?s(n,o,!1):"")+""+c+">"),u.join("")}function v(t,e,n,i){var r,o,l,g=[];for(o in t)if(t.hasOwnProperty(o))for(l=a(t[o])?t[o]:[t[o]],r=0;r{"use strict";e.byteLength=function(t){var e=s(t),n=e[0],i=e[1];return 3*(n+i)/4-i},e.toByteArray=function(t){var e,n,o=s(t),a=o[0],l=o[1],c=new r(function(t,e,n){return 3*(e+n)/4-n}(0,a,l)),u=0,d=l>0?a-4:a;for(n=0;n>16&255,c[u++]=e>>8&255,c[u++]=255&e;return 2===l&&(e=i[t.charCodeAt(n)]<<2|i[t.charCodeAt(n+1)]>>4,c[u++]=255&e),1===l&&(e=i[t.charCodeAt(n)]<<10|i[t.charCodeAt(n+1)]<<4|i[t.charCodeAt(n+2)]>>2,c[u++]=e>>8&255,c[u++]=255&e),c},e.fromByteArray=function(t){for(var e,i=t.length,r=i%3,o=[],a=16383,s=0,l=i-r;sl?l:s+a));return 1===r?(e=t[i-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===r&&(e=(t[i-2]<<8)+t[i-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"=")),o.join("")};for(var n=[],i=[],r="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0;a<64;++a)n[a]=o[a],i[o.charCodeAt(a)]=a;function s(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");return-1===n&&(n=e),[n,n===e?0:4-n%4]}function l(t){return n[t>>18&63]+n[t>>12&63]+n[t>>6&63]+n[63&t]}function c(t,e,n){for(var i,r=[],o=e;o{var i=n(5193),r=n(6538);t.exports=function(t,e){var n,o,a;return n=function(t){var e=i.copyOptions(t);return i.ensureSpacesExists(e),e}(e),o=r(t,n),a="compact"in n&&n.compact?"_parent":"parent",("addParent"in n&&n.addParent?JSON.stringify(o,function(t,e){return t===a?"_":e},n.spaces):JSON.stringify(o,null,n.spaces)).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}},8287:(t,e,n)=>{"use strict";var i=n(7526),r=n(251),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=l,e.SlowBuffer=function(t){return+t!=t&&(t=0),l.alloc(+t)},e.INSPECT_MAX_BYTES=50;var a=2147483647;function s(t){if(t>a)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,l.prototype),e}function l(t,e,n){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return d(t)}return c(t,e,n)}function c(t,e,n){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!l.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var n=0|g(t,e),i=s(n),r=i.write(t,e);return r!==n&&(i=i.slice(0,r)),i}(t,e);if(ArrayBuffer.isView(t))return function(t){if(z(t,Uint8Array)){var e=new Uint8Array(t);return p(e.buffer,e.byteOffset,e.byteLength)}return h(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(z(t,ArrayBuffer)||t&&z(t.buffer,ArrayBuffer))return p(t,e,n);if("undefined"!=typeof SharedArrayBuffer&&(z(t,SharedArrayBuffer)||t&&z(t.buffer,SharedArrayBuffer)))return p(t,e,n);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return l.from(i,e,n);var r=function(t){if(l.isBuffer(t)){var e=0|f(t.length),n=s(e);return 0===n.length||t.copy(n,0,0,e),n}return void 0!==t.length?"number"!=typeof t.length||V(t.length)?s(0):h(t):"Buffer"===t.type&&Array.isArray(t.data)?h(t.data):void 0}(t);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return l.from(t[Symbol.toPrimitive]("string"),e,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function u(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function d(t){return u(t),s(t<0?0:0|f(t))}function h(t){for(var e=t.length<0?0:0|f(t.length),n=s(e),i=0;i=a)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a.toString(16)+" bytes");return 0|t}function g(t,e){if(l.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||z(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var n=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return F(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return H(t).length;default:if(r)return i?-1:F(t).length;e=(""+e).toLowerCase(),r=!0}}function m(t,e,n){var i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return D(this,e,n);case"utf8":case"utf-8":return I(this,e,n);case"ascii":return C(this,e,n);case"latin1":case"binary":return M(this,e,n);case"base64":return A(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,n);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function y(t,e,n){var i=t[e];t[e]=t[n],t[n]=i}function v(t,e,n,i,r){if(0===t.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),V(n=+n)&&(n=r?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(r)return-1;n=t.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof e&&(e=l.from(e,i)),l.isBuffer(e))return 0===e.length?-1:_(t,e,n,i,r);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):_(t,[e],n,i,r);throw new TypeError("val must be string, number or Buffer")}function _(t,e,n,i,r){var o,a=1,s=t.length,l=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;a=2,s/=2,l/=2,n/=2}function c(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(r){var u=-1;for(o=n;os&&(n=s-l),o=n;o>=0;o--){for(var d=!0,h=0;hr&&(i=r):i=r;var o=e.length;i>o/2&&(i=o/2);for(var a=0;a>8,r=n%256,o.push(r),o.push(i);return o}(e,t.length-n),t,n,i)}function A(t,e,n){return 0===e&&n===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,n))}function I(t,e,n){n=Math.min(t.length,n);for(var i=[],r=e;r239?4:c>223?3:c>191?2:1;if(r+d<=n)switch(d){case 1:c<128&&(u=c);break;case 2:128==(192&(o=t[r+1]))&&(l=(31&c)<<6|63&o)>127&&(u=l);break;case 3:o=t[r+1],a=t[r+2],128==(192&o)&&128==(192&a)&&(l=(15&c)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(u=l);break;case 4:o=t[r+1],a=t[r+2],s=t[r+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(l=(15&c)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(u=l)}null===u?(u=65533,d=1):u>65535&&(u-=65536,i.push(u>>>10&1023|55296),u=56320|1023&u),i.push(u),r+=d}return function(t){var e=t.length;if(e<=w)return String.fromCharCode.apply(String,t);for(var n="",i=0;ii.length?l.from(o).copy(i,r):Uint8Array.prototype.set.call(i,o,r);else{if(!l.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(i,r)}r+=o.length}return i},l.byteLength=g,l.prototype._isBuffer=!0,l.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;en&&(t+=" ... "),""},o&&(l.prototype[o]=l.prototype.inspect),l.prototype.compare=function(t,e,n,i,r){if(z(t,Uint8Array)&&(t=l.from(t,t.offset,t.byteLength)),!l.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),e<0||n>t.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&e>=n)return 0;if(i>=r)return-1;if(e>=n)return 1;if(this===t)return 0;for(var o=(r>>>=0)-(i>>>=0),a=(n>>>=0)-(e>>>=0),s=Math.min(o,a),c=this.slice(i,r),u=t.slice(e,n),d=0;d>>=0,isFinite(n)?(n>>>=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}var r=this.length-e;if((void 0===n||n>r)&&(n=r),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return b(this,t,e,n);case"utf8":case"utf-8":return x(this,t,e,n);case"ascii":case"latin1":case"binary":return T(this,t,e,n);case"base64":return E(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,t,e,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var w=4096;function C(t,e,n){var i="";n=Math.min(t.length,n);for(var r=e;ri)&&(n=i);for(var r="",o=e;on)throw new RangeError("Trying to access beyond buffer length")}function k(t,e,n,i,r,o){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>r||et.length)throw new RangeError("Index out of range")}function O(t,e,n,i,r,o){if(n+i>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function P(t,e,n,i,o){return e=+e,n>>>=0,o||O(t,0,n,4),r.write(t,e,n,i,23,4),n+4}function R(t,e,n,i,o){return e=+e,n>>>=0,o||O(t,0,n,8),r.write(t,e,n,i,52,8),n+8}l.prototype.slice=function(t,e){var n=this.length;(t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e>>=0,e>>>=0,n||N(t,e,this.length);for(var i=this[t],r=1,o=0;++o>>=0,e>>>=0,n||N(t,e,this.length);for(var i=this[t+--e],r=1;e>0&&(r*=256);)i+=this[t+--e]*r;return i},l.prototype.readUint8=l.prototype.readUInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),this[t]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(t,e){return t>>>=0,e||N(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,n){t>>>=0,e>>>=0,n||N(t,e,this.length);for(var i=this[t],r=1,o=0;++o=(r*=128)&&(i-=Math.pow(2,8*e)),i},l.prototype.readIntBE=function(t,e,n){t>>>=0,e>>>=0,n||N(t,e,this.length);for(var i=e,r=1,o=this[t+--i];i>0&&(r*=256);)o+=this[t+--i]*r;return o>=(r*=128)&&(o-=Math.pow(2,8*e)),o},l.prototype.readInt8=function(t,e){return t>>>=0,e||N(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){t>>>=0,e||N(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt16BE=function(t,e){t>>>=0,e||N(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},l.prototype.readInt32LE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return t>>>=0,e||N(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return t>>>=0,e||N(t,4,this.length),r.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return t>>>=0,e||N(t,4,this.length),r.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return t>>>=0,e||N(t,8,this.length),r.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return t>>>=0,e||N(t,8,this.length),r.read(this,t,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(t,e,n,i){t=+t,e>>>=0,n>>>=0,i||k(this,t,e,n,Math.pow(2,8*n)-1,0);var r=1,o=0;for(this[e]=255&t;++o